Bernd Wachter @bernd.wachter.fi · 02/10/2026Somewhat amusingly I've just seen this post in me feed and went "wait, that reminds me of the phantom of Heilbronn", before clicking on it to see the rest of the thread. 0130
Bernd Wachter @bernd.wachter.fi · 29/09/2026Gab da dieses Video vom Kinburn Spit im Juli. Das waren noch zwei getrennte Systeme. 220
Bernd Wachter @bernd.wachter.fi · 24/09/2026Also, for some of us IT guys "if you can explain the science you're doing in a way that I get interested I'll check your code while you make food" is a viable option. 010
Bernd Wachter @bernd.wachter.fi · 24/09/2026On the plus side, I'll expect (science) fails way more interesting than "Excel autoconverted the data we typed in" over the next few years. 110
Bernd Wachter @bernd.wachter.fi · 24/09/2026kids - so the tricky bit was coming up with things simple enough that kids can train it themselves, and then later on follow at least parts of the math. At that simple level you could just work with lookup tables, and fake the training and inference - which is exactly what it wrote, because easier. 110
Bernd Wachter @bernd.wachter.fi · 24/09/2026Caveat there: try to follow along (or have another LLM explain it, at least). If what you're asking can be simulated in an easier way the LLM may just write that for you, which you wouldn't notice until you plug in other data. I recently did a few simple tools for explaining machine learning to 110
Bernd Wachter @bernd.wachter.fi · 24/09/2026Pointing another session at the document indeed makes it set up a tmux session, tells me how to attach to it so I can watch, and can navigate in there. The instruction for the screenshot was "place cursor on the t of .git, and press RET" 000
Bernd Wachter @bernd.wachter.fi · 24/09/2026I've been trying to guide LLMs into interactive Emacs usage for a while, but so far they always refused. Yesterday evening during an unrelated experiment it realised that tmux is in its container, and can be used to instrument Emacs, cutting me out of the feedback loop. Asked it to document it. 100
Bernd Wachter @bernd.wachter.fi · 23/09/2026Shim around freerdp to render to an emacs canvas, with matching bindings on the lisp side. Not very useful yet, but as you can see on the blinking terminal cursor, it is live. 020
Bernd Wachter @bernd.wachter.fi · 22/09/2026fingerprinting or proof of work challenges for guarding content access are dead. I ran into that with some of my sources not offering a nice feed - and turns out, a modern LLM when asked about that problem will go "can I have a headless chrome to figure out what the site is looking for so I can 100
Bernd Wachter @bernd.wachter.fi · 22/09/2026Already back then I was avoiding dependencies on Google, so that never touched me. How I was consuming feeds changed a bit over the years, though - with elfeed at least taking care of blogs for ages, and that now properly solves ephemeral feeds for me as well. Side comment, I guess browser 100
Bernd Wachter @bernd.wachter.fi · 22/09/2026I still discover interesting bits via /. now and then, so it does deserve its place in the news mix. I guess The Register, /. and heise are the only 90s news sources still useful for me. 110
Bernd Wachter @bernd.wachter.fi · 22/09/2026everything in the feed, and keeps no state apart from me explicitly marking a headline as "seen that, don't show that again". Fully async - but a full refresh is done in 1-3 seconds anyway, so that's mostly a "good to have when travelling". 100
Bernd Wachter @bernd.wachter.fi · 22/09/2026Seems feeds nowadays are also reasonably well formed - last time I was doing manual feed parsing in perl about 20 years ago more than 50% of the feeds needed special handling as they contained bad data. This thing now just pulls headlines from atom or rss, displays up to 12, allows showing 100
Bernd Wachter @bernd.wachter.fi · 22/09/2026I've been using someone else's page for my daily feeds for more than two decades now, but recently had a need to add more custom stuff. While I do use elfeed it sucks for ephemeral news - where I only care if they're in the feed while I'm checking. So here's my easy to consume feed in emacs: 110
Bernd Wachter @bernd.wachter.fi · 21/09/2026It's incredibly frustrating how many people go "But China..." when discussing green energy. First, CO2 in China is in big parts technically ours, and second, how hard did they have to ignore any news about newer energy sources in China over the last few years? 051
Bernd Wachter @bernd.wachter.fi · 21/09/2026it via a socket myself, and safe me some pain". So classic case of putting too much focus on specific technology over architecture. 010
Bernd Wachter @bernd.wachter.fi · 21/09/2026suitable for inference than my Linux box), so no observations about Rust reloading. I was looking at the problem coming from QtRemoteObjects, trying to solve it similarly in Rust, just for "having it linked in", when I should've focused on "that goes via socket, so I can just skip one bit, throw 110
Bernd Wachter @bernd.wachter.fi · 21/09/2026Thanks, that has the potential to save me some time if I try the .so path for rust again. I've abandoned rust loaded natively together with introducing the reload shim - seemed sensible to to try that with the smaller sd.cpp/llama.cpp surface first, plus currently developing on MacOS (hardware more 110
Bernd Wachter @bernd.wachter.fi · 20/09/2026approach - further testing will show if it makes sense to stick with that, or go for a hybrid approach. 110
Bernd Wachter @bernd.wachter.fi · 20/09/2026rust bit I was originally playing with a segment loaded via the .so, and using remote objects to where the actual work happens to emulate in-process behavior while protecting Emacs from crashes and memory ballooning. So far it looks more practical to have a simpler "daemon to talk to via sockets" 100
Bernd Wachter @bernd.wachter.fi · 20/09/2026detour - Emacs can't unload .so extensions, I want to develop in my main instance without restarting all the time, and obviously that changes a lot. So now I have a shim loaded into Emacs that hopefully doesn't change, and handles loading and unloading of the bits where the magic happens. For the 100
Bernd Wachter @bernd.wachter.fi · 20/09/2026probably fine - very good performance, decent model support, so we can do a lot of things with minimal effort. For testing new stuff or more obscure models that's not sufficient, though. So the next addition would be a rust bit exposing a bunch of candle methods as elisp. Adding that lead to a 100
Bernd Wachter @bernd.wachter.fi · 20/09/2026So what I was doing there was trying to have a way to do inference from Emacs, with multiple backends. I've started with llama.cpp, and initially added sd.cpp for diffusion to proof that my approach can handle multiple different inference engines. For a lot of things sd.cpp and llama.cpp are 100
Bernd Wachter @bernd.wachter.fi · 20/09/2026relative expensive subscription model, which again would cause a massive systems collapse due to the interesting financing. 010
Bernd Wachter @bernd.wachter.fi · 20/09/2026can come "fast enough" from system RAM or even NVME. Last few months we've seen open weight models that can run locally on something like a mac mini or mac studio get way better, require less RAM, and become faster - and suitable for the majority of a developers tasks. That's endangering their 110
Bernd Wachter @bernd.wachter.fi · 20/09/2026financing model would collapse, leading to a wider collapse. But the chinese researchers are cut off from memory and various accelerators - and therefore are going for resource utilization. One focus on their latest models was memory tiering, where only a partial model is loaded, and remaining bits 110
Bernd Wachter @bernd.wachter.fi · 20/09/2026You see first bits of their lobbying in the EU AI act - basically, they're trying to use regulatory capture to get open weight models out of the market, at least for commercial purposes. The US giants don't really care too much about resource usage - and probably can't, as then parts of their 120
Bernd Wachter @bernd.wachter.fi · 20/09/2026Here's a screenshot of a working prototype for a comfyui style node workflow for stable diffusion implemented via org headings and properties, with the diffusion happening in sd.cpp in a separate process, but controlled via emacs. 022
Bernd Wachter @bernd.wachter.fi · 19/09/2026And that indeed solved the problem, and let's the text part focus on the better text generator: 001
Bernd Wachter @bernd.wachter.fi · 19/09/2026I'm guessing that by offering number ranges for it to judge, and then pretty much doing binary search we should be able to reliable get to the correct number pretty fast - so that'll be the next experiment. 100
Bernd Wachter @bernd.wachter.fi · 19/09/2026Here's one run with all of that fixed. Which now leads to the next problem: If the result is <= 18 it seems to be able to do math just fine, with bigger numbers goes off the rails. But on checking it'll know the result is wrong. So for generic math another approach is needed. 100
Bernd Wachter @bernd.wachter.fi · 19/09/2026we should listen to the word judge, and where we should trust the generated result. 100
Bernd Wachter @bernd.wachter.fi · 19/09/2026That allows us to kick the fancy sentence generation into math generation mode for those questions. But our "does this word/char fit" judge ends up sabotaging it: Model goes 1 8, judge goes "naah, next to 1 the 8 doesn't look good". And we end up with 19. So now we need to add a check where 100
Bernd Wachter @bernd.wachter.fi · 19/09/2026flags the result as incorrect in the end - but re-try will just generate 9 again. So we now clearly need different strategies depending on what we want to be generated - which again is where it shines. So before we do anything we give it a bunch of options what type of content it thinks is wanted. 100
Bernd Wachter @bernd.wachter.fi · 19/09/2026Initially that lead to the model just not attempting individual characters/numbers at all anymore (even though it had the option, but confidence in partial words was too high). Highest number available was 9, so the answer always became 9. Alphabet mode still does math correctly, and a judge 100
Bernd Wachter @bernd.wachter.fi · 19/09/2026judging the sentence so far including backtracking, and adding in mechanisms to pretty much feed in complete dictionaries by letting it judge letter groups the next word should start with. While that improves text output a lot it ends up breaking some other stuff, like, the math bits. 100
Bernd Wachter @bernd.wachter.fi · 19/09/2026So we can let it generate 5 words, and then go "any of those really fits in the sentence at this position?". That got us from gibberish with some English words to almost sane sentences (well, at least the first few words). So we can improve on that by adding in wort type classification, allow 100
Bernd Wachter @bernd.wachter.fi · 19/09/2026fallback to char level generation (I can give it at most 255 candidates for judging). That indeed does produce better results, and we can improve it a lot by adding judges in again: it doesn't have high confidence when it is forced to generate stuff, but it has very high confidence when judging it. 100
Bernd Wachter @bernd.wachter.fi · 19/09/2026Now for more open ended question this breaks down (again, pretty much expected). It'll still try to get a sentence structure out, but might do stuff like "a aaa aa aaaaa a aaaaaaa". We can work around that in several ways. Simple approach would be to have ~250 common words as dict, and allow 100
Bernd Wachter @bernd.wachter.fi · 19/09/2026First a short explanation what I'm doing there: yev just judges probabilities. So for the above screenshot it just judged the probability of the next character (it has a-z and 0-9 as inputs) - and got the math right that way, but messed up with the "is". Everything pretty much expected so far. 100
Bernd Wachter @bernd.wachter.fi · 19/09/2026This turned out to be way more interesting problem than originally anticipated. 100
Bernd Wachter @bernd.wachter.fi · 19/09/2026They told me jev doesn't chat, which triggered my "hold my beer" reflex. 000
Bernd Wachter @bernd.wachter.fi · 18/09/2026we'd want both checks. Personally I'd probably more sort it into a massive evolution of developer support tools than an evolution of the core toolchain. 010
Bernd Wachter @bernd.wachter.fi · 18/09/2026compilers are deterministic, AI is not. So the next question would be if we can move the point where we check if something is deterministic - like, to APIs. And checking that something is there and behaves a specific way is trivial - harder would be checking for something _not_ being there. And 110
Bernd Wachter @bernd.wachter.fi · 18/09/2026code generated to check it". But that was an argument against high level languages as well back then. We still need _some_ people understanding that, but way less than some thought back then. So potentially similar path here (reference to the junior training argument). Counterargument would be - 110
Bernd Wachter @bernd.wachter.fi · 18/09/2026This is hard to answer in a text without making an utter mess, as this branches into way too many different directions in my brain. So an attempt: I don't have a clear opinion on that, but can understand the arguments. One argument against would be "well, we still need to be able to understand the 110
Bernd Wachter @bernd.wachter.fi · 18/09/2026computers, and declare the problem solved. And then realized that there are already multiple products like that being sold. 010
Bernd Wachter @bernd.wachter.fi · 18/09/2026current developers credentials - goes for privilege escalation to access that? I don't think HR or legal are prepared to deal with that currently. Last time I was discussing that I wanted to make a joke that next year we'll have "Norton MCP firewall", which corporate IT will preinstall on all 110