~ pardon the mess ~

Our farm is under construction.

We're rebuilding fences, painting barns, and teaching the sheep new tricks. Some pages may be a bit dusty — check back next week for the full opening.

Arun Negi
✉ Get in touch
WritingMetaThis story
Meta

Ketil's Farm and the multi-persona web

The idea behind this portfolio site, and why I think the subdomain-per-character model is genuinely interesting.

AN
Arun Negi@aruns-farm
May 1, 20255 min read

~ from the desk of Arun ~

his portfolio is running on a platform I built called Ketil's Farm. The premise is simple: one codebase, multiple characters, each with their own subdomain. arun.ketils.farm is me. thorfinn.ketils.farm is a Viking. The farm is a shared world, but each character has their own voice.

I built it because I was tired of portfolio sites that read like resumes. The format is deeply conservative — hero section, projects, experience, contact. Every developer's portfolio looks like a variation on the same template. I wanted to try something more expressive.

1The technical model

The implementation is a Next.js app with middleware that inspects the subdomain and routes to the right config. Each portfolio is a TypeScript config file that defines the content, colours, and copy. The UI components are shared; the personality isn't.

// portfolios/arun/config.ts
export const config: PortfolioConfig = {
  id: "arun",
  name: "Arun Negi",
  bio: "Builder of things. Fan of good design...",
  // each portfolio gets its own blog posts, talks, projects
}
  1. Config file defines: name, bio, hero copy, projects, work, writing, talks.
  2. Shared UI components render the design system — same layout, different data.
  3. Subdomain middleware (or direct deployment) routes to the right config.
  4. Blog posts and talks live alongside the config — per-portfolio, not global.

2What I actually learned

The most interesting design challenge was building a system flexible enough to express different personalities without becoming a theming engine with infinite knobs. The constraint that helped most: each config can only set content and accent colours. Layout and spacing are fixed.

The best constraint is one that eliminates a whole category of bad decisions.

— the design system, implicitly
🐑

~ a note on the design ~

The Woolly & Co. design system was built alongside this portfolio. Everything you see — the cream background, the barn-red accents, the chunky ink borders — comes from a single design language with 14 colour tokens and a strict set of component rules.

The second thing I learned: a portfolio site is never really about the portfolio. It's about the person. Whether it's a Viking who takes on impossible raids or a developer who writes 200-line scripts for folder hygiene, the character is the point.

Share →
~ keep reading ~

More Writing

All stories →