The Mysterious CFexpress Card Specification / Pinout

It seems like CFexpress is going to replace CFast and CF card as the new de-facto DSLR storage medium, at least for Japanese camera manufacturers. The Internet kept its mouth very shut about what this CFexpress Card actually is, with specification no where to be found. However, piecing a few separate pieces of information together,Continue reading “The Mysterious CFexpress Card Specification / Pinout”

sparsebundle-fuse: Another Implementation for Reading / Writing MacOS Sparsebundles on Linux

There are already a sparsebundle implementation for Linux, but that’s read-only and only supports FUSE. This implementation is read / write, AND supports NBD (network block device) so the sparsebundle actually appears as a block device on the system, without you needing to loop mount the file in FUSE. There are some useful things thatContinue reading “sparsebundle-fuse: Another Implementation for Reading / Writing MacOS Sparsebundles on Linux”

Making a Pittsburgh Map Coaster

Inspired by Dr. Chris Harrison’s Laser-Cut Map project, and since I have a laser cutter myself (because why not), I decided to make my own Pittsburgh Map Coaster, and probably another one for Shanghai. I’ve been living in Pittsburgh for about 6 years now and there’s definitely a part inside me that belongs to Pittsburgh.Continue reading “Making a Pittsburgh Map Coaster”

DIY $10 Slack Notification Light

While being isolated at home, my company uses Slack more heavily than ever, and that Slack chime is starting to get old. What if there’s a physical light that can notify me instead? I have a Smoko ambient light and a few of Digisparks lying around screaming “use me!”. So I started the project usingContinue reading “DIY $10 Slack Notification Light”

Fixing a Clothing Rack during COVID-19 Lock-down

My clothes hanging rack is broken for a bit of time has developed a crack. It’s obviously time to fix it. I already have a piece of aluminum pipe on hand that should serve as a clothes hanging pole. The only problem is that I don’t have the hardware to mount the pole to theContinue reading “Fixing a Clothing Rack during COVID-19 Lock-down”

Library Occupancy Project Follow Up

The occupancy project is now deployed at Sorrells Library. After running for more than a week, it’s time to see how it performs… So I dumped the database, feed the dump into a python script for processing, and plotted occupancy for each day. And the results are surprisingly good! Let’s take a look. Here isContinue reading “Library Occupancy Project Follow Up”

Fixing DjVu eBooks with Problematic Page Sizes

There are a lot of scanned books in the DjVu format, but many of them are not professionally scanned. One of the DjVu books I encounter has different page sizes (page size changes every few pages). There are nice pdf scaling programs, but no such program for DjVu exists. So I made my own. TheContinue reading “Fixing DjVu eBooks with Problematic Page Sizes”

The Making of the Library Occupancy Estimation System, Part 5 – the Enclosure

It’s almost time to deploy the ESP8266s. I switched from the previous board to wemos mini lite, a smaller board with a variant of ESP8266 (ESP8285). The ESP8285 includes a on-chip 1M EEPROM, reducing the cost. The most important difference is that the newer boards don’t have pre-soldered pin headers. Desoldering pins from the previousContinue reading “The Making of the Library Occupancy Estimation System, Part 5 – the Enclosure”

The Making of the Library Occupancy Estimation System, Part 4 – the Frontend

The only part missing was a front-end. It is 2017, and splitting up front-end and back-end is now a must. This is even more true in this project: serving html and other resources from my free Heroku server does not sound like a good plan – with only 1 web instance, the server can beContinue reading “The Making of the Library Occupancy Estimation System, Part 4 – the Frontend”

The Making of the Library Occupancy Estimation System, Part 3 – the Server

So the sniffer part was complete. The server was the missing piece of the puzzle. The server needs to do several things Receive data from the sniffer and decrypt Save sniffed data (probe requests) to a database Analyze probe requests and deduce occupancy Provide public APIs for retrieval of occupancy information I’m using python3 forContinue reading “The Making of the Library Occupancy Estimation System, Part 3 – the Server”