Python

๐‚๐จ๐๐ž ๐ ๐จ๐ฅ๐Ÿ for a Python interpreter

Written by  on September 9, 2026

When I was young, I enjoyed writing small, #cryptic code. Always happy to know some language quirk (in Turbo Pascal, Java, C, C++, #Python ..) which could save some characters. Small code is better code, like we all know ๐Ÿ˜‰ Or not (common sense: smaller code is mostly unreadable and therefore harder to maintain.) And that game of writing minimal code is called Code golf.

A post byย Austin Henley last week triggered me again. (Thank you.) He aimed to write a ๐ฆ๐ข๐ง๐ข๐ฆ๐š๐ฅ ๐๐ฒ๐ญ๐ก๐จ๐ง ๐ข๐ง๐ญ๐ž๐ซ๐ฉ๐ซ๐ž๐ญ๐ž๐ซ in initially 512 bytes, then figured out that at least 1024 are needed. So one kilobyte for an interpreter which can run a ๐…๐ข๐ณ๐ณ-๐๐ฎ๐ณ๐ณ program. An interpreter is a program whose job is: read the program code and execute it. And a Fizz-Buzz is a really simple coding test, similar to a Hello World. But Austin might be able to explain this better, since he is an ex-professor from Carnegie Mellon.

Anyway: so I tried to build my own version from scratch with an LLM as working partner and armed my C skills. Thirteen versions later I came down to 959 bytes, which can still handle real Python programs (of course, limited subset, just like the original 1024-byte version did). When I dropped some primitives I came down to 622 bytes, but then it was really only possible to execute the control version of that Fizz-Buzz test.

Shrinking gains came from:
* collapsing variable names to one letter
* deleting everything that is written for humans
* cleaning the input once
* swapping instructions for a shorter version (heavy testing and iteration on that)
* order of the sections โ€” sometimes a better arrangement can save a repetition

As always: you can check the versions of the code yourself at https://github.com/marcelpetrick/codingWithGPT/tree/master/pythonInterpreterCodeGolf

And if now someone expected a clever outcome or clue or underlying message: there is none. ๐๐ฎ๐ซ๐ž ๐ก๐จ๐›๐›๐ฒ.

Containerized ๐†๐ž๐ซ๐ฆ๐š๐ง๐ƒ๐ฎ๐›๐ˆ ๐Ÿ“ฆ

Written by  on September 5, 2026

Some of you might remember I released GermanDubI this week โ€“ a tool with a neat UI/UX to replace the English audio track of YouTube videos with a German one. Works quite well and has already served its purpose several times. The kids could watch some interesting historical videos.

So, a release does not mean my work stops. Software engineering as a craft means you maintain the product after its release. #SDLC โ€“ maybe some have heard about it ๐Ÿ˜‰

Using products also reveals some sporadic issues (dubbing could lead, in 5% of the runs, to a 100% CPU spin for ffmpeg, because of some overlapping tracks) โ€“ all known ones are fixed now. I bumped all dependencies.
And I did one thing I forgot: I containerized the whole app. So the Docker image is now available on #ghcr.

$ ๐๐จ๐œ๐ค๐ž๐ซ ๐ฉ๐ฎ๐ฅ๐ฅ ๐ ๐ก๐œ๐ซ.๐ข๐จ/๐ฆ๐š๐ซ๐œ๐ž๐ฅ๐ฉ๐ž๐ญ๐ซ๐ข๐œ๐ค/๐ ๐ž๐ซ๐ฆ๐š๐ง๐๐ฎ๐›๐ข:๐ฅ๐š๐ญ๐ž๐ฌ๐ญ

And after that, it is a one- or two-liner copy-pasted to get it running. For ๐ฑ๐Ÿ”๐Ÿ’ and ๐€๐‘๐Œ platforms.

I’ve already seen 16 downloads (๐Ÿฅน), so definitely not “no one” is using it. On the other hand: ๐ˆ ๐š๐ฅ๐ฐ๐š๐ฒ๐ฌ ๐ฐ๐จ๐ง๐๐ž๐ซ ๐ข๐Ÿ ๐ข๐ญ ๐ฆ๐š๐ค๐ž๐ฌ ๐ฌ๐ž๐ง๐ฌ๐ž ๐ญ๐จ ๐ ๐จ ๐ญ๐ก๐ž ๐ฅ๐š๐ฌ๐ญ ๐ฆ๐ข๐ฅ๐ž ๐š๐ง๐ ๐œ๐จ๐ง๐ญ๐š๐ข๐ง๐ž๐ซ๐ข๐ณ๐ž ๐š๐ฉ๐ฉ๐ฌ. What is your view?

ps. the release version 0.4.2 is just a random match, not forced

My new image compression algorithm achieves rates of up to 632:1

Written by  on September 4, 2026

๐ญ๐ฅ;๐๐ซ ๐ฅ๐ฅ๐ฆ๐๐„๐† ๐œ๐จ๐ฆ๐ฉ๐ซ๐ž๐ฌ๐ฌ๐ž๐ฌ ๐ข๐ฆ๐š๐ ๐ž๐ฌ ๐ข๐ง๐ญ๐จ ๐ฅ๐š๐ง๐ ๐ฎ๐š๐ ๐ž, ๐ง๐จ๐ญ ๐ฉ๐ข๐ฑ๐ž๐ฅ๐ฌ. ๐€ ๐ฏ๐ข๐ฌ๐ข๐จ๐ง ๐ฆ๐จ๐๐ž๐ฅ ๐ญ๐ฎ๐ซ๐ง๐ฌ ๐ญ๐ก๐ž ๐ข๐ฆ๐š๐ ๐ž ๐ข๐ง๐ญ๐จ ๐š ๐œ๐จ๐ฆ๐ฉ๐š๐œ๐ญ ๐‰๐’๐Ž๐ ๐๐ž๐ฌ๐œ๐ซ๐ข๐ฉ๐ญ๐ข๐จ๐ง.

This week, a meme made the rounds about a young prodigy inventing a new way to compress photos. The idea behind it: derive the content of the image with a multimodal #vision-language model, then store this instead of the image. And when you want to view it, an #image-generation model recreates the content.
Simple. ๐€๐ง๐ ๐ญ๐จ๐ญ๐š๐ฅ๐ฅ๐ฒ ๐‹๐Ž๐’๐’๐˜.
Running #JPEG with a quality setting 10 looks like archival preservation in comparison.

I saw the meme several times in my stream. Instead of laughing and getting back to work, I did the obvious thing: I built it.

Meet #llmPEG.

You get a tool for compression (driven by #Qwen-VL inside #ollama) and decompression (either #ComfyUI or the image-gen skill from #codex).
After the initial prototype was working, I did some refinement of the prompts with a GAN-ish style of loop: until we had – with the given metric – a sufficiently fitting reproduction.

Please don’t ask about wall-clock performance.
Compression: ~20 seconds.
Decompression: ~30 seconds.

But the compression rate! Always at least 100:1, if not better: check this page with examples: https://marcelpetrick.github.io/llmPEG/expanded.html

๐€๐ญ ๐Ÿ๐ข๐ซ๐ฌ๐ญ ๐ข๐ญ ๐ฐ๐š๐ฌ ๐š ๐ฆ๐ž๐ฆ๐ž, ๐ง๐จ๐ฐ ๐ข๐ญ ๐ข๐ฌ ๐š ๐ญ๐จ๐จ๐ฅ ๐Ÿ˜‰

Source code, if you want to run it yourself and/or contribute: https://github.com/marcelpetrick/llmPEG/

Video:

๐‡๐จ๐ฐ ๐ก๐จ๐ฆ๐จ๐ ๐ž๐ง๐ž๐จ๐ฎ๐ฌ ๐š๐ซ๐ž ๐ฆ๐ฒ ๐œ๐ฅ๐š๐ฎ๐๐ž.๐ฆ๐/๐š๐ ๐ž๐ง๐ญ๐ฌ.๐ฆ๐?

Written by  on September 2, 2026

Out of curiosity I spent some time gathering and evaluating data, because during a discussion I was highly suspicious that a single agent instruction markdown (I prefer ๐˜ข๐˜จ๐˜ฆ๐˜ฏ๐˜ต๐˜ด.๐˜ฎ๐˜ฅ, just so you know) can cover all the custom aspects of a project. After all: if a generic agents.md can cover the needs of several projects, then we are in the domain of line work. And not of pushing the frontier.

Anyway: looks like I was handling 30 projects with #agenticAI in the past half year (arbitrary cut-off). The almighty collection git-repo “๐œ๐จ๐๐ข๐ง๐ ๐–๐ข๐ญ๐ก๐†๐๐“” is still alive and kicking, therefore we had the case of one repo with SEVERAL agent.mds. Even with different naming (see where this goes?)

๐’๐จ ๐ก๐ž๐ซ๐ž ๐š๐ซ๐ž ๐ญ๐ก๐ž ๐ซ๐ž๐ฌ๐ฎ๐ฅ๐ญ๐ฌ:
* 19 times I let them be named agents.md, only 11 times claude.md
* the language style was only 24% binding (must/never/always) – 42% advisory (should/prefer) and the rest unmarked
* the sections contained 73% rules; 13% project description guides, 6% command sheets and 7% reference material
* the heaviest context budget was/is paid for the one in “๐˜ค๐˜ญ๐˜ฐ๐˜ต๐˜ฉ๐˜ฆ๐˜ด๐˜š๐˜ฆ๐˜ข๐˜ณ๐˜ค๐˜ฉ” – almost 7k tokens with 45 rules – yes, I spent a lot of time automating my shopping. This agents.md is more than double the size of any other in my analyzed projects!
* “๐ฏ๐ž๐ซ๐ข๐Ÿ๐ฒ ๐›๐ž๐Ÿ๐จ๐ซ๐ž ๐œ๐ฅ๐š๐ข๐ฆ๐ข๐ง๐  ๐ฌ๐ฎ๐œ๐œ๐ž๐ฌ๐ฌ” is the most prominent instruction – appeared in 60% of my agent guides
* “one concern per commit” appeared only in 20% – which is weird. Everybody who works with me knows that ๐ˆ ๐‹๐Ž๐•๐„ ๐š๐ญ๐จ๐ฆ๐ข๐œ ๐œ๐จ๐ฆ๐ฆ๐ข๐ญ๐ฌ โ˜ข๏ธ
* only two agents.md files had not changed over the past 90 days – a sign that this guidance is a living object; ๐ž๐ฆ๐›๐ซ๐š๐œ๐ž ๐œ๐ก๐š๐ง๐ ๐ž!
* ๐จ๐ง๐ฅ๐ฒ ๐ญ๐ก๐ซ๐ž๐ž ๐ซ๐ž๐ฉ๐จ๐ฌ๐ข๐ญ๐จ๐ซ๐ข๐ž๐ฌ ๐œ๐š๐ซ๐ซ๐ข๐ž๐ ๐›๐ฒ๐ญ๐ž-๐ข๐๐ž๐ง๐ญ๐ข๐œ๐š๐ฅ ๐š๐ ๐ž๐ง๐ญ๐ฌ.๐ฆ๐: why? It was my early phase, when I did really work with files while doing agentic software engineering, silly me ๐Ÿ‘ถ๐Ÿป

Ok, if you want to see more, check the images.

Else: ๐ก๐จ๐ฐ ๐๐จ ๐ฒ๐จ๐ฎ ๐ก๐š๐ง๐๐ฅ๐ž ๐ฒ๐จ๐ฎ๐ซ ๐š๐ ๐ž๐ง๐ญ ๐ก๐š๐ซ๐ง๐ž๐ฌ๐ฌ๐ž๐ฌ? ๐†๐ฎ๐ข๐๐ž ๐จ๐ซ ๐ฅ๐ž๐ญ ๐ญ๐ก๐ž๐ฆ ๐ซ๐จ๐š๐ฆ ๐ฐ๐ข๐ฅ๐?
If someone else has done a review, post your results as well in the comments. I am interested. If someone needs the code for running this automatically – ping me, I’ll guide you to the repo.

#harness #claude #codex #anthropic #openai #ai

 

Videos automatisch รผbersetzen: ๐†๐ž๐ซ๐ฆ๐š๐ง๐ƒ๐ฎ๐›๐ˆ

Written by  on September 1, 2026

Eine clevere technische Lรถsung zu bauen ist meistens gar nicht das eigentliche Problem. Viel interessanter ist doch: Wie baut man etwas, das Leute wirklich benutzen wollen?

Ich wollte den Kindern ein richtig gutes Video รผber die rรถmische Armee zeigen. Nicht irgendein trockenes Erklรคrvideo, sondern eins, wo man denkt: Okay, das ist cool, da lernt man was. Problem war nur: die guten Videos waren auf Englisch.

Klar kann man sagen: Ist doch super, dann lernen die Kinder gleich noch Englisch. Stimmt. Aber wenn man zu viele Sachen gleichzeitig machen mรถchte, wird halt alles ein bisschen schlechter. Manchmal sollen sie einfach ein cooles Video schauen und dabei was lernen.

Also dachte ich: ๐˜ˆ๐˜ค๐˜ฉ, ๐˜ฅ๐˜ข๐˜ด ๐˜ฌ๐˜ข๐˜ฏ๐˜ฏ ๐˜ฅ๐˜ฐ๐˜ค๐˜ฉ ๐˜ฏ๐˜ช๐˜ค๐˜ฉ๐˜ต ๐˜ด๐˜ฐ ๐˜ด๐˜ค๐˜ฉ๐˜ธ๐˜ฆ๐˜ณ ๐˜ด๐˜ฆ๐˜ช๐˜ฏ. Video transkribieren, รผbersetzen, neue Tonspur drรผber und fertig.

Lass uns das mal schnell bauen.

Aus zwei Stunden wurden dann halt ๐ณ๐ฐ๐ž๐ข ๐“๐š๐ ๐ž.

Die erste Version war ein Command Line Tool. Hat funktioniert. Aber wenn ich das so verรถffentliche, benutzt das halt kaum jemand. Man sieht keinen Fortschritt, Fehler sind unรผbersichtlich, mehrere Videos parallel zu verarbeiten ist mรผhsam und wenn irgendwo etwas schieflรคuft, will man nicht jedes Mal den kompletten Workflow neu starten.

Also habe ich gedacht: ๐ƒ๐š๐ง๐ง ๐ก๐š๐ฅ๐ญ ๐ซ๐ข๐œ๐ก๐ญ๐ข๐ .

Schรถnes UI und Benutzerfรผhrung, mehrere Sprachen, parallele Verarbeitung, Fortschritt, Statistiken, Fehler direkt sichtbar, einzelne Schritte neu starten, Transkriptionen bearbeiten und gezielt neu generieren.

Und genau da merkt man halt den Unterschied zwischen einer technischen Lรถsung und einem Produkt.

Zeigst du jemandem ein Terminal und sagst: Damit kann ich Videos automatisch รผbersetzen, kommt meistens ein โ€žAh, coolโ€œ.

Zeigst du dieselbe Funktionalitรคt in einer Oberflรคche, wo sofort klar ist, was passiert und wo man einfach eingreifen kann, kommt plรถtzlich: โ€žKann ich das ausprobieren?โ€œ

Genau das wird meiner Meinung nach bei Software oft unterschรคtzt. Es reicht nicht, dass etwas clever ist und funktioniert. Es muss auch komfortabel sein. Leicht verstรคndlich. Leicht benutzbar. Und wenn etwas schieflรคuft, muss man trotzdem weiterkommen.

Das gilt รผbrigens auch fรผrs Setup. Wer ๐†๐ž๐ซ๐ฆ๐š๐ง๐ƒ๐ฎ๐›๐ˆ ausprobieren mรถchte, klont einfach das GitHub Repo (https://github.com/marcelpetrick/GermanDubI), kopiert drei Befehle aus der Anleitung ins Terminal und das Ding lรคuft.

Die technischen Details spare ich mir hier. Python, TypeScript, Uvicorn, Parallelverarbeitung, 95% Testcoverage, Pipelines und der ganze Kram. Darรผber kรถnnte ich noch stundenlang reden, weil mir das halt SpaรŸ macht, aber am Ende interessiert das sowieso kaum jemanden.

Fรผr mich ist der interessantere Teil: ๐€๐ฎ๐ฌ ๐ž๐ข๐ง๐ž๐ซ ๐ค๐ฅ๐ž๐ข๐ง๐ž๐ง ๐ˆ๐๐ž๐ž ๐ž๐ข๐ง๐ž ๐‹รถ๐ฌ๐ฎ๐ง๐  ๐ณ๐ฎ ๐›๐š๐ฎ๐ž๐ง, ๐๐ข๐ž ๐ง๐ข๐œ๐ก๐ญ ๐ง๐ฎ๐ซ ๐ญ๐ž๐œ๐ก๐ง๐ข๐ฌ๐œ๐ก ๐Ÿ๐ฎ๐ง๐ค๐ญ๐ข๐จ๐ง๐ข๐ž๐ซ๐ญ, ๐ฌ๐จ๐ง๐๐ž๐ซ๐ง ๐ฌ๐ข๐œ๐ก ๐š๐ฎ๐œ๐ก ๐ฐ๐ข๐ž ๐ž๐ข๐ง ๐๐ซ๐จ๐๐ฎ๐ค๐ญ ๐š๐ง๐Ÿรผ๐ก๐ฅ๐ญ.

ESE 2026-Kongress-Selektor – ๐”๐ฌ๐ž-๐œ๐š๐ฌ๐ž ๐Ÿรผ๐ซ ๐‚๐ฎ๐ฌ๐ญ๐จ๐ฆ ๐”๐—-๐ƒ๐ž๐ฌ๐ข๐ ๐ง

Written by  on August 31, 2026

Zu Beginn die Klรคrung, dass ich weder mit dem Embedded Software Kongress verbandelt bin, noch bezahlt wurde etc.

Ich wรผrde gern dieses Jahr nach Sindelfingen reisen, also war es Zeit, die Agenda zu studieren. Die Webseiten bieten einen guten รœberblick.

ABER: Sie kรถnnten etwas komfortabler in der Bedienung sein. Denn fรผr eine fundierte Entscheidung brauche ich die Info, was der Vortrag neben der spannenden Headline wirklich aufzeigen mรถchte. Jeden Vortrag im neuen Tab รถffnen und laden lassen? Nee, bitte nicht. Ebenfalls: eine Vorselektion fรผr die fรผr mich relevanten Bereiche: ๐๐ซ๐จ๐ฃ๐ž๐ค๐ญ- ๐ฎ๐ง๐ ๐“๐ž๐š๐ฆ-๐Œ๐š๐ง๐š๐ ๐ž๐ฆ๐ž๐ง๐ญ, ๐€๐ ๐ž๐ง๐ญ๐ข๐œ ๐€๐ˆ, ๐’๐ค๐š๐ฅ๐ข๐ž๐ซ๐ฎ๐ง๐ .

Also schnell den ๐„๐’๐„_๐Š๐จ๐ง๐ ๐ซ๐ž๐ฌ๐ฌ_๐’๐ž๐ฅ๐ž๐ค๐ญ๐จ๐ซ (https://github.com/marcelpetrick/ESE_Kongress_Selektor) in #Python implementiert.
Was brauchen wir hierfรผr? Einen #Scraper und eine statische Webseite. Der Export der Selektionen erfolgt via JSON. Die Struktur der Seiten wird mehr oder weniger รผbernommen.
Rasend schnell, Details zum Vortrag werden via Tooltip (statt auf einer neuen Seite) angezeigt, Filterung ist mรถglich.
Repo klonen und die ๐˜ฑ๐˜บ๐˜ต๐˜ฉ๐˜ฐ๐˜ฏ3 ๐˜ณ๐˜ถ๐˜ฏ.๐˜ฑ๐˜บ ausfรผhren, kurz warten und los geht’s.

๐–๐ž๐ซ ๐ฉ๐ฅ๐š๐ง๐ญ ๐ณ๐ฎ๐ฆ ๐„๐’๐„ ๐ณ๐ฎ ๐Ÿ๐š๐ก๐ซ๐ž๐ง? ๐€๐ง ๐ฐ๐ž๐ฅ๐œ๐ก๐ž๐ง ๐“๐š๐ ๐ž๐ง?

An die Organisatoren des @ESE: Falls ihr etwas vom Design รผbernehmen wollt โ€“ gern, die GPLv3 macht es mรถglich.

Video (nicht sichtbar in Vorschau)

 

Good news: ๐‹๐•๐†๐‹ YAML translations with ๐‚๐ฎ๐ญ๐ž๐‹๐ข๐ง๐ ๐จ๐„๐ฑ๐ฉ๐ซ๐ž๐ฌ๐ฌ ๐ŸŽ.๐Ÿ‘.๐ŸŽ

Written by  on August 14, 2026

Since #Qt is not the only champion in the embedded domain, I’ve expanded the supported frameworks by making it possible to run it on the #i18n files from #LVGL as well. Maybe it is handy for someone else too ๐Ÿ˜‰

The new mode is invoked with --lvgl-yaml, and you have to do it explicitly. The existing usage for TS files remains unchanged.

The source YAML files also stay untouched, so the result is written to a file named for each output language.

In the background, I also did some other plumbing, which had been on the list for a while: GitHub Actions now also cover the dependency graph, neat badges showing the pipeline states in the README.md, updated dependencies, and some quality hardening. So we have 58 automated tests now, 100% statement coverage, and Pylint reports 10/10.

That polishing and the above-mentioned feature are the result of continuous market review and constant adaptation. New competitors and technical standards emerge; as developers, we should be ready to embrace change and adapt.

Give me feedback if some other translation files need coverage as well.

Link to to the repo:ย https://github.com/marcelpetrick/CuteLingoExpress

๐Ž๐ง๐ฅ๐ฒ ๐Ÿ% of my ๐ฉ๐ซ๐จ๐ฆ๐ฉ๐ญ๐ฌ contain ๐ฉ๐ซ๐จ๐Ÿ๐š๐ง๐ข๐ญ๐ฒ

Written by  on August 11, 2026

Testing Muse Glimmer lead to some frustration, so I started the next prompt with something I wouldn’t write professionally.
And this led to the question: how often do I do this? I would have guessed that 10% of my machine-human interactions contain some swear words.

But why guess when you can evaluate the data and produce hard facts?

Therefore I prepared ๐Ÿซ™ ๐€๐ ๐ž๐ง๐ญ๐ข๐œ ๐’๐ฐ๐ž๐š๐ซ ๐‰๐š๐ซ as project on GitHub, which evaluates both your ๐‚๐จ๐๐ž๐ฑ and ๐‚๐ฅ๐š๐ฎ๐๐ž ๐‚๐จ๐๐ž logs and gives you on the CLI a short two liner. And additionally you receive an HTML page in nice green IBM 3279-style. All locally, no AI or models involved, just some Python and HTML.
It will reveal to you how many swearwords were used, their frequency, streaks without swearing, which hour of the day the tension rises high, etc ..

What do you think? Anyone has a higher score to offer? Leave me a comment.

GitHub: https://github.com/marcelpetrick/AgenticSwearJar

PDF with full feature view:

agentic-swear-jar-linkedin

Screenshot:

 

๐‚๐ฅ๐จ๐ฎ๐ ๐€๐๐ˆ๐ฌ ๐š๐ซ๐ž ๐ž๐ฑ๐ฉ๐ž๐ง๐ฌ๐ข๐ฏ๐ž. ๐–๐š๐ญ๐ž๐ซ๐ฆ๐ž๐ฅ๐จ๐ง ๐ข๐ฌ ๐ง๐จ๐ญ. ๐Ÿ‰

Written by  on July 15, 2026

Vision models grow in their capabilities while the execution demands way fewer resources.

Means: my sales slip scanner-project from two years ago needed an upgrade. Before I was using GPT-4 Vision via the @OpenAI API, which costs you control over your data and a few cents for every analysis.

Now, after intensive benchmarking across a range of 15 models (with ๐Ž๐ฅ๐ฅ๐š๐ฆ๐š) and some surprising regressions (newer harness doesn’t mean the models execute faster; it can also mean they suddenly run into model load errors…), I put my money on ๐๐ฐ๐ž๐ง๐Ÿ‘.๐Ÿ“:๐Ÿ’๐. A casual language model with a ๐ฏ๐ข๐ฌ๐ข๐จ๐ง ๐ž๐ง๐œ๐จ๐๐ž๐ซ. My own benchmark over the selected models against the huge sample size of three receipts: all three were successfully evaluated. ๐Ÿ˜‰

Then I built a ๐ก๐จ๐ญ-๐Ÿ๐จ๐ฅ๐๐ž๐ซ-๐œ๐จ๐ง๐œ๐ž๐ฉ๐ญ around the script, and it works (thank you @Mr Zahorsky โ€” without whom I would have never come across that idea). For instance: in less than ten seconds, 13 samples were processed, and you get the result sum plus a fancy HTML overview for comparison.

๐ƒ๐š๐ญ๐š ๐ž๐ง๐ญ๐ซ๐ฒ can be done for cheap: give the kids the smartphone, snap all receipts, throw out some watermelon slices ๐Ÿ‰๐Ÿ˜‰

If you want to run the tool as well, check my GitHub: https://github.com/marcelpetrick/sales-slip-scanner-ng. As said: a local GPU is the only thing you need; ๐ง๐จ ๐œ๐ฅ๐จ๐ฎ๐, ๐ง๐จ ๐€๐๐ˆ ๐ค๐ž๐ฒ๐ฌ, ๐ง๐จ ๐œ๐ซ๐ž๐๐ข๐ญ ๐œ๐š๐ซ๐. Everything is now self-hosted. You’ll also find the benchmark of the vision models there, including the results.

๐“๐ก๐ž ๐›๐ข๐  ๐ช๐ฎ๐ž๐ฌ๐ญ๐ข๐จ๐ง ๐ข๐ฌ: ๐ฐ๐ก๐š๐ญ ๐ฌ๐ก๐จ๐ฎ๐ฅ๐ ๐ˆ ๐š๐ฎ๐ญ๐จ๐ฆ๐š๐ญ๐ž ๐ง๐ž๐ฑ๐ญ ๐ฐ๐ข๐ญ๐ก ๐š ๐ฅ๐จ๐œ๐š๐ฅ ๐ฏ๐ข๐ฌ๐ข๐จ๐ง ๐ฆ๐จ๐๐ž๐ฅ? ๐–๐ก๐š๐ญ ๐ฐ๐จ๐ฎ๐ฅ๐ ๐ฒ๐จ๐ฎ ๐๐จ?

#neverstoplearning

๐Œ๐ฒ ๐š๐ฉ๐ฉ๐ฌ ๐š๐ซ๐ž ๐ง๐จ๐ญ ๐š๐›๐š๐ง๐๐จ๐ง๐ฐ๐š๐ซ๐ž!

Written by  on July 10, 2026

Yesterday, #RitterRadar got some updates: first, all dependencies were refreshed (no more CVEs); then I fixed some bugs I had noticed over the past few weeks; and finally, the best news: a new feature that gives you a copyable list of the events matching your current filter.

So, for instance, if you live near Potsdam and want to see all medieval events within 50 km over the next two months – you get this:

——-

04. Juli 2026 | Kinder- und Sommerfest in Gannahall 2026 | 14641 Nauen (26 km)
04. Juli 2026 – 05. Juli 2026 | Mythologie und Handwerk des Mittelalters 2026 | 15569 Woltersdorf (47 km)
22. Aug. 2026 – 23. Aug. 2026 | Sommerfest Lรผbarser Hofkulturdiverse Konzerte | 13469 Berlin (30 km)
29. Aug. 2026 | Mittelalterliches zum Ackerbรผrgerfest | 14641 Nauen (26 km)

——-

#FastAPI #WebScraping #OpenStreetMap #Geocoding #OpenSource #EventDiscovery

URL to the GitHub-project: https://github.com/marcelpetrick/RitterRadarย if you haven’t given it a try yet โš”๏ธ๐Ÿ‰