Tuesday, May 16, 2023

Reviving this blog

Now that I'm working full time, I need a source of inspiration to see my personal projects through to fruition. Inspired by the updates I gave for my PyGame video game Explore back as a teenager, I would like to renew this blog as a place to give updates on my projects, even if my day-to-day is very different from the simple days of Explore :)

With this said, I have a number of unfinished projects in the works that I would like to see completed:

Color E-Ink Display

I recently purchased a 7.3" e-ink display from Pimoroni (Inky Frame 7.3" (Pico W Aboard)). It has an onboard Raspberry Pi Pico with WiFi and Bluetooth radios. I've decided to use it to create a helpful dashboard-type display to mount on the wall next to my standing desk. I hope to use it to display useful things like unread emails, Slack notifications, weather forecast, and more.
The Inky display sits on my shelf, with the factory image still displayed.

Facial Recognition Door Lock v2.0

Back in freshman year of college, I created a facial recognition automatic door lock for my dorm room. It used a Raspberry Pi model 2B with a Pi Camera Module to perform face recognition using OpenCV and the program was written in C++, as no Python bindings were available for ARM at that time. Its camera poked through the eye-hole in the door and a heavy-duty servo manipulated a 3D-printed assembly that could rotate the door's deadbolt lock in either position.

Now, 6 years later, I hope to recreate the success of my first door lock with new, upgraded tools. My hope is to learn about the advancements in facial recognition technology and write about my experience then vs. now.
Somehow I have no photos or videos of the door lock in my dorm, but I did find this photo of myself trying to compile OpenCV from source for ARM. (There were no distributables back then.) You had to adjust the compilation settings so that the gcc on the Pi would not run out of memory and crash.

GPT and ElevenLabs powered voice chat agent with personality

Thanks to OpenAI and ElevenLabs, the technology exists to create RoBro, your very own robotic bro. Extremely realistic inflections and emotional speech by ElevenLabs should allow us to load a Raspberry Pi with some speakers, a microphone, and a dude-bro personality. Other personality types, like an angry Roomba or seductive smart-door-lock may also be entertaining.

SDLGL: My pet game engine

SDLGL is a 2D game library that I have worked on on-and-off since 2017. Inspired by my humble beginnings using Allegro and PyGame, but frustrated with their limited capabilities, I have set out to create my own engine that uses SDL to interact with PC graphics, input, and sound. All other abstractions for game creation such as scene and entity management, collision, physics, animation, etc. are written from scratch in C++.

I see the project as a great way to learn in-depth about C++, game programming design patterns, and how to manage programming complexity as a project grows over time.

So far, I have created a simple top-down tank shooting game using the engine, but there is still lots of work and refactoring to be done before a useable game can be created in SDLGL.

A screenshot of my tank shooter POC game.

Looking forward

Clearly, there are a lot of projects I need to wrap up! I hope to post regular updates on my progress here, so that I feel inspired (or at least pressured) to finish them all.

-Grayson
 

No comments:

Post a Comment