Make everything look like a software project

jamesbowman1 pts0 comments

Make everything look like a software project

Excamera Labs Substack

SubscribeSign in

Make everything look like a software project<br>When life gives you hammers...

James Bowman<br>Aug 11, 2026

Share

If all you have is a hammer, everything looks like a nail

For me, software has changed a lot this year. Agentic coding tools have got really good. When I give the tool a contained task on an established code base, it usually does a great job. (It usually does a slightly better job than I would have done, to be honest.)<br>I decide how the task gets broken down, and what the steps are. The agent does the coding, in steps that usually take a few minutes. I know some people let it run for hours, but my experience has been that it lacks good taste, and when unsupervised will write code that’s hard to follow. Or “slop” if you prefer.<br>Thanks for reading Excamera Labs Substack! Subscribe for free to receive new posts and support my work.

Subscribe

Having a tireless assistant means that more gets done every day. By quite a margin. Writing software has got cheaper. However, non-software tasks remain as they were before. So their cost relative to software has increased.<br>So there’s now a strong incentive to make every project look like a software project.<br>Normally, PCB design is a CAD task, not a software task. At least for most people. But for many years now I have been playing around with cuflow, a software PCB design system.<br>cuflow is a Python program that draws the PCB, then outputs the Gerber-format design files. There’s no CAD step. Just Python code to place components and trace out wires. cuflow has a lot of conveniences to make layout somewhat automatic, but it’s still been quite laborious. For example TermDriver’s PCB ended up about 600 lines of Python and took me about a week to finish in cuflow (source).

But not any more. Now I chat to the agent, it edits the Python, runs the generator, looks at the output Gerbers, and iterates until it’s got a good layout. This morning I’ve been wiring up a USBC connector for the first time, and this is the kind of thing I’ve been saying to the agent.<br>Move R4, R5 so they are 1mm south of the USBC, and route D+,D- underneath the connector to their respective resistor pads.

Exchange locations of R4, R5. This will fixed the wire crossing.

Rotate R6, R7 90 degrees counterclockwise. Place R7 So that its bottom pad is level with the USBC connector. Place R6 1.1mm right of R7.

And that’s how layout goes. The agent doesn’t only think about layout and code; it also knows how a USBC connector works. Which is more than I did, to be honest.

The code it’s generating is not too bad. Here’s the block that connects the two USB GND pins to the ground plane using extra-wide wires:<br>power_width = 2 * self.board.trace<br>for name in ("A1/B12", "B1/A12"):<br>self.s(name).setwidth(power_width).w("o -")

This seems fine, that’s probably how I would have expressed it.<br>It’s all working very well. I don’t know if conversational interfaces for PCB CAD software exist right now, but it does seem that’s what I’ve accidentally arrived at.<br>I’m not suggesting for a moment that you design a PCB in cuflow. But if there’s a project that’s current not a software project, and could plausibly be turned into a software project, there’s never been a better time to switch and reap the rewards.<br>Thanks for reading.

Share

Discussion about this post<br>CommentsRestacks

TopLatestDiscussions

No posts

Ready for more?

Subscribe

© 2026 James Bowman · Privacy ∙ Terms ∙ Collection notice<br>Start your SubstackGet the app<br>Substack is the home for great culture

This site requires JavaScript to run correctly. Please turn on JavaScript or unblock scripts

software project make like code cuflow

Related Articles