More from Applied Cartography
Buttondown's core application is a Django app, and a fairly long-lived one at that — it was, until recently, sporting around seven hundred migration files (five hundred of which were in emails, the "main" module of the app). An engineer pointed out that the majority of our five minute backend test suite was spent not even running the tests but just setting up the database and running all of these migrations in parallel. I had been procrastinating squashing migrations for a while; the last time I did so was around two years ago, when I was being careful to the point of agony by using the official squash tooling offered by Django. Django's official squashing mechanism is clever, but tends to fall down when you have cross-module dependencies, and I lost an entire afternoon to trying to massage things into a workable state. This time, I went with a different tactic: just delete the damn things and start over. (This is something that is inconsiderate if you have lots of folks working on the codebase or you're letting folks self-host the codebase; neither of these apply to us.) rm rf **/migrations/* worked well for speeding up the test suite, but it was insufficient for actually handling things in production. For this, I borrowed a snippet from django-zero-migrations (a library around essentially the same concept): from django.core.management import call_command from django.db.migrations.recorder import MigrationRecorder MigrationRecorder.Migration.objects.all().delete() call_command("migrate", fake=True) And voila. No fuss, no downtime. Deployments are faster; CI is much faster; the codebase is 24K lines lighter. There was no second shoe. If you were like me 24 hours ago, trying to find some vague permission from a stranger to do this the janky way: consider the permission granted. Just take a snapshot of your database beforehand just in case, and rimraf away.
Humane Inc. started in 2018; it raised around $250M over five years before coming out of stealth mode with an AI pin that people did not like very much, and today they announced their sale (or, to be specific, the sale of their patent library) to HP for $116M. Here is a hype video from July 2022, over a year before they ever announced — let alone released! — a product. I don't think we draw many interesting lessons from Humane. They feel like a relic from a younger, more Juicero-drenched era: even while they were in stealth mode there was an obvious perfume of vaporwave about them, and I think there's nothing inherently wrong with taking big, ambitious, VC-subsidized swings at gnarly problems that don't quite pan out. The two relatively novel things that come to mind are: "Huge amounts of capital" is a good way to finance infrastructure, and a poor way to finance design. [1] Any company that releases a $700 product for consumers and then neuters it with two-weeks' notice for non-existential reasons is, in a meaningful way, evil. At risk of veering into ad hominem, I think any company that releases a music video before it releases a product is obviously doomed — and one thing that a nigh-infinite runway tends to do is justify poor decisions under the auspices of long-termism. ↩︎
Matthieu asks: Since you do a lot of things (investor, dad, owner of a "small" business, blog writer) I was wondering what you don't do to keep up with this level of commitment. In the same line, it often said that behind one person success, there's a wife/husband that helps to manage those others things. First, as a broad, abstract answer I point people to Two Big Things, which I’ve found to be broadly Correct: Some people try to “have it all.” Men and women both. But it’s never true. At most two can function well; the rest do not. More often, there’s just one that receives the majority of the energy, and the rest suffers. The personal answer I give is going to be out-of-date: the truth is, I’ve experienced fatherhood for around five months and I’ve experienced “fatherhood while trying to also ‘do work’” for less than half that time, and I don’t think any in medias res description is going to be accurate, let alone useful. (If I were to try to put it into words right now, it’d probably be something like: I’m up for eighteen hours a day, six of those are spent on Lucy duty, eight of those are spent on Work, two of those are spent on keeping the house and family in order, one of them is spent lifting, and one is spent on Telemachus.) The pre-Lucy answer is probably more useful, even if its now firmly entrenched in the past. When Haley and I talked about what my life as an independent technologist would look like, we settled on some ground rules, unimpeachable clauses in my contract not just as a husband and “person who wasn’t an absolute shit to live with”: to have dinner together every night, to take good care of myself (sleep well, eat healthy, work out every day, stay hydrated and sun-touched), to not lose sight of my own luck and providence. Those things were — and are — my topsoil. Everything else is labor — labor by choice, but hard work nonetheless. A lot goes by the wayside! I am a terrible friend and correspondent these days; I love television and film but saw maybe a dozen movies total this year and only watch what Haley and I can consume during dinner (which in 2024 was all seventeen series of Taskmaster); I travel and experiment and hobby less than I otherwise would. And exchange, agency: an infinitely flexible schedule (though we define flexibility here to mean “can take off a random day for no reason and go for a lovely walk through Maymont” more than “can throw phone into the ocean for a week and know that the rest of the team will fill in the gaps”); work that even on its most menial days I take full pride and equity. I would be mortified if you read this (or, indeed, any of my writing) as a paean to Grindset. I'm proud of what I've built, and the sacrifices it took to build it; I'm grateful for the life it's let me stumble into living, and would happily make the same choices again — knowing now with certainty where they would lead me. But doing This Kind Of Thing means being in worse shape than I'd like to be, and spending less time with my friends than they deserve. These are reasonable (and temporary) choices, but they are choices nonetheless, and anyone who intimates that sufficiently divine levels of energy and discipline will exculpate you from making them is either a fool or a liar with something to sell.
What a start to the year! January was a bit more flat-packed than I think Haley and I would have otherwise liked, but all with great things. (Highlights include: first weekend trip with Lucy, signing a lease on an office, and Third South's annual offsite.) A roundup of writing from the past month: A quick note on nominative determinism, and where Buttondown got its name Lots of media reviews: Catch Me If You Can, Book of Clouds, Becoming Trader Joe (!), We Own This City, Bringing up Bebe, Planes, Trains, and Automobiles, A small snippet on truncating timedeltas in the Django ORM Not as much fun writing in January than I had in the past few months; I promise my backlog of topics is longer than ever before.
More in technology
Waymo’s factory, a map of US land values, ships in the Arctic Circle, battery industry trends, and more.
What `git config` settings should be defaults by now? Here are some settings that even the core developers change.
Dean Burnett writing for Science Focus: Your Brain Is Hard-Wired to Avoid Exercise. Here's Why So why, even though we’ve evolved to do it, doesn't everyone enjoy exercise? The baffling complexity of the human brain is to blame. Evolving an ability doesn’t
It’s been fantastic being in the Philippines for this year’s WordCamp Asia. We have attendees from 71 countries, over 1,800 tickets sold, and contributor day had over 700 people! It’s an interesting contrast to US and EU WordCamps as well in that the audience is definitely a lot younger, and there’s very little interest in … Continue reading WordCamp Asia and Maha Kumbh Mela →
I’m not trying to send any hate at a random MacRumors forum commentor who I don’t know, so please take this more as me explaining why there’s more skepticism about the Vision Pro than other gen-1 Apple products. From the post: BTW, I also