Last year my Lenovo X1 Carbon Gen 9 started to act up, in a way that I lost trust in how long it will still survive. My X1 developed some fun problems with the rear USB-C port. Data works fine. It also detects if a power supply is connected but it does not charge. A USB tester between the power supply and laptop shows 99999 Ohm resistance. Doing some research it appears to be a known failure for Gen 9 and once the first port fails the second is only a matter of time, meaning at a not-too-far-away day in the future it will not be able to be charged anymore. Lenovo "graciously" offered to replace the board for 1000 Euro. Getting a board on Aliexpress and replacing it myself would be around 750. I passed it on to my dad for bookkeeping and will wait for it to fail and then likely replace the board myself. Safe to say that I needed a replacement.
This weeks work on LazerBunny was mostly focused on building out two agents and wiring everything up to an MCP. Turns out an LLM, by virtue of being a little box full of hallucinations, is not the most reliable to follow very simple orders. And it shows when trying to work on structured output.
I spent some time during the last week to see how far I can push LLMs to generate some basic application functionality while working on Lazerbunny. I wanted to stick closely to the plan so I started with the timer application, as it is the most simple one. The scope is small, well defined and it would not take much to simply write around 200 lines of code to get it done, so it seemed like a good candidate to let an LLM handle the work.
When building smaller tools I have built many times before I usually just start and iterate for a while, but when starting an open ended project such as Lazerbunny I like to think through the high level components and architecture for a bit. This does not mean I am going full early 2000s architect mode, but I scribble down enough to remember in a month or two what I was planning to do and why. As promised in the first post I’ll walk you through the thought process of the initial design.
I am starting a new series of articles for a project I have been working on for a bit, but only recently have been getting more serious about. I am perpetually a little bit annoyed by the state of software - projects constantly changing, being abandoned or adding features that make no sense for my use case - so I started writing small tools for myself which I use on a daily basis. And it has not only been fun, but also useful. For the rest of the year I will focus on a project I have been thinking about for a few years: Building a useful, personal AI assistant.