Hello, I'm Garfie Chiu.
I'm an Android Developer
Me in a pool of Android plushies at the Urbana-Champaign hackathon.
Hi! My name is Garfie, a Chicago native. I'm a software developer specializing in Android app development. I graduated from the University of Illinois at Chicago in 2019. During that time, I took an internship at BMW Technology to help refactor some legacy code and notably created a maps library for integrating multiple map providers. I now work at Groupon and- lo and behold, once again worked on map related features that led me to open-source KatMaps.
Besides my passion for maps, I love food, I love road tripping, I enjoy cars, and I love building things. I enjoy grubbing food from all over the city, chefing up food, and watching food videos from the likes of Babish or Ugly Delicious. I have strong inclinations towards taking the occasional weekend get away road-trip to nearby state parks for a hike. I am highly enthusiastic on learning about, driving, and working on cars. I love my parent's Honda Odyssey as much as my former BMW E85 Z4 as much as my current Tesla Model 3. As an engineer, I also have an affinity towards learning/building/tinkering with software/hardware (from micro-controllers to mechanical parts).
Bachelors of Science in Computer Science c/o 2019
Key Courses
Co-op
Focused on designing and developing an Android Kotlin library to streamline the use of multiple geographic map providers like Google Maps, HERE Maps, and AutoNavi Maps through a common declarative API. Also worked on developing an Android app for employees to make snack purchases using their phones and analyzing battery impact of FindMate feature with Android Oreo behavioral changes in the Mini Connected app.
Summer Internship
Worked primarily on BMW Connected Android app refactoring legacy login system and deploying smartphone testing farm for remote testing and automated UI testing. Documented solutions to common build issues. Helped identify issues with web app that prevented customers from using the Android app.
Coming soon!
In this hackathon, the objective was to create an application of our choice that used Smartcar's APIs. Smartcar is a start-up that provides a common API that enables developers to communiate with a wide variety of internet connected cars from different manufactures. Considering that I was recently working on the BMW Connected app at the time, I figured that a utility application would be the obvious choice and one that most groups would be doing. Thus, I decided that it would be fun to gamify the API with a geo-caching Android application.
This is something I've wanted to do for a long time. I've previously created a proof-of-concept many moons ago via Tasker profiles (for the uninitiated, Tasker is a powerful automation app for Android), so I knew this was possible. The approach was simple, we live in an era that is fairly dense with WiFi access points. All I had to do was perform some simple WiFi triangulation on a few networks to determine what room I was in. Since I had to manually create a few dozen profiles in Tasker just to get various signal strengths from WiFi scans, I had to limit myself to two access points for room detection. Even with this severe limitation, I was able to get pretty good room level precision. I was able to map detect whether I was in my bedroom, kitchen, living room, or basement. With this context, one of my use cases was that I could tell Google Now to "play music" and it would know which room's Chromecast to play to (this was way before Google switched to Assistant and shortly before IoT devices became commonplace). This made me feel pretty cool at the time.
Eventually, I had the technical skills to make something like this. In designing Where Am I, I wanted to be cross-platform, but with an priority emphasis on Android. I had no Android development experience at this time but wanted to ultimately port this library over to Android. This influenced my decision to write the library in Kotlin and use SQLite for persistence. I designed a common API where there could be multiple implementations of fingerprinting and implementations for different platforms. For fingerprinting, I let the user provide a name/tag for the location they're doing a WiFi scan snapshot of. The lookup algorithm works by checking how many of the access points fall within the min/max range for each relevant access point. A higher proportion of access points hitting the snapshot range will yield a higher confidence that the user is at the predicted location. The result was that I was able to distinguish between rooms on the UIC campus given a few meters apart with reasonable accuracy and precision.
Funny thing is, in my attempt to find a way to get this library to perform Wifi scans on Windows, I noticed that someone else had created a library with the exact same name with the exact same goal but with Python and using scikit-learn instead of my more primative fingerprinting method. It was like a déjà vu moment for me. In the end, it was still fun to make, and I was able to build the thing I wanted to make for so long.
It's open-source, find the library here! - Where Am I
Coming soon!
Coming soon!
The intention is to make you feel morbid... Technology is often a double edged sword: it can help us but can also hurt us. I wanted to explore how technology can be used to elicit a response from people that's not always desirable. In many cases, the effects of technology on people are not apparent. In this case of this project, I wanted to exaggerated this malicious feeling.
Smile Bot 5000 works by illuminating a lighted gallery platform only if the viewer puts on a big grin. Unfortunately for the viewer, the gallery pictures are depressing pictures of adults and kids having a terrible day and the only way they could see the gallery is by grinning through it... really makes you feel like a jerk afterwards.
Find my tutorial here! - Smile Enforcement Bot 5000
Coming soon!