Overview
This site that you are reading right now is this project. I know, very meta of me.
What started as a refresh of my public-facing site became a migration project, an experiment in agentically-augmented coding, and an exploration of a different way of thinking about content online.
Why I Built It
Back in early 2025, I set the goal of refreshing my online presence. I wanted to better reflect the kind of work I was doing in the strategic foresight architecture space. Also, I have always been wary of having too much of my content only available in someone else's platform. That's why my original site actually started on Tumblr.
In 2012, Tumblr was an ideal space for short-form posts and cross-links to content on other platforms. It was lightweight, social-ish, and far lower friction than a proper blog. So, I started using it as a place to capture copies or links to content I might share on Twitter, Instagram, LinkedIn, along with more recent long-form work on platforms like Medium and Substack.
It was definitely due a revamp, though.
The content I had been capturing fell into one of two camps: my 'portfolio' of media work (podcasts, videos, publications); and my 'personal/professional' content (essays, social posts, coding projects). I had the need to provide a profile-style page for the first camp, and was thinking about a blog or similar for the second camp.
Then I came across the work of Maggie Appleton.
A Digital Garden?
I hadn't heard the term before. But when I saw Maggie's site, and some of the others she linked to, I was really taken in by the concept.
For those who aren't familiar, a "digital garden" is...well, the opposite of a blog. A blog is dated and directional: posts march forward in time, older entries trail off behind them. A garden operates differently. Things are 'planted' at different stages of development, some mature over time, some get pruned or archived and the whole space is tended rather than merely published to.
I was enamoured with the idea harking back to simpler times on the web, and I felt challenged (in a good way) about this idea of opening up some of my thinking processes to help with learning in public. I was also finding it hard to keep to self-imposed schedules of writing on the newer, long-form platforms. Digital gardening indicated some promising opportunity reset my approach on a number of fronts.
So, it felt like the perfect bit of novelty that I could inject into my project for the content side of things.
An architect's twist
I'm a self-admitted metaphor junkie. I love me some figures of speech. The concept of the garden was great, but I couldn't help myself in trying to put a bit of my own take on things.
Hence "The Desk".
What Gemini thinks my desk looks like
I figured I would lean in on the 'architect' aspect of my career, and come up with some metaphors (and dad jokes) connected to a traditional, stereotypical architect's studio. Instead of a garden, why not a desk with a drawing board? Instead of seedlings and evergreens, I'd have sketches and blueprints.
Hey, if it puts a little smile on my face and makes me want to refresh things more frequently, then that was enough motivation for me.
Not starting from scratch
The big question for me: do I just start from scratch? Turn over a new digital leaf, so to speak, with this new project? Or do I try and seed things with the existing content I had already put out there?
And that's how I found myself not just building a new web presence, but also undertaking a migration and modernisation journey too.
With roughly twelve years of content on Tumblr — posts, notes, links and ideas accumulated since 2012, I thought I would give it a go at least. And given the new AI capabilities that were coming online every week, why not leverage some of those to see if I could reduce the toil of doing so.
I deliberately wanted to challenge myself with a new framework and toolset, but one that would still result in code that I could understand. I'm not dismissing 'vibecoding', but I wanted this to be more 'augmented coding'. Everything on this site is code I could have written myself. But I wanted to explore what it would be like to be assisted by AI and reduce the time taken to get to a higher level of sophistication of the end product.
With my incredibly talented sister-in-law generously providing me a visual design concept for the site, and having read up on some of the popular frameworks and technologies in the gardening community, I was ready to start.
Towards the end of 2025, I was where I think a lot of coders were with AI: testing and learning as various providers provided a chat interface that could help with code completion and basically reduce my time on StackOverflow and Reddit. I wasn't super-impressed, to be honest, and went into the Christmas break a bit disappointed with how much effort it was still taking (given this was being done on the side of everything else).
That changed as 2026 kicked off and I was able to resume using tools that had dramatically improved in capability while I was at the beach over a New Zealand summer. Agentic coding, coupled with a form of spec-driven development, really amped up my ability to smash through features at a rate of knots!
Within a few weeks, I had this site taking shape. Within a couple of months, I found myself here: with a working site, all my content migrated, most of the features implemented, and my own profile/portfolio and garden/desk.
The updated version went live on 31 March 2026.
How It Is Built
The stack is intentionally modest:
- Eleventy v2 — static site generator. No runtime framework, no server-side rendering, just files
- Nunjucks — templating language. Used for layouts, partial components and conditional logic throughout
- Tailwind CSS v3 — utility-first styling, with a custom component layer on top for things that repeat (callout cards, archive notices, stage badges)
- Alpine.js — small bursts of client-side interaction where needed (theme toggle, audience mode persistence)
- Netlify — build and deploy pipeline, with local development via Netlify Dev
The typography is a partnership between Merriweather for headings and Montserrat for body copy. This combination was chosen to feel weighty but not heavy, editorial but not academic.
Stage Classification in Practice
Early thinking. These pieces are idea fragments and rough hypotheses shared quickly to invite reflection and discussion.
Work in progress. The structure is taking shape, but the argument, examples, or framing are still being refined.
Published and polished. These are the most complete pieces, although I still leave room to renovate them when new insights emerge.
The stage labels are visible throughout the site but they are also wired into the build logic.
In Eleventy's collection filters, draft content is excluded from listings. In templates, stage values surface as badges. The progression from Concept to Sketch to Blueprint reflects my thinking as it develops.
The Archive stage is worth singling out. Archiving is not the same as deleting. An archived piece may reflect thinking I've moved past, or work that belonged to a particular moment. It stays visible with a notice that explains what it is and why it's been retained rather than removed.
Tailoring to different folk
Early on, a dear colleague of mine made a comment that really resonated with me. She pointed out that I might have two very distinct audiences coming to the site: those who are interested in my content and thinking, and those who are trying to find out more about me as a keynote speaker. How to cater for both?
This is why the site has the toggle system in the footer and at other places. If you want a more content-focused view point, the toggle reduces the focus on me and highlights my thinking. If you are wanting to know more about me and see me in action, then the speaker-focused viewpoint aims to provide that.
Same for the fact that some of my work is in more of a personal capacity, and some is more in a professional capacity. So having a toggle to switch the personal content off was another feature add.
I also love dark theme sites when I'm working on my big screen. So that was another toggle.
All of these would normally have been in the "one day, maybe" feature list. But that's why we're living in such interesting times with interesting tools...
Agentic Coding as an Augmentation Tool
Most of this site was built collaboratively with AI agents — specifically GitHub Copilot in agent mode, running inside VS Code. That has then meant leveraging models from most of the major foundation model providers at different points depending on the task.
This is worth being direct about, because the usual framing of "AI-generated code" misses what actually happened. The architecture, the decisions about structure and metaphor, the writing, the editorial judgements about what to include and what to prune — those are mine. The agentic tools handled the translation from intention to implementation, particularly for the parts of the work furthest from my strongest domain knowledge.
In practice, this looked like:
- Writing specifications that the agent could execute with high fidelity, rather than writing implementation code by hand.
- Using the spec and handover documents as context anchors so the agent could re-orient quickly after transitions.
- Reviewing and directing rather than just accepting outputs — catching inconsistencies, redirecting approaches that didn't match the design intent, and iterating.
The result is a site that I could not have built alone in the same timeframe. Not because I couldn't eventually learn the skills, but because the leverage of directing rather than hand-coding compressed the time and effort significantly.
Spec-Driven Development
One of the deliberate practices during the build was maintaining a living specification document: agent/spec.md.
This file tracks the information architecture, tech stack, collection rules, frontmatter schema, and non-negotiable design constraints in one place. It's written for both human and machine readers. As the site evolved through multiple phases — migration, redesign, component refinement, polish — the spec served as the canonical source of truth when intent was ambiguous or when a long gap between sessions needed bridging.
Alongside the spec, a series of handover documents (agent/handover-phase*.md) captured the operational state at each transition point: what was done, what was in flight, what should happen next. This was part of managing context between different agentic sessions.
Looking Back (So Far)
The site went live on 31 March 2026. That milestone was about reaching a threshold of quality and completeness sufficient for a public audience, not about declaring the project finished. A garden is never finished.
Maintaining a public space for thinking — one that is associated with your name and professional identity, not buried in a social media feed — creates a different kind of pressure than writing in private. It's a productive pressure. It asks you to organise your thoughts well enough that a stranger could follow them, without requiring them to be final.
And hope that people won't judge you too much for having a messy desk.