Roland Leth
banner
roland.leth.ro
Roland Leth
@roland.leth.ro
Software engineer with 15+ years of experience bridging business, product, design, UX and code

https://roland.leth.ro/projects/reckon - track your decisions
https://roland.leth.ro/projects/continuum - manage your team, thoughtfully
Pinned
Up to last year I used AI daily, but only where I already knew the answer. On real projects my attempts died on friction, so I kept deciding the hype had run ahead.

I retested properly this year and I built 3 projects. This is the first of 7 posts: roland.leth.ro/blog/tech/wh...

#AI
"A design doc at half its usual depth" is something you noticed. "Burning out" is a theory, and the two age differently: the doc reads true in December, while the theory is one of several stories that fit.

roland.leth.ro/guides/how-t...

#Management
https://roland.leth.ro/guides/how-to-keep-track-of-your-direct-reports
roland.leth.ro
September 29, 2026 at 6:03 PM
A post scheduled for next Thursday should appear on its own, without me nudging a cache.

The date check can't sit in the cached query: `unstable_cache` freezes `now` into the entry, so a post cached an hour early stays missing. Where it goes instead: roland.leth.ro/blog/tech/20...

#NextJS
September 28, 2026 at 6:02 PM
Image caching in Swift for a list and a details screen that share one image URL at two sizes.

Cache the resized `UIImage`, and a deeplink into the details screen leaves the list blurry. Keep the `Data` instead and downsample per screen: roland.leth.ro/blog/tech/ca...

#iOSDev
September 27, 2026 at 6:00 PM
"A real possibility" means 20% to one reader and 80% to another.

Log confidence as a percentage instead. Twenty vague phrases teach you nothing; twenty percentages become a calibration curve.

roland.leth.ro/guides/how-t...

#Forecasting
https://roland.leth.ro/guides/how-to-keep-a-decision-journal
roland.leth.ro
September 25, 2026 at 6:02 PM
If two paragraphs could swap between two people's reviews without anyone noticing, the reviews are describing your memory.

That's a symptom, and it shows up at whatever span the org chart considers normal.

roland.leth.ro/guides/how-m...

#Leadership
https://roland.leth.ro/guides/how-many-direct-reports-is-too-many
roland.leth.ro
September 22, 2026 at 6:02 PM
I wrote a test I expected to pass, asserting my mutation hook doesn't `setState` after unmount. It passed once, failed once on a flake, and the flake was a real race I hadn't thought of.

The contract every admin write on my site follows now: roland.leth.ro/blog/tech/th...

#React
September 20, 2026 at 6:02 PM
Built a decision journal in Notion: one database, one formula, four views, and a bar chart that shows whether your 80% means 80%.

Also wrote up where the setup stops working, because it does. About twenty minutes to build: roland.leth.ro/guides/decis...

#Notion
https://roland.leth.ro/guides/decision-journal-notion
roland.leth.ro
September 18, 2026 at 6:02 PM
A Notion setup for notes on the people you manage: a People database, a current read at the top of each page, a dated log.

Then the three places it strains. The first: a read's history gets overwritten or buried.

roland.leth.ro/guides/manag...

#Notion
https://roland.leth.ro/guides/managing-your-team-in-notion
roland.leth.ro
September 17, 2026 at 6:02 PM
Ten questions about one direct report, answered from memory. The one with no way to check it: what are they better at than you?

A blank there usually means you built the picture around your own strengths.

roland.leth.ro/guides/how-w...

#EngineeringManagement
https://roland.leth.ro/guides/how-well-do-you-know-your-team
roland.leth.ro
September 15, 2026 at 6:03 PM
A malformed multipart body can echo attacker bytes into the error message, and if those bytes contain a newline, the log gets a second line that reads as a real entry: same severity prefix, same shape, plausible content.

2 lines close it: roland.leth.ro/blog/tech/in...

#Security
September 13, 2026 at 6:01 PM
Give a low-high range you're 90% sure contains the answer:

length of the Nile year Gutenberg printed his Bible bones in an adult body

Three of ten. Nine should land; most get five or six. The rest, with answers: roland.leth.ro/guides/how-c...

#Calibration
https://roland.leth.ro/guides/how-calibrated-are-you
roland.leth.ro
September 12, 2026 at 6:01 PM
Rate-limiting a login means a counter per IP, so something derived from people's addresses lands in a third-party store. SHA-256 isn't enough, because IPv4 is 4 billion addresses and the whole table is a few hours of laptop time.

What I used instead: roland.leth.ro/blog/tech/au...

#Security
September 11, 2026 at 6:02 PM
Half a year of building with Claude Code, and what changed most is that trying a direction got cheap. It used to be expensive enough that I'd do it once and then talk myself into keeping the result.

Where the time actually went, and what it cost: roland.leth.ro/blog/tech/wh...

#AI
September 10, 2026 at 6:02 PM
Claude Code will test the code, review its own work and argue whether an approach is sound, but it won't ask whether the premise underneath is right.

6 careful rounds of testing rested on one number I never chose, and turning it down undid all of them: roland.leth.ro/blog/tech/th...

#AI
September 9, 2026 at 6:03 PM
Claude Code told me a feature on my site had submitted a batch of pages to search engines. The number was how many it had tried; the service was rejecting all of them, and I found out by accident.

3 features shipped that quarter with the same defect: roland.leth.ro/blog/tech/th...

#AI
September 8, 2026 at 6:01 PM
Every Claude Code session starts from zero, and what disappears isn't the code, it's why it was written the way it was: the option rejected for a reason nobody wrote down.

A word I'd banned came back weeks later, and the routines I now use so it can't: roland.leth.ro/blog/tech/ev...

#ClaudeCode
September 7, 2026 at 6:01 PM
Ask Claude Code for anything and an ordered, confident plan comes back, with nothing in it to tell you which parts were real decisions and which were defaults.

Why I decide before it writes, and the 4-word question that rewrote a data model: roland.leth.ro/blog/tech/th...

#AI
September 5, 2026 at 6:01 PM
Every post on decision journals cites the same stat: 19% better forecasting. I went looking for the study to cite it. Not in the journal, not anywhere but posts citing each other.

What the evidence supports: roland.leth.ro/guides/do-de...

#Forecasting
https://roland.leth.ro/guides/do-decision-journals-work
roland.leth.ro
September 4, 2026 at 6:02 PM
Rules, skills and hooks in Claude Code do 3 different jobs, and putting something in the wrong one gives you a rule the model ignores or a hook that blocks work you wanted.

How I split mine, including the standards writing down wasn't enough for: roland.leth.ro/blog/tech/cl...

#ClaudeCode
September 3, 2026 at 6:01 PM
With @buffer.com's MCP, Claude's routines and a skill tailored to my writing style:
- I write a few dozen posts at once
- I schedule them as posts up to my account's limit, the rest as drafts
- a weekly routine promotes drafts to posts, based on open slots, in chronological order 💚
September 2, 2026 at 8:15 AM
In a 2000 study, thousands of managers rated their reports; more than half the variance traced to the rater rather than the person being rated.

Keeping notes won't make you objective; it takes recency out.

roland.leth.ro/guides/recen...

#Management
https://roland.leth.ro/guides/recency-bias-in-performance-reviews
roland.leth.ro
September 1, 2026 at 6:02 PM
Up to last year I used AI daily, but only where I already knew the answer. On real projects my attempts died on friction, so I kept deciding the hype had run ahead.

I retested properly this year and I built 3 projects. This is the first of 7 posts: roland.leth.ro/blog/tech/wh...

#AI
August 31, 2026 at 6:44 PM
Rebuilt my site on Next.js and wrote up the shape I ended up with rather than the migration. No NextAuth, no tRPC, no CMS, no Drizzle over Prisma, which was really one decision in different costumes: keep the surface area small.

First of 9: roland.leth.ro/blog/tech/th...

#NextJS
August 30, 2026 at 6:00 PM
A decision journal has one rule that carries everything: fill the entry in before you know how it turns out. Written after the fact, it's a diary of justifications.

The fields, with a worked example: roland.leth.ro/guides/decis...

#DecisionMaking
https://roland.leth.ro/guides/decision-journal-template
roland.leth.ro
August 28, 2026 at 6:01 PM
Most 1:1 templates are meeting templates: agenda, updates, actions. Six months on they can tell you what was discussed, and not much else.

Mine has a third part: the read on the person, dated, revised, old versions kept.

roland.leth.ro/guides/one-o...

#1on1s
https://roland.leth.ro/guides/one-on-one-notes-template
roland.leth.ro
August 25, 2026 at 6:02 PM