lulzx.comwriting →
← writing

Your tools are your thoughts

seedAug 20253 min read

I write different code in Rust than in Python. Not just syntactically. Structurally. The language shapes how I cut the problem before I have typed a useful line.

In Python I reach for a dict and a script. I prototype fast and sloppy. I will know the shape when I see it run. In Rust I design upfront because the compiler will not let me be sloppy. I have to name the owner, the error, the lifetime, before the first happy path compiles. In TypeScript I lean on types to write the intent down and let the checker nag me when a field goes missing. Each language is a different lens on the same job.

What the tool forces me to say

A language does more than make some ideas easy. It makes some ideas hard to avoid. Rust will not let me skip ownership. TypeScript will not let me skip the shape of the value, at least not without writing any and feeling it. Python will not force either, so I can spend a whole afternoon without deciding. That freedom is why I open it when I am still lost. It is also why the lostness can last.

I notice this most when I move a thought between them. A Python sketch that was "a list of dicts I will figure out later" becomes, in Rust, a struct and an enum and a decision about who holds the vec. The problem did not change. The tool refused the blur. Sometimes that refusal is the whole reason I switch. Sometimes I need the blur for a day, and Python is the honest choice.

Editors, operating systems, keyboards do a quieter version of the same thing. A wall of tabs makes me think in piles. I stop noticing because I live there all day. The default grain of the tool becomes the default grain of the work.

Tiles

I switched to a tiling window manager and started breaking problems into smaller, independent pieces. Coincidence? Maybe. Probably not.

A floating desktop lets windows stack. I can hide a mess under another mess and tell myself I am still in the same task. A tiling desktop refuses the stack. Every window takes a slice. If I open a fourth thing, something else has to shrink or move to another workspace. The screen keeps asking me whether this belongs next to that, or whether I have started a second job and should admit it.

I began to cut work the same way. One pane for the file I am editing. One for the test output. One for the notes. If a change will not fit in that layout, I am probably holding two jobs. The screen trained the cut. The size of a thought I will hold at once got smaller.

Picking on purpose

I become what I use. If I live in a language that never asks who owns the value, I stop asking. If I live in a desktop that lets twenty tabs overlap, I stop finishing the first one. The reverse is also true. A strict tool will make me pay for questions I do not care about today. I pick the one whose forced questions match the job.

When I start something new I ask what I want the tool to nag me about. Ownership. Types. Speed of a sketch. Visible pieces on one screen. Then I pick the nag and live with it long enough for it to get into my hands. The structure I write is the structure the tool would not let me skip.