Redowan Delowar
banner
rednafi.com
Redowan Delowar
@rednafi.com
Software Engineer @Doordash/Wolt
Writing rednafi.com

Recurring themes: Go, Python, distsys, schema-driven development, eventual consistency, resilience patterns, HA, data access strategies, observability, SRE practices, and sci-fis.
Picked up a neat trick to test subprocesses while watching Mitchell Hashimoto's talk on Advanced Testing with Go.

rednafi.com/go/test-subp...

#golang #testing
Re-exec testing Go subprocesses
When testing Go code that spawns subprocesses, you usually have three options. Run the real command. It invokes the actual binary that creates the subprocess and asserts against the output. However, t...
rednafi.com
November 17, 2025 at 8:54 AM
Reposted by Redowan Delowar
This is also one of MY favorite things that’s ever happened on the internet!
November 7, 2025 at 9:08 PM
Reposted by Redowan Delowar
I grumbled about something and a colleague sighed and said, "well that's why we get paid the medium bucks" and I think that's my new catchphrase.
October 28, 2025 at 1:30 PM
AI grifters don’t get half the hate that Hacktoberfest novices do.
October 28, 2025 at 3:57 PM
Reposted by Redowan Delowar
I've been running autonomous agents this whole time.
October 21, 2025 at 8:34 PM
"Forward-deployed" & "solution" engineers sound like this era’s version of “industrialists” - no one knows what the words mean.
October 23, 2025 at 11:13 PM
In response to a query on reddit, expanded a bit on the context package’s recommendation for avoiding key collisions.

rednafi.com/go/avoid-con...

#golang
Avoiding collisions in Go context keys
Along with propagating deadlines and cancellation signals, Go’s context package can also carry request-scoped values across API boundaries and processes. There’s only two public API constructs associa...
rednafi.com
October 23, 2025 at 5:37 PM
Wisdoms, aphorisms, and pointed observations — fragments I find myself frequently quoting in conversations about software, philosophy, and ways of working.

rednafi.com/lore/
Lore
Wisdoms, aphorisms, and pointed observations — fragments I find myself frequently quoting in conversations about software, philosophy, and ways of working. Chesterton’s fence Reforms should not be mad...
rednafi.com
October 22, 2025 at 2:42 PM
Reposted by Redowan Delowar
There is not a single reason to outsource your creativity to a computer.

Not one.

To do so removes the very point of being creative in the first place.
October 15, 2025 at 9:49 PM
Reposted by Redowan Delowar
One day the industry will recognize the drawbacks of AI agents and nondeterministic automation, and rediscover the UNIX philosophy of chaining together small purpose built tools in a low cost and predictable way, otherwise known as shell scripts.
October 9, 2025 at 11:22 AM
There are multiple ways to group subtests in Go.

But often enough, I see folks pulling in a third-party library just for that. With a bit of discipline, most of the time you can avoid 3p libs for this. Did a comparison between several ways of doing it.

rednafi.com/go/subtest-g...

#golang
Subtest grouping in Go
Go has support for subtests starting from version 1.7. With t.Run, you can nest tests, assign names to cases, and let the runner execute work in parallel by calling t.Parallel from subtests if needed....
rednafi.com
October 2, 2025 at 2:05 PM
The genie's outta bottle and there's no going back. On top of that, companies have started to impose insane deadlines & expecting people armed with AI will do it regardless.

But at the end of the day, I resonate with John here so much. I don't want to maintain slop.

thenewstack.io/go-experts-i...
Go Experts: 'I Don't Want to Maintain AI-Generated Code'
Two Go programming experts discuss the rise of AI-generated code, exploring its impact on Go's popularity, the challenges of low-quality code, and the future.
thenewstack.io
October 1, 2025 at 12:01 PM
The issue w/ LLM guided code is that, it works well in a very specific context.

If you code in that ctx, your exp will be quite different from someone who doesn’t.

While many are busy extolling how great LLMs have been, in a closed source corp setup, maintaining LLM slop has been a nightmare.
September 30, 2025 at 11:17 AM
My most used LLM these days is Gemini Flash 2.5.

It’s fast as hell, and from doc munging to asking questions that can be looked up, nothing comes even close.

I rarely use it for coding but for looking up stuff it’s nice. Also Flash is free - haven’t hit into any limit despite my constant usag.
September 24, 2025 at 12:50 PM
MCP gives off a JS ecosystem vibe: there are more MCP server authors than users.
September 21, 2025 at 10:43 AM
“App structure should be driven by what it does and not what it’s built with. Let the domain guide the structure, not technology or the current language specific zeitgeist.”

rednafi.com/go/app_struc...
Let the domain guide your application structure
I like to make the distinction between application structure and architecture. Structure is how you organize the directories and packages in your app while architecture is how different components tal...
rednafi.com
September 20, 2025 at 6:06 PM
companies: add AI usage to candidate perf metrics

candidates: crank out shit PRs, BS tests, and RFCs

companies:
September 15, 2025 at 5:49 PM
Got a bit tired of wading through lazy AI-generated interaction tests in critical systems that don’t actually do anything.

Overzealous enthusiasts messing up the test suite w/ useless tests has become my new pet peeve. Mocking libs make it worse since LLMs love them.

rednafi.com/go/test_stat...
Test state, not interactions
With the advent of LLMs, the temptation to churn out a flood of unit tests for a false veneer of productivity and protection is stronger than ever. My colleague Matthias Doepmann recently fired a shot...
rednafi.com
September 14, 2025 at 11:41 AM
Regarding goroutine & unbuffered channel interaction, found myself repeating this multiple times. Maybe it's time to write it down for reference.

Early return + unbuffered send = goroutine leak.

rednafi.com/go/early_ret...

#golang
Early return and goroutine leak
At work, a common mistake I notice when reviewing candidates’ home assignments is how they wire goroutines to channels and then return early. The pattern usually looks like this: start a few goroutin...
rednafi.com
September 7, 2025 at 1:49 PM
Managing test lifecycles in Go doesn’t require much ceremony.

But not understanding how the test harness builds & runs tests makes it easy to write tests with wrong assumptions. This often leads to surprisingly brittle tests.

Did a quick rundown.

rednafi.com/go/lifecycle...
Lifecycle management in Go tests
Unlike pytest or JUnit, Go’s standard testing framework doesn’t give you as many knobs for tuning the lifecycle of your tests. By lifecycle I mean the usual setup and teardown hooks or fixtures that a...
rednafi.com
August 30, 2025 at 2:13 PM
Reposted by Redowan Delowar
I'm researching what is happening in the tech jobs market.

If you're a hiring manager recruiting, or an experienced eng on the job market, would love to hear what you see. DMs open.

(Feels like a weird market. I suspect data on eg jobs doesn't reflect what's on the ground)
August 30, 2025 at 9:25 AM
In the presence of partition, a CP system lets go of availability to protect consistency.

Fact queries demand a CP-like system.

Instead, these AI search systems decided that it’s okay to serve plain incorrect data at times. Some queries can tolerate the inaccuracy but most factual queries can’t.
August 24, 2025 at 11:05 AM
I find the Overton window shift w/ smartwatches sorta mind-blowing. Paying 500–600$ for a clunky piece of tech that looks horrendous compared to a 300$ analogue watch would’ve been unthinkable a decade ago.

Now people are happily shelling out the money for these cartoonish, funky-looking gizmos.
August 22, 2025 at 11:44 AM
New favourite code font: Google Sans Code

I generally don't like overly stylized fonts. Been using Jetbrains Mono since its inception. But I always felt like it's a bit too slim for my taste. But I also didn't want something as wide as Cascadia Code. This seems perfect.

github.com/googlefonts/...
August 10, 2025 at 11:58 AM
Stay in the Postgres lane as long as you can. Then move to Aurora if you need HA.

The transition should be smooth as long as you don't use all the power of PG. Complex queries & fancy features don't scale. In fact, they fail spectacularly when the workloads ramps up (1/n)
August 5, 2025 at 12:57 PM