Explore the world of future

Crafting the digital future through open-source coding and innovative solutions.

A Claude Code Status Line That Tells Me When I'll Run Out

The status line is the one piece of UI I look at every few seconds, all day. So I stopped treating it as a place for a model name and a branch, and made it answer the questions I actually have while I work. Is the context about to compact? Am I burning through my limit faster than the window allows? When does it reset? What has today cost? And what is the weather doing outside? ...

September 27, 2026 · 6 min · 1233 words · Kristoffer Risa
A gloved hand holds the collar of a black jacket behind a large dark conch shell on a pedestal.

Installing Oh My Zsh on Linux and macOS

Zsh + Oh My Zsh turns a plain terminal into a fast, autocompleting, good-looking shell. This is the guide I keep coming back to — freshly revised for 2026, covering both Linux and macOS, with the plugins and fonts that actually make a difference. Revised (July 2026): rewritten with separate Linux/macOS tracks, current install commands, Nerd Fonts, and the two plugins I install on every machine. Jump to your platform: 🐧 Linux (Ubuntu / Debian) 🍎 macOS ⚙️ Configure & make it yours — themes, plugins, fonts (same on both) 🐧 Linux — Ubuntu / Debian Tested on Ubuntu 20.04, 22.04 and 24.04 (and Debian 11/12). Everything here is apt-based. ...

July 8, 2026 · 4 min · 704 words · Kristoffer Risa
An open matte pocket knife lies on a dark bench, its blade edged in green light, beside a coil of cut cable.

CLI-first AI Agents: Why I Build Small Tools Instead of MCP Servers

I build AI agents for a living, and the single most useful thing I’ve done for them is stop giving them big interfaces. No SDKs. No sprawling APIs. No MCP servers with twenty tools registered at boot. Instead I give them what Unix gave us forty years ago: small, sharp, isolated CLI tools they can compose. One job each. Text in, text out. That’s the whole methodology. This post is the short version of why. ...

May 15, 2026 · 4 min · 767 words · Kristoffer Risa
A dark mechanical claw is locked inside a small barred cage, with green cables running out across the floor.

Building a Hardened Linux Environment for Your OpenClaw AI Agent

A practical, opinionated guide to running an autonomous AI assistant on a dedicated home lab server — with proper isolation, network control, and custom tooling. Goals You want a dedicated, always-on Linux machine that runs an AI agent (OpenClaw) with the following properties: Isolated execution environment — The agent runs under a dedicated Linux user (agent-openclaw) with strict permission boundaries. It cannot escalate to root, cannot access other users’ data, and operates within well-defined filesystem and process boundaries. ...

February 5, 2026 · 19 min · 3843 words · Kristoffer Risa
A gloved hand turns the tap of a dark keg while a bottle of green light lies on the table.

Creating Your First Homebrew Tap: A Complete Guide

If you’ve built a command-line tool and want to make it easy for users to install, Homebrew is one of the best distribution methods available. In this guide, I’ll walk you through creating your own Homebrew tap—a custom repository that allows users to install your software with a simple brew install command. Steps Overview Prepare Your Binary Releases Create Your Tap Repository Write Your Formula Get SHA256 Checksums Push Your Formula Test Your Tap Share Your Tap What is Homebrew? Homebrew is the most popular package manager for macOS, and it also works on Linux. It allows users to install software from the command line with simple commands like brew install wget. Think of it as an app store for command-line tools and applications. ...

January 7, 2026 · 6 min · 1215 words · Kristoffer Risa
A gloved hand holds up a glass case with a single green spark sealed inside, against a dark grid.

Spark from NDC Oslo: Events as Internal APIs

💥 Spark: Events as Internal APIs At NDC Oslo, one quote from James Eastham really stuck with me during his talk: “Think about your events as internal APIs.” This simple mindset shift has deep implications for how we design, evolve, and document event-driven systems. Just like internal APIs, events deserve: Clear contracts — schemas, versioning, and well-defined intent Ownership — someone needs to own the lifecycle and semantics Documentation — make it obvious what the event means and when it’s emitted Stability — no breaking changes without coordination This spark reminded me that reliability in event-driven systems isn’t just about infra or retries — it’s about treating your events as first-class citizens in your architecture. ...

May 28, 2025 · 1 min · 150 words · Kristoffer Risa
A matte-black spacecraft sits on a straight rail between tall side walls, facing a solid end wall.

Link Sparks: The Power of Ten - Rules for Developing Safety Critical Code

The Power of Ten - Rules for Developing Safety Critical Code The “Power of Ten” is a set of coding rules designed by NASA’s Gerard J. Holzmann to improve the safety, reliability, and maintainability of safety-critical software. The document outlines ten essential rules for writing robust, verifiable code in critical systems, with a focus on simplicity, strict control flow, memory management, and code clarity. ...

April 5, 2025 · 1 min · 186 words · Kristoffer Risa
A gloved hand holds a round vault door nearly shut on a glowing notebook, with cables and a small black box left on the floor outside.

Obsidian + GitHub: Safe .gitignore Setup

Syncing Obsidian vaults with Git works great until machine-specific files create conflicts or you accidentally commit sensitive notes. This guide gives you two battle-tested .gitignore configurations and a safety checklist to avoid common pitfalls. Quick take: Use the Strict setup to eliminate config conflicts entirely. Add .gitattributes for cleaner diffs. Keep your repo private unless you’re building a public knowledge base. Recommended .gitignore A) Minimal (Keep plugin settings, drop noise) Keeps plugin settings and config across devices. Excludes cache and workspace files. ...

January 4, 2025 · 2 min · 324 words · Kristoffer Risa
A gloved hand lowers a small closed crate tied with a glowing green cord into a larger open crate.

Managing Git Submodules: A Quick Guide

Git submodules are a powerful feature that allows you to include and manage other repositories as part of your main repository. This is especially useful for projects where you want to use external repositories (e.g., a custom Neovim configuration) while keeping them independent. In this post, we’ll cover how to set up, update, and manage Git submodules with a practical example. What Are Git Submodules? A submodule in Git is a pointer to a specific commit of another repository. It allows you to include that repository as a part of your main project without merging its content directly into your repository. ...

January 3, 2025 · 3 min · 488 words · Kristoffer Risa
A gloved hand bolts an oversized black key onto the bare face of a dark machine, with a green light in the panel.

Getting Started with Neovim: From Install to LazyVim

Neovim is Vim with the parts that aged badly replaced: Lua instead of Vimscript, a language server client built in, and syntax trees instead of regular expressions. It is still the editor that opens in a terminal in a tenth of a second and does not need a mouse. This is how I set it up on a new machine. I rewrote it the week I set up a new Mac, following it step by step. Every command has a Copy button, and the ones marked Run type themselves into this site’s terminal, so you can see what they do first. At the end there is a checklist that remembers where you got to. ...

December 25, 2024 · 9 min · 1820 words · Kristoffer Risa