Other

PhD update

Just an update on my PhD application progress. I've now had all three of my planned interviews and have heard back from two of them. Both Warwick and UCL want to offer me a PhD and I'm still waiting to hear from Imperial College. Funnily enough, both the offers I have so far are involved with the RAL. The Warwick one is an LHCb project (I blogged about it before) and the UCL one is an industrial placement where the company involved is the RAL.

My girlfriend, Rachel, also has an offer from Warwick for an Astrophysics PhD so it's likely that I'll be staying here but there's still some other things to consider.

No matter which one I decide upon, I'm excited to have something sorted out for the next few years.

BBC reports "UK government backs open source"

It's great to see this article on BBC news (also on Ars Technica) reporting on the UK governments latest promises regarding considering open source software. Though, I'm sure this sort of thing has been said before, we're definitely seeing more and more reports of governments having a look at open source (see an earlier article on it, specifically mentioning Obama's government), however cagey their promises may be.

I'm sure that this isn't the end of the story since, as anyone who attended Patrick Harvie's talk at Akademy 2007 would know. He reported on some of the tactics that he'd seen Microsoft employ in order to prevent the idea of open source alternatives gaining mental footholds in the minds of people in power.

For me, the most important part of the BBC article is that it tells of how both of the interviewed expect the proprietary firms to react:

"I am absolutely certain there have been communications extremely high-up in proprietary vendors with management high up in government," said Mr Shine.
Mr Phipps added: "Measured over the short term traditional vendors will cut prices back, end load contacts and do everything to appear cheaper.
"But the real value with open source comes from giving users a new flexibility."

Finally, it's good to see more high quality, non-FUD reporting about FOSS where it's treated as a sensible thing and not as some hippy idea. I look forward to any further concrete news on this.

KDE, LHCb and PhDs

On Friday I had my first (hopefully of many) interviews for a PhD place starting in October. One of the PhD places being offered at Warwick is an LHCb project in conjunction with the Rutherford Appleton Laboratory (RAL). Now, as you probably know, LHCb is one of the detectors at the new Large Hadron Collider at CERN, along with ATLAS and others. Now, you might remember that it was previously noted that the ATLAS experiment uses KDE in their control room. Now, interviewing me were some members of the EPP group at Warwick as well as a member of RAL who was teleconferencing in. When the topic of conversation went to my involvement in KDE, the RAL guy made a point of thanking me and the KDE project for a great DE since apparently they use it in all their offices there. Perhaps if I get this place then there's a chance that there might be a chance for some KDE programming.

This also makes quite the difference from an interview I had last year for an internship at Barclays Capital where not a single person I spoke to seemed to have heard of KDE.

Thermite & PolyVox

PolyVox
A engine component which stores virtual environments using a volumetric representation.
Thermite 3D
Thermite is an experimental 3D game engine primarily designed as a show case for PolyVox technology

My brother Dave's volume rendering engine/game engine/sandbox. I could go to the effort of explaining all about it here but it's probably best left to him. Explore the Thermite site for more information.

Projects

Listed here are some of the main projects I am involved with:

Software

KSquares
A KDE version of squares
Thermite & Polyvox
Voxel Rendering
QtOgre Framework
A framework for integrating Qt and OGRE

Other

OpenStreetMap
A free map of the world

About Me

Matt Williams is my name and I am currently doing a PhD (a joint studentship between the RAL and Warwick) on the LCHb.

You can see some information on some projects I've contributed to on the projects page.

My Curriculum Vitae can be found as an attachment on this page.

Me around the web

* LinkedIn profile
* OpenStreetMap account
* My commits as milliams and kardoon
* Open Source projects I've contributed to
* My KDE Techbase account

Guess what…

I'm going to Akademy! (no pretty image from me I'm afraid, I'm feeling too lazy right now)

I'll be getting the EuroStar from London on Friday (leaving 18:35) and will be staying until Thursday morning/midday. I'm glad that I'll be present for most of the hack week since last year I was only able to attend for the weekend conference. The conference schedule looks really good and as with last year I'm going to have difficulty choosing between some of the talks in different tracks.

Eugene and I had submitted a talk about the state of KDEGames and it's place in the KDE ecosystem but unfortunately it wasn't accepted. Regardless of this we're planning on holding a few KDEGames BoFs on kdegames general, GGZ/multiplayer, GHNS etc. most likely on Wednesday.

I've even finally bought myself a laptop (a Dell Inspiron 1525) which I pulled Ubuntu from and have installed a nice shiny openSUSE 11.0 with KDE 4.1.60 packages

See you all there.

An exciting post about apidox, forwarding headers and indecipherable regexps (with one and a half thousand elephants!)

Despite the headline, this is a topic which may well be very boring to many people, but if you have no fear then read on (especially if you like elephants)...

You probably all remember how with the release of Qt4, Trolltech changed the way they recommended people to #include their classes. Previously one would include the header file describing QDir with #include <qdir.h> but with Qt4 it was changed such that one could do #include <QDir>. That is, if you wanted to include the header for a class you could simply put the classname between the pointy brackets (well actually I think it's recommended to put modulename/classname in there which means you have to look up which module the class is in, but let's ignore that for now). This makes it very easy to know how to include the stuff you need.

So, in the run-up to KDE4 there was much discussion about whether KDE should do the same. Some people were against it but it was decided that it doesn't hurt to allow these 'forwarding includes' since the normal includes are still there (the forwarding includes only #include the real headers themselves). Now, it was while working on a new highscore management system for kdegames (I'll probably blog about that later, you're not getting away that easily :D) that I noticed that in our apidox at http://api.kde.org we're still telling people to use the old include style. So, I looked at the doxygen manual and found that it has a feature to specify what the include file for any class should look like (you can see it here and there's also one for namespaces/structs and the like here). Armed with this knowledge I set about updating the kdelibs documentation to use it. It's a simple case of adding, for example:

\class KScoreManager kscoremanager.h <KScoreManager>

to the documentation block for the class. This makes the difference between this include and this one (see that #include line in the grey box near the top). The problem is, there's loads of classes to do this to and for each class (unfortunately there's sometimes more than one class in a header file) you've got to check whether there's a forwarding include for it (I guess internal classes don't need forwarding includes). In fact, if you download the tarball of the documentation for kdelibs from http://api.kde.org and make the following command from the root directory

find . -regex ".*\.html" -not \( -regex ".*source\.html" \) -not \( -regex ".*_8h\.html" \) -not \( -regex ".*_8cpp\.html" \) -exec grep -l --regexp=".*#include &amp;lt;<.*\..*\..*&lt;/a&gt;&amp;gt;&lt;/code&gt;.*" '{}' \; | wc -l

you'll find that there are about one and a half thousand classes this needs to be done to. That's a lot to do manually and given the nature of the changes to be made, difficult to do programatically. The good news is that if you call this command (which is sorta the opposite of the other one but without the wc -l)

find . -regex ".*\.html" -not \( -regex ".*source\.html" \) -not \( -regex ".*_8h\.html" \) -not \( -regex ".*_8cpp\.html" \) -exec grep -l --regexp=".*#include &amp;lt;<.*\..*[^.].&lt;/a&gt;&amp;gt;&lt;/code&gt;.*" '{}' \;

you'll see that there's already some classes doing it properly (Nepomuk, DNSSD and KFadeWidgetEffect).

Now, unless someone can think of a way of converting all the documentation automatically then all I can ask is that the next time you're doing some work on a library class, firstly make sure you're installing forwarding headers (preferably 1 per class even if both forwarding headers forward to the same real header) and secondly just add the \class ... line to the class documentation block and make the world a more attractive looking place.

P.S. I'd like to dedicate this post to Jesper K. Pedersen, the author of KRegExpEditor without which this post would not have been possible.

P.P.S. Okay, so I lied about the elephants but if you do a search and replace with "class"→"elephant" this post is a lot more exciting.

KDE Games Student Day

Yesterday we held our student day in #kdegames. It was a chance for all the students who applied for GSoC projects related to KDE Games to come meet our community, to give us a chance to meet them and to let them ask any questions they had about GSoC or KDE Games in general.

It was a great success, we had at least 10 students in total (out of about 20 applications) come along at varying points throughout the day most of whom really took part, asking questions and just chatting away with the other students and the regulars. We even had one student ask it he was allowed to do his project even if he wasn't chosen. "Of course!" we said.

In previous years we haven't had any KDE Games projects at all but this year with so many excellent applications, we'd really like to see some of them chosen. So, any mentors reading: be sure to take a look at the games related proposals.

I'd like to thanks Josef Spillner for being my co-coordinator on the day and Eugene Trounev for coming up with the idea and planning it all. Thanks guys!

assistant update

After my post a few days ago I recieved an email from Thomas Strehl at Trolltech who kindly explained a few points about the new assistant to me. It seems it's already more powerful than I thought. Instead of having to manually load the 'help collection' into assistant, one can pass a command line argument and load a specific help collection, you can then specify in that help collection the window icon, window title etc. and this way it would be very easy to create a "KDE API browser". It's as simple as doing

assistant -collectionfile kdelibs.qhc

from the directory where kdelibs.qhc is located. Given the currently lacking documentation, I'm not sure how to set the icon etc. but it WILL be possible.

Thomas also hinted that Trolltech are working on a generator to create QHelp binaries directly from Doxygen output, making pretty much everyone's life easier. I guess the next step is to try to get docbook files loading :)

If we can get all that working nicely, it might be worthwhile looking into porting/rewriting KHelpCenter to use the QHelp library. Does anyone know the current status of KHelpCenter? The last I remember, after my post a while back PhilRod and co. were working on it. Does it need a breath of fresh air?

The other benefit of using QHelp would be that once docbook files are loaded in, it would be possible to query the database from within applications and display help in 'WhatsThis' hints, which, as I remember was one of the big points that we mentioned at the doc meeting a few months back. Another use-case would be KDevelop displaying apidocs for functions more easily.

I think that QHelp will provide us with an excellent opportunity to revamp our documentation system thanks to Trolltech once again thinking about what their users want and doing the dirty work in writing the library.

Syndicate content