Every blog starts with a post that’s really just a setup test disguised as content. This is that post.

Why now#

I spend a lot of time writing documentation, design docs, and internal notes at work. Most of it disappears into the void. A blog forces me to write for a broader audience and keeps a record of things I’ve figured out.

Mostly I’ll write about:

  • Go — Anything cool I may learn and want to share, I have opinions
  • Multi-agent systems — Building production LLM pipelines is messier than the demos suggest
  • Backend architecture — Databases, APIs, the usual
  • VST’s & Music Production - Any plugins, features or particuarly cool sounds Id like to share
  • Whatever I’m currently debugging that might save someone else an afternoon

What this site is built on#

Hugo. Single binary, no node_modules, sub-second builds. It’s what you converge on when you want to actually maintain a blog long-term instead of maintaining your blog’s build toolchain.

# hugo.toml 
baseURL = "https://lhorsl.dev/"
title   = "lhorsl"

Syntax highlighting test#

Since I’ll be writing a lot of Go, let’s confirm Chroma is working:

package main

import (
    "context"
    "fmt"
    "log/slog"
)

type Agent struct {
    Name   string
    Model  string
    System string
}

// Executes the agent with the given user message.
func (a *Agent) Run(ctx context.Context, userMsg string) (string, error) {
    slog.Info("running agent", "name", a.Name, "model", a.Model)

    // TODO: All the magic here :)
    return fmt.Sprintf("[%s]: response to %q", a.Name, userMsg), nil
}

func main() {
    agent := &Agent{
        Name:   "wisdom-toad",
        Model:  "claude-opus-4-6",
        System: "You are a concise philosophical toad. Wisdom seeps through your veins.",
    }

    resp, err := agent.Run(context.Background(), "What is the meaning of all this?")
    if err != nil {
        slog.Error("agent failed", "err", err)
        return
    }

    fmt.Println(resp)
}

Looks good. More soon.