Latest Posts (20 found)
Justin Duke 1 weeks ago

January, 2026

This is not, if I'm being honest, the simple, structured start to 2026 that I had in mind. Rigor and early workouts have been replaced by pulled floors and sheets of ice. After spending a lovely week in Park City with the Third South folks, we came back home and had 12 hours of respite until, board by board, our floors were pulled up for replacement. The good news — it's always important to focus on the good news — is that the damage was less extensive than we expected. The bad news, because there is always bad news to go along with good news, is that this week we learned that we would be hit by an ice storm. And so, we decamped at my parents' house, the same one that I spent my formative years reading Redwall and playing Final Fantasy even though my parents thought I was asleep. Haley and I are, to a fault, creatures of habit and routine, and it would be a lie to say that the past two weeks haven't been draining in the same way a day spent in transit is draining. We miss our house. We miss our things. For Lucy, though, this has been a permanent vacation — a whirlwind of delight that started in Utah and has extended without ceasing. In the span of two weeks, she went from walking, if she remembered about it, to quite literally sprinting through the house, chasing anything and everything she wanted. It is fascinating to watch a toddler learn about the world. There is a transparency to them, and her effortless and endless delight in discovering the cause and effect of things that I have cynically grown to consider mundane — such as a light switch — more than makes up for a little bit of inclement weather. I haven't been working much. I haven't been writing much. I haven't been reading much. I have been watching my daughter discover the world and run headlong into it, hands outstretched. | Post | Genre | | ------------------------------------------------------------------------------------------------ | ---------- | | Tabula Rasa (Vol. 1) | Book | | Levels of the Game | Book | | A Shadow Intelligence | Book | | Cameraperson | Film | | Eternity | Film | | Go | Film | | Tinker Tailor Soldier Spy (2011) | Film | | The Pigeon Tunnel | Film | | Ocean's Twelve | Film | | Uses (January 2026) | Personal | | Terragon, Conductor, PyCharm | Technology | | Migrating to PlanetScale | Technology | | Refactoring a product is tricky | Technology | | Every model should have a notes field | Technology | | Pure strategy | Technology | | The Diplomat (Season 2) | Television |

0 views
Justin Duke 1 weeks ago

The Hudsucker Proxy

When does an indulgence become sour? I ask this because indulgence is the word that most immediately comes to mind at the finish of this film. And largely in a negative way. Closer to flippancy than resplendence. And yet the same word can be leveled at the last film I watched. Ocean's 12. A movie which I thought, on the merits, was not exactly good, and yet I had a good time with it. It's a weird pair of films to compare. The filmmaker is perhaps less so; it's not unreasonable to consider Soderbergh and the Coens in the same relative stratosphere, both in terms of longevity and breadth of work. HudSucker Proxy was made very early on by the Coens. Ocean's 12 was made perhaps at the peak of Soderbergh's cache. Where and for this being such an early film in their canon, the technical achievement is remarkable. This film looks and feels beautiful and striking in a way that I've described as obvious, but not unwelcome. One of the reasons why, deep down, I love the Oceans film so much is because you get the very strong sense that Soderbergh is cooking up for you the most delicious and expensive meal in the world. It is a project where he is alchemizing his pleasures and giving them to you, letting you get swept a lot in the exact same way he would be, and that is very much not the goal of The Hudsucker Proxy. Frankly, it's difficult to tell what the goal of the film is beyond technical wonderment and perhaps a skewering of lesser film. One gets the sense that the Coens are making fun rather than having it. The pastiche here runs the gamut from boardroom drama to His Girl Friday, and speedruns the list of clichés, many of which are funny in isolation. The script is, if incoherent, extremely clever, peppered with one-liners and callbacks. But... you leave the movie with a kind of unfulfillment. The Coens can both be humanistic, but I simply do not care about any single member of this group. What's worse, I'm not sure I'm supposed to.

0 views
Justin Duke 1 weeks ago

Brief notes on migrating to Postgres-backed jobs

It seems premature to talk about a migration that is only halfway done, even if it's the hard half that's done — but I think there's something useful in documenting the why and how of a transition while you're still in the thick of it, before the revisionist history of completion sets in. Early last year, we built out a system for running background jobs directly against Postgres within Django. This very quickly got abstracted out into a generic task runner — shout out to Brandur and many other people who have been beating this drum for a while. And as far as I can tell, this concept of shifting away from Redis and other less-durable caches for job infrastructure is regaining steam on the Rails side of the ecosystem, too. The reason we did it was mostly for ergonomics around graceful batch processing. It is significantly easier to write a poller in Django for stuff backed by the ORM than it is to try and extend RQ or any of the other task runner options that are Redis-friendly. Django gives you migrations, querysets, admin visibility, transactional guarantees — all for free, all without another moving part. And as we started using it and it proved stable, we slowly moved more and more things over to it. At the time of this writing, around half of our jobs by quantity — which represent around two-thirds by overall volume — have been migrated over from RQ onto this system. This is slightly ironic given that we also last year released django-rq-cron , a library that, if I have my druthers, we will no longer need. Fewer moving parts is the watchword. We're removing spindles from the system and getting closer and closer to a simple, portable, and legible stack of infrastructure.

1 views
Justin Duke 1 weeks ago

LLM as advance team

My first foray into using git worktree-style development — spinning up multiple workspaces and having LLM agents attack different problems in parallel — was a failure. I found myself simultaneously exhausted and unproductive, the equivalent of doing a circuit course in Bean Boots. The entire thing felt good in the pernicious way increasingly familiar to developers using these sorts of tools, where you can delude yourself into believing that noise and diffs indicate forward progress, even though at the end of the day you've run a marathon and out of the twenty PRs you shipped, five of them are buggy and three of them are relevant to the actual important thing you should be doing. I am back using worktrees and having a very good time doing so — with a slightly different mindset, which is to treat them not as parallel agents but as an advance team . If I've got five or six things I know I want to do in a given focus block, the first thing I'll do is open up five or six different worktrees within Conductor and spend two or three minutes dictating via Aqua high-level goals and linking in any relevant Linear, Sentry, or Slack data. Then Opus goes off and whirs for thirty minutes, and I don't pay any attention until I decide it's time to pick up that task and that task only. What I find is never complete, but always useful. Bug fixes might have correctly diagnosed the root cause but implemented the fix or regression test in a way that I find clumsy. Feature branches might have done an awful job wiring together the architecture but given me a couple Storybooks that I can click around and better refine my thoughts with. Refactors give me a sense of the scope and a few regression tests that were missing. More often than not, the branch spun up by Conductor never even makes it to GitHub, let alone the main branch. It's purely a first draft from an overstimulated and undercompensated robotic junior colleague — but that is value additive. I couldn't tell you what the dollar amount of that value is, but right now it's certainly greater than zero. And the tax on my workflow is minimal at best.

0 views
Justin Duke 2 weeks ago

Ocean's Twelve

This might not be the perfect time or whatever to talk about it but I've been doing my homework and I'd really like to play a more central role this time around. I consider this film's prequel as close as you can get to a perfect film. Ocean's Eleven is a movie that knew exactly what its goal was—to be as relentlessly and easily entertaining and pleasurable as possible—and succeeds in doing so more than any other movie with similar ambitions. The sequel to such an endeavor has an inherently impossible task ahead of it. I held off on watching this for a long time. Partially because it seemed unnecessary; why would I watch a sequel when I could just watch the original again? And partially because it is poorly reviewed, in the same way many of Soderbergh's works are. The phrase self-satisfied and bizarrely sloppy comes up a lot in reviews of his early-aughts output. I think it's fair to be upset. The heist in this movie is, to a certain extent, on us , the viewer, for sitting down and thinking that we were getting treated to a heist movie when instead what Soderbergh wants to give us is two hours' time in the companionship of people who are effortlessly beautiful and charming. This film is filled with metatext: the Julia Roberts bit, Clooney's age, Matt Damon trying to become a leader. You can accuse some of the smaller bits as rehash, and I agree with the central complaint that a plot twist which invalidates everything we've seen for the preceding hour is unsatisfying. At the end of the day, I didn't care that much because I enjoyed watching my buddies having fun. It is a lesser film; it still succeeds in its goals, with grace and panache. One more thing: this movie hints at creating a slightly larger mythos, in the same way John Wick eventually created an extended universe unto itself. While part of me would have loved to see six more of these films, I think the key to their enduring charm is that they are a snapshot in wide frame. The warmest and happiest scenes involve as many people as possible, whereas the formula of John Wick really only requires a single protagonist and an endless barrage of faceless, unnamed fodder.

0 views
Justin Duke 3 weeks ago

Uses (January 2026)

A few updates to my Uses page: Software : I switched from Cursor to Zed . Zed is fast, native, and the editing experience is snappier. I've also been using Conductor to run coding agents in parallel, which has been a game-changer for working across multiple tasks at once. Miscellaneous : Three new additions: Bronson tees . Bronson is a Chinese workwear company that I suspect will, in due time, fold. In the meantime, there is no better value for your dollar if you want extremely high-quality tees. - Magic Sleeve . A silly workmat that seems gratuitous until you travel with it. - Encased MagSafe mount . I throw these everywhere as an easy way to mount your phone: one next to the squat rack, one in the living room for FaceTiming with Apple TV, one in the kitchen for keeping a recipe on Mela handy.

0 views
Justin Duke 3 weeks ago

Migrating to PlanetScale

First off, huge amount of credit to Mati for migrating our database to PlanetScale. I highly recommend reading the blog post . He does a good job talking about the boring stuff, which is to say, talking about the interesting stuff when reflecting on how this project went. Three other things come to mind, from my side of the fence: This is the largest infrastructural project that Buttondown has done which I have not been a part of — a fact that is both surreal and, frankly, very cool. 2. Mati hinted at this in the blog post, but outside of the obvious quantitative improvements brought by PlanetScale, the insights dashboard is worth its weight in gold. Being able to very easily see problematic queries and fix them has drastically changed our database posture, perhaps even more than the change in hardware itself. I find myself staring at the insights dashboard and thinking about what other parts of the infrastructure — CI tests, outbound SMTP, etc. — we need this for as well. 3. PlanetScale folks recommended we start using sqlcommenter to annotate our queries with the API routes that generated them. This was a good suggestion, but that package has the same malnourishment problem that so many Google-born OSS projects do: you end up pulling in a lot of dependencies, including some very old ones, to execute what is essentially 50 lines of code. Rather than do that, I asked Mr. Claude to vend the relevant snippets into a middleware that we can plop into our codebase. It is below:

0 views
Justin Duke 1 months ago

Levels of the Game

It seems fortuitous that my McPhee reading spree coincided with having watched Challengers . Like Challengers did sixty years after the fact, Levels of the Game uses tennis as an object of fascination in its own right—see also Infinite Jest and how much of that book, indeed all of DFW's worldview, was shaped by the relative weirdness of the tennis circuit compared to its team-based sport brethren. But even more than that, I'm interested in it as a canvas to explore systemic issues. Challengers touches on class nominally, but Guadagnino is at the end of the day much more interested in the love triangle that dominates the film, and in the idea of competition as a pure entity. McPhee has no problem dispensing with subtext and speaking plainly about the differences between his twin protagonists: one is white and comes from a solidly middle-class background; the other is black and comes from a solidly lower-class one. Side note: Arthur Ashe was born in Richmond, Virginia, and I live one block away from a boulevard named in his honor. You can credibly accuse Richmond of using Ashe as a bulwark against criticism, given how many of its other heroes are old white Confederates. But Ashe did in fact grow up here, and this book is not sparing in its description of how white Richmond rejected him. McPhee is not really interested in competition the way Guadagnino is; he describes Ashe and Graebner less like fierce competitors and more like two rival members of the same French New Wave. Part of this is truth—they were literal teammates playing in the Davis Cup together. That aspect of tennis, somewhat alien to me, is interesting in its own right. And while we know from the future that Ashe emerged as the superior and more exemplary player, McPhee is more interested in talking about form and style than raw prowess. This is a brief book—really just a snapshot of a single day—and as such it never outstays its welcome. By the last few passages, McPhee has perhaps run out of novel ways to describe a backhand. But it's a good read and a lot of fun. It speaks about style and grace and athletics, and it elevates the form of sport in such a way that sixty years after its original publication, it still feels not just prescient but modern.

0 views
Justin Duke 1 months ago

Eternity

Love isn't just one happy moment, right? It's a million. And it's bickering in the car, and supporting someone when they need it, and it's growing together, and looking after each other. It can't be denied that this movie isn't really, really funny. Some of the runners, such as the Korean War bit, or the pretzel bit, were just great laugh lines from a writing team — and I think the film's willingness and steadfastness not to engage in the minutia of the framing device and its acting mechanics was a very smart choice, because that's really not what the movie is interested in whatsoever. In general, I think this movie wa sa success and I attribute that success to the script's unwillingness to take the easy way out. I appreciated that all three vertices in our little love triangle are fairly flawed in different ways: The movie fades in quality in the few instances where it stoops to melodrama - mostly in the middle act, which any viewer is going to know beat by beat, and therefore goes on entirely too long and with way too few laugh lines. Given the audaciousness of the framing device, the movie did not quite take full advantage of its visual possibilities. The little sequence of Elizabeth Olsen gaping between eternities was legitimately cool, as long as you didn't think about it particularly hard — but the most beautiful and interesting parts of the film were in the junctions themselves, rather than the paradises. (Perhaps that is a deliberate metaphor.) The movie that comes most readily to mind, having watched Eternity, is Palm Springs : also a high-concept rom-com that never takes itself too seriously and has legitimately hilarious moments 1 And a bit of sloppiness. which, in a different world, probably could have been a massive box office success — if its goal was, at all, to land in the box office. This is a vehicle largely for Miles Teller and Elizabeth Olsen to be charming: and while they share almost zero chemistry, their individual charisma makes up for it, as does a great collection of complimentary performances from their surrounding cast. (The movie also owes a lot to The Good Place, of course, but Eternal Sunshine of the Spotless Mind which is perhaps winkingly echoed in the title.) This is not high art — nor is it pablum. I want more of these films! Elizabeth Olsen isn't given much to work with, but the text of her character has a little bit of scuminess, and she sells the pathos strongly enough. - Miles Teller's character is, for sure, guilty of everything that his rival accuses him of - in the same way that we all have a little self-interest burrowed deep in our heart. - And Callum Turner's character is clearly has some anger problems and a bit of subtextual one-dimensionality — the traits that you do ignore as a 25-year-old newlywed, but would grate on you after 65 years of marriage.

0 views
Justin Duke 1 months ago

Cameraperson

It seems fitting that, to close out the year I finally watched Koyaanisqatsi, I also got to watch Cameraperson — which is in many ways, and none of them dismissive or demeaning to either film, a funhouse mirror of its antecedent. Koyaanisqatsi is a film that's very interested in collage and rapidity, and at times felt like a sensory HIIT where you feel the push and the rest and the push and the rest, and the cavalcade of stock washes over you. Cameraperson is an antithesis — is collage, yes, assembled from around a dozen or so vignettes, all of them quiet, both literally and figuratively, but meticulously placed so that you, the viewer, are given the space and time to form the connections yourself. The dialogue in this film is spartan; the visuals are arresting and deliberate. Nothing feels wasteful. Kristen Johnson is very interested in relationships between storytelling and memory and between identity and witness. She is interested in the vastness and fragility of human existence. She does not have many answers; she wants you to help her find them. The best movies take you places: sometimes that is into someone's head, sometimes that is into a Nigerian NICU. She takes you there quietly, never flinching, never letting go of your hand. I don't know what else to say. I think it's somewhat disingenuous to call it an entertaining movie, but it's certainly an enchanting one, and I am different and better for having watched it.

0 views
Justin Duke 1 months ago

Avoid single-use variables

After all these years programming, it's fun to catch myself changing my style preferences in real-time. Here's a change I find myself getting very aggressive about: eliminating single-use variables (or functions, or what have you). A trivial example, of course. A slightly less trivial one: (Usual caveats apply: there are cases where you shouldn't do this, ie for performance or testing ergonomics, 1 I am, for the record, completely okay with shaping how you organize your code in service of testing as long as it's not gross — and everyone, deep down, knows when it's gross. , and also I don't think lines should be this short it's just hard to show a diff in a blog post.) But this slight tweak helps me in a few ways: Reveals complexity . A lot of seemingly-hairy methods can be unwound into a very straightforward sequence of nested transformations. 2. Improves readability . When reviewing code, I often find myself first understanding the surface-level logic of how things plug together and then diving into the details of how things work. This significantly ameliorates the effort involved in the first step.

0 views
Justin Duke 1 months ago

mise hooks

I've written before about having a standardized set of commands across all my projects. One of the things that helps with that is mise hooks. I've actually been migrating from justfiles to mise tasks over the past few months. mise already manages my tool versions, so consolidating task running into the same tool means one less thing to install and one less config file per project. The syntax is nearly identical—you're just writing shell commands with some metadata—and mise tasks have a few nice extras like file watching and automatic parallelization. mise has a handful of lifecycle hooks that you can use to run arbitrary scripts at various points: | Hook | When it runs | | --- | --- | | | Every time you change directories | | | When you first enter a project directory | | | When you leave a project directory | | | Before a tool is installed | | | After a tool is installed | I am not a fan of injecting scripts into things that you want to be as fast as humanly possible, but here's one exception: I use the hook to print a little welcome message when I into a project: This is a small thing, but it's a nice reminder of what commands are available when I'm jumping between projects. I'm always context-switching and I never remember what the right incantation is for any given project. This way, I get a little cheat sheet every time I enter a directory.

0 views
Justin Duke 1 months ago

Marcovaldo

Marcovaldo is a very fun and inconsequential collection of short stories. I struggle to recommend it to anyone who isn't a Calvino completionist. Not because it doesn't have inherent value, but because you can tell it's a little bit less refined than the works for which Calvino is rightfully better known, such as Invisible Cities and If on a winter's night a traveler. It's not to say that this is a bad collection. I had a lot of fun reading it and mulling over it. In a way, it's quite different than the style and subject that he became known for. His most famous works are simultaneously abstract and sharp, with a lot of glass-like ideas and passages. Conversely, this is a fairly shaggy collection. It's filled with textural work about what it was like to live and dream in post-war Italy. There's a lot of the overtly, as opposed to implicitly, political here, as well as a grappling with parenthood and adulthood that is still mixed with Calvino's trademark magical realism. At times, this felt like something like Run, Robert, Run mashed up with Marquez. If that's a combination that appeals to you and you've already read his more famous works, I highly encourage this. Perhaps an odd note to end on, given how inconsequential it is relative to the overall book, but Calvino writes a handful of times from the perspective of an animal—first, the inner life of a rabbit who knows he's about to die, and second, from that of a cat trying to escape the encroaching fog of urban growth. The animal perspective shtick is almost never successful and either ends up being too saccharine or too ridiculous to engage with on an earnest level. But, as with many rules that Calvino breaks, this one works.

0 views
Justin Duke 1 months ago

Dotfiles

Fernando convinced me to publish (and, therefore, clean up) my dotfiles : I’m interested in people who customize their experience of computing. This is often derided as “ricing”. But agency is interesting. People who remake their environment to suit them are interesting. And I am endlessly curious about how people do this. I like reading people’s init.el, their custom shell scripts, their NixOS config. It’s even better if they have some obscure hardware e.g. some keyboard layout I’ve never heard of and a trackball with custom gestures. I put my dotfiles up on GitHub because I imagine someone will find them interesting. My dotfiles are quite boring, but now they are public .

0 views
Justin Duke 1 months ago

Kiss Kiss Bang Bang

This was a really fun, silly movie—one I probably watched in high school and that very well might have become my entire personality. In a way, we're all better off that it didn't. About halfway through, I found myself thinking how deeply it reminded me of The Nice Guys , and felt quietly pleased with myself for realizing that Shane Black wrote and directed both films. They share the same strengths and the same flaws: a weak third act, where the obvious avenues of pastiche run dry and the movie retreats into generic, gratuitous action-movie spectacle. But at their best, these films are vividly alive. They pull off something that's genuinely difficult for pastiche: sustaining suspense about what's serious and what isn't. The jokes land, the timing holds up, and comedy—when it's done well—ages surprisingly gracefully. There are a few spots where this isn't quite true, and the occasional dip into melodrama cheapens the experience a bit. Still, that's a hard line for any film to walk, and this one does it better than most. Robert Downey Jr., playing a caricature of his pre–Iron Man self, is entertaining if not especially novel. The real standout, though, is Val Kilmer, who threads the needle perfectly, delivering his performance with exactly the right amount of irony. The bit parts remain just that—bit parts—and Michelle Monaghan does solid work, never tipping into manic-pixie-dream-girl territory or pick-me energy. Overall, it's just a really fun time—the kind of movie I'd happily rewatch in six months. My only substantive complaint is the same one I have with most of Black's filmography: the unnecessary thirty minutes of dull, overindulgent action scenes. They add nothing. Every moment not spent letting the three leads spar and riff off one another feels like a wasted opportunity.

0 views
Justin Duke 1 months ago

Wake Up Dead Man

There are three ways to evaluate Wake Up Dead Man: as a This was a very, very entertaining two and a half hours. I did not care for glass-onion , its predecessor, and I think this recovers from all of its missteps: the humor and plot are a little tighter, the script is a little less indicative of Rian Johnson spending too much time on Twitter, and the setting, production value, and aesthetic are all immaculate. But, moreover: Josh O'Connor's performance is not just good relative to this extremely accomplished bench of players in the background (Glenn Close! Andrew Scott!), but ascendant in its own right. Father Jud is probably the most interesting character in this entire series outside of Blanc himself, and O'Connor brings him to light with a nuance and warmth missing from even the sympathetic characters in this series. Between this and Challengers last week, I suddenly have a deep and great appreciation for this burgeoning young actor. 1 Not exactly a hot take, I'm aware. I think this movie's first goal is to entertain and delight, and its second goal is to seriously engage with its motifs on faith and doubt: where it succeeds in the second, it is on the back of Father Jud. (And in particular, the construction worker scene — you know the one — is Johnson at his finest, zagging from comedy to pathos and avoiding whiplash.) As a whodunit The contract between reader and writer of a whodunit is important . The joy in this medium, especially when executed well, is a real sense that you, as the reader or viewer, could have put the pieces together yourself — the joy in consumption is active because while you're enjoying the text of the work, you also get to try and be one or two steps ahead or behind the creator. This sounds obvious, but one of the reasons why Agatha Christie is, well, Agatha Christie, is that she knew how to balance this perfectly. The average Poirot mystery had you entering the final act with a handful of suspects who you all had reasons to believe were guilty, and were rich enough in their character that it wouldn't be completely out of left field if they ended up being the culprit. The best parlor scenes, accordingly, were less about filling in the gaps and more about drawing a through line between disparate clues that you had already picked up but had not connected. And here even more so than the previous two entries Rian Johnson fails. A bellwether of a bad parlor scene is length: it takes us around 20 minutes of flashbacks to go from the reveal of whom to the conclusion of why and how, much of it muddled and incoherent. What's worse, is that the Greek chorus of guilty suspects don't get crossed off so much as they simply fade into the background — don't get me wrong, it's fun to see Kerry Washington and Andrew Scott in these bit parts, but they are given tremendously little to do, are essentially miscast, and just like in Glass Onion , they do not feel like people so much as caricatures of people whom Rian Johnson wants to write a couple jokes around. Christie's novels work because you could see just enough introspection and motivation in all of the characters—not just the obvious one or two—to keep your mind racing. No such luck here: the ensemble never coheres. As a Knives Out sequel Much better than Glass Onion; arguably as good as the original film, though that had the relative freshness of its approach to buoy it. There are very few reasons not to watch this movie, and my quibbles are small: I would love to watch a new one of these every three or four years until I die. A couple other notes: film; 2. whodunit; 3. entry in the Knives Out canon. Josh Brolin's character was himself fairly flat and cartoonish, but Brolin delivers the performance with enough glee and menace that I didn't mind. I'm not sure when Brolin started shifting in my mind from a fairly generic actor to someone who knew exactly how to play against himself (Maybe it was Hail Caesar) but I'm almost never not excited to see him on screen. - Once again Johnson resorts to lampshading his influences (this time with an explicit syllabus!)

0 views
Justin Duke 3 months ago

October, 2025

How are you doing? Are you doing well? October's been very fun, as evinced by the length of things I am remiss in writing about: EntryThingy 2.0, Long Live The Post Horn, Spy Game, Poor Things, DuckDB, The War Room, The Straight Story, TypeID, Florida, Hex, Stainless, and more. The days are long; the nights are peaceful; Lucy is obsessed with brioche; Telly got a partial ACL tear and remembers to hobble around on three legs instead of four if my parents are over since they're liable to fall for it; my Schwinn got a tune-up; I wore my Albert slippers for the first time. Life accelerates; this year is a bullet train. I am free to wander from car to car but nothing changes our speed of one hundred and eighty miles per hour. This month lasted approximately three days; I would not trade those three days for anything in the world.

1 views
Justin Duke 3 months ago

Business as authorship

When Buttondown was a smaller company, the goal was to, quote unquote, stick around. That mostly meant making: for me to continue wanting to work on it. Now that all three of those things have proven themselves infinitely satisfiable, I'm sort of left with the existential crisis that comes from building a company without the explicit goal of world domination . The thing that I settled on as a North Star to justify continuing to work every day really hard on growing not just the product but the business itself is that I really want to show people this kind of alternate path for creating a software business: A business that is slightly more humane, much more sustainable, and provides substantial value and satisfaction to all involved without having to also bring Faust into the mix. I think any sort of ambition I have comes more from relative scale than absolute scale, if that makes sense. Leverage is a concept I think about a lot lately. It*'s way more interesting to me to work towards Buttondown becoming a 100-person company (in terms of scope, stability, repute, and polish) that happens to be staffed by 10 people than to have it become a 1,000-person company staffed by a thousand people. All of this is downstream of my own whims. It is not bluster for me to say that I constantly place my own ideals and idiosyncrasies ahead of Buttondown's objective financial success. Since Buttondown’s first year of existence, I have been awash in offers for capital, offers for acquisition, offers to do a completely unrelated job that happens to pay much, much more — all of which I turn down not even for moral reasons (there are lots of great uses for venture capital! I worked at two companies that would not exist without it!) nor for strategic reasons (it would be nice to throw five million dollars at solving MTAs!) but because, on many days, even the swampland ones where I'm spending a bunch of time digging through random SMTP logs while on hold with a random IP blocklist administrator based in Oslo, building a company feels like a form of authorship . I have spent the majority of the past five years trying to take how I feel about communication and technology and the social compact and put it into a little app that lets you email other people — this has been so successful that now, I find myself working with lovely people all around the world who agree with what I’m trying to say. There are three passages I’ve read that I think about almost every day: in order of my having read them, they are from East of Eden , Lincoln in the Bardo , and Working by Steinbeck, Saunders, and Caro respectively. Lee laughed. “I guess it’s funny,” he said. “I know I wouldn’t dare tell it to many people. Can you imagine four old gentlemen, the youngest is over ninety now, taking on the study of Hebrew? They engaged a learned rabbi. They took to the study as though they were children. Exercise books, grammar, vocabulary, simple sentences. You should see Hebrew written in Chinese ink with a brush! The right to left didn’t bother them as much as it would you, since we write up to down. Oh, they were perfectionists! They went to the root of the matter.” “And you?” said Samuel. “I went along with them, marveling at the beauty of their proud clean brains. I began to love my race, and for the first time I wanted to be Chinese. Every two weeks I went to a meeting with them, and in my room here I covered pages with writing. I bought every known Hebrew dictionary. But the old gentlemen were always ahead of me. It wasn’t long before they were ahead of our rabbi; he brought a colleague in. Mr. Hamilton, you should have sat through some of those nights of argument and discussion. The questions, the inspection, oh, the lovely thinking—the beautiful thinking. “After two years we felt that we could approach your sixteen verses of the fourth chapter of Genesis. My old gentlemen felt that these words were very important too—‘Thou shalt’ and ‘Do thou.’ And this was the gold from our mining: ‘Thou mayest.’ ‘Thou mayest rule over sin.’ The old gentlemen smiled and nodded and felt the years were well spent. It brought them out of their Chinese shells too, and right now they are studying Greek.” Samuel said, “It’s a fantastic story. And I’ve tried to follow and maybe I’ve missed somewhere. Why is this word so important?” Lee’s hand shook as he filled the delicate cups. He drank his down in one gulp. “Don’t you see?” he cried. “The American Standard translation orders men to triumph over sin, and you can call sin ignorance. The King James translation makes a promise in ‘Thou shalt,’ meaning that men will surely triumph over sin. But the Hebrew word, the word timshel—‘Thou mayest’— that gives a choice. It might be the most important word in the world. That says the way is open. That throws it right back on a man. For if ‘Thou mayest’—it is also true that ‘Thou mayest not.’ Don’t you see?” Please do not misunderstand. We had been mothers, fathers. Had been husbands of many years, men of import, who had come here, that first day, accompanied by crowds so vast and sorrowful that, surging forward to hear the oration, they had damaged fences beyond repair. Had been young wives, diverted here during childbirth, our gentle qualities stripped from us by the naked pain of that circumstance, who left behind husbands so enamored of us, so tormented by the horror of those last moments (the notion that we had gone down that awful black hole pain-sundered from ourselves) that they had never loved again. Had been bulky men, quietly content, who, in our first youth, had come to grasp our own unremarkableness and had, cheerfully (as if bemusedly accepting a heavy burden), shifted our life’s focus; if we would not be great, we would be useful; would be rich, and kind, and thereby able to effect good: smiling, hands in pockets, watching the world we had subtly improved walking past (this empty dowry filled; that education secretly funded). Had been affable, joking servants, of whom our masters had grown fond for the cheering words we managed as they launched forth on days full of import. Had been grandmothers, tolerant and frank, recipients of certain dark secrets,who, by the quality of their unjudging listening, granted tacit forgiveness, and thus let in the sun. What I mean to say is, we had been considerable. Had been loved. Not lonely, not lost, not freakish, but wise, each in his or her own way. Our departures caused pain. Those who had loved us sat upon their beds, heads in hand; lowered their faces to tabletops, making animal noises. We had been loved, I say, and remembering us, even many years later, people would smile, briefly gladdened at the memory. Caro (with apologies for the length): Because there was no electricity, there were no electric pumps, and water had to be hauled up—in most cases by the women on the farms and the ranches, because not only the men but the children, as soon as they were old enough to work, had to be out in the fields. The wells in the Hill Country were very deep because of the water table—in many places they had to be about seventy-five feet deep. And every bucket of water had to be hauled up from those deep wells. The Department of Agriculture tells us that the average farm family uses two hundred gallons of water a day. That’s seventy-three thousand gallons, or three hundred tons, a year. And it all had to be lifted by these women, one bucket at a time. I didn’t know what this meant. They had to show me. Those women would say to me, “You’re a city boy. You don't know how heavy a bucket of water is, do you?” So they would get out their old buckets, and they'd go out to the no-longer-used wells and wrestle off the heavy covers that were always on them to keep out the rats and squirrels, and they’d lower a bucket and fill it with water. Then they’d say, “Now feel how heavy it is.” I would haul it up, and it was heavy. And they’d say, “It was too heavy for me. After a few buckets I couldn't lift the rest with my arms anymore.” They'd show me how they had lifted each bucket of water. They would lean into the rope and throw the whole weight of their bodies into it every time, leaning so far that they were almost horizontal to the ground. And then they’d say, “Do you know how I carried the water?” They would bring out the yokes, which were like cattle yokes, so that they could carry one of the heavy buckets on each side. Sometimes these women told me something that was so sad I never forgot it. I heard it many times, but I’ll never forget the first woman who said it to me. She was a very old woman who lived on a very remote and isolated ranch—I had to drive hours just to get out there—up in the Hill Country near Burnet. She said, “Do you see how round-shouldered I am?” Well, indeed, I had noticed, without really seeing the significance, that many of these women, who were in their sixties or seventies, were much more stooped and bent than women, even elderly women, in New York. And she said: “I’m round-shouldered from hauling the water. I was round-shouldered like this well before my time, when I was still a young woman. My back got bent from hauling the water, and it got bent while I was still young.” Another woman said to me, “You know, I swore I would never be bent like my mother, and then I got married, and the first time I had to do the wash I knew I was going to look exactly like her by the time I was middle-aged.” To show me—the city boy—what washdays were like without electricity, these women would get out their old big “Number 3” zinc washtubs and line them up—three of them—on the lawn, as they had once every Monday. Next to them they’d build a fire, and they would put a huge vat of boiling water over it. A woman would put her clothes into the first washtub and wash them by bending over the washboard. Back in those days they couldn’t afford store-bought soap, so they would use soap made of lye. “Do you know what it's like to use lye soap all day?” they'd ask me. “Well, that soap would strip the skin off your hands like it was a glove.” Then they’d shift the clothes to the vat of boiling water and try to get out the rest of the dirt by “punching” the clothes with a broom handle—standing there and swirling them around like the agitator in a washing machine. Then they’d shift the clothes to the second zinc washtub—the rinsing tub—and finally to the bluing tub. The clothes would be shifted from tub to tub by lifting them out on the end of a broomstick. These old women would say to me, "You’re from the city—I bet you don't know how heavy a load of wet clothes on the end of a broomstick is. Here, feel it.” And I did—and in that moment I understood more about what electricity had meant to the Hill Country and why the people loved the man who brought it. A dripping load of soggy clothes on the end of a broomstick is heavy. Each load had to be moved on that broomstick from one washtub to the other. For the average Hill Country farm family, a week’s wash consisted of eight loads. For each load, of course, the woman had to go back to the well and haul more water on her yoke. And all this effort was in addition to bending all day over the scrubboards. Lyndon's cousin Ava, who still lives in Johnson City, told me one day, “By the time you got done washing, your back was broke. I’ll tell you—of the things in my life that I will never forget, I will never forget how my back hurt on washdays.” Hauling the water, scrubbing, punching the clothes, rinsing: a Hill Country wife did this for hours on end; a city wife did it by pressing the button on her electric washing machine. Tuesday was ironing day. Well, I don’t intend to take you through the entire week here, but I'll never forget the shock it was for me to learn how hard it was to iron in a kitchen over a woodstove, where you have to keep throwing the wood in to keep the temperature hot all day. The irons—heavy slabs of metal—weighed seven or eight pounds, and a Hill Country housewife would have four or five of them heating all day. In the Hill Country it’s nothing for the temperature to be 100 or even 105 degrees, and those kitchens would be like an oven. The women of the Hill Country called their irons the “sad irons.” I came to understand why. I came to realize that the man I was writing about had grown up in an area that was a century and more behind the rest of America, an area where life was mostly a brutal drudgery. When Lyndon Johnson became congressman he promised the people of the Hill Country that he would bring them electricity. They elected him congressman, but nobody really believed that he could do it. For one thing, there was no source of hydroelectric power within hundreds of miles. A dam had been begun on the lower Colorado River some years earlier, but the company that was building it had gone bankrupt in the Depression and its future was very uncertain. New federal financing was needed, and only the President could push that dam to completion. When Johnson got to Washington he became friends with Thomas Corcoran—“Tommy the Cork”—who was close to Roosevelt. Every time Johnson saw Corcoran he would say, “The next time you see the President, remind him about my dam.” And Corcoran reminded Roosevelt so often that finally one day Roosevelt said in exasperation, “Oh, give the kid the dam.” Once the dam was built, there was a source of electric power, but there still seemed no feasible way of getting this power out to the people. The Rural Electrification Administration had minimum density standards—about five persons per square mile, I think it was—and they said, “We're not going to lay thousands and thousands of miles of wire to connect one family here and another family over there.” The story of how Lyndon Johnson persuaded the REA to do this—how he circumvented through his ingenuity not only the REA but dozens of government agencies and regulations and brought the people electricity—is one of the most dramatic and noble examples of the use of government that I have ever heard. Actually it took more than ten years—it was 1948 before some of the people got electricity. But they did get it, and the men I talked to who had worked on the line-laying crews would tell me how they never had to bring lunch because the farm families were so grateful. When they saw the crews coming, stretching that precious wire toward them across the hills, they would set tables outside, with their best linen and dishes, to welcome the men. And all over the Hill Country, people began to name their children after Lyndon Johnson. This one man had changed the lives of more than one hundred thousand people—had brought them, practically by himself, into the twentieth century, and when Tommy Corcoran said to me, shortly before he died, “Lyndon Johnson was the best congressman for a district that ever was,” I knew exactly what he meant. Building anything of value requires tenacity that borders on mania; every good part of the built world in which we live is either natural providence or the life’s work of someone you’ll never get to meet. If you find yourself in the fortunate position to build one of these things — to improve the world and in so doing tell people things that you can’t phrase in words — I implore you to do it. It will not be easy; it will be worth it. enough money; providing enough value; and crucially, remaining interesting enough

1 views
Justin Duke 4 months ago

Adding imports to the Django shell

I was excited to finally remove from my file when 5.2 dropped because they added support for automatic model import. However, I found myself missing one other little escape hatch that exposed, which was the ability to import other arbitrary modules into the namespace. Django explains how to do bring in modules without a namespace , but I wanted to be able to inoculate my shell, since most of my modules follow a similar structure (exposing a single function). It took the bare minimum of sleuthing to figure out how to hack this in for myself, and now here I am to share that sleuthing with you. Behold, a code snippet that is hopefully self-explanatory:

0 views
Justin Duke 4 months ago

September, 2025

The last of summer's grip finally loosened its hold this September, and Richmond began its annual transformation into something gentler and more contemplative. This morning's walk with Telly required a dusting-off of the closet-buried Patagonia puffer jacket; it's perfect for walks with Lucy, who has graduated into the Big Kid stroller making it easier than ever for her to point at every dog ("dah!"), every bird (also "dah!"), every passing leaf that dared to flutter in her line of sight. As you will read below, the big corporate milestone for me this month was sponsoring Djangocon and having our first offsite over the course of a single week. Sadly, our Seattle trip was once again canceled. Haley and Lucy both got a little sick, and we had to abandon course. It's weird to think this will be the first year since 2011 that we have not stepped foot in the Pacific Northwest. More than anything though, I learned this month for the first time how impossibly difficult it is to be away from your daughter for six days. It is something I hope I have to go through again for a very long time.

1 views