TL;DR: You can send and receive data using TURN by encoding data into username and IPv6 UDP address. Say that you have a HTTPS website. Modern web safety forbids it from accessing insecure parts of the network using HTTP. This is usually not an issue, since signing a HTTPS certificate for a website is fairly… Continue reading Crossing the Mixed Content Boundary: abusing STUN/TURN as a Communication Channel
IPv4 Network Address Translation for Steam (NAT4S)
TL;DR – I made Steam multiplayer possible with classic LAN games through a project called PartyLAN. It enables network address translation (NAT) between IPv4 and Steam IDs. Network address translation (NAT) is not an obscure concept – it has been in use since 1994. The basic idea is simple: a router, either software or hardware,… Continue reading IPv4 Network Address Translation for Steam (NAT4S)
Janky NTP – Setting System Time Using HTTP
I often find myself fighting with using NTP on linux machines – usually something goes wrong: maybe ntpdate isn’t there, or for some reason UDP is blocked, or maybe for some reason it just doesn’t want to do it. Here’s my janky version of ntpdate that overcomes those issues: Here’s ChatGPT explaining this bash one-liner… Continue reading Janky NTP – Setting System Time Using HTTP
File System as Partition Table
If you squint really hard – a partition table is basically a filesystem with only a handful of files – a partition table of, say, 4 partitions, is conceptually pretty much the same as a filesystem with only 4 files in it – the filesystem labels are the filenames, and the partitions are just the… Continue reading File System as Partition Table
CRT Miniature Arcade Cabinet
Hey I did a thing – a raspberry pi powered miniature arcade cabinet – with an actual real 4-inch monochrome CRT. Next step – port WASM4 to RPi0 (or wait for someone to do that).
Fixing Analog Stick Input in PPSSPP
PPSSPP is one of my favorite emulators. First introduced to me when I was still in high school, it is my go-to (or, only?) choice if I want to revisit some old PSP games. Though I ran into an issue that I was not able to run, only walk, diagonally in Metal Gear Solid: Peace… Continue reading Fixing Analog Stick Input in PPSSPP
Home Automation – Kubernetes Style
I’ve been using Smartthings as my smart home hub for a while. And I’d like to migrate to something that’s open source (or more importantly, self-hosted). There’s been a few horror stories out there that make me worry about the potential “hostage” situation. (e.g. manufacturers charging a monthly price for the service, or flat-out discontinuing… Continue reading Home Automation – Kubernetes Style
Upgrading K40 Cooling System with RGB and Peltier Cooler
The K40 laser cutter, if you know about it, comes with absolutely the bare minimum to get you started. Fortunately, it does comes with a cooling solution: You supply your own water bucket, fill it with distilled water, and drop in the supplied water pump. Failure to do that will probably result in a burnt… Continue reading Upgrading K40 Cooling System with RGB and Peltier Cooler
Etch-A-Sketch Pro – Rotary Encoders as Mouse(s)
I recently got a few of those rotary encoders – I was planning to make them into a follow-focus system. It’s a two part process: 1 – make a USB interface for them; 2 – make software that uses Canon’s EDSDK to interface with my camera. So I decided to start on 1, then I… Continue reading Etch-A-Sketch Pro – Rotary Encoders as Mouse(s)
Split Flap Display – Part 1
I recently came by this Technology Connection Video, and I am intrigued by the mechanism of a split flap mechanical clock. I then ran across this GitHub project for a split flap display and I decide to make my own. I made one tweak to the design: I made the letters laser engraved and cut… Continue reading Split Flap Display – Part 1