I have been using Coding agents a bunch, particularly since Opus 4.5 and GPT 5.2 came out.
I have a long post about my general LLM coding experiences coming out soon. This is a quick tip I have been recently using.
One of the UX affordances I miss the most about the agent iteration cycle is not being able to quickly offer in-line suggestions to the code changes proposed by the LLM, while…
I’ve written a long tutorial exploring the user of Racket’s Concurrent ML (CML) inspired concurrency paradigm to write an API wrapping git-cat-file. It is meant to serve as an introduction to kill-safety and CML concurrency, while assuming some existing knowledge of Racket or other Schemes. I found that there weren’t a lot of resources beyond the reference documentation that…
I currently work at Skydio.
I write about my travels at Life in High Places.
My CV.
All opinions and thoughts on this website are my own and do not represent the views of my employer or anyone else.
Colophon This blog is powered by Hugo and the Archie theme.
Chris Krycho, a person I really respect, is learning Racket to build programming languages. Racket is generally slotted as a language to build languages. The popular books focus on Racket innovations related to constructing Domain Specific Languages. This include hygienic macros, the Racket loading and evaluation phases and the module system. While it is uniquely suited for creating languages 1,…
Gossip Glomers is a series of distributed systems programming challenges from Fly.io. It uses Maelstrom, a platform for describing test workloads that can run your programs as distributed systems nodes. Maelstrom workloads can provide inputs to these nodes (as if they are arriving over a network), inject delays and partitions and then check that your system still satisfies the invariants of each…
Here is a performance footgun I encountered at work in a more complicated form.
Python allows iterating over a file object. However, this iteration is defined as yielding lines, regardless of if the file is a text or binary file. In fact IOBase specifically says:
IOBase (and its subclasses) supports the iterator protocol, meaning that an IOBase object can be iterated over yielding the…
I often tack on notify-send at the end of a long running command to get a desktop notification when the command is done.
./long-running-build-command; notify-send 'Build done' notify-send uses the Desktop Notification spec that relies on DBus to propagate a request to show a notification. This is a widely supported standard in the Linux ecosystem powering all notifications, regardless of which…
I recently bought a Nuphy Air75 and ran into a weird issue on Linux.
The Air75 can be connected to the computer in 3 different ways:
Wired Bluetooth USB Wireless Receiver (comes with the keyboard) When I connected via wired or Bluetooth, the Fn key would correctly work. That is, F12 would map to F12 and Fn + F12 would increase the volume. 1 However, when I used the wireless receiver, the…
I’ve been playing with Racket for the past few weeks.
While I haven’t explored all the language-oriented-programming aspects yet, I’ve created a simple program to decrypt files encrypted with Synology Cloudsync. It is available as synology-decrypt (The Racket version).
As I’ve written before, I use Backblaze to backup files to the cloud. My Synology NAS encrypts…
I’ve been getting back into C++ at Skydio, and I’ve twice lost several hours to debugging weird code behavior because of an RAII footgun in the language. A similar footgun is present in Rust, and I’ve been bitten by that too, so I figured I’d write down both.
RAII classes are often used to keep resources alive or hold locks for a given scope. There observable…
Notes on using a Digital Ocean Droplet to copy Google Takeout data to Backblaze B2, for my own reference and in case they are useful to others. This uses rclone to perform the sync.
Google Takeout allows exporting all your Google data, but requires a modern browser, with GUI and JS. The total data can be huge (~36GB for my last export), so downloading it to my local machine and uploading it…
I read a fair amount of books, but I’ve never kept track of them except in my brain because the friction to track books is just too high. Recently, I wondered how easy it would be if I could just use my phone to scan the barcode on the back of the book, and that would automagically insert the book into a list.
The theory Each book is identified by a ISBN, a 13-digit number that is…
Hammerspoon is a macOS automation framework that allows you to hook into all sort of OS interfaces using Lua scripts. People use it for all sorts of automations, with key remappings and quick window switchers being the most common applications. There are some crazier applications like using voice to control scroll bars! I’m going to describe some ways I use it that are uncommon.
Reducing…
I have credit freezes put on my credit records with all 3 US credit reporting companies. These are supposed to help a little with identity theft, but the UI surrounding them makes for a very bad experience.
The way it works, one places a freeze at each company, but then one is expected to know in advance when a credit check is going to happen and temporarily lift the freeze! This almost always…
In late August 2020 I read The Dream Machine and it is my favorite book of 2020. It is an incredible overview of a sliver of computer pioneers in the 1960s-1980s and how one man was instrumental in tying all their narratives together. One of the strands the book follows is the group at PARC (and other places) that firmly believed in the notion of interactive computing. Over the last year,…
There is this common refrain about how companies have data about you and could do bad things. Yet governments often pass surveillance laws that are much worse, and by definition, you can’t “vote with your wallet” for them. So in a world where I’m already giving data to third parties, it is useful to ask what I get in return.
If we are talking about corporations, we get…
Hillel Wayne has a great newsletter, and one recent post had this observation:
The abstract concept here is knowledge or skills that
You are unlikely to discover on your own, neither through practice and reflection nor by observing others apply it. Once somebody tells you about it, you can easily learn and apply it. Once you can use it, it immediately gives you significant benefits,…
This is a contribution to the Rust 2021 Roadmap Blogs request.
As a developer using Rust in a proprietary, polyglot code base, I want Rust to improve non-Cargo builds My story comes from spending the better part of a year migrating a roughly 700,000 line code base (and several hundred upstream dependencies) to build using Bazel circa 2019. As Rust becomes more popular, a large chunk of…
Bazel persistent workers are a cool feature that allow Bazel to start up “compiler” instances that can accept multiple build requests. This brings benefits like saving startup time, saving the time to parse a standard library or share some cache across compiler invocations. This allows slight speedups in rebuilds, which can be valuable in speeding up the developer iteration…
Introduction This is another blog post related to the Build Systems à la Carte paper. See Using type-classes to model the expressivity of build systems for the first one.
The paper proposes splitting build systems into two components:
Rebuilders decide when to rebuild a particular key (file). Schedulers decide how to rebuild multiple keys - handling dependencies while maintaining…