2024
Switching between VFIO-enabled virtual machines
2023
Going all-in on GPU passthrough for software development
Building a 1U quiet NAS
Controlling computer fans with a microcontroller
Converting my 65C816 computer project to 3.3 V
2022
Porting the Amiga bouncing ball demo to the NES
Let’s make a bootloader – Part 2
Let's make a bootloader - Part 1
Building a simple power supply module
Let's implement power-on self test (POST)
Building a 65C816 test board
65C816 computer - second prototype
Building an emulator for my 65C816 computer
Let's implement preemptive multitasking
Interfacing an NXP UART to an 8-bit computer
65C816 computer - initial prototype
A first look at the 65C816 processor
Rendering my 6502 computer project in Blender
2021
Assembling my 6502 computer
Adding an SD card reader to my 6502 computer
Implementing the XMODEM protocol for file transfer
Designing a 3D printed enclosure for my KiCad project in Blender
Building a hardware interrupt controller
Programming PLD's with open source software
Re-creating the world's worst sound card
6502 computer - from breadboard to PCB
Porting BASIC to my 6502 computer
Upgrades and improvements to my 6502 computer
A first look at programmable logic
Adding a serial port to my 6502 computer
Building a 6502 computer
IntelliJ plugin for 6502 assembly language
Building my first NES game: A retrospective
Building a tiny Linux gaming PC
2019
How to auto-scale the display in GNOME Boxes
How to use the qemu-bridge-helper on Debian 10
Benchmarking PHP code with PhpBench
How to integrate Gitea and Jenkins
Handling I/O errors in PHP
The top 100 Ansible modules
2018
Thermal Sans Mono: A new bitmap font for receipt printers
Three ways to archive a website
Monitoring network throughput with Prometheus
How to export a Maildir email inbox as a CSV file
How to make HHVM 3.21 identify itself as PHP 7
How to check PHP code style in a continuous integration environment
Make better CLI progress bars with Unicode block characters
How to create effective PHP project documentation with Read the Docs
How to get a notification when your site appears on HackerNews
Quick statistics about documentation hosted on Read the Docs
Recovering text from a receipt with escpos-tools
First impressions of the Rust programming language
How to print the characters in an ESC/POS printer code page
Optimization: How I made my PHP code run 100 times faster
Using a receipt printer with the Amazon Echo
Raster to vector conversion tips
Git Introductory Material - Tips for Users, Admins and Git Champions
How to communicate with USB and networked devices from in-browser Javascript
Automating LXC container creation with Ansible
Using custom fonts to add new glyphs to an Epson printer
escpos-php 2.0 released
New Wordpress theme (2018 edition)
How to print custom currency symbols on a receipt printer
How to use HiDPI displays on Debian 9
How to print Spanish characters on a thermal receipt printer
How to install PHP Composer as a regular user
How to boot Debian in 4 seconds
How to use parallel to speed up your work
How to generate star fields
On running deployments via GitHub
How to use a Radeon graphics card on Debian 9
2017
How to assemble a Linux software RAID array on a different computer
Crowd-sourced POS printer compatibility site is online
escpos-php 1.6 released
mdcheckr: Practical testing for Markdown files
The 5890 printer does not support barcodes
How to access a raw network printer as a file on Linux
libgdx 3D particle effects in HTML
How to add a proper Android Studio launcher on Linux
escpos-php 1.5 released
2016
escpos-php 1.4 released
OpenWrt setup on Netgear WNR2200
libvirt: Migrate a VM from qemu:///session to qemu:///system
How to print PDF417 codes with escpos-php
What's in the AEC data feed, and how to use it
How to set up Docker containers in Travis CI
Print larger or smaller text on a thermal receipt printer
How to compile a C++11 app on Travis CI
How to edit emulator flags in Android Studio
Blog domain migrated
Quick guide: Running stock Debian on the Raspberry Pi 2
How to resize a Windows VM image with virt-resize
Convert a PC to a HTPC with Debian and Kodi
How to regenerate SSH client keys
Basic Cucumber feature testing
How to arrange pages for printing and cutting in LaTeX
2015
How to print red/black on an impact receipt printer
How to connect a USB receipt printer up on Mac OS X
How to set up sudo on Debian GNU/Linux
Fix merge conflicts in git with Meld
Continuous testing in PHP with Eclipse
It's time to migrate away from Outlook Express
Raspberry Pi KA Lite wireless deployment
How to create an animated GIF from a series of images
How to install KA Lite on the Raspberry Pi
Howto: QR Codes on receipts with escpos-php
Deprecated Google API's: What you need to know
How to use a Raspberry Pi as a print server
How to run Tetris on your Raspberry Pi
Getting a USB receipt printer working on Windows
How to empty your local user account
Getting a USB receipt printer working on Linux
Configure asterisk with wildcard extensions
Two ways to back up your Google Apps account
How to merge edges in GraphViz
Howto: Tethered photo capture on Linux
Locking down your VOIP setup with a SIP Threat Manager
How to set up Asterisk in 10 minutes
2014
New Wordpress theme
From SIP to speaker: Setting up a VOIP Zone Controller
What is ESC/POS, and how do I use it?
Using xte to script your workflow
Setting up an Epson receipt printer
Productivity: De-activate social networking on a schedule with cron
How to install JOGL on Debian
How to generate professional-quality PDF files from PHP
How to query Microsoft SQL Server from PHP
Crash course: Run Windows on desktop Linux
A Yes/No filtering tool for images
QJoyPad update
Including git commit history in a LaTeX document
Winning 2048 game with key-mashing?
Importing myki data into GnuCash
Successful migration to WordPress in 3 easy steps
Rolling your own cloud storage with Unison
Recovering auto-saved files in MySQL Workbench
A tour of ReactOS 0.3.15
Scripted screen captures
Brother HL-2270DW on Linux
Crash course in handling web traffic spikes
2013
Missile Launcher on Raspberry Pi
Enabling graphical boot on Debian GNU/Linux
USB Missile Launcher
How to graph ASX data with gnuplot
Installing Debian on a HP dm-1
Writing in Ancient Egyptian with HieroTeX
Transforming between SQL dialects
Patton CLI commands
Loading Asterisk CDR into a database
Infinite loop in a Makefile
How to liberate your myki data
Why you should disable IPv6 on Windows
QJoyPad coolness
Backing up from a hosting provider
"Hello World" in python (with curses)
Debian & XFCE quirks on Toshiba NB550D
qtHiero: Open-source Egyptian hieroglyph editor
2012
Making an XKCD-style password generator in C++
Downtime
Pyrocket and Ubuntu
Chromium B.S.U.
Changing the IP address on a Cisco switch
Wikitext parser development
Weird bug in iPad mail app
Re-arranging columns on JTables
Web hosting move complete
Australian telephone tones
HP Mini 210 review
Alphanumeric phone numbers
Introducing BigInteger
Version 0.5 of raycaster released
Palindromes
Finding prime numbers
Getting lost with depth-first search
Solving the eight queens puzzle
Beautiful QR Codes
On the price of watermelons
Samoan Language Section Update
Using speech synthesis in AGI apps
Converting Numbers To Words in PHP
Scripting Windows Shares
Loading OEIS integer sequences
Parsing Asterisk Configuration
2011
Some scripts to make word puzzles
Write something on a chessboard
Samoan Language Resources Section Started
I blame tetrads!
2010
Raycaster is not Windows-only after all
Mike's Webserver v1.0
An experiment in dynamic recipes
Mike's Raycaster - Version 0.04
2007
Strange problems from corrupt files
This error message is beyond me...