Sign in

Bernd Wachter

@bernd.wachter.fi
30 followers 55 following 313 posts

Random ramblings, and writing about my toy projects - Emacs stuff, RFID, remote control, LLM, in any combination. Interested in some of what I'm playing with? I may be available for contracting through my company (bsky.app/profile/aardsoft.fi)

PostsRepliesMedia
Bernd Wachter @bernd.wachter.fi · 24/09/2026
I'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.
Two terminals next to each other, one showing .git directory in emacs, second one a claude code session describing how it got there: 


● Bash(S="tmux -S /tmp/mxsock"; $S capture-pane -t mx -p | sed -n '6p' | cut -c58; $S send-keys -t mx
      Enter; sleep 0.7; $S capture-pane -t mx -p | grep -v '^$')
  ⎿  t
     File Edit Options Buffers Tools Operate Mark Regexp Immediate Subdir Help
       /home/bwachter/git/emacs/emacs-instrumentation/.git: (128 GiB available)
     … +11 lines (ctrl+o to expand)
  ⎿  Allowed by auto mode classifier

● I moved down one line with C-n, then used C-e C-b to land on the last character of .git. Before pressing
  Enter I checked the screen, and the character under the cursor was the t. Enter opened .git in a new
  dired buffer, which lists HEAD, config, description, hooks, info, objects and refs.

  What next?
100
Bernd Wachter @bernd.wachter.fi · 23/09/2026
Shim 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/2026
I'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:
An emacs buffer showing various news feeds.
110
Bernd Wachter @bernd.wachter.fi · 20/09/2026
So 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/2026
Here'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/2026
This turned out to be way more interesting problem than originally anticipated.
100
Bernd Wachter @bernd.wachter.fi · 19/09/2026
They told me jev doesn't chat, which triggered my "hold my beer" reflex.
Org-mode table showing jev interaction, question was "what's 3*6", answer is "it si 18.". rest is metadata/distribution tables:

* what's 3*6?
:PROPERTIES:
:MODE: alphabet
:STYLE: a complete sentence ending with punctuation
:ROUNDS: 10
:TOTAL_IN: 6879
:TOTAL_OUT: 3100
:END:

** Answer

it si 18.
** Rounds
| req | stage | choice  |     p | conf |  in | out | cum in | cum out |
|-----+-------+---------+-------+------+-----+-----+--------+---------|
|   1 | d     | i       | 0.370 | 0.34 | 683 | 310 |    683 |     310 |
|   2 | d     | t       | 0.550 | 0.53 | 685 | 310 |   1368 |     620 |
|   3 | d     | (space) | 0.490 | 0.47 | 685 | 310 |   2053 |     930 |
|   4 | d     | s       | 0.600 | 0.58 | 686 | 310 |   2739 |    1240 |
|   5 | d     | i       | 0.410 | 0.38 | 687 | 310 |   3426 |    1550 |
|   6 | d     | (space) | 0.380 | 0.36 | 687 | 310 |   4113 |    1860 |
|   7 | d     | 1       | 0.930 | 0.91 | 688 | 310 |   4801 |    2170 |
|   8 | d     | 8       | 0.860 | 0.85 | 691 | 310 |   5492 |    2480 |
|   9 | d     | .       | 0.670 | 0.65 | 693 | 310 |   6185 |    2790 |
|  10 | d     | END     | 0.950 | 0.94 | 694 | 310 |   6879 |    3100 |

# END (p 0.950) · answer: it si 18. · tokens in 6879 / out 3100
000
Bernd Wachter @bernd.wachter.fi · 15/09/2026
And that'd be Anthropics Sonnet 4.6. Extremely fast, but costs $2.71, and is not very impressive, so unless @anthropic.com is in the business of sponsoring tokens for weird stuff I'll stick to other models.
Vaguely animal shaped brown blob on green
100
Bernd Wachter @bernd.wachter.fi · 15/09/2026
To compensate for each step reinterpreting the latent from scratch we now allow it to pass some composition notes, which makes the composition quite a bit tighter. Also, glm-5.3-flash seems to be quite a bit better at this than the previously used kimi-k2.6.
AI generated simple flowerAI generated cat like thing
010
Bernd Wachter @bernd.wachter.fi · 14/09/2026
Your stable diffusion toolchain delivers too good results in too little time? I can help. unhinged diffusion provides the harness needed to make any vision enabled, tool using LLM cosplay as stable diffusion in a canvas enabled Emacs.
A weirdly shaped cat thing, LLM generated
100
Bernd Wachter @bernd.wachter.fi · 12/09/2026
I guess being referred to as "beautifully unhinged" by google AI when using it to research something for an idea I've been working on for a few days is a compliment?
100
Bernd Wachter @bernd.wachter.fi · 02/09/2026
In case somebody here is using opensuse tumbleweed or microos, and wants a quick go at emacs with canvas, but still would like the stable one - I've packaged emacs 31 with canvas patch added: build.opensuse.org/package/show... Also contains Fedora 43 packages for Arm (targetting asahi)
build.opensuse.org
100
Bernd Wachter @bernd.wachter.fi · 28/08/2026
I've been working a bit on thinking (and implementing) how to teach machine learning to kids. Some input would be very useful, so in this thread I'll first explain what my goals are, what I'm working on, and then what I could use input on.
120
Bernd Wachter @bernd.wachter.fi · 10/07/2026
Was just hot air soldering a SMD resistor, and had a mosquito decide to fly through the narrow gap between my PCB and the hot air nozzle, directly into the air stream. While I admire its flying skills that wasn't a good life choice on its part.
010
Bernd Wachter @bernd.wachter.fi · 16/05/2026
This is a screenshot of a pcap capture getting started inside of emacs, with life capture in the larger buffer. That's made possibly with a debug/analysis framework called lempo where I just made a pre-release available. I've been developing that as helper for something else - and then realized
Screenshot of emacs, showing:

- a scratch buffer containing (let ((lempo (lempo-get "pcap-bridge-670")))
  (lempo-set-filter lempo "icmp")
  (lempo-set-device lempo "en0")
  (lempo-start-capture lempo))
- a lempo bridge overview buffer containing

======================

Bridge: bridge-default-3854
  Protocol Type:  pcap-bridge
  Device UID:     pcap-bridge-670
  Device TTY:     nil
  Virtual TTY:    nil
  Status:         running
  TX Bytes:       0
  RX Bytes:       0


Press 'q' to close this buffer

and a large buffer showing pretty printed and partially decoded pcap captured ICMP packages
100
Bernd Wachter @bernd.wachter.fi · 10/05/2026
I'm getting really tired of all the "apps" which are actually just websites on steroids, where the developers then either don't bother or just are too incompetent to store local long term auth tokens.
100
Bernd Wachter @bernd.wachter.fi · 09/05/2026
The jackdaws started hatching. You can follow the whole thing over at www.youtube.com/@jackdaw-cam...
Jackdaws in the process of hatching.
000
Bernd Wachter @bernd.wachter.fi · 01/05/2026
I have jackdaws in my chimney this year as well - and this time I didn't miss the beginnings. They've been walking around the garden, examining suitable materials for weeks now, and only few days ago lied their eggs. They're still fine tuning the nest, containing 5 eggs now.
200
Bernd Wachter @bernd.wachter.fi · 23/04/2026
Got a bit annoyed about having to use js/ts for writing browser extensions. Then had a thought that it should be possible to write a simple lisp in ts, and expose symbols both ways - so once I'm done with that I don't have to touch much ts. Then noticed I'd want the ability to eval in browser. So...
Browser screenshot, showing an extension button with popup, text in there:

;; Type Lisp Here
(+2 2)

The status line shows the evaluation result 4.
300
Bernd Wachter @bernd.wachter.fi · 09/04/2026
I was playing a bit with changes to LLM agents in Emacs and various local models, with all my tools enabled. I've asked qwen3-coder to give me an overview of the project it was started from - and it decided the best use of the available tools was to just write an email.
Screenshot of a new mail in Gnus with the text "What is the current project directory and its status in Emacs?"
000
Bernd Wachter @bernd.wachter.fi · 23/01/2026
Thanks to my smtpd for CI use I now can run print jobs on Github runners for my old email backend for CUPS - which also finally should take care of the Ubuntu problems popping up occasionally which were annoying to handle due to lack of Ubuntu systems. github.com/aardsoft/cup...
github.com
Release Release 0.2 · aardsoft/cups-email
Already 6 years ago this code has undergone a major rewrite - which probably is what everybody using this thing is already using. Thanks to my new smtp daemon designed for use in CI¹ we now also ca...
000
Bernd Wachter @bernd.wachter.fi · 22/01/2026
Seems nobody properly solved "I want SMTP in CI or testing, but not a real one, because I want to directly grab the email to see if everything worked, and I just want it simple and run inside of the job" (or at least I didn't find it). If you have the same problem: github.com/aardsoft/deb...
001
Bernd Wachter @bernd.wachter.fi · 31/12/2025
I'm completely done with companies funneling contact requests through some shitty contact portal (most likely also going "you can talk to an AI agent first!"). I have a printer, envelopes, and all my old LaTeX letter templates. If you make it easier for me to send you a letter than electronic mail:
100
Bernd Wachter @bernd.wachter.fi · 30/12/2025
Very quick and dirty proof of concept of a flow graph used as network diagram in Emacs. I was recently thinking that doing text based flow graphs with nice exporters natively in Emacs shouldn't be that hard - and indeed the layouting is the most painful part here (and quite broken, as you can see).
A screenshot of Emacs showing a simple network graph
110
Bernd Wachter @bernd.wachter.fi · 11/12/2025
When my "NFC analysis in Emacs" project gained NFC reader support as side quest I discovered that TID writable UHF tags exist - which added another side quest. The reader I ordered has some (bad) Windows software only, no other documentation. But there's a JRE in there - maybe the .exe is just java?
100
Bernd Wachter @bernd.wachter.fi · 09/12/2025
A while ago I wrote PeakTech about protocol documentation for the 6070 PSU - never got a reply. But seems they heard it - when I looked for the Windows software to reverse the protocol spotted new protocol documentation. So, here's the Emacs integration: github.com/bwachter/pea...
Screenshot of Emacs connected to a Peaktach P6070 PSU
110
Bernd Wachter @bernd.wachter.fi · 06/11/2025
Not being able to figure out why some slot related queries return strange errors has been bugging me for the last few days. Turns out, if you just spend the effort to make a nice protocol logger you'll spot the off by one error (my sense type structure didn't have the no value) within seconds.
Emacs screenshot, three buffers visible. Left, elisp with protocol constants for the chameleon ultra. Right a connection to a chameleon ultra, bottom protocol debugging.
110
Bernd Wachter @bernd.wachter.fi · 02/11/2025
Slowly getting to the point where this thing is more useful than the official cu GUI (apart from encrypted tags, but that shouldn't be too hard) - already had pulling from a slot into nfc-mode working, now I have reader registration, and can directly write to any slot from a NFC file.
Emacs screenshot with connection to chameleon ultra, Slot 5 shown as emptyEmacs screenshot with nfc mode open, and reader selection displayed, showing the chameleon ultra as 9 readers (physical reader + 8 slots)Another screenshot of emacs with the chameleon ultra reader interface, now showing slot 5 populated
010
Bernd Wachter @bernd.wachter.fi · 02/11/2025
Left one read by chameleon ultra (native elisp protocol implementation), right one by libnfc (communication to emacs via small c++ shim). Seems apart from swapped bytes for ATQA I got it right.
Emacs screenshots showing two NFC dumps side by side.
010
Bernd Wachter @bernd.wachter.fi · 28/10/2025
Small demo - from within emacs, with a libnfc supported reader: search for tags, read one ntag, mark it for comparison, read a second ntag, mark it, arrange the marked windows, and toggle through the different diff visualisation modes (non-matching, matching, blocks, bytes)
000
Bernd Wachter @bernd.wachter.fi · 28/10/2025
As currently I just care about tag contents of mostly fully unencrypted tags the CU (even though the implementation works surprisingly well) was a bit overkill. So I decided to see if I can make use of the cheap libnfc supported readers I have here - which seems to work reasonably well.
Screenshot of emacs, showing a buffer with a libnfc based tag reader, and a second buffer with a read tag
000
Bernd Wachter @bernd.wachter.fi · 28/10/2025
I guess Outlook is calling for a revolution with that new icon design? Socialist fist image for comparison.
Outlook icon looking like a stylized fistSocialist fist image for comparison
000
Bernd Wachter @bernd.wachter.fi · 26/10/2025
I mostly prefer the proxmark3 over Flipper zero/Chameleon Ultra due to its maturity - but the pm3 approach to its serial protocol makes 3rd party clients a bit of a mess. CU did it better from the beginning - so a basic Emacs client is trivial. Goal is to hook it into the analysis mode later on.
An Emacs screenshot showing the status of a connected Chameleon Ultra
100
Bernd Wachter @bernd.wachter.fi · 26/10/2025
The insecure hotel key mess annoyed me enough to start building a (still very broken) emacs mode to help with working on NFC dumps.
Screenshot of Emacs showing 4 parsed NFC dumps with differences highlighted
010
Bernd Wachter @bernd.wachter.fi · 11/10/2025
Some random product developer: "Hey, the manufacturer recommends those NFC tags for locking systems" (Two locks in on this trip, two absolutely botched implementations)
Screenshot, listing Applications as "Industrial: Inventory and Supply Chain Management, Smart Label"
000
Bernd Wachter @bernd.wachter.fi · 09/10/2025
Vingcard Classic RFID doesn't even use the abysmal copy protection you can get from ultralight. Wondering if that's due to them being an upgrade to the mag stripe readers, or if the standalone ones are just as bad. The 2018 paper points to at least some lack of forethought.
101
Bernd Wachter @bernd.wachter.fi · 17/08/2025
I have a hunch something might be wrong with this Arduino Every. To its credit, it did keep printing debug logs on serial until it reached roughly 170 degrees, and after letting it cool for a bit did so again. So I guess I just stick a heatsink on and see which pins are still working?
Thermal image showing the AVR on an Arduino Every reaching 193 degrees Celcius.
000
Bernd Wachter @bernd.wachter.fi · 14/08/2025
UPS being useless, as usual - I'd argue those three lines are mutually exclusive (and no, I don't have the parcel)
Screenshot from UPS tracking:

Delivered on Tuesday, August 12 at 11:39 at Office
There is a delivery change in progress to deliver the package to the original receiver's address
A valid government-issued photo ID will be required to collect the parcel
000
Bernd Wachter @bernd.wachter.fi · 10/08/2025
The fastest Utah teapot (at least on water)
000
Bernd Wachter @bernd.wachter.fi · 21/07/2025
Liebe DKB, wieviel Lack habt ihr gesoffen?
Screenshot einer Mail:

damit wir dir auch künftig wichtige Informationen und neue Karten sicher zustellen können, müssen deine aktuellen Kontaktdaten bei   
uns hinterlegt sein.    
 
Bitte nimm dir kurz Zeit und frage unseren KI Support nach deiner Adresse und Kontaktdaten.    
 
 *    Du findest den KI Support in der DKB-App und im Web-Banking auf dkb.de. Gehe dazu auf     
  Hilfe.     
 
    
So prüfst du deine Adresse   
 
1. Rufe den KI Support auf     
 Du findest ihn in der DKB-App im Profil oder im    
 Web-Banking unter Hilfe.     
2. Frage den KI Support nach deinen Daten     
 Gib deine Frage ein: „Was sind meine hinterlegten Kontaktdaten?“     
3. Überprüfe deine Daten     
 Wenn deine Daten nicht korrekt sind, aktualisiere sie bitte. Wie? Der KI Support hilft dir    
 weiter.
010
Bernd Wachter @bernd.wachter.fi · 22/05/2025
If you ever wondered if ChatGPT or other LLMs can install Arch Linux it's your lucky day. The answer is "yes, with some handholding", and you too can try that in your Emacs: github.com/aard-fi/arch...
github.com
GitHub - aard-fi/arch-installer
Contribute to aard-fi/arch-installer development by creating an account on GitHub.
100
Bernd Wachter @bernd.wachter.fi · 21/05/2025
Seems the only thing that's stopping me from having ChatGPT install Arch Linux is the token limit in the low tier my account is in: www.youtube.com/watch?v=bELv...
youtube.com
Can ChatGPT install Arch Linux?
YouTube video by Bernd Wachter
000
Bernd Wachter @bernd.wachter.fi · 17/05/2025
This is GPT via tools trying to control turtle graphics in an Emacs buffer to draw requested shapes. As the first attempt worked better than expected it can now go diagonally as well, plus it no longer hits buffer margins - it'll just resize in that case. Code is here: github.com/aard-fi/buff...
010
Bernd Wachter @bernd.wachter.fi · 08/03/2025
The phrasing implies @backblaze.bsky.social discovered my email in a data leak dump. Given that there's a unique email address used for that account either @backblaze.bsky.social just had a data leak, or they should come up with a better text.
As a service to our customers, we utilize a number of security monitoring tools for all Backblaze accounts. One of these tools  monitors the Internet to see if your email address has been part of a data leak from another company.         
             
We have detected that your credentials may not be secure and, for your protection, we have temporarily blocked access to your   account in order to prevent any unauthorized use.
220
Bernd Wachter @bernd.wachter.fi · 18/12/2024
The successor of carrot in a box?
000
Bernd Wachter @bernd.wachter.fi · 17/11/2024
000
Bernd Wachter @bernd.wachter.fi · 17/11/2024
Somewhat interesting llama3 hallucinations.
100
Bernd Wachter @bernd.wachter.fi · 29/10/2023
Why exactly do I need to manually adjust time for DST end on my AEG oven? Reasonably sure it's a Linux, should have proper zone info. Also, why do I need to manually adjust time at all? This thing sends NTP requests on startup, even to the DHCP option - but still queries me to set time for the UI.
Software licenses displayed on my oven, showing that they use dbus, pointing to it being Linux.
010
Bernd Wachter @bernd.wachter.fi · 26/10/2023
seems scrolling up to see what I can is one of the features still missing
030