Dog food

While travelling I like to keep a simple handwritten journal. I prefer doing this the old fashioned way, choosing pen and paper over a computer, because it’s nice to have a physical thing to hold and look back over, and it’s just so easy compared with lugging around and worrying about a computer.

Having said that, I also find that this simple approach lacks something I get for free when writing things up on a computer: clipart related assets such as images, videos, or audios; which I’m creating a lot of anyway.

Notebook selfie sum

Astute readers might now be thinking “So you deliberately chose to handwrite your journal and now you want hyperlinks in it. Well done, you’ve well and truly shot yourself in the foot”. And they’d be right. They might also be thinking that the obvious way to solve this would be to digitise the handwritten stuff, and they’d be right about that too.

For me though, that simple solution isn’t ideal. By handwriting and then digitising I’m wasting time I’d rather be spending seeing things, and I’m also making the nice, physical journal somewhat redundant; what’s the point in having handwritten text, when the web version has embedded images?

So, instead of doing this, I decide to look into how I can link to digital content in my physical notes.

Looking for a solution

Fortunately for me, marketing departments around the world have already pushed a solution to this, in the name of QR codes.

Qr codes poster

That’s right, QR codes. No, wait… Don’t leave!

While typically QR codes are REALLY BIG AND UGLY, so they catch the eye and can be reliably scanned from a distance by inconsistent cameras, those I’m thinking about have different requirements.

I want QR codes for personal use. Let’s say I print QR codes onto stickers. These codes point to URLs I control, at which I can host my holiday snaps. I then stick these into my journal, or wherever I like, for scanning later on.

Under this use case, perhaps I can make the QR codes very small. They’ll most likely be scanned from a very short distance, while the page they’re on is held in the hand. Perhaps this, combined with giving them some simple decoration, can make them not so unsightly that I never want to see them again?

Building and testing

Like many of my bad ideas, this one grows on me quickly. I do however decide to at least try to approach things sensibly, only building what I really know I need at any given time, and not bolting on features before I need them.

I make a rough plan:

  1. Figure out how small I can make these codes while still keeping them functional;
  2. If these turn out small enough to be passable, generate a few of these codes, at the size I settle on, pointing to as-yet nonexistent URLs which I control;
  3. Print these codes, stick them to stuff, upload assets to the URLs.

Testing how small I can make the codes

For this first step, I put together a simple tool, which simply encodes a short URL as a QR code, then renders it in various sizes on a PDF. I’m not carrying a printer around with me, so I take this into a shop where I can get it printed.

Code sizes

Once in store, I test the samples out. Somewhat annoyingly, even the smallest (around 8mm square) scans perfectly… I don’t fancy messing around printing another test right now though, so just stick with this size for the time being.

Generating real usable codes

Having found a size which is both scannable and not too offensive, the next stage is to generate a batch of real codes and print them onto stickers. I add some logic to the tool, handling generation of unique URLs, encoding them, then generating a PDF rendering a whole batch of them. As you might have noted above, I also give the codes a small coloured border, to make them slightly more appealing.

Printing & testing

For my initial run, I print 100 stickers. This makes v0 complete — as of now I can manually upload content to the generated keys, and it should Just Work.


My first real go at printing, uploading, then scanning doesn’t turn out to be exactly the use case I first had in mind. Rather than annotate my journal with a photo, I stick one on a postcard for a friend (yes, really).

There were some teething issues on delivery, as in the dark pub we sat the code was initially overlooked (not ugly enough?), and then the first app we tried scanning it with failed to decode it. The second we tried did however work.

Postcard phone centered

Next steps

After a few more attempts of my own, I have a better idea of what works and what doesn’t. The codes all seem to scan from my device, at the size I’ve chosen. The coloured borders on each are nothing mind blowing, but they make them a little easier on the eye while keeping things simple. I’m also happy about being able to link my personal stuff together like this, and I am actually using it!

At the moment, I’m not too concerned about the issues from that 1st postcard run. My plan for the time being is still to keep these stickers mostly to myself, not others, and I’m confident of being able to scan these codes successfully on my own phone.

The main issue I do have, is that uploading while on the go currently isn’t straight forward. I’m hosting on S3, so even if I simply want to store an image, doing so from my mobile is non-trivial. If I want to upload something more complex, like rich HTML, with styles and embedded assets, it’s even more frustrating!

Thinking this over some more; what I’m after is to be able to easily deploy files, whether that means simple things like photos, or HTML with linked content, from my phone. I’d also like to be able to specify that these files should be stored under a certain key on S3 (matching a sticker), however it’s also possible that sometimes I’d just want to deploy a thing, without caring where it ends up, and come back to print a QR code for it later on.

That though can be a topic for next time.