This article is about a design for shelves that’s easy to make (hard to mess up) and doesn’t require a full-blown workshop to construct.

The design is just horizontal slabs of wood for the shelves and vertical threaded rod with nuts to hold them in place (because a shelf without altitude is just a bit of wood on the floor). No nails or screws or glue or any other forms of joinery.

I’ve made two sets of shelves in this vein in the last few weeks, here’s the little one:

Image for post
Image for post

… and here’s the big one.


In this post, I walk you through the composition, capture and development of a photo of the cranes at Newington Armory.

The photo

Image for post
Image for post

The location

Newington Armory, on the Paramatta River.

The original

Shot with a Canon RP + 35mm lens.

1/20s • ƒ/9.0 • ISO 100


This is part two in a series showing the work behind the scenes to create a particular photo. Part one is here.

The photo

Image for post
Image for post

I like this photo, partly because it’s all wrong. The composition is odd, it’s almost entirely out of focus, the colours are faded but not black and white, the lack of contrast is depressing, and the subject matter is a clump of sticks in a drain. Not even a pile of sticks, a clump.

In fact, as I was triaging my shots from this location, my first instinct was to send it to the bin.

The location

This magnificent clump…


This post describes the creation of a particular photograph; it will form part of a series, guided by feedback and my attention span.

The photos themselves are not particularly amazing, and I must confess I don’t think they belong under the spotlight. But as with everything I write, I aim to put out the sort of content I like consuming from other people (“how it’s made” type stuff).

On with the show…

The photo

Image for post
Image for post

The when and where

Newington Armory, Sydney (map). 9:30am, 21 July 2020.

The tracks in the photo were built to carry fun-sized trains that trundled to-and-fro between armament stores around this site…


This post looks at the privacy implications of contact tracing apps. Specifically those that implement so-called ‘privacy-preserving contact tracing’.

I will put forward the case that such contact-tracing apps can be implemented without any loss of privacy, but let me be clear: this is not a call for complacency. It is a call for an end to unfounded opposition to a potentially life-saving technology.

Image for post
Image for post
Photo by Andre Benz on Unsplash

What do these apps do?

There is, and probably always will be, a shortage of COVID-19 tests. So between now and when we are all vaccinated (late 2021?) we will face the constant quandary of who gets tested and who doesn’t…


There’s no official dark mode for GitHub (December 2020 update: yes there is!) but this doesn’t mean you must suffer the retina-burning white of the default design.

In this post I take a look at 8 options for going dark. The winner, in my opinion, is Dark Reader. So if you’re in a hurry, you may be excused.

First I’ll mention a few things about each of the contenders, then I’ll show them side-by-side in action across various GitHub pages. …


Recollect is a state management library for React.

It serves the same purpose as Redux, with some key differences:

  • It doesn’t work in IE, because it uses the Proxy object.
  • Because it uses the Proxy object, you don’t need to worry about immutability any more.

Recollect’s party trick is a store that behaves like a normal JavaScript object, but is internally immutable. So, if you want to toggle the complete status of a todo, you no longer need code like this:

You can just write todo.completed = !todo.completed.

This looks like it’s mutating the todo, but it isn’t. Internally…


Have you heard about ES6 modules in the browser? They’re like ES6 modules, but in the browser.

For those not in the know, this is what they look like:

index.html will load index.mjs, and index.mjs will load utils.mjs.

They’ve been around for years, and maybe you’re wondering if you should dip your toes in. Well, I’ve been using them for the last month or so on a side-project, and have come the conclusion that …

Suspense!

Image for post
Image for post
Photo by Kelly Sikkema on Unsplash

First things first, the browser support: as I write this at the start of 2020, it’s a pretty respectable 90%.


Consider this scenario: you wake up tomorrow morning with the unshakeable realisation that the world doesn’t have quite enough note-taking apps.

You summon your laptop and immediately get to work crafting your masterpiece: a web app for taking notes that does that one thing that no other note-taking apps do.

2 hours later you’re finished, and you’re rather pleased with the result: it has a list of tasks, uses local storage to persist data and, um, just those two things.

The next morning you wake up with the unshakeable realisation that your web app is web crap if your users…


I recently found an interesting vulnerability that allowed any user of a particular website to set any other user’s password.

That’s a big one, right?

It was a bit of fun and I thought might make for an interesting article. You’re about to find out.

Disclaimer: I’m a long way from being a security expert and this was my first foray into SQL injection, so please forgive all naivety found below.

Disclosure: I’m not going to disclose the website in question. Not because I’ve reported it to the site owner and am bound by secrecy, but because I’m going to…

David Gilbertson

I like web stuff.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store