Latest Posts (20 found)
Justin Duke 1 weeks ago

Near to the Wild Heart

Two friends, upon learning that I wanted to get into Clarice Lispector, advised me not to start with Near to the Wild Heart . Having now finished the book, I think I understand why. The two parallels that come to mind — less in terms of style and message than in terms of how one situates the prose — are Murakami and Woolf. Murakami is, to be clear, the much less stylistically successful of the two. But like Murakami, Lispector's work has been treated with a sense of otherness — not as a method of denigrating it, but to suggest that it sits outside its country's literary tradition. And while you can make a compelling argument that Murakami taps into a distinctly Japanese sense of alienation and ennui in the modern era — and, moreover, that much of his earlier writing is explicitly political — Lispector here is ethereal, barely attempting to give any hint or indication of where and how her protagonists live. Part of this otherness — the sense of the story being completely untethered to any semblance of setting — serves contemporary reading well, in this age of autofiction and, for lack of a better term, idealistic narcissism. There is hardly a hint of whiplash going from Ben Lerner to Lispector. Woolf I evoke for a handful of reasons. First: like Lispector, Virginia Woolf is often praised backhandedly, under the umbrella of feminist literature, or feminist modernism. But Woolf's goals — say, in To the Lighthouse — are directly oppositional to Lispector's. The Lighthouse is an argument toward the permeability of consciousness and shared existence, conveyed with empathy and perspective. Woolf uses the frame of modernism to talk about shared experience , and this pattern forms a lineage in which I can find much of my favorite writing. (See also A.S. Byatt's Possession .) Lispector, conversely — at least in this book — is a solipsist. Her self-insert protagonist is the raison d'être of the entire prose, the sun about which every other character orbits. Any character not named Joana is given time and energy only insofar as they shed light on Joana. And the philosophy of the book — beyond its explicit cribbing of Spinoza — is an argument, if not quite in favor of this, then against the status quo that spawns it. All that aside: this book makes me more intrigued to read the Lispector of her later years, while considerably less excited at the prospect of having found an author I can spend the next decade absorbing. Her biggest asset on display is the prose. Even through translation, her writing is beautiful and serrated, while never being Rococo. And considering her age upon writing this — and this is where the Woolf comparisons begin to feel unfair — one gets the sense of a young master in full control of what she wants to say and how she wants to say it, but who unfortunately does not yet have much at all to say. One last note: the final chapter, a series of monologues from Joana, is indeed placeable among the highest echelons of modernism — beautiful and cryptic and self-indulgent all at once.

0 views
Justin Duke 1 weeks ago

Cursed knowledge

Nick pointed me towards Marcin who pointed me towards immich's list of cursed knowledge the other day, and it has already become a running joke in the Slack. Here is a baker's dozen of Buttondown's own cursed knowledge: 1 Yes, that's the joke. The Python library assigns the device family to every non-Mac desktop browser The HTML attribute only filters what the file-picker dialog shows you; drag-and-drop and clipboard paste bypass it entirely. Safari and Chrome re-serialize quoted CSS custom-property strings differently when you read them back via : Chrome keeps the single quotes, WebKit rewrites them to double quotes. Django emits a — which fails our CI — for any cache key over 250 bytes or containing a space or control character. Python's has no default timeout and will, given the opportunity, wait forever. SPF directives recursively chain DNS lookups against a hard cap of ten — exceed it and you get a , which can fail authentication for all of your mail. Outlook and Hotmail enforce mandatory TLS but serve a certificate chain rooting at DigiCert Global Root CA (G1) — a root that Ubuntu has since removed from its trust store. Django's tests whether the key exists , not whether its value is JSON . does not lock rows in the order you listed them — Postgres locks them in executor scan order, which is a wonderful way to deadlock two queries that both thought they were being careful. A postgres cannot exceed ~1MB. Stripe will send subscription update events for paused subscriptions. The Python library assigns the device family to every non-Mac desktop browser The HTML attribute only filters what the file-picker dialog shows you; drag-and-drop and clipboard paste bypass it entirely. Safari and Chrome re-serialize quoted CSS custom-property strings differently when you read them back via : Chrome keeps the single quotes, WebKit rewrites them to double quotes. Django emits a — which fails our CI — for any cache key over 250 bytes or containing a space or control character. Python's has no default timeout and will, given the opportunity, wait forever. SPF directives recursively chain DNS lookups against a hard cap of ten — exceed it and you get a , which can fail authentication for all of your mail. Outlook and Hotmail enforce mandatory TLS but serve a certificate chain rooting at DigiCert Global Root CA (G1) — a root that Ubuntu has since removed from its trust store. Django's tests whether the key exists , not whether its value is JSON . does not lock rows in the order you listed them — Postgres locks them in executor scan order, which is a wonderful way to deadlock two queries that both thought they were being careful. A postgres cannot exceed ~1MB. Stripe will send subscription update events for paused subscriptions.

0 views
Justin Duke 1 months 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 2 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 2 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 2 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 2 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 2 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 2 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 2 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 2 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 2 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 2 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 2 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 2 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