There is something I probably need to explain before I start writing much about the systems work I have been doing.
I have difficulty typing.
I have Parkinson’s disease, and I am also blind in one eye. The Parkinson’s has made it increasingly difficult for me to stay steady on a keyboard. I can still type, but it is slower, harder, and much more tiring than it used to be. So a lot of what I do now is through voice. That includes these posts.
I use dictation, voice-control software, and AI to help me take what I am saying and turn it into something readable. Most of the initial material is literally me talking through what I am thinking. AI helps me clean it up, organize it, find places where I am repeating myself, and sometimes point out where I have not explained something very well.
I want to be clear about that because AI is involved in what I am writing here, and I don’t want to pretend otherwise. But I also don’t want the presence of AI to make it sound like these aren’t my ideas. They are.
In many cases, AI is doing for me something that a keyboard used to do. It is giving me a way to get thoughts out of my head and into something I can work with. That has become much more important to me than I expected.
There are plenty of legitimate arguments happening around AI right now. There are reasons people dislike it. There are questions around cost, energy use, copyright, employment, quality, and probably quite a few others. I don’t want to pretend those questions don’t exist.
But disability gives me a different view of the technology. For me, AI has become an accessibility tool. It has allowed me to keep doing engineering work that would be much harder for me to do if the keyboard were still the primary interface. And not just simple work.
I have been spending a lot of my personal time working on systems-level software. Compilers. Parsers. Binary formats. Code generation. Intermediate representations. I have worked with PE and ECMA-335, along with Java class files and JAR files. Those projects have forced me to think about executable formats, metadata, byte-level structures, code generation, and the machinery underneath programming languages.
There are other formats I want to explore in the future, including things like ELF and DWARF, but I am not there yet.
I have been having a lot of fun doing it. That is probably the biggest thing I want to get across.
I have had a successful software career, but there have always been areas of computer science and systems programming that I wanted more time to explore. Now I am finally spending time on some of those things.
The strange part is that I am doing it at the same point in my life when physically doing the work has become harder.
My stamina is not what it used to be. I cannot count on being able to sit at a desk and work continuously for an entire day anymore. Sometimes I need to stop. Sometimes I need to lie down. Sometimes my hands simply are not cooperating enough to make traditional typing practical.
But I can still think. I can still design. I can still look at a problem and say, “That abstraction is wrong,” or, “There has to be a better way to represent this,” or, “What happens if we move this responsibility somewhere else?” And increasingly, I can do that through voice.
There have been times when I have been lying in bed talking through a design with ChatGPT on another device, working through an idea while I otherwise would not have been able to do much productive development at all.
That has changed the amount of work I can get done, but more importantly, it has changed what kind of work I believe is still available to me.
AI can take repetitive work and keep moving on it after I have provided direction. It can help me explore several approaches before I spend physical effort implementing one. It can help me review code, generate tests, compare designs, and find obvious problems.
It does not mean I trust everything it produces. I don’t. I have learned very quickly that AI can be wrong in extremely confident and sometimes very creative ways.
So the work still requires engineering. It requires verification. It requires tests. It requires understanding what the software is supposed to do and knowing when the output does not make sense.
In some ways, that is one of the reasons systems work has been so interesting to do with AI. Systems work tends to force you to confront whether something is actually correct.
A binary format is not impressed by a convincing explanation. Either the bytes are right or they aren’t. A parser either accepts the grammar correctly or it doesn’t. A generated executable either loads or it doesn’t.
Those kinds of constraints are useful when you are working with something that is inherently probabilistic.
And that has started leading me toward a larger philosophy about how I use AI in software development.
I don’t think the goal should be to make AI do everything. In fact, I think one of the best uses of AI is to help us figure out what should no longer require AI.
That is something I want to write about separately, because it has become a major part of how I think about the systems I am building.
For now, though, I mostly wanted to establish how I am working and why AI is going to show up in the things I write here.
These posts will be AI-assisted. My software development is AI-assisted. A lot of the words will start as dictation because that is now the most practical way for me to work.
But the ideas, the decisions, the failures, the experiments, and the systems I am building are mine.
And more than anything, I am grateful that I found a way to keep building them.