← Back to Kevin's newslettersPublished: 2020 July 8

Luxury input device updates

I love it when plans come together! Since last newsletter, pretty much everything has arrived.

Behold, my luxury touchpad:

Kevin's finger touching a luxury touchpad PCB

with a glorious 15 by 10 pixel resolution, refreshing as fast as USB allows (~160 Hz).

While this prototype suffers from a low signal-to-noise ratio (press hard for best results), I suspect it’ll fix right up with some analog filtering. See the demo video on the project page for more details.

Of course, the big project from the past few months has been the split ortholinear bluetooth keyboard. The first revision PCBs arrived late June and, shockingly, the design seems to work: I can program the microcontroller, transmit over bluetooth, and use the USB-C port for both communication and charging the bare lithium polymer cells. (Which haven’t yet puffed up into explosive marshmallows; a sure sign that my battery protection circuit is spectacular.)

I’m keeping my keyboard physical design under wraps for now (spoiler: it is very thin), but in the meantime please enjoy this super-comprehensive packaging job from my battery supplier:

Very well packaged bare lithium polymer battery cells

(Again, hit me up if you need a few ~100 mAh 80mm x 13mm x 2mm bare lithium polymer cells…)

My plan is to get a single (5x5 key) board working first, then board-to-board wireless communication. I’ll skip a hardcoded left + right system design (boring!) and jump straight into some kind of dynamic mesh networking where boards can join, leave, and be remapped on the fly. I mean, I have 7 assembled prototype PCBs, why not combine them into a 175-key masterpiece?

Remote desktopping

After three months of AirBNBs + hotels, I’ve finally leased a proper apartment here in Taipei. Earlier today, a very nice man came by with a very nice fiber optic cable and now I can ping google.com in 3ms. (100M down / 40M up for $30/month; upgrades to 300M/100M, 500M/250M, or 1G/600M in $10/month increments — oh Comcast, I don’t miss you at all.)

With this kind of latency it’s (theoretically) feasible to work directly on a cloud server for all of my development needs.

This is something I’ve been thinking about a lot recently, mostly in 3 second bursts as Emacs desperately garbage collects after a Language Server Protocol conversation.

I mean, yeah, aesthetically I’m horrified that a 1970’s text editor running on a 1.7 GHz laptop with 8 GB of RAM struggles to keep up with my typing, but I can’t reasonably write my own editor until the keyboard is done!

Paying Jeff Bezos $2/hr for a 64 core, 128 GB of RAM machine seems like a reasonable interim fix. (I’m ruling out “buy a desktop computer” since I tried that six months ago and am now paying $0.27/hr for it to idle in a storage unit.)

Have any of y'all tried working exclusively on a remote machine? I’ve done a fair bit of typing across SSH, but it never felt comfortable.

I’ve heard good things about VSCode Remote but that feels like a leaky abstraction for my use case — I want the window manager on the remote so I can do everything there (IDEs, CAD tools, surf the web, watch YouTube, etc.) and never get confused about whether my windows and files are local or remote — they’re always all remote!

There are two parts to this problem:

  1. What’s the minimal local hardware required to drive, e.g., the 4k TV that was conveniently included with my apartment?
  2. What’s remote desktop software stack will that’ll work most effectively?

To the first question, I borrowed a Raspberry Pi 4 to test as a “thin client”. (No matter where in the world you are, you can befriend a nerd with an unused Raspberry Pi in their drawer.)

Unfortunately, it doesn’t look promising:

(1 GB RAM, clean install of Raspberry Pi OS Lite 2020-05-27 + XFCE4 desktop)

So, despite the camaraderie I feel with the Pi folks from our shared misunderstanding of the USB-C spec, I’ve got to look elsewhere for suitable thin client hardware.

Is a $400 Linux/Windows PC my best option here? A Chromecast, PlayStation, or Apple TV?

I have unlimited compute 3ms away, I just need to attach it to a mouse, keyboard, and TV — shouldn’t that be doable for about the same price as a standalone virtual reality headset?

As for the software stack, well, Wikipedia lists a lot of options. If you want to follow along with the gory details, I’ve documented a richer problem statement and am recording the technical details here.

In the mean time, definitely let me know if you’ve got ideas or experience about this!

Misc. stuff