ARM Cortex Game


ARM

Final project for ECE 362 (Microcontrollers). The objective was to use the limited resources and protocols of an ARM Cortex M0 to make an interactive game with sound. This was probably the most I've enjoyed myself of any project so far at Purdue. Game inputs and video outputs were all through a serial terminal on my computer. For audio, the microcontroller played MIDI files directly into a speaker. This project made me really understand my passion for hardware and low-level programming.

Skills used: C, Assembly, MIDI, Serial, ARM Cortex

Reddit but Worse


Reddit but Worse

This was the final project for ECE 364/49595 (Software Engineering). The assignment was to combine all our knowlege collected over the semester and create our own version of Reddit. My implementation supported adding/deleting users, post creation/deletion, upvotes/downvotes, profile pictures, timestamps, and more.

Skills used: Python, Flask, MySQL, HTML, Javascript, CSS, Bootstrap

Chicken Camera/Coop


Chicken Cam Chicken Coop

My family and I decided that before we moved out of the South, we wanted to raise some chickens. While they were still chicks, I had my mother's old smarphone acting as a 24/7 chicken cam. I used an RTC app to send a live video stream to my server. From there it was broadcast live as an HLS stream over the internet (my grandparents particularly enjoyed watching them grow). When they grew up, I found some plans for a chicken coop I liked and spent about a week constructing the coop. I also used my 3D printer to create a nameplate for the coop, as well as water and food dispensers.

Skills used: Nginx, HLS, RTC, Android, 3D Printing, General construction

Server


Server

My dad and I bought a used Dell Poweredge 710 off of eBay a few years ago. Before that, I used an old PC as a server, but the Dell was a much more capable machine, with 6 TB of storage in a RAID array, 8 Xeon threads, and 64 GB of RAM. Currently, it's running Proxmox with Turnkey containers and Ubuntu VMs. It's running instances of Samba for local file sharing, Nextcloud for remote file access, Plex for media, and Pihole for DNS-level adblocking. I also use it as a Minecraft server for myself and my friends.

Skills used: Linux, Proxmox, Networking, Samba, DNS, SSH

Network Upgrade


Router

The house 21 others and I currently live in had a terrible network setup when I moved in. I was serving as our orginazation's Treasurer at the time, and decided to take matters into my own hands. I wrote a comprehensive proposal for a house-wide WiFi upgrade, purchased the equipment with house funds, and set up the system myself with no outside help. I ended up going with 6 Ubiquiti AP AC Lites distributed across all 4 floors, as well as a Ubiquiti Cloud Key and a UPS for backup. This was a massive upgrade over the patchwork system we had earlier of cheap/donated routers left from previous residents.

Skills used: Networking, Planning, Communication

White Elephant


White Elephant

I wrote a small White Elephant program for my girlfriend's lab group. Because everyone was social-distancing, there was no way to exchange gifts face-to-face, so I took the opportunity to practice my coding. This project is notable because I hadn't played White Elephant before, and still haven't. I'm told it was a success!

Skills used: Python, Pygame

Compiler


Compiler but Worse

This was also a final project for a class. Over the course of the semester, we learned how compilers worked and worked on parts of our own compiler that turned a simplified version of C into Assembly.

Skills used: C, Java, ANTLR, Assembly

© 2021 Andrew Smolensky. All rights reserved.