Anduril and MBHS Home

January 20, 2017

Yes, yes, I know my fans are heartbroken over the recent hiatus I’ve effectively been on. Unfortunately, I’ve just been super busy, and since I have a bunch of software projects, the code usually takes precedence over the blog. However, I’ve finished something cool recently (or at least deployed initial release), so I’d like to take an article to write about it.

What is Bill?

Montgomery Blair’s initial steps into the World Wide Web during the 1980’s brought with it musings of a student dashboard, and although I’m not exactly sure when the idea coalesced and was implemented, I feel safe in guessing that it was prior to 2000.

Since then, the site has evolved (to the extent capable of something written in PHP), and in the process has taken several names, including Bart, Bert, and most recently, Bill. Unfortunately and unsurprisingly, on closer inspection of Bill, it sucks. And even more unfortunately, some of us are technically obligated to deal with it every year too.

Let me explain why Bill is bad, and although some of these reasons aren’t entirely compelling without a little bit of administrative background, I’m confident I can at least make an appeal to common sense.

  • The database is almost completely flat
  • There are multiple copies of the database that are all in use
  • There are duplicate but slightly different tables that are simultaneously in use
  • The actual website is written entirely in undocumented PHP
  • The actual website is written terribly even excusing PHP (which is inexcusable)
  • The undocumented update scripts depend on hardcoded values for the year and semester
  • There are multiple update scripts which do similar things and have similar names
  • Until literally yesterday, the MySQL password was available in plaintext on because of its path

What is Anduril?

Prior to this explanation, I’d like it to be known that this is not actually a result of my own nerdiness, but rather that of one of my colleagues.

During the battle that pitted the Last Alliance of Men and Elves against Sauron and his armies, two legendary king-bros named Elendil and Gil-galad ended up fighting Sauron on their own. Unfortunately, both were killed, and Elendil’s sword, Narsil, shattered during the fight. However the day saved by Elendil’s son, Isuldir, who picked up part of the sword and cut the ring off Sauron’s hand. Much later on, the Elves at Rivendell reforge the shards of Narsil into Anduril, and its given to Aragorn who does some other notable stuff with it.


Well, Narsil is supposed to represent Bill, which was fragmented into little parts that were mostly useless and internally unusable. Our complete overhaul, nicknamed Anduril, is the result of reforging Bill into something that significantly more…not useless.

Anduril and Home

Anduril is the core data storage and manipulation component of what Bill used to be. It provides access to database models including users, courses, and classes, as well as an interface for updating the system with new data. It’s written in Django 1.10 for Python 3, and is hosted on one of the servers within Montgomery Blair. Unfortunately, as a student, I’m not allowed access to the source of all the student information, so instead of pulling directly from Montgomery County’s databases, I’m relegated to requesting regular uploads of the latest schedules by our real system administrator, Mr. Hammond.

MBHS Home, on the other hand, is the front end for this system. Home, also in Django, provides convenient views for checking what classes you’re taking, what teachers you have, and what students are in your classes. It also allows you to “friend” other users, which gives you viewing access to their schedules.

Here are a couple pictures:

As a quick note, the source for both projects, for obvious security reasons, is unavailable. Feel free to ask me about it if you’re curious. If you’re wondering why one of my classes is a study hall, go here.


At this point I’ve still got a pretty long to do list for Anduril and Home. I have to add an interface for creating and owning groups (which, by the way, are for organizations and clubs at Blair). I have to add settings and email forwarding, which ties in to moving the school mail server from Binx to Sargon, and I also want to start thinking about providing basic boilerplate sites for groups to host on Blair’s servers.

There are also a bunch of tweaks and improvements to be made based on feedback I’ve been receiving, so in short, this project isn’t finished. Hopefully I’ll be able to keep working on it, but given the coursework I have in the upcoming semester, free time for development may prove increasingly precious.

Ultimately, we’ll just have to see. Wish me luck!


Completely unbeknownst to me, in the first week of MBHS Home’s uptime, usage spiked. Now, this isn’t improbable; I’m not thoroughly connected on my social media accounts and probably wouldn’t have heard gossip between the vast number of other students (over 3000), but to put things in perspective, here’s a graph of the number of distinct users logged on over time:

We’ll have to see where this goes!