Header image showing a human taking with an AI counterpart.

AI Development Is a Documentation Problem, Not a Prompting Problem

Most developers start using AI coding tools the same way. They open a chat, describe what they want, and ask it to write the code. Sometimes it works. More often, it produces something almost there but slightly wrong, and fixing it costs more time than it saved.

That was my experience too, until I changed how I approached using AI in my work. The difference was not the model. It was the method. I have used this approach with both GitHub Copilot and Claude across professional and personal projects, and it has consistently outperformed ad-hoc prompting. What I eventually realised is that I did not have a prompting problem. I had a context management problem. Once I started treating documentation as a shared memory system between me and the AI rather than project paperwork, I immediately noticed the benefits.

The Problem I Kept Running Into

When I asked an AI tool to build something without proper context, I was asking a capable developer to work from a rough verbal description. It would fill gaps with assumptions. The output reflected those assumptions, not my actual requirements.

The result was code that compiled, looked reasonable, and missed the point.

There was a second problem compounding that. AI sessions have limits. Context windows fill up, sessions time out, and picking up mid-project means re-explaining everything the tool no longer has access to. Without structure in place, each new session felt like starting from scratch. The tool would drift, contradict earlier decisions, or hallucinate details about code it could no longer see. The problem was not the tool. It was the lack of shared context.

Continue reading →
Header image for my article on PromoForge, catchy tagline.

PromoForge

Over the past few years I’ve been running a gaming YouTube channel, Chambers Plays Games, and like most small creators I’ve found that making the content is only half the battle. The other half is the relentless work of promoting it… writing tweets, scheduling posts, engaging with other channels, and keeping track of which accounts in your following list are actually worth keeping around. I was doing all of this manually, which was both time-consuming and inconsistent. So, as I’ve done more than once before with problems that annoy me enough, I decided to write a tool to solve it.

That tool is PromoForge.

This isn’t my first attempt at Twitter automation. Back in early 2018, as part of a #30DayDev challenge, I built and open-sourced the Microcosm retweet bot, a Python and Tweepy script that retweeted content from a configurable set of hashtags on a schedule. It did one thing and did it reasonably well, and I wrote about it on this blog at the time. The repository is now archived. PromoForge is in some ways the natural successor to that project, built on the same instinct to automate the repetitive parts of being online, just considerably more ambitious about what “automated” actually means.

What started as a fairly simple idea (fetching my YouTube videos and generating tweets for them) has grown into something considerably more ambitious over the last ten days. This post covers what’s been built, some of the more interesting challenges I ran into along the way, and where I plan to take it next.

What Is PromoForge?

At its core, PromoForge is a promotion and audience-growth platform built specifically for gaming content creators. It has two entry points: a command-line tool for headless operation, and a full web UI that you run locally and access through your browser. The web interface is where most of the action happens and it covers three broad areas of work: content scheduling, audience growth, and channel maintenance.

The scheduling side of things works by connecting to the YouTube Data API, fetching your public videos, and then generating algorithm-optimised tweets for each one. It detects which game is being played from the video title using a combination of exact matching and fuzzy search, selects appropriate hashtags from a curated set, and composes a tweet from a template library. You can export everything as a CSV or push directly to Buffer or X’s own scheduling API. The whole flow from “fetch my videos” to “tweets are scheduled” can be done in a couple of clicks.

The tweet generation interface showing video source options, days to look back, number of tweets, start date, posting time, and tweet spacing settings
The generation panel. You choose the video source (recent videos, full history, highest viewed, etc.), set your schedule preferences, and hit Fetch & Generate. The AI enhancement feature can then refine each tweet using the Anthropic API.
Continue reading →
Python Logo on a stylized background

Python Style Guides

In my pursuit to update my open-source Python Twitter bot, the retweet-bot, I decided to implement style recommendations followed by other open-source projects. This led me to use Pylint and follow the official PEP guidelines in the project. However, I was not prepared for the level of difficulty and pain that followed while implementing style guidelines. While my codebase now follows a consistent style found throughout the open-source Python world, it presented numerous pain points. Through this article, I aim to provide an overview of the pros and cons of Python style guidelines, and to enlighten readers to view these guidelines as flexible, especially for older codebases.

As developers, we have a responsibility to ensure that our code is of high quality and meets certain standards. This is the primary focus of Python style guidelines, and we will explore the pros and cons of both Pylint and PEP8 in this article. I will share my perspective as a relatively novice Python developer.

Continue reading →
Microcosm Twitter Bot Header Image

Microcosm Twitter Bot

I set a goal for #30DayDev January to create a Twitter bot, there weren’t many requirements beyond that it had to retweet people using the hashtag. I can say that after the first week of January I have achieved that goal and released DevMicrocosm into the wild. It followed my rough plan for the project, using Python and Tweepy. This combination of language and library reaffirmed my expectation that it would be quick to develop and deploy.

Due to the Python being able to test commands directly in the terminal, it led to some fantastic opportunities to rapidly prototype some ideas, one of these was to use fully fledged configurations for multiple hashtags. This means that there is no need to redeploy the application every time you want to update what hashtags are being retweeted, you can simply change the config file and the next time the python file is run it’ll use the updated settings.

Continue reading →

Visual Studio Code Header

5 Must Have Visual Studio Code Extensions

This article looks at improving the effectiveness which developers can write code in Visual Studio Code through the use of extensions. Having an effective development environment makes writing great software both faster and easier. Visual Studio Code is a relatively new open-source IDE primarily developed by Microsoft. VS Code is targeted mainly at developing languages that traditionally haven’t been easy to develop in Visual Studio with such as JavaScript, Python, etc. It has full debugger and breakpoint support for languages that otherwise usually don’t have an easy to use debugger such as JavaScript.

1. Instant Markdown

Instant markdown example

As developers working effectively with markdown files typically used within version control systems such as Git for things such as changelogs or readmes, is very important. This extension makes working with markdown from within VS Code a lot simpler. It also allows viewing as the file is being edited which proves to be an invaluable feature for documentation writing and more. Download and installation instructions found on the visual studio marketplace.

Continue reading →