Hi! I’m Wim, live in the beautiful bike-centric city of Ghent and I’ve been fortunate enough to be able to work full time on making Drupal better & faster for over a decade now! (I’m also interested in energy efficiency, smart home shenanigans and think more software empathy would make the world a better place.)


 

29 August, 2009

I will be presenting together with Konstantin Käfer on Front End Performance. To be more exact, he will be talking about Front End Performance in general, and I will be talking about a subdomain of that: CDN integration.
Our sessions were merged because they overlapped to some extent — so now there’s just one supercharged session instead! It’s scheduled for Thursday (3 September), at 9 AM, in the La Reserre (translated: coal-shed) room.

In specific, I will be talking about the work I’ve been doing as part of my bachelor thesis. Integrating Drupal with a CDN was quite painful previously, but by using the CDN integration module, you can choose for either:

26 August, 2009

In this very brief article, I highlight the key properties of CDNs: what differentiates them and which technical implications you should keep in mind.


A content delivery network (CDN) is a collection of web servers distributed across multiple locations to deliver content more efficiently to users. The server selected for delivering content to a specific user is typically based on a measure of network proximity.

It is extremely hard to decide which CDN to use. In fact, by just looking at a CDN’s performance, it is close to impossible (see “Content Owners Struggling To Compare One CDN To Another” and “How Is CDNs Network Performance For Streaming Measured?”)!

25 August, 2009

In this article, I explain what was required to integrate the Episodes page loading performance monitoring system with Drupal.
Episodes was written by Steve Souders, whom is well-known for his research on high performance web sites and has authored multiple books on this subject.


The work I am doing as part of bachelor thesis on improving Drupal’s page loading performance should be practical, not theoretical. It should have a real-world impact.

To ensure that that also happens, I wrote the Episodes module. This module integrates the Episodes framework for timing web pages (see the “Episodes” section in my “Page loading profiling tools” article) with Drupal on several levels — all without modifying Drupal core:

24 August, 2009

In this article, seven distinctly different page loading profiling tools are compared: UA Profiler, Cuzillion, YSlow, Hammerhead, Apache JMeter, Gomez/Keynote/WebMetrics/Pingdom, Jiffy and Episodes. “Profiling” must be interpreted rather broadly: some of the tools cannot measure actual performance but are useful to gain insight in page loading performance characteristics.


If you can not measure it, you can not improve it.
— Lord Kelvin

The same applies to page loading performance: if you cannot measure it, you cannot know which parts have the biggest effect and thus deserve your focus. So before doing any real work, we will have to figure out which tools can help us analyzing page loading performance. “Profiling” turns out to be a more accurate description than â€śanalyzing”:

24 August, 2009

I’ve been so caught up in work and reducing the amount of work (by lowering the number of projects I’m involved in), that I had not yet posted my results.

I finished my bachelor degree on July 7, 2009, with honors! (It’s actually honors over the entire course of the bachelor degree: it is calculated over all three years.) Most importantly though, I received an extremely high score for my bachelor thesis: 19/20! It’s the highest score possible (a perfect score of 20/20 is never given) and was the highest of my year. My bachelor thesis was considered of the level of a master thesis! (And for a master thesis, you get twice as much time to write it.)

22 May, 2009

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:

  1. Drupal Episodes module
  2. the daemon, which performs the discovery, processing and syncing of files (it still doesn’t have a proper name — your suggestions are welcome!)
  3. Drupal CDN integration module

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.

22 April, 2009

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.

31 March, 2009

Russian translation {#russian-translation}

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!

Drupal Fire {#drupal-fire}

John Forsythe selected my web site for his new project, Drupal Fire:

Drupal Fire is a new content aggregator that brings together the best writers, developers, and designers the Drupal community has to offer.
The site features 30 hand-picked feeds that I believe represent the best, most interesting content in the Drupal universe. You won’t find a higher signal-to-noise ratio anywhere else. I’m glad that my writing efforts — as sparse as they are due to time constraints — are appreciated. :)
I think it makes sense now that to offer focused alternatives of the Drupal Planet — it has become so big! 30 instead of 304 sources is a huge difference. For now I’ll stick to the planet, but I agree that the signal-to-noise ratio has been dropping steadily.

Tags

20 March, 2009

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 used to be online at websvn.wimleers.com.

SVN {#svn}

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.

First, decide where you’re going to put all your SVN repositories. I put mine at /data/svn. Whenever I use the e command, use your favorite editor instead (for me e is an alias for TextMate). Then go through these simple steps:

cd /data/svn
svnadmin create reponame

Create a SVN repository with the name reponame. This creates a certain directory structure.

Tags

15 March, 2009

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.

Status {#status}

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: