LeoDJ

Programmer, Tinkerer, Nerd | likes everything from hardware over firmware up to software | active at @cfhn

LeoDJ boosted:
hagen terschürenhagen
2025-06-18

it all started going downhill after we let companies decide to replace »:D« with »😃« without asking. the first domino that fell in the long line of the computer actually understands what we want to do but refuses to because it knows better what we actually want, even if we explicitly tell it that it doesn’t.

LeoDJ boosted:
2025-06-17

I need a shirt that says "be gentle with me I had to take a phone call today"

LeoDJ boosted:
Cato, registered LynxⓁ 📞 2286cato@chaosfurs.social
2025-06-17

Made a little poster for it :D

#GPN23

Poster advertising the event from the previous toot.
LeoDJ boosted:
2025-06-17

TIL that when you reply to a followers-only post on mastodon, the reply will only be visible to the intersection of the original tooter’s followers and the replying tooter’s followers, and to any mentioned tooters. This means the circle of people who can see such a reply is rather small and totally non-obvious to anyone in the thread. IMHO weird UX, though I don’t really have a better idea either.

2025-06-16

@janamarie
SMD parts bin / rows of DIP switches

LeoDJ boosted:
2025-06-15

I made a Blobulator. It's a blob! It's got some LEDs and a speaker, and a selector dial on top, and the dial feels nice and chonky-clicky and it makes the lights go and the sound go, and ... well RGB LEDs are hard to film without overexposing individual colors, and tactile experience is impossible to film*, but here’s a video of sorta what it looks like. Anyone in or visiting the San Francisco Bay Area who wants to see it in person, let me know, and we can figure it out..

youtube.com/watch?v=V6g8dYW9Gk

* the “Knobfeel" youtube channel does a really good job with this.

LeoDJ boosted:
2025-06-15

Wir hatten ja auf dem Congress schon abgefahrene Kunstinstallationen. Doch das hier ist echt der Hammer, was ich da heute im #Sprengel Museum in #Hannover sehen durfte. 😅

Die greifen die Daten der Bewegungssensoren einer echten Boje auf dem Meer ab und bilden das über die im Raum hängende Boje ab. 😅

Der Künstler heißt Julius von Bismarck.
Die Kunstinstallation wurde dieses Jahr im Sprengel Museum installiert.

LeoDJ boosted:
2025-06-15

Deutsches Netflix, zehnteilige dramatische Serie über die behind-the-scenes-struggles zwischen dem Baecker- und Metzgergewerbe, weil die jeweils in Teilen Waren der anderen Zunft verkaufen wollten, mit Untergrundschlägerbanden auf beiden Seiten, fiesen Intrigen und am Ende ein Flash-Forward viele _viele_ Jahrzehnte später in einen Globus-Markt:

„DIE LEBERKÄS SAGA“

LeoDJ boosted:
2025-06-15

"Das riecht nich nach FR4, das riecht nach Chip, da is nich nur die Leiterbahn kaputt"

Olfaktorische Fehleranalyse mit @LeoDJ

#mseleaks #cfhnleaks

LeoDJ boosted:

this is how it looks fully connected with the TB6600 stepper motor driver. They are probably not the best ones around, but they are fairly sturdy, available and not expensive. With USB-PD you can drive motors at up to 20V and 4A, the board itself can be powered with up 40V via the DC terminal

There are also some status LEDs for debugging, although I need to update the resistor values, they are a bit dark.. :neocat_googly_woozy:

Next up: writing some actual firmware or port @simenzhor's OpenMacroRail. Oh and I need to push this onto GitHub

A top down photo of the whole project with a USB cable plugged in. The pcb is plugged into a black box that says Microstep Driver. A stepper motor is plugged into the pcb to the leftCloseup of two LEDs, one says OK the other ACT. The ACT led lights up BlueCloseup of the other side of the project, of a row of LEDs that are lit up
LeoDJ boosted:
2025-06-13

@shortridge While working tech support, I got a call on a Monday. Some VPNs which had been working on Friday were no longer working. After a little digging, we found the negotiation was failing due to a certificate validation failure.

The certificate validation was failing because the system couldn’t check the certificate revocation list (CRL).

The system couldn’t check the CRL because it was too big. The software doing the validation only allocated 512kB to store the CRL, and it was bigger than that. This is from a private certificate authority, though, and 512kB is a *LOT* of revoked certificates. Shouldn’t be possible for this environment to hit within a human lifespan.

Turns out the CRL was nearly a megabyte! What gives? We check the certificate authority, and it’s revoking and reissuing every single certificate it has signed once per second.

The revocations say all the certificates (including the certificate authority’s) are expired. We check the expiration date of the certificate authority, and it’s set to some time in 1910. What? It was around here I started to suspect what had happened.

The certificate authority isn’t valid before some time in 2037. It was waking up every second, seeing the current date was after the expiration date and reissuing everything. But time is linear, so it doesn’t make sense to reissue an expired certificate with an earlier not-valid-before date, so it reissued all the certs with the same dates and went to sleep. One second later, it woke up and did the whole process over again. But why the clearly invalid dates on the CA?

The CA operation log was packed with revocations and reissues, but I eventually found the reissues which changed the validity dates of the CA’s certificate. Sure enough, it reissued itself in 2037 and the expiration date was set to 2037 plus ten years, which fell victim to the 2038 limitation. But it’s not 2037, so why did the system think it was?

The OS running the CA was set to sync with NTP every 120 seconds, and it used a really bad NTP client which blindly set the time to whatever the NTP server gave it. No sanity checking, no drifting. Just get the time, set the time. OS logs showed most of the time, the clock adjustment was a fraction of a second. Then some time on Saturday, there was an adjustment of tens of thousands of seconds forward. The next adjustment was hundreds of thousands of seconds forward. Tens of millions of seconds forward. Eventually it hit billions of seconds backwards, taking the system clock back to 1904 or so. The NTP server was racing forward through the 32-bit timestamp space.

At some point, the NTP server handed out a date in 2037 which was after the CA’s expiration. It reissued itself as I described above, and a date math bug resulted in a cert which expired before it was valid. So now we have an explanation for the CRL being so huge. On to the NTP server!

Turns out they had an NTP “appliance” with a radio clock (i.e, a CDMA radio, GPS receiver, etc.). Whoever built it had done so in a really questionable way. It seems it had a faulty internal clock which was very fast. If it lost upstream time for a while, then reacquired it after the internal clock had accumulated a whole extra second, the server didn’t let itself step backwards or extend the duration of a second. The math it used to correct its internal clock somehow resulted in dramatically shortening the duration of a second until it wrapped in 2038 and eventually ended up at the correct time.

Ultimately found three issues:
• An OS with an overly-simplistic NTP client
• A certificate authority with a bad date math system
• An NTP server with design issues and bad hardware

Edit: The popularity of this story has me thinking about it some more.

The 2038 problem happens because when the first bit of a 32-bit value is 1 and you use it as a signed integer, it’s interpreted as a negative number in 2’s complement representation. But C has no protection from treating the same value as signed in some contexts and unsigned in others. If you start with a signed 32-bit integer with the value -1, it is represented in memory as 0xFFFFFFFF. If you then use it as an unsigned integer, it becomes the value 4,294,967,296.

I bet the NTP box subtracted the internal clock’s seconds from the radio clock’s seconds as signed integers (getting -1 seconds), then treated it as an unsigned integer when figuring out how to adjust the tick rate. It suddenly thought the clock was four billion seconds behind, so it really has to sprint forward to catch up!

In my experience, the most baffling behavior is almost always caused by very small mistakes. This small mistake would explain the behavior.

LeoDJ boosted:
2025-06-13

First time using timer-triggered chained DMAs, where one DMA channel writes into the descriptors of another DMA channel to change what the other DMA is doing. This is just a 8x9 matrix array in a 6x12 configuration on a ch32v003, with #ch32fun github.com/cnlohr/cnhardware/b

LeoDJ boosted:
Vera :bike_verified:vera@sueden.social
2025-06-12

Bisher dürfen Versicherte eine oder einen Psychotherapeuten selbstständig aufsuchen. Eine Überweisung oder ein vorheriger Facharztbesuch sind nicht erforderlich.

Dies soll sich im Rahmen des im Koalitionsvertrags vorgesehenen Primärarztsystems ändern und ist sehr bedenklich: die Hürde, eine Psychotherapeut*in aufzusuchen, ist damit deutlich erhöht.

Auch aus eigener Erfahrung möchte ich darum werben, diese Petition mitzuzeichnen.

epetitionen.bundestag.de/conte

#plsrt #pleaseretoot

LeoDJ boosted:
ADHD Jesseadhdjesse
2025-06-11

The ADHD experience: noticing something, thinking “I should do something about that”, forgetting to do something about it, and then repeating that process for the rest of time.

2025-06-11

@janamarie
I'm still wondering how the colored Sharp MIP LCDs work. Maybe it's the same principle?
They are "reflective" LCDs and have surprisingly good viewing angles and contrast.
(I've seen them used mostly in "outdoor" smart watches or some fancy bike computers, also on my Garmin watch. Sadly I can't see through the matte coating with a microscope)

LeoDJ boosted:

have you ever considered multi-colour STN-Displays? They look fantastic and make for great macro shots!

If I’m not fully mistaken this is a so called CCSTN display that doesn’t use a filter to colour the pixels, but rather an optical effect called birefringence. This display does not dim when a different voltages are applied across its pixels, but change colour! So cool and such weird tones :3

Depending on the camera and light angles used, the colours and contrast fully change

The number 42 written in a pixelated font on an emerald green grid with pink grid lines and deep blue activated pixels. There is a shine to the imageThree rectangles next to each other, one is blue, the other pale green and the third is pink. They rest on a yellow-sand coloured grid with an interesting texture. A pink bar enters the image in the bottom right corner
LeoDJ boosted:
2025-06-09

digging around in my 2K Marin-era (2008-ish) archives and came across this outstanding error message, props to whatever IT(?) person decided to phrase a simple seat license conflict as "Human Combat Required":

windows 98 style message box with titlebar text "Human Combat Required", message text: "The human at "NOVW-SGUTIERREZ" is attempting to use your license. To satisfy honor, you must defeat this human in physical combat! Failing that, you must obtain a new license."
standard windows "OK" button below.
LeoDJ boosted:
Cato, registered LynxⓁ 📞 2286cato@chaosfurs.social
2025-06-09

USB PD? more like you need a USB PhD to understand am i right

LeoDJ boosted:
2025-06-08

Have a voltage regulator with Vfb=0.8 and want to set it up such that it can be switched from Vout=5V to Vout=3.3V by just removing parts? This can be done pretty accurately with just 3 distinct E24 values.

KiCad schematic showing the setup.

Vout = Vfb * (1+Rtop/Rbot)
Vfb = 0.8V

5V output: Top half of the voltage divider is 75k in parallel with 390k (~62.903k total). Bottom half is 2× 24k (12k total) giving an output voltage of 4.994V.

3.3V output: Leaving out the 390k in the top arm and one of the 24k in the bottom arm gives 3.3V exactly.
LeoDJ boosted:
2025-06-08

#RepairoftheDay: 12 Jahre alte Tefal-Dampfbügelstation von meiner Mum tat nichts mehr.
Nach bisschen Diagnose zeigte sich: das Magnetventil war kaputt. Rein zufällig hatte ich tatsächlich ein baugleiches aus einem nicht zu rettenden Gerät vom Repair-Café im Keller gehabt. Eingebaut, geht.

Eine geöffnete Bügelstation, man sieht den Druckkessel, eine Pumpe und ein Magnetventile, die mit Schläuchen und Kabeln verbunden sind

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst