Tom Creighton

Enoki

Dec 2024

If you’ve read some of my other posts you know that one of my creative resolutions for this year was to learn development skills. As I've shifted more of my social media presence away from Twitter and on to Bluesky, I've also become interested in the protocol underyling Bluesky: Atproto. I’m sure you can see where this is going (I built something with atproto).

Atproto, uniquely in my experience, is a technology that invites participation. Folks on Bluesky (the largest and most visible implementation of AT Protocol at the moment) are dropping cool new ideas and sharing code on the daily. I was able to use built-in primitives to quickly hack together a reply-based commenting system for this site, but I wanted to go deeper. I wanted to build some real software.

Atproto differs from most other technologies I’ve dabbled with. One of the core concepts is the DID, or Decentralized Identifier, which attaches all activity within the atproto ecosystem to you, personally. Bluesky posts, as well as post-like entities on any other atproto system, are stored ‘in the network’. In an as-yet unrealized world, this means I could choose to self-host my atproto content, giving me plausible air cover from (say) capricious billionaires.

In the here and now, this means a lot of the annoying heavy lifts of previous projects have simply been hand-waved away – no login to manage, no databases to wrangle, no S3 buckets, etc. Everything is simply a record within atproto.

So: as a toy project (by which I mean: one which I am unlikely to ever release publicly but which was very valuable from an education standpoint), I built an atproto-powered visual bookmarking system: Enoki. It auths with my Bluesky identity, writes posts into a custom lexicon (basically a DB schema within atproto), and accepts media uploads which are then associated with a given record. It also does a bunch of quite stupid CORS stuff via a Javascript bookmarklet to allow me to actually capture images from other websites, which tends to be like brushing a cat’s fur backwards.

All this to say: I haven’t yet set any 2025 creative goals, but I have high confidence that whatever I build next year – to play, to learn, to launch – I'll be happily revisiting this tech.