Writing
Essays and notes on AI, DevOps, cloud native systems, and the craft of technical writing.
Building AI Agents That Refuse to Guess
An agent that can take action is not automatically safe to trust. These are the patterns I use to make coding agents inspect first, ask for intent, gate side effects, and stop when they lack confirmation.
Archive
Everything, most recent first.
How I Self-Host GBrain for Multiple Coding Agents
I moved GBrain from a local PGLite database to a shared PostgreSQL service in my homelab so several coding agents can use the same persistent memory.
Building a Simple MCP Sandbox for My Poke Assistant
How I built a small Go MCP server for Poke, isolated it with Docker, exposed it through Traefik and Tailscale Funnel, and kept command and file access constrained to my development workspace.
Best Practices for Writing Agent Skills
I've been writing agent skills for Claude Code, these are the patterns that held up: thin SKILL.md files, deterministic scripts for the boring parts, progressive disclosure, and being disciplined about how many skills you leave enabled.
Moving Codex App Chat History and Context to a New Mac
I recently migrated local Codex app chat history from one Mac to another and noted the caveats along the way. This guide captures the simplest working approach.
How I Run OpenClaw Behind Traefik and Tailscale in My Homelab
This is how I run OpenClaw in my homelab behind Traefik and Tailscale, with the gateway bound to loopback and basic auth protecting the public route.
How I Actually Work With AI (OpenCode, Antigravity, Claude, and Codex)
A research-backed breakdown of my real AI workflow across OpenCode, Antigravity, Claude, and Codex, including models, skills, MCPs, and how I orchestrate them in practice.
Ingress-NGINX Is Dying and Kubernetes Is Better for It
The retirement of Ingress-NGINX represents the natural evolution of Kubernetes networking - from convenience toward correctness, from implicit behavior toward explicit contracts.
Understanding and Building AI Agents
A Practical Guide to AI Agents: How They Work and How To Build Them Reliably
Hands-On with Kubernetes v1.34 New EnvFiles Feature
In this hands-on guide, we'll explore the EnvFiles feature by setting up a real Kubernetes cluster and deploying a Node.js application that demonstrates this new capability.
Connecting to Google Kubernetes Engine (GKE) Clusters Locally
A comprehensive guide to connecting to GKE clusters locally using kubeconfig files, perfect for team environments and automated infrastructure setups.
Supercharging Go Test Suites: Build Tags, Parallel Testing, and Proper Async Patterns
Discover four key techniques that dramatically improved test performance and reliability in a real-world Go project: build tags for test separation, shared utilities, parallel execution, and proper async testing patterns.
Building Pull Base - Type-Safe Database Operations in Go
Explore how Pull Base implements a type-safe approach to database operations using Go's strong typing and the sqlx library, tackling nuances like NULL handling and struct mapping.
Building Pull Base: Elegant Concurrency with Go's Context System
Let's examine how PullBase implements context-based concurrency management in its GitMonitor component, and how this pattern can be applied to your own Go applications.
Interface Implementation in Go
Learn how interfaces are implemented in Go.
Setting Up Local SSH Access on Arch Linux from a Mac
This guide shows how to configure an Arch Linux machine for SSH access from a Mac using key-based authentication
Fixup Commit in Git
Learn how to update a commit with a local file change using a fixup commit
Understanding SSL/TLS Certificates and Public Key Infrastructure (PKI)
Dive into these SSL/TLS certificate and PKI, explore their practical applications and why they're crucial for developers and system administrators alike.
Services in Linux
A short introduction to creating Services in Linux
Graph Databases vs. Traditional Relational Databases: A Comparison
Graph databases and traditional relational databases are two distinct types of database management systems (DBMS) with their unique strengths and use cases. This blog post compares and contrasts these database types, focusing on their structure, query capabilities, performance, scalability, and use cases.
Understanding Slice Modification in Go: Pointers vs. append()
A short note on Modifying Slices with Pointers and Slices in Go
Kubernetes Network Security with Cilium
In this blog post, we'll dive into the world of cloud native networking, exploring Kubernetes Network Policy and Cilium Network Policy
Cloud Native 101
Dive into the foundations of Cloud Native for Beginners
2023 - A Paradox
2023, you've been a paradox, but as my Yoruba people say, 'Kashamadupe'!
Packages in Go and Other Things
In this issue, I share some of my notes on packages, variables and types
On Building Goignore
I took my first step into building a usable and functional Go program with GoIgnore after studying Golang for over a month.
Source Operations in Platform.sh
In today's blog post, which is the final blog post of the 7 days of Platform.sh series, I will be discussing what a source operation is on Platform.sh, the problem it solves and how to set up one for any of your applications deployed on Platform.sh.
Deploying Go Web Applications on Platformsh
Go is a statically typed, compiled language with an emphasis on easy concurrency and network services. Many software engineering teams today use Go for the backend of their web applications because it is efficient, fast, simple and reliable. In today's blog post, which is part of the 7 days of Platform.sh series, I will be discussing how Platform.sh supports Go developers to deploy their projects with ease.
Platform.sh & NextJS
A lot of React developers have decided to make use of NextJS, the open-source React framework to build their production UIs. This is because NextJS has simplified the React framework with extra features like hybrid static and server-side rendering, out of the box Typescript support, smart bundling and many others without any config. In today's blog post, which is part of the 7 days of Platform.sh series, I will be discussing how Platform.sh supports NextJS and React developers to deploy their projects with ease.
Assessing the Performance of Django Applications with Blackfire
Blackfire is a code performance and observability solution that helps improve web applications performance at various steps in a software development life cycle: from development to test, staging and production. In today's blog post, I'll be introducing Blackfire and how you can use Blackfire to assess the performance of your Django applications.
Platform.sh & Django
In today's blog post, which is part of the 7 days of Platform.sh series, I will be discussing how Platform.sh supports Python and Django developers to deploy their projects with ease.
Deploying a CMS with Gatsby on Platform.sh
On day one of the 7 days of the Platformsh series, I discussed how Platform.sh helps Gatsby and React developers host their Gatsby-based web application frontend. Today, we'll be discussing how platform.sh supports the deployment of multiple applications as a single project, we'll be using Gatsby and a Drupal CMS as a case study.
Platform.sh & Gatsby
On day one of the 7 days of Platform.sh series, I'll be discussing how Platform.sh helps Gatsby and React developers host their Gatsby sites.
A Part of the Next Generation
After a while working at the CFF, I realized that I was looking for a different thing because I felt like my work with the CFF was already at its end and I wanted to move on to another. I still wanted to remain in the PaaS and also do open source work in the process because I strongly believe in it.
Approaching Developer Relations in an Open Source Foundation
Over the past 7 months, we've built a new DevRel program from scratch, and in this article, I'll share some tips, ideas, and frameworks we've built to help us with our work and some lessons we've learned along the way.
Deploy a Full-stack Nodejs App on Cloud Foundry
In this tutorial, we will be deploying a full-stack application on Cloud Foundry with a Node.js backend and a MongoDB database service.
My Thoughts on African ( South African, Nigerian) Music & My Origin With Music
If you look closely at the music scene in Africa, South Africa is the original music powerhouse of Africa. South Africans have steadily been creating their sound without copying sound from other African countries, unlike Nigerians.
Build a Slack Bot with n8n Webhooks node and Github API
n8n is a free and open fair-code licensed node-based workflow automation tool, the main aim of n8n is to allow people automate processes with little or no-code. With n8n you can build a lot of interesting workflows and automate a lot of processes from event registrations, to sharing updates when an event happens etc.
Javascript Build Tools: Past and Beyond
Code used in production is different from development code. In production, you need to build packages that run fast, manage dependencies, automate tasks, load external modules, and more. Tools that make it possible to turn development code into production code are called build tools.
Higher Order Components in React
React is a fantastic Javascript library for building rich user interfaces, it provides a great component abstraction for organising your interfaces into well-functioning code but what about the look and feel of the app? In the browser, the look and feel of the app are mostly defined by CSS which is a means of styling our web applications and websites. There are various ways of styling React components from using stylesheets to using external styling libraries etc.
Consuming REST APIs in React With Fetch and Axios
In this tutorial, we are going to learn about how to consume REST APIs in React using the fetch API and the Axios client. In the process, we will also build a simple react applications that is consuming an API. At the end of this tutorial, the readers would understand what a REST API is and how to consume them in React with the best practices.
Styling Components in React 💅
React is a fantastic Javascript library for building rich user interfaces, it provides a great component abstraction for organising your interfaces into well-functioning code but what about the look and feel of the app? In the browser, the look and feel of the app are mostly defined by CSS which is a means of styling our web applications and websites. There are various ways of styling React components from using stylesheets to using external styling libraries etc.
Getting Started With the React Hooks API ⚛️
When React 16.8 was released officially in early February 2019, it shipped with an additional API that lets you use state and other features in React without writing a class. This additional API is called Hooks and they're becoming popular in the React ecosystem, from open sourced projects to being used in production applications.
ReactJS, The First Time ⚛️
ReactJS is a JavaScript UI library that was built and is being maintained by Facebook. React gives JavaScript developers the ability to think logically and functionally about building user interfaces.
Random thoughts on Building APIs
An API is a contractual agreement between two services over the shape of request and response. The code is just a byproduct. It also contains the terms of this data exchange."
Possible Ways To Reduce Webpack Bundle Size
webpack is a static module bundler for modern JavaScript applications. When webpack processes your application, it internally builds a [dependency graph](https://webpack.js.org/concepts/dependency-graph/) which maps every module your project needs and generates one or more bundles
</2018>
At the time of writing this, I haven't found a topic for this article yet and I don't want to use the classic 'My year in review' so whenever you read this article just know that I still don't have a title and I have left it at what it is.
How to use GitHub Desktop with Gitlab
When React 16.8 was released officially in early February 2019, it shipped with an additional API that lets you use state and other features in React without writing a class. This additional API is called Hooks and they're becoming popular in the React ecosystem, from open sourced projects to being used in production applications.
Practical Introduction to Javascript Debugger 🚨
The JavaScript Debugger Statement is used to debug our javascript code. It can be placed inside a function so as to help debug the function whenever we need to.