AI Agents in Python
A three-part progression from simple decision agents to LLM-powered agents and clarifying loops that ask before acting.
Technology
This pillar collects the engineering side of the site: AI agents, Go systems, JavaScript, browser tooling, static site infrastructure, and the older experiments that still say something useful about how I work.
Recurring pattern
I usually end up here when I want more control than an abstraction is willing to give me. That could mean a custom generator, a Go library validated against a Python reference, or an AI workflow that starts with requirements before any code is written.
Technology projects
A three-part progression from simple decision agents to LLM-powered agents and clarifying loops that ask before acting.
A Go framework for local apps where the Go process owns the DOM and the browser is just a screen. No Electron, no complex JS frontend, no API layer; go build gives you one binary that opens a tab.
A custom backtesting engine built for strategies that stopped fitting neatly inside off-the-shelf Python frameworks.
A Go ephemeris toolkit built on NASA JPL ephemeris data, born from porting a real Skyfield-based workflow. Now the bedrock for further tooling in this space.
A beginner-friendly series on compiling Quake 3 source and modifying missile behavior to create a homing rocket.
A Chrome extension for running SOQL and SOSL queries directly against Salesforce with no intermediate server.
A flexible Node.js static site generator I built when existing tools felt too rigid and too tied to someone else's content model.
A sitemap-driven SEO analysis workflow built almost entirely with AI agents, then corrected by hand where the agents drifted.
Technology writing
May 11, 2026
Building a small godom app in three stages: a counter, two islands on one page, then a multi-page layout with a shared-state dashboard.
May 9, 2026
godom's bridge.js builds DOM, applies patches, and forwards events. It does not evaluate expressions, hold state, or make decisions. The constraint is the feature.
May 8, 2026
A breakout game built on godom: laptop renders the game, phone is the paddle controller via gyroscope, both connected to the same Go process.
May 7, 2026
Go shells out to ffmpeg, decodes a video into JPEG frames, sends them to a browser canvas. No HTML video tag, no streaming, no codecs in the browser.
May 6, 2026
godom doesn't ban JavaScript; it pushes it to the edges where it actually pays for itself. Three tiers, one rule, and the trap to avoid.
May 5, 2026
I wrote a 3D engine in Go and let the browser draw 2D circles. No three.js, no WebGL, no JS math libraries. Just a list of 2D draw commands per frame.
More in Technology

May 4, 2026
godom's composition model: stateful islands, stateless partials, slot-based content, and the shared-pointer trick for state across islands.

May 3, 2026
I built a browser-based terminal in Go using godom and xterm.js. Then I ran Claude Code inside it. It just worked.

May 2, 2026
godom uses binary Protocol Buffers, not JSON, with a deliberate Browser→Go split between input value sync and explicit method calls.

May 1, 2026
I built godom mostly with Claude as an implementation partner. Here's what that actually looked like.

Apr 30, 2026
How godom builds a virtual DOM tree in Go, diffs it against the previous tree, and ships only the patches the browser needs to apply.

Apr 29, 2026
godom ships a docs/llm-reference.md aimed at AI agents writing godom apps. Why that doc exists, what it covers, and what the workflow looks like.

Apr 29, 2026
I kept needing a UI for local Go tools and hating every option. So I built a framework where Go owns the DOM and the browser is just a screen.
Feb 25, 2026
AI-assisted port of Skyfield (Python) to a Go ephemeris library. Validation-first approach, golden tests, and bug hunts.

Sep 3, 2025
From simple rules to clarifying loops: explore this 3-part series on building AI agents in Python, with examples.

Aug 31, 2025
Build a Clarifying Agent in Python with GPT-5 that asks follow-up questions until inputs are clear, providing a safer, smarter, and user-friendly experience.

Aug 28, 2025
Build an LLM-powered agent in Python: use GPT-5 to turn natural language into structured data, then apply simple rules for smart meal suggestions.

Aug 28, 2025
Learn how to build a simple rule-based decision-making agent in Python. Perfect for beginners, this is Part 1 of the Building Agents series and includes code, logic flow, and real-world analogies.

Aug 23, 2025
High-level look at building an SEO analysis tool with GitHub Copilot and Claude Sonnet 4 - what worked, what broke, and why AI speed still needs human direction.

Aug 4, 2025
Write faster with AI while preserving your unique style. A creator’s step-by-step workflow that works.

Aug 3, 2025
Explore how I integrate AI into daily work - for research, writing, and learning - and the real challenges of accuracy, trust, and privacy.

Jul 27, 2025
AI won’t replace humans - but it will redefine their role. A deep dive into abstraction, specialization, and what AI is really doing to us.
Jun 21, 2025
Outgrew Python tools, built my own Go backtester. Here's what I learned about speed, scale, and tradeoff.

Sep 18, 2023
Adding textures to a 3D game in JavaScript - load grass, wood, and a sky HDRI with Three.js, handle tiling and sRGB, and cross the 'looks real' line.

Sep 10, 2023
How to build the core of a 3D game in the browser: Three.js, cannon-es, keyboard controls, physics - the ~100 lines everything else builds on top of.

Aug 17, 2018
How to plot the earthquakes on the global map. Here we will be using the historical earthquake data from USGS and plot it on the world map.

Jun 5, 2018
One line of JavaScript to automatically open all external links in a new tab or window.

Aug 1, 2017
When working on multiple projects that use GoLang see how you can ensure that updating dependencies do not break other projects.

Jul 27, 2017
If your Go version is stuck at an earlier installation, read further.

Nov 4, 2016
How to render webpages on the server using React and TypeScript.

Jan 19, 2014
This is a demonstration of creating real-time web apps with AngularJS and MongoDB. Here, we implement a to-do list that is synchronized in real-time for all users.

Oct 2, 2013
Write your Markdown and see the formatted HTML output instantaneously.

Sep 29, 2013
DigitalOcean's guide to move your custom-domain shows that you need to change your Name Servers to that of DigitalOcean. And they have made it pretty simple to use. However if you do not wish to migrate a lot of domain-records and do not wish to change your name servers, read on.

Sep 25, 2013
How secure is the hardware that we use? Hardware Trojans are created with intentional and malicious changes to hardware's initial design.

Sep 21, 2013
How to add some dependencies to our program and package. We'll also look at some additional tips that you may require when creating your first NPM package.
Sep 20, 2013
See how to create a simple NodeJS NPM package. We'll first create a simple program, add some node_modules to it and walk through the process of creating a NPM package, publishing it and upgrading it. We'll also walk through see some common issues that you might face for the first time.

Sep 18, 2013
Introducing Nirman - A flexible static site generator for NodeJS that is written in JavaScript and does not get in your way.

Sep 7, 2013
This blog has now been upgraded to use simple static html pages instead of a CMS. Why did I do that? What tools did I use? And more details within.

Apr 27, 2013
Using Bootstrap for UI and controls to create a basic multi-colum drag-drop interface for form fields.

Feb 3, 2013
Data Explorer for Force.com allows Force.com developers to be more productive by allowing them to run complex queries on your Force.com environment.

Feb 3, 2013
Data Explorer for Force.com allows Force.com developers to be more productive by enabling them to run complex queries on your Force.com environment.

Jan 30, 2013
See how to create a Google Chrome Extension that uses Salesforce.com’s REST API directly.

Jan 28, 2013
Google Chrome extension for Salesforce.com's Chatter frees you from having to login to see Chatter feed and is an excellent non-intrusive replacement for Chatter Desktop and encourage user-adoption. It’s a great app for people who work out of the browser all day.

Jan 27, 2013
Google App Engine can be used as a host for your blog. This site is currently hosted on App Engine. Out of the multiple options available over the internet (related to blogging on GAE), I found only a couple that were near my requirements and easily customizable.

Jan 26, 2013
See how to implement jQuery and jQueryUI to create the first part of form builder. In this part, the form builder will be used to place fields in a column layout.

Feb 6, 2011
This post is about my experiences on GWT when I wrote this post and learning more on the framework. Here I also discuss ExtGWT, SmartGWT, SmartClient and references to practices on building larger GWT apps.

Mar 23, 2008
Latent semantic indexing (LSI) provides the ability to correlate semantically related terms that could be latent in the set of documents. Latent semantic analysis allows us to see semantics in the set of documents and how we can extract meaning of the text in the documents.

Apr 12, 2007
In the post "Modifying Quake3", I have explained how to compile the Quake III source code. In case you are not using Visual Studio 2003 but using developer studio for VC++ 6.0, here are some tips to compile using that.

Apr 11, 2007
How to compile and modify the Quake 3 source code to create a Homing Missile mod.

Apr 11, 2007
How Quake 3 works and we will create a mechanism to accept user input.

Apr 11, 2007
How to change the behavior of a rocket in Quake 3 and convert it into a homing missile. And few variations for this homing missile.

Nov 8, 2006
Ever had a need to verify if the other-person indeed checked your email? Here's a method that will allow you to inject some tags that, combined with a server, will a to receive read-receipts as soon as the user opens the email.

Sep 27, 2006
In earlier posts we saw how to capture sender's IP and then use that IP to locate the person. Although, that works many times - it may not be always correct. Here, we will see how these exceptions can occur.

Sep 26, 2006
This is continued article on Geo-locating emails. In the earlier post we saw how to locate the senders IP address and now we will be using that IP Address to find the location of the sender. In this example, I'll be using two sites that enable us to geo-locate IP.

Sep 26, 2006
A tip for superficially scrutinizing cyber-strangers and geolocating them.

Nov 4, 2005
Technique to access firewall or proxy restricted internet websites via tunneling and onion routing. This article is intended to-be-informative for network administrators and internet users.

Sep 30, 2005
How to use Microsoft Word in your .NET application. This will enable you to use your favorite word-processor within your .NET application.

Sep 12, 2005
How to create your own Gmail Notifier kind of application that checks the new mails using recently introduced Gmail Atom Feeds and speaks the details of the mail using Microsoft Agent and SAPI interface.