Sign in

Justin Duke

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

The Buttondown guy

PostsRepliesMedia
Justin Duke @jmduke.com · 05/09/2026
www.jmduke.com/posts/coffee...
000
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
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
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 · 04/08/2026
a brief glimpse inside our rigorous, data-driven planning process:
130
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 · 07/02/2026
Rope! www.jmduke.com/posts/Rope%2...
130
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 · 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 · 28/01/2026
www.jmduke.com/posts/the-pi...
110
Justin Duke @jmduke.com · 12/01/2026
www.jmduke.com/posts/levels...
020
Justin Duke @jmduke.com · 29/12/2025
sitemaptorss: www.jmduke.com/posts/sitema...
040
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
Wrote about Paris, Texas. www.jmduke.com/posts/paris-...
110
Justin Duke @jmduke.com · 18/12/2025
CONCLAVE (2024). www.jmduke.com/posts/concla...
040
Justin Duke @jmduke.com · 17/12/2025
Playing around with my media section on the new personal site has been fun. Here's a variant (live right now but likely not for long) where its sorted by luminosity:
180
Justin Duke @jmduke.com · 09/12/2025
(i work on buttondown, and also got said end-of-year round-up) yup! it's under "design": demo.buttondown.com/settings/des...
120
Justin Duke @jmduke.com · 03/12/2025
reviews are rolling in
020
Justin Duke @jmduke.com · 21/11/2025
the SEO spammers are evolving
020
Justin Duke @jmduke.com · 16/11/2025
Really proud of how often people write in about this little affordance for showing CSS selectors in the preview pane. Built it for myself because I was getting annoyed whilst dogfooding (which is why you should dogfood constantly.)
2140
Justin Duke @jmduke.com · 15/11/2025
It took an embarrassing amount of dithering but I finally settled on a Starship format that I like.
2130
Justin Duke @jmduke.com · 06/11/2025
(one more for good measure)
240
Justin Duke @jmduke.com · 06/11/2025
couldn't agree more. some work in progress:
240
Justin Duke @jmduke.com · 04/11/2025
Some WIP from today.
070
Justin Duke @jmduke.com · 01/11/2025
idlewords.com/talks/deep_f...
070
Justin Duke @jmduke.com · 30/10/2025
6243
Justin Duke @jmduke.com · 29/10/2025
WIP.
020
Justin Duke @jmduke.com · 29/10/2025
Very happy with how this turned out. demo.buttondown.com/settings/des...
060
Justin Duke @jmduke.com · 24/10/2025
WIP.
150
Justin Duke @jmduke.com · 20/10/2025
Columnar re-arrangement: only five people will ever use this because it's impossible to make discoverable, but those five people will love it!
2100
Justin Duke @jmduke.com · 11/10/2025
020
Justin Duke @jmduke.com · 10/10/2025
Some WIP from today.
030
Justin Duke @jmduke.com · 08/10/2025
Always particularly satisfying when the commit also works as a blog post.
https://gist.github.com/jmduke/d3afb6209e71c8a5fa8634289e416d04
030
Justin Duke @jmduke.com · 05/10/2025
Oranges, John McPhee
“Later writers have guessed that Volckamer was ignorant of the effects of frost. My own belief is that science erases what was previously true. The earth was the center of the universe until Copernicus rearranged it. Life did begin in Eden before Darwin restyled it. In the early eighteenth century in Nuremberg, a woman did sit in the branches of an orange tree and kill it to the ground.”

Excerpt From
Oranges
John McPhee
020
Justin Duke @jmduke.com · 27/09/2025
3192
Justin Duke @jmduke.com · 25/09/2025
the strangest and most glorious year of my life.
1250
Justin Duke @jmduke.com · 23/09/2025
posting this in blind hope that I remember it next time before spending ten minutes searching my notes for "const" and "partial" like some sort of bozo
000
Justin Duke @jmduke.com · 16/09/2025
one thing that you can never accuse me of is having an LLM write my changelog entries
020
Justin Duke @jmduke.com · 16/09/2025
unfortunately, sometimes the window is unflattering bsky.app/profile/gina...
100
Justin Duke @jmduke.com · 09/09/2025
people were asking what buttondown "does". i think this will help
060
Justin Duke @jmduke.com · 06/09/2025
the duality of infant
080
Justin Duke @jmduke.com · 05/09/2025
great minds
110
Justin Duke @jmduke.com · 04/09/2025
with the caveat that we're not close to statistical significance, I will say this — after dragging my feet for a long time on launching an onboarding survey, I am pretty shocked by at least one of the results. this was not my mental model of new users!
130
Justin Duke @jmduke.com · 02/09/2025
THE BAD NEWS: buttondown is now sufficiently corporate such that we have an onboarding survey THE GOOD NEWS: i convinced my boss to let me keep in some great microcopy for the skip button
2211