13 June 2013

Joining Microsoft

This is a weird thing I never thought I would write in my career, but I'm joining Microsoft.  There is a new games studio called Lift London and I knew someone working there.  So my CV (well, Stack Overflow Careers profile) winged its way to their desks, and before I knew it I decided to join them.  It helps everyone I spoke to was impressive, sincere, humble and have the same hunger for learning and doing things right.

Then the paperwork started to come through for me to sign, and it suddenly dawned on me I was joining Microsoft(!)  The logos were a dead giveaway.  This is extremely weird for me because although my work at Bromium was predominantly Windows I spent a long time working on Linux (and Mac OSX in some shape or form).  I also totally believe in open-source because whenever I can I tried to make sure (things I felt were) important were properly released.  Github makes that easy.  So you could argue I'm not a natural fit for Microsoft.

I have faith after meeting my interviewees at Lift London that those things I read about working at Microsoft will not be an issue.  It's a very exciting game studio in a very exciting place doing special things within the Microsoft portfolio (going places that will be controversial).  I never did work for appraisals, ladder-climbing, etc.  I did it to learn more, to improve, and to most importantly help others and the team to achieve.  Nothing satisfies more than exceeding a customer's expectations and delivering work on time.

24th June I will begin my brutal commute to London to start a new and exciting adventure.  My role will be on server-side tech, and with a security remit.  It will be interesting to see where this goes.  If you're interested in working for a game company trying new things contact me through Twitter @garrybodsworth or email or check out the vacancies here.

Leaving Bromium

Yesterday was my last day at Bromium.

I joined when the UK office was a little one on Castle Park, Cambridge.  I've now seen it expand to over 30 people of the highest calibre.

As a parting gift to the office I sourced a couple of rare games for Bromium Games Night.

Star Trek The Next Generation Monopoly

Risk - Halo Edition (this looks really awesome and I may have to buy my own - a 5 foot ring game board!)

And finally, I sourced the original art for the first issue cover of Malware Comics, which featured the first appearance of Bromium Man!

Now onwards to new challenges!

05 March 2013

Philip Su - Engineering Process And Philosophy At Facebook

Last week I was representing Bromium at the Hacker News London event, and there was an excellent talk by Philip Su from Facebook's London office.  It was about the engineering culture at Facebook and how they have kept it working up to their current 1000 engineers.  Whatever you think of Facebook this is a great window into how they have kept the engineering culture thriving and fully operational despite the issues of engineer numbers and the scale of their operations.

Also, Philip Su is a really great speaker.

Philip Su: Site Lead at Facebook - Engineering process and philosophy at Facebook from HN London on Vimeo.

More Creator-Owned Comics - Genocide: Duostar

Before I gave up drawing around 17/18 (nearly 18 years ago) I was working on a strip that I was hoping to be published in a new Lee Davies (he of the old UK fanzine Mondo) publication.  So I came up with a whole series bible and a set of comic strips in this universe.  Unfortunately part of the reason for giving up on comics was the publication never started and I didn't think I was good enough (looking back I was a little harsh on myself).

I had all these pages gathering dust for nearly 20 years(!)  Noone else has seen them apart from me when I was drawing them.  Apart from Transformers fanzines I seem to have not successsfully managed to publish any comics, so I have loads of strips in varying states of completedness.  Please bear in mind this was done in 1995-ish so such wonders of computers I was using but manually pasting up because it was another year before I had a suitable DTP package.

For Creator Owned Day I've decided to scan them in.  Without further ado is Genocide: Duostar unleashed on an unsuspecting world!

Genocide: Duostar Page 01 Genocide: Duostar Page 02 Genocide: Duostar Page 03 Genocide: Duostar Page 04 Genocide: Duostar Page 05 Genocide: Duostar Page 06

This is the original version that I completely re-wrote and re-drew when I wasn't happy with it and after getting a script critique.  This is a lot splashier and influenced by US comics, but the version above was much tighter and more 2000AD which is far closer to my sensibilities.

Early Duostar Comic Strip Page 01 Early Duostar Comic Strip Page 02 Early Duostar Comic Strip Page 03 Early Duostar Comic Strip Page 04 Early Duostar Comic Strip Page 05 Early Duostar Comic Strip Page 06 Early Duostar Comic Strip Page 07 Early Duostar Comic Strip Page 08 Early Duostar Comic Strip Page 09 Early Duostar Comic Strip Page 10

Ping me on Twitter @garrybodsworth if you want to see any more - but noone is that mad surely ;)

Creator Owned Day - Science Park - The Comic!

Creator Owned Day was started by Stephen Downey here and its primary purpose is for creators to start new ideas and not simply dream of working on corporate owned comics.  You can follow it by on Twitter @CreatorOwnedDay or the hashtag #CreatorOwnedDay.  Also check out the great list of creator owned comics here.

Since I am off work I decided to participate this year, which is great synchronicity otherwise I'd never get around to drawing again.  And for some reason rather than just creating a character I went the whole "high concept" route, nothing like over-stretching.  Seems I have finished more or less by lunch time.

So here it is....

Science Park


A technology park just outside Cambridge located in a hollowed out mountain and deep towards the Earth's crust.  Rental rates are pretty good and there are a wide choice of office sizes.  The park is privately funded by The L Corporation and their mysterious CEO who lives and works in the penthouse suite at the top of the mountain.

Tenants include:

Immutable Corporation
Motto: We've Always Been Here
Employees: 4000
Specialities: Computer equipment
CEO: Dr Monolith

Motto: Recreating The Past
Employees: 10,000
Specialities: Bio-tech
CEO: Mr Silence PhD (please contact his PA Mr D Lackey)

Rival Science Parks:

Giant Robo Science Park
Advantages: Mobile
Disadvantages: Mobile, you might lose your office.
Giant Robo Science Park is the latest state of the art giant robot with an attitude problem.  Loaded with weaponry enjoys spending its days blowing holes in the hollowed out mountain.

Ignore the giant hands, I'm sure that it is just a cloud formation.

Why Did I Do This?

This is always a case of stick to what you know, and my intention was to do something based aroud the technology industry.  Judging from what I have created it is not necessarily based on real-life, and the irony of a mountain in Cambridgeshire is extreme.  I apologise for the Kirby-isms, the dinosaur was not supposed to look that Kirby-like, I promise I have never read Devil Dinosaur (something I do plan to rectify).  The giant robot is also my way of shoehorning my addiction to Transformers in there.

What do I want to do next?  I hope I can find the time to work on this as it has given me focus for ideas.

30 September 2012

Estimating Development Time?

It has been a crazy week where at the beginning nothing existed and on Friday the project was demoed live with all the functionality working.  In this compressed five day lifecycle it brought into sharp clarity  many aspects of software development.  I've always been able to estimate project length but there was no science in it, I always operated on gut feeling and put in healthy margins of error.

I was one of the cogs in this project but before I go into breaking down the project there were some other factors helping this development be a success:

  • Someone leading the project who made sure requirements were locked down and made sure there was no feature creep (within reason).
  • Testers were on from day one, planning how to test and then seeing through all manner of test regimens.
  • Working with smart people.
  • Good tools for source code management, documentation, and bug tracking.
The thing that was really scary for me as a project was how my time broke down:
  • 1 day coding
  • 2 days integration
  • 2 days testing and polishing
The critical aspect here is I spent one day out of five working on pure code and design.  This should be apparent to developers that coding is not the only task in delivering software projects.  By getting something that was working in half a day also gave other people something real to code against rather than trying to hope integration would happen.

The next bit was two days of integration, this involved tidying up the code for deployment, working out installers, dependencies and so on.  Then also it was a case of working out how all of this will work seamlessly for the end user.  This also involved working out how certain bits of the operating system would work when you don't have user contexts to depend on that run as administrator, because after all most devs have their machines configured like this.  Having this installer is critical for running proper end to end tests and ensuring the end-user will get the best experience.

Then we've got testing, this is unit-testing (well actually not a lot of that in a way), functional testing, and integration testing. On a tight deadline some of this is manual and not fully automated.

In amongst all this it was a case of making sure documentation was available for all aspects of the project, from end-user, through development and API right through to testing documents and lists of tests.

I suppose this thing that people reading this is if you work out how long it will take you to code, multiply that by five.

22 June 2012

Bromium Man

The whiteboard scribble I did to celebrate getting out of stealth.

21 June 2012

Bromium - Out Of Stealth

Yesterday Bromium (the company, not what the product will be) came out of stealth mode.  This was a very exciting time around the office because we can give a bit more context on what we've been secretly working away on.

During the proceeding months before this release of information a huge amount of work was going on behind the scenes briefing analysts and news outlets by our top team of Gaurav, Simon, Ian, Tal, and many more.  The avalanche of coverage actually happened to have been prepared a while in advance.

You can see Simon Crosby's presentation "Secure Everything" from GigaOM Structure here and also the Q&A interview afterwards here.  This lays the groundwork for the approach to security that we have pursued at Bromium.  The new website also went live with a couple of videos explaining what we are building.  Lots of new terminology like Microvisors.

A few good articles about Bromium are on Wired and also BloombergBusinessWeek.  The Register has an excellent piece here.

In the meantime I'm going to be plugging away writing code as we hurtle towards our next announcements that will reveal the actual product!

16 June 2012

Bromium - T-Minus Four Days

At the beginning of this year I started my new role at a stealth start-up called Bromium.  What can be said about it is we are building a next generation virtualisation product for security.  The exciting thing is that we are now only four days away from the public announcement about what we have been working on.  This will be at the at the GigaOM Structure conference in San Francisco where our CTO Simon Crosby will be doing a talk called "Secure Everything" (schedule here).

It's been an interesting and hectic time here at Bromium.  Lots of good news in the past month.  We should be in a new office by the end of this month with lots more space.  A new Director Of OS X Products going to start soon in the Cambridge office, which now means two-thirds of the Shed dwellers from Camvine have ended up at Bromium.  We also have several new people starting over the next month, which is great news because they are all extremely talented.

I've spent a lot of time over the past few months doing job fairs and interviews as we try to build a strong Cambridge team.  The Silicon Milkround in Cambridge was not as successful as we would have hoped, but we got a few interesting things out of it.  The Silicon Milkround in London was a roaring success with some crazy amount of CVs and contacts (I think the figure was 40-50) and if you were there you might have seen me do a two minute pitch for the company.  These events I swear were some of the hardest work I've ever done, but really fun and satisfying, I can guarantee I slept well afterwards.  We spent a lot of time sorting through all, this has meant I've done about 20 interviews over the past month which is a good way to fry your brain.

At Bromium it feels like we can't use the term brogrammers which has been co-opted by others.  And to prove that I am not I got minus 165 on Are You A Brogrammer?

If you are a developer, test engineer, or an OS X developer and fancy the challenge of your career drop me a line or mail jobs.uk@bromium.com - we are still hiring.

After the 20th June it will be an exciting prospect to actually tell people what I've been working on!

09 April 2012

The real important feature of C++

I've been having to write a lot of C code recently, and it makes me pine for some features of C++ because of the verbosity of some portions of code. It made me consider what really changes the way you code in C++ on comparison to C.


There are features like inheritance, but that really just manages the function overriding that is implicit. There is templates whilst discounting template meta programming is just a glorified way of avoiding code duplication. There is obviously the more aggressive type checking which is handy but doesn't really change that much about your coding style.


So what is this feature? Destructors. Immediately by adding that feature you change the way you can code and also by avoiding some C verbosity you avoid memory leaks. This opens up the whole realm of RAII and the code scoping rules start to take on a different life because you can execute code when objects begin to fall out of scope and are freed. This code then kind of discourages gotos (I really hate those) because you are relying more on the stack unwinding than remembering to malloc/free.


I reckon if I had destructors for the C code I have written in the context of structs then I could have had a lot less code.


03 April 2012

Allwinner A10 - open-source ARM

Developing on ARM is a minefield.  Each platform is different (even if they look the same) and you are lucky if any of the software is not covered by NDA or some prohibitive SDK cost for experimentation.

People have obviously heard of the Raspberry Pi but mid-to-lat 2011 there was anotehr project starting with a company called Rhombus-Tech where they wanted to create a proper CPU card and also have all the software GPL compliant.  This is exciting because you can then get the hardware and with the software available create what you want to.  They went around trying to find the hardware that could potentially have GPL compliant software.  The project has become a CPU card that uses the legacy PCMCIA form factor but re-tasks it entirely for a pluggable processor.  The spec is called the EOMA-68.

Enter the Allwinner A10, a seriously cheap piece of kit ($7 per chip in volume) which is a Cortex A8 with MALI 400 graphics, DDR3 memory and has a BSP capable of decoding 2160p video.  The company behind it Allwinner want to be GPL compliant and have been providing source code for the kernel and the other bits.  The A10 has started to appear in tablets and set-top boxes and the fully integrated platforms are very cheap.  I picked a capacitive touch 7 inch tablet off eBay for £86 including next day postage.  The Mele A1000 set top box is the platform of choice that people have started to pre-emptively use whilst waiting for the Rhombus Tech project to take off and it costs about £80.

The Rhombus Tech spec for the Allwinner A10 is here and you can sign up for preorders for the alpha/beta/release boards here.

So the real exciting bit about this is potentially all the software is out there to construct a decent Linux distribution to build toys and products on.

The main kernel development and tidying up is occurring here and is even being rebased on the 3.3 kenel as well as the Android one.  The u-boot repository for getting it booting is here.  There is a partial code dump for the hardware video decoding here although it looks like it is some of the user space code.  There are some repositories of core Android libraries here and there are some board files for the Allwinner here.  It looks like in the board files there is the OpenGL ES 2.0 and EGL shared objects here.

There are also a couple of good articles about building a custom Android for Allwinner A10 based appliances - part 1 and part 2.  There are also lots of resources for board hacking at the Rhombus Tech website and also some on the Embedded Linux wiki.

So if you fancy some cheap ARM development its worth signing up on the orders page.

Now I need to get hacking on that tablet....

28 March 2012

Camvine - The Highs And Lows

These are some other random highs and lows from the Camvine experience, lifting the veil on some bits and pieces.

What would I have rather have done with those three-and-a-half years?  Nothing else.  It'll be in my blood for a while longer.


We did the Cambridge Tech Demo Night.  Quentin had prepared lots of slides to cram into 7 minutes, and I was going to simultaneously do a full unboxing from scratch (with no cheating) simultaneously to how how easy it was to set up.  Unfortunately projector connection failure caused us to throw out the slides and Quentin fired up a web browser on some Windows machine that was part of the University network that by default was controlling the projector.  He talked, fired up the browser and I started unboxing and connecting cables, within about three minutes we were connected, registered and uploading content to the display.  The projector failure was the best thing to happen to us because we showed the product end-to-end in such a short period, we even got a standing ovation - scary and heartwarming stuff.


I was always asked to evaluate a new hardware platform, which I would get working.  Then I was always expected to support it without any hardware because £200 was too much to keep a small PC around.  Unfortunately for other things like Windows licences the company was able to pour money down the drain.


We had a crazy test rig.  It involved a full server in a Xen VM with two NICs so there was a fake Internet hanging off the back of it.  This was always our saviour, we insstantly knew if software updates or networking were broken because we had the physical hardware dangling off the back, not some mock representation.  This obviously couldn't save all problems but it meant the customers rarely saw a broken release.  It was horrible and verbose, but I saw the power in it being an integral part of the software development.


Not only did we have the major SSD failure of 2011, we had them replaced.  Then they died again, but this was a quick hotswap because we did not trust the management services we were paying for any more.  What I also discovered was the server grade Intel drives were actually cheap'n'nasty Crucials for consumers.  Because of the work I did reducing the database load we were completely fine back on spinny disks.


Working on Linux full-time.  Working on Mac full-time.  Going nowhere near Windows.  And making sure my Macs and Linux machines had awesome decals.


Stopping working on the Mac.  I realised I was using a VM with Linux the whole time on my Mac so I got myself an Asus U36JC which was an awesome laptop that I had configured perfectly for Linux.


Rewriting the network stack to be pure Python.  The code is all here https://github.com/garrybodsworth/coda_network - this means NTLM proxies worked, streaming worked, and all the intricacies of networking worked as they were supposed to.  Although I never got an official document to say I could open-source it, I did it anyway.


The Windows player.  As alluded to we had to have a Windows player and the whole feature creep and ignoring my initial specification documents helped make it a disaster.  To be honest, I have no problem with a windows player, but it took two developers for over a year and it never got released in the end.  If two developers had been working full time on the thing we were actually selling then I think it would have been a huge win all round for the customers because all the features needed would have been done.


Having an iOS player.  This did get released.  Michael Dales did excellent work on one day a week to get this done in a realistic timescale.  I think technically it was a damn good idea and something to promote, unfortunately the comany itself didn't know what to do with it so it languished in marketing purgatory.


Battling with ATi binary drivers, that was massively hard work, but I eventually had it so it could stay up for a significant period of time before the ASIC locked.  The main culprit was the XVBA decoding seemed to cause memory to eventually go mad.  The nvidia drivers had their fair share of issues like breaking vsync rendering for rotated displays which meant I ended having to make everything a surface in clutter and rotate that(!)  Adobe Flash support was similarly problematic mainly because of the underpowered CPUs we were using.


Programming the initial 35 batch of CODApods on my own in the shed on a Friday with Tron playing on the TV above my desk.  Tron was being played through a CODApod of course!


Being forced to evaluate hardware from people that were basically chancing it and were realistically years away from having a fully working system.  I ended up sinking way too much time into that.


The people who I feel embodied Camvine, Quentin, Sarah, Michael, and Thomas, without them there would have been no company to try and build.  John Naughton was also integral to the initial spirit.

And all the other people in no order and if I forgot anyone slap me round the head in the pub - Brian Boakes, Martin Waddell, Joseph Newman, Jonathan Thackray, Richard Morrison, Tomasz Wojciechowski, William Baer, Rob Berwick, Nick Brook, Dan Clemens, Allison Holloway, Steve Hales, John Martyn, John Naughton, Diego Barrow, saafad Khan, Emily Poulton, Breton Saunders, Justin Drake, Glenn Moodie, and Adam Brunning.

27 March 2012

Camvine - An Obituary - From Start-Up To Stop In Four Years

Maybe I could also call this "what was i doing for the last three-and-a-half years?"  Today could really be described as the final day of Camvine's existence, even though I left at the end of December (something I would rather not have done, I'll explain later) this is something immensely dear to my heart, so I thought I would weave my thread through it's patchwork.  So, what was Camvine?  It was an Internet connected digital signage system where you could control your displays anywhere around the world through your web browser.

I was working at DisplayLink, a company set up by Quentin Stafford-Fraser, but wasn't enjoying my work, so I was looking at startups for a good challenge and found a startup founded by Quentin Stafford-Fraser...  The weird thing was I had never met him, but thought it would be an interesting challenge.  I still have no idea what made them take a chance on me, although my profile on the website called me a veteran, which definitely made me feel old.  I think one of the major factors was that I at least had an idea of how the hardware worked, you see the first product of CodaBox + CodaLinks was based on the ethernet nivos from DisplayLink.  They were an interesting proposition, very low power and low cost, but also not massively capable pieces of hardware, so one small low powered Intel Atom powered central machine could run up to 20 displays.

So I joined Camvine mid-2008 and I ended up working in "The Shed" which is a studio at the bottom of a garden in Cambridge, where ndiyo and DisplayLink also started.  It was my first chance to do commercial Python development and it was an exciting free-flowing environment.  We even had Fun Fridays where we could work on stuff not on the roadmap, quite a few cool features came out of that single day of the week, unfortunately some did not get integrated like transitions code I had working quite sweetly on the CodaLinks.  The website was really awesome evolving into a drag and drop user interface for controlling your displays and content modelled on the iTunes style UI.

Around that time my wife fell pregnant with our first child, you would think that startup life and children do not mix, but I went head-first into it all and it was immensely rewarding.

Soon, we are heading towards a "The Pivot"...  The team needs introductions, we have Quentin Stafford-Fraser, CEO, ideas, maverick, like Hannibal in the A-Team.  We have Michael Dales, CTO, uber-hacker.  Thomas Hunger, developer, the brains.  Sarah McKeon, the office manager, the glue that holds the company together and keeping it running (every company needs a Sarah).  And me, lowest rung on the ladder.

Not long after me a sales and marketing director joined the company whose expertise was in the advertising arena, so we started to target advertisers.  Whilst CodaLinks were in interesting esoteric proposition for communicating they were not what the advertising industry craved which is tons of rich content (read: Flash) and high definition videos.  The advertising industry and digital signage are not a good place to be, but I'll come onto that.  So now we hit the pivot point around April 2009, which incidentally is the month my daughter was borrn.  We grab some Asus EeeBoxes and decide to use an Intel Atom N270 based system and start writing code for it (partially based on porting our playback code for the CodaLinks).  I start hitting the base platform with coding hammers (we were based on Ubuntu so we stauck with that) and we ended up with a Jaunty franken-distro set up mainly by me and Thomas.  By September we are shipping EeeBoxes to a potential customer needing to get rid of an unmanageable legacy system, the weird thing was I had this Acer Revo sitting on my desk and I couldn't get the damn thing to boot Linux on a USB key, then somehow I worked out how to make it work by altering the heads/sectors on the key (I'm sure I blogged about it at the time).  It had an nvidia ION as the GPU which was very interesting, for a start thhe binary drivers were much better than the Intel ones at the time (I was one of the original users of the KMS drivers trying to get it all working), also it had the ability to do video decoding on the GPU.  Because the driver quality was so good it blew the Eeeboxes out of the water with the same CPU, so this became our hardware platform in what seemed like overnight, unfortunately we did have to write off about 20 Eeebox units at the expense of the company, embarressing on my part, but totally the right decision.

Sales and marketing decided the new product should be called the CODApod, urgh, horrible name!  Internally I called it the incredicoda which not only sounding quite unhinged is really easy to grep for in source code, as a developer this is important.

The advertising industry is rubbish for digital signage, they want everything perfect, which is surprisingly difficult to achieve.  You end up having to trade things on multiple axes which are robustness, speed, quality of output, and accuracy.  You can throw more staff at solving these issues but that is not an option at some startups like this running on a shoestring.  One of the things you can't explain no matter how hard you try is that displaying a web page is not a no=op, you have to download resources, start rendering, get some more resources, render some more, then you might be complete ready for display.  Even with everything cached in memory that is not a no-op.

The most important thing to get the software shipped just 5 months after deciding on this was a robust software update, then things could be fixed in the field remotely.  I had made software update more robust since joining Camvine, and continually strived to make it unbreakable.  We evolved the software over the next six months into something quite impressive with hardware accelerated codecs (we paid Fluendo to finish development of VDPAU), newer, better web browsers and robust PDf viewers.  Unfortunately a bombshell hit in December 2009 when Thomas Hunger decided to leave for the bright lights of London.  The months that followed were a blur, me and Michael were support and development, answering the phone and support requests as well as me developing the client hardware and him on the website.  It was simultaneously awesome and horrible, horrible volume of work, but I think we were a well oiled machine with just two people in the shed.  We stuck our headphones in and got our heads down and moved forward as well as maintaining all that was there.

Some more people joined, Quentin stepped down as CEO, and we got a new CEO.  The next bombshell for me was losing Michael as CTO.  I was profoundly gutted, not only was it amazing to work with him, I consider him a good friend.  His reasons for leaving, I will leave up to him, but losing him as CTO and protector of the Camvine faith is the worst thing to ever happen to the company.  It took me a while to realise that he should have become CEO (although obviously he would not want that job), but that would have been what was right and proper for the company.  I had a crazy idea that I should take over website development and hand CODApod development over to someone else, since I knew the most about the system and Camvien was proving to be very poor at hiring, even not allowing me to advertise on some of the places I wanted to.  Michael left October 2010, and the handover was an unmitigated disaster.  I was forced to work on attempting to make a playlist perfect for an advertising potential customer, who was never going to put their money where their mouth was.  I was doing this instead of doing a decent handover, luckily Michael was still available one day a week.

I got my head down and obsessed about the website.  Christmas was a nightmare because I was now the only thing between our website and total oblivion, especially with issues like the server going up to load 30 at 8:30am every morning.  I ended up by March 2011 restructuring pretty much all the deployment to use nginx, gunicorn, and Fabric, the tools of the modern Django coder.  The databases were split onto new machines, the load balancing worked pretty great.

Unfortunately, the CODApod was essentially dead.  The company had decided that they wanted a Windows CODA player, so this would now suck two man-years of effort into a black hole as it was never officially released.  During this time the only development on the CODApod was what I did in what i laughably called my "spare time", also the CODApod software had to be ported to work on as many hardware platforms as possible (ATi, nvidia, Intel Core) where there were no scheduled developer resources.  I was doing all this whilst also running and developing and being on-call for the website.  I felt really sorry for the customers knowing no client side developments were happening that could improve their hardware further.  Somehow I managed to have a release of CODAsoft available two months after starting work in my spare time, and I kept it up to date until the day I finished.  It worked flawlessly on Intel graphics (945 through to I think Ivy Bridge), ATI (open-source and binary drivers with hardware acceleration) and nvidia (everything the binary driver supports and with hardware acceleration).

We left the shed in 2011.  A very sad day for me.  The weird thing was the physical seperation matching the logical seperation of the company actually was a great thing that was not appreciated by some people.  By moving into one huge space things started to bleed into one another and there was an immense lack of self-control by certain roles.

The moment I knew I had to leave Camvine completely and utterly was Father's Day 2011.  We were out in the middle of nowhere with me, my wife, daughter and father-in-law, and there was basically no phone reception.  I got an odd phonecall and discovered the servers were down and attempted to debug what was going on through a phone call and intermittent data coverage.  Basically we were screwed.  For a bit of context, I was forced to outsource database management to someone else in order to alleviate my workload, and we ended up with two SSD based servers with master-slave, back-ups and database dumps every day.  Everything failed, but it had been failing for a month.  Hard drives?  Broken serving corrupted data silently.  Backups of the HDs?  Failing silently.  Database dumps?  Failing as well.  What happened was they decided to upgrade a backup program which caused the mysql process to restart, which is where all hell broke loose.  I managed to get in the office at 5pm Sunday and was there reconstructing enough of a business to open doors again the Monday morning otherwise we should have just shut up shop.  I have no idea how I did it, but enough was workking by 1am and Quentin was great moral support.  The next two weeks of 14 hour days involved recreating as much data as possible which was almost everything, which was something to at least be proud of.  The thought of this still makes me feel sick.  The write rate of the web service was blamed as it was doing something like 50 per second, so I rewrote portions and got it down to 0.5 per socond.  This was not the problem and it happened again but the recovery procedure was much more robust in that instance.

The real kicker - it happened after we have a Pingdom report with one month being 100% uptime.

I said I wanted to leave but I was convinced to stay by being told that things will be worked out to make my workload more manageable.  Needless to say this never happened, and I got a payrise which was definitely not what I wanted.  What I wanted was Camvine to succeed and I wanted to have a healthier relationship with my work which was continually getting more and more as time went on.  I was forced out not by a specific person but the system I was working under, with four developers being wasted on professional services and the Windows player, it required way too much heavy lifting.

So I started to look, and ended up at a great start-up called Bromium.  This all took longer than I would have liked.   When I handed in my notice, I found that period was made to be immensely uncomfortable.  At least I had Italian Spider-Man to brighten the days.  I finished December 2011 with my DNA all over the place, massive amounts of website and codapod source.

So what did I use to build the CODApod?  Ubuntu, GTK, WebkitGTK, poppler, clutter, connman, Python, and lots more.  I was really proud of the clutter Python based desktop compositor I wrote.  If people tell you Python is too slow they are wrong, 60 FPS every time.  The whole thing used process abstraction for robustness so bits could fail easily without taking the whole system down.  Everything failed gracefully.  People told me they could tell it was a Camvine system because of the smooth tickers (using OpenGL textures).

The website was all Python and Django.  I'm really glad I took that on, because I discovered I love website development and I think I did a really half decent job, apart from the database disaster of 2011.  The site was dealing with 1 million requests per day and didn't break sweat on very modest hardware.

One month after I left it was announced Camvine was going into administration.  This was a massive shock to me since I didn't know it was on the cards and thought there was 6 months money still in the bank.  Subsequently on seeing some financials the bloodletting had to happen and the company was never going to turn the corner to profitiability.  I find it annoying myself because I did not want to take out too much money from the company so made sure my wages were kept at the low-end whch most people see as idiotic, but I see as my commitment and investment in the company.  I made sure I helped people as much as I could to find more work and to help out in any way I could, after all it felt like a piece of me still.

In administration it feels like people are dividing up a piece of me.  I care immensely about the product and what the company could have been capable of.  The codapod is the almost as old as my daughter and the time I have sepnt working on Camvine beyond what is contractually obligated is time I haven't spent with my daughter.  I still wouldn't trade it (apart from the horrible ending) as technically I feel I have done great work and I have grown immensely.

The pain I feel that people are trading my code without me with is huge and I look forward to not being near to it in the future because maybe the distance will let me move on.

02 March 2012

New Github Repo - polipo on Microsoft Visual Studio

Today I've just uploaded a fork of polipo to my Github account.  it is a caching proxy server which works really well with a tiny amount of resources. It is primarily driven by Unix development so it has a version that works on Cygwin and a version that is not considered complete or tested that can use the Mingw toolchain.

I wanted to get it working with Visual Studio and I stumbled across some work here at polipovc where someone got it working with Visual Studio.  It is a code dump rather than a series of patches, so I took the polipo git repository on Github and forked it.  I then applied the changes as a series of patches making minimal changes in each one and tried to normalise it with the project coding style.  I also created a solution for Visual Studio 2010.  It compiles for 32-bit and 64-bit (but just ignore the swatches of warnings).

The on-disk cache seems to not be working properly right now so I might look a bit more closely into why that is the case.  To be honest the directory checks need to be factored out.

You can see my polipo github repository here.

16 November 2011

Boogie Board Rip - Review

Perhaps I should have titled it "The Tale Of Two Tablets".  A few months ago I picked up myself and Asus Eee Note, the main selling point to me was the integrated Wacom digitiser making me believe this could be a useful sketching device.  Unfortunately the software on it was a custom operating system based on Qt (framebuffer) and was pretty deficient from a sketching point of view.  So I offloaded the thing off on eBay....

Then I heard about the new version of the Boogie Board which is less of a tablet, more of a paper replacement, but it would have a saving capability for pictures.  All for the price of £100 + VAT.  The Boogie Board RIP has a 9.5 inch area for drawing on and can even capture those renderings. The way the display on previous boogie boards worked was impressive in that it only consumed power to blank the display, and putting pressure on the display caused an image to be formed.

I did wonder how on earth they would have taken that technology and been able to capture the images.  But the guys at Improv Electronics are much smarter than that, it looks like the way it works is there is a separate digitiser to the screen, so it is kind of like a graphics tablet where you can see the image you are also drawing.  You have to wake the digitiser to start using it and press the Save button to store the file.  The digitiser stores the file in a vector-based PDF leading to some quite nice images.

The primary reason to get hold of it was for sketching and note-taking.  Also, I wanted to actually be able to use the device on Linux, and since when you connect it, it just appears as a mass storage device meaning a win there compared to other connection mechanisms (like in the Eee Note).

The device itself is light and flimsy in the best possible way, making it easy to hold and also you don't worry too much about protecting the device rather than actually using it.  The battery apparently lasts for a week on a charge, but I have no idea the amount of charge my device is currently holding because it has no indicator.  This is not necessarily a problem because the device is ludicrously stripped down and simple, so I see it has having an incredibly simple UI.

The only criticism I have about the device is more subtle than most people would notice.  Because the digitiser and display are separate devices they seem to work at different resolutions.  The digitiser is highly accurate by the look of it generating cleaner and thinner lines, but the reactive display generates thicker less accurate lines.  This may also be due to the design of the pen nib.  The pen itself is required to capture input, and I found it comfortable to use.

Overall the Boogie Board Rip is a cool little device good at the job it was designed to do.  I'm still trying to work out the best way it will be my digital sketchpad but it is the device I have seen get closest to what I want (in fact if they did a really large A3 version that would be awesome).  The guys at Improv Electronics have done an excellent job.

You can buy them in the UK from Improv Electronics for £120 including VAT.

This is a picture comparing the PDF output to theactual display - you can see finer lines on the image compared to the screen where some lines bleed into one another.

And some quick two minute sketches of Rodimus and Megatron.

20 October 2011

OpenELEC - New Distro For Media Centres

I saw that a project called OpenELEC (Open Embedded Linux Entertainment Centre) got released released recently.  What is interesting about it is not so much the fact that it is a fast booting XBMC distribution, but the fact that it is an embedded Linux system for x86 platforms with minimal size and uses the latest components.

I can vouch for the most important thing when dealig with media is having the latest graphics dependencies on Linux.  You tend not to have long-lived stable releases and most issues and advances are done in the day-to-day development.

The source code is available on Github here.  Going through I can see it has Python, GTK+, and Python gobject bindings, Linux 3.1rc10 kernel and lots more.  Even though it is a cut-down minimal system it doesn't lack handy things like ssh and a text editor.

The final images are a mere 100MB or there about in size.  There are scripts to create the USB install key and it even has an automated update system.  There are optimised builds for ION and AMD Fusion as well as a few other platforms.

If you want an XBMC computer then I can think of more heavyweight ways to get it, but if you want it to boot in 10 seconds and you don't need to cusomise it too much then this would be a really good choice.

To me it looks like an ideal platform for trying out different media type applications (say kiosks or other media centres) with not a huge amount of code as the base system looks pretty solid.  I reckon something like Clutter's Media Explorer could be quite good on it.

26 September 2011

PyCon UK 2011 - Great Conference

Now with EuroPython being held outside the UK, the PyCon UK takes on more significance.  Run by the same guys and now relocated to Coventry this year was a triumph.  Something like 200 people attended for the weekend log conference which is pretty impressive.

The venue was excellent.  The most important aspect was all meals were supplied at the venue (and were all very tasty).  This meant that people tended not to drift off and hopefully that helped the mingling.  Some of the rooms were a little small but nobody seemed to forsee how well attended the weekend would be with lots of last minute tickets.

The topic that dominated the entire conference was computing and education.  Specifically the useless nature of ICT courses and the complete lack of the next generation of coders coming through.  The obvious technology on show and being discussed was RaspberryPi.  There was also the BBC CodeLab host attempting to evoke those old feelings of the BBC Model B.  Basically the conclusion comes down to there is no will in government for changing the nature of computing in schools and it will require hackers in number making the changes piece by piece themselves.

The Coding Dojo was a lot of fun using the task of Maze Generation.  We managed to lash enough together five minutes form the end and I think we surprised ourselves by it working.  Also the web development open forum was good, maybe I spoke too much in that....  and I managed to get a demo of Camvine in there.  There was also three thought-provoking and entertaining keynotes.

As always the people there made the conference.  The team who ran it all did a sterling job, even better than their previous EuroPythons.  Team 4 in the Code Dojo did a great bit of work, Matt, Safe, Adrian, and Menno.  I also got to speak to the keynote speaker Allison Randal at the meal, in fact the whole table was entertaining.

So my recommendation, even if you don't use Python much, is to go to PyCon UK next year because I am pretty sure you will learn something or meet some really interesting people.

28 August 2011

Raspberry Pi - The Trojan Horse?

The Raspberry Pi project has got a lot of coverage today thanks to the article in the Guardian written by John Naughton.

The fundamental problem has never been the lack of cheap hardware. Even in this day and age it is not the lack of quality freely available tools.  A kid who has the propensity to be a hacker nowadays would invariably have Linux installed with the myriad of tools available, and also doing that they would have the knowledge it should work fairly easy on other computers running roughly the same operating system.

The Raspberry Pi is attempting to invoke the feeling of the BBC Micro in an attempt to get kids programming again, because in the near future we are going to be in a very precarious situation with our engineering ability in this country.

First of all why did the BBC Micro succeed? It is very hard to compare to today with the abundance of computing hardware just in your pocket.  Part of it was almost every classroom across the land had one of these and the children who could work out how to operate them hunted 1s and 0s in packs.  There was a communal aspect to it as the children would have to share, listen, and take it in turns.  Also, there was the TV programme Micro Live, which was needed to get a chunk of publicity.

My first programming was done on BBC Micros at school in the East End of London and at friends houses as we couldn't afford one at home. So, I for one know their importance and probably a majority of my friends and colleagues had similar start.

When I was at University Linux was just starting to gain some traction and the work of the FSF got us GCC and the mix of other tools.  But on Windows I was still trying to use DJGPP and there was no chance of getting more complex things working with an open (free and Free) toolchain.  Children coming up in that age must consider it the computing Dark Ages.

So I come back to my first statement that cheap hardware has never been the problem.  The people getting excited about it are 30+ developers like me who think - "Oooooh, cheap commodity ARM platform, that I can hack in lots of ways".  My immediate thought was to make it into an immensely cheap network connected digital signage system.  And this is probably because ARM is still a minefield and a static and well supported platform would be desirable.

I am not trying to negate the good work done by Raspberry Pi as it could be amazing if it is the Trojan Horse.  What do I mean by that?  The hardware becomes the makeweight for all the real important stuff that needs to happen if we are truly going to educate the next generation of programmers.

What is needed?  Community, publicity, documentation and traction.  Community because this goes beyond the single classroom of my youth.  You need IRC, social networking and tools for more permanent sharing (like Github and Gist).  This then ties into documentation, it would need to be good up front but also allow for the people to evolve it, so much like a wiki.

Just social media publicity would not be enough, you would really need a TV programme to generate it, but then this is where the social media would tie in.  For the programme they would have to show the users best contributions so there is an incentive to produce and produce something good.  After all how many people sent a picture into Hartbeat in the hope of getting into the gallery? It's the closest computing could get to the X-Factor...

The most important part will always be changing the educational system to get children learning how computers to make computers work for them rather than simply going through the commercial Word Processor/Spreadsheet operating.  I suppose this is where the documentation does come in, but I think there will need to be more.  If someone could show educators a curriculum that they could prove worked then that might get the traction required.  That would be a tough proposition and also I am unsure about whether there are enough technical skills in the educational sector to deploy such a thing.  Maybe it would require people from industry coming in and mentoring...

In the end I am hoping that the Raspberry Pi hardware is the Trojan Horse for something much more fundamental.

26 August 2011

Linux at 20

If it didn't exist I somehow think computing would be a much less fun place and I probably wouldn't be able to do my job so well.

Linux Foundation
I'll be celebrating 20 years of Linux with
The Linux Foundation!

24 August 2011

Pycon UK 2011

Unfortunately I was unable to make it to EuroPython 2011 due to its location (no longer being in Birmingham).  The good news is that the same guys who ran Europython in Birmingham have announced Pycon UK in Coventry.

For the reasonable price of £95 you get two days of Python goodness.  As their website says:

Sessions will include testing, a code clinic, Django, PyPy, XML, Design and Graphical Programming. There will be an unscheduled room for dynamic talks and time allocated for sprints. The weekend will also feature the return of our ever boisterous conference dinner!
I've paid for my ticket already and Python events are always educational and entertaining.

23 August 2011

New Github Project - pyxlib-ctypes

I had written a pyrex based binding to some elements of Xlib, but I decided to make it pure python to avoid the compilation step.  Luckily a kind person had created pyxlib-ctypes http://code.google.com/p/pyxlib-ctypes/ which is a pure Python binding to the underlying X functions.

I needed a few more features due to XComposite for writing crazy desktop compositors in pure Python and also some XFixes functionality so we can really hide the mouse cursor.

As such I am publishing my amendments to it on Github - you can check it out here: https://github.com/garrybodsworth/pyxlib-ctypes it literally has the bare minimum I needed and could probably be extended for greater coverage.  It is used in production and seems to be working very happily.


It's aliiiiiive!

After a few years of hosting my own blog on http://programmerslog.com I have come back to Blogger.  This unfortunately was caused by losing the domain which is pretty sad....  I have a back up of the few hundred blog posts in a SQL dump but I doubt I will find the energy to extract them(!)

What will be on this blog now?  Any projects I publish on Github, lots of Python, Linux, coding, and probably my random artistic scribblings.

I must say Blogger is looking rather swish nowadays, part of the reason to use Wordpress was for the features, but now I can do pretty much what I want here.  Also I don't have to worry about renewing my domain subscriptions or doing software updates...

I've reconfigured all my feeds to point to this blog since it is the only active one.

Now I just have to actually write some content...

10 July 2008

This Blog Has Moved To http://blog.programmerslog.com

Hi everyone.

This blog has now moved to Programmer's Log at its own domain using Wordpress. The content of this blog will remain, but all new posts will be made at the Programmer's Log. I've already posted a minor update to the TortoiseSVN Visual Studio integration.

Thanks for reading all this time on Blogger. I have made just over 300 posts and I'm not planning on stopping there, so I hope you can join me.

Oh yes, and don't forget to check out my new employer's website Cambridge Visual Networks (Camvine).

Thanks again,
Garry Bodsworth

22 June 2008

A more idealistic time...

Here in the UK we had an episode of The Money Programme broadcast on the BBC called Bill Gates: How a Geek Changed the World. Follow the link to see it on the iPlayer.

An interesting part of this is Steve Wozniak: How it began which is highlighted and can be watched on the BBC News site here. It's certainly nice to think of a time when the computer business wasn't all about taking over the world. It's a brief video from how he got involved in computers, through starting Apple.

It's nice to see some programmes on TV that look at computing, in fact I'm amazed at the lack of ones about the history of computing. Although we may be getting a dramatisation featuring Leonardo DiCaprio as a co-founder of Atari...

18 June 2008

Firefox 3 Released

Go get it here:

Download Day

Have a little read on how to make it even better for the Mac here.

Firefox 3

17 June 2008

Bill Gates Talks Some Sense - A 1986 Interview

The Programmers At Work blog have posted a 1986 interview with Bill Gates - you can read it here.

What is incredibly bizarre is that he talks a lot of sense and a lot of it is still applicable today. Certainly 20 years later substitute assembler for C, and C with a scripting language in the article and you can believe it was a recent article.

It's hard to believe Microsoft is the same company that Bill Gates is talking about in this interview as he has such a pragmatic outlook towards development. With those attitudes you can see why Microsoft became successful, but it also shows you can't stay that way forever without great effort. Most of my teenage years and adult life I have seen Microsoft as this big monopoly and it was nice to see something that shows what it was like before then.

10 June 2008

GUI Toolkits - eGUI++ Easy GUI

I've blogged a few times in the past about John Torjo's Win32 GUI Generics. It was really quite an impressive accomplishment using the advanced C++ techniques in Windows development, but was a bit of a rough diamond. I did do some minor changes to my local copy when I was playing around with it to make sure that the widgets used the correct Windows theming engine, and it was surprisingly easy to add which is a testament to the quality of the code. It did take ages to compile though with all those templates.

I notice that now John Torjo has posted eGUI++ to his blog. Hopefully this is a progression using all he learnt with his previous iteration in Win32 GUI Generics.

There is an article about eGUI++ on the MSDN here written by John. It covers the basics of what he has done and covers some of the features. It is typesafe at compile time which is great for catching errors early as most GUI toolkits you rarely find those types of problems until runtime (especially when using Windows resources).

You can download it from here. The example presented on that page is quick and to the point. Hopefully this is a toolkit to watch.

Upcoming Cambridge Talks

Tomorrow there is the latest BCS SPA talk in Cambridge. This month we have Dependency Injection by Stephen Oakman. If you're in Cambridge and fancy a computer talk with the obligatory pub-based discussion afterwards, give it a go.

Coming up in July Cory Doctorow is giving a talk in Cambridge called "Life in the Information Economy" as part of the Cambridge Business Lecture series. You can sign up here.

We made a bet, some decades ago, that the information economy would be based on buying and selling (and hence restricting copying of) information. We were totally, 100 percent wrong, and now the world’s in turmoil because of it. What does a copy-native economy look like? How do everyone from barbers to musicians become richer, more fulfilled and more civilly engaged in a real information society. And what do we do about the fact that a couple of dinosauric entertainment companies are determined to screw it up?

He's a science fiction author, blogger and journalist. If you follow BoingBoing.net you'll have read a lot of his stuff. He makes his books available under the Creative Commons licence and I would consider him one of the foremost thinkers (and doers) in the modern minefield of information and ownership (he was European Affairs Coordinator for the Electronic Frontier Foundation).

Comics adaptations of his fiction have been made available under the Creative Commons licence. Follow this link for more information.

03 June 2008

Redmine - Part 2

I have been playing with the project management/issue tracker Redmine a bit more over the past couple of days. I have been getting more and more impressed the more I use it because it is so swift to use, by swift I don't mean it runs fast, I mean it gets work done with the minimum of fuss.

The issue tracking system is pretty simplistic if you do a direct comparison to something like Bugzilla, but it provides the essentials. The best bit though is the support for custom fields out of the box, so you can pretty much set up your bug report the way you want it. You can do all the normal things as well like configuring your workflow.

Using the listview of issue gives you a great context menu that you can use to do common actions like setting the priority, status, and completion percentage.

The issue tracking also integrates time tracking so you can see the progress. You have a percentage complete as well as estimated time and actual time. The time estimations can be tagged with which sub-task took the time (like design, code and test).

I spent a bit of time messing around with the source control integration. I decided to try it out with a Git installation I had laying about. In the end it is pretty simple to actually do, and it provides a simple interface with coloured diffs. This means it becomes trivial to cross reference issues, documents, code, revisions, and more in one place. I noticed that the commit comments get added to the reports by adding the issue number.

The icing on the cake is that it is all wrapped in a clear and intuitive user interface. It looks good and makes use of all the Javascript goodness that users come to expect and it actually helps to make it easy to use.

29 May 2008

Bug Databases - Redmine

While on my Internet travels I found a bug database system I hadn't encounterd before called Redmine. It's open-source and based on Ruby-On-Rails, and provides much more than simply bugtracking. It refers to itself as a project management tool as it provides enough tools to do that.

Features include:
* Per project wiki and forums
* Issue tracking
* Source control integration (Subversion, CVS, Darcs, Bazaar, Mercurial, Git)
* Gantt chart and calendar
* Time tracking functionality
* News, documents & files management

I did a quick test install on a Ubuntu virtual machine to see what it was like. The user interface is really quite slick and very easy to use because it makes the most of Javascript. Even when you have a list view you get a nice context menu to do the simple and most often done changes (priority and the suchlike).

One of the most interesting parts I found of the system is the paradigm it uses to partition data. You create a project and it is possible to have per-project wikis, forums, and repositories. You can even use different source control systems per project. What makes it interesting is that you can point a project at a sub-branch of a repository, so it would be possible to have a project per branch or group of branches. This would make it much easier to track implementations on a per-branch basis.

With document and wiki management available it is then possible to integrate the peripheral information for a product with the items involved in actually implementing it. With the integrated wiki you can also have your requirements and design documents easily at hand.

I know some of this is very similar to Trac, but it is good to see another tool approaching the same space. Some of the features like the ease of source control integration is really nice.

21 May 2008

Web Development - Pylons

I was reading some information about Ruby On Rails and watching a few of the screencasts and I was really impressed about how fast you can create a database-backed website. One of the good blogs about it is A Fresh Cup where a Microsoft refugee embarks on a career in Rails development. It pointed to a very interesting article Ruby’s Not Ready whcih compares Ruby to Python.

Through that article I discovered Pyhton has its own "On-Rails" equivalent Pylons for rapid website development. Since Python resources out there are so numerous this would be a very interesting platform to build on. I guess that also means for enterprising C++ developers using Boost.Python they could have some interesting performance improvements.

For the most part Pylons seems about as productive as Rails, as outlined in the tutorial for making a quick blog.

It's pretty easy to try this stuff out on a Mac if you have MacPorts installed (and Porticus to make it extra nice).

19 May 2008

Goings On In The Land Of Eclipse

I've been playing around with some of the Alpha/Beta releases of Eclipse. I haven't played around with it for quite a while but some of the advancements look really interesting.

Currently Eclipse has 3.4.M7 is available for download. One of the most interesting features is that the user interface now supports WPF on Vista. The Java toolkit SWT now has a WPF back-end, you can see its resolution independence if you look at it through the Magnifier application on Windows. Also, in general, the user interface looks much more integrated into the native platform.

You can see a list of new and newsworthy items for Eclipse 3.3 here and 3.4 here.

The main reason I was trying out the new version was to give the C/C++ toolkit CDT 5.0 a go. Doug Schaefer has blogged about it here.

I was just playing a little with it to see how it compared to the older version and it seems a bit faster. It has the beginnings of some nice refactorings and templates which should make some common coding tasks a bit simpler.

Hopefully when this all comes out Wascana will have a new version released with a nicely packaged C/C++ development environment for Windows. It could make a compelling alternative to other IDEs, as well as giving you access to other great tools like PyDev (for Python), Mylyn (task and bug management), and I suppose Java as well...

18 May 2008

Firefox 3 On The Mac

I've been using Firefox 3 on the Mac for the past month so I thought I'd share some of my experiences when using it. There release candidate download page is here.

The reason I didn't start using it beforehand was because I was waiting for a supported version of the Del.icio.us bookmarks add-on as it has become indespensible to me. You can get this here.

I run a few add-ons to make it look more integrated with Mac OSX:
* Locationbar 2 for improving the recognition of URLs.
* Fission for the progress in the URL field like Safari.
* GrApple Delicious (Blue) theme which looks very good (and integrated on the Mac).
* And don't forget AdBlock Plus whichever platform you are running on!

With all of those add-ons working (you can also force add-ons to work by using the Nightly Tester Tools) I was ready to use Firefox 3. For a Beta (and now the Release Candidate) it is amazingly stable.

The entire program is much more responsive and lighter on the system resources. The integration and look and feel (with the add-ons) is excellent, although I would prefer if spell-checking with edit fields to be on by default (although there is a hack here).

In general it is a large step forward although I am not using the biggest new feature - the bookmarks replacement "Places". As usual though the major feather in Firefox's cap is the add-ons and once you have them you find it impossible to use anything else.

Also, I am using it on Windows Vista at work and it is fast, responsive and looks much better, although I would prefer not to have the blue tinge to the window. I'd recommend upgrading now because once you've tried 3 you can't go back.

13 April 2008

Microsoft STL Performance

On the Boost discussion group there is a discussion started about High Cost of MS "Safe" STL for Release Builds. It is an interesting look at the massive differences between "safe" and "non-safe" options in Microsoft STL.

I don't think there has been a clear look at the efficiencies and inefficiencies in the MS-STL implementation, especially with the different options (iterator debugging and safe options). There have been some looks at comparing different STL implementations but it always difficult to do a good comparison, the main problem being comparing the correct "latest versions".

Going back a while I was justifying the use of STLPort instead of Microsoft STL supplied with Visual Studio. Simply, it was a performance thing with both memory and efficiency. Certainly with the new STLPort visualisers for the Microsoft debugger it is an even playing field for ease of use.

You can read those here:
* Visual Studio 2005 - Lets Break Everything! - a bit about how to switch off some of the more annoying "features".
* Development - STLPort versus Microsoft STL performance - A quick summary of my observations on the performance in a real-world complex application.
* More on STLPort and Microsoft STL performance - A little more background.