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

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 15, 2026

๐Ÿฐ๐Ÿฌ ๐—บ๐—ถ๐—ป๐˜‚๐˜๐—ฒ๐˜€. That’s all it took me to get Bonsai 27B running locally on an RTX A2000 Laptop GPU with just 8GB of VRAM.

Bonsai 27B is based on Qwen 3.6, but uses PrismML’s custom native ๐Ÿ-๐›๐ข๐ญ ๐๐จ๐ง๐ฌ๐š๐ข format, reducing the model to just 3.9GB. A specialized ๐ฅ๐ฅ๐š๐ฆ๐š.๐œ๐ฉ๐ฉ fork implements custom CUDA kernels for the 1-bit inference path, making it possible to run the model directly on an 8GB GPU. The runtime exposes an OpenAI-compatible API, so existing tools and agents work without modification.
Performance is a different topic: 15 down to 9 tokens/s.

If you want to give it a try: find my notes and setup-scripts at GitHub: https://github.com/marcelpetrick/codingWithGPT/tree/master/bonsaiTestrun

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

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 โš”๏ธ๐Ÿ‰

๐๐ญ ๐‚๐ซ๐ž๐š๐ญ๐จ๐ซ ๐ฌ๐ฉ๐ž๐ฅ๐ฅ๐œ๐ก๐ž๐œ๐ค โ€” ๐ง๐จ๐ฐ ๐ฐ๐ข๐ญ๐ก ๐๐Œ๐‹ ๐ฌ๐ฎ๐ฉ๐ฉ๐จ๐ซ๐ญ

Written by  on July 8, 2026

I never wrote a #QtCreator #plugin before. Somehow I always avoided that, because first you have to set up your environment, then build a husk, make it build, yada yada.

But the spellchecker plugin from Carel Combrink was missing support for QML-type files for years now. C++ parsing existed, #QML did not.

๐—ฆ๐—ผ ๐—œ ๐—ฒ๐˜…๐—ฝ๐—ฎ๐—ป๐—ฑ๐—ฒ๐—ฑ ๐—ถ๐˜.

New QML parser added next to the existing C++ parser. As you know: QML is different from C++ ๐Ÿ˜‰

It now scans QML comments and user-visible string literals:
* // line comments
* /* block comments */
* double-quoted strings
* single-quoted strings
* template literals

It also tries hard to not be annoying. It ignores QML/JavaScript code tokens like imports, ids, property names, bindings, and component names. URLs, emails, pure numbers, color values, and all-caps words are filtered out as well.

Source positions are preserved, so underlines and replacements land where they should. It works for current-file and project-wide checks, with background processing, reparsing, and settings for comments and string literals.

Lots of #testing. Unit tests, yes. But also manual testing, because certain aspects were not part of my initial implementation plan. As always.

So now you can use any Hunspell dictionary to check your QML files for typos and get them fixed.

Typos in code and comments are a real concentration breaker while reading code.

๐— ๐—ถ๐˜€๐˜€๐—ถ๐—ผ๐—ป ๐—ฑ๐—ผ๐—ป๐—ฒ. ๐—”๐—ป๐—ผ๐˜๐—ต๐—ฒ๐—ฟ ๐˜๐—ต๐—ถ๐—ป๐—ด ๐—น๐—ฒ๐—ฎ๐—ฟ๐—ป๐—ฒ๐—ฑ. ๐—”๐—ป๐—ฑ ๐—บ๐—ฎ๐˜†๐—ฏ๐—ฒ ๐˜๐—ต๐—ฒ ๐—ฝ๐—ฎ๐˜๐—ฐ๐—ต ๐—ถ๐˜€ ๐—ฎ๐—ฐ๐—ฐ๐—ฒ๐—ฝ๐˜๐—ฒ๐—ฑ.

If someone really wants to check the patch themselves on GitHub:
https://github.com/CJCombrink/SpellChecker-Plugin/pull/197

Thanks to Carel Combrink and the other contributors for the existing work this builds on.

๐’๐ญ๐š๐ง๐๐ข๐ง๐  ๐จ๐ง ๐ญ๐ก๐ž ๐ฌ๐ก๐จ๐ฎ๐ฅ๐๐ž๐ซ๐ฌ ๐จ๐Ÿ ๐ ๐ข๐š๐ง๐ญ๐ฌ.

#Spellchecking

 

โš”๏ธ๐Ÿ‰ ๐—ฅ๐—ถ๐˜๐˜๐—ฒ๐—ฟ๐—ฅ๐—ฎ๐—ฑ๐—ฎ๐—ฟ ๐Ÿ›ก๏ธ๐Ÿฐ๐Ÿ‡

Written by  on June 27, 2026

๐˜๐˜ฆ๐˜ข๐˜ณ๐˜ฌ๐˜ฆ๐˜ฏ, ๐˜จ๐˜ฐ๐˜ฐ๐˜ฅ ๐˜ต๐˜ณ๐˜ข๐˜ท๐˜ฆ๐˜ญ๐˜ญ๐˜ฆ๐˜ณ, ๐˜ข๐˜ฏ๐˜ฅ ๐˜ญ๐˜ฆ๐˜ฏ๐˜ฅ ๐˜ต๐˜ฉ๐˜ช๐˜ฏ๐˜ฆ ๐˜ฆ๐˜ข๐˜ณ!

๐˜™๐˜ช๐˜ต๐˜ต๐˜ฆ๐˜ณ๐˜™๐˜ข๐˜ฅ๐˜ข๐˜ณ ๐˜ช๐˜ด ๐˜ข ๐˜ค๐˜ถ๐˜ฏ๐˜ฏ๐˜ช๐˜ฏ๐˜จ ๐˜ช๐˜ฏ๐˜ด๐˜ต๐˜ณ๐˜ถ๐˜ฎ๐˜ฆ๐˜ฏ๐˜ต, ๐˜ง๐˜ฐ๐˜ณ๐˜จ๐˜ฆ๐˜ฅ ๐˜ช๐˜ฏ ๐˜ต๐˜ฉ๐˜ฆ ๐˜ง๐˜ช๐˜ณ๐˜ฆ๐˜ด ๐˜ฐ๐˜ง ๐˜—๐˜บ๐˜ต๐˜ฉ๐˜ฐ๐˜ฏ, ๐˜ต๐˜ฐ ๐˜ข๐˜ช๐˜ฅ ๐˜ต๐˜ฉ๐˜ฆ๐˜ฆ ๐˜ช๐˜ฏ ๐˜ต๐˜ฉ๐˜บ ๐˜ฏ๐˜ฐ๐˜ฃ๐˜ญ๐˜ฆ ๐˜ฒ๐˜ถ๐˜ฆ๐˜ด๐˜ต: ๐˜ต๐˜ฉ๐˜ฆ ๐˜ฅ๐˜ช๐˜ด๐˜ค๐˜ฐ๐˜ท๐˜ฆ๐˜ณ๐˜บ ๐˜ฐ๐˜ง ๐˜ฎ๐˜ฆ๐˜ฅ๐˜ช๐˜ฆ๐˜ท๐˜ข๐˜ญ ๐˜ฎ๐˜ข๐˜ณ๐˜ฌ๐˜ฆ๐˜ต๐˜ด, ๐˜™๐˜ฆ๐˜ฏ๐˜ข๐˜ช๐˜ด๐˜ด๐˜ข๐˜ฏ๐˜ค๐˜ฆ ๐˜ง๐˜ข๐˜ช๐˜ณ๐˜ด, ๐˜๐˜ช๐˜ฌ๐˜ช๐˜ฏ๐˜จ ๐˜ด๐˜ฑ๐˜ฆ๐˜ค๐˜ต๐˜ข๐˜ค๐˜ญ๐˜ฆ๐˜ด, ๐˜ข๐˜ฏ๐˜ฅ ๐˜Š๐˜ฉ๐˜ณ๐˜ช๐˜ด๐˜ต๐˜ฎ๐˜ข๐˜ด ๐˜ณ๐˜ฆ๐˜ท๐˜ฆ๐˜ญ๐˜ณ๐˜ช๐˜ฆ๐˜ด ๐˜ฐ๐˜ง ๐˜ต๐˜ฉ๐˜ฆ ๐˜ข๐˜ฏ๐˜ค๐˜ช๐˜ฆ๐˜ฏ๐˜ต ๐˜ด๐˜ต๐˜บ๐˜ญ๐˜ฆ – ๐˜ข๐˜ค๐˜ณ๐˜ฐ๐˜ด๐˜ด ๐˜ต๐˜ฉ๐˜ฆ ๐˜Ž๐˜ฆ๐˜ณ๐˜ฎ๐˜ข๐˜ฏ ๐˜ญ๐˜ข๐˜ฏ๐˜ฅ๐˜ด ๐˜ข๐˜ฏ๐˜ฅ ๐˜ฃ๐˜ฆ๐˜บ๐˜ฐ๐˜ฏ๐˜ฅ.

๐˜›๐˜ฉ๐˜ช๐˜ด ๐˜ต๐˜ฐ๐˜ฐ๐˜ญ ๐˜ฅ๐˜ฐ๐˜ต๐˜ฉ ๐˜ฅ๐˜ช๐˜ด๐˜ฑ๐˜ข๐˜ต๐˜ค๐˜ฉ ๐˜ต๐˜ช๐˜ณ๐˜ฆ๐˜ญ๐˜ฆ๐˜ด๐˜ด ๐˜ธ๐˜ฆ๐˜ฃ-๐˜ค๐˜ณ๐˜ข๐˜ธ๐˜ญ๐˜ช๐˜ฏ๐˜จ ๐˜ข๐˜จ๐˜ฆ๐˜ฏ๐˜ต๐˜ด ๐˜ช๐˜ฏ๐˜ต๐˜ฐ ๐˜ต๐˜ฉ๐˜ฆ ๐˜ท๐˜ข๐˜ด๐˜ต ๐˜ฅ๐˜ช๐˜จ๐˜ช๐˜ต๐˜ข๐˜ญ ๐˜ธ๐˜ช๐˜ญ๐˜ฅ๐˜ฆ๐˜ณ๐˜ฏ๐˜ฆ๐˜ด๐˜ด. ๐˜›๐˜ฉ๐˜ฆ๐˜บ ๐˜ณ๐˜ฆ๐˜ต๐˜ถ๐˜ณ๐˜ฏ ๐˜ญ๐˜ข๐˜ฅ๐˜ฆ๐˜ฏ ๐˜ธ๐˜ช๐˜ต๐˜ฉ ๐˜ต๐˜ช๐˜ฅ๐˜ช๐˜ฏ๐˜จ๐˜ด ๐˜ฐ๐˜ง ๐˜ง๐˜ฐ๐˜ณ๐˜ต๐˜ฉ๐˜ค๐˜ฐ๐˜ฎ๐˜ช๐˜ฏ๐˜จ ๐˜ฆ๐˜ท๐˜ฆ๐˜ฏ๐˜ต๐˜ด – ๐˜ต๐˜ฉ๐˜ฆ๐˜ช๐˜ณ ๐˜ฏ๐˜ข๐˜ฎ๐˜ฆ๐˜ด, ๐˜ต๐˜ฉ๐˜ฆ๐˜ช๐˜ณ ๐˜ฅ๐˜ข๐˜ต๐˜ฆ๐˜ด, ๐˜ต๐˜ฉ๐˜ฆ๐˜ช๐˜ณ ๐˜ธ๐˜ฉ๐˜ฆ๐˜ณ๐˜ฆ๐˜ข๐˜ฃ๐˜ฐ๐˜ถ๐˜ต๐˜ด โ€” ๐˜ข๐˜ฏ๐˜ฅ ๐˜ด๐˜ต๐˜ฐ๐˜ณ๐˜ฆ ๐˜ข๐˜ญ๐˜ญ ๐˜ธ๐˜ช๐˜ต๐˜ฉ๐˜ช๐˜ฏ ๐˜ข ๐˜ญ๐˜ฐ๐˜ค๐˜ข๐˜ญ ๐˜ต๐˜ณ๐˜ฆ๐˜ข๐˜ด๐˜ถ๐˜ณ๐˜บ ๐˜ฐ๐˜ง ๐˜š๐˜˜๐˜“๐˜ช๐˜ต๐˜ฆ.

๐˜œ๐˜ฑ๐˜ฐ๐˜ฏ ๐˜ต๐˜ฉ๐˜ช๐˜ฏ๐˜ฆ ๐˜ฐ๐˜ธ๐˜ฏ ๐˜ฎ๐˜ข๐˜ค๐˜ฉ๐˜ช๐˜ฏ๐˜ฆ ๐˜ช๐˜ต ๐˜ฅ๐˜ฐ๐˜ต๐˜ฉ ๐˜ณ๐˜ฆ๐˜ฏ๐˜ฅ๐˜ฆ๐˜ณ ๐˜ข ๐˜ฎ๐˜ฐ๐˜ด๐˜ต ๐˜ฃ๐˜ฆ๐˜ข๐˜ถ๐˜ต๐˜ช๐˜ง๐˜ถ๐˜ญ ๐˜ช๐˜ฏ๐˜ต๐˜ฆ๐˜ณ๐˜ข๐˜ค๐˜ต๐˜ช๐˜ท๐˜ฆ ๐˜ฎ๐˜ข๐˜ฑ, ๐˜ธ๐˜ฉ๐˜ฆ๐˜ณ๐˜ฆ๐˜ถ๐˜ฑ๐˜ฐ๐˜ฏ ๐˜ต๐˜ฉ๐˜ฐ๐˜ถ ๐˜ฎ๐˜ข๐˜บ๐˜ฆ๐˜ด๐˜ต ๐—ณ๐—ถ๐—น๐˜๐—ฒ๐—ฟ ๐—ฏ๐˜† ๐—ฝ๐—ฒ๐—ฟ๐—ถ๐—ผ๐—ฑ (๐˜ธ๐˜ฉ๐˜ช๐˜ค๐˜ฉ ๐˜ฎ๐˜ฐ๐˜ฏ๐˜ต๐˜ฉ๐˜ด ๐˜ต๐˜ฉ๐˜ฐ๐˜ถ ๐˜ธ๐˜ช๐˜ด๐˜ฉ๐˜ฆ๐˜ด๐˜ต ๐˜ต๐˜ฐ ๐˜ด๐˜ถ๐˜ณ๐˜ท๐˜ฆ๐˜บ) ๐˜ข๐˜ฏ๐˜ฅ ๐—ณ๐—ถ๐—น๐˜๐—ฒ๐—ฟ ๐—ฏ๐˜† ๐˜€๐—ฝ๐—ฎ๐—ฐ๐—ฒ (๐˜ต๐˜ฉ๐˜บ ๐˜ฉ๐˜ฐ๐˜ฎ๐˜ฆ ๐˜ฑ๐˜ฐ๐˜ด๐˜ช๐˜ต๐˜ช๐˜ฐ๐˜ฏ ๐˜ข๐˜ฏ๐˜ฅ ๐˜ข ๐˜ณ๐˜ข๐˜ฅ๐˜ช๐˜ถ๐˜ด ๐˜ฐ๐˜ง ๐˜ต๐˜ฉ๐˜บ ๐˜ค๐˜ฉ๐˜ฐ๐˜ฐ๐˜ด๐˜ช๐˜ฏ๐˜จ, ๐˜ง๐˜ณ๐˜ฐ๐˜ฎ ๐˜ข ๐˜ด๐˜ต๐˜ฐ๐˜ฏ๐˜ฆ’๐˜ด ๐˜ต๐˜ฉ๐˜ณ๐˜ฐ๐˜ธ ๐˜ต๐˜ฐ 1024 ๐˜ญ๐˜ฆ๐˜ข๐˜จ๐˜ถ๐˜ฆ๐˜ด). ๐˜Š๐˜ญ๐˜ช๐˜ค๐˜ฌ ๐˜ถ๐˜ฑ๐˜ฐ๐˜ฏ ๐˜ข๐˜ฏ๐˜บ ๐˜ฎ๐˜ข๐˜ณ๐˜ฌ๐˜ฆ๐˜ณ ๐˜ต๐˜ฐ ๐˜ญ๐˜ฆ๐˜ข๐˜ณ๐˜ฏ ๐˜ต๐˜ฉ๐˜ฆ ๐˜ง๐˜ถ๐˜ญ๐˜ญ ๐˜ฑ๐˜ข๐˜ณ๐˜ต๐˜ช๐˜ค๐˜ถ๐˜ญ๐˜ข๐˜ณ๐˜ด. ๐˜›๐˜ฉ๐˜ฆ ๐˜ค๐˜ณ๐˜ข๐˜ธ๐˜ญ๐˜ฆ๐˜ณ ๐˜ณ๐˜ถ๐˜ฏ๐˜ฏ๐˜ฆ๐˜ต๐˜ฉ ๐˜ช๐˜ฏ ๐˜ต๐˜ฉ๐˜ฆ ๐˜ฃ๐˜ข๐˜ค๐˜ฌ๐˜จ๐˜ณ๐˜ฐ๐˜ถ๐˜ฏ๐˜ฅ; ๐˜ต๐˜ฉ๐˜ฆ ๐˜ฎ๐˜ข๐˜ฑ ๐˜ณ๐˜ฆ๐˜ง๐˜ณ๐˜ฆ๐˜ด๐˜ฉ๐˜ฆ๐˜ต๐˜ฉ ๐˜ฐ๐˜ฏ ๐˜ช๐˜ต๐˜ด ๐˜ฐ๐˜ธ๐˜ฏ ๐˜ข๐˜ค๐˜ค๐˜ฐ๐˜ณ๐˜ฅ.

๐˜•๐˜ฐ ๐˜ค๐˜ญ๐˜ฐ๐˜ถ๐˜ฅ. ๐˜•๐˜ฐ ๐˜ข๐˜ค๐˜ค๐˜ฐ๐˜ถ๐˜ฏ๐˜ต๐˜ด. ๐˜•๐˜ฐ ๐˜ฅ๐˜ข๐˜ต๐˜ข ๐˜ญ๐˜ฆ๐˜ข๐˜ท๐˜ฆ๐˜ต๐˜ฉ ๐˜ต๐˜ฉ๐˜บ ๐˜ฎ๐˜ข๐˜ค๐˜ฉ๐˜ช๐˜ฏ๐˜ฆ. ๐˜›๐˜ฉ๐˜ถ๐˜ด: ๐˜ข ๐˜ฉ๐˜ฆ๐˜ญ๐˜ฑ๐˜ฆ๐˜ณ ๐˜ต๐˜ฐ๐˜ฐ๐˜ญ ๐˜ต๐˜ฉ๐˜ข๐˜ต ๐˜ค๐˜ณ๐˜ข๐˜ธ๐˜ญ๐˜ฆ๐˜ต๐˜ฉ ๐˜ต๐˜ฉ๐˜ฆ ๐˜ธ๐˜ฆ๐˜ฃ ๐˜ธ๐˜ช๐˜ต๐˜ฉ ๐˜ค๐˜ถ๐˜ด๐˜ต๐˜ฐ๐˜ฎ ๐˜ค๐˜ณ๐˜ข๐˜ธ๐˜ญ๐˜ฆ๐˜ณ๐˜ด, ๐˜ฑ๐˜ณ๐˜ฆ๐˜ด๐˜ฆ๐˜ฏ๐˜ต๐˜ฆ๐˜ต๐˜ฉ ๐˜ต๐˜ฉ๐˜ฆ ๐˜ง๐˜ช๐˜ฏ๐˜ฅ๐˜ช๐˜ฏ๐˜จ๐˜ด, ๐˜ข๐˜ฏ๐˜ฅ ๐˜ข๐˜ญ๐˜ญ๐˜ฐ๐˜ธ๐˜ฆ๐˜ต๐˜ฉ ๐˜ต๐˜ฉ๐˜ฆ๐˜ฆ ๐˜ต๐˜ฐ ๐˜ด๐˜ช๐˜ง๐˜ต ๐˜ต๐˜ฉ๐˜ฆ๐˜ฎ ๐˜ฃ๐˜บ ๐˜ต๐˜ช๐˜ฎ๐˜ฆ ๐˜ข๐˜ฏ๐˜ฅ ๐˜ฃ๐˜บ ๐˜ฅ๐˜ช๐˜ด๐˜ต๐˜ข๐˜ฏ๐˜ค๐˜ฆ. ๐˜•๐˜ฐ๐˜ต๐˜ฉ๐˜ช๐˜ฏ๐˜จ ๐˜ฎ๐˜ฐ๐˜ณ๐˜ฆ, ๐˜ฏ๐˜ฐ๐˜ต๐˜ฉ๐˜ช๐˜ฏ๐˜จ ๐˜ญ๐˜ฆ๐˜ด๐˜ด – ๐˜ฃ๐˜ถ๐˜ต ๐˜ง๐˜ข๐˜ด๐˜ฉ๐˜ช๐˜ฐ๐˜ฏ๐˜ฆ๐˜ฅ ๐˜ธ๐˜ช๐˜ต๐˜ฉ ๐˜ค๐˜ข๐˜ณ๐˜ฆ.

——-

Also: Wir besuchen recht gerne Mittelaltermรคrkte. Jetzt ist es so, dass die Schaustellergruppen umherziehen beziehungsweise bestimmte Events an historischen Orten stattfinden. Ich wohne nicht an einem historischen Ort.

Also sucht man eine der vielen Seiten im Netz auf, die Termine auflisten. Diese sind รผber die Jahre gewachsen, und viele Seiten bieten auch Komfortfunktionen wie โ€žFilter nach Datum oder Bundeslandโ€œ an, aber:
* ๐—™๐—ฟ๐—ฎ๐—ด๐—บ๐—ฒ๐—ป๐˜๐—ถ๐—ฒ๐—ฟ๐˜‚๐—ป๐—ด: Nicht alle Seiten zeigen โ€žalle Eventsโ€œ
* Ein Filter nach Bundesland hat das Problem, dass man alles einzeln sichten muss, wenn man auch gewillt ist, Landesgrenzen zu รผberschreiten (oder eben ungefiltert, yada yada)
* ๐—™๐—ถ๐—น๐˜๐—ฒ๐—ฟ๐˜‚๐—ป๐—ด ๐—ป๐—ฎ๐—ฐ๐—ต ๐—ญ๐—ฒ๐—ถ๐˜๐—ฟ๐—ฎ๐˜‚๐—บ (Vergangenes interessiert mich nicht)

Also, wie man sieht: ein komplexer Task, wenn man sich einen Plan fรผr die nรคchsten Monate machen mรถchte. Durchaus lรถsbar, aber wie Clarence Bleicher sagt: โ€ž[..] ๐˜๐—ต๐—ฎ๐˜ ๐˜„๐—ต๐—ฒ๐—ป ๐—ต๐—ฒ ๐—ต๐—ฎ๐—ฑ ๐—ฎ ๐—ต๐—ฎ๐—ฟ๐—ฑ ๐—ท๐—ผ๐—ฏ, ๐—ต๐—ฒ ๐˜„๐—ผ๐˜‚๐—น๐—ฑ ๐—ฎ๐˜€๐˜€๐—ถ๐—ด๐—ป ๐—ถ๐˜ ๐˜๐—ผ ๐—ฎ โ€˜๐—น๐—ฎ๐˜‡๐˜† ๐—บ๐—ฎ๐—ปโ€™ ๐—ฏ๐—ฒ๐—ฐ๐—ฎ๐˜‚๐˜€๐—ฒ ๐˜๐—ต๐—ฒ๐˜† ๐˜„๐—ผ๐˜‚๐—น๐—ฑ ๐—ณ๐—ถ๐—ป๐—ฑ ๐—ฎ๐—ป ๐—ฒ๐—ฎ๐˜€๐˜† ๐˜„๐—ฎ๐˜† ๐˜๐—ผ ๐—ฑ๐—ผ ๐—ถ๐˜.โ€œ โ€“ kein Job fรผr mich ๐Ÿ™ˆ

Nun bin ich auch KEIN Webentwickler. Aber das sollte mich nicht daran hindern, โ€žRitter Radarโ€œ zu entwickeln.

Eine App, die aus mehreren Webcrawlern sowie Front- und Backend besteht. Alle bekannten Mittelaltermarkt-Seiten werden durchsucht, die Ergebnisse kommen in eine lokale Datenbank, und dann hat man die Mรถglichkeit, in einem Web-UI nach Entfernung zum Startort und Zeitraum zu filtern. Easy peasy.

BeautifulSoup, OpenStreetMap, Python, SQLite, Uvicorn, ein bisschen HTML und CSS … und fertig.

Ich habe es bisher nicht auf ein Web-Deployment getrimmt, weil ich die Arbeit der Ersteller der Mittelaltermarkt-Seiten honoriere. Wenn ich jetzt so ein Portal hosten wรผrde, wรคre ich wie Google mit den KI-Suchergebnissen: Eine Zusammenfassung drรคngt sich zwischen Nutzer und Ersteller und fรคngt so Webseiten-Traffic ab.

Daher: Einfach auf https://github.com/marcelpetrick/RitterRadar das Repository klonen und selbst bootstrappen: zwei Shell-Skripte ausfรผhren, fertig ist der Lack. โš”๏ธ๐Ÿ‰

Disable the “Dell Command Update”

Written by  on June 22, 2026

Configured Dell Command Update for manual operation and disabled notifications:

powershell
& "C:\Program Files\Dell\CommandUpdate\dcu-cli.exe" /configure -scheduleManual

powershell
& "C:\Program Files\Dell\CommandUpdate\dcu-cli.exe" /configure -updatesNotification=disable

## Result:

* Updates are set to **Manual Only**
* Update notifications are **Disabled**

The Dell Command Update Settings dialog correctly reflects both settings.

Problem: The repository ‘http://de.archive.ubuntu.com/ubuntu impish Release’ no longer has a Release file.

Written by  on January 31, 2023

Solution:
sudo sed -i 's/impish/jammy/g' /etc/apt/sources.list
sudo apt update && sudo apt full-upgrade

Manjaro Linux: “Account locked due to three failed login attempts..”

Written by  on November 24, 2022

So annoying ..
Edit /etc/security/faillock.conf with sudo and add deny = 0.

Today I handed in my first #ProductProposal ๐Ÿฅณ

Written by  on August 29, 2022

And it was quite fun to write it.
Since pitching products is not my day-to-day business I spent some time to research how to write such a proposal. My first search results were aimed at “elevator pitches” or “startup pitches”. So I had to dig deeper ..

Anyway: due to confidentiality I can’t show-case anything here. I can only share this: I drew some #mockups with draw.io, put in the technical features and spent the majority of the time on writing a teaser. Something which will catch the audience immediately and makes them think: wow, we really have to sponsor this project!

Oh, why do I say “we”? #datamodul opened an innovation contest to source the ideas of their employees. Quite a clever idea. And a team can achieve so much more than a collection of individuals.

So .. even if that proposal is a dud, I learned some things, especially about writing a proper introduction. My first iteration was quite technical ๐Ÿ˜…

# Lessons learned:
* How to do a proper pitch, reduce technical details, appeal to a #vision, create a pitch deck with slides
* But also: go fast, break things. Too much time was spent on refinement and polishing. I had set myself an arbitrary date six weeks ago and in retrospective I had already 80% of the material at that time. I’ll be better next time: #time-boxing upfront.

Coursera: project management

Written by  on August 9, 2022

I’ve finished the “Foundations of Project Management” on the weekend. This is the first milestone out of six for the “Google Project Management: Professional Certificate”.

This was my first Coursera-online learning-experience and I liked it. A quite refreshing mix out of videos, quizzes and reading which kept me on track. Even finished some days earlier than anticipated by the regular four week-schedule ๐Ÿ˜…

I’ll definitely continue because my day-to-day business requires a lot of management .. and even with some hands-on experience, there is always the opportunity to improve.

https://coursera.org/share/4b5cd2634a13fd353e76f801ed06d252