Stavros' Stuff

On programming and other things.

Switch to Jujutsu already: a tutorial

If you don't like Jujutsu, you're wrong

As all developers, I’ve been using git since the dawn of time, since its commands were an inscrutable jumble of ill-fitting incantations, and it has remained this way until today. Needless to say, I just don’t get git. I never got it, even though I’ve read a bunch of stuff on how it represents things internally. I’ve been using it for years knowing what a few commands do, and whenever it gets into a weird state because I fat-fingered something, I have my trusty alias, fuckgit, that deletes the .git directory, clones the repo again into a temp folder, and moves the .git directory from that into my directory, and I’ve managed to eke out a living for my family this way.

Over the past few years, I’ve been seeing people rave about Jujutsu, and I always wanted to try it, but it never seemed worth the trouble, even though I hate how hard git makes some things. I idly read a few tutorials, trying to understand how it works, but in the end I decided it wasn’t for me.

One day I randomly decided to try again, but this time I asked Claude how to do with Jujutsu whatever operation I wanted to do with git. That’s when the mental model of jj clicked for me, and I finally understood everything, including how git works. I never thought a VCS would spark joy in me, but here we are, and I figured maybe I can write something that will make jj click for you as well.

It also doesn’t hurt that Jujutsu is completely interoperable with git (and thus with providers like GitHub), and I can have all the power of Jujutsu locally on my git repos, without anyone knowing I’m not actually using git.

The problem

The problem I had with the other tutorials, without realizing it, was that

Continue reading…

I made a really small LED panel

It's small

I bought a really small 8x8 LED panel a while ago because I have a problem. I just can’t resist a nice WS2812 LED panel, much like I can’t resist an e-ink display. These days I manage to stay sober, but once in a while I’ll see a nice cheap LED panel and fall off the wagon. It has now been thirteen minutes that I have gone without buying LED panels, and this is

Continue reading…

I couldn't wait for a TRMNL device, so I made my own

My obsession with e-ink displays continues

Some time ago, my friend George linked me to TRMNL, a new battery-powered e-ink display with an associated service that generates the images that the display will actually show. It looks really well-made, and I have an irrational attraction to e-ink displays, so naturally I had to pre-order one.

Thei

Continue reading…

Why is everything so scalable?

Everyone is a FAANG engineer

I’m entirely convinced that basically every developer alive today heard the adage “dress for the job you want, not the job you have” and figured that, since they always wear jeans and a t-shirt anyway, they might as well apply it to their systems’ architecture. This explains why the stack of every single company I’ve seen is invariably AWS/GCP with at least thirty microservices (how else will you keep the code tidy?), a distributed datastore

Continue reading…

Making the Strofara

I made yet another silly thing

This is going to be pretty specific to a Greek audience, as it’s all based on a Greek meme video, but I’ll try to explain. Watch the video first so you know what I’m talking about while I describe it:

Two guys are driving on a road near a remote village in Crete, and the guy on the passeng

Continue reading…

Saving SSH passphrases on KDE

I hate technology

I now notice I haven’t written anything in almost a year, which nobody else seems to have noticed, so I guess it’s just as well. I have, though, broken my unintentional hiatus to post something that reminds me why I hate technology so much: All UX is bad.

I’ve been a Linux user for more than a decade now, but the latest Ubuntu update decided to ran

Continue reading…

The UX people

Who are they?

Today, at work, I was debating with other engineers on what the wording of the message should be, when a patient tries to register an already-registered blood test kit. The specifics (or the people) aren’t really important here, but what struck a chord was when someone said “this is up to the UX people”.

We don’t have “UX people”. “UX people” don’t exist.

The UX people

The unspoken assumption here is that

Continue reading…

Spam spammers back

Now with added ChatGPT

I’m writing this post sleepless and with a headache, which I find is the best way to write posts, because it removes all the verbal guardrails, so, be forewarned.

Back in 2016, a year before recorded history, I stole a simple idea: What if I wrote a bot to reply to spammers, pretending to be interested in their wares, and wasting their time? After some creating this, it turned out that it was possible, and Spamnesty was born.

Spamnesty was cleverly disguised as a company, Mnesty, LLC, Asia’s premier maritime logistics company, strategically located in the land-locked Mongolia. Of course, this didn’t tip spammers off that the whole thing was fake, because why would they even care to look at the site? This resulted in untold amounts of entertainment, whiling the small hours of the morning away, reading about the likes of the hapless Abdullah Ishaq, whose attempt of selling LedTrading.com to my bot did not

Continue reading…

Use your Wii Balance Board as a scale (again)

We did it again, internet

If you’ll recall, once upon a time I managed to get my Wii Balance Board to connect to my computer and function as a scale. At some point throughout the years, Linux changed, and that method broke. It would still measure your weight fine, but you could no longer activate the balance board by tapping its front button, you had to flip it over, remove the battery compartment lid and press the red button every time. This was too much of a hassle, so I stopped using the board, hoping that a solution to this problem would arrive one day to liberate me from the scourge of adipose tissue.

This day is today (well, a few months ago, actually, but I couldn’t be arsed writing about it until today, so). I received an email from a reader called Jawaad Mahmood, who had read my balance board article and spent a bit of time figuring out how to get the balance board to work, and packaged his work into a library called bbev.

I was initially sceptical because many people contacted me throughout the years, but nobody managed to get rid of the red button requirement. Talking to Jawaad for a bit, though, he confirmed that he could painlessly get the board to pair with his computer with the front button. Apparently something had changed in the Linux Bluetooth stack, and made pairing possible again, and he managed to figure out how.

This was great news! However,

Continue reading…

Clearing up some misconceptions about passkeys

I love passkeys so much

I am unreasonably excited about passkeys, I’ve long been looking for a better/more convenient way than passwords to do authentication, and I think passkeys are finally it.

However, whenever I see passkeys mentioned (for example on the recent Tailscale post about them), there are always a lot of misconceptions that surface in the debate. I’d like to clear some of them here, and hopefully explain a bit better what passkeys are.

A bit of backstory

Passkeys are a user-friendly name for, and an implementation of WebAuthn, which in turn is part of the FIDO2 project. All that is basically a way to say that passkeys are an open standard, developed by a consortium of companies that want to make authentication more secure and more usable. My personal opinion is that passkeys are a great solution to that problem, and that’s why I’m so excited about them.

At their core, passkeys are just a way for a website to ask your browser for authentication. That’s it, they aren’t tied to a specific piece of hardware or a way for that hardware to work. I’ll expound more on this further on.

I want to lay out some common misconceptions about passkeys that I’ve been seeing, and

Continue reading…