Skip to content

Adam Chalmers

EuroRust 2024 talk: Code as contract as code

A few months ago I was invited to EuroRust to talk about API servers and clients. When I worked at Cloudflare, I maintained a few API servers and the official Cloudflare Rust API client. There was a lot of toil and stress involved whenever the API servers changed: schemae had to be updated, and then so did clients.

When I joined Zoo I was very impressed to find that our CEO Jess Frazelle had already set up automatic schema generation from the API servers, and then automatic client generation from those schemae (in 4 different languages)! This made managing our API servers at Zoo MUCH easier than it was at Cloudflare.

So I wrote this conference talk aimed at my past self -- it's basically a guide on how to simplify your API operations.

RustConf 2024 talk: Building a programming language for CAD

Recently I gave my first-ever in-person conference presentation! I was invited to RustConf 2024 where I talked about why we're building KCL (KittyCAD language), a programming language for 3D design, at Zoo.dev.

The talk has three parts: background about computer-aided design (CAD) software and mechanical engineering, then why we built a programming language, then what I learned from the process and the gaps in existing compilers 101 education.

At some point I hope to expand this into a blog post, but until then you can just watch the video.

My Developer Voices interview

Kris Jenkins of Developer Voices spoke to me on his podcast! We talked about KittyCAD and its language, which I'm building for my work at Zoo.

You can listen to it wherever you get your podcasts, or watch it on YouTube. Thanks so much for having me on your podcast, Kris! Developer Voices has become my favourite tech podcast and I really love the range of people he talks to. Kris goes deep and is scared of getting into the technical nitty-gritty, unlike some other tech podcasts I've tried. I strongly recommend listening to his archive!

My Kitty terminal config

I've been using Kitty terminal for five years now, and I'm really happy with it. Recently I got curious about how to make it look prettier (inspired by all the beautiful terminals I see in some programmer subreddits). So, keep reading for a little explanation of my Kitty config file.

I also made a video showing how I configure a totally fresh Kitty terminal from nothing.

But if you prefer text, keep reading.

Video: My VM and its time-travelling debugger

My work at Zoo has recently focused on KCL, our CAD programming language. Currently our modeling app uses a tree-walk interpreter, but for various reasons we've been exploring a proper compiler instead. I've been developing the compiler, called Grackle. It compiles to a bytecode VM (i.e. an abstract machine), called the KCVM. I gave a 10-minute presentation about KCVM and its time-travelling debugger at a tech talk in Austin recently. Here's the recording!

Thanks very much to Jam.dev for hosting the event!

Free users are incredible

Cloudflare has a really generous free tier, and it gets a lot of free users. I often see comments on Hacker News saying "Cloudflare must be doing something shady, so many people use it for free, and if you're not the customer, then you're the product". This is mostly wrong -- Cloudflare gets a lot of value from its free users, in normal, not-shady ways. Here's why it's helpful to have a ton of free users.

Video: Error handling

The fourth Rust Club video is up! Every Monday I teach Rust to my coworkers at zoo.dev on video chat. We record the call and put it on YouTube so you can learn too. This week's video is about different ways to handle errors in Rust -- when should you panic and when should you return a Result::Err? And what type should that Result::Err be?

Apologies for the low video quality, starting from next episode we used a better-quality recording system.

Video: Analyzing performance

KittyCAD's third Rust Club video is up! We analyze how fast the demo parser from my [first video][/winnow-basics] is, and find ways to speed it up. We use benchmarks to measure its speed, and flamegraphs to visualize its runtime, to find places we can improve.

Apologies for the low video quality, I didn't know we'd be releasing this to YouTube, so it's just using Zoom's "record screen" feature. Starting from episode 5 we used a better-quality recording system.