The following is a selection of some projects that I’ve worked on with brief descriptions and relevant links by category. For more projects or recent activity, check out my GitHub for software creations and my hackster.io for hardware builds.
Discord is a platform for communicating, whether that’s with friends, for school, or as a part of a community. They support bots, which are non-human users you can interact with. Since I’m most familiar with Python, Discord bots I create use the discord.py package.
[#] Bird-ID is a Discord bot I created along with another student to help competitors study for the Ornithology Science Olympiad event. The bot pulls images and songs from the Macaulay Library and supports all of the Macaulay library filters, custom bird lists, scoring, racing, and much more. (June 2019 – Ongoing)
Based on this bot, I also created Fossil-ID (for the Fossils event), RFTS Bot (for the Reach for the Stars event), Minerobo (for the Rocks and Minerals event), and sciolyid, a Python package that Fossil-ID, Minerobo, and the RFTS Bot run off of.
Since there isn’t a great database for fossil or star images, images are contributed by users of the bot. To make this easier, I created a Flask-based API for
sciolyidthat powers a web interface allowing images to be easily uploaded to the Fossil/Star bots by users.
With over 1500 users across 600 Discord servers, this is by far the largest/longest-running project I’ve worked on, spanning more than a year of continuous improvements, feature additions, and bugfixes. This project has also allowed me to explore new technologies relating to managing applications, infrastructure, and more.
[#] PinIt! is a Discord bot I created for a private friend server to allow messages to be pinned by reacting to the message with a pushpin emoji . It also allows you to spell out messages with reactions through the “regional indicator” emojis, as well as react with the same emoji multiple times. (July/August 2020)
Sometimes I’ll get ideas for websites I can make. Sometimes I’ll actually make them.
[#] Twemoji Explorer is a website I created to improve my Twemoji usage workflow. Sometimes, while building websites, I want to sprinkle in some personality with Twemojis, my preferred emoji set. This site allows me to easily browse, copy, and use Twitter’s Twemoji. I also wrote up blog posts about searching large datasets such as a list of emojis, as well as improving mobile and keyboard usability. The site was created with Elder.js/Svelte. (June 2021)
[#] capitalfish.tomichen.com is an incremental game inspired by Cookie Clicker. It was originally created as a joke for my friends, but I later re-themed it for public release. CapitalFish was created with Svelte/SvelteKit/Tailwind, and I had fun using it! See my blog post about creating it. (April 2021)
[#] oldgum.tk (domain expired) was my first dive into web “design”/server management. When I was younger, I really liked thinking up fake product ideas and making advertisements for them, something I still enjoy. In sixth grade, some friends and I came up with the idea of Old Gum, which is essentially ABC gum that has been left out for a long time. Details are fuzzy, but basically I created a flyer advertising the product as well as a Google site, and then decided to create my own site with the help of a friend, who did all the CSS. (2017 – 2018)
To host the site, I used a Raspberry Pi running Apache at first, then Nginx. This was really a great playground for me to learn about web technologies and web servers. I also hosted a bunch of other small projects as well, and even made a website for a school math assignment!
I had an interest in web security as well, and having this server allowed me to learn different things related to that – setting up certificates for HTTPS, firewalls, and even using Cloudflare.
Having this server really allowed me to learn and experiment with different things. It was a great place to practice skills on a real machine, hosting things from toilet water to ASMR Russian Roulette to different easter egg hunts for my friends and even some (poorly made) browser games.
While the original Raspberry Pi is offline and the free domain has expired, I’ve uploaded the static files to Netlify. Links above link to the Netlify version.
Most of my hardware builds are on hackster.io and most of them were created as part of one of their contests. Here are a few highlights.
[#] Backpack Alarm was a project I did for fun after getting the idea one day. It used a compass to detect rotation, though the
LSM303sensor board also has an accelerometer that could be used. (June 2018/May 2019)
I adapted this concept a year later to create an interactive game for Maker Faire Bay Area 2019. The newer version used a cheap
ESP8266to serve a web page that times and scores players. You also had to traverse an obstacle course while trying not to set off the alarm. Unfortunately, the weather wasn’t great during our exhibition time slot, and we had to pack up early due to pouring rain.
[#] Wireless Magnetic Data Transfer was a project I did to see whether you could transmit data using magnetic fields. I came up with the idea for hackster.io’s Infineon 3D contest and was awarded one of their sensor boards for the idea. At the time, I didn’t really know how data was transmitted in real applications, so the design wasn’t really reliable if you wanted to actually send any data. Transmitting data this way also has many other drawbacks that make it impractical, but it’s an interesting concept nonetheless. (May/June 2018)
[#] Mindful Monkey Wire Game was a project I created for Maker Faire Bay Area 2017. It was a two-player game where players competed to complete the game as quickly as possible with as little touches as possible. (October 2015/May 2017/October 2017)
I exhibited a simpler variation about a year and a half prior at the 2015 East Bay Mini Maker Faire, which was only single player. The inspiration for this project came when I built a wire loop game at a summer camp and expanded on that idea later on.
[#] elves.py is a Python script I wrote to brute force an extra credit logic problem my math teacher assigned over winter break. Essentially, it loops through every single possible combination of values and checks each one against the limitations given by the problem. Some manual optimization on the search space was necessary, but it did return the correct result in the end. I submitted a copy of the code along with an explanation, and even got extra credit on the extra credit. I also submitted this as a creative product for a summer camp where I go into a bit more detail about what happened. (December 2019)
[#] 202020 was a Chrome extension I created to remind myself to look at something 20 feet away for 20 seconds every 20 minutes of staring at my screen, a strategy recommended by eye doctors to reduce eye strain. It uses the Chrome alarms API for timing. It wasn’t great, especially since the extension didn’t turn off while you were away, causing notifications to build up. This could definitely have been improved with some sort of idle detection, but I never got around to it. (June 2018)