John's little corner of teh interweb pipes thingy.


Printing is still something of a pain point in KDE4 for many various reasons I won't go into here, but recent developments offer hope for major improvements on two fronts over the next year. The first of those fronts is the OpenPrinting proposal for a Common Print Dialog which incorporates a document preview, simplified user options, better driver integration, and settings management. Adopting the CPD would pretty much solve all our printing issues on Linux, which is why I'm very happy to be attending the OpenPrinting Summit in San Francisco in April to discuss how to complete the CPD and integrate it into KDE and Qt, as well as other important features like end-to-end Colour Management. The second front is continuing to push for improvements in Qt itself which the OpenGov model will hopefully make a lot easier.

The OpenPrinting Summit is itself part of the larger Linux Foundation Collaboration Summit, an event described as "an exclusive, invitation-only summit gathering core kernel developers, distribution maintainers, ISVs, end users, system vendors and other community organizations for plenary sessions and workgroup meetings to meet face-to-face to tackle and solve the most pressing issues facing Linux today". Well, I'm not sure how well I fit that description, but I am looking forward to earning geek points by rubbing shoulders with the Linux geekerati (+1000 for a photo with Linus) and trying to promote better collaboration between KDE and the wider Linux ecosystem.

Immediately preceding the Linux Foundation Summits is Camp KDE which I am equally as excited about attending, especially as I will get to meet many of our North American community in person for the first time. The Camp KDE program is looking pretty interesting too, with keynotes from Jim Zemlin of the Linux Foundation and Carol Smith of Google's Open Source Program Office, and talks from such KDE luminaries as Thiago Macieira, Ariya Hidayat, and Frank Karlitschek. I'll also be giving a talk on options for Geolocation Services in KDE and doing my best Torstan Rahn impersonation while pimping Marble. If you can be in San Fran for the first week of April be sure to register to attend, it's a great opportunity to get involved in KDE and help build the community, and it is always a lot of fun. You'll also get a free invite to the Linux Foundation Collaboration Summit so you too can collect geek points :-)

Disruptive Times

So most people will have heard by now of the partnership between Nokia and Microsoft to use WP7 as their SmartPhone platform to build on the Windows development eco-system, seemingly relegating Qt to a legacy support position on Symbian, and leaving MeeGo as a research platform.  The obvious question is : how does this affect KDE and the rest of the Qt eco-system?  Well, I have no answers for that, nobody does right now, but I'm sure we're going to see endless speculation and FUD over the coming days that will include KDE bashing and entirely premature predictions of our demise.

The best we can do for now is just wait a little and see the details of what Nokia is planning, and keep working on making KDE the best damn development eco-system community on the planet:

Keep Calm and Carry On


Last weekend I attended FOSDEM and once again it was a fantastic time, especially valuable for the time spent talking to fellow developers both KDE and otherwise.  It was especially great this year to see so many different KDE people taking turns to man the booth and talk to the punters, thanks to everyone who helped out.  The highlight of the booth itself this year were the demos we had of KDE on Windows and OSX with many people being impressed with how usuable they were and promising to try them out.  I don't think I heard a single negative comment from anyone all weekend, the verdict on 4.5/4.6 was overwhelmingly positive, which sure helped make it a very pleasant experience.

KDE booth at FOSDEM 2011

The KDE booth in a rare quiet moment with demo machines for KDE on OSX, KDE on Windows, KDE on Linux Netbook Edition, and KDE on Linux Desktop Edition running a KOLAB server.

I have to give a shout-out to my mate Chris who loaned us a decent 17" monitor for the stand at the very last minute (although carrying it all the way from the UK wasn't easy).  For next year we really need to find someone local who can either lend us or arrange to hire a really large monitor (say 25" to 30") to improve our wow factor (where does openSUSE get their ones from?).  It would also be nice to have a video / slideshow / deskcast of some kind showing the highlights of KDE to play when no-one is actually using the screen, blingy moving stuff is always good to attract people to the booth.

One other thing we need to arrange for next year: foot massages for all booth workers, my feet were killing me :-)

There and back again

I've been away the last five weeks on holiday, having gone home to New Zealand for the first time in four years to spend Christmas with the family and catch up with old friends.  Well, it was only supposed to be three weeks, but when the weather over there is so hot and sunny and London is so cold and wet, only a fool would have hurried back.  I almost didn't make it there as I was booked to fly from Heathrow when it closed due to snow.  Fortunately after a delay of a day my flight was one of the few to get out, but with all the delays en-route it still took an epic 41 hours travelling for a 40 degree temperature change.  But at least I got home for Christmas, I really felt for the poor souls stranded in the terminal who had little such hope, and I see that our own blauzel was stranded in an airport hotel for 6 days before finally giving up on flying.

I had hoped to find time for some hacking while there, but the demands of my 5 year old nephews to play Lego and Wii and watch Pixar movies restricted me to just a few bug-fixes, but what self-respecting geek could be unhappy doing that?  Watching the boys interacting so easily with technology at such a young age was certainly educational, especially with my Android tablet where they instinctively picked up swiping and kinetic scrolling on the touch screen.  "Uncle John, can we play Angry Birds" became a constant refrain.  However, there's something not quite right when a 5 year old can beat you at Wii Bowling with a score of 202 :-)

So now it's back to normal life and the most pressing need of finding some new work to pay the bills.  If you know anyone hiring mainframe/banking/utilities specialists, my CV can be found here.  In the meantime I'll get back to working on KLocale, KHolidays, Marble, and having another crack at getting the QPrinter improvements into Qt.

On the KDE side it's already a great start to the year with the release of 4.6 which I've been running the RC's of as my desktop for the last month.  For me, there are two highlights in 4.6 for which I seriously owe people a beer or two.  Firstly, there's beer for the KWin hackers because compositing now not only works on my NVidia card with blur and translucency enabled, but really flies making cover-flow actually usable.  If you've had problems in the past with NVidia and KWin, this could well be the release for you.  The other big win is something which may seem very small, but it's the sort of annoying thing that the Plasma team has been working hard to polish to make the user experience as smooth as possible.  To whichever Plasma hacker fixed the window preview pop-up in the task manager so the preview appears at the top of the grouped window stack rather than covering the stack: thank you, thank you, thank you!  I'll be at FOSDEM next weekend, so if you're responsible and attending please claim your beer, otherwise see me in Berlin :-)

Oh, if you are attending FOSDEM, please update the wiki page with your details, and if you could bring any cool demo hardware/software (like an N900 or tablet running Plasma Mobile) note it down.  See you at Delirium!

Holidays in KDE Release 4.6

[Doh, numerically challenged, that's 4.6 not 4.5 :-)]

Last blog I promised to cover off Localization, but that's turning into something to rival War and Peace, so to fill in the time here's my update on what's happened in KHolidays for 4.6.

I had planned to add support for holiday categories and different types of holiday observance, so you could choose what types of holiday to display. For example this would allow us to split the secular and religious holidays by category and leave people free to choose which they wanted to display. Unfortunately that wasn't quite finished in time so it's another feature for 4.7 now, but I did manage to add a couple of other useful features.

The first is mostly of interest to coders, the KHoliday api now supports proper holiday durations, so instead of a two day holiday showing up on your calendar as two separate one day events it can be correctly displayed as a single event spanning those two days.

The second is far more visible and useful to our users, a new widget to allow users to select multiple holiday regions to be used/displayed and to configure how they will be used. And here it is:

Holiday Region Selector Full Mode

That's the full widget with all current features enabled. You get a nested list of the various regions, information about what language the holiday file is available in, the description from the the holiday file if available, the ability to choose how to use the holiday region, and a search box to find what you need. The combo allows you to choose between not using a region, using a region for information only, or using a region to determine when your days-off are. Once we get holiday categories these will also be listed under the region to allow separate selection.

That's a rather large widget though, and not every app will need complex choices. Obviously, the widget has different modes to change the combo box to a simple tickbox for binary on/off selection, multi or single row selection, hiding the information and search fields, filtering to only display certain languages, and even a simple display only mode. Here's what a simple mode selector filtered for en_GB only would look like:

Holiday Region Selector in simplified mode

Note that all the info details about language and description are in a tool-tip that pops-up for each region.

If you want to play with the widget, then the easiest way is via the Plasma Clock where I've implemented the ability to select multiple regions to be displayed on the calendar at the same time. Here's how the widget looks in the plasma clock config dialog:

Plasma Calendar Holiday Configuration

And here's what the clock's pop-up looks like with a few different regions enabled for days off or information only:

Plasma Calendar Popup With Multiple Holiday Regions

There's probably quite a bit of polish that can be added, comment away if you have any ideas for improvements.

[Edit:  If you want holidays support added for your country or language, then submit a wish in under kdepimlibs/kholidays providing me with links to the official source for the holiday rules, and if possible an English source (usually Wikipedia), then just be ready and willing to help out with any questions I may have and translations that are needed.]

Calendar Systems in 4.6

So what's new in 4.6 for Calendar Systems?  Well, not much visible really.  I had hoped to have the astronomical  calendars (Chinese, Islamic, etc) done for 4.6, but I'm still in requirements gathering for that so it's bumped to 4.7. Instead I've done some stuff to make date localization easy.  If you're looking for bling, you may as well skip to the next post (I'm sure someone has some nice Lenovo eye-candy to show off :-), but if you're an app coder tired of how awkward date localization can be then stick around.

Still here? Right, app coders, date localization in KDE is not exactly easy to use, is it? We provide Calendar System localization, which Qt doesn't, so anytime you want to use or display a date you should be passing the QDate through the KDE global locale calendar to get the correct results. That's easy enough for simple readDate() and formatDate() calls, but anything else is more obscure and long-winded, so a lot of apps don't bother. Take this simple KDE code for example:

QDate myDate = QDate::currentDate();
int dayNumber = KGlobal::locale()->calendar()->day( myDate );
QString dateString = KGlobal::locale()->formatDate( myDate, KLocale::IsoDate );

Compare that to the same calls in QDate:

QDate myDate = QDate::currentDate();
int dayNumber =;
QString dateString = myDate.toString( Qt::ISODate );

A far more natural way of doing it, right? So how about we make it that easy in KDE as well? Enter the new KLocalizedDate class:

KLocalizedDate myDate = QDate::currentDate();
int dayNumber =;
QString dateString = myDate.formatDate(
KLocale::IsoDate );

Way nicer.  It's basically a drop-in replacement for QDate whenever you need to localize the date, just change your QDate type to KLocalizedDate and most of your existing QDate api calls should just work (it's not derived from QDate, so you can't pass it around as a QDate or cast it). There's a couple of calls that have different names from QDate to emphasise that they work differently, the main ones being toString/fromString which are replaced by formatDate/readDate, but that's been standard in KLocale for a long time anyway.  A lot of the more useful KCalendarSystem api is there too, like the date maths, with many clean-ups and simplifications.  You can also change the Calendar System or Locale from the default global one.  Have a look, the apidox is still a work-in-progress but I'm making it as comprehensive as possible, and try it out in your code. Let me know if you have any issues with the API while we still have time to change it.

Just a note that I don't really intend for this class to be used in public library api for passing date values around, that's best left to a normal QDate for compatability, but once you have a QDate I hope localization is easier using KLocalizedDate.

In 4.7 I hope to find time for a KLocalizedDateTime that merges KLocalizedDate and KDateTime as a drop-in replacement for QDateTime. Longer term, I've been looking at QDate itself, and I can't see any BC problems that would prevent adding Calendar System support in Qt4 so I may have a crack at implementing it and see if Qt is interested (they should be, Win and Mac both support it, and it will help sell handsets into some of Nokia's strongest markets).

Also new in the api are some simple calls for firstDayOfMonth(), lastDayOfMonth(), firstDayOfYear() and lastDayOfYear(), easy enough dates to figure out in Gregorian, but very easy to get wrong when trying to localize to any Calendar System.

My thanks to Sebastian Trueg for pushing me to do this, I'd been thinking about it for a while before he showed me just how hard it was for the not-calendar-obsessed-like-me to get things right when it shouldn't be.

Right, that's it for Calendars, next blog Localization.

Hello again.

It’s been a long time between blogs, way too long, not since the start of Akademy, so let’s just get what should have been said at the time out of the way:

Best. Akademy. Ever.

Thanks to the Tampere crew and our regular Akademy support team for an awesome time, we’re really getting good at organising these things. I can’t wait to see what Berlin comes up with for the Desktop Summit.

Life’s been as busy as usual, between archaeology and a new job finding time for KDE hacking was tough and I struggled to complete my TODO list for 4.6, but with winter on its way and an end to the digging season I should have more time for the 4.7 cycle.

The summer digging season was an especially good one for me, one up side to being out of proper work was being free to spend several months digging on a number of different sites. The Thames Discovery Program, a survey and monitoring project on the Thames foreshore in London, was a major commitment that had me working on a number of iconic sites such as the launch site of Isambard Kingdom Brunel’s SS Great Eastern, the Greenwich Royal Naval College (or more exactly Henry VIII’s palace formerly on the site), and most famous of all the Tower of London. There’s something special about looking up from your troweling to see the Tower walls looming over you, Tower Bridge in the background, and all the tourists pointing at you like you’re in the zoo :-) Other digs included a Bridgetine Abbey, a Medieval Rectory, and a month on a Roman settlement that started as a marching fort from around the invasion in 43AD and lasted all the way through until they left in about 410AD. My only regret is I had to turn down the invitation to a month’s digging in Pompeii due to lack of money :-(

Roman coin found at Durolevum in Kent, England

The lack of (modern) money was seemingly rectified the week after digging ended when I started a new 6 month contract doing the usual mainframe stuff, this time for a large insurance company based in Southampton, so I was spending 2-3 days a week down there and the rest of the week working from home in London. Unfortunately only 7 weeks into the contract they've decided to cancel the project due to financial issues so I'm once again out the door and looking for work. Such is the life of a contractor in a recession.

The other disappointment of the last few months was getting through 10 weeks of my 12 week half-marathon training programme before injuring my knee and having to pull out of the race. I had been looking good for a sub-2 hour time, but I guess I’ll have to wait for next year to achieve that. Two months on I'm finally back running again, but it's a long slow recovery.

On the KDE side, I’ve done the usual improvements to KCalendarSystem, KLocale and KHolidays which I will blog about in excruciating detail later, but I’ve also just started getting involved in the Marble community. A couple of weekends ago I attended the Marble coding sprint in Nuremberg, Germany and had a great time with some very smart people. I originally went to discuss some areas for potential collaboration with kdelibs, but have somehow ended up with a Marble feature TODO list :-) I’ll post a separate blog all about that too, but for now I need to get a move on with polishing my features that did make the freeze...

Oh, and I have a new toy, a Dell Streak phone/tablet with 5" screen:

Dell Streak

It's a really nice piece of kit, a little large to use full time as a phone (which I won't, I don't like large pocket bulges or carrying expensive kit on nights out), but great as a portable media/internet device. No, it doesn't run KDE as it's Android, but Meego has been spotted booting on one, so hopefully soon I'll have the perfect KDE in-your-hand device.

KDE4 on N800?

A mate of mine has an N800 that he no longer wants, so I thought I would try put KDE4 on it and play with the new mobile plasma stuff.  After installing scratchbox and a bit of futzing around I've figured out OS2008 Diablo only has packages for Qt 4.5, so I can't compile SC4.5 or SC4.4, and even SC4.3 would require manually upgrading a whole bunch of other dependencies.  Even if I tried to build my own Qt 4.6 it's not clear what Qt branch I should be using, or even if it would work.  Before I waste any more time, has anyone else actually tried to do this lately, or has everyone just switched to the N900?  Is there a convenient repo I can just add?  Or would I be better off trying Easy Debian or some other solution?

TIA :-)

Uh oh...

You might have seen me running around yesterday taking photos and blinding people with my giant flash.  There's only one problem with such a big flash, you can catch it on things and the unexpected can happen:

Broken hotshoe

Anyone got any gaffer tape?  Gaffer tape can fix anything, it should be able to fix this right???

TOAS Wifi Access

[Update: Sorted by deleting /etc/resolv.conf and rebooting.  I recall now having to do that with the 11.1 -> 11.2 upgrade as well.  Thanks for the hint Cyril!]

Just wondering if anyone else is having problems connecting to the wifi in TOAS? I can connect to both the open and WPA networks, but the authentication doesn't seem to work and I just get unknown domain errors.  On the open network I don't get redirected to the login page, but I can manually browse to and enter my details, but I still get error pages.  It works on my mobile and under OSX, and I've seen a 'buntu user who has it working, so I guess it's distro related.

Damn, knew I shouldn't have upgraded to openSuse 11.3 RC1 and KDE SC 4.5 RC1 so soon before Akademy, but I just gotta have the latest bling :-)

P.S. Do we have a wiki page for posting Akademy/Tampere hints and tips?

Syndicate content