Saving Time, By Wasting It - The Story Of AutoClass
The Idea
Because of online lessons during the lockdown, my friends and I thought that getting out of bed at 8:00 a.m. to sit in front of a screen with a monotonous teacher teaching an unimportant topic was boring.
This was about to change since it occurred to me that classes typically start at the same time each day. The starting time of a lesson is scheduled in advance and doesn't change much from day to day. This means that instead of waking up at 8 am to take my class, the computer would know it's 8 am, know it's time for a class, and join that class's Zoom meeting code.
The Program
The heart of the program does just this. However, some changes still needed to be made to make AutoClass an actually easy (read: usable) program for me and my classmates. The most important of these changes was ensuring you joined the meeting even if something unexpected happened.
Of course, teachers are also humans, and they can't always start their classes strictly at the chime of the hour, so that's a good starting point for where to start handling these edge cases. Technically, the program went through quite a few stages since sometimes, I'd wake up at 12:00 and realize the program failed to join any classes before this time. I'd trace down what went wrong and fix it in the next update.
Over time, I developed AutoClass into utterly impenetrable software that could handle the most extreme edge circumstances. An example is when the teacher forgot to start the lesson until much later than the scheduled time or when the teacher removed me (read: my computer) from the classroom.
All of this combined meant that regular online classes merely served as a testbed for new features and improvements I'd implemented in AutoClass, not as a source of academic learning. My classmates and I started to push the limits of AutoClass and the school's management once the software had proven reliable to a certain extent.
Difficulties Unrelated To Development
University Applications
Since I had spent the better part of a year working on AutoClass, and because I was really proud of it, I knew I had to include it with my university applications. However, this presented another problem because our school doesn't have a strictly separate admin and counseling department. This means that I can't describe AutoClass without also revealing that I wasn't taking any of my classes. I had to work around this by entrusting my work to only one of the councilors I trusted a little more to not open my secret, at least until I passed the school.
Hybrid Classes
Development continued until the school shifted to a hybrid approach where some classes were on-campus, with the option to take them online if you so preferred. I would leave AutoClass running at home even when attending the school in person since I wasn't ready to stop the constant progress and improvement. Hence, there was a time when a person named "Shaheer Sarfaraz" was present in a class in person and online. This is, of course, extremely easy for any half-competent admin department to identify as an issue. Thankfully for us, this wasn't an issue :).
Classmates
There's still the fact that my classmates are pretty observant, and so there were a few times when some of them called me out, saying, "wait, you're here in person, I swear I saw you in the online class as well." I was forced to make something up to ensure my "secret" wasn't discovered. I doubt that anyone was buying my shenanigans, however.
The Consequences
In the short run, it is true that we were skipping lectures left, right, and center; nevertheless, the long term was rapidly coming. Mock exams took place in our school before the A Levels exams, and my entire friend group knew absolutely nothing. Not even what we had to know.
Because we weren't taking any classes, our academic performance declined sharply. We were unable to approach our teachers since, in their eyes, given our exemplary attendance record, we had to be familiar with every subject at the very least. This couldn't be farther from the truth, so we knew we had to study by scraping together all the Indian Youtube Channels to help us out. All of my pals and I survived after numerous weeks of studying eight hours a day. We managed to scrape together enough grades to get us into great universities.
There were some however were not as lucky, and they started blaming AutoClass as a source of their failures. This is amusing because I thought the risks of missing practically all classes in 6 months was fairly obvious, yet they blamed my program. Thankfully, at least my friends and I clawed our way out of the challenging situation we created for ourselves.
The Code
AutoClass is quite an efficient program in terms of the technologies used. The program is written in Python, with a library called pyautogui
for automation. The classes are picked using a spreadsheet, so it's easy for anyone to start with their classes and timings. The codebase is easy to work on, with a clear separation of concerns (for the most part).
After months of putting it off, I implemented a functional UI to represent the program's state and classes, e.g., a color-coded list of all online classes. This allowed you to view your chosen settings, such as how long you wanted to attempt to join the class or your display colors.
A problem I had to solve was making the program exit the already running class before opening a new one. I took inspiration from JavaScript's EVENT_LOOP
to make sure two events at the same time took place in the correct order. An instance of this is that the program must leave the presently running class before joining the subsequent one if one class finishes and another begins at the same time. The implementation looks like this.
EVENT_LOOP
to end the previous class before opening the next
A Showcase Of The Final Project
When there are more classes for the day
When all classes for the day are done
YAML file to change colours
YAML file to update your preferences
CSV file to add your classes
I've Graduated
I'm happy to report I've now graduated from Benchmark School System ๐. With this comes the end of development of AutoClass since I'm no longer taking online classes.
Throughout, AutoClass has been a very significant project, and it will always have a place in my heart. Maybe not because of the technical aspect of it, but because of the emotional and social factor of taking flight, without flying too close to the sun.
View the project!
The program's entire history and the various updates it went through are preserved in the git history of the main AutoClass Git Repo.
Get In Touch
๐ Hi, Iโm @DaKheera47, you may know me as Shaheer Sarfaraz
๐ Iโm interested in making web apps in React and Node, and you can view more of my projects here
๐ป I'm also passionate about automating everything to improve my day-to-day life
๐ฑ Currently, Iโm working as a Full Stack Web Developer at Project Mirage, a Design And Development Consultancy
๐ซ I'm free to talk any time on my email address, shaheer30sarfaraz@gmail.com
Subscribe to my newsletter
Read articles from Shaheer Sarfaraz directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Shaheer Sarfaraz
Shaheer Sarfaraz
I'm a Pakistani teenager with a passion for web development and automation