Power-Ahn

During Fall of 2022, I had just joined the IEEE student org at UCSD, and I decided to participate in their quarterly projects initiative. My friend and I, as well as three other students were put into a team to build a project together over the course of 10 weeks, with the theme of "productivity". We decided to make a tool that helps it's users keep track of the tasks that they needed to do next, but goes a step further by opening the application that they need to perform their task. This is especially handy if the user prefers to keep their desktop clean and does not have many shortcuts, as it saves them the time of searching for the app on their computer and then opening it.

By the end of the 10-week period, we had a functional Windows desktop application that could actually schedule apps to open at a certain time, and they would open on time. The UI was a bit simplistic and we did not have time to add more fancier features, but I certainly learned and accomplished a lot during this project. We faced a great deal of challenges, such as issues with version control conflicts (at the time we were still relatively new to version control as freshmen) that I had to fix, learning through the process on how to merge and resolve conflicts. We also had issues with the database, as we initially opted to use a server based database, but realized that it would be inefficient, since the tool is meant to be for local use and should not require internet access. I spent several hours working to resolve that, switching our app to Apache Derby, locally hosted in the app itself.

In addition to the database, I worked on a good chunk of the backend, writing out the code for scheduling tasks using a thread pool manager inbuilt into Java called ScheduledExectorService, which was my first experience dealing with threading. Through API docs for the library, I learned quite a bit about threading, scheduling and thread pools. These concepts seemed really complicated then, but after taking some classes, make more sense now. The most important part that I developed for the project however, was the AUMID retriver itself. I wrote the code to search for all the apps on the local machine using a PowerShell command, and then store the app AUMIDs as values in a HashMap with the app names as keys. When a user would enter an app name to schedule, the program would search for the app name in the HashMap and then store the AUMID in the scheduled task, which would allow the app to be automatically launched at the appropriate time by another command.

Overall although our final app was pretty small, I'm proud of what we accomplished, given that my friend and I were pretty new to object oriented programming with data structures. Threading and CRUD (database functionality), are both pretty advanced concepts, so I'm glad that I was able to enhance my prior preliminary experience with them and incorporate them into an actual product. Github link: GitHub Link


Starting a timer in the app.

The timer count down screen.

Creating an automated task in the app.