Building a Portfolio That Builds Itself
The Over-Engineer's Guide to Portfolio Development. It started innocently enough. "I need a portfolio site," I thought, like every developer before me. Why? Who knows. Who cares! Let’s go.
"Something simple. Clean. Professional." Countless hours and several thousand lines of code later, I've built what can only be described as a self-maintaining digital organism that syncs my blog posts, animates like it's auditioning for Pixar, and probably uses more computational power than the Apollo missions.
The Automation Addiction
Here's the thing about developers: give us a simple task, and we'll find a way to automate it. Need to update your portfolio with new blog posts? Normal person: copy and paste. Developer: build an RSS-to-CMS pipeline with hourly GitLab CI/CD jobs that parse Substack feeds and automatically populate content via Sanity's API.
The beautiful irony? I'm literally writing this post to test whether my Rube Goldberg machine of an integration actually works. If you're reading this on chrisburke.io, then congratulations—we've achieved recursive success. If not, well, there's always the manual sync button I definitely didn't add as a backup.
The Art of Productive Procrastination
The site features what I call a "tracing beam"—essentially a glowing line that follows you down the page like an overly attached laser pointer. Did I need this? Absolutely not. Did I spend days perfecting the spring animations and teaching myself SVG path mathematics? You bet I did.
Then there's the wavy background. Using Simplex noise algorithms (yes, that's a real thing, and yes, I can now drop it casually into conversation), I created these hypnotic, organic waves that undulate behind my intro text. Inspired from a ShadCN rabbit hole I fell down. Listen, folks, I am not a front end developer, but I’ll code the shit out of this animation, okay? It's the kind of feature that makes visitors either think "wow, this person really knows their stuff" or "wow, this person really needs a hobby." - Probably the latter.
The Stack: A Love Letter to Complexity
loop { learn()?.enjoy(); }
This snippet lives in my tagline, and it perfectly captures my approach. Before I had something in normal contextual English, but that doesn’t really tell you who I am. Remain curious; enjoy the process or something. I liked this more; plus I love Rust. Speaking of Rust, Why use boring tools when you can use exciting ones? My stack reads like a who's who of modern web development:
Next.js 14 with App Router - Because server-side rendering is cool again - also, you kids writing Next.js don’t know how lucky you are - you haven’t maintained hellish PHP code like I still do.
TypeScript - For when you want your code to judge you at compile time - but it’s delicious having types. Love me them types, baby.
Tailwind CSS - Where class names are longer than the components they style I however, am too dumb to do CSS normally, so <3 Tailwind. Absolutely rocks.
Sanity.io - A CMS that actually makes content management enjoyable - if you haven’t used Sanity I have to admit I enthusiastically endorse it.
Framer Motion - For animations that make visitors go "ooh" and CPUs go "why" - however, I have always enjoyed doing dumb JavaScript animations (go on wayback machine and search for https://krslynx.com in like 2009 - same old story).
The Philosophy of Over-Engineering
There's a special kind of joy in building something unnecessarily complex for your own project. No stakeholders to convince. No budgets to justify. Just you, your IDE, and the burning question: "But what if it could also...?"
My site embodies what I call "Facilitating Serendipity." Visitors might come for the portfolio but stay for the mesmerising animations. They might discover blog posts they weren't looking for or find themselves inspecting the DevTools to figure out how that tracing beam works.
Every element serves a purpose, even if that purpose is sometimes just "because I could":
Everything is monospace (aesthetic commitment)
Dark mode only - because of course:
Security headers stricter than my TypeScript config
Animations with proper cleanup because memory leaks aren't artistic
The Lessons Hidden in the Madness
Building chrisburke.io taught me several things:
Your portfolio is your playground. Where else can you implement that ridiculous animation idea without someone asking about ROI?
Automation is a superpower. My site now updates itself whilst I sleep. I've essentially outsourced content management to Past Me who built the system.
Complex doesn't mean complicated. Yes, the site has bells and whistles, but the user experience remains clean and intuitive. The complexity serves the simplicity.
Meta-development is weirdly satisfying. There's something deeply pleasing about building tools to manage the thing you're building.
Front end is dope. It’s like they’ve been working on it like it’s the cure for cancer. Probably more specifically, the work that folks at Vercel have put in shows. Their CI/CD and general developer experience is 🤌 - you guys are ballers.
The Real Magic
The true beauty of this over-engineered marvel isn't in the code—it's in what it represents. Every developer's portfolio is a statement. Mine says: "I love this craft so much that I'll spend three days implementing wavy backgrounds just because they look cool." - also, maybe because these days I just sit in calls and write powerpoints or dry Word documents. It’s nice to create.
It's a celebration of curiosity, a monument to productive procrastination, and proof that sometimes the journey really is more important than the destination. Even if that journey involves learning more about SVG paths than any reasonable person should know.
So here's to all the developers out there building portfolios with unnecessary WebGL shaders, implementing their own physics engines for button hover effects, or creating CMSs for their CMSs. You're not over-engineering—you're conducting important research into the age-old question: "But what if we made it do this?"
Now, if you'll excuse me, I need to go check whether this post has successfully synced to my portfolio. And maybe add just one more animation...