Kitaab

Digital Infrastructure

rock blog 2018-07-12 11:25

As is common amongst awesome eccentric nerds who love computers, we love talking about what makes our computers special. Continuing in that tradition, is this post.

I have 4 major computing devices on which I do almost all my computing. My desktop, my laptop, my home-server and my phone. They're all inter-related and I use each for particular situations. Computers to me are both toys and tools. Hence I have a particular set of needs that most people don't. I want to be able to customize my experience so that it's both fun and personal (also known as "ricing") but this also means I'm constantly changing things to better suit my needs. I also need them to be functional, as I depend on them for being productive. Reconciling these two often contradictory desires is a delicate balancing act I revel in. Open source software is often lacking in the UX department, but by nature of being open source they are infinitely customizable so I use them as much as I can. I'm also a privacy zealot so I try to self host all my own digital infrastructure, which strikes the right balance for my desires.

Most posts of this sort try to describe the software and hardware the computers are running on. I would like to focus on the workflows through which I interact with my digital extensions. I strongly believe that technology usage cannot be considered in a vacuum. Without human interaction all technology is pointless. We must consider who is interacting with the software we build, and why they're using it. All of the hardware is replaceable, and so is the software. I don't wish to advocate for specific tools or platforms, but processes inherently entangled with the way I be.

Tell me a Story Show me the bits

Organizing my Life

In order to be a productive human being I have set up systems which, if I follow, allow me to Get Things Done. Broadly these systems can be categorized into three categories:

  • Habits
  • Tasks and Events
  • Data and Notes

Though these categories seem self-describing, they each play an important role in harnessing productivity. Habits are skills that I wish to cultivate over time, things like meditation, exercising, reading and journaling. I want to do these things on anywhere from a daily to weekly routine. I track my habits primality through the Habits android app, which draws pretty graphs and also exports to csv incase I want to dig deeper. Eventually I would like to have this data available through some sort of web page or linux application but for now I make manual backups to my Nextcloud intance that is run on my home-server.

My Nextcloud instance also hosts a lot of my data; contacts, calendars, RSS, images, etc. It serves as a general purpose syncing mechanism for various pieces of data, but also events, since it hosts my Calendar. For tasks I use Taskwarrior and a task server also running on my home-server. The Android app allows me to Tasks are actionable items that are one off in order to achieve a certain goal. Things like writing this blog post, configuring DAT DNS for this website or starting my homework.

Having a task list doesn't help me with deciding what goes on that task list and that's where the rest of my notes come in; it gives me a big picture perspective. I use TiddlyWiki and regular old text files to keep notes on my projects, classes, as well as my journal. To keep all these files synced up across all my devices I use Syncthing.

As you can see, given enough time and energy (and nerd-ery) it's totally possible to be productive and big-tech free. Obviously this kinda of setup is highly technical and I wouldn't expect the average computer user to be able to or want to set up such infrastructure (or would prefer to pay other people to make sure it doesn't all come crumbling down) and there's nothing wrong with that. In the future I would like to be able to open up these services to my tribe.

Customizing my digital appendages

With the productive tool usage of my computing out of the way I would like to dig into the toy aspect of my computers. By far my most customised device is my phone. I use a OnePlus 5T running the microG fork of LineageOS so that I can still use apps that use Google Play Services without needing Google Play Services. However it doesn't stop there. I have gotten rid of the navigation bar on the bottom and replaced it with a combination of JTouch and finger print Gesture Navigation. I also have Substratum themes Swift Black and Flux to throw OLED black themes on all the apps I use frequently as well as the notification drawer. Since my phone has an OLED screen this improves battery significantly, plus the consistency is nice. Here is a video of how I use my phone.

On my desktop I'm using bspwm with sxhkd as my window manager. I also use rofi and polybar to stylize my desktop a bit more. I'm running an older version of Firefox (Iceweasel since I'm on Debian) with Tree-style tabs, NoScript, uBlock Origin, Self Destructing Cookies and some Stylus scripts. I use Rambox for all the god damn Electron apps, and Evolution for email. I also recently acquired an Ergodox EZ that I'm still getting used to, and a standing mouse. I also use the dvorak keyboard layout. Basically nobody except me could ever use my desktop except me; there is a very steep learning curve. Here is a picture of my desktop and keyboard.

My laptop is a chromebook that is running GalliumOS which is also a derivate of Debian. I use it mostly for taking notes in class, and it's not very customized, asides from Firefox which uses all the same addons as my desktop except NoScript and Tree-style tabs.

Customizing my computing experience is a double edged sword. On one hand being able to configure everything to be just the way I want is great, but also a lot of effort. It's also a little annoying when I try to use other computers, but switching the keyboard layout to dvorak is generally enough for me to be productive. I think an important part of making computers more accessible and humane is the ability to customize the user experience -- different people have different requirements and use cases, and I strongly believe one cannot meaningfully design products for over a billion people. Currently, only "real techies" that run Linux have the ability to make the experience their own and it requires a lot of effort. I would love to see flexible and accessible programs that allow the user to define how they want to interact with software they use.

Lists for everything

Hardware:

  • Phone
    • One Plus 5T
    • LineageOS 15 with uGapps
    • jTouch and Finger Gestures

Software:

  • Taskwarrior
  • Nextcloud
  • Spacemacs/NVim
  • Airsonic
  • Wallabag
  • Syncthing
  • Debian on everything
  • Iceweasel
  • Telegram, Wire, Signal, Matrix/Riot
  • LineageOS - with Open Gapps
  • Misc phone configuration
  • TiddlyWiki
  • Evolutiona
  • FreshRSS
  • Hugo