ferroman@systems:~$ ls -la ~/blog
- Hello, worldpinned
Why this blog exists — notes from a platform engineer who spends most days keeping other people's systems boring and reliable.
- Learn fundamentals, not tools
Most tools go stale faster than you can learn them. In twenty years the only thing that has not changed is TCP/IP. Learn what stays — what orchestration is, not the YAML — and remember the tell that a technology is about to start dying: it stops hurting.
- Latency only matters where a human is waiting
Latency is mostly a psychological quantity. The only reason to fight it is that a person is waiting — so ask the question that has an answer: is there a human waiting on this? If the work takes three seconds, the network is noise, and people have thresholds, not curves.
- The model stopped being the variable
I kept switching frontier models expecting to find a difference, and the spread turned out to be prose quality and verbosity, not capability. The real gap is judgement, and it is present in every model equally — so the leverage is below the model, in the context and weighting you bring.
- Engineering got faster, understanding did not
AI made writing code roughly ten times cheaper. Understanding code did not get cheaper at all. The bottleneck moved to QA capacity and product attention, and the only fix that scales is a compounding loop of automated regression.
- QA is supposed to annoy
A steady team has a steady flow of bugs. When the flow stops, it is not quality — it is a filter that runs before the ticket exists. QA should file everything, including 'this looks wrong': triage is cheap, and the observation is not recoverable.
- The TypeScript inheritance trap
Inheriting types from a library's own type hierarchy quietly couples your code to its internals — not just its runtime behavior. A smaller, hand-written type is usually the better trade.
- Manage Cattle of Projects With Projen: Intro and Problem Statement
As an Ops engineer (SRE, DevOps whatever it called these days) I try to make developers life easier, so they can experiment more, do not be afraid of changes and move fast with everything they build. This is not easy to…
- Mastering Multiple AWS Accounts with AWS CLI: Navigating Role Delegation, MFA, and Automated Login Scripts
In my role as a platform engineer, I often work with multiple AWS accounts. This can get tricky, especially when setting up Terraform or writing scripts for different account resources. I've learned some helpful tips…
- README.md
We, engineers, don’t like writing documentation. I’m, personally, suck at it. But what we do like — is to have good documentation for the tools we use. Which is a little bit controversial, isn’t it? This means that most…
- Measuring software engineering competency
A checklist of Obligations and Merits for engineering teams — the Joel Test revised into a score you can compute: missing an obligation costs a point, earning a merit gains one.
- Make Code Review Useful Again
Code Review has commonly used technique and it’s definitely one of the must-have processes to keep a high quality of code. But quite often it becomes a formal process or people experience different issues using it. So…
- Continuous Deployment to AWS ECS from CircleCI
A dockerized site deployed to AWS ECS on every push to master with no maintenance window: CircleCI builds the image, pushes it to ECR, registers a new task definition, and updates the service.
- BDD tests for Hadoop with Cucumber. Part II
Continuing from part I: acceptance tests with Cucumber for Java and Gherkin, which describe what the system should do in a form a new team member can read.
- BDD tests for Hadoop with Cucumber. Part I
Big Data means more data than one machine can process in a reasonable time, so it runs in parallel on Hadoop with Cascading. Part I builds the application and the Docker container that isolates the test environment.
- Managing Technical Debt
Martin Fowler has a great explanation of this term and the problem behind