Maybe if I get an MCP that’ll tell me to drop it: it’s marketing week
🔥 Agent quick tip: Review changes in vim.
- Pipe your
git diffinto vim withvimreview. - Add your review comments in the comfort of your favorite editor as basic # comments.
:wqand paste into your agent session.
Get it:
$ brew install moreutils
~/.zshrc:
vimreview() {
{
echo "# [NOTE]\n# DIFF REVIEW:\n# The following is our current changes as a git diff with my comments added. Comments are denoted by a leading #\n# Please review and discuss or process my comments.\n# [/NOTE]\n"; \
git diff
} | \
vipe --suffix diff | \
pbcopy
}
🔥 Agent quick tip: Make an agent summarize a change from the outside in so the diff tells a story.
Large diffs can be hard to understand when they’re just presented from top to bottom, alphabetically by filename. If you know the big picture, it’s easier to understand the parts.
Amp’s -x param is great for this.
Pipe it to glow for pretty terminal markdown tui.
After using iPhone minis for 4-5 years, the battery in this new phone feels infinite.
Petition to change the spelling of default to deafult (because my fingers will not learn)
Sign here
________________
Remember how much time we spent googling just a year or two ago and now we can just type “make my tmux.conf support italic and squiggly underlines” and it works
Beyond the Machine by Frank Chimero
I’m trying to figure out how to use generative AI as a designer without feeling like shit. I am fascinated with what it can do, impressed and repulsed by what it makes, and distrustful of its owners. I am deeply ambivalent about it all. The believers demand devotion, the critics demand abstinence, and to see AI as just another technology is to be a heretic twice over.
Today, I’d like to try to open things up a bit. I want to frame the technology more like an instrument, and get away from GenAI as an intelligence, an ideology, a tool, a crutch, or a weapon. I find the instrument framing more appealing as a person who has spent decades honing a set of skills. I want a way of working that relies on my capabilities and discernment rather than something so amorphous and transient as taste. (If taste exists in technology, it needs to be smuggled in.)
Frank Chimero just dropped the first essay I read top-to-bottom in what feels like years.
Really good shit about how to feel, as an artist, a creator, about “AI”.
I wouldn’t want an irregular AI in my bank app, but in a creative workflow, hallucinating feels like the point of it all.
Secondhand AI considered offensive
I’m seeing a trend: Some poor, misguided person passes on an AI generated answer without adding any direct human effort.
The intention is to be helpful, but we all have access to the same tools, more or less, so merely passing on a slopjob isn’t helpful. It’s disrespectful.
Passing on AI content without judgment signals both:
- I think this issue/problem/feature is simple enough that it can be done just by asking a perpetual internet machine, and…
- I don’t think you were smart enough to consider asking AI for guidance on your own.
The same wall of text, human written, would at least show some real effort in understanding the whole problem. Even if misguided, it is a genuine sign that someone spent time on understanding and formulating a well-structured, researched answer. Proof of work, one might say.
[Requiring AI use disclosure] is to help maintainers assess how much attention to give a PR. While we aren’t obligated to in any way, I try to assist inexperienced contributors and coach them to the finish line, because getting a PR accepted is an achievement to be proud of. But if it’s just an AI on the other side, I don’t need to put in this effort, and it’s rude to trick me into doing so.
@mitchellh requiring disclosure for AI assisted PRs to Ghostty.
Copy/pasting code into an AI chat platform then copy/pasting the response to this issue thread is, in my opinion, not at all helpful. […] If you provide some professional insight based on your own experience and experimentation in addition to hitting Ctrl+C/Ctrl+V, that may in fact be useful, but otherwise I would refrain from doing that again on GitHub.
“Please, just stop sending me AI videos of Dad [late comedian Robin Williams] ,” Zelda wrote. “Stop believing I wanna see it or that I’ll understand, I don’t and I won’t. […] It’s dumb, it’s a waste of time and energy, and believe me, it’s NOT what he’d want. […] To watch the legacies of real people be condensed down to ‘this vaguely looks and sounds like them so that’s enough’, just so other people can churn out horrible TikTok slop puppeteering them is maddening,” she continued. “You’re not making art, you’re making disgusting, over-processed hotdogs out of the lives of human beings, out of the history of art and music, and then shoving them down someone else’s throat hoping they’ll give you a little thumbs up and like it. Gross.”
Zelda Williams on people sending her AI clips of her dad, the late Robin Williams. If she wanted those, she could make them herself.
What to include when agentic coding
First, start with prompting for behaviour.
Second, what else to include?
- Strong preferences for the task at hand:
- Say
use shadcn/ui for the dialog - Or
state must go through the central store - Or
use plain sql for complex queries - Or
don't add any db fields - Or
this should be a db field
- Say
- Hunches and make it sound like they are:
- Like,
I think this has to do with xyz - Or
I'm sure there's prior knowledge of this - Or
do we already have a version of this? Investigate - Or
we should probably add an integration test for this? Wdyt? - Or
can we abstract and reuse the comments code in Post.rb? Wdyt?
- Like,
- Questions
- Ask
eli5 how we handle publishing posts - Or
summarize the admin auth - Or
review @docs/add-comments.md. Focus on simplification and removing complexity - Or
can we skip the middle step here or would that be worse for users?
- Ask
We used to discover the details as we went along with the implementation. For agentic coding you want to speed-run this, assisted by the agent, before you let it rip.
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
– Abraham Lincoln
– Mikkel Malmberg
Just throwing it out there that “we” absolutely do not “need to go on the offense” against Codes of Conduct nor main branches.
“We” should show by example that it’s possible to exist in a culture that can hold disagreement without turning into a poop throwing match.
Someone has a feeling towards branch naming? You, the maintainer, decides whether you want to change anything. Listen, then make a decision. Neither decision makes anyone a fascist or communist or anime avatar.
A project uses a term you don’t like? You, the user, can suggest using a different term. Be civil and provide short, to the point arguments. It is now up to the maintainer what they will do with this request. Neither decision makes anyone a fascist or communist or demon.
Attacking or ridiculing the other party for their decision or request does not make you look cool. “Going on the offense” does not make you look cool. Staying calm and collected and true to yourself looks cool.
Prompt for behaviour
Here’s a tip for your agentic coding:
Don’t prompt for the thing you want, prompt for behaviour.
Say you need to add authentication. So many details are missing: What kind of auth? How strict? What does it look like? Where does it lead to? Where does it end?
The agent needs context. It has some, can figure out some more. But you, the builder, have most if not all of it. Plus your preferences. Plus your intuition. What needs to happen is telepathic transfer from you to the agent.
The agent is so eager to start working. It is trained for action. Like a junior dev refactoring billing on their first day, it will gladly run amok before you can even type design doc.
So be deliberate about how you want it to act.
You don’t have to spend a day writing a perfect spec. Use the agent’s eagerness to your advantage. Let it do the typing. Instead, short prompts for behaviour:
- Say,
plan authentication with me. - And
ask me questions to align. - And
investigate best practices for oauth. - And
discuss the pros/cons of magic links. - Say
write our plan to an .md file in docs/
Then, finally, when the context is primed like a stretched bow and arrow: implement @docs/auth-plan.md.
This makes sure the agent doesn’t run like a mad man, 100 km/hour in the wrong direction.
You may not know what the final result should look like. You might not know which details to include. But your intuition does. So help the agent help you both first, then let it run like the wind.
Whatever you think a coding agent “can’t do”, 99% chance it’s a skill issue.
it’s 2025
twitter is dead but more alive than ever
girls are riding robot horses
the heroes on the tl are zuck failing a demo and dhh inventing linux
the villain is apple with too many border radii
I feel bad for Zuck and the Meta developers for their demos failing so now the normies can ridicule them – but the builder in me only has respect for daring to do live demos like that. It’s easier to fix the bugs than a lack of courage. Onwards
I’ve been feeling like blogging again. I think I will.
Disable macOS' "Tile by dragging windows to screen edges" from the command line
defaults write com.apple.WindowManager EnableTilingByEdgeDrag -int 0;
To enable it again:
defaults write com.apple.WindowManager EnableTilingByEdgeDrag -int 1;
Pyramid Scheme
From my AMA:
Hi Mikkel. Just finished watching The great crypto scam with James Jani. I have previously (Kortsluttet) heard you talk positively about the possibilities of block chain technology. Are you still optimistic about the potential now or do you share some of his concerns, that it is mostly utilized as a pyramid scheme to make early adopters rich.
I’m quite involved now in the digital collectible scene, AKA NFTs, and I hold some crypto, mainly $ETH that I’ve made from selling and helping others sell NFTs. So take my opinion with that in mind.
I don’t see crypto, Ethereum at least, as a pyramid scheme. There have definitely been folks who’ve been rewarded solely by being first but that is also true in start-up investing or real estate or whatever else people invest in. There’s always risk and then sometimes there’s a reward for taking on that risk.
I like how NFTs allow me to collect art directly from artists. I support them in their creative endeavours and I get to call some pieces mine. Whether you think this form of ownership is even a thing (I CAN JUST RIGHT-CLICK SAVE AS?!) is up to you but it is meaningful to me.
I think the last 10 years have shown us that if we want to live increasingly larger parts of our lives online, we need somewhere to live. Huge corporations and their Social Media products were easy to move into as they had the means to pay thousands of talented people to build very easy to use and welcoming machines. But the rent was paid with attention and privacy and, on Facebook democracy, and recently on Twitter with our dignity.
So we need something else. Public blockchains provide a solution to the problem of where do we put all the stuff?! Just think of them as a database that no one owns. It’s slow and expensive and cumbersome. But no one owns it. So no one can fiddle with the data. No one can decide to sell your data against your will. No one can tell you, you have to use their app, because there’s no moat around the data.
There are a few other decentralisation efforts that don’t include the whole money aspect so prominently, like Holepunch or Scuttlebutt. They’re very interesting as well.
I don’t think Bitcoin will replace the dollar. I’m not sure it’s a good investment to buy any crypto at any point. Well, it would’ve been 6 years ago and wouldn’t 1 year ago. But who knows where prices go from here. I’m not too interested in that aspect (I mean, if the $ETH price goes to a million USD and I become generationally rich, I won’t complain.)
Convert transparent WebP video to HEVC MP4 with alpha channel
Converting the other direction is widely documented but going in the other direction required a little more digging. Here’s how I did it:
$ mkdir frames
$ ffmpeg -vcodec libvpx-vp9 -i INPUT_FILE.webm -pix_fmt rgba frames/%04d.png
$ ffmpeg -r 24 -i frames/%04d.png -c:v prores_ks -pix_fmt yuva444p10le OUTPUT.mov
That’ll give you a ProRes4444 version of it. To convert further, I used a macOS built-in service.
- Right-click on
OUTPUT.mov - Select
Services > Encode Selected Video Files - Select
HEVC 1080pas the setting and checkPreseve Transparency
This should give you a OUTPUT-1.mov which you can rename to .mp4.
Using transparent video is easy and widely supported these days. Fun!
Configure a hyper key with VIA configurator
It’s 2021 and you have a mechanical keyboard that’s configurable with VIA and you want one of your keys to be a hyper key. Meaning it should be the same as holding ⌃⌥⌘⇧ all at once.
It’s possible! Set the key to Any and put MT(MOD_HYP, KC_NO) as the key code.
Fix macOS Big Sur being stuck in Do Not Disturb
For some reason, since upgrading to macOS Big Sur, my Do Not Disturb status seems to get stuck. However many times I turn it off it always mysteriously ends up being on again. Which I of course first realise after missing notification for a few hours, having been unwantingly extra productive. Can’t have that!
Thanks to this Reddit comment the setting is set in one or more plists.
Use this one liner to set it to false:
for f in `ls ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist`; do defaults write $f doNotDisturb 0; done && killall NotificationCenter
Aaah, the overwhelming feeling of drowning in notifications is back.

