Chart of the day: ๐ฆ๐จ๐๐๐ฅ ๐ฎ๐ฌ๐๐ ๐ ๐ข๐ง ๐๐๐ฉ๐ญ๐๐ฆ๐๐๐ซ
This shows a breakdown of the currently ending month of September (in 2026). Which models were used, with vendor and #tokens burned, and an estimate of what this usage would have cost via the API (most of it was covered by subscriptions). As you can see, it is a mix of the top dogs of the Western hemisphere as well as self-hosted #Qwen-based #Ollama runs. Since for self-hosting I could only make up numbers for the dollar value, I kept it with no mapping at all, just show the token usage as number.
The screenshot shows a small part of tokenUsage2 – which is a TUI tool I developed some weeks ago to break down token usage with ad hoc charts. Updated every few milliseconds. Not like the HTML generator I showed some weeks ago. ๐๐ ๐๐ง๐ญ๐ข๐ ๐ฐ๐จ๐ซ๐ค๐๐ฅ๐จ๐ฐ๐ฌ are fun – but you also need the ๐๐จ๐ฆ๐ฉ๐ฎ๐ญ๐ to get them done. And some ๐จ๐ซ๐๐ก๐๐ฌ๐ญ๐ซ๐๐ญ๐ข๐จ๐ง skill.
Find it on GitHub. I’ll spare you the URL here, since I know that almost nobody clicks the outbound URLs ๐
๐๐ก๐๐ญ ๐๐ซ๐ ๐ฒ๐จ๐ฎ๐ซ ๐ง๐ฎ๐ฆ๐๐๐ซ๐ฌ? ๐๐๐ซ๐ ๐ญ๐จ ๐ฌ๐ก๐๐ซ๐?
#anthropic #openai #codex #claudecode #agenticengineering
#
Last week I saw here on LI a post by a father where his 9-year-old son created his own Minecraft clone with agentic AI. Even for the love of the gods, I can’t remember who it was. (If someone knows, ping me.)
While reading, I thought: wonder how much the father helped. And Minecraft is so popular. Even with tons of mods, this is a well-documented topic.
Yesterday, between breakfast and getting ready for an excursion, I asked my oldest child if she wants to create her own game and has ideas. Yes… she said… I wasn’t even ready with preparing a repository when she already went on and on and on… and I thought, omg, this will not work out. What have I stirred up? ๐ซฃ
One hour of chores later, we returned. And it was playable. A friendly, colorful cat adventure. With reward mechanisms. Great :3
My only input was my “dark factory prompt” and that it shall use Babylon.js (good experiences with that for 3D graphics in the browser). The rest was done by a slightly overexcited product manager and AI โข
Outcomes:
* I overestimate my necessary input for agentic AI
* I can’t publish a fully working and polished game, because it is hers
* only our inspiration is the limit
๐๐ฅ๐๐ฎ๐๐ /๐ข๐ง๐ข๐ญ – ๐ฎ๐ฌ๐๐ฅ๐๐ฌ๐ฌ!?
Last week I attended an ๐ข๐ฅ๐ฅ๐ฎ๐ฆ๐ข๐ง๐๐ญ๐ข๐ง๐ ๐ฐ๐จ๐ซ๐ค๐ฌ๐ก๐จ๐ฉ by Zartis, which brought knowledge about Claude Code and, on the other hand, the chance for networking. My table neighbours and I helped each other with some challenges, and then the question came up: does the /init command actually help? The common understanding, because it is advertised like this: yes. If you have a legacy project and want to give the agent a head start. ๐๐ฎ๐ญ ๐ก๐๐ฌ ๐๐ง๐ฒ๐จ๐ง๐ ๐๐ฏ๐๐ซ ๐ฆ๐๐๐ฌ๐ฎ๐ซ๐๐?
I did some checks on available research on the fly. But the outcome was ambiguous.
Therefore, here is now the summary of ๐ฆ๐ฒ ๐ฆ๐๐ญ๐-๐ฌ๐ญ๐ฎ๐๐ฒ: as a 5-page carousel. I’ll add a ๐ญ๐ก๐ซ๐๐๐ฉ๐๐ ๐r ๐ฐ๐ก๐ข๐ญ๐๐ฉ๐๐ฉ๐๐ซ ๐๐ฌ ๐ญ๐ก๐ ๐๐ข๐ซ๐ฌ๐ญ ๐๐จ๐ฆ๐ฆ๐๐ง๐ญ. AI-co-authored, of course, but I spent several sessions checking different angles and the six publicly findable studies.
๐๐ฎ๐ญ๐๐จ๐ฆ๐๐ฌ:
* no reliable gain!
* it costs more: 20% per task in the ETH Zurich study
* random rules score as well as expert ones: so you don’t need to give someone their comment <– check: commit to get their master claude.md ๐
* rules get followed and named tools are used more often
* writing down the agent’s mistakes worked: especially for smaller (35B) models – self-hosters, listen up
* agents.md/claude.md files only grow, almost never shrink!
And I find this underlines my view. ๐๐ก๐ ๐๐ข๐๐ฅ๐ ๐ฆ๐จ๐ฏ๐๐ฌ ๐ฌ๐จ ๐๐๐ฌ๐ญ ๐ญ๐ก๐๐ญ ๐ ๐ฅ๐จ๐ญ ๐จ๐ ๐ฌ๐จ๐ฅ๐ ๐ญ๐ซ๐ฎ๐ญ๐ก๐ฌ ๐๐ซ๐ ๐๐๐ฌ๐๐ ๐จ๐ง ๐ฌ๐ฎ๐๐ฃ๐๐๐ญ๐ข๐ฏ๐ ๐๐ฑ๐ฉ๐๐ซ๐ข๐๐ง๐๐๐ฌ.
I personally almost never used the /init command ..
carousel:ย LI
whitepaper:ย paper
๐๐ ๐๐ง๐ญ๐๐ก๐ข๐ฅ๐๐๐ซ๐ฎ๐ has got the ๐ฐ๐ก๐ข๐ฉ now!
A decade ago whip apps for your favorite smartphone were the hit. Using the acceleration sensor, they played a whipping sound when you made the movement while holding your phone. A team lead at that time jokingly always used it (nobody was harmed …).
Poetic afflatus: why not add this to Agent While True? It is a machine talking to other machines (means: agentic harnesses in some terminals).
And here it is: with a simple press of ๐ you’ll unleash hell.
A selection of twenty comments in the style of ๐๐ก๐ ๐๐๐๐ข๐๐/๐๐ญ๐ซ๐จ๐ฆ๐๐๐ซ๐ are sent via #DBus to the open sessions of #ClaudeCode or #CodexCLI that have work left. And you see a nice cracking animation (#ASCII of course).
๐๐ข๐ฌ๐๐ฅ๐๐ข๐ฆ๐๐ซ: just because I have added this fun-feature to the TUI does not mean I endorse questionable motivational methods or intimidation. A workplace, like every professional and human interaction, should be based on respect!
To address the HR-fellows: how do you like that new feature? ๐
Release: ๐๐ ๐๐ง๐ญ ๐๐ก๐ข๐ฅ๐ ๐๐ซ๐ฎ๐
Imagine you are doing a ๐๐๐ซ๐๐๐๐ฎ๐ with your friends, but there is also a heavy #agentic software-engineering task going on and you know you’ll run out of budget in 10 minutes, but the window will reset in an hour.
What now?
Slip away from the party to enter “continue” in a terminal (and “get it all done and make no mistakes, haha”) or wait until the guests have left?
Agent While True to the rescue. A #Linux system-service for #KDE environments, written in #Python with zero dependencies, together with a nice #TUI (includes a ๐๐๐ graphic-mode theme for nostalgic reasons).
It will auto-discover and track all your running #Codex CLI and #Claude Code sessions and, when necessary, resume the pending session in terminal whenever it is waiting with “you ran out of budget, do you want to upgrade or wait”.
Actually, I started the implementation fourteen days ago. Quite naively, I thought: this is solved within 24 hours ๐. Getting the software done was less of a challenge; ๐ฎ๐ง๐๐๐ซ๐ฌ๐ญ๐๐ง๐๐ข๐ง๐ all the ๐๐จ๐ง๐ฌ๐ญ๐ซ๐๐ข๐ง๐ญ๐ฌ and what states are possible with both agentic systems, while working in a moving-target environment (thanks @Anthropic and @OpenAI), took some time. Of course, you can simulate and test “ran out of budget” and the subsequent 5-hour/weekly reset, but only the real situation gives you proof that AWT works. So it took some nights to get it right.
Code under GPLv3, REUSE-compliant, SPDX-compliant, SBOMs for CycloneDX and SPDX, GitHub Actions for releases, yada yada.
Fork and have fun: https://github.com/marcelpetrick/AgentWhileTrue
๐๐ฐ๐๐ง-๐๐ฆ๐๐ ๐ ๐.๐ lokal getestet
Passend zum Wiesn-Start und weil heute der Feed voll mit dem neuen Release ist, habe ich mir auch ein paar Minuten zwecks Setup und Test gegรถnnt. (Falls mich jemand auf den Bildern erkennen kann, bitte kommentieren – ich finde nicht ๐
)
#ComfyUI lag sowieso lokal vor; nur den neuesten Stand gepullt; Migration; bereit zum Rendern.
Die Orchestrierung รผber #ClaudeCode laufen lassen – keine Lust, die Workflows selber zu erstellen und zu pflegen. Per Sprachnotiz kurz beschrieben, wie viele Bilder welcher Auflรถsung ich gern hรคtte, dann Abendbrot vorbereitet. Aus der Ferne hรถrte man aber auf einmal die Lรผfter ..
Ich weiss nicht, ob das fรผr meine Zwecke ein Fortschritt ist. Also ich bin jetzt nicht hype-begeistert wie andere, welche ebenfalls heute einen Testlauf machten. Mit #Flux-Klein und Konsorten kam ich bisher recht weit. Fรผr Illustrationen reichten sie als lokale Modelle.
Auch durch die Verwendung von Referenzbildern (bis zu drei) wurden gefรผhlt die Ergebnisse schlechter als bei rein textuellem Prompt.
Aktuell unklar, wie verwertbar das Ganze durch die Lizenz ist: “Qwen Research โ non-commercial only”, vorher “Apache-2.0”
Da von 512×512 รผber 1024×1024 bis 20248ยฒ Pixel alles gerendert werden kann, lief hier auch ein kurzer Benchmark: am besten kam ich hier mit 1024ยฒ Pixel Bildern bei 4 bis 10 Minuten aus.
### 3.1 Wall clock per image
smoke 01-visor 15.3s โ
mp-01-wiesn 237.1s โโโโโโโโโโโโโโโโ
01-visor-reflection 243.1s โโโโโโโโโโโโโโโโโ
05-nebula-scale 246.9s โโโโโโโโโโโโโโโโโ
04-mission-poster 247.2s โโโโโโโโโโโโโโโโโ
02-hull-typography 247.3s โโโโโโโโโโโโโโโโโ
03-glove-texture 247.4s โโโโโโโโโโโโโโโโโ
bavaria-02-golden 398.2s โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2K probe (hull) 433.0s โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
bavaria-01-daylight 663.0s โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
0 663s
ABANDONED
2K @ 30 steps >1879s โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโถ
killed at step 19/30, still slowing
### 3.2 Cost per step by resolution
512ยฒ 1.91 s/step โโ
1024ยฒ 8.21 s/step โโโโโโโโ
2048ยฒ 54.16 s/step โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
0 55 s
### 3.3 Cost per step by machine state โ identical work
warm, 22 GB cache, no swap 8.2 s/step โโโโโโโโ
cache re-warming, 5.7 GB swap 13.3 s/step โโโโโโโโโโโโโ
cold, cache evicted, swapping 22.1 s/step โโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโ
0 22 s
### 4.3 Resolution scaling turns superlinear past 1024ยฒ
| Step up | Pixels | Time | Behaviour |
|—|—|—|—|
| 512ยฒ โ 1024ยฒ | 4ร | 4.3ร | ~linear |
| 1024ยฒ โ 2048ยฒ | 4ร | 6.6ร | superlinear โ quadratic attention appearing |

๐๐๐ฒ ๐จ๐ง๐: ๐๐จ๐ฎ๐ซ ๐ฐ๐๐๐ฉ๐จ๐ง๐ฌ. ๐๐๐ฒ ๐๐ข๐ฏ๐: ๐ฌ๐๐ฏ๐๐ง๐ญ๐๐๐ง.
I’ve continued the work on my browser-based game ๐๐ฅ๐ฅ๐ข๐ฎ๐ฆ ๐๐ฌ๐ฌ๐๐ฎ๐ฅ๐ญ. Over the past 5 days and additional 99 commits I’ve turned the minimal prototype into a fully usable game.
๐ญ๐ฅ;๐๐ซ: you can play it without any installation for free on GitHub Pages: https://marcelpetrick.github.io/AlliumAssault/
It is still a turn-based 3D artillery game with ๐ ๐๐ซ๐ฅ๐ข๐ ๐๐ฎ๐๐๐ข๐๐ฌ ๐ง in the spirit of Worms 2. I had lots of fun with friends thanks to the guys from @Team17.
Adding the new weapons was more than just creating a new sprite for the button – playtesting turned out to be crucial. A ๐ฃ๐ข๐ฏ๐ข๐ฏ๐ข ๐ฃ๐ฐ๐ฎ๐ฃ acts a bit differently from a ๐ฃ๐ข๐ด๐ฆ๐ฃ๐ข๐ญ๐ญ ๐ฃ๐ข๐ต. And as you know, ๐ด๐ฉ๐ฆ๐ฆ๐ฑ and ๐ด๐ถ๐ฑ๐ฆ๐ณ ๐ด๐ฉ๐ฆ๐ฆ๐ฑ share only part of the name, but not their behaviour.
Since doing repeated tests would be boring, I added 17 E2E tests with ๐๐ฅ๐๐ฒ๐ฐ๐ซ๐ข๐ ๐ก๐ญ to get this done.
Also, I’ve done one profiling run and then decided to remove multisampling, which saved around 40% of the cost per frame with almost no quality loss. And, of course, the major improvement – each push now runs ๐๐ ๐ฏ๐ข๐ ๐๐ข๐ญ๐๐ฎ๐ ๐๐๐ญ๐ข๐จ๐ง๐ฌ, which automatically deploys to GitHub Pages. And this allows you to run it without any changes from any browser (also tested on a smartphone, but it still lacks “no keyboard” controls).
I have some more ideas in mind. Also, I hesitated until now to add a rope as a weapon, because its functionality is an easy way to introduce a load of bugs.
And if someone is interested: the repository now contains almost ๐๐๐ค ๐๐จ๐ ๐จ๐ ๐๐ฒ๐ฉ๐๐๐๐ซ๐ข๐ฉ๐ญ in 118 commits, 115 tests, a C4 documentation, CI for quality assurance and releases, …
So, spend the Sunday wisely: go to https://marcelpetrick.github.io/AlliumAssault/ and give it a try ๐
#worms2 #wormsarmageddon #team17 #typescript #sdlc #AlliumAssault
๐๐๐๐ ๐.๐? -> Upgrade the Coffee Dispenser demo
Triggered by Lukas Kosinski’s like for the post about the LVGL 9.6 release (the last before version 10) today, I thought: let’s dust off the LVGL-coffee-dispenser-demo I did four months ago (๐ฎ๐ข๐ฏ, ๐ต๐ฆ๐ฎ๐ฑ๐ถ๐ด ๐ง๐ถ๐จ๐ช๐ต…) and see if the performance of the software renderer really improved.
How to determine this? Of course: ๐ฉ๐ซ๐จ๐๐ข๐ฅ๐ข๐ง๐ .
Added a harness for the benchmark, did some runs with the current state and documented them.
Then did the version bump (๐ฌ๐ฎ๐ซ๐ฉ๐ซ๐ข๐ฌ๐ข๐ง๐ ๐ฅ๐ฒ ๐๐๐๐จ๐ซ๐ญ๐ฅ๐๐ฌ๐ฌ โ only a one-liner in a header had to be changed aside from the submodule update). Clean, rebuild, run the profiling again and compare.
The first results were not really impressive – a meagre ๐% improvement. Not the claimed 1.33ร from the LVGL creators.
On ๐ซ๐๐ฏ๐ข๐๐ฐ later, the culprit was found and fixed: the benchmark’s own redraw path invalidated too much of the active screen. With a new run, I now see a ๐๐% ๐ฉ๐๐ซ๐๐จ๐ซ๐ฆ๐๐ง๐๐ ๐ข๐ฆ๐ฉ๐ซ๐จ๐ฏ๐๐ฆ๐๐ง๐ญ ๐๐จ๐ซ ๐ฌ๐จ๐๐ญ๐ฐ๐๐ซ๐ ๐ซ๐๐ง๐๐๐ซ๐ข๐ง๐ .
Well done, LVGL team ๐
Code, measurements on GitHub: https://github.com/marcelpetrick/LVGL_coffeeDispenser as always feel free to fork
Early preview: ๐๐ฅ๐ฅ๐ข๐ฎ๐ฆ ๐๐ฌ๐ฌ๐๐ฎ๐ฅ๐ญ ๐ง
Not much time to write posts these days. But, of course, the grind never stops.
My most recent creation is Allium Assault, a ๐๐จ๐ซ๐ฆ๐ฌ clone. With that said, I guess I don’t have to explain the game principle in detail. Two or more teams of garlic buddies fight each other with bazookas, grenades, … on a generated landscape. A ๐๐ฎ๐ฅ๐ฅ๐ฒ ๐๐๐ฌ๐ญ๐ซ๐ฎ๐๐ญ๐ข๐๐ฅ๐ ๐ฅ๐๐ง๐๐ฌ๐๐๐ฉ๐ plus gravity, wind, and turn-based gameplay.
I plan to add way more features as soon as possible. The first show-and-test with the stakeholders has already elicited some giggles from them.
Tech stack: ๐๐๐๐ฒ๐ฅ๐จ๐ง.๐ฃ๐ฌ renders the gameโnever used it before, but this was the first time I was able to create a satisfying 3D landscape in the browser. TypeScript, Vite, … Vitest and Playwright for test support. Sound effects are currently generated by the Web Audio API, since I did not want to spend much time looking for samples.
Hosted as always on ๐๐ข๐ญ๐๐ฎ๐: if you want to fork or play it: https://github.com/marcelpetrick/AlliumAssault
#
Yesterday while driving to work, I was thinking: shouldn’t it be possible to use modern #CMake to handle what we usually do with a #Git submodule?
So, let’s turn that idea into a working prototype and test it in practice.
For this example, CMake ๐ ๐๐ญ๐๐ก๐๐จ๐ง๐ญ๐๐ง๐ญ is used instead of a Git submodule to provide #LVGL for a minimal demo application.
๐๐ก๐ ๐๐๐ฉ๐๐ง๐๐๐ง๐๐ฒ ๐๐ข๐ ๐ง๐จ๐ญ ๐๐ข๐ฌ๐๐ฉ๐ฉ๐๐๐ซ. ๐๐ฐ๐ง๐๐ซ๐ฌ๐ก๐ข๐ฉ ๐จ๐ ๐๐๐ฉ๐๐ง๐๐๐ง๐๐ฒ ๐๐๐ช๐ฎ๐ข๐ฌ๐ข๐ญ๐ข๐จ๐ง ๐ฆ๐จ๐ฏ๐๐ ๐๐ซ๐จ๐ฆ ๐ญ๐ก๐ ๐๐ข๐ญ ๐๐ก๐๐๐ค๐จ๐ฎ๐ญ ๐ฆ๐จ๐๐๐ฅ ๐ญ๐จ ๐ญ๐ก๐ ๐๐๐๐ค๐ ๐๐จ๐ง๐๐ข๐ ๐ฎ๐ซ๐ ๐ฆ๐จ๐๐๐ฅ.
๐๐ฉ๐ข๐ต ๐ช๐ด ๐ข๐ค๐ต๐ถ๐ข๐ญ๐ญ๐บ ๐ค๐ฉ๐ข๐ฏ๐จ๐ช๐ฏ๐จ?
* the VCS structure: LVGL is no longer part of the parent repository as a Git submodule
* the physical layout: the dependency moves from the source tree into the build tree
* the control: CMake declares the requested LVGL revision
* build graph: no ๐ this is almost unchanged โ LVGL is still compiled and linked as a normal target
So, CMake does not replace Git. Git is still needed, but it is now invoked by CMake during configuration instead of being handled upfront by the developer.
The example can be found on GitHub: https://github.com/marcelpetrick/codingWithGPT/tree/master/cmakeFetchContentVersusGitSubmodule
Thank you for your attention ๐








