When I decided to claim this corner of the internet, I faced a choice that probably seems ridiculous to anyone who values efficiency: I could use Substack and have a polished site in minutes, or I could spend weeks fumbling through code I barely understood. I chose fumbling.

This wasn't masochism. It was a deliberate decision to prioritize learning over convenience, to understand my infrastructure rather than just inhabiting it. But before I could start building, I had to figure out what to build with.

The Platform Question

My initial exploration was captured in my earlier posts about making space and understanding the small internet. But beneath those philosophical questions sat a practical one: where would I actually host this thing?

I spent days comparing platforms across five criteria that mattered to me:

Design Customization: Could I make it truly mine? Would I be stuck with templates that screamed "this is a [Platform Name] site"? I wanted the freedom to evolve the aesthetic as I learned more about what I was building.

Organization: How would posts, projects, and random experiments coexist? Could I create different sections with different feels? Would I be fighting the system or working with it?

Ethics: This one eliminated several options immediately. I couldn't in good conscience build on platforms that enable hate speech or extract value from creators while giving little in return. If I was claiming digital sovereignty, it had to mean something.

Speed & Security: Would my site be bloated with tracking scripts and unnecessary JavaScript? Could I serve simple HTML and CSS without a content management system grinding in the background?

Ease of Use: This was the interesting tension. I wanted minimal coding barriers, but I also wanted to actually learn. Too easy meant no growth. Too hard meant I'd give up in frustration.

I looked at Substack first because everyone I admire seems to be there. But it felt like renting rather than owning. The design constraints were real, the ethics were questionable given their stance on platforming extremism, and I'd be building on someone else's land.

Ghost appealed to me as a non-profit alternative with better ethics. It had the customization I craved and respected creators' ownership. But it still felt like I'd be working within someone else's framework, and the learning curve wasn't steep enough to justify the limitations.

WordPress was familiar territory, but it carried decades of technical debt. Every plugin was another dependency, another thing that could break, another layer between me and understanding how my site actually worked.

Then there was Astro, which represented the other extreme. A modern framework with blazing performance and component-based architecture. I actually installed it, got the development server running, felt the thrill of seeing localhost:4321 render something I'd technically built. But then I looked at the file structure and realized I had no idea what any of it meant. It was too much, too fast.

Landing on Eleventy

Eleventy emerged as the Goldilocks solution. Static site generator built on JavaScript, flexible enough for experimentation but simple enough for someone with zero coding background to gradually understand. It took plain Markdown files and transformed them into HTML. No client-side JavaScript unless I wanted it. No database overhead. Just files, templates, and the build process.

The philosophy resonated: start simple, add complexity only when needed. I could write in Markdown (which I already knew from Obsidian), version control with Git (which I was learning anyway), and host on Cloudflare Pages (which was free and fast). The whole stack aligned with my "file over app" principles.

Most importantly, Eleventy didn't hide complexity from me. When something broke, I could trace it. When I wanted to customize something, the path forward was discoverable. It respected my desire to learn while not overwhelming me with options.

The Messy Middle

I found a starter template and cloned it. Changed the site name, committed to Git, pushed to GitHub, connected Cloudflare Pages. Within an hour, etcxyz.net was live. It was thrilling and terrifying. The template worked perfectly, which meant I understood almost nothing about how it actually functioned.

Then came the real work. The commit history tells the story better than I could:

V0.01: Initial commit. The template in its generic glory. Minimal customization beyond my name and content. It looked like every other Eleventy blog because it was every other Eleventy blog.

V0.01a: First personalizations. Added my Projects post, switched to frontmatter-based excerpts, minor edits throughout. Testing the waters. Learning which files controlled what.

I didn't have a design direction yet. I started with typical minimalist aesthetics because that's what everyone does. Clean, simple, lots of white space. But it felt cold. Empty. Not like a space I wanted to inhabit.

V0.02: The transformation began. I expanded the site width, refined the color palette toward earthier tones, introduced a handwritten font (Caveat) for titles to inject personality. Redesigned the header and navigation, added a hamburger menu for mobile, created a "lucky" button to surface random pages.

This version felt alive in ways V0.01 never did. The colors had depth. The typography had character. But I still didn't understand what I was building toward aesthetically.

The Iterations: Typography refinements. CSS reorganization into a token system. Blog index redesign. Navigation updates. Footer rework. New project sections with dedicated index pages. File optimizations. Each commit was me learning one small thing, breaking something in the process, fixing it, discovering two more things I didn't understand.

I redesigned the blog index page three separate times before landing on something that felt right. Updated frontmatter fields. Refined typography again. Optimized the CSS system again. It wasn't perfectionism. It was the gradual process of discovering what this site wanted to be.

Finding the Aesthetic

Somewhere in this process, I stumbled onto The Met's Open Access collection. Hundreds of thousands of artworks, free to use, spanning centuries and cultures. I started browsing, looking for images that captured something I couldn't quite articulate.

Medieval woodcuts. Renaissance engravings. Maps from explorers. Technical illustrations from craftsmen. There was something about these images that resonated. Maybe it was their humanity, the visible hand of the creator. Maybe it was how they documented ways of seeing and making from different eras. Maybe it was simply that they felt honest in a way that stock photography never could.

I started featuring them in blog posts. An engraving of tools for the projects post. A moonlit interior by Hammershøi for making space. A printing workshop by Collaert for the etcs and xyzs. Each image was chosen not for SEO or aesthetic trends but because it felt true to the specific post it accompanied.

The aesthetic emerged from the process rather than being imposed on it. Earthy browns and sages. Historical technical illustrations. Handwritten titles paired with clean body text. A design that acknowledged its own construction while remaining readable and welcoming.

What I've Learned

Building from scratch meant learning an entire vocabulary I didn't know existed. What's a static site generator? How does Git version control work? What's the difference between a template and a layout? How do CSS tokens improve maintainability? When does Cloudflare Pages trigger a new build?

I made countless mistakes. Broke the navigation. Crashed the build pipeline. Pushed broken commits to production. But each mistake taught me something that no tutorial could convey: how to read error messages, where to look when things go wrong, what questions to ask when I'm stuck.

The learning wasn't linear. I'd spend hours understanding CSS specificity, only to realize I didn't understand how Eleventy's template inheritance worked. I'd fix the mobile menu, break the desktop navigation, fix the desktop navigation, discover the footer was now rendering twice. Every solution revealed three new mysteries.

But gradually, the site became mine in ways that using Substack never would have. I know where every file lives. I understand (mostly) what each template does. When I want to add a new feature, I have a sense of where to start looking. The learning curve justified itself by making the infrastructure transparent.

Building as Practice

This website isn't a project with a completion date. It's an ongoing practice, like walking or writing or any other way of thinking through making. The commit history will continue. New features will emerge. The design will evolve. Things will break and get fixed.

I'm still learning. Still fumbling. Still choosing the harder path because the struggle is the point. Not because suffering is noble, but because understanding my tools means I can shape them to my needs rather than contorting my needs to fit their constraints.

The next version is already taking shape in my head. There are projects to build, features to add, refinements to make. But there's no rush. This corner of the internet isn't going anywhere, and neither is my commitment to building it with my own hands, one confused commit at a time.

If you're reading this and considering your own corner of the internet, I'll say this: the platforms make it easy, but easy isn't always better. Learning to build from scratch gives you something platforms can never offer: true ownership, genuine understanding, and the satisfaction of making something that's entirely yours. The learning curve is steep, the mistakes are frequent, but the view from halfway up is already worth it.

Now if you'll excuse me, I have more typography to refine and another CSS system to reorganize. The work is never done, and I wouldn't have it any other way.