Finally, my bachelor thesis has come to an end! I now have a very strong feeling of relief (because I managed to finish it in time!) and accomplishment (because it wasn't always trivial to see the ligt at the end…). Now I can start studying for my upcoming exams, of which there are fortunately only two!
For those who don't know yet, there are basically three big components:
For more information, I'd like to refer you to the bachelor thesis text draft that I've attached to this blog post and possibly even to the blog post in which I announced what my bachelor thesis would be about.
I'm aware that I've failed to communicate more often about the steps along the way. The reason is simple: my bachelor thesis is bigger than the average one to say the least and therefor I really needed all the time I could find (the countless nights that I worked past 2AM might also be good indicators). Writing a blog post easily costs me at least an hour every time.
I will write a series of blog posts in the weeks after my exam period though, about the most interesting parts. They'll be mostly on the design of the daemon and its interesting aspects, so they may not sparkle the interest of every Drupal developer. It's a very different from the Drupal world. Oh and … I reused parts of Django inside the daemon!
To get a quick glimpse of the functionality incorporated into my work, I've written down the list of used technologies here:
For my Episodes module to become useful, you also need to be able to easily analyze the collected data, to make sense of it all. The Episodes Server module aggregates all data and presents it, to allow the user to find the episodes that are the best candidates for optimization.
Because this is just a small part of my bachelor thesis, I decided to KISS (Keep It Simple, Stupid), because this alone could be a master thesis on its own.
Clearly, the best way to present this, is through charts. Charting is old, is has existed for a long time. So you'd expect to find mature, complete solutions. It turned out my assumptions couldn't have been farther from the truth.
Charting in Drupal is one of the most confusing and frustrating things you could do. Either the module is a wrapper around another API but limits you too much, or the underlying API is too limited itself.
My requirements were simple: I want horizontal bar charts, good looking charts and a usable API. I'll go through all available modules one by one and cover their pros and cons briefly. That way, other Drupal developers have at least a starting point in evaluating charting solutions for Drupal.
My article "Improving Drupal's page loading performance" – definitely my most popular writing thus far, bookmarked almost 350 times on delicious – has been translated into Russian! So any people who prefer to read it in Russian, read it over there!
This is a very short tutorial – it should take you about 15 minutes from start to end – that explains how to run your own SVN server, install WebSVN, which is a web front-end to browse your SVN repository, and apply Drupal syntax highlighting to it.
An example can be seen at websvn.wimleers.com.
I run my own SVN repository, because it's much faster (svn:// FTW), I don't have size limitations, I can ensure it's backed up properly and because it's so easy.
I'm going to assume you've already installed svn on your (Linux) server.
In my session at DrupalCon DC, I promised an initial version of the Episodes module by March 15, which is today. I'm glad to be able to announce that I somewhat met that goal.
If you don't know what it is exactly, I encourage you to read the project description first.
It's not yet completely finished: the basic reporting UI must still be written. But you can already look at the results of each individual page through the Firebug add-on (which I didn't write, it's already available). See the first screenshot for that. That's of course much less useful, but it gives you a clear indication of the potential.
However, before I do that, I first have to work on making other deadlines for other courses.
So what's done already? Here's an overview: