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