Ever since my uncle introduced me to web development when I was 12 or 13 years old, I've been playing around with web technologies. I just really liked the idea of having my own domain, with my own personality, character, content and visual identity. I actually always liked to have my own anything - my own minecraft server, my own KiCAD library, my own plants - almost as if it's not about the object itself, but about the process of building it up, nurturing it and continuing to improve it, as opposed to getting it done and forgetting about it. On some level this kind of approach, applied to everything, is bound to make someone crazy. Let's see how long I last.
This is why I built this website, and the many versions of it that I've built and restarted from scratch over the years. It's my personal space, and I intend to keep building and improving it like an artisan builds a violin, like a gardener tills their walled garden, and like a steward tends to their estate. Since no one is chasing me with a deadline, I can simply enjoy the process.
I've always wanted a portfolio to showcase my projects, even back when I had nothing to show. There's something satisfying about having a single place where your work is collected. It’s like checking items off a to-do list; it provides tangible proof that you've accomplished something. As physical beings, we appreciate that kind of concrete evidence.
This site is also an expression of my personality. I strive to minimize the use of AI-generated content in my writing. While I might use a tool for a quick grammar check when I'm tired, the core ideas and voice are my own. My goal is to be the antithesis of a generic, AI-written LinkedIn post.
I didn't want this to be just another technical portfolio with a standard logo and bland, inoffensive language. I'm not a "tech bro," and I want that to be clear. I identify more with the mindset of a medieval artisan than a San Francisco startup coder—focused on craft, detail, and personality.
One of the first design choices was the logo. You might be wondering about the eagle and the snake—they might seem a bit out of place for a tech website.
In the past, coats of arms were used to represent a family's identity. That got me thinking: if I were to design my own coat of arms today, what symbols would I choose? It's not a trivial question.

Lancaster Coat Of Arms (1267)

Another heraldic logo concept
An early logo concept
I've always been drawn to the symbology in Friedrich Nietzsche's Thus Spoke Zarathustra, a book I read when I was young. The eagle and the snake are Zarathustra's companions, representing pride and wisdom, respectively.
When Zarathustra had said this to his heart, he lifted his eyes and saw an eagle soaring in wide circles in the air, and a serpent was hanging from it, not like prey but like a friend: for it kept itself coiled around the eagle’s neck.
“These are my animals,” said Zarathustra, and he was happy in his heart. “The proudest animal under the sun and the wisest animal under the sun—they have come out to scout. They want to learn whether Zarathustra is still alive. Verily, am I still alive? I have found it more dangerous among men than among animals; Zarathustra walks on dangerous paths. May my animals lead me!”
- Thus Spoke Zarathustra
This pairing symbolizes the union of soaring ambition and grounded intelligence—a balance I strive for in my work.
Web development is notoriously annoying because of the 1000s of technologies that exist, every day a web developer wakes up and chooses to make some new web framework. Because of this there is a degree of arbitrary preference in the choice of these tools, usually.
I chose Nuxt and Vue.js for the frontend, primarily because I like the structure of *.vue single-file components. While Svelte offers a similar paradigm, I find Vue's ecosystem to be more mature, and it's the framework I'm most comfortable with.
To accelerate development, I'm using Nuxt UI, a component library developed by the Nuxt team (which was recently acquired by Vercel). It provides a solid set of ready-made components that save a ton of time.
I also considered using Leptos, an experimental full-stack framework for Rust. As much as I'm a fan of Rust, building a complex UI from scratch and wrangling Tailwind CSS in that environment seemed like a significant effort. I'm keeping a close eye on the Rust web ecosystem and will likely jump in once it matures a bit more.
For now, this site is a static front-end. If I decide to add a backend later, I'll likely use TypeScript and Node.js. The vast library ecosystem is a major advantage, with tools like Better Auth for authentication and Prisma for database interaction making development much smoother.
A potential backend would allow me to manage articles and, more excitingly, integrate compilation with Typst. It's a fantastic modern alternative to LaTeX and Markdown, especially for complex documents. Writing a non-trivial formula in LaTeX can feel like a punishment for some original sin—I'd rather avoid it.
You're reading an article on it, so I guess it's working!