A portfolio is more than a resume or a list of projects; it’s a digital handshake. It’s the first impression I give of how I work, what I care about, and my attention to detail. This site is my handshake, built as a direct reflection of my development philosophy.
Less is More
I’ve always been drawn to minimalism, not just as an aesthetic, but as a practical approach to design and development. For my personal website, I wanted to create a space that feels calm, focused, and fast. Not just “pretty fast,” but “blink-and-you-miss-it” fast.
This site itself had to be the first proof point of the quality and performance I strive for in everything I build.
Why Astro?
This obsession with shipping less code led me to spend years trying find the right tech stack. I’ve tried countless modern frameworks that, while incredibly powerful, often feel bloated out of the box. You can strip them down, but at that point, why use them at all?
My search for a framework that aligns with my philosophy led me directly to Astro. It offered the best of both worlds: a fantastic developer experience with organized markup, component structures, and TypeScript, combined with a final output of pure, optimized HTML and CSS. I immediately fell in love while reading their documentation and knew it was the perfect fit for my site.
The 14KB Challenge
To hold myself accountable and go all-in on performance, I set a challenge for myself: the initial gzipped HTML must be under 14 KB. Why that number? Due to the way data is transferred over the internet using TCP, a payload under roughly ~14.6KB can often be delivered in a single network round-trip. This means the browser gets everything it needs to start rendering the page almost instantaneously.
Achieving this wasn’t about cutting corners; it was about being deliberate:
Inlined CSS and Minimal JS
All the CSS required for the initial view is baked directly into the HTML. This eliminates a separate stylesheet request, preventing a “flash of unstyled content” and speeding up the initial render.
Custom Font Subset
A single weight of the JetBrains Mono font was a whopping ~113KB—larger than my entire uncompressed page! By creating an optimized subset including only the characters used on the site, I reduced it to about 4.8KB. While this still requires a second request, I’m working on embedding the font directly into the markup to eliminate that step entirely.
Image Optimization
With lazy loading, images don’t congest the initial page load. The few icons I do use are optimized to be around 1.2KB each.
This process was a fun and rewarding puzzle. It forced me to question every line of code and every asset. Does this add real value? Can it be done more efficiently? Even when not aiming for the bare minimum, this mindset helps me focus on performance, efficiency, and eliminating redundancy.
Looking Ahead
This website is an ongoing project. As I grow and my work evolves, so will this website. The core principles, however, will remain: clarity, simplicity, and a relentless focus on performance. Better yet, I might be able to shave off a couple more kilobytes along the way. It will always be a tribute to the idea that the best experiences are the ones that get out of your way and simply work—beautifully and instantly.