Journey with AT Protocol: Part 3

I am on a journey to understand the AT Protocol better by implementing it from scratch in the Elixir programming language. I have a running PDS, I’ve generated working code from the official set of Lexicons, and I can stream in repo events over a websocket connection. But that event data is a bunch of DAG-CBOR binary data, CID references, and CAR file exports! This means it is a good time to talk about multiformats, a set of protocols for self-describing values. ...

March 6, 2025

Journey with AT Protocol: Part 2

I am on a journey to understand the AT Protocol better by implementing it from scratch in the Elixir programming language. I did not implement a custom PDS, however. I already discussed my project setup and the PDS in Part 1. This part will now focus on lexicons and generating usable code from them. Part 1: Setup/PDS Part 2: Lexicons/Event Streams (you’re here!) Part 3: Multiformats Madness Part 4: Public vs Private Most of the magic covered in this part is handled by the code generator, which turns Lexicon JSON files into Elixir source code. You can find the source code for it on my GitHub. ...

March 4, 2025

Journey with AT Protocol: Part 1

I read about the AT Protocol (Authenticated Transfer Protocol), made popular by Bluesky, a couple years ago. But more recently, I decided to do a side project so I could deep dive into it. About five years ago I did a side project with Activity Pub, which I thought would potentially take over how social media platforms are built, but that didn’t quite pan out. Part of it was certainly that Mastodon just didn’t have the same brand clout as Bluesky, the latter being founded by Twitter’s ex-CEO Jake Dorsey. This means that anyone which builds upon the AT Protocol has access to the content of over 30 million registered Bluesky users (as of the time I’m writing this). ...

March 3, 2025

Story: What does strtolower do?

Gather round everyone, it’s Story Corner Time! This story is from way back to my earliest of days as a full-time software developer. I was working for Sony Online Entertainment, which later became Daybreak Games Studio. But at the time it was an online PC gaming company that Sony bought and it made and maintained games such as EverQuest 1 & 2, PlanetSide 1 & 2, Star Wars Galaxies Online, Free Realms, and more. I’ve got tons of stories from my relatively brief tenure there but today it’s just short and simple: who would win between a college-graduate computer science major and a single PHP function? Spoiler: it’s not the college grad. ...

October 10, 2024

Fixing the Interview Process

I think most people looking for a job in 2024, especially those in the tech industry, feel like the application and the interview processes are both broken. And they are right, both of them objectively work worse than they did previously. And while the issue of fielding an avalanche-worth of applications is a little more difficult to define good all-purpose solutions for, I believe that the interview process could be made significantly better with one rather small change. ...

July 23, 2024

My Adventure with NATS

NATS likes to call itself the “central nervous system of distributed computing” but really it’s just a modern take on traditional message queues such as Kafka, RabbitMQ, and so on. Still, the design principles and the configurability of NATS made it a compelling choice for a recent project I worked on. Unfortunately, the hyper-flexibility of NATS also makes it harder to implement correctly when you have little experience with it, and so if anyone else is looking to get started with NATS then I hope this helps to avoid some pitfalls. ...

June 23, 2024

Check Out My Portfolio

A “portfolio” hasn’t been necessary nor requested for most of my career, but it feels like more and more I’m seeing places that prioritize candidates with a visible, public portfolio of work or ask explicitly for snippets of recent production code to demonstrate recent professional output. I put a lot of my time and effort into whatever job I’m performing, and so usually I don’t have a lot of work that ends up publicly visible. And since most of my work is on backend systems, I can’t even usually point to a web page or something to say “I did that”. Many times you have to sign up or otherwise interact with a service in significant ways to see the impact of my work, so it’s also not necessarily something you could experience in a short period of time. ...

June 18, 2024

Understanding True Microservices

When people say “microservices” I feel like they imagine a fleet of VMs or container pods running a bunch of small and “compartmentalized” applications that communicate with each other in vast and complex manners. But honestly, that’s not what microservices is supposed to be about. Companies like Netflix certainly popularized the concept of creating the smallest possible version of an application so that you have hundreds of unique services that all talk to each other in this manner. But that’s not the core concept behind microservices. A microservices architecture, or what I’ll call MSA for brevity, can be present even in a monolithic application. It’s antithesis, which I’ll reference as well, is the “single service architecture”, or SSA for brevity. In the context of this post, MSA good and SSA bad. ...

October 18, 2021

My Backer Journey: A Kickstarter Tale

I’ve recently been reflecting on the many investments I’ve made through Kickstarter over the last decade. I backed my first campaign shortly after Kickstarter had turned 1. At the time I was primarily interested in giving video game developers that had worked on previous games a chance to make sequels and spiritual successors. Since then I’ve branched out to all manner of projects, though typically still within the realm of video games or physical products. I thought it would be nice to go over my own personal journey as what Kickstarter is labeling a “Super Backer”, which kind of feels like a backhanded compliment. ...

September 24, 2021

Docker and Kubernetes

It’s possible to now have Docker Desktop run a single-node Kubernetes cluster, which is wonderful for anyone that needs to emulate the Kubernetes environment for their development purposes. After all, if you’re building an application that will be deployed via Kubernetes, it is helpful to have your development environment mirror your production environment when testing certain features. However, it’s not all sunshine and roses… First, Docker Compose I am a huge fan of Docker Compose. I advocate its use whole-heartedly for local development. My career has primarily been backend development, meaning that I have to deal with at least the application and a database, sometimes a caching service. And that’s just the baseline. There are times when I’ve also needed to run elasticsearch, Kafka, and others. ...

March 2, 2020