This writeup was inspired by Richard Stallman's page about his personal computing
I have no preferences for what computer I use. Luckily, I'm not a gamer, so graphics performance is not a concern for me. Any computer with an internet connection that can compile a program and that won't freeze when opening a program is good enough.
I find the three-monitor setup to be very effective, since I can place my code on one screen, the code transpiler and test output (and maybe database access) on a second one, and documentation and other references on a third. A single laptop monitor is difficult to work with.
When I'm at home or at work, I use a Kinesis Freestyle 2 keyboard with the 20" joining cable and the VIP3 lifters. Since I fidget a lot, this lets me keep my hands and wrists in a comfortable position at all times. It still doesn't guarantee me pain-free typing, but it gives me flexibility as I learn more about ergonomics. Sometimes I put the mouse in between the two halves of my keyboard. Sometimes I put a drink or my food there.
I have no preference for mouse, as long as it works properly.
On some occasions, I listen to music or other things as I work, but this is more because it's too noisy or too quiet in my environment.
If I have access to an adjustable standing desk, I would stand for parts of my work day.
If I'm at home and need to video chat, I use my Blue Yeti microphone (which I bought for a past, now defunct project)
On my work computer, I use Linux Mint. It has all the benefits of Ubuntu, without any bloat/spyware, and with a good interface and good features.
For my personal laptop, I'm using Ubuntu Gnome. This is a recent experiment, since I'm looking for a linux distro that has good touchscreen support and a good mouse-or-keyboard-or-touchscreen interface. Ubuntu Gnome seems to fit the bill. I used to use the Windows 8/10 that it came with (for the touchscreen reason), but I am firmly in the Linux camp when it comes to doing anything useful.
From time to time, I try out other distros (in a VirtualBox) for fun.
In the absence of a touchscreen (which is most of the time for me), I use xmonad as my window manager. It efficiently uses all the space on the screen, can be customized to taste, and allows for rapid navigation via the keyboard. It removes (most of) the frustrations from the GUI. And it looks cool.
Xmonad does not come with a toolbar by default, so I use dzen2 in combination with conky. I customized mine to show me the virtual workspaces, the cpu/memory usage, the volume, and the date/time. I also use trayer for applications and widgets that use the system tray.
For most of my web browsing, I use chromium. I will use any browser that has omnibar-style shortcuts and a "private" or "incognito" feature that can be activated by default (via settings or command-line option). I use a plugin that adds vim-style bindings to navigate through the tabs. Browsers that fit these criteria include chromium, luakit, and even elinks (the text-based browser).
For browsing at nighttime, I use a high contrast plugin so as not to destroy my eyes.
I open facebook and email in a separate browser from my "surfing" browser (such as Firefox, Opera, Chrome Canary, or any freshly opened browser), since I want to reduce/minimize Facebook or Google or any other company's ability to track my browsing. If there was an easy way to do so, I would open every website and every tab with an isolated browser session.
I use duckduckgo.com for internet searching. If I use Google, I never search while logged in to a Google account.
I'm trying to use tor more often, but the tor browser is based off of firefox, and firefox does not have omnibar-style shortcuts (though it is otherwise a great browser). Also, many websites (especially those that use Cloudflare) ask tor browser users to solve a CAPTCHA to access the site, which is a big bummer. I also sometimes use tor in combination with elinks.
I use TinyTinyRSS, a reader service, which pulls the newest articles from (now 100s of) blogs, podcasts, etc. and presents them for me when I have time to read (which is not often!).
I don't have a YouTube account, nor do I go on YouTube while logged in to a Google account. I wrote a simple website/chrome plugin to manage a list of all the YouTube channels I frequent. This service also periodically checks for new videos and highlights those channels for me.
I use vim. It has a slightly steep learning curve, but once you get used to the basics, there's no going back. I learned it in university, and have been using it ever since. After 25 years since its first release, vim is still a worthy competitor to every other text/code editor. It's highly extensible, and it satisfies my obsession with minimalism. It's also useful to know how to use it, since I maintain various servers remotely.
I use vim-plug to install a small number of plugins. I have several preferences and keyboard shortcuts in a configuration file.
With the exception of the web browser, I spend most of my time in the command line terminal. I use bash in gnome-terminal. This is what came bundled with the OS, and it's visually appealing enough. I like changing the font or the colour scheme now and again. One day, I'll try a different terminal.
Because I use the command line heavily, there really is only one option here: ssh. It is efficient, ubiquitous, and elegant. I used to use VNC and similar things when I was a kid, but now I find those solutions clunky and childish. I only use it when maintaining a virtual machine with a GUI at a distance, which is almost never. I use ssh keys and a config file to easily move from computer to computer. Were it not for subtle variations in command line prompts (which I set), I might often forget which computer I'm using!
I have a growing army of Raspberry Pis (ha ha, only 3 so far) which serve as my test platforms, server hosts, and file storage/backups. They are cheap and versatile. I am interested in and prefer distributed solutions to many computer/internet problems, so I favour many small computers over one big one. I have learned a lot about computer networks, automation, and other things by tinkering with them.
I don't trust the cloud very much. If I can migrate an online service to a self-hosted alternative without monumental effort, I will do it.
I still have and use the first web host I got when I was a kid, at 1and1.com. They offer very little that I need at my price point (such as ssh access or an automated DNS API), but I've never taken the time to switch over my domain name, email, and php hosting to something else.
When I have the time (and money ($5+ per month)), I will try out a virtual hosting service, such as digitalocean.com or vultr.com.
For code hosting, I use GitLab. I host it on one of my server computers, and it suits my needs. In many ways, I prefer GitLab (both the company and the product) over GitHub.
I have a GitHub account, which I use to collaborate with others on open-source projects (which doesn't happen as often as I'd like).
Right now, I'm using syncthing to synchronize my files between devices. It's a self-hosted option, it encrypts file in transit, and it's easy to configure. It's pretty seemless. Unlike Dropbox, Google Drive, One Drive, etc. it doesn't require a single sync folder by default, it's limited in size only by the hard drives you attach to your server, and you don't have to trust your files to some company. Overall, I believe my self-hosted solution is cheaper, but requires more work, and lacks guarantees. I find the trade-off acceptable.
In the summer of 2016, after many years of using a dumb phone (a Samsung Stunt), I finally bought a smartphone - a Nokia Lumia 930. Honestly, I chose this model mainly because of its shape, the pretty interface, and the high-quality camera.
With the impending death of the Ubuntu Phone, there is currently little hope of having a smartphone that doesn't track you. I am searching for alternatives that will satisfy my mobile device needs, namely: surfing the web, taking pictures, making calls, and occasionally navigating with GPS. One idea that came to mind was to have a small linux tablet paired with a dumb phone; but I haven't seriously looked into it. It would also be nice if I could code while on the go (like in the metro), but that's more in the realm of laptops.