Sign in

Justin Duke

@jmduke.com
1.5K followers 143 following 1.2K posts

The Buttondown guy

PostsRepliesMedia
Justin Duke @jmduke.com · 26/09/2026
the buttondown team is meeting this week to talk about 2027! what are the things that, if we do them, you would go "oh FINALLY_"?
031
Justin Duke @jmduke.com · 24/09/2026
yeah, I don't regret the backend/frontend split (I think forcing ourselves into a node backend would be fraught) but just wish we had done React instead.
010
Justin Duke @jmduke.com · 24/09/2026
(Hi, I work on Buttondown) mind if I email you for deets so we can fix this?
100
Justin Duke @jmduke.com · 05/09/2026
www.jmduke.com/posts/coffee...
000
Justin Duke @jmduke.com · 05/09/2026
when they're right they're right bsky.app/profile/tang...
130
Justin Duke @jmduke.com · 23/08/2026
isFull was right there!!!
120
Justin Duke @jmduke.com · 22/08/2026
Optimist: The cup is half full Pessimist: The cup is half empty Caro: His name was Emmett Doyle, and he was not a man who astonished easily, and he was not a man whose opinion anyone had ever requested. He had poured for aldermen and for the men who owned aldermen. He had poured, in 1934, for a go
090
Justin Duke @jmduke.com · 20/08/2026
forgot to mention but another underrated part of WHAS is david hyde pierce showing up like spiderman and absolutely crushing the vibe www.jmduke.com/posts/wet-ho...
020
Justin Duke @jmduke.com · 20/08/2026
this was one of my favorite parts: not even capitalism as bad, but (speaking obviously as an american) capitalism as a _choice_, something a society could adopt instead of it having already done so
010
Justin Duke @jmduke.com · 20/08/2026
www.jmduke.com/posts/a-mast... a film I will forever remember as the one that pushed me to listen to an episode of blank check
000
Justin Duke @jmduke.com · 09/08/2026
www.jmduke.com/posts/second...
Secondhand Time is an oral history of the regions comprising the former USSR, compiled almost entirely from firsthand narrative: actual people recounting their past. It is sprawling and nonlinear. There are obvious messages the author is trying to communicate — but unless I am in for a rude awakening, there is going to be no denouement that deeply recontextualizes or reshapes everything that came before.

You hear countless stories, repetitive and rhapsodic, from every possible walk of life, though almost all of these walks involve the scars and bruises left by war and revolution. The only unifying thread is sadness and bitterness — not nostalgia, though certainly some of these stories contain nostalgia, so much as the sense of a country weeping for all the pain it has gone through.
110
Justin Duke @jmduke.com · 06/08/2026
I'll probably end up writing a follow-up piece because a lot of folks have asked that, but the short version: 1. ecosystem is much weaker than react's 2. the 2→3 migration has left the API in a weird place 3. abstractions like SFCs feel "worse" to me than React/JSX's purely functional approach
120
Justin Duke @jmduke.com · 06/08/2026
buttondown.com/blog/what-i-...
Buttondown is written in Django for a boring but revealing reason: it's what I knew at the time. Back in 2018, I was working for a company whose stack was Django and Vue, and I had been hired as someone with extensive amounts of Django experience (meaning: I knew what South was, for you fellow old-timers.)

One of my longstanding philosophies has been to limit innovation tokens. I didn't want to spend time context-switching between frameworks as I went from my day job to my side project. Over the intervening eight years, I've found myself ruing my choice of Vue as a front-end framework — but I can honestly say that, even if it wasn't a meticulously reasoned and considered choice, I have not for one second regretted using Django.
1100
Justin Duke @jmduke.com · 05/08/2026
www.jmduke.com/posts/patch-...
For Guildrun, the 3 major groups of players are the Climbers, the Endless Mode players, and the Red Rift players. The Climbers are players who are in the process of climbing through the difficulties to unlock and complete all of Guildrun's content, and are currently our largest group of players by a decent margin. Everyone starts out as a Climber, and for many of these players the quest to discover everything the game has to offer is the game. The experience that players have during their climb through the difficulties is incredibly important to us, and the feedback from Climbers helps make the game better for all Climbers, present and future. Since the primary goal for most Climbers is to progress up the game's difficulties, it's easy to understand why nerfs can feel like an obstacle standing between them and their goals, and why buffs feel like a helping hand.

It does not require a lot of rhetorical justification to understand how this might apply to traditional software. Software tends to grow more complex and featureful over time, which rewards edge case users who have already onboarded at the expense of new users; conversely, redesigns or radical simplifications of an interface might be a net positive for new users without any muscle memory whatsoever, but are often experienced as a net negative to experienced users who log in to find that all of their cheese has been moved.
020
Justin Duke @jmduke.com · 05/08/2026
funnily enough, this was the option I was going to try out next if mprocs proved unwieldy! it seems like a better option if you don't have huge spikes of logs from specific services like we do
110
Justin Duke @jmduke.com · 04/08/2026
two tools i am grateful for lately: op and mprocs www.jmduke.com/posts/two-to...
jmduke.com
op, mprocs
Two small tooling changes that have been really nice for us at Buttondown: 1Password CLI A long-standing annoyance has been dealing with secrets and coordina...
110
Justin Duke @jmduke.com · 04/08/2026
a brief glimpse inside our rigorous, data-driven planning process:
130
Justin Duke @jmduke.com · 04/08/2026
people liked this one! now time to add it to my own site bsky.app/profile/butt...
191
Justin Duke @jmduke.com · 02/08/2026
www.jmduke.com/posts/best-o...
I hesitate to succumb to instinct and laud both them and the middle-brow public that appreciated and rewarded the idea of intellectualism. The histrionic fondness with which we might remember their patrician accents could very well be said, thirty or forty years from now, of people discovering blogs and pining for the days when public intellectuals would so candidly and openly write on Wordpress or whatever. Additionally, I don't buy at face value the film's thesis that these debates were the birth of American punditry. In no small part because I think television itself was the birth of American punditry — an organism that simply required some time to incubate.

But these two guys are fascinating, and the debates are riveting, and this documentary gets to carry that respective sunlight. The film takes an unflinching look at who these people were and what drove them. How clearly you can see that these two men led twinned lives, to a certain extent: both ultimately failed ambitions, both incredibly intelligent, and — in what seems so deeply interesting, perhaps more so than the denoument of their careers after the debates — both horribly, horribly despondent toward the end of their lives.
020
Justin Duke @jmduke.com · 02/08/2026
maledictology: www.jmduke.com/posts/cursed...
120
Justin Duke @jmduke.com · 02/08/2026
1. almost certainly a bug, will investigate/fix 2. this makes me miss biking the burke-gilman and pausing every hundred yards to grab a blackberry or two
131
Justin Duke @jmduke.com · 06/07/2026
belated but you're right ofc! will fix, ty
000
Justin Duke @jmduke.com · 07/02/2026
in a way it feels more perfect than anything else of his I've seen, as bold as that is to say. there is absolutely nothing wasted in it
110
Justin Duke @jmduke.com · 07/02/2026
Rope! www.jmduke.com/posts/Rope%2...
130
Justin Duke @jmduke.com · 07/02/2026
i have 10 months of glory, then
010
Justin Duke @jmduke.com · 07/02/2026
nooooooo
200
Justin Duke @jmduke.com · 06/02/2026
If I haven't somehow messed up the XSLT, I have officially joined the cool kids club by styling my RSS: www.jmduke.com/feed.xml
jmduke.com
270
Justin Duke @jmduke.com · 05/02/2026
my god they did kiefer dirty
010
Justin Duke @jmduke.com · 05/02/2026
i would encourage you to watch THE DOUBLE, a film whose quality is aggressively out of proportion with its reputation www.jmduke.com/posts/the-do...
150
Justin Duke @jmduke.com · 05/02/2026
oh holy shit dq7 remake?
100
Justin Duke @jmduke.com · 04/02/2026
The Black Hawk War, or, How to Demolish an Entire Civilization and Still Feel Good About Yourself in the Morning, or, We Apologize for the Inconvenience but You're Going to Have to Leave Now, or, 'I Have Fought the Big Knives and Will Continue to Fight Them Until They Are Off Our Lands!'
020
Justin Duke @jmduke.com · 02/02/2026
The thing about The Killer is that that it's a farce. www.jmduke.com/posts/the-ki...
130
Justin Duke @jmduke.com · 31/01/2026
www.jmduke.com/posts/ocean-... on today's episode of i love films
040
Justin Duke @jmduke.com · 30/01/2026
how does manufacturing work in this context? if you have a horseshoe factory that takes in ingots and spits out horseshoes, I could be a perfectly-informed counterparty and still find economic value due to time/labor/capital constraints
120
Justin Duke @jmduke.com · 28/01/2026
i haven't (though it's on my list), but if its any consolation he literally says the same thing as you in the film
000
Justin Duke @jmduke.com · 28/01/2026
www.jmduke.com/posts/the-pi...
110
Justin Duke @jmduke.com · 28/01/2026
new bio bsky.app/profile/book...
0100
Justin Duke @jmduke.com · 26/01/2026
you are missing nothing except the fact that it's a cop-out because we couldn't decide where to put it (since reasonable minds might want it in either place.) you can hide whichever one you don't want via CSS, and we'll add a toggle to actually move it from one place to the other this week
120
Justin Duke @jmduke.com · 12/01/2026
3 stars..... out of ten?? (her acting is the second-best part of the show though, after janney's)
100
Justin Duke @jmduke.com · 12/01/2026
www.jmduke.com/posts/levels...
020
Justin Duke @jmduke.com · 29/12/2025
In retrospect the first example should have been something else, since it's not even a "true" example (the newsletter prefix should be part of the locale string!)
020
Justin Duke @jmduke.com · 29/12/2025
tyty!
010
Justin Duke @jmduke.com · 29/12/2025
sitemaptorss: www.jmduke.com/posts/sitema...
040
Justin Duke @jmduke.com · 27/12/2025
the very small blog post that caused a 30-minute rabbithole which led to the above: www.jmduke.com/posts/single...
jmduke.com
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...
210
Justin Duke @jmduke.com · 27/12/2025
on the off chance that you are debugging the same thing I am: 1password's chrome extension now ships a version of Prism.js that conflicts with other syntax highlighters. Not Great! www.1password.community/discussions/...
1password.community
[BUG] Beta and Nightly extension degrade page's original functionallity | 1Password Community
I was looking https://shiki.style/guide/install , an NPM package which provides syntax highlighting and showing detail hovering on keywords. It is expected...
230
Justin Duke @jmduke.com · 22/12/2025
oh smh. it's helium.computer. thanks for the flag!
helium.computer
Helium Browser
The web browser made for people, with love. Best privacy by default, unbiased ad-blocking, no bloat and no noise. Fully open source.
010
Justin Duke @jmduke.com · 22/12/2025
on the first day of code freeze 🎶 disposables.app
disposables.app
Disposables.app
An open-source database of disposable email domains
050
Justin Duke @jmduke.com · 21/12/2025
Notes on SLEUTH (1972): www.jmduke.com/posts/sleuth...
000
Justin Duke @jmduke.com · 21/12/2025
number of words written into our support tool (I am in last place amongst the team)
140
Justin Duke @jmduke.com · 20/12/2025
a not-insignificant reason we invest in social media analytics/automations is because literally every single other tool we've tried is not particularly good for our use case bsky.app/profile/butt...
091