We've had Lucy for two weeks, which qualifies us as experts, which means it is time to write about parenthood. (In all seriousness, consider the below descriptive and not prescriptive: mostly, it's a notepad filled with things that were remarkable or surprising or divergent from popular consensus.)
- American pop culture puts too much emphasis on the onus of diaper changing. Diapers are easy; swaddles are slightly more difficult (we've gone with what we refer to as "the three corners method"), and the true endgame foe is the onesie. Sleeves are difficult!
- We were nervous about Telemachus not adjusting well to having a baby sister in the house; instead, he is enamored with her, and already quite protective, and mostly just annoyed at my wife and me for getting up so often in the middle of the night.
- Common wisdom says that babies sleep for eighteen hours a day, the mechanics of which are hard to really internalize until you're amidst it. There is more downtime than you expect — it's just that the downtime comes in a random, somnambulant staccato.
- There is a surprisingly deep amount of variation amongst baby bottles. (We've gone with Dr. Brown; the form factor of the bottle itself is easy to wash, and the nipples are the right size.)
- You will spend so much time going up and down stairs; you will spend so much time washing (bottles, pumps, blankets, etc.)
- We have never been more vividly aware of our luck and fortune. DMs and texts and emails, hand-knit hats and blankets, embroidered sweaters, Doordashed lobster rolls and hand-delivered pots of 冬瓜海鲜羹, words of advice and encouragement: all of these things are glittering gems; our coffers overflow.
I think I could be good at this. I think you might find me useful.
Chatted with Jess and Jeremy about a whole slew of things, from pricing strategy to terrifying and arcane differences between various Markdown parsers (including why I hate Slack.) They were particularly kind and gracious given that the amount of production-quality Rails I've written is ~zero; you'll enjoy this even if Ruby/Rails is not your cup of tea.
In descending order of importance:
- I had a daughter, Lucy, the light of my life.
- I launched a tiny side project, handbook.directory.
- I cautioned against equivocating profile with praxis and overreacting to vendor outages.
- I jotted down some notes on Bluesky, and post-Twitter social media writ large.
- I suggested always using an enum instead of a boolean and keeping your marketing site separate.
- I read and opined on Creation Lake, High Output Management, and Cable Cowboy.
- I jotted down some notes on RSS in Next 14, MD5-based constraints in Django, and Founder Mode
I hope you are well; I, for one, am bleary-eyed and blessed.
One of the many parts of Ocean's Eleven's terrific legacy is the mistaken notion that all you really need for a film to be smooth and pleasant is a sufficient number of A+ actors playing some effervescent version of themselves.
This is, of course, not the case: Ocean's Eleven has many imitators and few peers (Logan Lucky being one of the few), because dedicating a film to the pursuit of pure pleasure is more difficult than it looks, and made more so by hackneyed attempts to shoehorn in an Albanian mobster subplot.
Parts of this movie feel deeply successful. The first few montages of Old Clooney driving through sleepy wintertime New York is borderline pornographic; Austin Abrams' four minute monologue is a tour de force that manages to hit a Linklater-esque melange of earnestness and humor; Clooney and Pitt sparring with one another is, even in a not-great film, fun.
But the first act falls off a cliff and into the realm of Red Notice-tier "what the fuck are these setpieces, anyway?" quicker than even a cynical viewer might expect. We are treated to the world's most bizarrely choreographed chase scene; an ethnically ambiguous "Club Ice" with a pager-sized MacGuffin; a too-long shooting sequence involving three people walking straight ahead and shooting blindly as if they're redcoats on an FPS with the difficulty turned down to zero.
Your love (or, rather, your acceptance) of this movie will hinge on just how charmed you can be Pitt and Clooney, gamely smirking and chuckling at the increasingly-vacuuous goings-on while perfectly well-clad.
For me: they elevated the movie, but not enough to warrant rating it anything more than a not-unpleasant way to pass the time.
(One little needle to end on: something about this movie's relentless refusal to commit to a tone reminded me of the MCU and its awful determination to cycle viewership through irony, slapstick, CGI, and pathos all in the span of a single over-produced five minute scene, so I was satisfied to discover that the director and writer is most well-known for the most recent few Spiderman movies. At least he didn't try to cast Tom Holland, too!)
I am a financier in a city ruled by financiers. My father was a financier in a city ruled by industrialists. His father was a financier in a city ruled by merchants. His father was a financier in a city ruled by a tight-knit society, indolent and priggish, like most provincial aristocracies. These four cities are one and the same, New York.
Today's gentleman is yesterday's upstart.
The majority of the best people I've worked with in industry — in either an individual contributor or management capacity — are not Meaningfully Online. Their Twitter profile (if they have one) is anodyne and focused on their city and personal interests; their LinkedIn is threadbare.
Building an online reputation from yourself is, in general, a good idea — one that requires a distinct skillset and yields a distinct portfolio of rewards. In particular, it's a great idea if you plan on persuing freelance work, educational / thought leadership work, or building your own business.
But if you're not interested in those career paths, becoming truly impactful in your field largely requires doing the kind of work that doesn't make for banal writing or pretty mockups:
- deeply understanding customers' problems and business goals;
- becoming an excellent communicator and mediator;
- having near-cursed levels of domain expertise.
These skills rarely go viral; the practitioners who have them never need to.
Lucy Frances Duke was born this week: on September 24, 2024. She came a few weeks early: a purported due date of October 13 was moved up a few weeks due to Haley having high blood pressure (asymptomatic, but slightly elevated nonetheless), but she came in at just over seven pounds and with the most perfect cheeks I have ever seen.
The first few days have been a bit of a glorious blur: I think fatherhood is one of those rare things uncapturable by prose. What I can say with confidence and poise is this: Lucy is adorable and healthy; Haley is strong beyond belief, and recovering well; I am the luckiest and happiest man alive, and the three of us are blessed to have not just each other but a family of uncles, aunts, cousins, grandparents, and friends far and wide.
Whether you enjoy Creation Lake or find it odious depends, I think, entirely on how credulous and interesting you find Sadie Smith, Kushner's unnamed and unmoored protagonist who glides through various left-wing subcultures and treatises with (excepting Bruno Lacombe, a sort of reclusive sage) equal parts indifference and disdain.
If you suspect Sadie to be mostly an authorial insert, whose chief role in the narrative is meant to voice Kushner's own (fatalistic, but with room for majesty and grandeur) commentary on the flaws and foibles of modern leftism, I think it is hard to enjoy this book. This was Brandon Taylor's perspective:
I mentioned to a friend that I was having a hard time with Sadie as a narrator because she seemed stupid and unaware that she was stupid, and my friend suggested that perhaps Kushner had done this on purpose, as a commentary on the ‘sharp woman’ archetype that has predominated in the fiction of the last decade. Perhaps. I replied that I couldn’t decide if the book was a smart person’s idea of a stupid book or a stupid person’s idea of a smart book. But I’ve come to think that the larger problem with Sadie is the difficulty presented by a character who reminds you on every page that nothing matters and nothing is real, and that the people she is scamming are phonies too, that everything is empty and hollow and that she’s smarter than everyone else because she knows the game is a game and is playing to win, but only for mercenary reasons. It brings me back to the question, why did you write this? What are you exploring here?
I think this is an uncharitable and uninteresting way to read the book. I do not think Kushner could be more explicit about Sadie's own shortcomings without fully sacrificing the first-person perspective: Sadie, in her own words, admits that she is an alcoholic, references only missions that she has failed to complete, and routinely fails to fulfill her plans. Indeed, it was hard not to read this book — to descend further into the psyche of Le Moulin, Sadie, and Bruno — and not be relentlessly reminded of Disco Elysium, a terrific and faceted work that ostensibly uses the trappings of genre to explore a very broken character through a leftist lens.
This is not to say that all of the book's flaws can be justified as authorial intent. Few characters besides Sadie and Bruno elevate themselves to more than one-line caricature (we've got the Houellebecq pastiche! we've got the Debord pastiche!); I enjoyed the long, didactic passages of Bruno's missives, but I think it's fair to criticize the novel less as something with concrete narrative propulsion and more as Kushner ambling slowly through a theme park of various topics (in a manner that is somewhat reminiscent of Cusk).
Still, this novel is rewarding. The prose is rich and sharp enough to warrant my renewed investment in The Flamethrowers; the tangents, even if they never quite cohere into something more elevated than "bourgeois cosplaying is silly, but the underlying beauty of leftist struggle remains", are compelling and crisp. I will be thinking about this book for some time to come.
Highlights
Pleasure augers survival.
“Sir, we hoe a row,” he told the police. “We plant potatoes. We don’t use pesticides. We nurture pollinators. But here is how the state does things: They have a deer population that’s getting out of control, so what do they do? They bring in lynx. When farmers get upset about the lynx, the government reintroduces wolves. The wolves kill livestock, so the state makes it legal to shoot them. Hunting accidents increase, so they build a new clinic, whose medical staff creates a housing shortage, necessitating new developments. The expanding population attracts rodents, and so they introduce snakes. And so far, no one knows what to do about the snakes.”
At risk of further succumbing to accusations of self-Flanderization, I'm compelled to draw comparisons between High Output Management and Final Fantasy VII: both works that are in some ways dated (not just by the technology of their time but by the extent to which they influenced the genre they propelled into the zeigeist) and yet stand up well in their own right, not just as part of the canon but as a useful and rewarding work in its own right.
I think many modern references to Grove evoke acidic, dusty feelings of OKRs and the distinct yesteryearishness of Intel; this is an unfair aspersion. Grove is down-to-earth and pragmatic here: much of the challenges he describes have been solved by the past decades of technology (and indeed it is hard not to come away from the book with a certain sense that our industrial organization system is too stymied by best practices that made sense in the 1980s more than they do today), but many things are evergreen: the importance of leverage, the necessity of judging a manager solely their team's performance, the criticality of information flow.
Most books about management do not actually improve the reader's ability as a manager; this is an exception.
In the Languedoc there is a vineyard that teaches us an important lesson about textbook learning and its application to the world. In the early Seventies it was bought by a wealthy couple, who consulted professors Emile Peynaud and Henri Enjalbert, the world’s leading academic oenologist and oenological geologist respectively. Between them these men convinced the couple that their new vineyard had a theoretically ideal microclimate for wine-making. When planted with theoretically ideal vines whose fruits would be processed in the optimal way according to the up-to-date science of oenology, this vineyard had the potential to produce wine to match the great first growths of Bordeaux. The received wisdom that great wine was the product of an inscrutable (and untransferable) tradition was quite mistaken, the professors said: it could be done with hard work and a fanatical attention to detail. The couple, who had no experience of wine-making but much faith in professorial expertise, took a deep breath and went ahead.
If life were reliably like novels, their experiment would have been a disaster. In fact Aimé and Véronique Guibert have met with a success so unsullied that it would make a stupefying novel (it has already been the subject of a comatogenic work of non-fiction). The first vintage they declared (in 1978) was described by Gault Millau as ‘Château Lafite du Languedoc’; others have been praised to the heights by the likes of Hugh Johnson and Robert Parker. The wine is now on the list at the Tour d’Argent and the 1986 vintage retails at the vineyard for £65 a bottle. The sole shadow on the lives of these millionaires is cast by the odd hailstorm.
That's correct. When I was younger, I grew up in the countryside of Japan. And what that meant was I spent a lot of my time playing in the rice paddies and exploring the hillsides and having fun outdoors. When I got into the upper elementary school ages — that was when I really got into hiking and mountain climbing. There's a place near Kobe where there's a mountain, and you climb the mountain, and there's a big lake near the top of it. We had gone on this hiking trip and climbed up the mountain, and I was so amazed — it was the first time I had ever experienced hiking up this mountain and seeing this big lake at the top. And I drew on that inspiration when we were working on the Legend of Zelda game and we were creating this grand outdoor adventure where you go through these narrowed confined spaces and come upon this great lake. And so it was around that time that I really began to start drawing on my experiences as a child and bringing that into game development.
Five-year goal: build the biggest computer in the world. One-year goal: Achieve one-fifth of the above.
It has been a while since I shipped a new thing; it felt good to get back in the saddle, even if the project was so small as to barely warrant the price of the (admittedly fun) domain. I present handbook.directory, a constellation of various once-internal PDFs for company culture. (This was inspired by the brouhaha around Mr. Beast's leaked manual.)
The entire contents is open source, though I'm using Blot to host it.
I was thinking about using this as an opportunity to kick the tires on Astro, but the sheer paucity of content and the fact that I really wanted to get this across the finish line in the course of a one-hour lunch break led me to Blot, which I had never used before but had roughly pigeonholed as "the easiest way to ship very simple static content".
That pigeonholing turned out to be accurate! There was a bit of onboarding jank choosing a theme and getting the DNS records set up (when is there not?) but I was very happy with how Blot performed. Moreover, the thing that really impressed me with Blot was just how fast deploys are. I hit git push blot
and by the time I hop over to Chrome and refresh the tab the changes are there.
It is a good reminder of the strides that we've made on the Buttondown front with CI — down roughly from twenty minutes end-to-end to ten — might be impressive in a relative sense but we've got a long way to go in an absolute sense.
There's no real "endgame" with handbook.directory
, but it got some solid traction on Twitter and ended up with a dozen GitHub stars and around three thousand pageviews. I'll take it!
Postmark had an eight-hour outage due to an SSL certificate expiry.
Buttondown was not affected; we send a lot of our custom domain traffic through Postmark, but all of it is hitting their API, rather than their SMTP, and their SMTP is what had the SSL issue.
Still, if we had been impacted we would have been fine. A few years ago I accidentally made a great decision to abstract out our backing ESP, which means at any point in time I can run a command like:
Newsletter
.objects
.filter(delivery_provider="postmark")
.update(delivery_provider="sendgrid")
Whenever these things happen, consternation always emerges: some about the specific genre of issue (“an SSL cert? really?”) some about time to resolution, some about comms. [1] Sometimes this discourse is productive; often it is not.
In particular, the least valuable genre of discourse is “well, it’s time to move to $COMPETITOR.” I say that this is not valuable because in general, you should operate under the assumption that every vendor you rely on will have an outage at some point in your time as a customer. (And, indeed, the competitor that I saw most often referenced as a replacement for Postmark has had a noteworthily poor amount of uptime over the past two years.) Your job as a technologist is not to find the one magic vendor that never goes down (it doesn’t exist!) but to build resiliency into your system such that the impact of any downtime can be minimized as much as possible.
This is not to say that you shouldn’t re-evaluate your choice in vendor due to outages — I initially moved off of Mailgun for that exact reason! — but that you don’t solve single point of failure issues by replacing one single point with another. [2]
Two other notes that this reminded me of:
- There is no easier way to generate negative karma than to try and use a competitor’s outage to your advantage. (To wit, I will probably never use Render.)
- I was talking with a founder friend a few months back about existential risks, and we both landed on the same conclusion: the single biggest vendor-related fear we had was Stripe.
Comms, by the way, is where I extend the least possible grace; I have, as of this writing, not yet received an email from Postmark informing me of the incident. ↩︎
This is unrelated, but: this is also why, at a meta-level, running a business where you can essentially be hot-swapped out by changing an endpoint or three is such brutal work. Especially when one of the endpoints that your customer base can switch to is, well, Amazon. ↩︎
The state of play
Much of the discussion about Twitter’s slow death — or, if not death, metamorphosis into a place where I prefer not to spend my time and energy — and its theoretical successors (Bluesky, Threads, et al) quickly turns to the realm of moral imperative, at which point it becomes to me odious and unproductive.
I frankly do not want to replace Twitter, nor do I want it to die. I owe my career and my business to the connections I’ve made there. I am a loyal fan, in much the same way the Joe Philbin era did not cause me to swear off the Dolphins forever (though perhaps it should have.)
For me, my motivation to replace Twitter is twofold and bluntly realpolitik:
- Many of my friends (digital and otherwise) are no longer on Twitter, and therefore it is a less compelling social network.
- Twitter no longer generates significant traffic either to my blog or to my business, and therefore it is a less compelling social network.
The past six months or so have been, to a certain extent, a listening tour of all the various heirs apparent to see what struck me as “better”.
- LinkedIn appears to be the network that has most obviously benefited over the past twelve months in terms of volume and activity. The experience of using LinkedIn feels roughly like a 101-level course on “business skills” at a liberal arts school — the algorithmic timeline is polluted with anodyne content (each one of them punctuated with a completely unrelated video to juice consumption metrics), my inbox is uncontrollable and filled with sponsored invitations to online MBA programs, and the amount of legitimate content that I am interested in consuming is probably around 5%. Despite these things, the network part of LinkedIn is great, and I have been able to forge legitimate connections.
- Threads feels very vividly like using a product that is undergoing some sort of internal civil war. There are parts to like and admire: I think it has the best interface of any social networking product I’ve used; I admire Meta’s forays into the developer ecosystem and the fediverse even if they’re probably coming from a cynical place. Unfortunately (and this might be true of Meta products writ large, but I don’t use Facebook or Instagram) Threads is so deepl[^]y committed to divorcing you from your follower graph that it’s hard to actually spend more than five minutes in the interface without finding a piece of content so anodyne/stupid that you close the tab, a strategy seemingly encouraged by their refusal to let you default to
Following
and decision to take a page out of LinkedIn’s book and push recommended content into the notifications tab. - Mastodon in many ways is the anti-Threads. Using Mastodon is a deeply calm experience; I see exactly the people and content that I have opted in to see, folks are generally very pleasant and polite, and I never feel like I am fighting against ActivityPub or the broader lattice of decentralization. However, the Mastodon experience is (in many cases intentionally!) poor, especially as a business: the inability to search instances for someone mentioning
buttondown.com
, the lag and jank of notifications, and so on, are not deal-breakers but do leave something to be desired. - Slack/Discord/WhatsApp are, as many people know, where the true juice is these days. The highest-bandwidth conversations I’m having are in hyper-specific, highly-engaged servers like
Email Geeks
andStockholm Syndrome Pythonistas
, filled with lots of really great discussions around a single topic. This is (and I say this knowing full well I run the danger of veering towards the realm of moral imperative!) not a social network by any non-trivial standard, because these discussions are not publicly visible and most importantly they are not indexed. This is useful in some respects — privacy augers candor — and sad in others, and I call it out less as a legitimate replacement for The Public Squre and more as a sad acknowledgement that the kinds of terrific, nuanced conversations that we were having in public ten years ago we are now having behind closed doors. - I am simply too old for TikTok.
Bluesky
This leaves the titular social network of this post, and the one that I find myself enjoying the most: Bluesky.
Setting aside whatever preconceived notions you might have as to Bluesky’s Twitter-inflected past, ATProto’s legitimacy as a protocol, or the word “skeet”, Bluesky checks all of my very specific, curmudgeonly boxes:
- It has an open and legible API (albeit one that is in flux);
- My friend and colleagues use Bluesky non-trivially;
- The interface is not unpleasant to use (which I do not mean in a damning-with-faint-praise way — my bar is simply “I do not want to actively feel bad whilst using the app”, and Bluesky meets that)
I think if you are in any kind of Hacker News-adjacent zeitgeist (which, if you’re reading this, you probably are!) you might want to sign up for an account. It’s a pretty good experience, and feels more than anything else like what being in a nascent-but-vibrant social network felt like a decade ago. It is not (to steal a phrase from Jacob Matson) load-bearing; most people are not yet on there, and whether that is a benefit or a drawback is left up to you to decide.
Bluesky Social PBC
One thing I find myself asking, in a spirit of good faith and charity: what is Bluesky’s endgame?
It is hard to make the finances for a social network really work (pour one out for Cohost). Threads obviates this problem by being part of the Metaverse; Mastodon’s decentralized architecture eliminates their need to really “have” an endgame.
Bluesky raised an $8M series A and appear by all accounts to be managing burn pretty reasonably, but the most optimistic/realistic path I see is a sort of “Twitter on New Game Plus” scenario — the same monetization route, with all of the niceties that they’ve accrued along the way (ATProto, open sourced clients, etc.)
It may be a failure of either imagination or conviction that I can’t see some other path; indeed, Bluesky’s success or failure probably hinges on their ability to find a path forward without having to construct the two-sided-advertising Borg (or to do so at a hitherto-unseen level of amicability).
Regardless of their future, I am quite happy they are giving it a shot, and I’m looking forward to spending more time over there (even if it’s in a decidedly POSSE manner.)
When I was first starting my career at Amazon — even more bright-eyed and rosy-cheeked than I am now — I was thrilled by the concept of an "architecture review", and by extension the concept of a "Principal Engineer" (Amazon's term for a staff-level engineer, someone beyond career level) who was always treated with some level of mystique and reverence.
This person's role, in the abstract, seemed much more exciting and powerful at the time than it does today — to be a sort of technical Commodus, weighing in from the heavens on various proposed schemas and designs, relying on sheer technical metis to make decisions that affect the lives of millions of people. [1]
One afternoon, we proposed a cluster of microservices for tracking various metadata across versions of Kindle eBooks to better track duplicates and divergences. After a two-hour presentation, we were thrilled to get only a tiny little bit of actionable feedback: squirreled away in the ERD we presented was some sort of is_active
field for each revision of the book, which we would use to filter out revisions of an eBook that weren't circulating on customers' devices. His comment:
Shift
is_active
to something more generic: astatus
field, so we can expand it down the line for other parts of the state space.
As luck would have it, this principal engineer was stuck in an elevator with me heading down from Obidos across the street, and he kindly endured my timid battery of questions: what was it like, doing all these reviews? How did he notice the is_active
field specifically? What did he think about how we were approaching PubSub? And so on.
He paused for a moment, and then said:
Honestly, 80% of the time in these meetings I just tell people to either use an enum instead of a boolean or to make it more clear which data is events and which is state. I'm always right, it's always useful, and there's never that much fuss about it.
It took me a couple more years to realize the broader implications of what this nice Swedish man was saying, but I find myself returning to the object-level architectural advice more often than not. It's not a free lunch, but prematurely turning state from a binary into an enum is an easy way to save yourself — not quite a migraine headache, but a headache nonetheless — down the line when you inevitably need to expand active | inactive
into active | inactive | paused
or what have you.
This is of course a simplification of the role, which speaks in equal parts to my then-naivete and to Amazon's dearth in career ladder education. ↩︎
“Sir, we hoe a row,” he told the police. “We plant potatoes. We don’t use pesticides. We nurture pollinators. But here is how the state does things: They have a deer population that’s getting out of control, so what do they do? They bring in lynx. When farmers get upset about the lynx, the government reintroduces wolves. The wolves kill livestock, so the state makes it legal to shoot them. Hunting accidents increase, so they build a new clinic, whose medical staff creates a housing shortage, necessitating new developments. The expanding population attracts rodents, and so they introduce snakes. And so far, no one knows what to do about the snakes.”
Pleasure augers survival.