October 13, 2019

Night time

This site now has a dark mode.

Basic, but still.

I opened the local copy after a little while of writing in a dark Sublime window, the whole OS in dark mode and with a daylight-adjustning and thus appropriately dark desktop background image set. The contrast made it clear that it was time to alter the styling at night, however crude the solution might be. So I just followed the basic instructions here, skipping the fancy variable stuff.

Speaking of Sublime, it has its dark mode … deficiencies. I just saved this file for the first time, and the colour scheme went from my painstakinly set calm dark to eye-searing white in an instant. I have no idea why, but I am now seriously threatening Sublime with a switch to Visual studio code.

There we go. How calm and dark and code-looking things are over here in Electron-land.

Okay, that was short-lived. My service for inserting Markdown links with a keyboard shortcut did not work over there. I blame Electron, and curse the brightness of this background colour.

October 06, 2019

Virtual dreams

It is already Sunday again, the dark of the autumn evening is really setting in. It has been a good weekend though, of the very relaxed kind. Perhaps the most relaxed one in a while. With travel and conferences and several other events with deadline-type feelings attached to them out of the way, it becomes a bit easier to relax and to enjoy relaxing.

Vader: immortal, episode two

Episode two of Vader: immortal was released sometime recently, and I got around to playing through it on a quiet Wednesday evening. Ratings were decidedly lower than for the first episode, and having finished it I can see why. It felt slightly shorter than the first episode, but that might well be my imagination. More importantly, it had nothing quite as cool as the first episode to offer. The new mechanics introduced were themselves deeply cool, but controlling them never felt right. I felt as if I was constantly missing what I intended to do, and I was thinking I had missed something important about the controls until I got to repeat more and realized that no, the controls just felt lacking in precision. Which really felt like a shame, because with tight controls they could have been a real blast and could have made you feel like a superhero.

As I finished the playthrough and took of the headset, I was stuck by another feeling: discomfort. The Quest felt heavy, warm, and was pressing too much against my forehead. It felt like being back in a lesser Daydream headset, warm phone slowly cooking me through the cloth-covered claw squeezing my face.

(Okay, slight exaggeration.)

More Beat saber

Much more plain and simple fun was my discovery of another little music pack for Beat saber. Only four songs, but each one the same kind of delicious fun as always. I clearly was very early getting the pack as well, because I landed in the top five of the highscore boards several times, and in one case the board held only perhaps five names. Fun!

It is also fun to see how the patterns are evolving as more music packs are released. There is always something new to discover, some new twists in positioning, combinations of blocks never seen before. I even saw some combinations which I am not yet sure how do deal with. More repetition is clearly needed.

I keep toying with the idea of putting the headset into developer mode and try out some of the infinite array of songs modders are adding. What is keeping me from it? It looks like I would have to re-enable the Facebook platform machinery or whatever it is called and thus give Facebook even mroe ability to track me again. Not keen on that part, but perhaps, just perhaps, it could be worth it in this case.

After all, who would not want the chance to make a fool of themselves chopping through Gangnam style?

VR browsing

I want more great games for the Quest, but I also remain excited about other uses of the headset. I dream about productivity, and I find it surprisingly fun to browse the web in Firefox. They recently added multi-window support, which felt deeply cool until the whole browser uncermoniusly crashed, losing my entire session in the process.

Watching videos is also surprisingly nice. I gave the Youtube app another go and found it had all the video quality and speed controls I wanted. Also, it is very cool to be able to size and position the video exactly how you like it. I sat back in my armchair, rested my head against its back, and then positioned the video to be perfectly placed in front of my eyes.

Now I seriously look forward to watching Netflix in bed at some point.

Some day, we will have this ability easily available for all regular productivity apps. That will be a good day, and it should not be very far off if the apps keep evolving. Immersed actually does the trick already, but I did not get the reliability and performance I wanted out of it. Once the apps enabling your desktop in VR get that bit better and more stable, I may need to get a more powerful computer to support them properly.

It would be deeply futuristic to not or rarely need to look at a flat screen while computing.

September 23, 2019

Speech bubble

I am already creeping up on the two week mark since I held my presentation at Day of the programmer in Jönköping.

I am grateful there was a good amount of time between being accepted as a speaker and being asked to keynote. The combined surprise would probably have been too much to get all at once.

To avoid unnecessary tension, I will spoil one thing right away: it all went well. I am really happy about what I presented and how I managed to deliver it, and I have got positive feedback from others as well. I feel I managed to say some interesting things, and others seem to agree.

How did it happen?

It all started, as far as I can remember, with an email from the conference organizers to Kodsnack's email address, asking if either of us would be interested in submitting a talk for the conference. As usual, I considered myself the least likely person to qualify, but quite unusually I actually had an idea to submit. At some earlier point during a longer run - I am not sure if it was weeks, months or even years before, I had started thinking about what a priviliged position we as programmers often find ourselves in, and I had entertainted myself with thinking about it as the final revolution of the workers seizing control. It was a very clear and entertaining starting point which could go in many different directions, so I happily submitted and was excited to find myself being accepted a while later.

Slide by slide

Following my usual way of structuring thoughts, I started by writing down a lot of text. Long paragraphs as well as random one-off ideas and comments, they all went into a single text file. Among them were also interesting links, headline ideas, and practical questions (will I have access to the room early? Does it have the kind of adapter I need?). Once it became clear I had been accepted and it was time to start preparing in a more organized fashion, I switched over to Keynote, dropped all my text into the presenter notes and tried to roughly split everything into one topic or thought per slide.

Then, as soon as I could bring myself to it, I sat down, turned on a microphone and recorded myself talking through everything from start to finish.

This gave me some really useful pieces of information:

For the most part, these were all good results. My main worries are normally having plain too little, or too few things of interst to say, and this reading proved that I did not need to worry about that. The overall flow and line was not unexpected, as my initial idea gathering had been a lot about noting everything which felt remotely related to the topic form any number of perspectives, and it felt good to know I could cut away things rather drastically if needed to find a flow and still have more than enough to say.

I made some satisfying cuts, shuffled things around, and generally tried to beat material into a better shape. It all came along slowly but surely, the final pieces not landing until two days before the presentation. On that Sunday, I took a break from editing, went for a run, and discovered the whole wrap-up with general problems and specific solutions. I came home, wrote that down, and made another recording which not only had the thread I had been looking for, but also clocked in at exactly the right time.

It clicked.


I was still nervous before stepping onto the stage, but it was pretty much all positive nerves. Excitement to get going, to see how it would go. My main question after things clicked on Sunday was whether I would manage to keep the tone I imagined for various parts, especially the rather theatrical beginning. A great advantage to that beginning was that it only took a sentence or two to feel that yes, this was working. It is a Unix system, I know this. (Or a podcast with a better script and more preparation, in my case.)


I felt completely wrung out, but happy, afterward. I got several positive comments afterward, and more importantly several good discussions about things I mentioned. People picked up different things, and it was exciting to hear which things and in what way.

As I write this, I just got the collected feedback from the participants. Yes, my heart jumped a bit seeing the link, but it was nice too. I find myself able to agree with the negative feedback as well. It has to be a good thing when critics see similar room for improvement as you do yourself.

Next time: more breathing room.

A clearer thread.

And most likely even more read-throughs with a microphone.

(Music for the last writing session: Sayonara wild hearts)

September 10, 2019

The workers control the means of production … now what?

This is the show notes and link list for my talk "The workers control the means of production … now what?". I gave this talk as the opening keynote of the 2019 edition of Day of the programmer in Jönköping.

The presentation slides make little sense without me talking along to them. Fortunately the video is now out.


August 28, 2019

Key mapping

I have a new favourite toy.

KBD4X keyboard KBD4X keyboard


This is a KBD4X, made by a company called Kbdfans. It is a 40% keyboard, meaning it lacks a lot of keys you expect to find hanging around the outskirts of comfortable hand positioning. To get the most - or anything, really - out of a keyboard like this, you need to program it yourself. That means figuring out where you want each function of a keyboard to be, deciding how exactly to invoke it, then editing a C file, compiling a new firmware, uploading it to the keyboard itself, and trying it out.

KBD4X next to Das Keyboard KBD4X next to Das Keyboard

Oh yeah, it is also pretty small compared to most other keyboards. And it has the keys in straight lines - ortholinearity, as the hipsters call it - just to make getting used to it a little bit more challenging.

I was expecting all this to be a challenge, especially since I never managed to get comfortable enough with my Pok3r to use it regularly.

I did not, however, expect to make progress this fast, or to have anywhere near this much fun figuring out and programming my layout.

Enter QMK

QMK is the open source firmware supported by this and many other keyboards. Programming your own firmware - in C, no less - sounds like a daunting and dangerous undertaking, but thanks to good guides and tools it is actually pretty easy. Perhaps most important of all: once you have the initial setup done, the iteration cycle is really quick. Making a change, compiling and updating the keyboard is a process of seconds, which makes trial and error highly enjoyable.

Getting into the keyboard

The look and feel of the keyboard had me hooked right away, I love the size of the overall board as well as the keys, and of course it has a wonderful clickiness from well-chosen key switches. I bought the keyboard including switches from a friend, so I can never remember which ones they are, but it is one of the relatively silent models. I have ordered even clickier ones because I am curious about the change in feel, but I truly have nothing to complain about now, and I do think the slightly quieter keys are an advantage in many situations. I got the keyboard set up during my summer holiday, but I decided pretty early on that to really learn and get into something this different, I should really use it at work. I was, however, deeply unsure about how that experiment would go. It seemed pretty likely that I would try for a couple of days, then notice I was using other keyboards most of the time, sigh, bring the keyboard back home and only use it for irregular bursts of writing.

Happily, that turned out not to be the case. At the time of typing, I am halfway through my second week of use, I have disconnected the other external keyboard, and I wish I had the same keyboard at home without needing to bring it back and forth.

I have got the hang of the keyboard quicker than I expected, but my keyboard layout has also changed a lot more and a lot faster than I would have guessed. It turns out keyboard layouts are a lot easier to remember when you have created them yourself, and so I have found myself repeatedly making both large and small changes throughout the week and a half without descending into complete confusion about which button does what.

My current layout

My layout is still evolving heavily, but I figured I could benefit from starting to document it at some point, both as a reminder to myself and as a possible source of inspiration for others. The illustrations are created using the online Keyboard layout editor.

Base layer

The base layer of my layout

This is what happens when you just hit the keys, and it looks pretty normal except having way fewer keys. L1 and L2 are layer switch keys, when I hold one of them down the corresponding layer is activated, providing me the keys on that layer instead. Tab acts as you expect when tapped, but activates layer 3 when held down. In all three cases, the layer switches back to the base when the key is released.

The main obvious thing missing here for a Swede are the three characters å, ä, and ö. I type in Swedish a lot, and so their usage frequency really motivate a spot on the base layer. So far, however, I have been unable to find a suitable place for them. I had them just to the right of M for a while, but found it much easier to get used to the position they have now on layer 3, so I put some special characters on the base layer instead. Time will tell if they return eventually.

I also regularly miss dedicated arrow keys, but even though I still do not use them very efficiently I feel less inclined to do the amount of reshuffling required to fit them in.

Layer 2 - Numbers and shifted numbers

Layer 2 - Numbers and shifted numbers

Nothing too strange here, the top row are the number keys in their usual places, the second row are the number keys with shift held down, so that characters like " and ! do not require three keys to type.

This whole layer is actually becoming a candidate for removal, now that I have the numpad layer and the shifted keys available in other places.

Layer 3 - Arrows, Swedish and more

Layer 3 - Arrows, Swedish characters and assorted specials

The current home of both the arrow keys and å, ä, and ö. I really enjoy the reachability of the arrow keys on the home row, but I find it very hard to get used to having all four on a line rather than the classic inverted T shape. I will probably try putting them in T shape somewhere at some point, but I do not really want to break the line of shifted numbers, nor move the arrows down another row. We shall see.

Layer 4 - Numpad

Layer 4 - Numpad

I am not sure why I like this so much, but I do. Entering numbers somehow becomes a bit more fun with a numpad setup, and it immediately started feeling weird that I had always needed two hands to reach all numbers before. I am going to add some common separators on this layer as well, so that I do not need to switch back and forth to write currency values, dates with separators and so on.

What remains?

Am I done? Not nearly. Like I mentioned in several places, I still feel my layout has room to improve. And of course I just need to simply write more to get more used to all key placements. Regular text entry is doing pretty well already, but special keys can be very slow.