Skip header to navigation
a head full of useless knowledge by
Timo Mämecke
Jump back to navigation

AI Usage

Preface

I do not believe that AI, in its current state, is a good thing, and is used in a good way. I use AI as a tool. I use it in a mindful way. I do not use it to think for myself.

AI usage in building this site

This page is built by myself, with artisinal handcrafted code, and not vibecoded. It’s a hobby project and I like writing code and tinkering around. Programming is fun!

AI usage in writing content for this site

The content on this page is written by me, and the thoughts are mine, and not the thoughts of an AI. I use AI to proofread and improve the grammar of things I write. I’m not a native English speaker, and I don’t want people to struggle to read my thoughts.

I’m switching models from time to time, so I can’t point to one model that I’m always using. I always tell it to “just fix grammar, don’t change anything else”. I do not use it to translate posts (i.e. I don’t write them in German and let it translate to English). I write posts in English and then let an AI tell me grammatical issues. I don’t even copy-paste the improved post, and instead let the AI list me the issues and explain them, so I can type the improvements myself, because that’s how I can learn from it.

When you see me using em dashes ”—”, it’s because I like to use them deliberately. See also: I’m using em dashes—but I’m not an AI

AI usage for images

Some posts have header images. They are usually AI-generated. Sometimes (but rarely) there are also small illustrations in the content that are AI-generated. These images exist to make a funny point or just be cute, to make posts visually more distinct from each other, and are just a design element.

How I use AI for coding

How I’m using AI for coding changes and evolves from time to time. I always have a code editor open in front of me, it’s my main tool, and I’m in control of the code. I don’t have an agent inside my code editor. I’m a Terminal-boy.

When you ask me how something in my codebase works, I can point to the code and explain how it works. I believe this ability is highly necessary. When there’s a bug, I can often anticipate the root cause (and its fix) even before looking at the code. I am designing the architecture; I’m anticipating how the codebase will evolve over time, and I steer the codebase into this direction. I am making the tradeoffs. I’m doing the thinking, and the code consists my opinions.

Over time, a codebase establishes a set of repeating patterns: you can copy a section, paste it somewhere else for a new feature, and adjust it slightly without breaking the pattern. That’s a good thing, and I’m heavily embracing it.

I am providing all these patterns, I’m thinking about them, I’m doing the research and reading how to write it in an idiomatic, smart, simple, and easy to understand way. My codebases almost exclusively consist of these patterns. I might use AI to do this research, for example when a library’s documentation isn’t great, I’ll let the AI read through it and give me a better documentation.

I don’t believe that “writing code” or “knowing how to write it” was ever the slow part of software engineering.

This means that a lot of my code is actually “written” by me. I’m putting “written” in quotes because: how much of this copy-paste-tweak is still “writing code”? When we were blindly copying code from stackoverflow and adjusted it slightly, were we still “writing code”?

This doesn’t imply that every line will be “written” by me. Many parts will also be “written” by the AI. These coding sessions are more like a supercharged pair programming session. I’m reviewing while the AI is writing the code, and I intercept when I encounter an issue that I didn’t fully think through.

You know, when you’re writing code and you notice that something cannot be implemented like you initially planned? Yeah, that’s still happening, but the AI won’t notice it. So I’m still here, I’ll notice it, and will take care of it. It’s just sometimes faster than typing by hand. (…but also sometimes frustratingly slower)

I’m not a fan of switching between multiple parallel agent sessions because I do not believe that you can hold all of this context simultaneously in your head, which results in a waste of money, energy and mental capacity.

Where I hope AI is heading

I do not believe that chat is the right interface to interact with most AIs. It’s annoying af.

I do not believe that “letting AI write code” is the future.

I believe that AIs will be part of a software. But not as an LLM, or yet another agent. It will replace non-trivial algorithms, to make decisions that are easy for humans to make, but difficult to write as code. For this to happen, AI has to become very cheap, reliable, and fast.

I believe that part of a software engineer’s job will be implement these AIs, probably in a language and/or in a way that doesn’t yet exist. We’re not there yet.