Stardust
Blog
Archive
22nd Nov 2024 at 09:00am
Compiling the wacom driver from source to fix tilt & rotation support
1st Nov 2024 at 10:00am
Ducks
17th Sep 2024 at 09:00am
Teaching this September
11th Aug 2024 at 05:05pm
PhD Update 19: The Reckoning
20th Jul 2024 at 05:40pm
Ubuntu 24.04 upgrade report
22nd Jun 2024 at 09:00am
A memory tester for the days of UEFI
15th Jun 2024 at 09:00am
Inter-process communication between Javascript and Python
8th Jun 2024 at 09:00am
Encrypting and formatting a disk with LUKS + Btrfs
1st Jun 2024 at 09:00am
Defining AI: Sequenced models || LSTMs and Transformers
23rd May 2024 at 04:15pm
PhD Update 18: The end and the beginning
24th Apr 2024 at 09:00am
.desktop files: Launcher icons on Linux
16th Apr 2024 at 01:25am
Defining AI: Image segmentation
4th Apr 2024 at 01:23pm
Defining AI: Word embeddings
8th Feb 2024 at 11:00pm
NLDL was awesome! >> NLDL-2024 writeup
3rd Jan 2024 at 09:00am
LaTeX templates for writing with the University of Hull's referencing style
31st Dec 2023 at 09:00am
Happy Christmas / New Year 2023!
22nd Dec 2023 at 07:15pm
PhD Update 17: Light at the end of the tunnel
4th Dec 2023 at 09:30am
NLDL 2024: My rainfall radar paper is out!
2nd Dec 2023 at 09:30am
Website update: Share2Fediverse, and you can do it too!
4th Nov 2023 at 03:00am
I'm going to NLDL 2024!
6th Oct 2023 at 09:00am
Building the science festival demo: How to monkeypatch an npm package
29th Sep 2023 at 09:00am
Building the science festival demo: technical overview
22nd Sep 2023 at 09:00am
My Hull Science Festival Demo: How do AIs understand text?
12th Sep 2023 at 09:00am
I've submitted a paper on my rainfall radar research to NLDL 2024!
4th Sep 2023 at 09:00am
How to read a paper
21st Aug 2023 at 09:00am
Chromium nightly script
1st Aug 2023 at 09:00am
Portable Python on Windows
15th Jul 2023 at 09:00am
PhD Update 16: Realising the possibilities of the past
12th Jul 2023 at 09:00am
The journal article about my social media research is out now!
5th Jul 2023 at 06:00pm
Syntax highlighting and word wrapping code in LaTeX
21st Jun 2023 at 09:44pm
Achievement get: Experimental Officer position!
16th Mar 2023 at 09:00am
Visualising Tensorflow model summaries
9th Mar 2023 at 09:00am
NAS Series List
2nd Feb 2023 at 11:10pm
How (not) to recover a consul cluster
29th Jan 2023 at 09:00am
Considerations on monitoring infrastructure
6th Jan 2023 at 07:00pm
PhD Update 15: Finding what works when
15th Dec 2022 at 09:00pm
A snapshot into my PhD: Rainfall radar model debugging
15th Dec 2022 at 11:00am
I'm on Mastodon/Fediverse!
26th Nov 2022 at 11:45pm
AI encoders demystified
8th Nov 2022 at 12:10am
Easily write custom Tensorflow/Keras layers
19th Oct 2022 at 09:00am
NSD, Part 2: Dynamic DNS
27th Sep 2022 at 09:00am
The NSD Authoritative DNS Server: What, why, and how
11th Sep 2022 at 09:00am
Mounting LVM partitions from the terminal on Linux
5th Sep 2022 at 09:00am
The plan to caption and index images
31st Aug 2022 at 09:00am
PhD Update 14: An old enemy
20th Aug 2022 at 09:00pm
Configuring an endlessh honeypot with rsyslog email notifications
5th Aug 2022 at 09:00am
PhD Aside 2: Jupyter Lab / Notebook First Impressions
29th Jul 2022 at 09:00am
Excluding domains from Encrypted DNS
24th Jul 2022 at 09:00am
Tensorflow and PyTorch compared
6th Jul 2022 at 09:00am
Minifying CSS, HTML, and more in eleventy static sites
26th Jun 2022 at 02:00pm
On the value of the open source community
20th Jun 2022 at 09:00am
Centralising logs with rsyslog
6th Jun 2022 at 09:00am
How to pin an apt repository for preferential package installation
30th May 2022 at 09:00am
Ubuntu 22.04 upgrade report
17th May 2022 at 09:00am
PhD Update 13: A half complete
12th May 2022 at 06:00pm
500 posts - thank you!
30th Apr 2022 at 09:00am
Using whiptail for text-based user interfaces
19th Apr 2022 at 09:00am
Switching from XFCE4 to KDE Plasma
9th Apr 2022 at 03:15pm
Hackathon in AI for Sustainability 2022
26th Mar 2022 at 06:00pm
Creating a 3D Grid of points in Blender 3.0
10th Mar 2022 at 09:00am
A learning experience | AAAI-22 in review
2nd Mar 2022 at 08:20pm
systemquery, part 2: replay attack
17th Feb 2022 at 04:30pm
PhD Update 12: Is it enough?
4th Feb 2022 at 09:00am
mutate-a-word!
29th Jan 2022 at 07:30pm
A review of graph / node based logic declaration through Blender
19th Jan 2022 at 05:00pm
systemquery, part 1: encryption protocols
8th Jan 2022 at 09:00am
How to contribute code to git repositories that aren't hosted on GitHub
1st Jan 2022 at 09:00am
Cluster, Part 12: TLS for Breakfast | Configuring Fabio for HTTPS
25th Dec 2021 at 05:00pm
Happy Christmas 2021!
20th Dec 2021 at 09:00am
PhD Update 11: Answers to our questions
20th Dec 2021 at 09:00am
Cluster Series List
11th Dec 2021 at 09:00am
Encryption demystified: What to use and when
4th Dec 2021 at 11:00pm
Autoplant, Part 1: Overview
23rd Nov 2021 at 09:00am
Backing up with tar, curl, and SFTP with key-based authentication
14th Nov 2021 at 06:00pm
lnav basics tutorial
4th Nov 2021 at 09:00am
Tips for training (large numbers of) AI models
25th Oct 2021 at 09:00am
Website Update: Tools section
18th Oct 2021 at 09:10pm
Add your blog to hullblogs.com
9th Oct 2021 at 06:00pm
Securing your port-forwarded reverse proxy
30th Sep 2021 at 06:00pm
PhD Update 10: Sharing with the world
18th Sep 2021 at 09:00am
I bought a 3d printer! | Ender 3 v2 in review
5th Sep 2021 at 05:00pm
Unethically disclosed vulnerabilities in Pepperminty Wiki: My perspective
25th Aug 2021 at 09:00am
stl2png Nautilus Thumbnailer
18th Aug 2021 at 09:00am
NAS Backups, Part 2: Btrfs send / receive
9th Aug 2021 at 09:00am
PhD, Update 9: Results?
3rd Aug 2021 at 09:00am
Tensorflow / Tensorflow.js in Review
25th Jul 2021 at 09:00am
MIDI to Music Box score converter
14th Jul 2021 at 09:00am
NAS Backups, Part 1: Overview
5th Jul 2021 at 09:00am
WorldEditAdditions: The story of the
//convolve
command
25th Jun 2021 at 09:00am
WorldEditAdditions: More WorldEdit commands for Minetest
14th Jun 2021 at 09:00am
Pure CSS Gallery
7th Jun 2021 at 09:00am
Automatically downloading emails and extracting their attachments
31st May 2021 at 09:00am
PhD, Update 8: Eggs in Baskets
24th May 2021 at 09:30pm
A much easier way to install custom versions of Python
14th May 2021 at 09:00am
Servers demystified
7th May 2021 at 05:18pm
Installing Python, Keras, and Tensorflow from source
28th Apr 2021 at 09:00am
simple-dash fork: now with directory support!
20th Apr 2021 at 09:00am
applause-cli: A Node.js CLI handling library
9th Apr 2021 at 09:00am
Saving power in Linux Systems
1st Apr 2021 at 09:10pm
Users and access control in the Mosquitto MQTT server
29th Mar 2021 at 02:00pm
Rendering Time plan / Gantt charts: hourgraph
20th Mar 2021 at 09:00am
Skyliner: Automated text document outlining
7th Mar 2021 at 09:00pm
Booting my multiboot flash drive via EFI
26th Feb 2021 at 09:00am
PhD, Update 7: Just out of reach
21st Feb 2021 at 09:00am
Cluster, Part 11: Lock and Key | Let's Encrypt DNS-01 for wildcard TLS certificates
10th Feb 2021 at 09:00am
consulstatus: public status pages drawn from Consul
31st Jan 2021 at 09:00am
NAS, Part 4: Time machines | Automatic snapshotting with btrfs-snapshot
22nd Jan 2021 at 09:00am
NAS, Part 3: Decisions | Choosing a Filesystem
15th Jan 2021 at 10:00pm
Goodbye, Flash.
12th Jan 2021 at 09:00am
NAS, Part 2: Assembly and Installation
5th Jan 2021 at 09:00am
Cluster, Part 10: Dockerisification | Writing Dockerfiles
29th Dec 2020 at 05:00pm
Happy Christmas 2020!
21st Dec 2020 at 03:00pm
Digitising old audio CDs on a Linux Server
10th Dec 2020 at 07:00pm
NAS, Part 1: We need a bigger rocket
30th Nov 2020 at 09:00am
Resizing Encrypted LVM Partitions on Linux
23rd Nov 2020 at 09:00am
The Spaceship | Why open-source is important
16th Nov 2020 at 09:00am
Running multiple local versions of CUDA on Ubuntu without sudo privileges
9th Nov 2020 at 05:47pm
PhD Update 6: The road ahead
9th Nov 2020 at 09:00am
Proteus VIII Laptop from PC Specialist in Review
25th Oct 2020 at 09:00am
Run a Program on your dedicated Nvidia graphics card on Linux
18th Oct 2020 at 01:00pm
Adventurous Accounts: The Pepperminty Wiki Android App
10th Oct 2020 at 05:00pm
Lua in Review 2
1st Oct 2020 at 11:30pm
New website for Pepperminty Wiki
20th Sep 2020 at 11:00pm
Stitching videos from frames with ffmpeg (and audio/video editing tricks)
11th Sep 2020 at 09:00am
Monitoring latency / ping with Collectd and Bash
3rd Sep 2020 at 09:00am
PhD Update 5: Hyper optimisation and frustration
29th Aug 2020 at 09:00am
3D mazes with Lua, OpenSCAD, and Blender
27th Aug 2020 at 05:00pm
Partitioning and mounting a new disk using LVM
18th Aug 2020 at 09:00am
Cluster, Part 9: The Border Between | Load Balancing with Fabio
8th Aug 2020 at 09:00am
Making an auto-updated downmuxed copy of my music
1st Aug 2020 at 06:00pm
Spam statistics are live!
24th Jul 2020 at 09:00am
Automatically organising & optimising photos and videos with Bash
17th Jul 2020 at 09:00am
Avoiding accidental array mutation when iterating arrays in PHP
12th Jul 2020 at 03:15pm
Website change detection with headless Firefox and ImageMagick
5th Jul 2020 at 06:00pm
EmbedBox: Lightweight syntax-highlighted embeds
24th Jun 2020 at 09:00am
Cluster, Part 8: The Shoulders of Giants | NFS, Nomad, Docker Registry
20th Jun 2020 at 09:00am
Ensuring a Linux machine's network connection stays up with Bash
13th Jun 2020 at 06:05pm
Analysing logs with lnav
3rd Jun 2020 at 05:00pm
PhD Update 4: Ginormous Data
27th May 2020 at 09:00am
PhD Aside: Reading a file descriptor line-by-line from multiple Node.js processes
24th May 2020 at 09:00am
Pure CSS spoilers with the CSS :target selector
21st May 2020 at 09:00am
Cluster, Part 7: Wrangling... boxes? | Expanding the Hashicorp stack with Docker and Nomad
13th May 2020 at 09:00am
Cluster, Part 6: Superglue Service Discovery | Setting up Consul
9th May 2020 at 09:00am
Pipes, /dev/shm, or a TCP socket: Which is faster?
6th May 2020 at 09:00am
Cluster, Part 5: Staying current | Automating apt updates and using apt-cacher-ng
29th Apr 2020 at 09:00am
Cluster, Part 4: Weaving Wormholes | Peer-to-Peer VPN with WireGuard
25th Apr 2020 at 09:00am
Document your network infrastructure with a wiki
22nd Apr 2020 at 09:00am
Cluster, Part 3: Laying groundwork with Unbound as a DNS server
16th Apr 2020 at 09:00am
Measuring maximum RAM usage with Bash on Linux
12th Apr 2020 at 05:10pm
Happy Easter 2020!
9th Apr 2020 at 09:00am
How to hash and sign files with GPG and a bit of Bash
2nd Apr 2020 at 03:00pm
PhD Update 3: Simulating simulations with some success
24th Mar 2020 at 09:00am
Cluster, Part 2: Grand Designs
17th Mar 2020 at 09:00am
Testing storage devices with f3
7th Mar 2020 at 09:00am
Installing libonig4 from source to fix php7.4-mbstring
4th Mar 2020 at 09:00am
Variable-length fuzzy hashes with Nilsimsa for did you mean correction
29th Feb 2020 at 06:00pm
The legend of the disappearing data in Node.js
23rd Feb 2020 at 09:00am
Rust Review Redux
12th Feb 2020 at 09:00am
PhD Update 2: The experiment, the data, and the supercomputers
5th Feb 2020 at 09:00am
I've got an apt repository, and you can too
29th Jan 2020 at 09:00am
Switching TOTP providers from Authy to andOTP
22nd Jan 2020 at 09:00am
Cluster, Part 1: Answers only lead to more questions
15th Jan 2020 at 09:00am
Demystificating VPNs
11th Jan 2020 at 09:00am
Own Your Code Series List
4th Jan 2020 at 09:00am
Why the TICK stack probably isn't for me
29th Dec 2019 at 09:00am
Happy Christmas 2019!
20th Dec 2019 at 09:00am
Multi-boot + data + multi-partition = octopus flash drive 2.0?
10th Dec 2019 at 02:00pm
PhD Update 1: Directions
4th Dec 2019 at 12:00am
PyTorch and the GPU: A tale of graphics cards
29th Nov 2019 at 09:00am
Exporting an SQLite3 database to a directory of CSV files
24th Nov 2019 at 01:00pm
Pepperminty Wiki is 5 today!
21st Nov 2019 at 09:05pm
MDNS: Simple device addressing for home networks
12th Nov 2019 at 04:15pm
Own your code, part 6: The Lantern Build Engine
5th Nov 2019 at 09:00am
Own your code, part 5: git post-receive hook
29th Oct 2019 at 09:00am
Using Cloudflare for DNS is awesome
23rd Oct 2019 at 09:00am
Converting multiline text to an image in PHP
13th Oct 2019 at 03:00pm
Saving space on Linux
4th Oct 2019 at 09:00am
Starting my PhD on the mapping of flooding
30th Sep 2019 at 09:00am
Summer Project Series List
26th Sep 2019 at 11:35am
Summer Project Part 6: A matching bookend
21st Sep 2019 at 11:05pm
Next Gen Search, Part 2: Pushing the limits
11th Sep 2019 at 09:00am
Own your code, part 4: Laminar CI
4th Sep 2019 at 09:00am
Quick File Management with Gossa
2nd Sep 2019 at 09:00am
Next Gen Search, Part 1: Backend Storage
26th Aug 2019 at 09:00am
Own your code, part 3: Shell scripting infrastructure
19th Aug 2019 at 09:00am
Thinking about coding style
14th Aug 2019 at 09:00am
Setting up a Mosquitto MQTT server
10th Aug 2019 at 09:00am
Website update: Blog post view counter
4th Aug 2019 at 09:00pm
Orange Pi 3 in review
27th Jul 2019 at 11:50pm
The infrastructure behind Air Quality Web
18th Jul 2019 at 09:00am
Summer Project Part 5: When is a function not a function?
11th Jul 2019 at 09:00am
Ensure your SSH server is secure with SSH Check
4th Jul 2019 at 09:00am
Summer Project Part 4: Threading the needle and compacting it down
1st Jul 2019 at 09:00am
Solo hardware security key review
25th Jun 2019 at 09:00am
Monitoring HTTP server response time with collectd and a bit of bash
18th Jun 2019 at 04:10pm
Summer Project Part 3: Putting it together
12th Jun 2019 at 09:00am
Own your code, Part 2: The curious case of the unreliable webhook
6th Jun 2019 at 03:35pm
Summer Project Part 2: Random Number Analysis with Gnuplot
29th May 2019 at 09:00am
Own your Code, Part 1: Git Hosting - How did we get here?
24th May 2019 at 09:00am
Summer Project Part 1: LoRaWAN Signal Mapping!
20th May 2019 at 09:00am
Note to self: Don't reboot the server at midnight....
17th May 2019 at 09:00am
Responding to "the Internet is disintegrating"
13th May 2019 at 09:00am
Using prefers-color-scheme to display alternate website themes
3rd May 2019 at 03:30pm
Powahroot: Client and Server-side routing in Javascript
25th Apr 2019 at 09:00am
shunction: Self-hosted Azure Functions!
22nd Apr 2019 at 09:00am
How to quickly run TUI programs via SSH
15th Apr 2019 at 09:00am
Fixing recursive uploads with lftp: The tale of the rogue symbolic link
8th Apr 2019 at 09:00am
Easy Paper Referencing and Research
3rd Apr 2019 at 01:00pm
Delivering Linux 101
27th Mar 2019 at 09:00am
Easy Ansi Escape Code in C♯ and Javascript
15th Mar 2019 at 09:00am
Automatically rotating log files on Linux
5th Mar 2019 at 09:00am
TCP (Client) Networking in Pure Bash
27th Feb 2019 at 09:00am
ASP.NET: First Impressions
24th Feb 2019 at 09:00am
Troubleshooting my dotnet setup
17th Feb 2019 at 09:00am
Animated PNG for all!
9th Feb 2019 at 09:00am
Easy Node.JS Dependencies Updates
4th Feb 2019 at 09:00am
Generating Atom 1.0 Feeds with PHP (the proper way)
28th Jan 2019 at 09:00am
Keeping the Internet free and open for years to come - #ForTheWeb
21st Jan 2019 at 01:45pm
Building Javascript (and other things) with Rollup
12th Jan 2019 at 09:00am
Bridging the gap between XMPP and shell scripts
5th Jan 2019 at 09:00am
Compilers, VMs, and JIT: Spot the difference
3rd Jan 2019 at 09:00am
Setup your very own VPN in 10 minutes flat
27th Dec 2018 at 09:00am
Where in the world does spam come from?
25th Dec 2018 at 09:00am
Happy Christmas 2018!
20th Dec 2018 at 09:00am
Enabling ANSI Escape Codes on Windows 10
17th Dec 2018 at 09:00am
Backing up to AWS S3 with duplicity
11th Dec 2018 at 09:00am
Question: How do you recover a deleted file that's been overwritten?
6th Dec 2018 at 09:00am
RhinoReminds: An XMPP reminder bot for my convenience
29th Nov 2018 at 09:00am
Write an XMPP bot in half an hour
22nd Nov 2018 at 09:00am
Creating a system service with systemd
13th Nov 2018 at 09:00am
Easy AI with Microsoft.Text.Recognizers
5th Nov 2018 at 09:00am
Using libsodium to upgrade the comment key system
29th Oct 2018 at 09:00am
Markov Chains Part 4: Test Data
22nd Oct 2018 at 06:30pm
Disassembling .NET Assemblies with Mono
16th Oct 2018 at 09:00am
Geolocation Strategies
9th Oct 2018 at 09:00am
Goodbye, Flash?
2nd Oct 2018 at 09:40pm
C# & .NET Terminology Demystified: A Glossary
27th Sep 2018 at 12:00am
Generating word searches for fun and profit
20th Sep 2018 at 09:00am
Converting my timetable to ical with Node.JS and Nightmare
14th Sep 2018 at 09:00am
LoRa Terminology Demystified: A Glossary
7th Sep 2018 at 09:00am
Help! My SQLite database is malformed!
31st Aug 2018 at 09:00am
Proxies: What's the difference?
27th Aug 2018 at 09:00am
Maintenance: Server Push Support!
23rd Aug 2018 at 09:00am
How to set up a shared PDF printer on your local network
16th Aug 2018 at 09:00am
What I've learnt from #LOWREZJAM 2018
12th Aug 2018 at 09:00am
Acorn Validator
3rd Aug 2018 at 09:00am
Revolutionising CSS with Grids
30th Jul 2018 at 09:00am
Placeholder Image Generator
23rd Jul 2018 at 06:45pm
Password Protect: Secure?
12th Jul 2018 at 06:00pm
Job Scheduling on Linux
4th Jul 2018 at 09:00am
Search Engine Optimisation: The curious question of efficiency
30th Jun 2018 at 01:20pm
Demystifying Inverted Indexes
22nd Jun 2018 at 04:15pm
Redis in Review: First Impressions
15th Jun 2018 at 10:10am
#movingtogitlab
: What's up, Thoughts, and First Impressions
8th Jun 2018 at 09:00am
Routers: Essential, everywhere, and yet exasperatingly elusive
1st Jun 2018 at 11:15am
Achievement Get: Complete Degree!
22nd May 2018 at 09:00am
Just another day: More spam, more defences
19th May 2018 at 02:20pm
Shift-Reduce Parser Part 2: Building Furniture (1)
10th May 2018 at 09:00am
Distributing work with Node.js
3rd May 2018 at 09:00am
AT24C64 EEPROM and the Arduino
30th Apr 2018 at 09:00am
Deep Sleep on ESP-Based Chips
26th Apr 2018 at 09:00am
Representing clickable links with awkward characters in LaTeX
20th Apr 2018 at 09:00am
Shift-reduce Parser Part 1: First Steps
15th Apr 2018 at 09:00am
Markdown editors compared
8th Apr 2018 at 05:00pm
An epic journey awaits: The hows and whys of DNS (and why DNS privacy is important)
31st Mar 2018 at 09:00am
Read / Write Disk Performance Testing in Bash
26th Mar 2018 at 09:00am
Java: First Impressions
19th Mar 2018 at 09:00am
Issues with Android Studio
15th Mar 2018 at 09:00am
Quest Get: Search large amounts of code!
8th Mar 2018 at 09:00am
Retinex: Correct your low-light images today!
1st Mar 2018 at 09:00am
Markov Chains Part 3: Weighted Chains
22nd Feb 2018 at 09:00am
LoRaWAN talks at CD4I!
21st Feb 2018 at 09:00am
Securing a Linux Server Part 2: SSH
14th Feb 2018 at 09:00am
Android app architecture: First steps and impressions
6th Feb 2018 at 09:00am
How to prevent php-fpm from overriding your PHP-based caching logic
3rd Feb 2018 at 09:00am
Deterring spammers with a comment key system
24th Jan 2018 at 09:00am
LoRaWAN: Dream wireless communication for IoT
19th Jan 2018 at 09:00am
Building a line-by-line lexer in C#
14th Jan 2018 at 09:00am
Rendering LaTeX documents to PDF: Attempt #2
7th Jan 2018 at 09:00am
Rendering LaTeX documents to PDF on Linux (and maybe Windows too)
3rd Jan 2018 at 09:00am
A comparison of compression formats for storing JSON
27th Dec 2017 at 04:00pm
Happy (belated?) Christmas 2017!
20th Dec 2017 at 12:00pm
GlidingSquirrel is now on NuGet with automatic API documentation!
10th Dec 2017 at 09:00am
Untangling MSBuild: MSBuild for normal people
1st Dec 2017 at 09:00am
Finding the distance to a (finite) line from a point in Javascript
29th Nov 2017 at 09:00am
Change the way you think: Languages and Compilers in Review
24th Nov 2017 at 03:30pm
Nasty Example SPL Programs
19th Nov 2017 at 09:00am
Jump around a filesystem with a bit of bash
11th Nov 2017 at 04:20pm
Compilers 101: Build your own flex + bison compiler in a few easy(?) steps
6th Nov 2017 at 09:00am
TeleConsole Client is available on NuGet!
4th Nov 2017 at 09:00am
Virtual Reality: A Review
2nd Nov 2017 at 09:00am
Demystifying microphones: The difference between dynamics and condensers
31st Oct 2017 at 09:00am
Getting an updated version of MonoDevelop on Ubuntu
28th Oct 2017 at 06:00pm
Pepperminty Wiki CLI
21st Oct 2017 at 09:00am
OC ReMix Albums Atom Feed
19th Oct 2017 at 09:00am
ES6 Features 14: Modules
13th Oct 2017 at 09:00pm
Line Simplification: Visvalingam's Algorithm
5th Oct 2017 at 06:00pm
Flexible Bison: Compiler Theory
27th Sep 2017 at 09:00am
The Great Migration of Manjaro
21st Sep 2017 at 09:15pm
University: Begin!
14th Sep 2017 at 10:15pm
Manjaro OpenRC Cheat Sheet
5th Sep 2017 at 08:05pm
Run a program on your dedicated AMD graphics card on Linux
29th Aug 2017 at 07:00am
Deep dive: Email, Trust, DKIM, SPF, and more
25th Aug 2017 at 09:00am
Unmounting NFS Shares on Shutdown in OpenRC Manjaro
17th Aug 2017 at 07:00pm
Semi-automated backups with duplicity and an external drive
9th Aug 2017 at 02:00pm
The other side of the fence: A Manjaro review
30th Jul 2017 at 07:00pm
An (unscientific) Introduction to I2C
22nd Jul 2017 at 11:40am
GalleryShare - Share a folder on your computer with a friend
13th Jul 2017 at 09:00am
/r/dailyprogrammer hard challenge #322: Static HTTP 1.0 server
6th Jul 2017 at 09:00am
Take up a Hobby!
29th Jun 2017 at 09:00am
Share files from your host machine with virtual machine guests with 9p and virtual machine manager
25th Jun 2017 at 11:00am
Debug your systemd services with journalctl
21st Jun 2017 at 10:30pm
Access your home linux box from anywhere with SSH tunnels
14th Jun 2017 at 10:30pm
Learn your terminal (or command line)
6th Jun 2017 at 08:00pm
Make your linux learning experience painless with tldr-pages!
29th May 2017 at 09:00am
Weekend Challenge: Detecting and Decoding Morse Code in an Audio File
22nd May 2017 at 09:00am
Let's build a weighted random number generator!
19th May 2017 at 09:00am
Markov Chains Part 2: Unweighted Chains
12th May 2017 at 09:00am
How to set up a WebDav share with Nginx
9th May 2017 at 09:00am
Markov Chains Part 1: N-Grams
29th Apr 2017 at 09:00am
Website Integrations (Mini!) Series List
27th Apr 2017 at 09:00am
Website Integrations #3: Twitter cards
19th Apr 2017 at 11:00am
Running Prolog on Linux
18th Apr 2017 at 09:00am
Profiling PHP with XDebug
15th Apr 2017 at 09:00am
My new Raspberry Pi 3!
13th Apr 2017 at 09:00am
Website Integrations #2: oEmbed
9th Apr 2017 at 09:00am
Website Integrations #1: Open Graph
8th Apr 2017 at 12:40pm
4287 Reasons why your comments weren't posted
1st Apr 2017 at 01:00pm
Signing email with GPG/PGP in Evolution
27th Mar 2017 at 07:00pm
zram: A seriously cool way to do more with your ram
19th Mar 2017 at 09:00am
The HTTPS version of my website is insecure? Nonsense!
12th Mar 2017 at 02:15pm
Learning Prolog Series List
5th Mar 2017 at 08:00pm
What's a package manager? An introduction
26th Feb 2017 at 05:20pm
PixelBot Part 2: Devices need protocols, apparently
18th Feb 2017 at 11:30am
How to update your linux kernel version on a KimSufi server
17th Feb 2017 at 08:00pm
Coding Conundrums Evolved 5: Space Transmissions
9th Feb 2017 at 07:00pm
Writing code when you don't have the time
3rd Feb 2017 at 08:30pm
Fancy message of the day over SSH
27th Jan 2017 at 07:40pm
Easier TCP Networking in C♯
20th Jan 2017 at 08:45am
Coding Conundrums Evolved Series List
18th Jan 2017 at 08:45am
Understanding your compiler: C#
6th Jan 2017 at 02:00pm
Forgotten Parallax Bicycles
2nd Jan 2017 at 06:37pm
Happy (belated) New Year!
29th Dec 2016 at 05:30pm
Transform your javascript with Browserify
26th Dec 2016 at 10:30am
Happy Christmas 2016!
17th Dec 2016 at 05:30pm
Developing and Running C# Programs on Linux
9th Dec 2016 at 08:30pm
I've got some business cards!
5th Dec 2016 at 07:00pm
How to run a successful blog: My experiences so far
27th Nov 2016 at 06:10pm
My PixelBot is Connected! (Part 1)
24th Nov 2016 at 06:35pm
Pepperminty Wiki Turns 2!
19th Nov 2016 at 02:00pm
An easier way to debug PHP
13th Nov 2016 at 02:30pm
Coding Conundrums Evolved 4: Prime Wall Hangings
8th Nov 2016 at 07:00pm
SBRL Archives: Colour Picker
1st Nov 2016 at 08:00pm
More automatic reposting!
28th Oct 2016 at 09:00am
Coding Conundrums Evolved 3: Fiddly Fuel
25th Oct 2016 at 08:00pm
Picking the right interface for multicast communications
21st Oct 2016 at 01:00pm
Arduino Runtime Exception List
14th Oct 2016 at 09:00am
Coding Conundrums Evolved 2: Binary Biomass
11th Oct 2016 at 09:00am
I now have a public website status page!
9th Oct 2016 at 09:00am
Chaikin Curves in C#: An alternative curve generation algorithm
30th Sep 2016 at 09:00am
Coding Conundrums Evolved 1: Alien Encounter
25th Sep 2016 at 09:00am
Arduino quick reference guide
21st Sep 2016 at 09:00am
Client certificates and HTTPS: A deep dive into the world of certificates
10th Sep 2016 at 09:30pm
Pocketblock: Simple encryption tutorials
3rd Sep 2016 at 02:50pm
My robot works!
24th Aug 2016 at 05:00pm
The lost post: Embedding commit hashes in C♯ binaries
17th Aug 2016 at 01:00pm
Achievement Get: Upgrade Server - A writeup of my experiences
12th Aug 2016 at 09:00am
Server migration!
8th Aug 2016 at 09:00am
Use C♯ 6.0 today in Visual Studio 2013
1st Aug 2016 at 09:00am
Set properties faster in C♯
28th Jul 2016 at 09:00am
Set and forget async tasks
25th Jul 2016 at 09:00am
Coding Conundrums Series List
23rd Jul 2016 at 09:00am
I built a robot!
20th Jul 2016 at 09:00am
The web needs encrypting, but that's not the whole story
16th Jul 2016 at 07:00pm
Importing your friends' public keys automatically with gpg
9th Jul 2016 at 09:00am
Embedding files in C# binaries
6th Jul 2016 at 09:00am
Creating a HTTP Server in C♯
3rd Jul 2016 at 09:00am
Getting started with arduino
30th Jun 2016 at 09:00am
TeleConsole: A simple remote debugging solution for awkward situations
22nd Jun 2016 at 09:00am
Pushing Git Commits to an SVN Repository
16th Jun 2016 at 09:00pm
The Hull Pixelbot Meetup
15th Jun 2016 at 02:00pm
ES6 Features 13: Classes
6th Jun 2016 at 09:00am
Demystifying traceroute
29th May 2016 at 09:00am
SnoozeSquad.js - Finally a decent lazy image loader
25th May 2016 at 09:00am
The Graphics Pipeline
19th May 2016 at 03:30pm
Semantic Nets in Prolog
18th May 2016 at 09:00am
Set up your own Git server with Go Git Service
15th May 2016 at 12:00pm
3 Things to do before you upgrade to Ubuntu 16
7th May 2016 at 02:00pm
Demystifying UDP
2nd May 2016 at 03:00pm
Random Number Generation: The what, why and how
23rd Apr 2016 at 01:00pm
An introduction to L Systems
15th Apr 2016 at 09:00am
Tips on writing annoying / difficult code
11th Apr 2016 at 12:00pm
Capturing and sending error reports by email in C♯
5th Apr 2016 at 09:00am
Test your next web based idea with RawGit
29th Mar 2016 at 09:00am
Pepperminty Wiki is now on WikiMatrix!
27th Mar 2016 at 10:00am
Happy Easter 2016!
20th Mar 2016 at 09:00am
Making Mathematical Art with C Sharp and PPM
14th Mar 2016 at 09:00am
Test C♯ code online with repl.it
7th Mar 2016 at 10:00am
C++ in Review
29th Feb 2016 at 05:00pm
Automatic Updating in C#
23rd Feb 2016 at 09:00am
Learning Prolog: Semester 2 Lab 12
18th Feb 2016 at 06:30am
My favourite Atom packages
10th Feb 2016 at 12:32pm
Learning Prolog: Semester 2 Lab 10 - Eliza
9th Feb 2016 at 07:15pm
Website Updates Feburary 2016: Syntax highlighting updates & more
7th Feb 2016 at 09:00am
Learning Prolog: Warm up for semester 2 with the cinema
5th Feb 2016 at 09:00am
Organise your code snippets with GistBox
30th Jan 2016 at 07:00pm
Portfolios are important
25th Jan 2016 at 09:00am
Drawing (rotating) shapes
22nd Jan 2016 at 01:05pm
Easy Smooth Lines with Bezier Curves
19th Jan 2016 at 05:30pm
Codepen
13th Jan 2016 at 12:00pm
Stacks of Assembly
2nd Jan 2016 at 03:00pm
Happy New Year 2016!
25th Dec 2015 at 11:00am
Merry Christmas 2015!
23rd Dec 2015 at 09:00am
CSVWriter - Easy CSV Generation
20th Dec 2015 at 09:00am
A first look a fractals - Shapes
20th Dec 2015 at 09:00am
Learning Prolog: End of Semester 1
16th Dec 2015 at 09:00am
My thoughts on Basecamp
14th Dec 2015 at 09:00am
Learning Prolog: Lab #10
11th Dec 2015 at 11:00am
Learning Prolog: Lab #9
9th Dec 2015 at 09:00am
Easy Bezier Curves on the HTML5 Canvas
7th Dec 2015 at 09:00am
Easy circles on the canvas with context.ellipse()
5th Dec 2015 at 09:00am
Bitwise Operators in C++
2nd Dec 2015 at 09:00am
Vector.js: A simple vector class in ES6
27th Nov 2015 at 09:00am
Easy Quadratic Ease In/Out Algorithm
25th Nov 2015 at 08:30am
Drive Naming Schemes in Linux
23rd Nov 2015 at 09:00am
Learning Prolog: Lab #8 - findall/3
20th Nov 2015 at 10:00am
Prolog Visualisation Tool
18th Nov 2015 at 07:45pm
Thoughts on GitHub's new theme
16th Nov 2015 at 01:35pm
Learning Prolog: Lab #7
10th Nov 2015 at 09:00am
The Atom Editor is Awesome
5th Nov 2015 at 09:00am
Learning Prolog: Lab Session #6 - More Looping
2nd Nov 2015 at 08:45am
On CPU Registers in Assembly
29th Oct 2015 at 05:00pm
Learning Prolog: Lab Session #5 - Backtracking
27th Oct 2015 at 02:30pm
Learning Prolog: Lab Session #4 - Reading and Writing
23rd Oct 2015 at 12:05pm
The Big Wheel in HTML5
21st Oct 2015 at 08:45am
Static Variable Memory Allocation
20th Oct 2015 at 12:05pm
Learning Prolog: Lab Session #3
17th Oct 2015 at 05:30pm
Learning Prolog: Lab Session #2
16th Oct 2015 at 08:45am
New Sharing Buttons! (and how to get your own)
15th Oct 2015 at 08:45am
Dividing by zero doesn't always throw an exception
13th Oct 2015 at 08:30am
Prolog: First Impressions (or a basic tutorial on the first lab session)
9th Oct 2015 at 09:00am
My thoughts on SVN (or how to use git-svn to avoid it)
6th Oct 2015 at 05:00pm
A Script to update Node.js to the latest version
28th Sep 2015 at 08:00am
Adding to the $PATH when sudoing
22nd Sep 2015 at 12:00am
UFW and Samba
19th Sep 2015 at 09:00am
Adding a New Samba User
19th Sep 2015 at 09:00am
Custom Brightness Controller for Ubuntu
16th Sep 2015 at 01:00pm
Ubuntu: Second Impressions
13th Sep 2015 at 11:00am
End of ES6 Features Series
6th Sep 2015 at 03:10pm
C♯'s String.Format: A (hopefully) complete tutorial
2nd Sep 2015 at 04:00pm
3D Worley Noise with
noisebox
28th Aug 2015 at 10:00am
Using the ca-bundle to prevent certificate errors in curl
26th Aug 2015 at 03:00pm
Ecmascript 6 Features 12: Strings
22nd Aug 2015 at 09:00am
Ecmascript 6 Features 11: Numbers and Math
15th Aug 2015 at 09:00am
Creating new Ramdisks Programatically with Imdisk
12th Aug 2015 at 11:00am
EcmaScript Features 10: Set
5th Aug 2015 at 10:00pm
PSA: Post Order
5th Aug 2015 at 05:00pm
Ecmascript 6 Features 9: Map
3rd Aug 2015 at 10:30am
A Distributed solution to /r/dailyprogrammer Challenge #223
28th Jul 2015 at 06:00pm
Ecmascript 6 Features 8: Symbols
24th Jul 2015 at 12:00am
Creating a UEFI + BIOS multi-boot + Data flash drive
21st Jul 2015 at 05:00pm
ES6 Features 7: Destructuring
15th Jul 2015 at 12:00pm
Ecmascript 6 Features 6: const
11th Jul 2015 at 12:00am
Converting Hashtags into Titles with PHP
8th Jul 2015 at 05:00pm
Ecmascript 6 Features 5: Spread and Rest
3rd Jul 2015 at 12:00am
I am hosting the enable1.txt wordlist
30th Jun 2015 at 01:00pm
Ecmascript Features 4: Let and use strict
25th Jun 2015 at 09:00am
Programming 2 Coursework - PickupTheCrew
19th Jun 2015 at 09:00am
ES6 Features 3.5: More Generators
16th Jun 2015 at 01:00pm
Public Service Announcement: Web Server Switch
11th Jun 2015 at 09:00am
Find treasure with sound
9th Jun 2015 at 09:00am
EcmaScript 6 Features 3: Generators!
2nd Jun 2015 at 12:30pm
EcmaScript 6 Features 2: Binary and Octal Literals
26th May 2015 at 12:00am
EcmaScript 6 Features 1: String Interpolations
23rd May 2015 at 09:00am
Probably the world's most advanced string splitting function
19th May 2015 at 09:00am
The Big Warehouse: A collection of Computer Science Related Links
12th May 2015 at 09:00am
Page Position Bookmarklet
6th May 2015 at 05:00pm
Windows 10: My thoughts
30th Apr 2015 at 09:00am
Mobile Network Types
24th Apr 2015 at 12:00am
Upgrading to Ubuntu 15.04 Vivid Vervet
22nd Apr 2015 at 09:00am
Jabber & XMPP: A Lost Protocol
18th Apr 2015 at 05:30pm
Voronoi Diagrams
12th Apr 2015 at 05:00pm
SVG and CSS
5th Apr 2015 at 12:00am
Happy Easter!
3rd Apr 2015 at 09:00am
IP version tester
31st Mar 2015 at 09:00am
Language Review: Lua
27th Mar 2015 at 09:00am
TraceRoutePlus
24th Mar 2015 at 08:00am
Learning Three.js four: Maze Birthday Card
18th Mar 2015 at 09:00am
Rob Miles' Tags for Red Nose Day
14th Mar 2015 at 09:00am
Atom Feed Optimisations (and bugfixes)
12th Mar 2015 at 10:00am
Soundbox: A Super Simple Sound Library
8th Mar 2015 at 08:00am
Coding Conundrums 3
7th Mar 2015 at 09:00am
C Sharp Performance Tests: Squaring Numbers
5th Mar 2015 at 04:00pm
New Coding Conundrums
4th Mar 2015 at 09:00am
Protecting your Privacy Online: Reviewing which Advertisers Track your Interests
2nd Mar 2015 at 05:30pm
Learning Three.js three: Texturing
23rd Feb 2015 at 06:30pm
Learning Three.js 2: Catch the Sphere
21st Feb 2015 at 09:00am
Rob Miles has Linked to This Blog!
18th Feb 2015 at 02:10pm
Coding Conundrums 2
17th Feb 2015 at 09:00am
Splitting your C♯ Code into Multiple Files 2: DLLs
15th Feb 2015 at 04:00pm
Learning Three.js: Spinning Cube
14th Feb 2015 at 04:35pm
Procedural Castle Generation
13th Feb 2015 at 04:30pm
This blog now has a mailing list!
13th Feb 2015 at 09:00am
Fighting Spam on your blog
10th Feb 2015 at 09:00am
Value vs Reference: A Performance Test
9th Feb 2015 at 05:00pm
Coding Conundrums 1
9th Feb 2015 at 04:00pm
Reading HTTP 1.1 requests from a real web server in C#
7th Feb 2015 at 10:00am
Splitting your C♯ Code into Multiple Files
4th Feb 2015 at 08:00am
Securing a Linux Server Part 1: Firewall
27th Jan 2015 at 12:00pm
Dailyprogammer Challenge #199 - Bank Numbers Pt 1
23rd Jan 2015 at 12:00am
Stardust Update: Email Notifications
22nd Jan 2015 at 12:00am
Finding Favicons with PHP
18th Jan 2015 at 10:00am
Cool Resources: Subtle Patterns
14th Jan 2015 at 09:00am
Dailyprogrammer challenge #197 - Validating ISBN Numbers
10th Jan 2015 at 10:00am
Sorting Algorithms 3 / 5: Insertion Sort
9th Jan 2015 at 05:00pm
Recording animated gifs on Linux with Silentcast
8th Jan 2015 at 09:00am
Algorithms 2 / 5: Reverse Selection Sort
7th Jan 2015 at 11:30am
Twitter Account
5th Jan 2015 at 12:00am
Following Redirects in PHP
1st Jan 2015 at 03:00pm
Happy New Year!
24th Dec 2014 at 12:00am
Happy Christmas!
18th Dec 2014 at 12:00am
Generating Session Tokens with PHP
15th Dec 2014 at 12:00am
Sending POST Requests with curl
11th Dec 2014 at 11:00am
Tag Cloud Update
8th Dec 2014 at 09:00am
File System Performance in PHP
5th Dec 2014 at 05:00pm
Tag Clouds
3rd Dec 2014 at 05:00pm
Pepperminty Wiki: A Wiki in a box
26th Nov 2014 at 12:00pm
Github!
21st Nov 2014 at 05:00pm
HTML5 Canvas Clouds
13th Nov 2014 at 09:00am
Easy C♯ Menus
7th Nov 2014 at 05:00pm
Friday Afternoon Downtime
6th Nov 2014 at 09:00am
Sorting: Selection Sort
4th Nov 2014 at 09:00am
Security update to
atom.gen.php
2nd Nov 2014 at 09:00am
Reverse Bubble Sorting
25th Oct 2014 at 08:30pm
Thing list for 3 Thing Game!
24th Oct 2014 at 11:30am
Binary Searching
20th Oct 2014 at 10:00am
Useful hidden
chrome://
pages
17th Oct 2014 at 09:00pm
Three Thing Game!
8th Oct 2014 at 01:00pm
First Impressions: C♯
3rd Oct 2014 at 05:00pm
Imaanvas!
24th Sep 2014 at 09:00am
Rust: First Impressions
18th Sep 2014 at 09:00am
Tutorial: Javascript Promises: There and Back Again in Half the Time
12th Sep 2014 at 09:00am
Terminal Reference Sheet
4th Sep 2014 at 09:00am
Behind the Parallax Stars
30th Aug 2014 at 09:00am
Website Updates
27th Aug 2014 at 09:00am
An Animated GIF Renderer
26th Aug 2014 at 09:00am
Parallax Stars
13th Aug 2014 at 12:00am
A Simpler Way to Generate XML in PHP
6th Aug 2014 at 09:00am
Generating Atom Feeds
31st Jul 2014 at 09:00am
Saving and Restoring
<inputs />
26th Jul 2014 at 10:00am
An (Almost) Pure CSS Spotlight
21st Jul 2014 at 09:00am
Lightsout and Syntax Highlighting
20th Jul 2014 at 09:00am
How the trianglfier works
18th Jul 2014 at 09:00am
Image Trianglifier
29th Jun 2014 at 10:00am
Welcome!
Art by Mythdael