< Back to blog
#welcome
#portfolio
Astro icon Astro
August 26, 2025 1 minute read

Welcome to My Portfolio

Share
Share on Twitter
Share on Facebook
Share on WhatsApp
Portfolio Launch

Welcome to my new portfolio site - a single place to explore my projects, experience, and skills.

Building the Product

When I built my first Portfolio Site, it was the classic starter approach - vanilla HTML, CSS, and JavaScript, with skill data stored in hardcoded CSV and JS files and project details written manually into the markup. It did the job, but every update meant editing multiple files by hand. The friction was real, and it meant the site quietly fell behind what I was actually working on.

That maintenance pain is what kicked off a rethink. I was already using Obsidian daily as my personal knowledge management system, so the idea was simple: what if my notes were my data source? I defined a schema across my vault for projects, companies, and references, mapping their relationships so that a single update in Obsidian would flow through to the site automatically. One source of truth, zero duplication.

To make it work, I set up a Neo4j graph database as a shared backend and created a Python script to extract the content from my Obsidian vault. From there, I started building the new site in Astro, using GraphQL queries to pull data from the backend at build time.

It worked. But it was overengineered.

The backend dependency added complexity without enough payoff, and it undercut one of Astro’s core strengths - its ability to work directly with local content. So I pivoted. I stripped out the GraphQL layer and instead processed the Obsidian Markdown files directly into Astro’s content collections. The result was a dramatically faster site, far simpler to maintain, and one where I could go from updating a note to seeing it live in minutes.

The product lesson here is one I keep coming back to: validate the simplest version first. It is tempting to reach for the most technically interesting architecture, but the best solution is usually the one that removes the most friction for the least complexity. The Neo4j approach taught me a lot, but the Markdown-first approach shipped better outcomes with less overhead.

This site is the version you’re reading now. Have a look around, and if you’d like to talk product, delivery, or anything else - get in touch.

Share
Share on Twitter
Share on Facebook
Share on WhatsApp