Latest Posts (20 found)
Justin Duke 1 weeks ago

Two hundred decisions

This week, after a little under two years of having adopted the practice, Buttondown has minted its 200th decision log. This is a practice very similar to RFCs or ADRs, but I prefer the term decision because it's both A, used for a variety of non-engineering purposes, and B, sounds a little less lame. The practice itself is extremely simple and there is no catch. It goes something like the following: Our decisions range from the monumental-yet-concise: to the trivial-but-nuanced: It is objectively not a free lunch in that it does take time for you to sit down and explain concisely in prose why you are doing a thing and what the other options are. It was most of all the null hypothesis of simply not acting. But a cost which serves as a forcing function to write, I mostly think of as a reward at this point. The world is complex: with every patch of fog that lifts, I find four more in the distance. 1 Only very recently have I started to understand knowledge as a perception of fog rather than a dispelling of it. And so I am very careful not to prescribe these days, unless I am so overwhelmingly confident in the universality of a given prescription. This is one such thing: keep a decision log. (See also Oxide's public RFD system .) Decisions are any non-trivial choice made for a specific reason. The context behind a decision is very hard to retrieve after the fact and grows in difficulty over time. The ability to revisit this context and update, invalidate, or buttress it is extremely useful in a variety of reasons.

0 views
Justin Duke 1 months ago

Indeterminate / Squash

The hardest part of gardening is not correctly timing the seedling transfer, or deciding when a plant is a goner versus when it just needs one more week. The hardest part of gardening, at least for me, is resisting the urge to make cheap and facile metaphors. One example comes to mind from this weekend, when I was trellising a handful of truly overgrown cherry tomato plants. Cherry tomatoes are indeterminate, which means there's no size at which they stop growing and start to ripen. They're like mint, secretly — they will happily grow and grow and grow forever. The only thing stopping them, barring human intervention, is the comic rapidity with which they'll die: from blight, from dehydration, from sheer overextension — almost as quickly as they prospered, if not more so. There are a lot of ways to curtail this, and one of the things we do is trellis. We've got this very fun, K'nex-esque trellis system that acts as a kind of three-dimensional grid. The tricky bit is that you can't really set it up before you've set up the tomato; you build the trellis around the plant, carefully, using it as an opportunity to find which branches are in danger of touching the ground. It's a satisfying exercise in its own right. Often, when Haley and I tear down the tomato crop for the year, we'll sit for a minute and just look at our lovely little cityscape of green rods and connectors before we tear those down too and throw them in the bucket. Because as cool as they look, there's no real reason to keep them around in an empty bed. And of course structure is necessary but insufficient. So we did the things one does when tomatoes are overgrown. First, Lucy and I started with the two existential threats. Anything in danger of stooping down to touch the bare ground had to be either scaffolded immediately or mercifully pruned. Then came the work of trying to establish a sight line to the soil, which is a useful proxy for two things: airflow and sunlight. The plants had a couple of little yellow bits here and there, but no blight — nothing too serious. From there we moved on to the more qualitative work, and in doing so started to discover just how bountiful these couple of plants had been. I tried not to wince at every little tug Lucy gave at the root. Slowly and surely, the plants started to look less grisly, less insanely overgrown, until the garden resembled a garden and not a jungle — something I could show my mother-in-law with pride and not fear. And finally, at the end of this week-long journey — every morning Lucy waking up with me, having a few eggs, and going outside before the humidity made the prospect unbearable — we discovered the very back of the garden, hidden and prospering all this time: a terrific squash plant, happy and beaming, its first fruit ready not to be plucked or picked but cut with one ginger motion. For the past three days, Lucy has refused to eat anything until she gets to go look at her squash. I do not like squash, and yet it appears it has now earned a permanent place in our harvest.

0 views
Justin Duke 1 months ago

The Man from Earth

One interesting thing about films, relative to — say — writing within video games, is the demarcation of amateurishness. (A description I don't mean to carry any moral valence.) The indie revival in games owes much, much of itself to the fact that games are a medium where polish and craftsmanship and production value can actively work against the core gameplay loop. Books, on the other hand, have such a fundamentally small gap between what we'd call unpolished, messy prose and avant-garde experimentalism that it becomes hard to apply the lens of quality at all. One of the joys of my recent cinema excursions has been getting to understand some of these mechanics — even when the films themselves aren't particularly successful. There's Vanya on 42nd Street , a film whose lack of production is literally part of the text, and which uses that fact to brilliant effect. And there's Mindwalk , a film forgotten to history, with interesting elements of its zeitgeist, that nonetheless conjures a dreamlike quality out of the graininess of its direction layered over the beauty of its landscapes. Somewhere in the middle of these sits The Man from Earth , which is probably best introduced through the lens of its screenwriter, Jerome Bixby — a quasi-famous science-fiction writer who did a lot of work on The Twilight Zone (as one might guess from the title) and the then-successful B-movie side of Hollywood; the film's executive producer is his son, and it is hard not to think of this as more of an act of Asthi Visarjan than of genuine creative commitment. This is very much a five-act play captured on camera rather than a work built for the medium. The entire action takes place in a single remote house, and unlike the aforementioned Vanya it is filled with actors you've never heard of performing, by and large, very poorly. The music is bad; the lighting is bad. 1 And yet, for a certain type of person — i.e. myself, and perhaps you as well — this will be a movie you cannot tear yourself away from, even as it grows more and more absurd. The conceit of the exercise is very simple: the central character reveals himself to be a man who is (for the sake of this essay) immortal, then he invites his colleagues — a coterie of university professors in various disciplines — to interrogate him and to challenge the veracity of his claim. That is the film, by and large: professors quizzing an immortal man on what he should or should not know and what he should or should not remember. If you think that is interesting, it may be worth watching; if you don't, turn away. As poor as every other part of the product is, the writing (not unlike the best of Bixby's Twilight Zone episodes) is arresting not for its clarity or beauty but because it forces you, however briefly, to completely eject yourself from your frame of reference. It's a really, really fun premise, delivered earnestly and intelligently. What is the difference between someone with a sufficiently encyclopedic memory and understanding of the world and someone who has actually lived it? You might think understand that this is suddenly a more relevant question than it has been. Where it becomes more entertaining but harder to recommend is in its attempts to introduce dramatic stakes. One of the characters does not believe John, and so first tries to bring in a psychology professor to commit him — or, failing that, to disprove him. The professor, it's revealed, has recently lost his wife; he pulls a gun on John, points it, and then relents. It's all a little boggling. And then a twin pair of revelations brings the whole thing to its most absurd. One: that John is Jesus Christ. Two: in the final scenes, that John is in fact the psychiatrist's father — having abandoned him long ago, owing to his policy of moving on every ten years to shift identities — a revelation after which John's son promptly dies of a heart attack. It's hard to describe such plotting as anything but insanity. And it's the point at which you begin to suspect that perhaps it isn't just a lack of budget that has made the film feel so shoddily crafted. And yet you can't look away. And I don't mean that in a train-wreck sense. There's a real nuance and depth and earnestness to the film's discussion of religion, of history, of all these things. It is not meant to shock. This is a film that has clearly been researched and considered deeply — made less as an act of entertainment than as an act of inquiry . And I have to admire those bets, and respect them. I think it's a film that many, many more people could enjoy than have. Especially right now, when the value of intelligence and experience feels increasingly slippery.

0 views
Justin Duke 1 months ago

Victory is a lossy compressor

The NBA's conference finals wrapped up this past week, and as a Heat fan and a Seattle émigré I was pleased with both results. Happy that the Cavs lost, because I still resent them for being the destination to which LeBron fled in 2014; happy that the Thunder lost, because fuck Howard Schultz. 1 For the uninitiated: Schultz, as owner, presided over the sale of the Seattle SuperSonics in 2006, which led directly to their relocation to Oklahoma City. The Thunder are, in a very real sense, the Sonics. I am not over it. Both losses were noteworthy. The Cavs were, after game three, safely assumed to be dead in the water — no NBA team has ever come back from a 3-0 deficit in the playoffs. Their head coach, JB Bickerstaff, infamously (yes, it can already be classified as infamous) claimed that from an analytics standpoint they were really up — that the underlying numbers had the series at a 2-2 coin flip they happened to be losing. The Thunder, last season's champions, were being discussed around the halfway mark as candidates for the greatest team of all time: whether they could break the all-time regular-season wins record, or, more humbly, be the team that finally snapped the league's eight-season no-repeat-champion streak. Those discussions promptly ended in December, when — in what turned out to be foreshadowing — the Spurs beat them three times in ten days. Even gods can bleed. Now the conversation has gone the other direction entirely: whether they should blow up their core three and pursue a win-now trade for Giannis, or some similarly older-but-better superstar. All of this is, in my opinion, kind of silly, by all parties involved. Bickerstaff should not have tried to invoke the spirit of Pythagorean victories to motivate his team or deflect criticism about their dire straits. And yet — it's not like he was completely incorrect. In much the same way that, if you know with absolute certainty a coin is rigged to land heads 70% of the time, you shouldn't start betting tails just because tails came up the last three times. 2 Now, if it comes up tails ten times in a row, maybe that's a sign to reevaluate your threshold for "absolute certainty." And the discourse around the Thunder's prospects glosses over the fact that the second-best player on their team — and, during some stretches, arguably the fourth-best player on their team — were both out for the entire series. Which is a boring but plausible explanation for why they lost. (It should be noted that they lost in seven, and scored more total points than the Spurs across the span.) But the narrative of Wemby, the seven-foot-seven godkiller, has taken root. Let me be clear: the Knicks and the Spurs did win, and no number of hypothetical simulations changes or devalues that fact. But as soon as we turn the page onto next season, the nuances that led up to the result will grow hazier and dimmer and more nebulous, until recovering them requires archaeology rather than recall. The NBA is a league where we talk about rings, not net rating. Which is to say: victory, whether over the course of a single game or an entire season, is not a lagging metric assembled from the true granules of play-by-play data. It is the thing itself — the reified artifact. The banner, the line in the record book, the ring. And there is nothing wrong with this, in the same way that it is no crime that both PNGs and JPEGs exist. Victory is a lossy compressor: it takes the full, lossless record of a season and squeezes it down into something small and portable, discarding almost all of the granular detail in order to do so. It is enormously useful to be able to optimize for file size — for what travels, for what gets remembered. But it is not the only use. All of this is to say: I bring it up not just because I'm waiting for Zach Lowe to publish his Tuesday episode previewing the Knicks-Spurs series, but because in America sports are metonymous with many things, and one of those things is business. And I have found it far more revealing, in trying to understand a company that has — capital M, capital I — Made It, not to read their most recent batch of press releases, but to crank up the Wayback Machine and go look at the launches they shipped in 2018 that failed. The press release is the JPEG. The failures are the bits that got thrown away. If you want to understand how something actually won, you don't get to recall it — you have to decompress it, and the only way to recover what victory discarded is to dig.

0 views
Justin Duke 1 months ago

Back to Overcast

In what is certainly the least consequential update in this blog's history: I have boomeranged back from Apple Podcasts to Overcast. None of my gripes with Overcast have been fixed, or even assuaged. But paper cuts are less annoying than other forms of pain. If I really wanted to, I could sit down for thirty minutes and assemble a meaningful list of everything that bothers me about the first-party app — but instead I'll present only the two that are actually load-bearing. The first, and the trivial one: there is no easy way to search for episodes within a given podcast feed. I'm not talking about clever, fancy, transcription-based search — just searching by title. Apple Podcasts' search functionality has many oddities, but this one is bizarre, and it is crucial for me whenever I'm trying to dredge up an old episode. This probably reveals something idiosyncratic about my listening habits: there are very few podcasts I subscribe to — exactly one of them technical — that aren't evergreen. The second point is less about features and more about existential positioning. Compare the home screen for Apple Podcasts to the home screen for Overcast. One of these apps is designed with the primary goal of letting me listen to the podcasts to which I've subscribed. The other is designed with the primary goal of getting me to listen to a podcast to which I have not. I could make grand sweeping gestures about how this reflects various pricing models and success criteria — and maybe I'll do that in some future essay — but I actually don't care about the bigger picture. My point is narrower: Apple Podcasts pursues goals that result in a worse experience for me. And so I'm not back on Overcast out of any solidarity for a fellow independent developer, nor because of some vague, abstract sense of it being capital-B Better. I'm back on Overcast because I like it.

0 views
Justin Duke 1 months ago

Let Them All Talk

This was a film that I found, in some order, slight, confounding, sweet, clever, and — above all of these things — reaching but not yet grasping. It is interesting to me how little of a cultural footprint it has, given that it's a Soderbergh film starring, amongst other luminaries, Meryl Streep, Candice Bergen, and Lucas Hedges. Soderbergh appears to have exactly two speeds: perfectly crafted and honed, and hodgepodge. This film is in the latter camp. It is tempting, as other reviewers have done, to call it lighthearted — but it's not so much lighthearted as it is lightfooted . Watching each scene bleed into the next, with confounding but naturalistic plot developments unfolding in a quasi–Dogme 95 sense, contributes above all else to the feeling that you are watching a dream. My dreams are wistful and incoherent, and I wake from them happy to be back in the real world, yet already nostalgic for a place I can no longer revisit.

0 views
Justin Duke 1 months ago

Self-hosting our CI, three months later

A couple of folks have written in over the past month asking how my experiments in self-hosting GitHub Actions runners have held up. And three months seems like a reasonable amount of time to post a follow-up. I'll also treat this as a bit of a first draft for a longer engineering post on the Buttondown blog itself — so please write in if there's something you wish I'd covered here. The short version: the experiment graduated into the plan. That March post ended on a half-joking aside — "maybe we're just going to self-host the entire CI suite" — and, reader, we did. When I wrote that post back in March, I called out two things that were true at the time: Neither is quite true anymore, and — as you might expect — the way each stopped being true turns out to be somewhat commensal. Around a month or so ago, on a lark and the back of a Blacksmith incident, I decided to try running the entirety of CI on Pythia just to see what would happen. As is often the case, experiments are really just preludes to decisions; what seemed fairly promising — a 30% slowdown in performance on a quote-unquote hot server, but saving a hundred or so bucks a month in exchange — felt good enough to commit to. To put some numbers on it: that January Blacksmith bill was $300, and by the time I got around to this it had crept up toward $400 as the team merged more. The backend suite was the single fattest line item — around $100/month on its own. Moving it over was the last domino; our Blacksmith bill now rounds to zero. The 30% is less scary than it sounds in the body of an actual workday. The backend suite that used to go green in around six minutes on Blacksmith's 8-CPU runner now lands closer to eight. You notice it; you do not particularly care. The flip side is that it's very easy to unintentionally starve yourself. Just like in the initial post, we have five GitHub Actions runners running in parallel on a single box. This works well for our smaller jobs, which are IO-bound and don't really use multi-threading in any real capacity. But we do still have very big jobs, and poor Pythia suffers the consequences when we try to run three or so backend test jobs simultaneously. GitHub Actions helpfully provides a parameter, but it's a bit finicky to get working in exactly the right way, because it applies at an overall workflow level and not a job level. To enforce the concurrency I actually want, I'd have to isolate the backend tests into their own workflow. All of this is a very in-the-weeds way of saying: migrating the whole gestalt of our CI onto a dinky little box in my office has resulted in tiny amounts of pain that could probably go away if I spent an afternoon thinking really hard about the problem. And then there's the objection everyone reaches for first: you've put all of your CI behind a single point of failure, and that single point of failure is a box in your office. Which is true! But that single point of failure resides in my office, which — notably — is not the same thing as residing in my head. The total number of times I have had to bike over to the office and restart the server over the past 90 days has been exactly one.[^bike] [^bike]: It would be disingenuous not to also cop to the other time this happened — except that one doesn't count, because I was already at the office. But the fact that I've been able to save the team and myself almost $400 a month — with very, very little work, and no marginal cost — has been a bit of a revelation. I highly encourage you to spend an afternoon giving it a shot yourself. We were continuing to use Blacksmith for our heaviest suite of jobs — the backend test suite. We had touched essentially nothing since setting it up; it just ran.

0 views
Justin Duke 1 months ago

May, 2026

There are two mental models about work and fatigue which, like my brief dalliance with Roshe Runs, I have loved and outgrown: The first is the fungibility of fatigue. Also known as the spoon theory , 1 To be clear, my point is with the colloquial extension of spoon theory to able-bodied people like myself, and not the chronic illness context in which it was coined. it is roughly the notion that everything we do — from the mundane (brushing one's teeth, taking a shower) to the expensive (entering flow state for four hours of incident response) — carries some vaguely quantitative measure of toil, all of it drawn from a single reservoir over the course of the day. Like a wizard spending mana to cast spells at varying levels. This model, like all models, is useful insofar as it offers some bit of truth: for everyone there is an innate drain from everything we do, even the things we don't think of as draining, and both those numbers and the size of the central reservoir vary from person to person. The second is the idea that productive work is inherently toilsome in a way that consumptive work is not — a concept often espoused by Cal Newport, for example, generally as a kind of groundwork lemma, to then advocate against consumption in favor of productive work as a form of leisure. This, too, contains some scintilla of truth: on net, work that we would describe as productive does have characteristics distinct from work that we would describe as consumptive. But the dichotomy is fake, and with enough rigor can be made contradictory. I take quite a bit of pride in my approach to consumption; when I am watching a movie or reading a book it is the only thing receiving my attention, and I am often thinking very, very hard as I do so. And conversely, many bits of ostensibly productive work are without a doubt the easiest and most energizing parts of my day — fixing a quick bug, or cooking Lucy an omelette. The synthesis of these two anti-revelations is probably obvious, and perhaps one that you arrived at years before I did: energy is not a trivial thing, whether in the growing or in the reaping. May was filled with days in which I would happily and ably spend sixteen hours straight playing with Lucy and cleaning the house, then running a dozen errands, then reviewing a handful of PRs. And then suddenly it is 9pm, and for all the Café Bustelo in the world I cannot summon the energy to open Slack for the first time in twelve hours — not out of fear or dread of what may await me, but because in that moment a dozen hashtagged channels lit up and awaiting my attention feels akin to a text from my friend Colin asking whether I'd like to go on a quick eighteen-mile jog to shake the rust off. It took time to earn the comfort of hitting on Slack. Two years ago, as I have written , a couple of days away from the business meant a week of lost growth, meant a week of angry customers. Now: I spent a week away and came back to one of my lovely support folks genially informing me that everything had gone great, and that I should take more time logged off. 2 This conversation concluded with her daring me to stay logged out of her customer support tool forever — a dare which I happily accepted. Thanks, Anita. How do you relax when the things that once brought you energy now demand it? One way involves a very happy dog with a newly-repaired ACL and what is frankly the most disgusting tennis ball I have ever seen or felt, its entire surface smothered in a slime-like residue of slobber and dirt from the herb garden, followed by a night in which I go to bed at 9pm, arms sore and grateful, brain too empty to entertain any thought of the days ahead. I hope you had a lovely May. Mine was filled with rest and unanswered push notifications, and now it is time to spend a little bit of the former on a little bit of the latter. The first is the fungibility of fatigue. Also known as the spoon theory , 1 To be clear, my point is with the colloquial extension of spoon theory to able-bodied people like myself, and not the chronic illness context in which it was coined. it is roughly the notion that everything we do — from the mundane (brushing one's teeth, taking a shower) to the expensive (entering flow state for four hours of incident response) — carries some vaguely quantitative measure of toil, all of it drawn from a single reservoir over the course of the day. Like a wizard spending mana to cast spells at varying levels. This model, like all models, is useful insofar as it offers some bit of truth: for everyone there is an innate drain from everything we do, even the things we don't think of as draining, and both those numbers and the size of the central reservoir vary from person to person. The second is the idea that productive work is inherently toilsome in a way that consumptive work is not — a concept often espoused by Cal Newport, for example, generally as a kind of groundwork lemma, to then advocate against consumption in favor of productive work as a form of leisure. This, too, contains some scintilla of truth: on net, work that we would describe as productive does have characteristics distinct from work that we would describe as consumptive. But the dichotomy is fake, and with enough rigor can be made contradictory. I take quite a bit of pride in my approach to consumption; when I am watching a movie or reading a book it is the only thing receiving my attention, and I am often thinking very, very hard as I do so. And conversely, many bits of ostensibly productive work are without a doubt the easiest and most energizing parts of my day — fixing a quick bug, or cooking Lucy an omelette.

0 views
Justin Duke 1 months ago

The Best and the Brightest

I started this book on the recommendation of Scholar's Stage , who I would describe as one of the few deeply interesting and serious conservative historians on X, the Everything App — someone whose recommendations and commentary I find uniformly interesting. His was a rapturous recommendation, albeit one prefaced with a caveat: that the book is deeply liberal, to the point of some small amount of bias. As a leftist I didn't expect to have a problem with this except for the fact that I find the truly great works of non-fiction — those of Caro, or Tony Judt — to be non-ideological : not centrist, exactly, but focused on a discourse that cannot be reduced to one side of the political axis. (As an aside, I agree with Scholar's Stage that this kind of book is the new great American novel; I have waxed and waned online and offline about Caro's work long enough to make my opinion clear in that regard. The downside of this kind of book, however, can be worse than the downside of overwrought fiction. Most recently, I failed to make it through Nixonland for reasons along these lines: partisan, scattered, poorly researched, and above all else, incoherent.) The Best and the Brightest does not share this problem. First and foremost, this is clearly a well-researched book, full of individual reportage and fact-finding. And unlike Nixonland, it has a clear and specific thesis it aims to espouse. I think you could argue that the thesis — even if it's old hat by now, thanks to works like The Fog of War — is arguably non-partisan. The author spends much of his critique on Kennedy for being a centrist rather than the liberal he campaigned on. But that is more of an ancillary concern relative to the main one: that the centrism itself, rather than being inherently problematic, was indicative of Kennedy's lack of a coherent platform or ideal besides competence and intelligence. Where I find the book wanting — and where, around a third of the way through, I discovered that it was simply not my kind of book, nor did it live up to the admittedly lofty bar of works like Postwar and The Power Broker — is in its plotting and structure. Reading Caro sometimes feels like reading Will and Ariel Durant: slow and meticulous, but rewarding patience. The Best and the Brightest gives a sense, more than anything else, of unpleasant déjà vu. You are constantly bouncing between Eisenhower and Truman and Kennedy and LBJ, from the '40s into the '50s into the '60s, as the author redoubles and re-triples his points about fatalism and poor appointments and poor choices — often under the auspices of a micro-biography of an undersecretary or erstwhile diplomat. There are two things I appreciate about this book. One is that the author really does spend the time to capably and exhaustively illustrate the people in the room, transforming the Kennedy administration from a homogenous blob of former executives for Dow Chemical into a realistic, albeit samey, cast of characters with subtly competing agendas, ideologies, and win conditions. The second is that he successfully makes the point that there was not one single thing that caused Vietnam. It was a preponderance of own goals and blunders, all stemming from a couple of poor base assumptions during the early days of the Kennedy administration — assumptions that themselves had echoes in the final, waning days of the Eisenhower administration. But the book is slow and repetitive, and given its immense size and length, does not wield its heft to full advantage. All of this is to say: I'm happy for having read it. I do feel like I learned much — not just about the preconditions of the Vietnam War, but about the true inner workings of power within the executive branch. But I have to keep this book at arm's length from the glittering gems to which it might otherwise be compared.

0 views
Justin Duke 1 months ago

ccusage

Inspired by a recent Simon Willison post , I just ran on my laptop and learned that over the past thirty days, on my sole subscription of $200 a month for Claude, I have consumed $2,422.13 worth of tokens. 1 All of this elides the fact that anchors onto something that is itself slightly lossy: we have to take as given the assumption that the unit cost of tokens through metered billing for companies like Anthropic is, in and of itself, profitable. I suspect that it is. But it's worth calling out, since the entire $2,422.13 number rests on it. Talk about getting my money's worth. It is interesting — and a little bracing — to think about the hypothetical world in which no prosumer subsidy exists, and I would have to actually pay $2,422.13 to receive the output of these tokens. First off, I think my usage patterns would change dramatically . The vast majority of these tokens are spent on Buttondown, and at that price point Anthropic would be the second-largest vendor on the Buttondown books, behind only Stripe. And this doesn't even include anyone else on the team. I would imagine that my actual spend would, in that world, dwindle to a third or a fourth of its current size — not because the marginal cost outweighs the marginal value, but because there is simply so much low-hanging fruit. I am generally in the business of saving $1,000 a month if it's easy to do so. Two other notes prompted by Simon's essay. One: LLM spending, at least from the outside, feels like a bit of a bokeh. I know many companies have grown much more sophisticated about this in the past four years, but during my time at Stripe and Amazon, a lot of the efficiency work 2 "Efficiency" being the buzzword used to mean, roughly, we would like to lower our OpEx in preparation for either the next quarterly earnings report or the next round of layoffs. was not really spent doing fancy backbreaking things — it was spent figuring out which fleets of servers were simply collecting dust because some random team had turned them on six months ago and never spun them down. I joke a lot that my single most meaningful contribution to Amazon was saving us tens of millions of dollars a year because I had the great fortune of realizing one of our ad-hoc clusters for one-off jobs was not scaling down, and we were therefore burning a huge amount of money for no reason in particular. LLM spend, at the org-chart level, smells identical to me. Distributed, badly telemetered, growing fast enough that no one at the top has had time to build intuition for what right looks like. Two: my already fervent interest in local LLMs — and getting to the point where I can run some of the more recent engineering-grade models locally — would, in that hypothetical world, become the single highest-leverage thing I could do from a financial standpoint. The calculus on local inference is not just an aesthetic or moral preference (see VC-subsidized tokens ); it is also an economic one, and one that I suspect will become increasingly load-bearing.

0 views
Justin Duke 1 months ago

The In-Laws

It was fifteen minutes into The In-Laws that I suspected an uncanny feeling of déjà vu, and thirty minutes in that I confirmed my suspicions with an unlocked memory of having watched it somewhere between ten and fifteen years ago, in a context I cannot recall beyond mild insobriety. With this revelation, the remainder of the plot — already formulaic and predictable — snapped into place, and I was left with wackiness and some sensible chuckle humor that I can admire without loving. This Blazing Saddles -esque style of broad comedy, which leans into action to punctuate and yet ends up deflating, is simply not for me. And I mean that sincerely. There's a lot about the film that I admire. First and foremost, the commitment to the bit that Peter Falk showcases: his dogged aloofness works in a compounding way, especially in comparison to Alan Arkin's self-serious nice — a contrast that had nonetheless grown threadbare and overdone somewhere in the film's second act. The schtick of the film feels more well-suited for a longer-runtime SNL sketch than an actual film, and the script's necessity to lampshade every single joke (the Bay of Pigs gag, to pick one) is the closest I can come to a sincere and critical critique. This and Murder by Death make two films in a row that I didn't really enjoy despite loving their usage of Peter Falk — which is perhaps a sign that I should just start watching Columbo instead.

0 views
Justin Duke 1 months ago

Murder by Death

Murder by Death is a film that is easy to laugh at and easy to like. It is something like Clue meets Knives Out — a broad farce, lovingly rendered, that gathers the biggest detectives of the day (most of whom have survived and or thrived in the public consciousness all of these years) to solve the purportedly unsolvable murder of and/or by Truman Capote. I can't quite put my finger on why I didn't like it as much as I should have, or why it felt oddly slow considering its 94-minute runtime. Perhaps because it is so explicitly facile . It is not a madcap romp like Clue , nor does it wish to be a serious mystery like Knives Out , nor does it really have fun with metafiction like any of the other films in this genre. It is fun to see these actors clearly have a blast with each other — but it is a spoof, and spoofs make for entertaining evenings and poor cinema. My favorite individual performance was Peter Falk playing a Sam Spade slash Humphrey Bogart composite. Less for his imitation's efficacy and more because you can see the seeds of Columbo in his affectations. Would I recommend this movie? If you're bored and have nothing else to watch, and are comfortable keeping your expectations low.

0 views
Justin Duke 1 months ago

Network

It is perhaps embarrassing to admit that I had never seen Network , and this year — its fiftieth anniversary — felt as good a time as any, especially considering how intimately familiar I already was with the film's plot, its two capstone monologues, and its general influence on culture and, if not journalism itself, then the lens through which we view journalism. And now, having watched it and spent a few days really chewing on what I thought and what I think it means, I have arrived at an idiosyncratic answer: Institutions, even the ones we revere, will be consumed by forces greater than human understanding. And in so doing, they also consume anyone who has devoted themself fully to those institutions. The film opens with Howard Beale becoming a childless widower whose sole identity is suddenly that of his news broadcast. Max Schumacher's fall from grace coincides with an off-screen decision not to go with his wife to Seattle to visit his pregnant daughter — instead staying behind in New York to work the news. Paddy Chayefsky himself, for all his great work, was a tyrant with an anger management problem: an absent husband and an absent father. There is only one character in this film who conducts herself with anything approaching grace and dignity: Beatrice Straight, playing Max's wife, who won her Oscar for a five-minute monologue and then is never seen from again. It is easy and natural to declare Beale and Jensen's rants as prophetic — they are great bits of writing performed radically well — but they are performances by madmen, meant to persuade and to dazzle. Straight is the one whose message is worth keeping close to our heart: Then get out, go to a hotel, go anywhere you want, go live with her, but don't come back! Because after twenty-five years of building a home and raising a family and all the senseless pain we've inflicted on each other, I'll be damned if I'll just stand here and let you tell me you love somebody else! [...] Is that what's left for me? Is that my share? She gets the great winter passion, and I get the dotage? Am I supposed to sit at home knitting and purling till you slink back like a penitent drunk? I'm your wife, damn it! If you can't work up a winter passion for me, then the least I require is respect and allegiance! I'm hurt! Don't you understand that? I'm hurt badly! And the most fascinating choice made by the film is the decision not to end with Max's renunciation of Diana — to treat him slinking back sheepishly to his wife and family like the resolution of a B-plot rather than a salvation. As great as the final two scenes of the film are, they reveal that the rot Chayefsky depicts in his film's universe has spread to him as well. Because as soon as a character leaves the newsroom, they are nobody at all to him.

0 views
Justin Duke 1 months ago

What matters

I turned it on just as they got to the scene when Richard, Geoffrey and John were locked in the dungeon and Henry was coming down to execute them. Richard tells his brothers not to cower but to take it like men. And Geoffrey says, "You fool! As if it matters how a man falls down." And Richard says... "When the fall is all that's left... ...it matters a great deal." As I often do after finishing a movie I loved, I have spent the past few days burning spare compute (as they say) turning Network over in my head and situating it within the other works that I love. Network's influence is vast. But my personal canon implicates one writer in particular, above the rest: Aaron Sorkin. Sorkin's love of Chayefsky is broad and obvious. You do not need to listen to him speak to hear it; the series premiere of the ill-fated and ill-conceived Studio 60 on the Sunset Strip opens in direct homage and reference to the film. At first glance, it's easy to be disingenuous about this adoration — especially given our current cultural moment, which has largely lampooned Sorkin's politics, and not just Sorkin's politics but his ideas about politics. It is easy to say that Sorkin made a career out of aping Chayefsky's bombastic, operatic dialogue style without ever really pushing to sell something of depth the way Chayefsky did. I think that's an unfair reading of Sorkin, regardless of how you feel about his politics. Starting with Sports Night and moving all the way up to The Newsroom , 1 I'm not counting his film work, largely because — with the exception of The American President — they're all adaptation and cash-grab jobs. Which I don't mean as criticism, but to highlight the fact that they aren't part of his central oeuvre. And Sorkin's run on the West Wing is just the first four seasons. Sorkin, like Paddy, treats the office as a place of worship — and members of the institutions he portrays are virtuous to the extent that they devote their entire selves to them. The widely accepted reading of The West Wing, as such, is that of a liberal Fantasia, not because it depicts the Bartlet administration as being liberal, but because it depicts a world in which the best possible thing you can do is to try very hard to do the right thing — and the liberals, or really the centrist-leaning Democrats, are the ones who do that. Now might be a good time to mention that I love the West Wing. It holds a special place in my heart — not because it prompted me to begin a life of civic duty, nor to become a man defined by his institution, but because it was the first television show I watched that made me say: whoa, shows can be like that. I care nothing about it's nostalgia, nor agree with its retrograde politics — but the show is good, dammit, and the back half of Season 2 is up there with any other show in my personal canon. Watch any episode in Sorkin's run of the West Wing and strip away whatever pretense and prejudice you have about his politics, and it is still some of the greatest TV writing, with performances to match. Moreover, the West Wing is, to a large extent, an auteurist text, with Sorkin having famously written much of it himself (on copious amounts of cocaine.) No one in government takes responsibility for anything any more. We foster, we obfuscate, we rationalize. "Everybody does it," that's what we say. So we come to occupy a moral safe house where everyone's to blame, so no one's guilty. I'm to blame. I was wrong. So what does this all have to do with Chayefsky? Clearly the two men's worldviews are oppositional. Network is a story about the inevitability of institutions to get corrupted and corrupt in turn. The West Wing is a paean to not just an institution but the individuals who comprise it. Again and again, in the West Wing, we are told the most virtuous possible thing to do is to devote yourself to an institution, and the show's camera follows that precept accordingly: it's not that we know little about Josh and Toby and CJ's personal lives because they happen off-screen, it's that we are told, every episode, that the White House is their personal life, and that in the noblest possible American quest one must subsume yourself into the greater cause — precisely the thing Chayefsky warns about, because he contends that the greater cause will devour your soul. But back to that liberal Fantasia for a second. Discussions of the West Wing online often imply that the Bartlet administration was faultless and perfect (to the scorn of its critics and the glee of its fandom) — that nothing goes wrong, and that every situation is not just salvaged but transcended by its protagonists. This is an immature reading! While the show does take necessary textual pains to pretend that everything lies in the hands of the cast's agency, a recurring theme throughout Sorkin's run is that, despite these lovely, brilliant, devoted, earnest, and dignified people in the Oval Office, the Bartlet administration kind of sucks. In the universe of the show, Bartlet passes no major domestic legislation, commits multiple war crimes against foreign officials, lies to the public about a serious medical condition during his campaign and first term, and appoints one Supreme Court justice. And that's sort of it. LBJ, he is not. His tally sheet looks more like Carter's than FDR's; he wins a second term, but more off the back of his opponent's cartoonish incompetence than his own track record. Why does he not do more? This is the through-line of much of the show, the administration's conflict between what is right and what is expedient — on one hand, you have the oft-repeated let Bartlet be Bartlet : to not capitulate, to not accept half measures, to not do what is convenient or legible but to act with confidence and moral imperity. And then, on the other hand, it doesn't work: which is not an indictment of the characters so much as an indictment of the worldview that celebrates them as heroes. Decisions are made by those who show up. To call this a Straussian reading is probably an understatement. I do not at all think Sorkin intended to slyly deliver this message; I think he probably wasn't thinking that hard about some of the long-term through-lines implied by his storytelling. 2 As is made abundantly clear by every single public statement he's made in the past two decades — including, perhaps most famously and recently, his call for the Democratic Party to run Mitt Romney against Trump in the 2024 election. A moment of true bipartisan unity, in that every single person from every part of the political spectrum correctly derided him for the take, and the New York Times for airing it as an op-ed column. But I still love the West Wing, even at its most obnoxious. And I still, despite myself, love Sorkin — though his best works, like The Social Network with Fincher, are produced with an equally strong, opposing voice in concert. Why is that? Two reasons: He is a very good writer of dialogue and oratory. He celebrates honor and dignity and loyalty, but he does not make great pains to pretend that those things are antidotes to what ails us — which is perhaps the more important message, because if they were antidotes they'd be easier to administer.

0 views
Justin Duke 1 months ago

Be careful what you make easier

I have found much peace this year going offline to shelter myself from the whiplash of LLM companies jockeying for mindshare by cosplaying as DevRel. Every now and then something gets through the filter bubble — usually because it concerns Markdown, a topic near and dear to my heart and one increasingly in vogue in the age of LLMs as a message bus. The most recent case: The Unreasonable Effectiveness of HTML . The dynamic half of this essay is unimpeachable. What Thariq calls "Custom Editing Interfaces" — throwaway drag-and-drop kanbans, sliders for tuning an animation, side-by-side prompt editors with live preview — I totally agree! The ability to drive down the cost of throw-away snippets and playgrounds to ~zero is one of my favorite uses of his product. But the implicit framing of the essay is "HTML is also strictly better than Markdown for all use cases", and I think he uses the unimpeachable bits to oversell the other half of the argument. The single most important sentence in the piece, presented as a casual aside, is this: in practice, I've found I tend to not actually read more than a 100-line markdown file . The proposed response is a richer rendering format. The actual response — the boring, unfashionable, correct one — is a shorter, denser, and more comprehensible plan, both for humans and LLMs alike. Be careful what you make easier. Making it more pleasant to claim to have skimmed a 600-line spec is not the same as fixing the fact that the spec is 600 lines, in much the same way biking 26.2 miles is not quite the same achievement as running them. There are other soft parts of the essay, that I feel duty-bound to highlight: "Ease of sharing" is presented as an advantage of HTML, with uploading to S3 offered as the suggested mechanism. It is hard to interpret such a take in good faith, given that the author wrote the post itself in Markdown and had to link externally to GitHub pages for the companion HTML artifact. As Thariq admits in the FAQ, HTML takes 2-4x longer to generate, HTML diffs are noisy and hard to review (let alone trivially edit), and HTML is more expensive for LLMs to parse. HTML artifacts are good! But I get worried about stuff like this, and not just because I'm a Markdown dork (the beauty of being a Markdown dork is that it doesn't really matter who else uses Markdown.) When you frame stuff like this in unrigorous absolutes, I am forced to worry about what else you frame in unrigorous absolutes. "Ease of sharing" is presented as an advantage of HTML, with uploading to S3 offered as the suggested mechanism. It is hard to interpret such a take in good faith, given that the author wrote the post itself in Markdown and had to link externally to GitHub pages for the companion HTML artifact. As Thariq admits in the FAQ, HTML takes 2-4x longer to generate, HTML diffs are noisy and hard to review (let alone trivially edit), and HTML is more expensive for LLMs to parse.

0 views
Justin Duke 2 months ago

Screen record more

One of the things I miss most about working in an office is osmosis: the ability to absorb information from coworkers purely by peering over their shoulder for five minutes and seeing how they did their work. This is how I learned about using a debugger. About NeoVim. About a dozen other small ergonomic tricks that I've since internalized to the point I can't remember a time without them. The other thing I miss — and this one is more niche — is rubber ducking. The term is a bit of a meme at this point, but if you haven't encountered it: to rubber duck a problem is to walk through it out loud, explaining it to a rubber duck as if the duck were an actual person. The trick, of course, is that the act of articulating the problem is itself the thing that surfaces the solution. In the office version, the duck is a real person who passively observes and provides no input. The good news — and something I forget, and am writing this post primarily as a reminder to myself — is that we have the technology to do both of these things, albeit without the ambience. It's called taking a screen recording of yourself . It doesn't have to be while doing anything in particular. I've both sent and watched screen recordings of me literally just triaging Linear, going through support escalations, and implementing a new bulk action — to give you a sense of the banality. They can be long. They should ideally be completely unfiltered and unedited. The only real caveat is that you should narrate while recording: talk about what's on your mind and why you're doing the things you're doing. But you should not change your behavior. No tidying up the desktop, no rehearsing the click path, no skipping the part where you fumble through a menu for thirty seconds because you can't remember where the setting lives. The fumbling is the point. It sounds obvious, I know. But if you haven't done it a lot, it is tremendously beneficial as a way to share tacit knowledge — the kind of knowledge that nobody writes documentation for because nobody realizes they have it.

0 views
Justin Duke 2 months ago

Buttondown no longer runs Redis

Buttondown no longer runs Redis! I added it years ago for the same reason almost every Django app has Redis: that's just what you do. Workers wanted a queue, the queue wanted a broker, the broker was Redis. The cache wanted a backend, the backend was Redis. Sessions wanted a store, the store was Redis. And then it festers from there. 1 Though "festers" is unkind: I have no qualms with Redis as a technology, I just have qualms with twice as many datastores as I ought to have. I wrote earlier this year about pulling django-rq and the worker queue off of Redis. What was left after that was mostly small: rate-limit counters, a few short-TTL caches, an idempotency-key fast-path, and session storage. Not enough to really cause any issues, but we're working on our Heroku migration 2 Stay tuned for more. , and big infrastructural changes are made slightly easier by one fewer dependency, even if it's a fairly static one. When I actually measured the replacements against production Postgres, they came in well under the Redis round-trip they were replacing, which has to cross AWS regions to reach our RedisCloud instance. The "fast in-memory store" was, in this configuration, slower than the database itself. (Thanks, PlanetScale !) The few caches that didn't have a good home in Postgres became per-process in-memory dicts. We deploy enough times a day that a process-local cache lives long enough to do its job and gets cleared often enough that staleness isn't meaningfully real. When I wrote yesterday about maintenance costs , this is exactly the kind of thing I had in mind. It is both wild and accurate to say that the Buttondown stack, as of right this second, is dramatically simpler — let alone more stable — than it was two years ago.

0 views
Justin Duke 2 months ago

Sweet Smell of Success

At its core, Sweet Smell of Success is about two men. At the beginning of the film, you think — while similar — one is decent, just desperate, and the other is beyond saving. By the end, you understand that both men are evil; the only thing separating them is the amount of power they wield. These two performances by Burt Lancaster and Tony Curtis are flatly terrific. There is little to say, because I've concerned myself much more with the 60s and 70s than the 50s, and so I can't say much about how these roles are in conversation with their prior oeuvre. But it is plainly clear that the screen bursts alive whenever either of them is talking. The rest of the film is a push-pull: a fairly standard and at times cartoonish melodrama — filled with an evil that feels more cartoonish than banal as each act progresses — rescued by the best window dressing in the world, and a whiplash script that finds entertainment and grace in its brief moments of joy. The director wrings a lot of tension out of how lovely every individual scene feels at the onset. Beautiful jazz soundtrack. Beautiful Manhattan nightclubs. Filmed and captured with just the right amount of realism. And then, the decrepit material disgust they're all wading through. I don't really go for morality tale movies at this point. While there's a certain world-weariness and hardscrabble wisdom to the proceedings here that might have been more winning with contemporary audiences, it's not exactly breaking news to me that owners of media corporations can be childish, petty, and controlling. Perhaps my fundamental flaw with viewing the film is that I think it hinges on a dwindling confidence that our protagonist is going to, at some point, snap out of it and do the right thing — even though it's so aggressively telegraphed that he won't. It seems odd to spend so much time criticizing a movie I thought was very good, so let me end with this: it is a smart, beautiful, honest movie that does not pull any punches.

0 views
Justin Duke 2 months ago

Just aim the cannon correctly

James Shore has a post I found myself nodding along to until the very last step, where he loses me. The thesis is clean: Your AI coding agent, the one you use to write code, needs to reduce your maintenance costs. Not by a little bit, either. Productivity over the long haul, he argues, isn't bounded by how fast you can produce code — it's bounded by maintenance cost, which compounds. Any coding agent that accelerates production without taming maintenance is, definitionally, a debt-laundering operation: it lets you skip the bill today and pay it forever afterward. Each individual claim is, I think, correct. Code is debt; maintenance compounds; an agent that bolts on features faster than your team can absorb them is, given a long enough horizon, an anti-productivity tool. The conclusion Shore stops just short of stating — that current LLM tooling is, on net, bad — is where I get off the train of thought. A useful frame that I like across a variety of contexts is that of a difficulty score. The idea is straightforward: every recurring operation in your organization has some friction associated with it, and you can roughly approximate that friction with a back-of-the-envelope cost function. For something like opening a pull request , my version goes: For support, it might be: The specific weights don't really matter. The point is that once you have a function, you can take a derivative — you identify the things that are Bad and then you start taking discrete steps towards reducing them, with the overall goal of getting the score down as low as possible. And LLMs are, in my experience, fantastic at bringing these scores down. The bulk of what I've spent my own LLM-augmented time on at Buttondown in 2026 has been on this axis — squeezing the inner loop , trimming dependencies , handing diagnostic and scoping work to agents in the background — and the return has been outsized. Conversely, where I see LLMs deployed in the most deleterious manner — and where I think Shore's argument probably finds the most purchase — is when the relationship between the tool and the codebase is purely additive. LLMs are very, very good at adding features. They are also, more insidiously, very good at telling you that adding a feature is a great idea. 1 I have, on multiple occasions, tried to talk a coding agent out of building something. It is genuinely harder than the opposite, which I find both funny and faintly horrifying. You can ask any coding agent whether it should build the thing you just described to it, and the answer will essentially always be yes, with concomitant action plans and bullet points that it will litter throughout the codebase. The failure case I see in organizations that rhymes with Shore's point is along those lines. If scaffolding a feature took a week, you thought hard about whether to scaffold it. If it takes an afternoon, the answer skews toward yes, and yes, and yes, until you wake up one morning with sixteen new endpoints and no real idea why any of them exist, nor any graceful seams across them. But you can simply not use the tool that way, in much the same way you can simply not use Playwright as a full substitute for a testing suite. Here's a rough playbook: None of this is LLM-specific 2 In general, I think a useful framing device for reading essays about LLM-assisted engineering is "how much of this rings differently if they're just talking about all engineering writ large?" . The failure mode of letting maintenance debt accumulate without ever asking what specifically is making my life hard predates LLMs and will outlast them. What LLMs do is give people (and organizations) a fast forward button: they let the organizations that were already losing to maintenance debt lose faster, and they let the organizations that have their score-keeping in order pull away further. All of which is to say: I agree with Shore on the diagnosis. I just don't think the cure is to abandon the tools — it's to point them at the right operations, with eyes open about which ones, and to remember that adding code is the most expensive thing a coding tool can ever do for you. +1 point per ten seconds of wall-clock time spent waiting on tests or CI +5 points per tool you have to context-switch into (docs, dashboards, terminals) +1 point per click +10 points per manual check you run before merging +5 points per click required to triage a ticket +10 points every time the answer isn't simply a link to documentation we already have +25 points every time you have to log into the user's account because the relevant data isn't surfaced to support ×1.25 per follow-up response from the user Define the difficulty scores for the operations that matter. Write them down somewhere your team can bikeshed (non-derogatory, of course) and flesh them out. Triage the obvious low-hanging fruit (which is always much more than one assumes) against all the other work to do, biasing heavily towards this stuff because it's inner-loop. Ship the improvements.

0 views
Justin Duke 2 months ago

LLMs and Buttondown

Buttondown has grown a lot in 2026; some of that growth is uncomfortable. I've talked to enough people about this in real life that it felt worth writing some of it down while it's fresh — if for no other reason than to revisit in a few years' time. First, the headline. Our month-over-month growth rate in Q1 2026 was double our growth rate in Q4 2025. Buttondown has, roughly, grown a little less than 2x every year of its existence; this — its eighth year — is poised to shatter that, if trends hold. Almost all of that incremental growth, meaning the growth in addition to our historical trend, I attribute to LLMs. We ask people when they sign up what brought them here, and an answer that went from surprising to banal to overwhelming over the course of Q1 was: an LLM. Users of all stripes cite an LLM as the reason that they ended up at Buttondown's front door. These users, broken into their own cohort, have some interesting numerical properties. They both activate (i.e. send their first email) and convert (i.e. start paying us) at a worse but not dramatically worse rate than the median. Here are some numbers: 1 One thing worth calling out: while the LLM-born cohort skews more B2B than our historical B2C-leaning median, it is remarkable how few of them are evocative of the stereotype. Teachers, public servants, and nonprofits are all extremely well-represented. Make of that what you will. It feels weird to complain about this. So let me list some of the weird ways it has surfaced. 1. Churn. It is too early to really understand the statistical significance of this, but I'm faintly worried about churn being higher for these users than for our traditional cohort. A lot of our approach to onboarding and pricing hinges on a fairly high LTV; it's how we can justify outsized investment in support, for instance. Definitionally, lower LTV warps a lot of these decisions. 2. Support. While the absolute volume of support tickets coming from LLM-born users isn't significantly higher than the median, the shape of those tickets is off. To put it bluntly: a lot of the tickets we get are themselves LLM-generated. This is, frankly, extremely annoying — and demoralizing for me and the team to spend half an hour meticulously answering some complex question only to receive a machine-generated reply in return. 3. ICP. Buttondown has grown through word of mouth alone since its inception, which means that our customers all kind of have the same vibe — and, more importantly, know what our vibe is in return. LLM-born users, by virtue of having outsourced the research process, really don't. This materializes in every aspect of the conversion pipeline, from prospecting (I recently had a sales call with a user who was shocked to learn we don't support cold email) to volume. People have asked why I think we have been the beneficiary of this genre of growth. There is one fairly interesting reason: we have accidentally built a very LLM-friendly business in this space. While we don't have an MCP, and our CLI is fairly nascent, an early design decision — inspired by my time at Stripe — was to dogfood the entire API in the core dashboard. As a result, our REST API is extremely well-documented and feature-rich, because it has had the constraint of needing to power the core user experience. This is a flip from most other competitors, where the API is vestigial at best. I mean this in a positive light, mostly. I led this post by saying I feel uncomfortable about the growth, and it's true. The business is growing faster than ever before. It is also being taxed in a way that it has never really been taxed. More than that: it is the first time I really feel like we've had a loss of agency around driving the business — a sense that, well, sometimes you just run the same direction as everyone else. Of course, we don't really plan on doing that. What we plan on doing is roughly as follows: Odd times ahead; odd times right this very second. Pull forward future investments in internal tooling and infrastructure, to proactively scale both our processes and our systems. Invest even further in making the API really, really good. We have already started to see just how far API- or LLM-driven usage can go. For instance, we've had a number of bugs 2 I am a sicko who thinks that bugs being revealed is a good thing. because parts of the API I once considered esoteric were not handling JSON schema correctly — we were relying naively on the front end of the core app to do that work for us. We're investing in Schemathesis and other automated fuzzers to firm this up. Firm up some of our support policies, especially around our interactions with prospects and free users, in order to protect our support engineers' time and energy. To paraphrase my friend Nick: treat the new revenue like it doesn't exist until enough time has passed to be absolutely sure about things.

0 views