Johan Eliasson

Tech, space, games and random stuff

Sandbox for Agents

For the last few months, I’ve been tinkering with building a personal AI assistant (think OpenClaw). One thing quickly became clear: agents get much more useful when they can run real commands like install packages, manipulate data, or browse the interweb. The problem is that letting an agent run arbitrary commands directly on it’s host is less than ideal, so I wanted a sandbox environment where they could run pretty much anything, while reducing the attack surface. ...

Settling into NixOS

Earlier this year, I decided it was time for a change in my setup. Linux Mint with i3 had served me well, but Xorg was starting to feel dated, especially performance-wise. That’s when I started thinking about what I actually wanted from my system. I could go the Arch route and live on the bleeding edge, or try something different and more predictable. Then I remembered looking at NixOS a long time ago. The idea of describing an entire system in configuration and being able to rebuild it anytime had always stuck with me. The more I read about it, the more it felt like the direction I wanted to go. ...

Hello, World!

With the switch to Hugo, I wanted a place to test the syntax highlighting that comes with Chroma. This is that place, and we’ll use the classic “Hello, World!” example in various computer languages I have used in one way or another, past or present. Of course, let’s over-engineer it by having some pipelines do the output. Languages Ansible - hosts: localhost tasks: - debug: msg: "Hello, World!" Bash #!/bin/env bash echo "Hello, World!" Batch @echo off echo Hello, World! C #include <stdio.h> int main(void) { printf("Hello, World!\n"); } C++ #include <iostream> int main() { std::cout << "Hello, World!\n"; } C# using System; class Program { static void Main() { Console.WriteLine("Hello, World!"); } } CSS body::before { content: 'Hello, World!'; display: block; } Dockerfile FROM alpine CMD ["/bin/sh", "-c", "echo Hello, World!"] HTML <!DOCTYPE html> Hello, World! Go package main import "fmt" func main() { fmt.Println("Hello, World!") } Java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } JavaScript console.log('Hello, World!'); PHP <?php echo 'Hello, World!'; PowerShell Write-Host "Hello, World!" Python print('Hello, World!') SQL SELECT 'Hello, World!'; TypeScript console.log('Hello, World!'); Terraform output "greeting" { description = "Prints 'Hello, World!'" value = "Hello, World!" }

New look and feel

I originally built this site using Astro, which worked well… until it didn’t. When I finally got around to writing a new post, the deployment pipeline failed due to breaking dependencies. A quick upgrade to the latest major version didn’t go as planned, and instead of wrestling with it, I decided to switch to something simpler. Enter Hugo — a pure static site generator known for its speed, simplicity, and minimal dependencies. While migrating, I also created a custom theme based on PaperMod. Say hello to term, a lightweight, terminal-inspired design that keeps things clean and minimal. ...

Creating a npm package to extend husky

A couple of months ago I stumbled upon the npm package husky. It provides a way to hook into various git hooks and brings some nice opportunities in improving DX. After having husky and a few hooks in some various git projects, I thought it would be a fun mini project to make these hooks into a separate npm package: @jeliasson/husky-hooks was created. This npm package aims to increase the developer experience and consistency by providing a set of hooks that can be opted-in the development lifecycle. It depends on husky for pre-commit and pre-push hooks, and a few other zero/low dependency packages. ...