DEV Community

Shaheer Sarfaraz
Shaheer Sarfaraz

Posted on

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 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.

Since I had spent the better part of the previous year working on AutoClass, and dare I say I was really proud of it, I knew I had to include it with my uni apps. However, this presented another problem because our school doesn't have a strictly separate admin and counseling department. This means that I can't write about 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.

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 :).

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

I've paraded that we were skipping classes left, right, and center as wholly positive, which was in the short term, but the long term was soon approaching. 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.

Students started blaming AutoClass as a source of their failures. This was amusing because they knew the risks of missing practically all classes in 6 months, yet they blamed my program. Thankfully, at least my friends and I clawed our way out of the hell we created for ourselves.

Technically

AutoClass is also a reasonably efficient program in terms of the technologies used. The program's backbone 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.

After months of putting it off, I also 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.

The program's entire history and the various updates it went through are preserved in the git history of the main AutoClass Git Repo.

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 substantial project, and it will always have a place in my heart. Not because of the technical aspect of it, but because of the emotional factor of flying under the radar without flying too close to the sun.

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

Top comments (0)