RSSAmplifier

Blog

maxdeviant.com

maxdeviant.comRSS feed ↗92 posts

Latest posts

2025 in Review

This year has been a hard one. This is largely owed to the current political climate in the US. There is so much I could say about this, but—in short—it has been soul-sucking to watch as some of the dumbest people in the history of this nation flagrantly violate the rule of law and take so much pleasure in inflicting pain and suffering on others. It brings me great pain to think that many of the…

Head in the Zed Cloud

For the past five months I've been leading the efforts to rebuild Zed 's cloud infrastructure. Our current backend—known as Collab—has been chugging along since basically the beginning of the company. We use Collab every day to work together on Zed in Zed. However, as Zed continues to grow and attracts more users, we knew that we needed a full reboot of our backend infrastructure to set…

31

I turned 31 today. Last night Heather and I went to our favorite Thai restarurant for dinner to celebrate. We shared some chicken satay to start, and I ordered the khao soi and a Thai iced coffee. The khao soi already comes spicy, but I wanted to take it up a notch. Our waitress told me that it comes at a 3 on a 1-5 spice scale. I opted to go for a 4 this time around, which was a decent bit of…

Dog Days

A little over a week ago I saw a tweet 1 from Bryan Cantrill announcing that Oxide and Friends would be on a "dog days' hiatus" until August 4th. Since seeing that tweet, my echolalia has had me muttering the phrase "dog days" to myself. Now, I've heard of "dog days" before—most often as the "dog days of summer"—but I was not familiar with the origin of the term. I decided to look it up…

The ComputerCraft Iceberg

My friend Steffen recently turned me on to the ComputerCraft mod for Minecraft. For the uninitiated—a group I myself was a member of until a mere 24 hours ago—ComputerCraft is a mod that adds programmable computers and turtles to the game. "Turtles, you say? What, like these fellas ?" Cute as they may be, the sea variety of turtles are not the ones I'm excited to talk about today. Let me…

Beautiful Death

Last Friday the Spotify algorithm suggested that I listen to the new Beautiful Death album, No Grave Can Hold Me . My listening records indicate that I've listened to Beautiful Death a few times back in 2022 and 2023, but they're not an artist that is in my regular listening rotation. I decided to give the album a listen, unaware of the journey I was about to embark upon. After listening…

2024 in Review

In a rare turn of events, I'm writing this year-in-review in advance of the last few hours of the year. Normally I end up spending New Year's Eve writing it as I rush to publish by midnight. As I look back on this year and try to remember what all transpired—a process that is hampered by a frustrating lack of notekeeping on my part—I'm left feeling like there wasn't all that…

RIP Cohost (2022–2024)

Cohost recently announced that the service will be shutting down at the end of this year. In 2022 I wrote about Cohost back when they first launched. At the time I had not yet received a posting invite link, so my thoughts about it were mostly speculative. It did give me Tumblr vibes and I thought that maybe, just maybe, it could recapture some of the magic I remember from those days. Once I was…

Appaloosa

On Being Ready

On Being Ready This piece from Isabel really speaks to my present state. In it, she approaches the question that both she and I ask ourselves: "am I ready?" By interrogating this question each time it comes up, I've realized that this elusive, rather mysterious notion of "being ready" might just be the most well-disguised psychological block of all time. It's this idea that one day, you…

Bad Fruit

Bad Fruit This article from Ian comes at an apt time for me. For as long as I can remember I've had an expansive backlog of pretty much everything just sitting there, waiting. I think everyone, but especially artists, tend to collect a lot of stuff. There's so much art in the world, it's easy to see something you like, draw some connecting threads to similar things, and add them to…

Good Will Hunting

The dialogue in this film is stellar, so much so that I feel woefully inadequate while trying to write down my thoughts about it.

Crouching Tiger, Hidden Dragon

I've seen bits and pieces of this movie over my life, but had yet to sit down and watch the entire thing. I remember when I was a kid my parents had some Chinese friends over to watch it. I was watching along with them, captivated by the action sequences. But I had done something to one of my siblings earlier that day that resulted in my being banished to the 阳台 and was unable to finish the…

30

On my 25th birthday my dad told me "you're now closer to 30 than you are to 20." While said in jest, those words have hung heavy around my head for the past five years. During this later half of my twenties, I've felt like my thirtieth birthday has been approaching at an ever-accelerating pace. And much like an object approaching the event horizon of a black hole, try as I might to…

A 1:1 Site Rebuild

Since early 2019 I've been using Zola to power my website. As detailed in "New Year, New Site" , the primary impetus for picking Zola was to allow me to focus less on fiddling with my site and more on writing. In that regard, the choice was quite successful. Once I got it set up the way I wanted, it has largely faded into the background and given me room to focus on writing and publishing…

Take a Walk

For the past few days I've been taking daily walks around my neighborhood. I already take my dog, Arya, out for a walk twice a day. However, these walks are more utilitarian in nature. Having to wrangle a rambunctious terrier mix does not lend itself to a peaceful stroll. When I am walking by myself it's different. I can go at my own pace, stopping to smell the roses, both figuratively…

Zed Docs: Powered by Cloudflare Workers

The Zed docs have been in need of some infrastructural love for a while. The existing setup for the docs entailed manually replicating changes from the source files—stored in the Zed repo—to a separate repo for zed.dev . As you might imagine, this setup came with a number of issues: Having to manually replicate the docs was annoying, error-prone, and resulted in docs being frequently outdated…

Transactional Appointment Scheduling

I woke up early this morning to go to my semi-annual dentist appointment. Midway through my shower, I realized that I didn't recall receiving any form of automated confirmation about my appointment. Sure enough, when I checked my phone the only confirmation email I had in my inbox was for my previous appointment. I started to wonder if maybe I was mistaken about my appointment date. Had I…

redux-persist-transform-encrypt (2016–2024)

On February 2, 2024, I declared bankruptcy on an open-source project of mine: redux-persist-transform-encrypt . This is a postmortem of sorts for that project. I'll detail how it came to be, developments that happened over the years, and the events that led to my eventual decision to shut it down. Origins Back in 2016 I was spending my days at work rebuilding our existing AngularJS frontend…

Happy Birthday

Today is your birthday. I sent you a text, wishing you the best on this special day. I hope you're doing well. I can see in our message history that the last time we talked was four years ago, on your 26th birthday. You're turning 30 today. I thought it important to reach out. After all, you only turn 30 once. You never replied. To be honest, I don't blame you. If I was in your…

AI Continues to Impress

I make no secret of being a bit of an AI skeptic, however, I will give credit where it's due. Today I've had two AI experiences that left me feeling impressed. Both of these involved leveraging the AI assistant built into Zed . Earlier today I was writing some documentation in the Zed codebase. I had two structs with the same fields: an internal settings struct and a separate struct for…

Goals for 2024

In the past I've typically bundled up my goals or resolutions for the new year along with my year-in-review post. This year I wanted to try separating them. While this was partly due to my year-in-review coming together at the last minute, it also occurred to me that reviewing and planning are rather distinct operations. Reviewing requires looking at the past, but planning looks the opposite…

2023 in Review

I haven't written a year-in-review since 2019 . I'm sure it's no coincidence that this was the last one before COVID-19 reared its ugly head and threw things into disarray. I find that it can be hard to write these when everything since March 2020 bleeds together for me, but perhaps that is all the more reason that I should be writing them. So in hopes of a return to form, here is…

Joining Zed

Today is my first (official) day at Zed Industries . At Zed Industries we're building Zed : a high-performance and collaborative code editor for you and your team. For the past twelve weeks I've been consulting at Zed Industries, assisting with the Herculean effort of rewriting Zed on top of GPUI2, the new and improved version of our UI framework. When I first joined the project the…

Crane: Week One

Today marks one week since I started working on my programming language, Crane. An Introduction Crane is a language for writing robust and elegant software that will endure over time. It's statically typed, compiles to native code with an (eventual) garbage collector 1 , and comes with the features you'd expect of a modern language, like sum types and no nulls. Crane currently supports…

The Life You Knew Is Dead

Earlier this week I found myself scouring my house for the pen to my Wacom table. I never did find it, but what I did find was a box of keepsakes from my adolescence. In this box was an assortment of things: the passbook for my first bank account with the Bank of China, some photos of me with my friends and classmates, letters for my future self given to me by my closest friend when I left China,…

Alphabetization Soup

Something I've seen come up—typically in code review—in the past year is the alphabetization of different constructs within source code. While alphabetization can be used to provide consistency within a codebase, over-application of it has the potential to actually make code worse . Why alphabetize? Let me preface this with the caveat that alphabetizing constructs in your code should be the…

Hello, 2023

Over the past few years I've done a terrible job of doing year-in-reviews and setting goals for the new year. This is me trying to do better. Some goals for 2023: Write Rust, and a lot of it Distance myself from platforms I don't control Connect with others more intentionally Do better at planning and cooking meals Find a form of exercise that I don't hate

Devlog: Today I Did

We use Threads 1 pretty heavily at WorkOS. One of the things we use it for is to run async standups. I found myself exerting more effort than I would have liked compiling my standup updates, specifically around wrangling the URLs to PRs and Linear issues that I had worked on that day. This process involved massive amounts of drudgery in the form of clicking through various PRs on GitHub, copying…

The Sack of Twitter (2022)

Greetings, travelers. It's been almost a full year since I've written one of these. In case you've forgotten, this is Errata Exist , a newsletter containing my thoughts on software development, self improvement, and anything else that catches my fancy. Coincidentally, the weather is in about the same state as when I wrote the previous issue of this newsletter: The weather has been…

Two Years at WorkOS

Today is my two-year anniversary at WorkOS. I missed writing down my thoughts on my first anniversary, so it's time to turn back the clock a ways and explain how I ended up here. In Search of Single Sign-On... Back in early 2020 I was working at Gravic. At the time, we were trying to land some site deals with universities, many of which were contingent on them being able to sign into our…

Is Forgetting the Human Experience?

The things I want to remember are rarely so apparent in the moment. It isn't until later, sometimes decades later, that I realize the importance of the small things that I want to hold on to forever. For as long as I can remember my mother has been intent on making sure we get family photos whenever we get together as a family. I'll admit that for a while I found this annoying; why does…

28

I turn 28 tomorrow. It feels weird to say that. Something I've noticed over the past year is just how old I feel. I'll jerk a part of my body too quickly and suddenly it will be sore for the rest of the day (or longer, if I'm unlucky). My health in general has been weighing on my mind as of late. My wife and I purchased a stationary bike recently and I've taken to riding that.…

Living Without Internet

There was a time where I lived without internet. That's a lie. I wasn't completely without internet, but the internet was something that I only had access to when sitting at my desk on the computer. When I was hanging out with my friends or out around town I was completely detached from it. Perhaps it was the naiveté of never having tasted unfettered access to the internet, but these…

Blurred Platforms

In October 2013 Snapchat first launched stories. As a Snapchat user at the time, I took stories at their face value: a new feature on a platform I used, and nothing more. What I didn't realize at the time was just how much I would come to loathe "stories" over the following years. Before long, it seemed like every other platform was launching their own take on stories. Instagram and Facebook…

Static Typing Has Ruined Me

There was a time in my life where I found static types burdensome. The curricula for the programming classes in my senior year of high school and freshman year of college used Java as the language du jour. Java, being statically typed and (at the time) lacking in pretty much any semblance of type inference, required type annotations everywhere . There's only so many type annotations you can…

Returning to Games

Returning to a video game after a hiatus is often a jarring experience. Sadly, I am all too familiar with the experience of reinstalling a game in the hopes of rekindling a feeling it once evoked, only to immediately become overwhelmed after logging in. Path of Exile I pretty much exclusively play Path of Exile during leagues. However, sometimes I'll log into old characters from past leagues…

WorkOS Hack Week II

This past week was the second Hack Week at WorkOS. I wanted to take some time to share what I got up to over the course of the week. What is Hack Week? Hack Week is an event we run somewhat regularly at WorkOS. We take a week where we set aside our usual work and work on other WorkOS-adjacent projects. For this Hack Week I paired up with Sheldon from our Developer Success team to build out the…

Cohost

Cohost is bringing back memories of Tumblr before it declined into a barren wasteland . I went ahead and created a profile over there. Despite my recent disillusionment towards platforms in general, I still want to believe that maybe this one will be different. The principles behind Cohost are certainly ones that I can get behind: no ads, no tracking. forever. cohost will never sell your data,…

Reviving Drop Seven and a Half Years Later

Back in December 2014 I spent a lot of time hanging out in IRC. While spending time in various channels, I found myself wanting to share images with other users. Unlike Discord—which came on the scene the following year—IRC did not have the same support for easily sharing images inline; all images needed to be shared as links to somewhere on the internet. This posed a problem for any image that…

Life Without Limits

Today I found myself doing some load testing on our API service at work. While the Artillery was shelling the service with traffic, I began thinking about the impact this barrage of requests might have on my home network's egress traffic. This got me thinking about how my digital life has far too many limits. I've written before about my desire for a means to archive content from across…

Dearth

There's been a dearth of activity here for a while now. This really isn't anything all too unusual; there have been plenty of periods in my site's history without any updates. However, this time I more deeply feel the empty space. A gaping void cries out to be filled. Part of the reason for this dearth is my being in consumer mode for the past while. I feel like a bear in the course…

Church Encoding and Legos

Greeting travelers. The weather has been ever-so-dreary here this week. This weekend, in particular, has really been exuding gloomy November vibes. SAD season is truly here. This has left me with plenty of time to sit inside, drink tea, hack on various things, and ponder some of the finer things in life (like Church encoding). Advent of Code Advent of Code is less than a month away, so this week I…

Programs as Lego Structures

As a child, I was very much a Lego enthusiast. My brother and I had these massive tubs filled with Lego bricks and minifigs. Much to our mother's dismay, we would dump everything out on the floor of our bedroom and spread the pieces out. After all, it's much easier to find that exact piece you're hunting for with everything in sight. The alternative, of course, being rummaging…

Hello Again

Hello again, travelers. It has been too long since I last I wrote to you. A year and a day without any missives. I have been keeping busy over the past year, mostly with work. I just recently celebrated my one year anniversary at WorkOS, despite it feeling like I only joined the company very recently. Outside of work, I've recently been hacking on two new side projects: Peregrine is a web…

Formatting Numbers: Revisited

A few months ago I asked "how hard is it to format a number?" . The solution I came up with at the time was to use some light JavaScript to format the numbers using Number.prototype.toLocaleString() . Of course, this was not good enough for me. Ideally, I would like to use a Tera filter to format the numbers at site generation time: {% set word_count = 9001 %} {{ word_count | num_format }} <!--…

Another Nix Success Story

Yesterday I found myself in a position where I needed to know the dependency graph of tables within a Postgres database. I figured that someone else had written a program to solve this problem, and some quick Google-fu revealed that I was correct. I happened upon this post that contained a Python script that generated the dependency graph I was looking for and dumped it to Graphviz DOT .…

React Associated Components

When building React components I often find myself in situations where there are groups of components that regularly appear together. For example, consider this Card component that can be used with header, body, and footer components: import React from 'react' ; import { Card } from '.&#x2F;Card' ; import { CardBody } from '.&#x2F;CardBody' ; import { CardFooter } from '.&#x2F;CardFooter' ; import…

How Hard Is It to Format a Number?

The answer, as it would appear, is "very". Tonight I spun up a new stats page for my site. Since I already have word counts for all of the writing I post here, I wanted to sum them up to know how many words I&#x27;ve written in total. Some quick and dirty hacking in Tera produced the numbers I needed, which then presented a problem: how do I format a number with comma separators? My first instinct…

Tumblr: The Barren Wasteland

When I think back to the glory days of Tumblr I can&#x27;t help but feel a profound sense of loss over what has become of it. The site I once loved and built a home on is now nothing more than a barren wasteland. My most heavy usage of Tumblr was during my time in college, from 2012-2016. Scrolling back through my archive, I&#x27;m greeted with a smattering of reblogs of all manner of content.…