Bootstrapping This Hollow Earth.
I want to know if the AI hype is real. To find out, I decided to start using AI in my day to day workflow. The idea is as follows:
- I am consulting about technology, product development, organisations and environmental supply chain risk. Great, but there are many people doing that and claiming to be good. How do you know if I’m for real or full of shit?
- By show, don’t tell. I build products and show how I do it.
- To build (design, engineer, ship, market, sell) the products, I will use AI. Using AI to build products allows me to learn and evaluate.
- I write about my adventures and publish them to exploit the teachers paradox.
So, to get us started, we need 2 things:
- A publishing platform (this website)
- An AI workflow
1. Website update
This site is built with Hugo, originally with the YinYang theme and hosted on Gitlab. The newsletter is powered by Buttondown. I use Obsidian for note taking and Vim.
The YinYang theme is nice and minimal and worked for my previous blog series but it’s a bit too limited. I looked around for other minimal options and found PaperMod. PaperMod is great. It’s simple but has a ton of options, it’s fast, it’s lean, it’s responsive. PaperMod is great.
Papermod works out of the box but since I use Umami for analytics, I had to set that up by hand. I added layouts/partials/extend_head.html to my Hugo root and added the following snippet:
{{- /* Head custom content area start */ -}}
{{- /* Insert any custom code (web-analytics, resources, etc.) - it will appear in the <head></head> section of every page. */ -}}
{{- /* Can be overwritten by partial with the same name in the global layouts. */ -}}
{{- if site.Params.analytics.umami.SiteVerificationTag }}
<script async src="https://analytics.umami.is/script.js" data-website-id="{{ site.Params.analytics.umami.SiteVerificationTag }}"></script>
{{- end }}
{{- /* Head custom content area end */ -}}
Then I added the token to the hugo.yml configuration file, and it worked:
analytics:
umami:
SiteVerificationTag: "<token>"
That way, the PaperMod theme folder doesn’t get polluted with custom code and you can run git submodule to keep it up to date.
For authoring, I switched to the LazyVim setup. LazyVim is a superfast, batteries included Neovim setup. DevOps Toolbox has a nice video about LazyVim (the channel is one of my sources for DevOps tooling btw; I find new cool tools all the time).
TODO:
- review text on syntax, grammar, tone, style, content
- review information architecture
- optimisation and tweaking
- visuals and branding
- enable multilingual and translate to Dutch
- migrate medium posts to essays
AI workflow
To setup a basic AI agent workflow I figured I need:
- A model
- A harness
- A memory
- A task manager
- A notification channel
I kept some engineering principles in mind while selecting candidates: loose coupling, orthogonality, KISS and look at what you already have.
This README ticked all boxes. I mostly followed the recipe with the following notes:
- I use Hermes agent instead of OpenClaw since Hermes seems to most hyped one and the second mouse gets the cheese.
- I use Telegram as a notification channel. It’s cool to try new stuff and I never used Telegram, so I went for Telegram.
- I picked Linear as a task manager since I wanted to experience working with Linear. It’s hyped and I want to know why. And it has the coolest swag.
- I use Obsidian for memory. I reorganised my existing vault according to the PARA method.
This setup adheres to all my principles: it’s model agnostic, I can switch and add notification channels, the tasks are managed independently and can be picked up by humans or agents, it allows for both HITL and AFK workflows.
One caveat: everything went smooth and worked pretty much out of the box following the README above. Until I got to the Connect Linear part. It says:
The easiest way to set this up: Ask your OpenClaw agent to do it. It already knows your machine, your setup, and your tools. Just send it this:
Help me set up a Linear integration for OpenClaw. I want you to:
- Be assignable as a team member in Linear
- Respond when I @mention you in comments
- Update issue status (In Progress, In Review, Done)
- Post comments on issues with work summaries
Walk me through creating the OAuth app, setting up webhooks,
and wiring everything together. Do as much of it as you can for me.
Your agent will walk you through it step by step — and handle most of the heavy lifting itself. That’s the whole point of having an agent.
Instead of OpenClaw, I used Hermes. And the agent did indeed walk me through the steps and set everything up. But it cost me my afternoon. Maybe because I was using a crappy model. But mostly (and this was actually fun) because getting my agent to post to Linear was easy, but @mentioning my agent in a Linear issue opened a can of worms. I run agent on my laptop. So there is no public endpoint or webhook for Linear to post to. Nevermind, Cloudflare fixes this with Cloudflared, a tunnel client. I made a Cloudflare account, installed the tunnel client and setup a tunnel in the cloudflare web UI. Easy. Got it working in no-timne. But a tunnel is a tunnel, you need a route as well, a from (public webhook) and a to (my laptop). Turns out, Cloudflare doesn’t supoprt .earth domains, so I couldn’t use thishollow.earth. Nevermind, So I registered thishollowearth.net for 10$ / year and used that as the public endpoint. Then my agent was smart enough to setup the to of the route as a new port in the Hermes gateway and Bob’s your uncle! It works. Well, almost. I can @mention my agent from Linear issues, it gets picked up by the agent. But when the @mention is not clear, the agent returns with clarification questions, which Linear doesn’t respond to and then simply times out the connection. O well, let’s figure that out later.
Until now, I ran Hermes with free OpenRouter models, which is not ideal. But it works and you learn a lot about managing your token spend. I am planning to run a Claude Pro subscription model for production eventually.
Everything works. Now I have to start using it to learn and get familiar with the tooling.
Next
Hermes is perfect for day to day work. For hardcore engineering and software development (building products) I will to use Pi and Opencode.