Mar 2019

FERI timetable app says good bye

When I started my first year at the Faculty of Electrical Engineering and Computer Science in Maribor, I was very confused. I never knew where my next lecture was. So I would pull out my laptop in the middle of a hallway and look it up on the school’s website, which was so poorly designed that it was basically useless on a mobile phone. The fact that the faculty of computer science hadn’t had a mobile application for their timetables bothered me so much, that I had decided to make my own.

I opened up Android Studio and made a new project called "test". And believe it or not, this is how the first version of FERI urnik was named just until the first release. I had next to zero experience with android development at that time, so my plan was to put one WebView in main Activity and do the rest with HTML and JavaScript. I have also asked my schoolmate Gal if he wanted to participate in the development. He agreed and that is how FERI urnik development team was formed :P Gal was a huge fan of android widgets, so we decided that he would take over the widget development and I would take over the rest.

At the beginning, we had one big problem. We hadn’t had access to the database. I mean... who would give access to the database to a bunch of freshmen. Luckily, I figured it out. On the web interface for school timetables, there was a button to export timetable as an ics calendar file. By looking at network requests that were sent when I pressed that button, I was able to reverse engineer correct parameters for getting a timetable for specific program or branch. All we had to do then, is to parse that ics file and display the timetable. And that was pretty much it for the FERI urnik v1.0 which was released on 16 Apr 2015.

FERI urnik v1.0 vs v3.3
Custom events activity in FERI urnik v1.2 vs v3.3
Widget in FERI urnik v1.0 vs v3.3
FERI urnik v1.0 released on 16 Apr 2015, custom events activity in v1.2 and widget in v1.2 (left), against last FERI urnik version v3.3 (right).

The app quickly became popular among students. People started asking us to make FERI urnik for iOS and Windows phone (yes Windows phone was still a thing at that time, I guess). Over time we gained around 1400 active users, which is quite good if you consider that FERI has around 2000 students. Since 2015, we released 3 major versions of FERI urnik and a total of 15 (minor) updates with the last version number being v3.3. We eventually decided to rewrite the whole application in native Java, which greatly improved user experience. At some point, we also got read-only access to the database, which allowed us to get rid of the ics file parsing (spaghetti code as Gal would call it) and write our own web service. Direct access to the database enabled us to implement a lot more features such as displaying schedule notes, holidays or more robust updates. We have also added a lot of the features on specific requests from students, like selecting events to hide from the timetable, adding custom weekly or one-time events, displaying multiple events on the same time etc.

FERI urnik android project SLOC statistics.
FERI urnik web service SLOC statistics.
Here are some statistics (number of files, blank lines, comment lines, SLOC) for android and web service project.

But as you know... everything has an end (except a sausage has 2). At the end of 2018, the company who owns a database called us with a request to buy FERI urnik app. At first, this looked like a great option for us. Our student life is approaching to an end, and we wanted someone to take over the maintenance of the application. Unfortunately, we came into a disagreement which resulted in the company revoking access to the database. Regardless of how this situation played out, FERI urnik has been a valuable lesson and an intriguing project over the last 4 years. I must say that we had an especially great user base. Partly maybe because our users were, in fact, computer science students and they understood how much time goes into the development of an app like that. At the end I can only say:

thank you for your support and I hope FERI urnik served you well!