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
5 October 2024
Five books I enjoyed, Summer/Autumn 2024 Edition
26 August 2024
Moving house
5 June 2024
Street numbering in Istallia
1 May 2024
For what is blog
9 April 2024
City of Winter
5 February 2024
Five books I enjoyed - Winter/Spring 2023
2023
2 November 2023
A quick upgrade
31 August 2023
Switching to Matrix
15 August 2023
Far too many graphs about Eurovision
10 August 2023
Six books I enjoyed - Summer/Autumn 2022
23 June 2023
Idle Dreaming
23 March 2023
ChatGPT for roleplaying - what can it do?
16 February 2023
Four books I enjoyed - Winter/Spring 2022
26 January 2023
Email penpals
2022
24 July 2022
Five books I enjoyed - Summer/Autumn 2022
5 March 2022
Gradient background images with ruby and chunky_png
24 February 2022
If at first you don't succeed...
26 January 2022
Ten books I enjoyed this year - 2021 edition
11 January 2022
Building an object model in Vue.js
2021
10 December 2021
Automating the production of .epub files
25 November 2021
Don't be beholden to your past self
14 November 2021
Yes-no-and-or
20 October 2021
Proc-gen crosswords from scratch
15 September 2021
Revamping 1klb comments part four: submitting comments
17 May 2021
Weekly zine: the latest iteration
21 March 2021
Revamping 1klb comments part two: the database
8 March 2021
Revamping 1klb comments part one: an overview
2 February 2021
New year, new tools
31 January 2021
Ten books I enjoyed this year
23 January 2021
Productivy zines: one month on
2020
17 December 2020
Keeping productive with a tiny zine
8 December 2020
Automating OmniFocus to scope every task
16 October 2020
Birds of a feather
23 September 2020
JAMStack comments (for free) with Netlify and Fauna
28 July 2020
R and colour palettes part 2 - set your primary
13 June 2020
Quantified self through little fill-in boxes
27 May 2020
Making zines with pdfjam
16 May 2020
Making a colour palette pseudo-package in R
10 May 2020
A pear tree
3 April 2020
Hacking Dream Askew for custom one-shots
7 March 2020
Stakeholder analysis and Larp faction-building
13 February 2020
Build a species
1 February 2020
Best of the Year
8 January 2020
Seasons
2019
24 November 2019
Personal principles for story gaming
20 November 2019
Sublime Text basic plugins
12 November 2019
Serendipity
13 June 2019
Stacked area charts in d3
12 June 2019
Goblinville
22 February 2019
A small piece of work
2018
18 September 2018
New Voices in larp: Speed dating
8 August 2018
When is an NA not an NA?
13 June 2018
Shifting to netlify
7 June 2018
The case of the missing zero index
7 May 2018
Living Dungeon World 2.0
26 April 2018
Site update
2017
11 December 2017
Disabling disqus
11 October 2017
On D&D, and preparation
16 August 2017
New voices in Larp: Distributed deadlines
15 May 2017
Slurping content from Livejournal with ruby
9 May 2017
Infix operators I have known and loved
4 April 2017
Money
2016
14 November 2016
How to run a con
7 November 2016
A new lick of paint
4 October 2016
Metamorphosis
8 September 2016
Omniboard 1.0
7 September 2016
Minimum viable guard
1 July 2016
Urban World - Chases
26 March 2016
MailMate bundles for fun and profit
11 March 2016
Omniboard tutorial: dates and filters
1 March 2016
OmniFocus + Kanban: the next generation
17 February 2016
Automating VoodooPad with scripts
2015
14 December 2015
Constraints breed creativity
11 November 2015
Rubyfocus beta
23 September 2015
Books and trust
16 July 2015
Heroku + Tracks = ♥️
30 May 2015
Dugong - kind of ugly mindmapping in javascript
19 May 2015
Away from goals in LARP
24 March 2015
Web-based GTD: Putting tracks on heroku
1 March 2015
How to live on 30kg of worldly goods
12 January 2015
A quick personal update
10 January 2015
Space in role-playing
2014
1 December 2014
Smartening up haml in nanoc
13 November 2014
Golden Pie Stories
9 November 2014
Killing controller bloat: divide and conquer
2 October 2014
CLI apps in Objective-C: tips and tricks
6 September 2014
Freemarket reference sheets
14 August 2014
Reducing my internet profile
6 August 2014
Perfectly Legal Traders
24 July 2014
Advanced Gnuplot: sizing particles
12 July 2014
Pleasing all of the people all of the time
12 July 2014
A cocoa bridge to OmniFocus
4 July 2014
Custom markup in nanoc
23 June 2014
Oh look some writing
22 June 2014
Missive update 0.3.0
21 June 2014
Streamlining rules in nanoc
16 June 2014
Back up and running
14 June 2014
Further renovation
6 June 2014
Custom keybindings in MailMate
30 May 2014
Checking running applications the right way
10 May 2014
Missive: just send email
7 May 2014
One foot in front of the other
19 April 2014
Site search with javascript
7 April 2014
Constructing languages with Markov chains
15 March 2014
Gnuplot: an introduction
11 March 2014
Anatomy of a dropped project
17 February 2014
rb-dayone update
8 February 2014
"That" vs. "Which"
6 February 2014
Let.ter, or, being beaten to the punch
31 January 2014
CaHGen: A Cards Against Humanity generator in ruby and prawn
29 January 2014
Blueshift: Some unusual things
18 January 2014
Customising NSAlert: accessory views
1 January 2014
Site upgrades
2013
30 December 2013
Blueshift: the big picture
20 December 2013
Migrating MacRuby scripts to Objective-C
2 December 2013
Living Dungeon World
2 December 2013
Desktop background on OS X 10.9 Mavericks
25 November 2013
Assign 0.4.0 update
21 November 2013
Site update: feeds
21 November 2013
Hacking XP part two: applications
8 November 2013
Hacking XP for a more meaningful life
29 October 2013
Blueshift: Introduction
16 October 2013
Opening Sublime Text files in other applications
9 October 2013
Society of Dreamers: Randomness through mad-libs
25 September 2013
Tabbed windows, take 2
13 September 2013
Simple checklists with ruby and prawn
23 August 2013
Tabbed windows and NSToolbarItems
9 July 2013
Assign.app v0.2.0 live
5 July 2013
Using vim in ruby
27 June 2013
Sitting
22 May 2013
Assign.app - my first Cocoa project
14 May 2013
Continuing adventures in macruby
10 May 2013
A change of scenery
17 April 2013
Slock: the occasional clock
20 March 2013
Pomodoro workflow
4 March 2013
Getting every foo whose name is bar
3 March 2013
Personal Kanban and Omnifocus - Part 2
2 March 2013
rb-appscript → MacRuby
26 January 2013
Cache.rb - the smallest feasible database
6 January 2013
Personal Kanban and Omnifocus
2012
29 December 2012
Surviving a conference without your laptop
19 December 2012
Travel
17 December 2012
Some Sublime Text key combos
4 December 2012
Password generation
9 November 2012
Moving with regular expressions - `mvr`
27 October 2012
Treading water
12 October 2012
Random NPC generation in Trunk Notes
5 October 2012
Programming in Lua for Trunk Notes
14 September 2012
rb-dayone
28 August 2012
rbenv and GeekTool
3 August 2012
Using TextMate with rbenv
30 July 2012
My gaming workflow
16 July 2012
Graveyard shift
7 July 2012
GTD: Creative Workflows
5 July 2012
Getting to grips with KVO
6 June 2012
Rubyish hashes
6 June 2012
OmniFocus isn't your manager
29 May 2012
Journey
22 May 2012
A glyph generator for Journey
15 May 2012
High-priority projects in Omnifocus
10 May 2012
So...