Tools and technology that I use. You can contact me with any suggestions.
Hardware
-
A Lenovo Thinkpad T430 (which is over
1012 years old now but was new when I got it)- I also have a Librem 14 from Purism, though I haven’t used it much.
-
A discbound notebook (Arc notebook, Junior or A5 size), currently I’m using more traditional ring binders and clipboardsDiscbound notebooks are great because they’re kind of like a binder and clipboard in one: you can change positions of things easily and you can fold it over to write on it while standing. However, there’s a few drawbacks of discbound notebooks compared to traditional binders:
- Discbound notebooks can be expensive (at least for the covers), so if you want dedicated binders for projects, discbound notebooks are less economical.
- It’s hard to label the spines of discbound notebooks in order to see what they are at a glance on a bookshelf
- Discbound punched paper doesn’t feed easily into scanners
For personal notes and calendars, though, I think discbound notebooks work pretty well. You can make your own templates and such.
-
A couple Brother laser printers - an MFC-L2710DW and an HL-L8260CDW
Brother has pretty excellent GNU/Linux support. I’ve experienced some user-hostile features in competitors like HP or Epson, mostly in undismissable nagging prompts in their software. However, I think recent versions of Brother drivers might no longer be open source. This isn’t much of an issue since you can still use older drivers, but there’s some things I couldn’t change, like I think scanner properties.
-
Pixel 6a running GrapheneOS
Radon Rosborough at an Emacs SF meetup read this page and then showed me their setup with a Pixel 6a and GrapheneOS. I was at the time looking to replace my super old Pixel 2 XL (*cough* that was no longer receiving security updates *cough*), so I unashamedly copied that setup. I considered the Pixel 7, but decided I really didn’t need the features compared to a 6a. Anyways, thanks Radon!
GrapheneOS is great in that you can completely separate out Google stuff. If you want, you can put it in a separate profile. I rarely switch to this profile, though, because once I do I get bombarded with engagement-chasing notifications.
- Jabra microphone for video calls
- Yubikey 5 Neo as a second factor
-
BQ Cervantes as an E-ink reader, which is GPLv2Unfortunately I accidentally broke the screen -
A Keychron K8 Pro
Got it from Central Computers.
I think I have “brown” or “tactile” keys. It’s my first mechanical keyboard, and it’s pretty satisfying. I definitely like how Keychron advertises it as an open-source keyboard. I haven’t yet flashed firmware, but I definitely want to put some macros on it at some point.
For the next keyboard I think I’d just get a full-sized version with a numpad.
Software
I exclusively use free software.
- Emacs (see my .emacs)
-
GNU/Linux
- NixOS for all my GNU/Linux needs, both on my laptop and increasingly on my servers
- Debian for where I don’t use NixOS
- systemd for writing and managing services (as well as timers a.k.a. cron jobs). systemd helps me use Linux-kernel-specific features without having to write C every time.
- Either Gnome or Sway, depending on my mood. Both use Wayland, but I still have some X11 applications. (Back when I was using X11 I used sawfish and FVWM.)
- Wireguard
- btrfs as a COW filesystem for snapshots
- Pipewire for audio
- GNU Bash, zsh, or eshell as a shell
- Unbound and dnscrypt-proxy2 for DNS resolving
- systemd-nspawn and podman occasionally for containers
- For my keyboard, my
xkbOptions
aregrp:switch,ctrl:swapcaps_hyper,compose:rctrl
, and I useus(symbolic)
(English (US, Symbolic)) for the layout. Occasionally I use ibus for when I need to type Chinese.
-
Firefox
- to block tracking and other web spam
- Multi-Account Containers and Cookie AutoDelete to isolate websites from my browsing history
- Redirector (see my Redirector rules)
Privacy Badger from the EFF(though uBlock Origin does most of my blocking needs)HTTPS Everywherenow I just use Firefox’s setting to try HTTPS first
- for playing media
- Anki for spaced repetition and learning
- Inkscape any time I need to make a diagram or annotate photos. I’ll manually edit these SVG files with Emacs as well.
- Krita when drawing things with a tablet
- darktable for photo processing
- Occasionally Blender for 3D stuff or editing OBJ files
- ffmpeg for converting or compressing/optimizing media formats
- OBS Studio for streaming and video calls
- Zotero for papers
- PostgreSQL
- nginx
- Clojure and Pedestal via Jetty
- git-annex for syncing, backing up, and archiving data
- BorgBackup for backing up files
-
AndroidGrapheneOS (which contains Linux but unfortunately not GNU) on my phone-
Firefox Nightly (which allows you to add arbitrary extensions like Redirector)
- uBlock Origin
- Redirector (otherwise sites like Reddit try to make you download their app)
- Dark Reader
- Cookie Autodelete
- F-droid for most apps. Others I sideload. I don’t have Google Play installed on my main profile.
- OsmAnd and Organic Maps for orienting myself in the real world
- Signal
- Element (for Matrix)
- Anki
- NextCloud
- VLC
- Unexpected Keyboard (which contains the Control key for when I use Emacs on my phone)
I’ve also used a PinePhone with Mobian and hope to eventually move more to it. -
Firefox Nightly (which allows you to add arbitrary extensions like Redirector)
- FreeSwitch for telephony/VoIP for my phone numbers
Statistics and Data
-
R for statistics with ESS as an interface
It’s a GNU Project! This is what we used in statistics courses at Berkeley. I also TA’d Stat 133 a bit. I’m so glad we were able to use free software rather than proprietary environments like MATLAB.
- Stan for Bayesian inference (previously used JAGS)
- Previously used D3.js a lot for visualization. Also tried React Three (see /rtft/ for an example visualization I made) via Reagent and ClojureScript.
- data.table, but also tidyverse stuff
- ggplot
- ColorBrewer for a color palette
- Sometimes Clojure and ClojureScript. Clojure for where I’m doing realtime analysis (instead of batch). ClojureScript for interactive visualizations and presentations using reagent/re-frame.
- LaTeX for writing math, which I’ll embed using MathML (preferred) or MathJax.
Web Development
Backend
-
Clojure and Pedestal
- Jetty
GraphQL via LaciniaNot so much these days- PostgreSQL for data
- WebSockets for real time events
- nginx for reverse proxying and some static resources
- LetsEncrypt for my certs
-
node.js and Express(not so much recently, but this site used to be run through node.js)MongoDB- Not anymore. They’re no longer open source, and Postgres does what I need anyway.
Frontend
-
HTML5WHATWG HTML written in the XML syntax (formerly “XHTML”)OccasionallyRarely RDFa for metadata. It can be a real pain with few libraries to make practical use of it.
-
For JavaScript I either use
-
Handwritten JavaScript
Gives me a better feel for various Web APIs
- Shadow DOM + Templates + Custom Elements (aka “Web Components”)
-
- React via
-
node.js
- Webpack
Angular 1- Never made the jump to Angular 2, I just started using React.
require.js- Back before JavaScript modules became a thing
-
-
For CSS I either use:
-
Handwritten CSS with a lot of flexbox, grid/subgrid
- CSS custom properties along with cascade layers for theming
Semantic UI(mostly when I was using React/reagent)
-
Handwritten CSS with a lot of flexbox, grid/subgrid
-
SVG
- Inkscape - For manually drawing, editing
- Emacs - For tweaking and optimizing SVGs, adding metadata, creating SVG filters, and so on
- Usually CSS keyframes for animation, but sometimes SMIL
- D3.js
- React/reagent
- R when creating SVGs with data
-
WebGL
- Three.js (sometimes via React Three Fiber)
-
Static site generatorsHexo(Trying to upgrade it ended up breaking stuff)Pelican
Services
- Firefox Relay for giving out emails
- Digital Ocean and Linode for VPSes
Mozilla VPN
(homepage)- Wikipedia
- The Internet Archive (and especially the Wayback Machine)
- MDN
- Nextcloud for backups and RSS/Atom feeds
- OpenStreetMap
- The National Weather Service (weather.gov) for weather data
- Hacker News
- A VoIP provider for my phone numbers (and occasionally for fax when I still need that)
- Mostly Kagi for searching the web. Otherwise a combination of DuckDuckGo, Google, and occasionally Marginalia and Wiby.
- fatcat, Internet Archive Scholar, Google Scholar, Semantic Scholar for looking up papers (see /scholar notes). And *cough* Sci-Hub *cough* (even when I have an institutional VPN, as many publishers add tracking data to their PDFs)
- SomaFM for radio
Other /uses
Check out other /uses
pages at uses.tech.