how i use computers
table of contents
( this page is out of date )
what follows is an outline of the various hardware and software i currently use for daily computing tasks , in case it's useful for someone else . this is not a prescription of how other people should use technology , nor is it a description of my ideal computing environment .
hardware
if i need to purchase a new device , i prefer to find one that is already used , due to the numerous ethical issues with the production of electronics by large companies .
my primary computer is a Thinkpad T430 running QubesOS . i chose this laptop because , out of the options that can be flashed with coreboot , it was old enough to be somewhat affordable ( around 200 USD on Newegg ) , while still running fast enough for most tasks that don't involve graphics ( and some that do ) .
i don't use any peripherals except for a large monitor , to maintain good posture . i have tried mechanical keyboards , but i dislike like how they feel and sound compared to the built-in Thinkpad keyboard . split keyboards are more ergonomic though , so it would be nice to find a split rubber dome keyboard .
my phone is a Pixel 4a ( this was also around 200 USD on eBay ) running CalyxOS . i am planning to switch to GrapheneOS soon , for the additional security features and ability to use TalkBack , a screen reader . i could not figure out how to enable a screen reader on CalyxOS .
software
i primarily use CalyxOS for taking notes with Orgzly , tracking sleep with Plees Tracker , web browsing away from home , insecure communications , and listening to audio-based educational materials .
i use QubesOS for web browsing , programming , Serious Writing , and other forms of expression .
i chose QubesOS because i find ambient authority horrifying , but i'm not aware of any robust capability-based operating systems that would fill the same need for me .
QubesOS is slow and doesn't have screen reader support yet , but it does have some great features like configuration using Salt ( or maybe even Nix-like configuration in the future if Spectrum goes well ) , Whonix qubes , and offline qubes . here are a few things i've learned that make it more tolerable :
- install i3
- name qubes using two-character strings so they can be searched for more quickly using dmenu
- make shortcuts for locking the screen and toggling the status bar
- make a shortcut ( mine is bound to Alt + i ) for opening a dmenu list of helper scripts and frequently opened programs
- use Salt , but not for everything . some tasks are much simpler or faster with a shell script in dom0 , so i use a top-level shell script to apply salt files and do other things
-
dark mode can be enabled in XFCE qubes by
qvm-run
ing the following command in each of them :xfconf-query -c xsettings -p /Net/ThemeName -s 'Adwaita-dark'
- it may not always seem like it at first , but most tasks can be automated from dom0 , including mounting and attaching drives inside qubes . i take advantage of this in a backup script that backs up specific qubes using BorgBackup
- i wrote a shell script that copies dotfiles from one qube to the others and applies them , so i only have to clone my dotfiles in one place , but still have my bash aliases , helix config , etc. in every qube
- rofi can be opened inside a qube using
qvm-run
in dom0 scripts , but the rofi flag-normal-window
must be added to disableoverride_redirect
, which allows the program window to appear undecorated and on top in X11
programming
language
currently , the languages i find most useful are Haskell and PureScript ( which is very similar to Haskell , but compiles to JavaScript ) .
a few things i like about them are :
- very clean syntax
- functional purity
- Hindley-Milner type system
- typeclasses
- Hoogle/Pursuit
- ghcid/pscid
- high abstraction power
- automatically curried functions
- lazy evaluation
- row polymorphism ( PureScript only )
- wonderful libraries like Concur , optics and apecs
i'm autistic and get overwhelmed by extraneous detail very easily , so i view many of these as accessibility features , because of way they encourage code that is easy to read and reduce the number of things i must keep in working memory at once - while still feeling quite empowering .
i've experimented a lot with Nix for provisioning systems and development environments , but i'm hesitant to recommend using it , particularly if , like me , you're significantly constrained by the power of your computer hardware / disk space / network speed , or are marginalized in some way . i've seen many folks point out that the Nix forum and subreddit have been particularly ineffectual at fighting bigotry and fascist rhetoric , which has been corroborated by my own experience . from what i can understand , the community has also become a place of heavy conflict after a considerable amount of members were okay with the Nix convention being sponsored by an evil "defence" technology company called Anduril .
i've definitely benefited from Nix before , but those benefits have only barely outweighed the many negatives i've experienced along the way . maybe Lix and Aux will manage to solve some of those issues .
code editor
the code editor i use most often is helix .
my first editor was Sublime Text , then VSCodium , then Atom , and i finally found an editor i liked when i tried vim and realized i could mostly avoid using the mouse . using a mouse as an input device is fine , and i wish development software would use it more often . my issue is the precision required in most mouse-driven interfaces . precise clicks are difficult for me, and it would be much more accessible if elements that have a larger hitbox ( like radial menus ) were used more often . once i was proficient with vim , i moved on to Doom Emacs .
Emacs has a lot going for it , like radical introspection and extensibility , but it was just too slow for me . the language servers for Haskell and PureScript would often crash my qube because of how much memory they used in Emacs . i also disliked dealing with the Doom abstraction , but when i tried going without it , maintaining a complex configuration was too time consuming .
so , i switched to helix . it is rarely too slow for me , even in a qube with 4GB of RAM . it hardly requires any configuration to match my Doom Emacs setup . after learning them properly , i've also grown to appreciate the Kakoune-inspired keybindings more than vim's .
backlinks
- wiki: how i use computers