A terminal-based Uno game
This was my final project from ECE 175, my introductory C programming course. We were tasked with creating the game Uno in C. I completed the base game as well as most of the extra credit opportunities, like allowing an arbitrary number of players and an Uno "AI" to play against. It was an interesting project and I thought it was a good cumulative test of our C programming skills.A small robot with a 2-axis gimbal
This was a fun project that I worked on all the way back in 2016. I apologize for the picture, by the way. My camera skills weren't amazing at the time. Let me describe what a skycam is. This is a 3d-printed robot that uses continuous servo motors to roll itself along a taut wire and stream video or take pictures using the 2-axis gimbal and camera on the underside. There is a raspberry pi as the brains of the operation, running the remote controls, as well as the video streaming. I started this project when I found it in a 3d printing book from Makezine. I used the provided 3d printable files, but decided to do all of the internal wiring and programming on my own. It was one of the first electronics projects I had done that could actually do things in the real world beyond making an LED blink, so I was excited.A python client for the OpenRGB SDK
OpenRGB is a pretty great piece of software. It allows you to control the RGB on PC components on any platform and is vendor-agnostic, meaning that instead of needing four different applications on your computer, you can have one open source program instead! I created a python client to control OpenRGB, making it super easy to control your lights with code. It communicates with OpenRGB via it's SDK server, which is basically just a custom binary protocol over network sockets. I learned a lot about low-level memory access during this project, despite working in python. I initially created the library because I wanted to be able to set the lights of my computer to change based on the temperature of the components, so that I could check if my desktop was overheating at a glance. However, the library gained popularity to the point where I was mostly developing it for other people to use rather than my own personal use. I occasionally find an interesting use case for it, like when I used it sync my RGB with the video game Hue, but I've mostly just been maintaining it ever since, updating it whenever OpenRGB supports new features and assisting with any issues that arise.The Circuit Breakers' robot for the 2020-2021 FIRST Robotics Competition Seasons
These seasons of FRC (FIRST Robotics Competition) were rough. In March of 2020, we were fresh off of our build season with a more-or-less completed robot ready to compete with other teams. We loaded up all of our equipment and drove it down to the Central Valley Regional in Fresno. On the morning we were supposed to start competing, the competition got cancelled due to COVID-19. While COVID put a bit of a damper on the whole thing, we still had fun making the robot in 2020, and improving it whenever we were allowed to be in The Lab at school in 2021. I was the captain of the programming division during this time, so I wrote a large portion of the C++ code controlling all of the motors on Procyon and reacting to the drivers inputs and other sensors. We even managed to get camera assisted aiming working using OpenCV and autonomous navigation around pre-defined paths.My various websites
I've gotten into web development many times over the years. It's usually caused by either me reading about some new interesting web technology like web bluetooth or by me wanting to develop an application and coming to the conclusion that the best way to make a cross-platform application is with a website. The point is, I don't particularly enjoy web development, but I understand its usefulness, so when I want to control a skycam or create an application to send relatives christmas cheer, I turn to web apps. For a while now, I have had this one awful-looking blue website hosted by heroku with the frontend done in React and the backend begin a flask server. I've used that website for a lot of things over the years, but with heroku ending its free tier and me getting some tiny idea of how graphic design works, I decided that it was time to make something new from the hosting providor up. I went with cloudflare+sveltekit to get me started on a new site because it seemed like one of the best free hosting providors. I've been pretty happy with both so far, though local development with cloudflare's wrangler tool was a bit of a pain to set up. I also found tailwind during the development process which has been very helpful. This website, I hope, will be a long-term space for me to showcase my projects like this, and hopefully do other stuff as well. Now, I just need to pick out a domain...