Since I wanted something to show off my Python skills, I used
Django backed up with a
PostgreSQL database. Why PostgreSQL and not one
MySQL or its
MariaDB fork? While MySQL does have its Community Edition and is free, when Oracle acquired Sun, I got slightly turned off on it, and started using MariaDB. And both do have a few features I like, such as GROUP_CONCAT() or the ability to alter a table to add or move a column before or after another, I fell in love with PostgreSQL some years ago for some of its additional complex data types and other features. And while I have both a MariaDB and PostgreSQL server (multiple, actually) running in my network, I tend to favor the latter. Indeed, for
Heimdallr, where several tasks such as storing the logs from my firewall and web servers it is a very write-heavy task, the performance of PostgreSQL and the availability of native data types for network addresses became critical. And at first, it really was a simple, little program. I started off coding the initial program over the course of a couple off days, complete with
jQuery,
jQuery UI and
jQuery UI theming. It also used
DataTables to display the data in a paginated form, and with the ability to search for companies, and had a basic navigation bar at the top of the page. And as I have already noted, it even included a
custom django-admin command to run from the command line to import my original Google Spreadsheet. All I had to do was to was to run the command
python manage.py applications:importsheet. The application list page looked like this:
Version 0.1 had some drawbacks, some of which I have already mentioned. The biggest one is that if you look at the screen, you will notice that there is no apparent way to add new entries. You could view or edit an existing entry, but to add an entry, I started off using the admin interface. And then, there was the fact that to have jQuery and all those other JavaScript/CSS assets, I literally downloaded them, unpacked them into the static directory, and committed them into git. And lastly, I rendered the entire dataset as an HTML table before turning things over to DataTables. Even the page to view an individual entry was crude, looking like this: