I'm a lecturer on sabbatical at De Montfort University (DMU) where I've been teaching various modules such as front-end web development, functional programming, and research to a variety of students from different courses across the Faculty of Computing, Engineering, and Media.
I'm a transdisciplinary creative generalist. I have passion for what I do and what I think is right. Sometimes that involves saying "no".
My sense of purpose is my own - I'm an introvert.
I have a PhD in Software Engineering/Computer Science. The title of my thesis is Algorithmic Meta-Creativity and it's available as HTML or PDF at dr.physics.wtf.
My research interests revolve around studying human and computer creativity and how they are evaluated, the absurd pseudo philosophy pataphysics and its applications, and the development of creative exploratory search algorithms inspired by pataphysical concepts.
Although the PhD wasn't classed as "practice-based" research, an artefact pata.physics.wtf was submitted alongside the thesis. The software for this was written (mostly) in Python.
A (theoretically infinite) magic carpet can be constructed from a single magic square of a special kind of class. Demonstrates magical properties of carpet and draws the magic line of any magic square within.
Force push changes (overwrites stuff) git push --force
List all local branches git branch
List all branches (incl. remote) git branch -a
Create branch (but don't checkout) git branch NAME
Create branch (and checkout) git checkout -b NAME
Switch branch git checkout NAME
Delete local branch git branch -d NAME
Force delete local branch git branch -D NAME
Delete remote branch git push origin --delete NAME
Work on two branches at the same time (in VS Code): from master branch do this: git branch BRANCH-NAME and then git worktree add NAME-of-FOLDER BRANCH-NAME Git Worktree Add Example afterwards remove with git worktree remove BRANCH-NAME
Remove "ignored" files that were added before the gitignore was created git rm -rf --cached . and then git add . (make sure gitignore is uptodate)
Delete "cached" files that were previously deleted from cache but are still in history git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch "FILENAME"' -f HEAD (DANGEROUS - MAKE BACKUP)
Fix diverged branch problem: check git log HEAD..origin/master, then if head is the same (which indicates that indeed branches have diverged at some earlier commits) then git merge origin/master and git commit -m "message" and git push
Install Jekyll on your local machine and setup the project as you want.
We want to be pushing only the _site folder with the compiled HTML files to the server, so we don't have to install Jekyll and recompile there, as that just introduces the possibility of errors in the chain of actions.
Prepare the server infrastructure ready according to instructions above.
Then on your local machine, you need to make you Jekyll project (from now I will call this the root folder) a git repository.
You also need to make your _site folder a git repo.
In the root repo, create a pre-commit file with the following contents:
git add .
git commit -m "Changes from $var via auto-commit script."
Make sure this file is executable chmod +x pre-commit
We also need a pre-push file:
git push server master
Again, make sure the file is executable, using the same command above chmod +x pre-push
To make the pre-push file work, we need to make sure the git remote for the _site repo is set correctly.
So, check it using git remote -v
If it doesn't list a "server" remote then we need to add it.
Add the remote inside the _site repo: git remote add server ssh://user@server/full/path/to/site.git
At this point, the workflow is ready. You can commit work in your root folder and it gets automatically commited as well in your _site folder. When you are ready to push your source code (to GitHub usually) then your compiled code will also be pushed to the private server of your choice.