Here's a list of a bunch of the things I use on a daily basis.


  • Visual Studio Code Code editor
  • Ubuntu 20.04 Mainstream Linux distribution and free operating system (Why?)

    Ubuntu's very stable and provides an experience far preferable to developing on Windows. I've got issues with snap and much prefer Arch Linux's AUR, but that's a small price to pay for a more stable and hands-off approach. I haven't really had to get my hands too dirty with Ubuntu recently besides replacing snap packages of things like Firefox with dpkg installs.

    • bspwm Tiling window manager (Why?)

      I've never been a big fan of having to use my mouse, unless it's for a shooter. Keyboard shortcuts are the way. And I've never liked having to manually position windows, either - either I'm making them fullscreen, or flinging them to either side with the mouse so that they take up half the available space. It rarely gets more ambitious than that.

      That's where bspwm comes in. As the README says, it's a binary space partitioning window manager - each new window created in a workspace is part of a binary tree. So if you've got one open, it takes up the whole screen. Open another, and they each take up half. Open another, and one of the two that are already open shares space with it.

      Of course, it's not quite as restrictive as that - you can choose where the next window ends up, make one fullscreen, or even have windows in floating mode if you really miss it.

      I like that it's a natural fit for minimalistic bars like lemonbar and polybar, and that you get much more creative leeway in terms of being able to change colors and borders easily. That level of customisation is achievable in other DEs through something like Themix.

    • Firefox Web browser
      • Zenfox Solarized theme for Firefox
    • Polybar Desktop status bar
    • Mopidy Extensible music server (Why?)

      I don't tend to use playlists much - I'll normally just shuffle my entire library. Spotify has a noticeable backend limitation to the amount of songs you can have loaded at a time - once you've listened to something like 100 songs, you'll start to get repeats. Thankfully, that can be navigated by mirroring everything to a playlist and loading it with Mopidy.

      Mopidy wraps the mpd protocol, which can be used to serve music. Clients like Iris and ncmpcpp can act as a frontend to this and allow you to manage your music. It's a bit of a rascal to set up, but it's worth it to free yourself from Spotify's shuffle algorithm and limitations.


  • The F**k Corrects console commands
  • Vim Text editor (Why?)

    It's nice not to have to leave the keyboard. Vim is something that feels very natural to drive after so long. However, as much as I've experimented with doing so, Vim itself can't fully replace an IDE for me. VSCode's support for Vim emulation is absolutely fantastic, and it's so much easier to extend. Sometimes I'll nip back into Vim if I just want to quickly edit a text file, but usually, I'll just use VSCode.

    A few extensions are essential to the Vim experience for me, including vim-surround and endwise by @tpope.

  • ripgrep Faster alternative to grep
  • fzf Fuzzy finder


  • PC Mini-ITX PC build
  • Xiaomi Redmi Note 6 Pro Android 10-compatible phone running SuperiorOS
  • Lenovo IdeaPad 530S (Ryzen 5) Laptop (Why?)

    I got my first laptop under a high school scholarship I'd earned by becoming a Subject Ambassador for Computer Science. This was a Lenovo IdeaPad Y510P, which had the sorts of specs necessary for gaming, including an internal mobile graphics card. I got halfway through university with it, but by that point, it was beginning to age - the plastic grates in front of the vents were snapping off, the border around the keys had come loose, and there was plenty of dust under the screen. When it came to my year in industry, I decided to replace it.

    Initially, I was fairly sold on this laptop. But I got it at a point where it was so new that the Linux kernel hadn't incorporated proper support for it. It could run Linux distros, but the touchpad wouldn't work and there'd often come a point where the whole system would freeze and become unresponsive. For a while, I thought I'd made a bad decision. But things changed after Ubuntu 19.04 arrived, at which point I dusted it off and got settled in. It's incredibly reliable now and has just about everything I could ask of it - a great screen, nice battery life, and incredibly nippy processing thanks to its Ryzen CPU.

  • TADA68 with Gateron Brown switches 60% mechanical keyboard (Why?)

    I prefer 60% keyboards because they're more comfortable than anything bigger. All the keys are within reach, and configuring another layer for things like media keys and brightness is easy. The only things I won't really make an exception for there are the arrow keys. My first mechanical keyboard was an Anne Pro, and that didn't have separate arrow keys. Having to hold the Fn key to access those made me see where others come from there - sometimes, games I play on PC use those keys rather than WASD, so having them on the most accessible layer only makes sense.

    This keyboard is really nice, and since I've paired it with DSA profile keys, it's very comfortable to type on.

Copyright © 2016-2021 Simon Fish