People making the argument “LLMs are good for code now; don't get left behind” sound to me like they're saying “Doritos taste better than vegetables; we should make them a food group” like maybe there's some missing nuance there around the ways that human brains respond to usually-correct automation.
2026 Mar 09
I've got most of the common tailwind selectors memorized now, about 5 years into using it a lot. For the work I do, Tailwind has been a pretty great tool. I do all my own design for my own development, and my process is fairly exploratory: I get stuff into a browser in HTML using a hot-reload, and see if I like it. Repeat. Without question, as a tool it helped me get comfortable with flexbox, grid, and a bunch of other stuff it would have been much more of a slog to figure out without it.
I feel pretty dirty about avoiding the cascade though.
And I don't love the extra build step. And I don't love having to wrestle with group-hover: and all the stuff that really is easier when you're working more directly with the hierarchy. And and and.
So I put together a vim snippet engine with tailwind-cli under the hood. The idea is to keep using the tailwind selectors because they're terse, but burn them off at write time instead of build time, and work more directly with classes and elements. The selector stays in a comment after the expansion, so that I know what the actual CSS signifies, and so it can be unexpanded.
2025 Nov 25
There’s an archetypal blog post going around right now, a sort of apologia in which a techie programmer man is talking himself into embracing generative AI tools despite his initial skepticism, various ways in which it's unreasonable to expect him to think of himself as a bad person despite the externalities, pointing out that it sometimes works to a startling degree and so we have no choice now but to embrace it, etc, etc.
These posts often have some appeal to authority, where the author says that he was convinced to set his skepticism aside and give our AI zeitgeist a fair chance by ‘some of the smartest people I know,’ or some similar phrasing.
I feel it's worth noting that I don't think I've yet seen anyone argue he was convinced by any of the wisest people he knows.
2025 Nov 17
Amazon, GCP and Azure really should give me some way to report IP addresses that are asking for any .php URL at all, since the accounts behind those IPs could be terminated for malicious activity with zero false positives.
2025 Nov 13
I wish it wasn’t so low-grade depressing to watch Apple revert to the mean.
Listening to a radio piece with a tech author being interviewed about her (the author's) own system prompt for ChatGPT and it's an air-quotes life coach that she (the author) is clearly proud of and she (the author) doesn't seem like she (the author) is completely in the cult but keeps referring to her (the author's) air quotes life coach slash imaginary friend as "her" and "she" and I'm having a lot of trouble squaring this with the idea that she (the author, not the enormous pile of linear algebra) not seeming completely in the cult.
2025 Jun 14
I decided to install the new version of iOS with this 'liquid glass' jazz. Apple gave its design rationale as getting out of the way of 'your content.' In a WWDC video an Apple designer breaks down how complex and subtle the transition animations are when floating controls shift from light mode to dark mode, to blend in with 'content' as I scroll.
I can see how someone could talk themselves into thinking this is a good idea. In practice, though, scrolling high contrast images can make the fixed-position controls shimmer as various blend transitions trigger and the controls try to keep up. This triggers those hunter-seeing-prey instincts and does the opposite of getting out of the way of (ugh) 'my content.'
2025 Mar 24
The graphic design of Medium is coming to signify for me: “3-10x more words than necessary from a person who has never encountered a fad before trying to become THE thought leader on a new fad.”
2025 Feb 26
This sounds boneheaded and obvious in the way that eventual epiphanies sometimes do: I've had a realization about construction numbers as data. I think something about computer brain makes me, by reflex, model things like horizontal attachment spacing as integer numbers of inches.
But they're not integers. They'd be far better modelled as an enumeration type until shown otherwise: they have to line up to a conventional grid derived from stud spacing: 16", 24", or 32", with no valid values in between. Far better to use keywords like :h-16, :h-24 or :h-32. Then I wouldn't have annoying buggy misses on equality checks where 16 doesn't equal 16.0000004 (thanks JavaScript), or fat-fingerings that I can't even see for a while like a vertical spacing of 32" (should be 36", ie. :v-36).
2025 Feb 10
Many of the pathologies around our 'data-driven' zeitgeist feel to me like they're pathologies around how rigid computers are. My speculation is that there's a deep link to categorization there someplace. And categorization is very squishy when we apply it to the real world, eg. the theoretically yes/no question "is the Pope a bachelor" is unanswerable: you have to answer the question with other questions about the context in which we care about the answer. I'm half-hoping some sort of cognitive earthquake around "data," something at the same level of upsetting as seeing quantum mechanics or Gödel's Theorem for the first time.
2025 Feb 05
I'm trying to shift as much hosting off the US tech giants as possible because
2025 Jan 31
Free Clojure macro idea: (tap-> ,,,) and (tap->> ,,,). They're like -> and ->>, but they run tap> between every step in the thread, so you can observe the progression of transform into something like portal.
2025 Jan 30
I have to admit I'm baffled that sharing shortcuts should work at all differently on iOS Safari versus Mac Safari. It all has that vibe that features used by 0.001% of a user base have.
2025 Jan 27
I managed to set up link posting straight from iOS Safari using a Shortcut.
2025 Jan 23
First, watch these videos:
What I find refreshing about them is that they’re about thoughtful, rigorous technique, using commodity software. All you need is a spreadsheet and something that can draw boxes and arrows.
This resonates with me. I’ve had the experience many times over the last 20 years of having thoughtful, well-designed software that I’ve grown to appreciate suddenly taken away from me: maybe via acquihire-and-kill, maybe maintainer burnout, maybe app store hostility, maybe business model inadequacy, maybe some product manager’s bonus being tied to change for change’s sake.
Technique is something I can own and take with me when thoughtful technology gets taken away.
(I found re-watching the first talk again after watching the second, which works through concrete examples, to be very helpful).
2025 Jan 05
Malpractice, really, when apps with a stock price time series graph don’t let you pin min Y to $0.
2025 Jan 02
Free obvious product idea: wire up Apple Intelligence summaries in Apple News so that I never have to see another “Will this common household item give you cancer? The answer might surprise you” headline ever again.
2024 Dec 31
I’m all lost in the supermarket, no longer shopping happily.
2024 Dec 28
Ok now to talk about something (anything!) other than the technical underpinnings here.
Once I finish the nginx config, I'm shipping, in preference to faffing with the CSS on and off for the next six months.
Alright, might have all this working in the data centre now.
Growing as a person and deciding that it's not worth hours to figure out how to make all this run on an instance with 512mb of RAM.
The HTTP server that allows write is not accessible at all outside of my tailnet. This greatly simplifies the problem of securing an API endpoint that allows me and only me to post. So I made up an iOS shortcut that can take any selected text, wrap it up in JSON, and do an HTTP post to the write-side server. I can just use something like the stock Notes app as my editing interface.
When you're, uh, "thrifty" and feel uncomfortable spending more than $4/month on VPSes, you develop certain skills re: running low-memory JVMs.
OK now I’m trying it while I’m out walking the dog, from my phone, and using dictation.
I’m fascinated that people can feel motivated to do complex things in iOS Shortcuts.
I’m at the midpoint of a yak shave. I needed docker and it turns out I installed and didn’t use it 7 (!) years ago on this VPS, but upgrading meant jumping from Ubuntu 18 to 24.
Now I’m checking if I can post while my laptop is closed.
I can't decide if 1,755 days of uptime on one of my servers is something I should be proud or ashamed of.
Just completed my fiftieth platelet and blood plasma donation. I'm told the total volume over all donations would fill a five gallon bucket.
2024 Dec 27
The way datomic works, I can also make sure all handlers on the read side never get a datomic connection. They only get a database value. I have a middleware that binds the current value of the database as request processing starts up. The result here is that there's no possibility that any read-side booboo can transact new information into the database.
It was pretty simple using ring in clojure to set up two http servers (one for reading, one for writing). This lets me protect them differently. The writer can be on my tailscale and not accessible outside of it. I've written some lua for neovim so that I can post from my editor; no point in making a web interface for it.
Im setting up a new blog with everything in Datomic, but otherwise as simple as I can make it so that Im actually writing instead of coding.
this is a test post