Projects | Bryan Zhu

(still in the process of writing everything up to post it)

Hardware Projects

I've been looking into designing my own electric circuits in order to get more familiar with the Altium PCB designer and circuit design best practices.

  • Custom Mechanical Keyboard - I love my Ergodox, but there a some keys that I use much more than others due to their arrangement. I've been looking into designing a split keyboard layout of my own that is more suited to my own typing habits. Like the Ergodox and many other open-source keyboards, the plan is to use a Teensy flashed with QMK to program key commands. (in-progress)

Software Projects

Raspberry Pi mini-computers are wonderful things. I initially bought one to to use as a cheap workstation, but there are other fun and useful applications for it. I keep a RPi 3 Model B on my desk cobbled to a breadboard for prototyping, but usually transfer projects over to a Zero W or Zero once I consider them finalized.

I prefer these over microcontroller boards like the Arduino because I'm more experienced with high-level programming languages, but I do have a Freescale Freedom-K64F microcontroller board available that I purchased previously for a university class. The Raspberry Pi's only disadvantage is its lack of a built-in Analog-to-Digital Converter, but hey, that's what ADC ICs are for right?

  • Alarm Mat - a talking alarm clock controlled by a pressure mat; also outputs weather and upcoming calendar events (in-progress)

  • OctoPi configuration on an RPi Zero W - setting up OctoPi on my Raspberry Pi Zero W for use with my Anet A8 3D printer

3D Printing Projects

I purchased the inexpensive Anet A8 DIY 3D printer kit (a Prusa i3 clone) as a hobby kit and was not expecting it to be this useful or fun to tinker with. However, as it is now, I would not recommend it to anyone looking to purchase a 3D printer, due to a number of safety modifications that need to be made to avoid burning your house down. I won a Monoprice Select Mini V2 in a hackathon more recently, so I've been sticking with that printer for smaller prints and heading down to the university makerspace to print larger pieces, but I still learned a lot while putting together and troubleshooting my Anet A8. All that is documented below.

  • Assembly with Hardware Upgrades - putting it all together after opening the box, plus hardware upgrades to the base kit for safety and convenience (in-progress)

  • Calibrating Print Settings - tweaking print settings to get the best quality I can with various filament types

  • Installing Printed Upgrades - reassembling the printer with printed improvements

  • Print Showcase - some of the more useful things I've designed and printed

Android Apps

Java was my first programming language. I find Python more useful for personal projects nowadays, but I don't want my ability to program with the former to decline, so I've been coding small apps in Android Studio.

  • [Name TBD] - just another location and time-based notification/alarm app (in-progress, no ETA)

Unreal Engine 4

Learning this engine has been an ongoing hobby of mine. It was an opportunity to teach myself C++ and 3D modeling.

  • BCITreeShadow - a small demo where leaf and branch shadows are influenced by brainwave inputs from a BCI (Brain-Computer Interface) device; in this case, an electroencephalogram (EEG)


  • Home NAS - building and configuring a backup server that will be used as a NAS, VM host, and IP camera NVR (in-progress)

  • British/American-English Spellchecker - a Python module that looks through a document and lists all occurances of words with alternate British-English and American-English spellings (in-progress)

  • Custom Fightstick - I made my own arcade fightstick out of hardwood and acrylic; uses Sanwa parts and button silencers (in-progress)

  • Apache Server folder download script - my first ever Python script (from when I started teaching myself the language near the end of 2012, the script itself was finished in January 2013); downloaded music files off of an Apache web server