Life Update
It certainly has been a long time since my last post! Between Adjusting to new roles and responsibilities in my professional life and learning new programming concepts and writing several scripts in my personal life, there really just hasn't been much time to do anything else.
I've had the great fortune of standing out to my superiors after showcasing and releasing a script to the rest of the team. The positive feedback and successful functionality was enough to convince my supervisor and manager to consider me for problems that require a programmatic solution. It didn't take long before I was tasked with developing automation for recovering remote devices - something I had already been secretly working on.
Having focused many, many hours on the automation script, I felt it was coming along nicely. I was able to modularize and organize it into a few separate files. This was my first time working on such a project, and I'd be lying if I said I didn't feel overwhelmed and out of my league, but I didn't quit. I used what I've learned, and for concepts I hadn't been familiar with, Google and ChatGPT proved extremely useful in learning more and more core concepts. During the process, I became very familiar and comfortable working with a number of common Python concepts:
- Lists, Dictionaries, and Tuples
- Importing functions from other scripts that I've written
- Mapping out complex and branching logic trees
- Using Wexpect (Windows version of Pexpect)
- Child processes (Super, super cool and so very useful)
Alas, while my time spent working on this project was hardly a waste, it was entirely unnecessary! In my attempts to branch out and connect with others in my company who were heavily involved in software development, I learned that there was already a team of individuals working on the very same project! I almost felt defeated at first, but I tried to leverage my own work instead of letting it get to me. Fortunately, it paid off.
I received a message from my manager, asking how I'd feel about working closely with those same developers, dedicated three-fifths of my week to assisting them. Needless to say, I was incredibly excited, immediately agreeing. Since then, I've spent most of my time working not in Python, but in Ruby of all things. I have NO experience with Ruby other than learning to navigate our Ruby on Rails console to interact with the back-end environment. Learning on the fly has been a real challenge. There are a lot of quirks that feel foreign compared to Python, but despite this, I've already contributed to one script and fully wrote another script with some guidance. Both scripts have been reviewed, tested, and approved for fleet-wide usage immediately, with engineers reporting successful recovery of several devices.
I'm very, very excited to continue working along side these developers, and to continue contributing to our codebase framework.
In other less exciting news, I've realized that I won't be attending school for a second semester in a row, and it really sucks. My dream is to earn a masters in comp science, and to work side by side with the experts on machine learning. I have faith that I'll get there someday, especially with how driven I've become. For now, I need to do what's best for my family and I, and another semester is simply not something that I can afford.
Instead, I've had a bit of fun experimenting with ChatGPT and random projects, such as developing a simple AI that can learn to play Tic-Tac-Toe. I had some fun with this one. I started first with Q-learning, but then switched to Deep Reinforcement learning, and I was surprised at some of the behaviors that I witnessed. I'm still far from fully understanding everything that happened, and I'm really not ready to dive into the code or libraries that ChatGPT gave me, but it was fascinating none-the-less. From what I could gather through many, many repeated tests and adjustments, it seemed the that two agents were more content with securing a draw rather than risking a loss. Neither could be convinced to branch out to try untested moves. Definitely something I'll get into more, later.
Another laughable project was actually prompted by my therapist - he asked how difficult it would be to design a program that would allow a user to speak into a mic and receive a verbal response back from AI, similar to many existing AI programs such as Alexa, Siri, Bixby, etc. After brainstorming for a few moments, I broke it down into steps:
- User speaks into mic
- Script captures audio input and converts it to text
- Text is fed to a LLM (ChatGPT in this case)
- LLM responds with text
- Text is converted to speech, being read aloud to the user
It took about 10 or 15 minutes to get a rough, but functional version of this working with ChatGPT, requiring that I get my secret key from OpenAI, running into old deprecated libraries, and a few bugs here and there, but in the end- it worked. Though, I'm serious when I say rough - it was BAD. Yeah, it absolutely did what it was supposed to do, but if your question was more than 1 second long, it would cut you off and respond only with what it heard, in which sometimes it really didn't hear much. While this could be a cool project to polish in the future, I don't have much use for it in the near future, so it's collecting dust. Still pretty fun to experiment with.
Finally, the largest project that I've been working on, and probably my most ambitious by far, is an app designed for Android devices (Maybe iOS in the future?). The app is currently intended to be an educational flashcard tool. I came up with this on the fly, wondering if I could realistically create something that has enough value to others to be worth pushing to the Play Store.
In a nutshell...
- The app will feature (hopefully) thousands of premade flashcards split across many different categories such as English, Mathematics, Science, History, etc, and then separated by complexity.
- Science > Biology > Zoology > Mammalogy > Basic / Intermediate / Advanced, for example.
- There are currently three tiers:
- Free - Access to most categories and most topics / sub-topics
- Premium - Access to all categories, most topics / sub-topics, ability to generate cards with ChatGPT, ability to rate cards with a like/dislike system
- Pro - Access to all categories, all topics, fewer restrictions with ChatGPT generations (More tokens for generation).
- Premium and pro users will be able to comment on cards, create their own cards, use AI to generate cards, like/dislike cards, save cards to user-created lists, and generate quizzes.
- Cards that reach a certain threshold will be deprioritized from the pool, and eventually removed completely if they are disliked enough
- Possibility of adding a role for verified educators to have extra permissions and benefits
Most of the back-end work has been finished already. It's pretty robust so far, but I'm not looking forward to front-end development. I have no experience in front-end work, and I suspect I'll be heavily reliant on ChatGPT for assistance.
I believe its safe to say that I've been overwhelmingly busy. I've had no time for my friends and very little time for entertainment. I've spent probably 20 minutes talking to friends in the past month, down from an average of probably 4 to 6 hours per day. It's a similar story with video games. It's not uncommon for me to spend about 12 or more hours per day playing games (Including time in which the game is open, but not interacted with). The past month? maybe 20 hours total. It honestly feels strange not to spend so much time gaming, but I've been unexpectedly happy, knowing I'm putting my time toward something that actually matters.
I have no idea when the next blog post will arrive - fingers crossed that I'll be able to get on a weekly schedule, but knowing me, that seems highly unlikely. Adapting to voluntary strict schedules has never been a forte of mine, but I try my best. At some point, I'll try to update the blog website with all of the new skills I've developed and at least make reference to some of the scripts I've written, though all of it is proprietary company property now, so I'm sure I can't share very much.