Teal, blue, magenta, and rust crayon streaks over a dark background

programming brains

mental models


I have a new set of mental models I want to try out. Three primary, three secondary.

Primaries.

Enterprise Brain. This is the part of my brain that’s focused on “heavy work”. Large amount of cross-cutting concerns; complex build and deployment pipelines; meeting security and compliance requirements; integrating disjointed systems; managing permissions and infrastructure.

For this I’m committing to whatever my employer uses. Most of the time, Java/Spring or C#/.NET. They asked for an engineer, not a thought leader.

Application Brain. This is the part of my brain for digital plumbing. Taking information that exists somewhere as an input, and providing an output.

For this I’m committing to Deno with auxiliary accessories like JSX, HTMX, and Tailwind. So far it has been a refreshing modification from my old personal-project-stack.

Data Brain. This is the part of my brain for investigating and refining datasets. Given a set of data, producing insights or clean outputs.

For this I’m committing to Python, but specifically with Astral’s tooling (not an ad), it gives me linting (ruff) , environment/package management (uv), and type-checking (ty) without overcomplicating my tooling. I have to use a W1nd0ws 10 VM running an old version of Anaconda for this round of grad school and it is not pleasant.

Secondaries.

Display Brain. This is the part of my brain for taking content and providing it to a user in the form of a Display Layer.

For this I’m committing to Astro. I want to ship as little JS as I can to the browser. I’m mixed on their request acquisition.

SaaS Brain. This is the part of my brain for those times I want to build an application to service actual potential users.

For this I’m committing to Laravel. Tons of batteries included. Less hostile to new ideas than Rails. More organized than Django. Elixir is out of my league for these kinds of projects.

Performance Brain. This is the part of my brain for those times where I need single server with a low footprint that can process requests at scale.

For this I’m committing to Go. Old reliable.

Tertiaries

Here’s the bonus content.

Learning Brain. This is the part of my brain that wants to learn math, physics, and graphics. Speed of delivery is not the primary concern here.

For this I’m committing to Rust.

Conclusion.

Why did I want to do this?

I’m too tired after work to get meaningful output from side projects. A significant portion of time is spent assembling a model and picking tools instead of the actual task I want to accomplish.

But what about bleeding?

I believe every Secondary Model is built off tooling that is able to handle domain-bleed. Python can handle application-type tasks. The JS ecosystem for data is growing. Laravel Queues can handle a high data processing throughput. Astro Actions provides backend-style functionality to Content Driven Websites. Worst case I can handroll in Go.

If I am reaching for a low-level language to do anything other than self-learning, infrastructure, or hardware work. Then I’ve lost the plot.