Tech: My Setup & Philosophy

I spend an inordinate amount of time behind a keyboard and screen. It is my job, after all, to write code. Also, it is my hobby to write words that somehow make it into a story of some sort. I’ve wanted to write about my setup for a while; it’s total developer porn. If you’d rather just read about my philosophy regarding my setup—and the state of tech in general—hop on down to that section.

My desktop

My desktop

The Box(es)

I have access to four computers. My main one is my personal desktop computer, which is pictured above. I have an older Lenovo laptop, which I think is an Ideapad. Also, for work, I’ve got a Dell XPS laptop and an old MacBook Pro, which I use when I have to work on an old client site that is too much of a hassle to move to my daily workhorse.

I run Solus Linux on all of my computers, except, of course, on the Mac. I used to run Ubuntu, but I never liked the bubbly, childish theme of the distribution (in addition, I had some issues with the nVidia drivers). Solus is a newer distro, but I like their desktop environment and package manager. I didn’t have to muck around too much with the desktop settings to get a theme I could look at each day without gouging my eyes. Most of the packages I’ve needed have been available in their stable package environment without having to tap the unstable or add additional repositories.

My computer stats

My computer stats

I built my desktop computer almost two years ago and haven’t needed to upgrade anything on it since then. It’s got 16 gigs of RAM, two SSD hard drives, Bluetooth and wireless, and runs on an Intel Core i7. It more than does the job for me.

The Software

I have been told I am a little odd when it comes to my software choices. However, I have a philosophy on software—on life in general—and that is it should be simple, future-proof, non-dependent, and secure.

Text Editor

Being a programmer and writer, finding the right text editor is like finding the perfect spouse. It has to push all the right buttons, fulfill each need, and get out of the way when you’re down to business. I had tried out Dreamweaver (way back when I first started to learn web development), Sublime Text, VS Code, Atom, and Vim.

Vim is my editor of choice. There is quite a learning curve to it and, having only been using it for just over five years, I’m still learning just how robust and capable it is. Many of my coworkers think I’m mad for using it but, what can I say, it has stood the test of time. Vim has been around for almost thirty years, it is remarkably extensible, and when I hop onto remote servers, I can use Vim. As far as I know, you can’t do that with VS Code.

The other thing I like about Vim is there isn’t any internal tracking. I got into using VS Code for a few months with the Vim keybindings in place but, after I found out you had to opt out of telemetry reporting explicitly, I no longer use it.

I have a pretty specific .vimrc file that sets up each Vim installation just the way I like. When I set up a new computer, I clone the file from one of my git repos to get up and running in no time. I also use Vundle to manage Vim plugins.

You may be wondering about writing fiction, or even blog posts, in a traditional code editor. Well, I use two plugins to do that, which makes the environment quite lovely: Goyo and Vim Pencil. These plugins used together give me a distraction-free environment and easier navigation when in Normal or Visual mode. Can’t recommend enough.

Albert

For those of you that know of Alfred, Albert is the Linux/OSS version. It is a quick launcher, which allows me to pull up any program from a key command, as well as do arithmetic operations, run terminal commands, and a slew of other things. It definitely speeds up my time trying to find the program by navigating through my folders.

Terminal & Konsole

Most of my days on the computer are spent in these two programs. I prefer Konsole because it has better font support (and I use Dank Mono as my font, which has cursive commenting and it just makes looking at code that much more pleasant). When running Vim, I run it in the terminal and don’t use a GUI application.

Version Control

I use Git exclusively. I use it on the command line. I still have to DuckDuckGo things once in a while but the GUIs, for me, add to an already complex program. When I have conflicts, I hop into the file and make my edits there rather than using a diff program. Maybe it’s archaic but, you know my philosophy, I don’t want to be dependent on something that may become obsolete.

Browser & Extensions

I use Firefox just about exclusively, with the uBlock Origin, HTTPS Everywhere, Grammarly, and Privacy Badger extensions installed. I’ve got a few developer specific extensions installed (i.e., the Vue.js and aXe ones) but I keep it reasonably light here.

Pocket, which was bought by Mozilla, is built into Firefox and I make judicious use of that (and yes, I do pay for the service).

Google Chrome had been my daily driver, but I believe in Mozilla’s philosophy and business model much more so than Google. Plus, their developer tools are on par with Chrome’s, and they’ve got a fantastic developer resource.

Google Chrome and the OSS version called Chromium is only installed on my work laptop. It’s Firefox everywhere else. Since I am primarily a back-end programmer, I can get away with this.

Passwords & Security

Password managers are crucial to having more secure online accounts. I use pass to manage all of my passwords and, no surprise here, it’s a command line application. I use two-factor authentication as much as I can and, when the service allows it, use my Yubikey (the Yubikey is a piece of hardware that I have to insert into a USB port to access specific services). Firefox had some issues with the Yubikey but you can just enable u2f in the about:config settings.

VPN

Along with the security aspect, I use a VPN here at home. I installed it on a Digital Ocean droplet and run Streisand as the VPN software of choice. My droplet is in Frankfurt, which was a conscious choice to get the same experience as those in the EU. The GDPR is in effect over there and, while having websites displayed in German or just outright blocked because companies don’t want to deal with the GDPR (I’m looking at you, Los Angeles Times), it’s a small price to pay. Plus, you’d be amazed at just how different the web can be when you aren’t looking at it from an American location.

Social Accounts

I use Instagram, more than I should. I hate the fact that Facebook owns it (I do not have a Facebook account, nor will I ever). But I find value in following the few people I do on Instagram. Twitter is something I use to follow people but I am not an active user.

In both of those social accounts, they are not on my phone (I don’t have any social media applications on my phone). I only use them from my desktop computer, where I’m running it through my Frankfurt VPN, along with the uBlock Origin and Privacy Badger extensions in Firefox. Yes, you can use Instagram in the browser.

The Philosophy

I love what I do. I love the fact that I can create something out of nothing just by typing words onto a keyboard; this is both true in coding and writing fiction (even lowly blog posts). There is a joy to doing so, and I truly, unabashedly love it.

What I don’t love is how everything comes at a cost. Companies want data usage stats from an application I am running on my computer, in my house. That is unacceptable to me, and I’m willing to put up with a little extra work to prevent that from happening.

I’m also sick of having to sign up for services, applications, monthly subscriptions, even just to use your computer! Apple and Microsoft both make you sign in to download software from their stores. They have created gated communities.

I use Linux because I do not have to sign up to download applications. I do not have to give away privacy to use it on a daily basis. I can alter and change things as I see fit because I have a right to modify the underlying code. This has led to sometimes disastrous results (i.e., losing a few days worth of code after decryption gone wrong). However, I shouldn’t have to worry about what applications are tracking me or marketing my information to third parties or what kind of information the ISPs can gather based on what sites I visit. This is not the world I signed up for.

We’ve given up our security and privacy for ease of use. I don’t know what consequences that will bring about. Facebook has already shown how dangerous these things can be when data and information about individuals can be used to manipulate and alter. I’m scared of what might happen. We are humans—very fallible humans—and our technology and the data it creates is moving much too fast for laws and social norms to keep up with.

I don’t think technology or software is inherently good or bad. What I do think is that humans are lazy and that our laziness is going to hurt us in the long run. I also believe we are uneducated when it comes to the full scope of what this technology is capable of. This isn’t necessarily our fault; much of the code and practices are hidden by companies, and they aren’t transparent. However, it is still our responsibility to learn, to educate, and to demand more from the people creating the products and software that mainly influence our day-to-day lives.

The Internet of Things is coming fast. Our headphones can connect to Alexa, our fridges connect to Amazon, and our children’s toys listen to our most innocent and intimate conversations—there are some genuine dangers associated with these things. Without even getting into how atrocious these product maker’s security practices and safeguards are, there is danger in giving up so much of our information.

Privacy is necessary for a society to function. Yes, some evil things happen in private; this cannot be discounted. However, some excellent things also happen and shouldn’t be made public. Intimate moments, guilty pleasures, secrets that should be legal but are not (it wasn’t all that long ago that American citizens could be arrested for sodomy or go to jail for interracial marriage). We need to be able to make mistakes and flounder without having these events thrown in our face; to be forever branded and associated to our most vulnerable, weakest, ill-thought out moments is a very bad thing. Are we not all as fallible? Are we not allowed to learn and grow and make amends? Patterns and actions define a human, not one instant.

We must decide what type of society and country and world we want to be. As it stands, I fear we’re not headed in a very good direction. Technology and software have done amazing things. It got us to the moon; it’s ushered in a new era of sharing and education; it’s given me a fantastic career. However, there is a very dark side, the likes of which we are only just discovering. Let’s all take a step back and move a bit slower. Let’s be deliberate with our choices rather than defaulting to what is easiest.

Please.