How building my own site helped me stay technical without writing production code

When I first decided to write about engineering management, my initial instinct was the obvious one:
publish on Medium or LinkedIn and move on.
They’re easy. They’re familiar. They remove friction.
But something about that approach didn’t feel quite right for me.
As an engineering manager with a software engineering background, I didn’t just want a place to write. I wanted ownership, control, and—if I’m being honest—a way to stay technically sharp without stepping on my team’s toes.
This blog post is the story of why I built my own platform, how it evolved over time, and where it fits in the broader themes I write about here: engineering leadership, system design, and the changing role of engineering managers.
It also complements another article where I explore whether engineering managers should write production code. This one focuses on a related question:
What do you do when you miss coding—but your role has changed?
At the start, the goal was simple:
The site wasn’t just about blog posts. It also included a profile section, my resume, and context for people who might want to collaborate or work with me in the future.
From a technical perspective, I expected this to be very simple:
That would have been more than enough.
But then two things happened.
First, I realized I wanted more control than third-party platforms allow.
Second, I realized I genuinely missed building software.
As engineering managers, our impact increases—but our hands-on time often decreases. I didn’t want to measure relevance by lines of code, but I also didn’t want to slowly lose touch with how systems are actually built.
This project felt like a healthy middle ground:
So instead of stopping at “just a static blog,” I leaned into building something more intentional.
One early constraint I set was cost.
I wanted this project to be:
That led me to Netlify:
At this point, everything was still static. Blog posts were rendered as pages, and life was good.
Until I added one small thing.
The moment I added a Contact Me / Help section, the site stopped being truly static.
Rather than building a backend immediately, I used Netlify Forms, which allowed:
This became a recurring theme in the project:
Use managed solutions until they stop making sense.
Eventually, I wanted to start a newsletter.
That introduced real requirements:
At that point, pretending this was still a static site wasn’t realistic.
Since I was already on Netlify, I introduced serverless functions, initially written in Go, to handle email subscriptions and basic logic.
Once logic entered the picture, data followed.
I needed a relational database that:
That led me to Supabase.
Supabase became the foundation for:
It gave me PostgreSQL, APIs, and flexibility without operational overhead.
To send emails, I integrated Resend, which offers a solid free tier and clean APIs.
But capturing emails alone isn’t enough.
Without verification, spam quickly becomes your problem.
So I added email confirmation:
It was a small feature, but an important one. Bad data compounds fast.
Once the system was functional, I didn’t want a .netlify.app URL attached to it.
I:
That small step made the project feel real. This stopped being an experiment and started feeling like a product.
From day one, I chose Markdown as the format for blog posts.
Why?
Blog content lives in Markdown files, while code dynamically turns those files into pages. Initially, this rendering happened at runtime.
Which worked… until SEO entered the picture.
Dynamic rendering caused two problems:
Many crawlers don’t execute JavaScript reliably. They expect pre-rendered HTML.
Create React App started working against me.
So I made a hard decision:
This unlocked:
The cost was real:
Had I known this earlier, I would’ve started with Next.js.
But migrations are lessons, not mistakes.
As the platform grew, manual workflows started to hurt.
So I added an admin panel:
This single feature drastically reduced operational burden and made writing feel lighter again.
Before even introducing monetization, I added social authentication:
This sets the stage for what comes next.
Over time, I plan to introduce curated learning paths, including:
These will live behind membership and evolve as the platform grows.
Even though I’m the only writer today, the platform is designed for more:
Monetization is intentionally deferred.
If—and only if—there’s real value and interest, I’ll introduce it later.
The goal isn’t revenue first.
It’s usefulness first.
One personal motivation behind all of this is simple:
As managers, it’s easy to push for tighter deadlines.
It’s harder to do that responsibly if you’ve lost touch with the effort required to ship.
By actively building—even outside my team’s production code—I:
This isn’t about control.
It’s about context.
None of this is a requirement for engineering managers.
There are many effective management styles.
For example:
Coding is just one way to stay close to the work—especially for those coming from a software engineering background.
Engineering management is about leverage, not uniformity.
This platform—and this post—connect directly to two broader themes on this blog:
This project is my answer to the second question.
And it’s only the beginning.
This blog isn’t just a place to publish ideas.
It’s a system that supports how I think, learn, and grow as an engineering leader.
If you’re an engineering manager who:
You’re not alone.
Let me know. This blog is as much about conversation as it is about content.
How engineering managers and leaders make architectural decisions that balance impact, cost, and speed.
Understanding Compute, Servers, Clients, Memory, and Storage
Loading comments...
Please log in to post a comment.