Twitter Weekly Updates for 2010-05-09
- gstreamer conference 2010 in Cambridge http://gstreamer.freedesktop.org/conference/ I have to go. Must think of a talk to do... #
- I wish I lived in West Bromwich East http://www.youtube.com/watch?v=Z4oNjTuTz-8 he'd get my vote. #
- Comics + Economic Crisis = The Adventures Of Unemployed Man http://bit.ly/9N3Eqj I'm a sucker for Veitch artwork #
- Quote of the night: We are essentially ungoverned. Join us for the chaos. #
- Writing a mitm ssl proxy server generating fake files for unit testing in Python on a Friday night. I am a party animal. #
Powered by Twitter Tools
WebKit keeps me spinning round
So after all the issues I was having with WebKitGTK having undebuggable crashes somewhere in the nvidia binary blob I decided to have a go at QtWebKit integration. It was fairly quick and easy to do (I cheated and used PySide for brevity). That was good - no crashes, some nice looking fonts, Flash working and generally all was good, so I started to think how to do a proper integration.
This is where it all goes wrong. I find with most things an initial test implementation is quick and gives you a feel for the problem, when you actually have to do the real thing you discover all kinds of creepy crawlies hiding under rocks. QtWebKit has now split out from Qt, but there is no packaging for this new branch that I could find under Ubuntu, not too much of an issue since I am used to packaging stuff up. I found HTML5 playback with the gstreamer Phonon backend simply did not work in any half decent fasion and they were concentrating on QtMultimedia which unfortunately is part of the development release.
The deal breaker was the speed of CSS animations, which I am lucky I actually got around to checking since I was juggling so many variables. It was unfeasibly slow. So I decided to use the new QtWebKit 2.0 as it contains compositing acceleration support for just this problem. Indeed, using raster or opengl graphics backends did speed up the animation to very smooth. What I then discovered was I could have smooth animations and no working Flash or rough animations and a kind of working Flash.
This was all most depressing, so I have gone back to WebkitGTK. It is only this crash issue I have to get to the bottom of but it only shows itself in one of my tests which is very specific, and I am thinking it is related to the way xlib is working in the nvidia driver. I do prefer GTK to Qt, so that is also good for me! I would have given EFL Webkit a go, but unfortunately they seem to have removed features in getting the functionality into the Webkit trunk.
Humble Indie Games Pack
Just made my order for the Humble Indie Games Pack. This is a set of indie games that are up for sale at any price you want to pay with your choice as to how much goes to charity and how much goes to the developers. It looks like they have raised a lot of money for good causes (indie game developers deserve it was well).
All the games work on Windows, Mac and Linux (woohoo!) They are all DRM free and you can install them and run them how you want. The games are World Of Goo, Gish, Aquaria, Lugaru, and Penumbra.
Time to go and install them on the wife's Linux netbook - after all you always need more games on Linux.
Twitter Weekly Updates for 2010-05-02
- Proof that a 1 yr old can use the iPad. She's doing pinch'n'zoom. http://twitpic.com/1ip4r7 #
- Soon she'll be out-programming her dad. http://twitpic.com/1ip58c #
- Read Complex#1 by @douglasnoble Absolutely excellent stuff - I should have bought all the issues at #unicomics #
- And now discovers after a year of neglect it takes quite a while to update all those WordPress plugins on http://programmerslog.com #
- Kind of speechless http://srbissette.com/?p=9002 The http://www.heroinitiative.org/ do great work. #
- @mdales You are not the only one mad enough to write proxies in Javascript http://bit.ly/aabMc2 #
- Mmmm.... new BeagleBoard XM http://hackaday.com/2010/04/28/report-from-esc-silicon-valley-2010/ "should stand for eXtra Memory" #
- Horus Heresy board game http://bit.ly/bGLOJO one of those things I only want for the art... #
- The question is should I feel guilty or at least a little bit sick for hooking Qt into a gobject mainloop in python? #
- @kumbunterland Don't they have a Cambridge office as well? they should know better. in reply to kumbunterland #
- @douglasnoble I've got Moo business cards - really nice http://uk.moo.com/en/ in reply to douglasnoble #
- Tales Of The Uncanny Preview is in my hands now. http://srbissette.com/?p=8749 My Friday night excitement. #
- Street Hawk on DVD? How did I only just hear this? http://bit.ly/caejFv #
- Not good for Theora if this is true http://hugoroy.eu/jobs-os.php I hope this is just posturing and gets shot down. #
Powered by Twitter Tools
The Many Faces Of WebKit
I've been back into the belly of the beast investigating different implementations of WebKit again. So I thought I'd share some of the things I picked up about them.
Obviously the Apple implementation is the cream of the crop for speed an features. In fact the Mac OSX version isn't top of the tree, it's the iPhone/iPad version that has been furthest ahead. It got the accelerated compositing of web elements first and could do all kinds of funky 3D transforms using OpenGL. The OS X version got those features only in the middle of last year.
Other ports vary in stability, features and usefulness.
WebkitGTK
This is the port of WebKit to the GTK+ widget set. It has been through a lot of changes like where the network backend moved to a new library which meant that proxies could not work for a fair while. The rendering itself uses Cairo (good stuff), but it is just a shame you can't easily switch backend (like swapping from xlib to opengl). It uses Pango for font rendering which I know is very good, but it has a serious limitation, it can't load temporary fonts directly from a file, this means that the new font-face features in HTML will be a long way off.
QtWebKit
The rendering quality does look seriously good, but as usual with Qt I am finding very bad performance metrics. I've tried changing rendering backends where "native" seems to perform best and "opengl" fails then segfaults (which is even more surprising when you consider I am using the nvidia binary drivers on Linux which are pretty full featured).
HTML5support seems a bit flaky at best with one of my sample set completely freezing the process. On the plus side there is integration work already done for compositing, and fonts look seriously good. I got Flash working and it seems OK, but not quite as fast as WebkitGTK.
The biggest advantage though is PySide which are comprehensive generated Python bindings for Qt. It allowed me to a do a very quick integration with the gobject mainloop in Python as well.
They have also broken away from the protracted Qt release process which allow them to release WebKit features much faster. This makes life a lot easier and they are allowing targetting of more than one version (although not officially supported).
EFL Webkit
I have a soft spot for EFL and Enlightenment, it gets a lot of the basics very right (small reusable components and fast and low footprint). EFL Webkit shares a majority of infrastructure with GTK including the Cairo rendering and network backend. The project has also recently picked up sponsorship from Samsung.
There is a really cool demo of the web browser being drawn on a 3D surface using the EFL libraries. You can see it here. It's got gstreamer integration for HTML5 video and plugin support for Flash (oh well).
Now that just covers those main ones available on Linux. There is still the Palm WebOS version, Blackberry, OWB, and tons more. OWB looks the simplest for enabling porting to new platforms and I have built the SDL version in the past. Then there is the Windows version of WebKit and the standalone Mac build...
Binary blobs…
I discovered a way to consistently crash xorg using the nvidia driver. Open webkitgtk, close it, wait fiver seconds, open it again, rinse and repeat for 15 minutes. Boom xorg explodes. Go look at the logs and you have a stack trace telling you something went wrong. As far as I can tell it is running out of texture memory. Bizarrely it doesn't do this for videos.
The nvidia driver itself is really quite good in the grand scheme of things providing things like tear-less, hardware accelerated video. It's still more consistent and better quality than the open-source ones (obviously owning all the IP and information helps).
But this is the problem with binary blobs you can't tell what is going on inside until the state is spat out in the event of failure. I generated the bug report using the nvidia supplied tool and looked at it myself, and there was no information in there that would give a clue as to why. If the internals were exposed you could look at where the memory was going like in the days of GEM memory leaks on Intel.
I guess open-source has its own set of advantages and limitations, as well as the closed-source approach, but damn, I hate losing many hours trying to at first reproduce then diagnose it, let alone being able to make an attempt to fix it.
Unicomics 2010
Yesterday at the University of Hertfordshire was the first Unicon - the Unicomics Comic Convention organised by Danny Graydon. It is the closest comic event to Cambridge I can think of, and it was jam packed with the cream of small-press creators.
So I spent the day strolling around spending money on small press comics and going to panels. Unfortunately the panels I went to were very sparsely attended, but that meant they were more entertaining and interactive.
I thought I'd do a list of the creator's work I picked up since they all produce such fantastic work (and they all have tasters online):
- Steve and Chris Denton's Massacre and Walking Wounded - The original zombie nazis comic. Great art and entertainment.
- Doug Noble's Complex - which is about scientists trapped in a scientific complex at the end of the world.
- Oliver Lambden's Bloc - a silent story filtered through the best of bande desinee.
- Daniel Goodbrey and Sean Azzopardi's Necessary Monsters - Monsters and secret agencies.
- Paul Rainey's There's No Time Like The Present
- Andrew Cheverton and Tim Keable's West: Justice - A beautiful hardcover western book
- Joe Decie's What I Drew - Truth and lies in comics form
- George Beedham's Jambo - The UK's premiere jam based superhero.
- Paper Science - It's newspaper shaped but full of comics.
Fingers crossed there is another one of these events next year, it was very well organised and deserves a bigger turnout.
Start Me Up
This may turn out to be one of those hollow promises again, but I am going to get this blog up and running again even if it kills me. The baby is sleeping (and snoring) upstairs so I have time, unless I am forced to do cleaning.
So what is new? Camvine did fill those vacancies with some good guys. I was surprised to hear some people even heard about it form this humble page.
What I need to do now though is try and get some Python changes merged upstream. I have been beating the networking code in urllib2 and httplib (two completely separate yet hopelessly intertwined) modules actually working. This means fixing HTTPS, digest proxy authentication, in fact proxy authentication, and tons more subtle interactions (like passing on CONNECT requests).
Strangely prescient was the article Why Aren't You Contributing To Python since I have worked out all these fixes. I think the order will need to be 1) write lots of tests 2) get a number of small patches 3) cross reference it all with the python bug tracker. And this is all only in 2.6.4 currently.
And this year I will be going to Europython and aiming to not get serious food poisoning again...
Bizarre Journey To The Sun
You never know quite where you are going to end up, for me I ended up in The Sun newspaper today for the launch of a new website bestcourse4me. It is a website to help students decide their future.
You can see my ugly mug here on the right hand side.
Quentin also has a more in-depth look at the site here.
Camvine Is Hiring
At Camvine where we liberate your content from the tyranny of computers to let you splat it onto screens for all to see, we have a few openings. We've got the codapod end of the delivery which is the hardware that pumps out the pixels to your screen, right the way through to the web service which controls the screens and the content.
We are looking for two people, a software developer and a customer liaison/support/QA.
I can vouch that the software development side is fun and challenging. There is a lot of scope for doing exciting things and coming up with new and clever solutions.
If you're interested or know someone else who is interested then get in contact at the addresses in the ads.