De Montfort University (DMU) where I've been the longest, and have taught 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.
The University for the Creative Arts (UCA) where I'm remote teaching a module on web design & development and I'm part time Link Tutor for Computer Science and Data Analytics.
I'm an artist as well (Generative Art) - most recently exhibited in January 2024.
Occasionally, I also spend time programming for Ecovisum.
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.
Un-Current
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.
Uses HammerJs, SVG, and JavaScript. Source code can be found on GitHub.
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
Add the following code to a pre-commit hook in the .git/hooks folder of your repo. This will generate html files from markdown content every time just before you commit.
Make sure you add styles inside a <style> block to a file called "styles". See pandoc command in script below.
#!/bin/sh
echo "Converting markdown files to html with Pandoc..."
for file in markdown/*.md
do
echo "Processing $file"
name=$(basename ${file%%.*})
# echo $name
pandoc $file -f markdown -t html -o html/$name.html -s -H styles --quiet
# --quiet = suppress warning messages
# -s = standalone (full htmlm not snippet)
# -H = include file in header
done
git add .
echo "... and stage generated html files."
You can now also change colour and names of tabs in Windows Terminal by right clicking the context menu!
Close a pane using Ctrl Shift W.
Customisation config file for new Windows Terminal in Customisation stuff in C:\Users\Fania\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\profiles.json
touch .hushlogin to hide the last login message in terminal
Get mac terminal to startup in repo directory: in terminal preferences, in profiles tab, under shell, then startup, tick "run command" and enter this: cd Documents/GitHub && clear
Get mac terminal to startup in repo directory: in terminal preferences, in profiles tab, under shell, then startup, tick "run command" and enter this: cd Documents/GitHub && clear
Open at location
'Shift-right-click' folder to open CMD there
Use the 'Open-In-Terminal' script
Finding things
Show all locations of file type -a NAME
Show location of file or folder which NAME
Show location of file or folder (if virtualenvwrapper-win is installed) whereis <NAME>
Reloading
Reload terminal source ~/.bash_profile
Reload terminal source ~/.bashrc
Reload cmd SET PATH=%PATH%;C:\CmdShortcuts (unconfirmed)
Running Scripts
Make sure Execution Policy is set appriately Set-ExecutionPolicy RemoteSigned
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:
#!/bin/sh
cd absolute/path/to/Jekyll/_site
date
date +'%d/%m/%Y'
var=$date
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:
#!/bin/sh
cd absolute/path/to/Jekyll/_site
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.
Trianglify is a Javascript library for creating unique, aesthetically pleasing triangle patterns
setTimeout runs once: setTimeout(() => {functionName(param)}, 1000); setInterval runs (who would have guessed) at an interval!, and issues an ID, which can can be assigned to a variable and used and also then cleared iID = setInterval(() => {functionName(param)}, 1000); clearInterval(iID);
Bulk updates might need an increase in request body size due to error 413. add a line in nginx config file for couch domain: client_max_body_size 100M;