I didn’t really realize just how big 5mm is until I used it as a ‘reasonable tolerance’ when designing a 3D printed bin. It’s now looser than a really poor joke!
scrap
•
• #3d-printing
I didn’t really realize just how big 5mm is until I used it as a ‘reasonable tolerance’ when designing a 3D printed bin. It’s now looser than a really poor joke!
and now I own an apartment, time for the renovations to begin, and then hopefully I’ll stay here for a while 😄
The Scotty Test: Before proceeding past any failure, ask yourself: “Would Scotty walk past a warp core leak because it existed before his shift?”
found while perusing Gas Town’s prompts for the refinery, to steer agents to fixing things. yoinking that
git rm --cached <file> will remove a file from git’s tracking but leave it on the filesystem. Great if you accidentally commit something that should’ve been in .gitignore.
Thoughts on Welcome to Gas Town by Bill de hÓra:
Steve’s description of Gas Town itself reads like a mash-up of social deduction game mechanics, control-plane software, and management theory. It feels, especially on the latter aspect, heavily designed in a modernist urban planning sense. Personally, for AI and agent-driven development, I find myself veering toward constraint-based approaches: establish invariants/laws and let agents explore within them. Gas Town can be read as an attempt to define invariants through roles that allow agents to make progress in an eyes-off/hands-off way. And so my first take is that it leans /hard/ into roles and division of labour. I keep wondering whether some kind of ‘physics’ or rubric-based approach might ultimately be the better primitives. To be fair, you have to start somewhere; there needs to be a bootstrap. And Gas Town, importantly, actually exists.
(my bolding), from reading and trying to understand more around vibe coding/agentic engineering this is where my thinking is heading too, but more for my own work rather than designing a system like Gas Town.
I also found this writeup matched what I had been picking out from looking at Gas Town so it makes me think I’ve understood things, at least it aligns with someone else’s digging. 🙂
On re-reading, I noticed, or felt, a serious underlying urgency, even anxiety to Steve’s post.
I have to agree with Bill on this too, there seems to be something of urgency at work. 🤷
Because I got a bit shy from burning tokens Thursday (which turns out to have been a bug with Anthropic and they reset everyone’s quotas) I have been trying to learn more around vibing and I’ve been using beads alone to understand the concepts. And what I’m doing right now is creating the first constraints/invariants, or principles as Steve called them, and will see how the design of the system I want to build turns out when I let it loose tomorrow.
I believe I have overdesigned, but it was fun doing, so there’s at least that, and I hope I’ll have the first couple of constraints in place soon so I can try and run through some actual design work. Or we start over.
Why you shouldn't just 'trust' AI genies
I shared a prompt to help create “AI expert prompts” to help you learn a domain, and I’m realizing I didn’t mention the dangers. As every company that gives you a genie to talk to says “they can get things wrong.” The problem is that as a non-expert you don’t know what you don’t know, so you don’t know when the genie is so confidently wrong.
When I started a company I figured, why not do the books myself for the first couple of months and then pay someone to review it later? I created a genie armed with the standard Swedish accounting plan, verified some of the big things I did (inject some extra starting capital) and could find clear examples of how it’s done. I did some other things and just did as it said, but did get a bit complacent because the big one just worked, and didn’t research as thoroughly.
[… more]A prompt for building experts to help you see their world
I was reading Our First Accelerated Expertise Course from Commoncog, and the section Why This Training Approach is So Weird got me keen on seeing if I could get the genie to help me build experts for sensemaking, so I can learn to see the world as those experts do.
So far I’ve created one expert, and I’ve had a useful conversation (I realized I was not seeing the forest for the trees), so sharing what I have and leaving a crumb for the future. 🙂
[… more]autocorrect made ’teater’ (swedish, you can guess the word) into ’tester’ and somehow that seems correct for me, even if it was ’teater’ this time
I have been wondering how Steve Yegge gets quality when vibing and this seems to be how, from the emergency manual Tending the Invisible Garden:
When you work with Gas Town, you don’t usually have time to inspect the code you’re creating. That’s not your role. But you need to make sure the code meets your quality bar. How do you ensure your garden is healthy if you can’t see it?
[… more]
Use git config core.hooksPath script/hooks and it’ll use the scripts in script/hooks as hooks in the git project. Version controlled, and no need to update symlinks as scripts come and go.
heh, there’s a warning about gas town burning through tokens… this walk around shops in Karlstad is sponsored by the 2pm quota reset
how often I typo ‘gt’ to ‘git’? trending to 1
Becoming More by Martijn Faassen:
I want to admit that this AI/human me, this centaur me – my human understanding is on occasion limited. I lean on the AI quite a bit. Perhaps it isn’t genuine understanding. A tricky question in epistemology. Let’s not even talk about the AI understanding something, or not.
I do know this. I’ve always leaned on other people’s understanding - I’ve reused computers, programming languages, software libraries, implemented algorithms from books and wikipedia. I’ve used search engines. This is more broad than software development. I am limited and don’t understand everything about the world as it’s far, far too much. I stand on the shoulders of giants.
And that’s okay. I’m still empowered.
Let this empowerment sink in. Have you realized what this means? Have you realized what you can do now as a software developer?
I can use AI to do more. Not be more productive, that’s boring and that’s debatable.
Amen Martijn. I saw someone saying that if the AI tools worked really well, then employers would be forbidding them because people would be using them in order to work less. Because if you have an expectation of what could get done, then if you find a way of getting it done faster so you can go home, isn’t that okay? But for some group of employers that’d be tantamount to stealing!!1one
Now, there is a counter to this argument, Steve Yegge says in The AI Vampire:
Now let’s look at Scenario B. You decide instead that you will only work for an hour a day, and aim to keep up with your peers using AI. On that heavily reduced workload, you manage to scrape by, and nobody notices.
In this scenario, you capture 100% of the value from your adopting AI.
In this scenario, your company goes out of business. I’m sorry, but your victory over The Man will be pyrrhic, because The Man is about to be kicked in The Balls, since with everyone slacking off, a competitor will take them out pretty fast.
I don’t know, maybe? I think there are certain types of jobs that will absolutely end up folding if they keep at current levels of work done without change. History shows sitting on an advantage without adjusting is not optimal for survival. And to be fair, Yegge’s post is against the grind culture and about finding a balance augmented by AI and to not become a hollow shell that commands the genie.
At the same time, I’ve started my own company, and I’m doing my best to not grind like I did working for others. I do have some runway from that work, but I hope there’ll be enough work coming in (or products built that makes money) that I’ll make do.
Instead, I have some work that helps me stay afloat, and it has given me time where I can play and explore. Maybe I can leverage it soon, maybe it becomes a rusty tool in the toolbox, or the cornerstone for something new.
Either way, I’m becoming more, as Martijn said.
Most developers don’t build new things by Robby Russell:
We inherit. We understand. We stabilize. We extend. We improve what we can without destabilizing what already works.
This kind of work rarely attracts attention. It looks like incremental improvement and steady compounding over time.
But if most of your career is going to be spent in the second act, then the real question isn’t whether you get to start something new.
It’s whether what you inherit gets better because you were there.
I fully agree with Robby, the big piece of what we do day-to-day is making sure we have a better tomorrow in the systems we’re part of maintaining, and that’s the lens we should be looking through.
For example, right now I’ve been working on an old system that’s great at what it does and the business is happy with it, but it’s not much fun to maintain. I have been using genies to help me and it’s been a world of difference in how long it’ll take to work on.
Yet, I spent a couple of hours yesterday manually verifying a long list of numbers to ensure we didn’t break any calculations or displays in the workflow I have been changing. Because the system is a legacy one per Michael Feather’s definition: it didn’t have any tests before I started working on it, and it’s my name on it, so as we’re about to take it to production I need to do my best to ensure it will work. That’s the work.
3D printer arrived, unboxed, assembled, calibrated, and currently huffing and puffing at plastic because they be moist. 12 hours until I get to hit print 😭
TIL: if DHL is sending two parcels from the same vendor, shipped at the same time, they might send it to two different places that are kilometers away from each other so you better make sure to set them to the same place. Relatedly, my new 3D printer has arrived, and at some point the filament will arrive at another distribution point
Set GENERIC_TIMEZONE for n8n or you’ll get ERROR: You specified an invalid date. when you try to publish a time triggered workflow.
I had done a server migration and completely missed the .env file when copying, and after recreating it all started working.
Relocating Rigor by Chad Fowler (via Muthu).
Generative systems only work if invariants are explicit rather than implicit. Interfaces must be real contracts, not incidental boundaries. Evaluation must be ruthless. Failures must be loud and immediate. The engineer’s job shifts from typing code to specifying intent and verifying outcomes.
This is very much how I’m currently thinking about working with AIs. I have been using genies to work in a legacy codebase (defined as no tests) I’m new to, and in a language and platform I have barely worked on, and I’m being useful.
I think it’s because I decided to introduce tests to the codebase, verify the existing behavior for the flow I’m changing, and then write my new feature as a failing test. Then the genie has been able to iterate while I think about the changes and how they could fail.
For example, we had to move some columns into a new table, and while the code kept the if null then 0 pattern that existed, I worried it might be overly “safe” and that it would return 0 because the relationship hadn’t been loaded. So we traced through all the call sites to see that we also loaded that relationship from the DB, and the genie gave me a report I could follow and easily verify.
Add commands to both permissions.allow and sandbox.excludedCommands to run them outside Claude Code’s sandbox by default, because allow grants permission to run at all and excludedCommands runs them unsandboxed.
{
"permissions": {
"allow": [
"Bash(pnpm test:unit:*)",
"Bash(pnpm test:e2e:*)"
]
},
"sandbox": {
"excludedCommands": [
"pnpm test:unit:*", // Same commands, different purpose
"pnpm test:e2e:*"
]
}
}Note: Tested with Claude Code v2.1.3
Write out colon subcommands explicitly for Claude Code permissions because test:* doesn’t match test:unit (prefix matching treats them as separate commands), and the fallback test* is too broad (matches testAndDestroyEnvironment).
For example:
{
"permissions": {
"allow": [
"Bash(pnpm test:unit:*)", // Allows pnpm test:unit --arg etc.
"Bash(pnpm test:e2e:*)",
"Bash(pnpm test*)" // ❌ <- will allow testAndDestroyEnvironment
]
}
}Note: Tested with Claude Code v2.1.3