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 that…… Continue reading sparsebundle-fuse: Another Implementation for Reading / Writing MacOS Sparsebundles on Linux
Category: Uncategorized
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 using…… Continue 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 the…… Continue 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 is…… Continue 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. The…… Continue 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 previous…… Continue 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 be…… Continue 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 decryptSave sniffed data (probe requests) to a databaseAnalyze probe requests and deduce occupancyProvide public APIs for retrieval of occupancy information I’m using python3 for the server since…… Continue reading The Making of the Library Occupancy Estimation System, Part 3 – the Server
The Making of the Library Occupancy Estimation System, Part 2 – the Sniffer
So I proved that this idea is somewhat feasible. There were two major problems that need to be addressed: 1. there were too many probe requests, 2. there needed to be some way to send found devices back to a server. The “too many probe requests” problem was easy to fix. I implemented a bloom…… Continue reading The Making of the Library Occupancy Estimation System, Part 2 – the Sniffer