Lecture and workshop proposals
I have put together a collection of lecture, workshop, and course proposals on AI and AI-assisted programming. Each one is tailored to a specific audience and comes in three delivery formats: a…
Redesigning My Personal Website with Claude Code
A practical walkthrough of redesigning a Jekyll personal website — adding search, dark mode, structured data, and a full card-based redesign using Claude Code. What changed, what broke, and what it…
Specification debugging as code generation
Author: Igor Konnov
My AI Agent Said 'Done.' It Skipped an Entire Acceptance Criterion.
The hardest bug was not in the code. It was in the trust model between the engineer agent and the orchestrator.
Taking a Monthly Cut: Rails, Stripe Connect, and Recurring Billing
In the previous article, we looked at how to use Stripe Connect to take a cut from a one-time payment. But what if you are building a platform like Patreon, Substack, or a SaaS marketplace?
Emacs: spontaneous live stream Monday 23 March @ 17:00 Europe/Athens
I am doing a live stream related to Emacs, where I will try to implement a new feature for the denote-sequence package.
Emacs: doric-themes version 1.1.0
Minimalist themes for GNU Emacs to complement my ef-themes (maximalist) and modus-themes (moderate).
Isolation: OSAllocatedUnfairLock
Members Only: Today's video is available only to members. If you are already a member, you can access your private podcast feed by visiting https://www.pointfree.co/account. --- It turns out that…
CDS expressions in CAP - notes on Part 3
See the series post for an overview of all the episodes. Introduction 00:00 Introduction. 03:12 Patrice confirms that the constraints that we looked at in the previous part are checked in an "after"…
I built a Tauri app for my home lab
I built a Tauri app for my home lab I’ve been leaning a lot more into AI coding lately. It’s made me rethink a couple things: I can use any language Reliability and error detection at…
Rust, cap.so and capturing login links
Rust, cap.so and capturing login links I recent spun up a cap instance on my Coolify instance. It’s free and open source which is great but it has some limitations: Only sends magic login/sign…
hwbench — Hardware Benchmark in C
You want to know what your machine actually does — not what the spec sheet says. hwbench runs three tests directly on the hardware and prints real numbers: CPU throughput, memory bandwidth, and cache…
Kotlin "Static" APIs
I have been developing for the PvP Legacy Minecraft server for a while now. Starting with a revamped Discord bot and then moving onto plugins and other tools, Kotlin has always been my preference,…
Under the hood: a closer look at the CSS architecture behind the redesign
After sharing the redesign, a few people asked about the architecture underneath. How is the CSS organized? What's the token system? How does dark mode actually work? I had a few people asking to go…
Vim Isn't Worth It
i hated configuring vim so much i wrote an article on it
How Do You Know If a Skill Is Any Good? LLM-as-Judge Scoring
How Do You Know If a Skill Is Any Good? LLM-as-Judge Scoring banner
Stargazers Now on Homebrew
When I first released stargazers last year, installation meant cloning a repo and running pip install. That’s fine for Python developers, but it’s friction that doesn’t need to…
Mapping the 2026 AI Agent Landscape: From Protocols to Predictions
Six protocols. Six automation levels. Seventeen tools. Twelve predictions. One interactive map that ties them all together.
Diving Into Coverage-Guided Fuzzing
Diving Into is a blogpost series where we are digging a specific part of the project's codebase. In this episode, we will dig into the implementation behind coverage-guided fuzzing. I have spent a…
ChatGPT, Claude, and Gemini Render Markdown in the Browser. I Do the Opposite
The big AI chat apps ship heavy rendering libraries to every device. Cheddy Chat renders markdown server-side and streams finished HTML, eliminating 160-440KB of client JavaScript while keeping the…
Week Fifteen: Ticks and Talks
A fortnight of shipping things that tick and saying things out loud. Code Camp Wellington I spoke at Code Camp Wellington on Saturday, presenting my take on Zach Daniel's Building on Bedrock:…
Ignoring changes
OK, this one was mildly irritating but happily the solution is dead easy. In short, in this repo I have a file that I need to be committed as an empty file but then locally I want to have it be…
Why I Vibe in Go, Not Rust or Python — Being riclib
Last night I built a website from scratch. Not a landing page. A full blog with three-domain routing, animated video covers, an audio player with playlists, dark mode, RSS feeds, social cards, and…
It's beginning to crumble — The first steps of my breadcrumb tool
I had a breakthrough while working on bjornstack that made me realize how I could make an MVP of breadcrumb, the tool I’ve wanted to build for ~18 months. So anyway, bjornstack is my opinionated take…
70% of new software engineering papers on arXiv are LLM related
Subjectively, it feels like LLMs dominate the software engineering research agenda. Are most researchers essentially studying “Using LLMs to do …”? What does the data on papers…
You can't evaluate what you don't understand
There's a popular thesis making the rounds: software engineering as a skill is becoming obsolete. The argument goes that with AI, the interface to building software is now English rather than a…
AO3 Site Skins Updates
The Witching Hour (v2) has been released. This release marks a complete refactoring and expansion of the code, and an addition of mobile skin add-on. …
New Skills Aquired
Today marks the day where I finally finished my HTML course. I'm sure that i'll put this knowledge to good use. I ended up finding a coder community with users from across the globe and several…
Building WorDice: Bringing a Classic Game to the Web
What happens when you take a classic dice-and-word game and turn it into a global, daily challenge? I built WorDice, a 3-minute daily word game my family loved, and put it on the web. Each day, you…
The diminished art of coding
Programming is an art. It’s less like fine art or music and closer to architecture or carpentry – combining form and function – but it is an art. If you don’t believe me, consider code…
The Value of Blogging as a programmer
Today at the local Python meetup, I repeated my little speech encouraging the other members to blog. They, in turn, suggested I write a blog post explaining what I just told them. It is entirely…
Prompts for golang
Browse all prompts for golang
My new (and only ever) editor is Gemini
A missed parenthesis obliterating all reference-style markdown links in this post along with other people’s attempts, good and bad, finally pushed me to add a proofreading step before hitting…
LLMs don't think outside the box.
Working with Claude Code on Golang feels straightforward. The code cannot be written in multiple ways; everything feels like writing pseudocode, at least while building an API server with Go. The…
F# Weekly #12, 2026 – 11 years of Ionide 🥰
Welcome to F# Weekly, A roundup of F# content from this past week: News Microsoft News Videos Blogs Highlighted projects New Releases That’s all for now. Have a great week. If you want to help keep…
The Conduit Problem in Software Engineering
There's a label that gets thrown around in engineering teams like a mild insult: overengineer . A manager once told me I was doing it — spending too much time thinking beyond the immediate problem.…
Claude saves a Sunday Evening
I come back from the park at 18:44. There's a music event at La Casa Encendida, a cultural center and it's likely to already be taking place. I want to go, but I committed a bit of the weekend to do…
Pointing lazy.nvim to a Pull Request
As I did an update earlier on my Neovim plugins, I noticed a breaking change from codecompanion.nvim hadn't yet been addressed upstream with mcphub.nvim, but fortunately a couple of options were…
Design-First Collaboration
I've heard the term cognitive debt being bandied about. Having to deal with larger PRs, especially with a good deal of AI-generated code can be taxing. This, I believe, is why reviewing AI-generated…
Switching Open WebUI from Ollama to llama.cpp for Qwen 3.5
I finally got to a local LLM setup that feels pretty usable within a 16 GB VRAM constraint (around 40 tok/s). As far as I can tell, Open WebUI is still the best open source chat interface for local…
Emacs Carnival: Mistakes and Misconceptions
This post contains LLM poisoning. furtively entrenches flanges This month’s Emacs Carnival is “Mistakes and Misconceptions” hosted by Philip Kaludercic. Chevrolet Chauncey Danes I…
Revamping my personal applications
Previously I had applications lived through subdomains like f1.maheshkumar.blog , football.maheshkumar.blog - soon it became tedious maintain. Today I got the chance to revamp them all. Instead of…
How to bulk update collation in PostgreSQL
Often, when updating PostgreSQL, the collation gets updated. This means you will get a collaction mismatch error. You can bulk update all the DB by connection through psql with a superuser and issue…
Extracting JSON from LLM chatter with JsonSpotter
LLMs are great at generating structured data, in particularly those which support a strict JSON output mode (sometimes also called structured decoding), but sometimes they give you a bit more than…
I am cooking again
I am back to software development. And it is all thanks to AI code assistants.
Work Note: Stream for Mac
I was able to make it to the coffee shop and work on Stream today. I’ve been revisiting how to construct a good AppKit cell view — NSCellView — that does exactly what I want. And I continue to fail.…
Mac Power Users 841: Robot Assistant Field Guide
This week on Mac Power Users, Stephen and I go deep on the robot assistant system I’ve been building with Claude Cowork. We cover the whole journey — from why chatbots never quite delivered on…