The people who use our boards.
323 interviews since 2018
The people who use our boards.
Kristoffer Gronlund
Independent Software DeveloperWho are you, and what do you do? What do you like to do outside of work?
Hi! My name is Kristoffer, and I’m a programmer running my own small tech company from an old house deep in the forest west of Stockholm. The goal I had when starting my own company was to be able to work on all the random things that I’m dreaming of creating while somehow also making a living for myself without having to commute or sit in a company office all day. I mostly do consulting work for other companies, but when I can I work on a long list of small projects including games, audio software, open source libraries, and programming languages.
I also host a programming podcast together with two friends. It’s called Kodsnack (meaning roughly “Chatting about Code” in Swedish), and we’ve been releasing episodes every week for more than ten years at this point.
When I was a little kid, my dad bought a Commodore 64. I’ve been programming ever since. However, until my late teens I was sure that I was going to be a full-time drummer and musician. It wasn’t until I actually started attending music school that I realized that, although playing music was fun, programming was what I really wanted to do for a living.
For me, programming and playing and creating music have a lot in common. I don’t think I am the only one with this experience, and I’ve met a lot of musician developers in my time as a programmer. Both pursuits reward patience, practice, and focus. The flow state that you can get into while programming is very similar to what you experience when playing an instrument, and the aspect of music that I enjoy the most is the creativity. What I came to realize was that making a living as a musician probably would mean a lot of time spent memorizing and playing other people’s music, whereas what I wanted to do was to make my own music. In programming, that’s exactly what I do every day.
I kept playing in bands in my spare time, and I still spend a lot of time making music. These days I mostly play guitar or various electronic instruments, since drums take up a lot of space and are a bit too loud when living in a house with others. I like being able to make whole songs with a single piece of gear, and so I’ve really taken to grooveboxes, synthesizers that include multitrack sequencers. My current favorites are the Dirtywave M8 Tracker and the Elektron Syntakt. The M8 in particular would appeal to almost any former game developer, since the hardware is based on the Nintendo Game Boy and the interface looks like a mix between a spreadsheet and a terminal window. :)
What hardware do you use?
These days, my main computer is a MacBook Pro 14” from 2021 with an M1 Max processor. It is an incredible machine, and I don’t think I’ve ever been close to hitting its limits even when editing video or compiling C++. When it comes purely to hardware, Apple are hard to beat. At the same time, I miss working in Linux—and the Mac interface is not as efficient as a tiling window manager—so I might go back to a Linux machine someday.
I connect the laptop to a Dell U4021QW screen. It’s a beast at 40” extra wide and a 5120 x 2160 resolution, but the main selling point for me was the integrated hub and KVM including Ethernet. It lets me connect both my own computer and a work computer at the same time, using the same mouse and keyboard for both.
The width of the monitor even lets me split it fifty-fifty for a seamless dual-screen setup, and using the amazing Synergy software I can drag my mouse across them as if they were one machine, and even copy and paste between the two. It’s a great setup, but sometimes I wonder if maybe two smaller monitors side by side would have been a more practical choice.
Behind the screen is the only window in the room, which I tend to mostly cover up in the summer, as well as my basil plant which, unlike any other plants I have kept in my office, thrives here and has grown to the size of a small bush.
For sound I have an Audient iD14 USB interface together with an ASP800 ADAT channel extender, which gives me a total of ten channels of audio into the computer. These I use to connect microphones, my guitar, various synthesizers, and a full-size piano. I used to have an electronic drum kit in my office, but now that we have a baby, the drums have had to move to the basement. E-drums can be extremely expensive and generally don’t sound that great even at the highest end of the budget, so instead I use a relatively cheap kit called the Millenium MPS-850 for MIDI input together with some relatively basic drum software called EZdrummer, which works great.
The microphone I use is a Shure SM7B, which is a great microphone for recording voice.
My desk is built from an IKEA kitchen top (Barkaboda) and two IKEA Alex drawers, and is extra wide, which lets me fit my ridiculously large screen as well as two Adam Audio T5V active monitors on it, while remaining sturdy. I also have an Elgato Key Light, which I use for video calls and to generally light up my home office, especially during the winter months.
I have really gotten into the custom keyboard hobby and have more keyboards than I can count. Unfortunately, pretty much all of my other hobbies tend to lead to RSI problems, and some years ago I started to feel quite a bit of discomfort in my arms and hands when programming. My first custom keyboard was an ErgoDox EZ, which I got after Tobias, my friend and cohost of the podcast, started using one. However, I felt that it didn’t quite fit my hands, and stretching the thumbs to reach the thumb clusters felt especially awkward to me. However, the columnar layout and programmability of the keyboard had convinced me that this was the way to go.
Eventually, I switched to a Planck EZ and used that as my main keyboard for a really long time, and I found that it really helped against my RSI problems. I also ended up getting a Preonic and a Rama Works M50-A, and was using all of these with very similar keyboard layouts.
Today I use a Moonlander keyboard as my main work keyboard, together with the platform kit for tenting, and I’m really happy with it. I find that the slightly smaller size of the Moonlander fits my hands a lot better than the ErgoDox did while also giving me the split and tenting for improved ergonomics compared to the Planck. However, the Planck is unbeatable as a travel keyboard purely for its small size and weight!
In my spare time, when I don’t have to be productive and can be a bit more experimental, I am getting into hand-soldered minimal keyboards featuring 36- or 34-key layouts. One example is the Ferris Sweep, which is an absolutely tiny split keyboard. I am not yet at the stage where I am designing, ordering, and soldering my own custom keyboard PCBs, but the way things are currently headed I suspect I will be there fairly soon…
And what software?
My main development software these days is Neovim, using the LazyVim setup as a basis for my configuration. It’s fast and capable, although I turn off a lot of the plugins and features it comes with out of the box. I know that I am a bit unusual in this regard, but I don’t really like having autocompletion or too much intelligence in my editor. I find that constant suggestions and pop-ups interrupt my train of thought too much, and the benefit of an editor like Vim is that I can customise it to fit my needs instead of having to settle for whatever features and limitations come built in.
One of the tips I have for junior developers is to learn the basic Vim editing commands. Not only is Vim a powerful editor which comes preinstalled on almost any Linux or Mac, but most editors these days come with a Vim editing mode built in so you don’t have to switch away from your favourite IDE. The Vim style of editing text is incredibly efficient and lets you do most of your work without moving your hands away from the home row. I am always learning new ways to optimize the way I use Vim, and find it makes editing code a joy.
Together with Neovim I use a large collection of small but powerful tools in the terminal. My terminal emulator of choice is WezTerm, which is configurable and fast. The main command line tools I would recommend to anyone are ripgrep, fd and tig. Ripgrep is a fast and intuitive tool for searching through large directory structures, fd is a replacement for find, and Tig is a terminal UI for git history.
I like to draw pixel graphics in the style of the original Game Boy, which is still my favorite gaming device of all time, and for that I use a program called Aseprite, which I cannot recommend enough. It’s a fantastic piece of software.
For recording music I have used a lot of different tools, but the one I would recommend as a great place to start is Reaper, which has a generous trial version, doesn’t cost much, and comes with all the functionality one could need built in. It’s also available for Windows, Mac, and Linux.
What’s your keyboard setup like? Do you use a custom layout or custom keycaps?
I am one of those people who can’t stop tweaking their layout, and I even have multiple layouts that I switch between to test out different ideas. However, since I am currently using the Moonlander for work, I try to keep the layout I use fairly stable on that keyboard. To be honest, I still make regular tweaks to it—Oryx just makes it so easy!
For my base layer I am trying to learn a very unusual layout called Hands Down, which I’ve tweaked slightly to improve compatibility with Swedish. Custom keyboard layouts is another rabbit hole which I’ve gone down in the pursuit of ergonomics. The idea of Hands Down is to minimize finger movement while also making common sequences comfortable to type, and I have found it works really well for me. My first attempt at moving away from Qwerty was to learn Colemak, but once I discovered that there is a whole world of alternative keyboard layouts out there, I was hooked. For anyone who wants to try a more ergonomic layout than Qwerty but doesn’t want to spend months and years learning new layouts, I would recommend Colemak Mod-DH. This layout is widely regarded as close to optimal, and is one of the more popular alternative keyboard layouts out there.
I read an article by Pascal Getreuer called “Designing a Symbol Layer” and decided to use his symbol layer as the basis for my own. The changes I have made to his design have been to optimize even more for using with Vim and the programming languages I develop in. For example, I have moved the left parenthesis, brackets, and curly braces to the home row while moving the matching right symbols down since my text editor generally fills in the right brace or bracket for me.
I use the blank keycap set that the Moonlander came with and am happy with it, but I have swapped out the switches for a set of KTT Matcha switches. They are light tactile switches with a pleasant sound profile and great feel to them. Generally I prefer tactile switches, and have also been using Kailh Speed Copper switches for a long time.
While experimenting with smaller keyboards and 34- or 36-key layouts, I have come across a few resources that I found interesting and really helped me see how it’s possible to be effective with so few keys. One of the best articles I’ve read is for a layout system called Seniply by Stevep99. The nice thing about his system is that it doesn’t rely on home row mods, an otherwise very common feature of small keyboard layouts. For me, I haven’t managed to get home row mods to work well and I prefer having the modifier keys on a separate layer.
What would be your dream setup?
As far as hardware goes, I think my current setup is close to perfect for me. My office is great in the winter, but gets too hot in the summer and so I have to run a portable AC unit in order to work, so I guess my dream setup would be in a room with better air-conditioning built in!
Other than that, I think 40 inches is a bit too big for a screen, and in hindsight I should probably have gone with two 27” monitors side by side instead. With a separate USB hub it’s easier to replace individual parts as well, instead of having everything built into the monitor. That said, it is also incredibly luxurious to have one huge surface to work with, so I am sticking with this current setup.
Another long-term dream I have is to build myself a music studio, complete with sound isolation booth for a real drum kit. When I was a kid I used to play the drums at full volume in my parents garage at any hour of the day, which I’m sure drove both my family and our neighbours insane, but was awesome for me. Nothing is as satisfying as bashing away on a drum kit for a while when stuck on a difficult coding problem!