The people who use our boards.
330 interviews since 2018
The people who use our boards.
Caleb Rogers
Software Engineer and Other Stuff TooWho are you, and what do you do? What do you like to do outside of work?
I’m Caleb, but other than that I don’t even know what I am anymore. I live in Taiwan, people pay me to write software and lead their software teams, I run a software engineering co-op, I hack for civic good, I take pictures, I motorcycle quite a bit, I’m opening the only chicken biscuit restaurant in Taiwan (so far as we know), I lead a theme camp at a renegade Burn (medical team too), I’m helping turn Taidong into a digital nomad hub, I write about Taiwan, programming, philosophy, and being an engineer. I’m the most obnoxiously leftist person of anyone I know, and I like to bake.
I think more than anything else I’m a talker and a helper. If you want to chat about or learn more about how to do anything I know how to do, you can email me. I love getting emails from people. My email is registered to my website calebjay.com, and I’m caleb@ there.
Ten years ago I was a student of Creative Writing, after that a teacher, a recruiter, and then around seven years ago snuck my way into software engineering. Bootcamp grad. Just about three years ago I moved back to Taiwan from SF, and now I’m here to stay. Long term, I want to get a slab of land and start building global village construction kit equipment and housing for whoever on it. I’m fiendishly passionate about open source everything. If you read Cory Doctorow’s Walkaway, maybe you can be too!
Short term, I’m trying to build out my software engineering co-op, 508.dev. I got mad that the salaries in Taiwan are arbitrarily low despite engineering skill being identical to anything I found in the USA, so I started pulling in USA-rate engineering gigs and then just giving the full rate (-1% for our various expenses) to Taiwanese engineers, effectively giving them 7x their local rate. Turns out that if you do profit sharing, pay people a fair wage, and don’t breathe down their necks with unnecessary work-from-office policies or arbitrary working hours (we’re fully remote and work-however-much-you-please), you can get really good results. Why more people don’t do it, I don’t know.
Another aspect of it is that as an engineer you basically must have some kind of portfolio to get work, and a portfolio of nothing but personal projects isn’t that impressive. Group projects are best. Massive open source projects are best. A great way to get big impressive group projects is to join up with a civic hack project (look up Code For [your country] or see if there’s a local g0v chapter). Those projects can be overwhelming and intimidating though, especially for juniors, so we started making simple projects that one of the senior engineers project-manages, deploys, architects, etc., so that everyone can quickly and easily get a project for a given programming language or web framework easily on their resume, by working on smaller, more accessible tickets. It’s all open source, feel free to go make some commits and stick our projects on your resume! Oh, and I suppose if instead, you’re looking for software engineering services, you can go ahead and hire us ;)
Other than all that other shit, I’m either bicycling on the riverside, hiking, camping, lifting weights, embarrassing myself at a language exchange, or deliberately stepping in front of cars that are breaking the law.
What hardware do you use?
ZSA Moonlander for the keyboard! It’s wired into some kind of Acer 4k display with an incomprehensible and undocumented KVM function, and from there into one of several machines.
A: Desktop dual-booting Manjaro and Windows 10. The Windows is for editing photos, editing video, producing music, and gaming. Manjaro is for everything else (programming, writing, whatever). Specs are as follows:
- 12th Gen Intel(R) Core(TM) i7-12700K 3.61 GHz
- 32GB RAM
- Nvidia 3080 (I forgot which manufacturer and I’m absolutely too lazy to bend over and find out)
- 2x 1TB m.2 SSD (one is Windows boot and C:)
- 2x 2TB SSD (one for storage, the other runs the Linux distro)
- 1x 4TB HDD (storage)
- 1x 6TB HDD (storage)
Focusrite Scarlett 2i2 plugged into two Fostex monitors + some enormous subwoofer. Arturia MiniLab mk2 for MIDI keyboard, Logitech G502 mouse, ZoomH1n for a mic because the one on my off-brand webcam broke (I also use this to make ambient sound videos and free audio recordings lol), an Ikea standing desk, some chair I bought from some company that went out of business in Taipei, random deskmat I found in Guanghua Digital Plaza.
B: Server box running Ubuntu… 18.04 IIRC. Hardware is all used stuff I found at Guanghua.
Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz
- 32GB RAM
- Nvidia 1060
- 512GB m.2
- 4x 16TB HDD in Raidz1 for ~51TB redundant storage
- 2x 5TB HDD in Raidz0 for 10TB nonredundant storage
- 1x 10TB HDD for local “backup” and Samba drive
C: Laptop
- ThinkPad T14 Gen 1
- AMD Ryzen 7 Pro 4750U
- 16GB RAM
- 2TB SSD (personally installed)
- 1080p nonglare brighter-than-stock panel (personally installed)
- Dual-booted in Windows 10 and Manjaro
D: Steam Deck 512GB, no modifications.
E: A PoS MacBook Pro for when someone wants me to do something that requires OSX (puke).
Everything is wired over 1Gbit/s Ethernet into a switch, and from there to a router downstairs. Yes, the switch and single cord to the router is a bottleneck, I’m collecting fiance points until I have enough to run two cables. Our actual uplink to our ISP is 1000Mbit/s. We pay like $20/month for this, did I mention you should consider moving to Taiwan?
In that pile of cords is also a Raspberry Pi… something, running Ubuntu and functioning basically just as a node for Syncthing and some other random local-only tasks. I used to run some random software on it until I built the server.
Photos taken on a Fuji X-T5, usually with the 28mm f1.4 (an obscene combo), sometimes the 35mm f2, sometimes the 18-55m. Backup camera is the Fuji X-E2, which remains a perfectly serviceable camera even today. Shoot in jpeg+RAW, usually use pictures straight out of camera because editing was ruining the hobby for me. More on software below.
Videos taken on GoPro Hero11 mounted on a chin mount on motorcycle. I realized my motorcycle videos are boring and I need more dynamic angles so I’m working on other mount points. Exhaust sound captured on the Zoom H1n strapped onto the back seat.
Motorcycle in Taiwan is a Yamaha MT-07. In SF, it was a Suzuki SV650. Fiance’s is a Ninja 400 that I borrow (steal) constantly.
To the left of the desk is Richard in his house of glass. He is a fat and lazy bearded dragon that glares at me from his stick all day while I work. Here’s a video of him runnin’ around.
Sometimes I use one of the random keyboards I’ve built, like a Corne keyboard, but my soldering sucks, so they’re always unreliable.
And what software?
For programming, email, notes, journaling, blogging, todoing, and time tracking, I use emacs, using Vim bindings, through Spacemacs. I do everything in Emacs. This is what kicked my whole keyboard quest off: I was getting RSI really early in my career, and my first gig had a Vim greybeard. I tried to set up Vim with some features I liked from VS Code—like searching within a project, etc.—but it was annoying to set up, and also org-mode is amazing, so: Emacs with Vim bindings.
I use Manjaro because “Free as in Freedom” is better than OSX’s “You’ll Do As You’re Told, Swine.” Also because OSX’s window management drives me literally insane. For those of you with 50 windows open on a single desktop, each of them taking up not-quite-all-your-desktop-size, you paid 3K for that screen and you aren’t even gonna use the whole thing?
I use i3 as a window manager.
Windows I use begrudgingly because Fuji and Ableton don’t run on anything else I can run on this PC, and also because I sometimes game.
I have my entire Steam library installed locally. It’s approximately 12TB of space. I have Moonlight/Sunshine running so I can stream to my phone (Zenfone 9), Steam Deck, or Steam Link at the downstairs couch. Game streaming is a topic I’m randomly passionate about. On Taiwan 5G I can stream with no stutter or noticeable input lag from anywhere in the country, it’s incredible. You should consider moving here. I have all my games installed both in case Steam/Valve goes under, but also in case global capitalism fails before I can get my character in Baldur’s Gate 3 laid, in which case I’ll still need to be able to game for a bit.
I also run like nine emulators on my machine, for everything from NES up through PS3, Switch, etc. (there’s no laws about emulation in Taiwan, don’t even try it, Nintendo). I acquired all my games legally. They account for another like 500GB of space. On my PC, I zip them into my Steam library for easy streaming using Steam ROM Manager. On my Steam Deck, I just use Emudeck.
For photo editing, I use Fuji X Studio because I just don’t want to spend that much time editing anymore, and I like Fuji’s film sims. When I really need to get into it, I use Darktable. My photos are organized with digiKam. There are over 20TB spread over, like, 16 years.
I edit video in Kdenlive.
Browser of choice: Brave, ’cause its Javascript engine and dev tools are just better than Firefox’s (it’s just Chromium, after all), but it still respects user privacy. Also their Goggles tool is a fascinating solution to the problem of surveillance capitalism through web search.
Aight, so here’s an addiction I failed to mention above: self hosting. I’ll regularly scroll through the Awesome Self Hosting list and just deploy stuff from it. Some combination of my addiction to archival and my general distrust of large corporations compels me to do this. I have spent hundreds, if not thousands, of hours. My fiance finds our electric bill “concerning.”
- ZFS: Filesystem, allows for easily setting up redundant arrays like raidz1 and managing them.
- Syncthing: Decentralized and continuous file sync program. Syncs my ROM saves around from my PC to my phone (for the smaller emulators) to my Steam Deck (for all the emulators), my org notes, and my handwritten notes from my Onyx Boox to all my devices (Onyx automatically converts them to PDFs, it’s lit).
- NGINX: Reverse proxy for like the 30 services I run. I just expose port 80 and 443 on our network to the server, and then reverse proxy to whatever port the software I’m deploying needs. I’ve written briefly about this for our junior devs at 508.
- DDclient: Your computers at home are issued IP addresses by your ISP. Unlike servers that host websites like wikipedia.org or whatever else, these IP addresses might change frequently upon the whim of your ISP. If that happens, your DNS records that say “wikipedia.org equals 103.102.166.224” stops routing correctly. So DDclient will continually monitor your IP address, and if it changes, will use your domain provider’s service for changing the IP for a given DNS record (if it has such a service, such as Google or Cloudflare).
- audiobookshelf: Audiobook server, self-hosted Audible alternative. Even has an Android app! But the web client works fine too.
- calibre-web: Ebook reading and download client, OPDS server, running off of a local Calibre instance. Calibre also, once a week, grabs an RSS feed of a bunch of blogs and whatnot I follow, turns them into an epub, and broadcasts them via OPDS so I can download them on my various readers, usually using Librera Reader.
- dudle: Simple event time polling software
- Mobilizon: Self-hosted alternative to Meetup/Facebook events. I use it to plan all the random shit we get up to in Taiwan.
- FreshRSS: Web reader for my RSS feeds list. Clean.
- Jellyfin: The beast, a straight-up Netflix alternative on which I host my legally acquired movies and TV shows for streaming from wherever. Has native apps for many devices. Unbelievable software. This is why I have the GPU in the server: video transcoding.
- Komga: Comic book reader for my legally acquired comic book scans.
- Navidrome: Spotify alternative, music streaming. Compatible with Subsonic API so many native clients.
- Nextcloud: Google Docs/Drive alternative. An absolute RAM hog, mostly because of TensorFlow. I disabled that for now.
What’s your keyboard setup like? Do you use a custom layout or custom keycaps?
I use QWERTY, and my goal was to never stray from home row, plus I wanted to stay on keyboard literally always, so I have mouse bindings as well. My right thumb is my only spacebar thumb, and I use either my left pinky or left thumb to activate numbers and symbols layer. Symbols just map “one level down,” so asdf is 1234, qwert is !@#$, etc. Layer 2 is navigation either by keyboard or mouse. “Game mode” is a toggle mode where the keyboard is “more normal” for things like gaming. I’m strongly considering mapping wasd one “column” right for a secondary game mode, because I find the ortholinear shape of the normal Moonlander wasd to be a bit uncomfortable. I’ve been using the layout for maybe a year now and it’s okay, though I’m thinking of changing some things about the symbols, as even to this date I’ll still mis-hit ) when I want (, or } instead of {, among other issues mostly around symbols.
I added these 3D printed legs for the thumb cluster to give me more left/right tilt (yaw?), and it works okay, though it somewhat exacerbates my only issue with the Moonlander, namely that the thumb cluster always, eventually, succumbs to my aggressive smashing, and I have to retighten it. But without the legs the yaw of the keyboard was dependent on the tilt of the thumb cluster, and for maximum tilt (comfortable yaw) my thumb was reaching across orbit to get to the enter key, which was painful. I 3D printed them at Fablab Taipei. If you’re a hacker, or not, you should come hang.
Keycaps are normal, and I think I have Kailh Box Blacks in there. I recently lubed them all, which took a couple episodes of The Bear to accomplish. I don’t recommend doing this: Once you do it once, you can never go back, it’s just night and day so much better lubed. Here’s a somewhat poorly recorded video of how it sounds lubed vs unlubed (desk mat makes a HUGE improvement in sound).
What would be your dream setup?
TBH I think I already got it: I live in Taiwan and work from a desk that has everything I need and is ergonomic. I have all my hardware projects (toys) at hand, I can watch my lizard watch me all day, and there’s an espresso machine downstairs. Our walls, floor, and ceiling are thick concrete, so I crank the sub without my neighbors having any idea. Whenever I feel like it I can go to one of the billions of awesome cafés we have in Taipei (usually with a crew, we have a coworking squad). Sometimes we’ll even motorcycle to a beachside café or mountain café, a mere 20 minutes to an hour and a half ride, depending. You should consider moving to Taiwan. We have boba tea and socialized healthcare.
The only thing I’d change is it would be nice if my portable setup was more ergonomic. I got the split Corne with the Choco flat switches that’s hella portable, and that helps if I have the table space for it at a café, but there’s no getting around that when you’re looking at a laptop you’re staring down, and it’s rare for cafés to have standing counters. So café days I’m straining after a couple hours.