Blog archive

A listing of blog posts in reverse chronological order. To explore by topic, check out a full list of the tags and series used here.

2024

Five books I enjoyed, Summer/Autumn 2024 Edition
Moving house
Street numbering in Istallia
For what is blog
City of Winter
Five books I enjoyed - Winter/Spring 2023

2023

A quick upgrade
Switching to Matrix
Far too many graphs about Eurovision
Six books I enjoyed - Summer/Autumn 2022
Idle Dreaming
ChatGPT for roleplaying - what can it do?
Four books I enjoyed - Winter/Spring 2022
Email penpals

2022

Five books I enjoyed - Summer/Autumn 2022
Gradient background images with ruby and chunky_png
If at first you don't succeed...
Ten books I enjoyed this year - 2021 edition
Building an object model in Vue.js

2021

Automating the production of .epub files
Don't be beholden to your past self
Yes-no-and-or
Proc-gen crosswords from scratch
Revamping 1klb comments part four: submitting comments
Revamping 1klb comments part three: displaying comments
Weekly zine: the latest iteration
Revamping 1klb comments part two: the database
Revamping 1klb comments part one: an overview
New year, new tools
Ten books I enjoyed this year
Productivy zines: one month on

2020

Keeping productive with a tiny zine
Automating OmniFocus to scope every task
Birds of a feather
JAMStack comments (for free) with Netlify and Fauna
R and colour palettes part 2 - set your primary
Quantified self through little fill-in boxes
Making zines with pdfjam
Making a colour palette pseudo-package in R
A pear tree
Hacking Dream Askew for custom one-shots
Stakeholder analysis and Larp faction-building
Build a species
Best of the Year
Seasons

2019

Personal principles for story gaming
Sublime Text basic plugins
Serendipity
Stacked area charts in d3
Goblinville
A small piece of work

2018

New Voices in larp: Speed dating
When is an NA not an NA?
Shifting to netlify
The case of the missing zero index
Living Dungeon World 2.0
Site update

2017

Disabling disqus
On D&D, and preparation
New voices in Larp: Distributed deadlines
Slurping content from Livejournal with ruby
Infix operators I have known and loved
Money

2016

How to run a con
A new lick of paint
Metamorphosis
Omniboard 1.0
Minimum viable guard
Urban World - Chases
MailMate bundles for fun and profit
Omniboard tutorial: dates and filters
OmniFocus + Kanban: the next generation
Automating VoodooPad with scripts

2015

Constraints breed creativity
Rubyfocus beta
Books and trust
Heroku + Tracks = ♥️
Dugong - kind of ugly mindmapping in javascript
Away from goals in LARP
Web-based GTD: Putting tracks on heroku
How to live on 30kg of worldly goods
A quick personal update
Space in role-playing

2014

Smartening up haml in nanoc
Golden Pie Stories
Killing controller bloat: divide and conquer
CLI apps in Objective-C: tips and tricks
Freemarket reference sheets
Reducing my internet profile
Perfectly Legal Traders
Advanced Gnuplot: sizing particles
Pleasing all of the people all of the time
A cocoa bridge to OmniFocus
Custom markup in nanoc
Oh look some writing
Missive update 0.3.0
Streamlining rules in nanoc
Back up and running
Further renovation
Custom keybindings in MailMate
Checking running applications the right way
Missive: just send email
One foot in front of the other
Site search with javascript
Constructing languages with Markov chains
Gnuplot: an introduction
Anatomy of a dropped project
rb-dayone update
"That" vs. "Which"
Let.ter, or, being beaten to the punch
CaHGen: A Cards Against Humanity generator in ruby and prawn
Blueshift: Some unusual things
Customising NSAlert: accessory views
Site upgrades

2013

Blueshift: the big picture
Migrating MacRuby scripts to Objective-C
Living Dungeon World
Desktop background on OS X 10.9 Mavericks
Assign 0.4.0 update
Site update: feeds
Hacking XP part two: applications
Hacking XP for a more meaningful life
Blueshift: Introduction
Opening Sublime Text files in other applications
Society of Dreamers: Randomness through mad-libs
Tabbed windows, take 2
Simple checklists with ruby and prawn
Tabbed windows and NSToolbarItems
Building a SublimeText command from scratch (and other useful bits)
Assign.app v0.2.0 live
Using vim in ruby
Sitting
Assign.app - my first Cocoa project
Continuing adventures in macruby
A change of scenery
Slock: the occasional clock
Pomodoro workflow
Getting every foo whose name is bar
Personal Kanban and Omnifocus - Part 2
rb-appscript → MacRuby
Cache.rb - the smallest feasible database
Personal Kanban and Omnifocus

2012

Surviving a conference without your laptop
Travel
Some Sublime Text key combos
Password generation
Moving with regular expressions - `mvr`
Treading water
Random NPC generation in Trunk Notes
Programming in Lua for Trunk Notes
rb-dayone
rbenv and GeekTool
Using TextMate with rbenv
My gaming workflow
Graveyard shift
GTD: Creative Workflows
Getting to grips with KVO
Four things I wish I knew about Objective-C six months ago (and three things I'm sure in six months I will wish I knew now)
Rubyish hashes
OmniFocus isn't your manager
Journey
A glyph generator for Journey
High-priority projects in Omnifocus
So...