How I do my computing

There are a lot of conscious choices and efforts I make when it comes to how I do my computing. I list them here for me to review once in a while, or for your entertainment.

Devices

I have five devices that I use at least semi-regularly. In order of use:

  • Thinkpad T470.

  • A self-built desktop computer (A10-7850k, R9 380).

  • Some Kobo e-reader.

  • Moto G (I believe it's the 2015 model, but I'm not too sure).

  • Raspberry Pi 3.

I use the laptop for basically everything. I carry it everywhere I go in an attaché (a purse, more or less). I perform basically all of my work on it and it has yet to let me down. I am still working out some of the ergonomics, though. Looking down at the laptop screen causes me a lot of neck strain, which I am currently addressing by plugging the laptop up to a monitor when I am at home, but this is not an ideal solution.

I don't use my desktop computer that much nowadays. The most it gets used for is playing some games and playing multimedia. It has a nice Das Keyboard mechanical keyboard with MX blue switches that I really like typing on, but in actual use my laptop's keyboard performs just as well for me.

The e-reader I have is very nice. The battery lasts forever, the screen is good and it reads books; everything I could possibly ask for in an e-reader. What I didn't ask for is having to sign up with an account in order to even use the device. By signing in, Kobo wants to target the user with advertisements and track their reading habits. I don't want that, so the way I circumvent this is by turning off wi-fi and manually uploading e-book files onto the device.

The phone is the one device that I want to get off this list as soon as possible. It runs a build of LineageOS, which is an Android operating system built by hobbyists. As much as I admire the project, I do not really trust the people building this operating system to be competent enough to protect the computing I do on my phone. As such, I do as little as I can on it. I get the applications I use from F-Droid and do not use any Google services or proprietary apps. I use the phone to make calls, listen to music, do geo-navigation and set alarms. I leave it at home often because I don't want my cellular provider to track everywhere I go.

There are a lot of things I dislike about smartphones: They are tracking and spying devices that would make the Stasi drool, they are insanely distracting, they are obsolete the moment they are sold and cannot really be repaired, and manufacturers are notoriously bad about shipping these devices without malware or even keeping them up-to-date with security patches. I want to get rid of the thing as soon as possible, but haven't had the opportunity yet, mostly because everything requires you to have a phone number. It was literally impossible for me to sign up for a bank account without a phone number, which is quite sad. I might get a SIP number one of these days.

I use the Raspberry Pi to host a few services.

Operating system

My laptop and desktop computer both run openSUSE, though I've used Debian as well. I have a lot of respect for both projects, but I find openSUSE's development model much better and easier to get into. It's really easy to submit a patch in the OBS when something doesn't work the way I want it to.

In the past I've also used Ubuntu (and some derivatives) and Arch Linux. I don't use Ubuntu anymore because Debian is better than it in virtually every way (and Canonical isn't a company I want to support). I don't use Arch Linux anymore because openSUSE Tumbleweed does rolling releases better, though I did like using Arch Linux for the learning experience.

I use KDE Plasma for my desktop environment. It's a lovely, modern desktop made by great people. It suffers from some bad defaults (font size too small, no virtual desktop shortcuts, and other really small annoyances), but it's by far the best desktop I've used. I particularly like its dark theme, which is easier on the eyes for me.

E-mail

I really love e-mail. I love it because it is ubiquitous and because it is generally accepted as being asynchronous communication. I hate it because the protocol is ancient and atrocious, and it isn't end-to-end encrypted by default. But mostly I love it because it isn't WhatsApp or some other shitty messaging app, where people get upset if you don't respond by the end of the day.

To do my e-mail, I use Thunderbird. I prefer KMail to it, but KMail's Akonadi backend is absolutely terrible and intermittently causes my mail to stop working for no apparent reason. So Thunderbird suffices. I have also tried using mutt and mu4e, and though I really like the idea of using something like that, in practice they didn't do it for me.

I host my mail at a Swiss company, on the assumption that Swiss privacy laws will protect me if (if) there ever is a warrant against me. I use my own domain name (@carmenbianca.eu) so that I can move my e-mail to a different provider whenever I want. If I were using '@provider.xyz', I'd have to notify all my contacts that something has changed. Just imagine the day that GMail is deprecated; it will be great.

I separate my e-mail somewhat. All e-mail that is the equivalent of writing letters goes to carmen at carmenbianca dot eu. One of the nicest things about that address is that I can say it out loud without having to clarify everything. Then again, I still get "(C|K)armen, do you write that with a K?" No, ma'am, I am not a KDE project. I also get stupid looks from some people who do not grasp that you can have an address that doesn't end in '@gmail.com'.

All e-mail that is obviously related to me, but where I only ever get e-mails from noreply addresses, goes to whatever at carmenbianca dot eu and gets automatically filtered into a separate subfolder. This is nice, because it means I only ever get personal messages in my inbox.

For services that have no business knowing my real name, I create a new account with ProtonMail (or any other free provider, really, but I trust ProtonMail). That way there is no (easy) way of tying that address back to me. And because every service gets its own unique address, I don't create a big profile of myself either.

Wherever possible, I encrypt my e-mail with GPG. I always sign. You can find my public key here.

I don't send HTML mail.

I also bottom-post.

A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing in e-mail?

Development

Python is my favourite programming language. Incidentally, it is also the first language I learnt. This obviously means that I had good taste even before I started. The reason I like Python is mostly because its community seems to care a great deal more about the readability of code than others, as enshrined in the Zen of Python and PEP 8. Furthermore, I really like Python's tooling and the way it easily adapts to a lot of different coding styles. It can do quick scripts and big programs. It can effortlessly weave pure functions with object-oriented code.

My editor is Spacemacs, a distribution of Emacs that comes with batteries included and uses vim keybindings. I really prefer using an editor like Emacs or vim over using a huge IDE for three main reasons:

  • It is extremely good at manipulating text. This means it's good at eighty per cent of my workflow, something most big IDEs fail miserably at.

  • It is extensible/programmable. This means I can control the tiniest details. Apart from satisfying my inner control freak, it also provides me with a lot of comfort that everything is just the way I like it. IDEs are often customisable as well, but not nearly to the same level of detail. I often don't need that level of detail, though. But when I do, it is bliss.

  • It is agnostic. One thing I never quite understood about IDEs is why they must be tailored towards a single language. The overlap in functionality between IDEs is enormous. They are all glorified editors that have a compile button, a run button, a 'refactor' button, some autocomplete, and possibly some version control integration. Surely it can't be difficult to create an IDE that does all those things, except it doesn't care whether you're writing Python or Brainfuck? Spacemacs does that for me, and I am glad for it. I only have to perfect my workflow once, and I can carry that workflow with me as I go.

Another thing I find gobsmacking about IDEs is that a good portion of them attempt to do a soft variant of vendor lock-in. This is impossible in practice, of course, but often successful in lazy teams. I have encountered teams that enforce a common IDE because they are either too lazy or too incompetent to figure out a way to structure their project such that it can be built without an IDE. "Just click on the .sln file", they say.

I host my code on GitLab. I have considered using something else because I dislike its contributor licence agreement and its proprietary "premium" variant, but overall I am quite happy with it. A thousandfold better than GitHub, anyway, which is censorious, practises the soft bigotry of low expectations, and is proprietary in spite of its claimed undying love for 'open source'. I do have a GitHub account to make contributions to projects that are hosted there, but I would never use it, or lead others to use it, willingly.

Privacy

I am a bit of a privacy freak. I do not think that anyone other than myself has any business accessing my data or anything which I do not explicitly share, so I take steps towards protecting my privacy. Turns out, this is quite hard. Not just in the sense that some technologies are difficult to use (it took me a few attempts to use GnuPG), but also that the human process isn't easy. It is much easier to do nothing, click on every link and hand out your personal information everywhere you go, than it is to be vigilant.

The biggest leak is probably my browser, Firefox. The web is utterly broken. There is an insane amount of fingerprinting that can be done to uniquely identify me. Sometimes I wonder whose idea it was to leak so much information about users by default. For a while I've tried using the web with a lot of these things turned off. No JavaScript (who thought it was a good idea to execute remote, untrusted code, anyway?), no cookies, no WebGL, no nothing. In spite of my best efforts, that did nothing to make me blend in any more or less. So nowadays I just block ads, delete cookies on exit, and keep Privacy Badger around. I figure that's somewhat good enough. When I want to be truly anonymous, I just use Tor Browser.

Another big potential leak is my e-mail provider. If my provider is hacked, or if they are a bad actor, all the e-mails I've ever sent or received are readable. This isn't very desirable, but I haven't found a good way to go around this. I try to encrypt my mails, but the vast majority of recipients do not have a GPG key. I could also host my own mail server, but I haven't quite enough faith in my sysadmin skills to make that any secure and reliable. I could also use something like ProtonMail that encrypts all my e-mail, but they don't support POP/IMAP, so I can't keep my e-mail locally. So a compromise it is.

I use a VPN by default. I sometimes don't know what good it does me other than giving me a public IP address that is shared by a lot of other people, thus allowing me to blend in a little bit more. Which I suppose is good enough. It also prevents my ISP from spying on me, which isn't too paranoid when Edwarden Snowden called the Dutch "surveillance kings of Europe".

I use diceware to create the passwords that I must remember. This makes for some long passphrases, but I imagine it is worth it. I have half a mind to do something like diceware, but with all of Unicode, so that my password becomes a lot shorter. But unfortunately it's not that easy (sometimes impossible) to input a lot of Unicode characters. I never reuse any of my passwords. Every online service gets its own autogenerated password that I store in pass. This has been the one scenario for me where being security-conscious is more convenient for me than having to remember a lot of reused substandard passwords.

I use full-disk encryption on all of my devices. This is the only sane thing to do, and should frankly be a default. It probably isn't a default, though, because of lusers.

I randomise my MAC address every time I connect to a wireless hotspot.

I use StartPage as my search engine, though I do occasionally use DuckDuckGo as well. Ideally, I'd switch to something decentralised like YaCy, but I haven't had the time.

Free software

I absolutely love free software. It is the only ethical way to do software. As such, I try to use free software exclusively. Apart from a few bits of firmware and the occasional video game, I am mostly successful in that endeavour. I don't particularly miss anything by sticking to free software.

I do miss a few things, however, by refusing to use DRM and avoiding patented codecs. A lot of videos nowadays are h264/h265, which aren't supported on openSUSE out of the box. The vast majority of e-books I would like to read are DRM-encumbered, which is really unfortunate. Fortunately, the University of Adelaide hosts a lot of nice books that have had their copyright expire in Australia.

Miscellaneous

I don't want to have a Google account and do not use any of its services except one: YouTube. YouTube hosts a lot of videos that aren't hosted anywhere else. In order to avoid having to create a Google account, I use an RSS feed to send me notifications about new videos that are posted by channels that I am interested in. This has a nice side effect in that I never have to go to YouTube's home page. I dislike how good modern advertising has become at finding vulnerabilities in the human attention span, and YouTube's home page is a prime example of this. Everything on that page is hyperoptimalised towards catching your attention and getting you to click on it.

I don't use any streaming services. They usually require DRM or a custom player, and I can't stand the thought of not controlling exactly how I access data. Just give me an audio/video file and I'll knock myself out.