Java, Mongo, Ruby, & UUIDs. A “fun” afternoon.

Recently I had cause to dig a little further than I’d have liked to into the world of UUID representation in MongoDB. It wasn’t the most trivial thing in the world, and I couldn’t find resources specific to the problem I had, so I thought I’d put something up on the off-chance it aids someone else in the future. A gained a lot of info from reading Studio 3t’s article on UUIDs in Mongo, and it’s worth checking out if you’re having issues too.

We have a Java backend, which writes UUIDs into Mongo using the 0x03 “UUID (old)” subtype. I had cause to write a quick script to push some data into Mongo and jumped to Ruby, being my scripting language of choice. I got quite deep on all other functions of this script and it was almost complete before I realised something was very amiss.

I would give this script a UUID that our application knows about, e.g. “016df4ad-9f63-4b28-b85a-be6f5046981f”. That would build some data and throw it into Mongo using: '016df4ad-9f63-4b28-b85a-be6f5046981f', :uuid_old Here’s how that looked in Mongo vs. what I expected:
expected: BinData(3,"KEtjn630bQEfmEZQb75auA==")
actual: BinData(3,"MDE2ZGY0YWQtOWY2My00YjI4LWI4NWEtYmU2ZjUwNDY5ODFm")

Uh oh. I confirmed a similar issue using just “:uuid” as the sub-type, and entered the rabbit-hole. It seems the 0x03 sub-type was interpreted differently by different language drivers, and they aren’t interoperable as a result. The “correct” solution is to use 0x04, which is designed to be compatible across drivers and languages. That’s a nice ticket for the tech-debt backlog, but I didn’t have time for it now.

Luckily, the C# driver recognised the issues with interoperability and included some utilities to convert Mongo’s data into readable UUIDs as different languages would see them. These utilities were in Javascript but were fairly easy to port to Ruby, so I thought I would share it. Hopefully, it will help someone else in the future!


2017 Cycling Season in Review

Ok so I’m super late posting this. Yes, it’s September, and the 2018 season is not far from over, but I realised I hadn’t done this post and can’t skip a year, so here we go. Let’s see how much I remember.

I helpfully documented my 2017 goals in the 2016 review, and they were:

  • 10s. A short 20:xx. Stretch goal, 19:xx.
  • 25s. Finally, finally go sub 55:xx.
  • 50s. 1:55:xx.
  • Maratona. Top 7% of finishers, stretch goal of top 5%.
  • 100s. I may give one of these a go this year.


I started as is traditional with the Kingston Wheelers Sporting 14, going 1 second slower than in 2016, but placing better at 13th vs 20th. I always find this a tough opener (and 2018 has proven no different). Perhaps it’s the cold, meaning I can’t get warm, or perhaps it’s the crappy road surface on the course meaning I never get comfortable. Whatever it is, I don’t go well on this course.

Following a disappointing start, I went to the Redhill 18, which I’d previously done in 2015, and took just over 4 minutes off my previous time. It’s always nice to have a good race following a poor one to boost the spirits.

When April rolled around I did a couple of 10s, the second giving me my best TT placing of 7th (out of a decent field in the 70s). It wasn’t the PB I wanted – that would have to wait until P881 at the beginning of May, where I clocked a 20:31 in what would be my last 10 of the season. This Hampshire Roads event was the first TT I ever did back in 2013, and I look forward to it every year. The course is great, if perhaps not as fast as the lesser-used P881r.

Later in the season I got PBs at both 25 & 50 miles, clocking 55:15 (so not quite hitting my goal) and 1:55:23 (hitting my goal, yay!). I seem to be mostly devoid of photographs from this season, but here’s one from the Charlottesville 50.


My main ride of the year was planned to be the Maratona, which me and my mates had agreed on in late 2016. I wasn’t planning anything else, but fate had other ideas…

Around May, I entered a competition in Cyclist magazine to win entry to a new Marmotte event in Austria. I thought it might be fun, and rarely win these things, so put my name down. Of course, I won my entry (though not flights, transfers, accommodation, etc., which I hadn’t taken into consideration), and headed to a rainy Salzburg with my Aeroad for 107 miles & 3,400m of climbing.

First off: those climbs are steep. I was cursing not putting a 34 on the bike when I got to the final climb. Although, I had gotten there in the company of the lead group which contained one Laurent Jalabert (who at one point gave an unforgettable demonstration of on-the-bike urinating), which could also explain why I was utterly buggered. Still, after a rainy start, the sun eventually came out, and the scenery was absolutely stunning. I was disappointed to see it didn’t get onto the calendar this year as I would have loved an excuse to go back.

In July, we headed to Italy for the Maratona, an event so highly regarded amongst previous participants it’s a wonder it isn’t a compulsory MAMIL ride. First things first: the Dolomites are incredible. Seriously, pant-wettingly beautiful rock formations the likes of which I’d never seen before. The Maratona is worth it for those alone.

The event itself, if I’m honest, I can’t make my mind up about. Perhaps my expectations of it, and of myself, were too high; perhaps I had a bad day. The first four climbs were a procession of Lycra, with everyone travelling at the speed of the lowest common denominator, and only a few picking their way through the crowd. I squeezed into a number of gaps but was still frustrated by the pace, being over a whole W/kg down on my target for those opening short climbs. I was 552nd, which just about amounted to top 10% of long-course finishers.

Would I do it again? Definitely. But only because return visitors get a start time closer to the front. Otherwise, I’d be travelling to the Dolomites out of season for a mix of cycling and walking with my camera.

Fate had more in store for me, though. The Marmotte Austria, it transpires, was a qualification event for the UCI Granfondo World Championships, and I qualified. I couldn’t turn this down.

Allow me to address some of the controversy around this event. In order to race, you need to wear country-specific kit, meaning my compatriots and I would be in GB kit. There was kit available specifically for this event, but you could of course buy replica Team GB kit and wear that. For some people this amounted to being a member of Team GB, an honour which can only be bestowed upon those selected as Olympic or World hopefuls and coached by British Cycling staff. Certainly I was excited that I would be flying the GB flag in a peloton riding through the French countryside, but ultimately I had been lucky enough to finish to 20% of my age category in an event with a fairly small start list. This was no validation of my quality as a cyclist.

Almost 200 people started in my age category (and almost a quarter of us were Brits), and the first 30km or so reflected everyone’s nervousness. 200 mixed-ability amateurs speeding along open French highways was both terrifying and exhilarating in equal measure. I count myself firmly in the lower end of the ability range, being as I was, up until this point, primarily a time-triallist. This showed on the first climb, something which should have given me no trouble at all, where I was poorly placed and found myself the wrong side of a split. Chasing back on along the flat took a lot out of me, and I couldn’t hold the leader’s pace on the second climb.

Still, I finished the 98 mile course (with 2000m of climbing, no less) in 4:24, in the company of a nice Canadian guy and a couple of other Brits who were stingy on the front. I was decidedly mid-pack in the overall result, but 11th out of the 50-odd Brits in my age group, which can’t be too bad.

This gave me a serious appetite to finally make use of the BC license I’ve been renewing each year, so on the drive home I booked up a crit at Cyclopark in Kent for the next weekend. Fate had one to get back, and I punctured on the first lap.

Hill Climbs

I always wonder, as I await the timekeeper’s 5-second countdown, why I enter hill climbs. A feeling of dread fills me, and I tell myself that I never go as well as I think I should in these races. I wonder what would happen if, for the first time since my first foray into the hills some years prior, I would need to put a foot down on the climb. Perhaps because of this, I don’t go as well as I’d hope. The cycle repeats itself.

This year I entered four events: Denbies Duels, Catford, Bec, and the Sussex Nomads event on Ditchling Beacon. At Denbies, I succeeded in making the second round for the first time, at my third attempt. I was thoroughly out-sprinted by a junior in our head-to-head, of course, but I was pleased to be there after many years being on the cusp.

At Catford and Bec I was decidedly average, clocking 2:30 and 2:25 respectively. Nothing much to write home about, except of course the ever fantastic crowds these events attract, which make them worthwhile.

For Ditchling Beacon I decided to do something different and rode with my Garmin tucked away. I wondered whether the numbers were validating my inner gremlins, so I decided to take them out of the equation. As well, the climb was one I was reasonably unfamiliar with, having done it only once before. I caught my minute man and took 9th, a result I was incredibly pleased with. Not quite enough data to prove the numbers are bad for me, but it’s showing promise.

Photo courtesy of Claire Goldsmith


By December I’d had enough of the turbo and decided to enter some of the Cyclopark Winter series, to see if I could develop my taste for bunch racing. I managed two races before the year was out, placing 9th and 4th respectively. In the second race I surprised myself by coming 2nd in the bunch sprint (behind two leaders who were way ahead). I’d never considered myself a sprinter, but there I was overtaking guys almost twice my size. More crits were solidly on the plan for 2018.

Looking Ahead to… Now

Overall 2017 was a really interesting season for me. With 9 TTs, 4 Hill Climbs, 3 Crits, and 3 Gran Fondos, I did more than I’d intended; both from a quantity of races and from a variety of riding styles. It helped me realise that bunch racing is really good fun, and that perhaps next year I need to focus a bit more on the mental side of riding.

Writing about my goals for a season which is almost over is risky. There’s too much confirmation bias in the numbers entered neatly on my race results spreadsheet for me to confidently say what my goals at the beginning of the season actually were, but I can tell you this: it’s been a mixed bag. Thankfully it won’t be long before that season review can be written.


2016 Cycling Season in Review

Wow, 12 months with no posts. Hopefully I’ll do a bit better than that in 2017, but I think we all know how it will end up.

As I said in my 2015 season review, perhaps my 2015 goals were a touch ambitious, and as a result my 2016 goals were just about incremental on that. They were:

  • 10s. Achievable: 21:xx. Stretch: sub 21:30.
  • 25s. Achievable: 55:xx. Stretch: 54:xx.
  • 50s. Achievable: sub 2-hours. Stretch: sub 1:57:38 (25.5mph average).
  • La Marmotte. Place similarly to the Etape – top 10% or so.
  • Hill Climbs. Retain my Wheelers Club Champion status. Train for them properly.
  • Overall. Plan the season better, with space for specific training between TTs and HCs.

Overall, I hit 4 out of the 6 (if you count 10.2% as “10% or so”…), which isn’t too bad all in all.

Early Season

As usual, my season started with sporting TTs. However, this year I had the added complication of buying a flat, and so my winter and early season was generally consumed with estate agents, solicitors, and decorating. As a result, I only actually made it to a single sporting TT, the Kingston Wheelers Sporting 14. This was the third time I’d completed the event, and progress seemed good. My times have been 37:19 (2014), 35:47 (2015), and 34:43 (2016). Early signs for the season were good!


Open TTs

My season ended up being very light on open TTs: I completed only one 10, two 25s, and two 50s. Life got in the way a bit this year unfortunately. The 25s were little to write home about; I improved my PB from 56:51 to 56:26, but a way off the 55:xx, which I still think should be easily achievable for me.

I had better luck in the other disciplines. At the Charlotteville CC 50 on H50/8, I achieved my 50 goal, stopping the clock in :158:48. To top it all off, the photographer got some cracking shots of me…

James Griffin MA5D3-0355

In my only 10 of the year, I gave it all. Luckily, it was a good day on a good course, and I smashed through my 21:xx target, achieving a 20:51. I almost caught my minute-woman, Julia Shaw, too. Being seeded early meant there was a time at the HQ when I was third on the leaderboard which was nice!

La Marmotte

What a fantastic event. I made the decision to drive down rather than faff with airlines and bus transfers, which meant a pretty stress-free trip down to my AirBnB apartment atop Alpe d’Huez. A fairly easy spin the day before was capped with a ascent of the Alpe which was perhaps too energetic. On the day, however, I couldn’t get in the mindset. Sitting on the start line felt like I was waiting for the Sunday Club Run to start, such was the lack of adrenaline. The stresses of life were getting to me at this point and annoyingly it really affected my performance on the day.

The weather was changeable – warm and dry on one side of the valley, raining on the other. I opted for a Gabba, which whilst uncomfortable in the warmth paid dividends on the descents thanks to being windproof. About halfway through I hooked up with a guy in Matt Bottrill team kit, and figured he’d be a good wheel to follow. Of course, he was a bit too strong for my tiny legs and I let him slide away half-way up the Galibier.

Finishing on Alpe d’Huez was fantastic, and after a quick shower and protein shake I enjoyed a couple of beers on the main street, watching the riders flock in. I’d finished in 7:19 (7:40 if you include the descent of the Glandon), which put me 687th of 6,680 finishers, just outside my 10% target. I feel I have unfinished business on the Marmotte and will be back for sure.

Hill Climbs

One of my biggest learnings from 2015 was from how poorly I adjusted my training between Open TTs and HCs. This year, I started shorter effort work with a month to go before the first Hill Climb. I did the regular Kingston Wheelers climb on Leith Hill, plus the classic Catford & Bec double-header. I PB’d on Leith Hill by a handful of seconds, but nowhere near enough to retain my club award as I was thoroughly smashed by Alex Reid who was a good 15 seconds quicker!

Catford and Bec were fantastic. The atmosphere at these events is just so good – riding through the crowds at the top of the hills is such a rush. I was pleased with my times, both around 2:28, and will definitely be back next year, but hopefully with better pacing strategies!


I decided late last year to sign up for coaching in order to see how that would progress my cycling. Since November, I’ve been coached by Chris McNamara at Trainsharp, who gave me two solid months of leg strength work following some testing I did with them. I’ve been impressed with how I’ve felt throughout the three blocks we’ve done – I’m being pushed but it’s well balanced with rest, and each training session feels different. Fingers crossed it produces some cracking results this year.

I’ve also signed up for the Maratona dles Dolomites with the gang, so that’s my primary target for the year. Goals, then, are:

  • 10s. A short 20:xx. Stretch goal, 19:xx.
  • 25s. Finally, finally go sub 55:xx.
  • 50s. 1:55:xx.
  • Maratona. Top 7% of finishers, stretch goal of top 5%.
  • 100s. I may give one of these a go this year.

2015 Cycling Season in Review

In 2013, my first season racing, I did 5 races: 4 TTs and a Hill Climb. Last year, 17: 15 TTs and 2 Hill Climbs. This year, I did a much more full season: 21 TTs, 3 Hill Climbs and the Etape du Tour. The year was perhaps too full: I’m knackered. But it’s been a fun year.

Early Season Sporting TTs

February and March herald in the season with Sporting TTs: hilly (or at least rolling) courses of varying length. Being around 61kg, these should suit me, but they’re tough mentally. When I turned up for the SCCU 21, it was 4 degrees and raining, and I had only arm & leg warmers to go with my skinsuit. Still, this race would see me finish 9th – one of two top-ten finishes in the year and my first appearance in The Comic.

Open TTs

All my season goals were in open TTs. As stated on the Wheelers forum, they were:

  • 10s. 21:xx
  • 25s. 55:xx
  • 50s. Complete at least one. Stretch goal: sub 2-hours.
  • 100s. Complete at least one.
  • Overall. Place top 20% in an Open.

Following the sporting courses, I went straight into racing standard distance TTs at the beginning of March, starting with the High Wycombe CC 10 on H10/22. I was treating these early-season races as a build-up, expecting to achieve that goal some time in the summer. This race turned out to have fantastic conditions: not too cold, very little wind, and a touch of moisture in the air (they say the air is more oxygenated after rain). I rode hard and was looking on to achieve my goal – I couldn’t believe it. On a downhill section I tried to shift into my top gear and the chain came off, getting caught between cassette and frame, jamming my pedals at 34mph. Slowing to a safe stop, fixing the issue and getting moving again meant I stopped the clock at 23:58 and was bitterly disappointed, but motivated for the rest of the season.

In my next 10 on the P881 in April, I managed a 22:05. My form went away a bit for the next two, stopping the clock at 22:35 and 23:01 on H10/22 and H10/57 respectively. Then, in June I bettered my PB, again on the P881, to 22:04. It seemed the 21:xx might elude me. I had three 10s left over two courses (G10/57 and G10/42, neither of which are known to be fast), and though I achieved course PBs for both I was unable to hit the goal. However, my power in the final 10 of the season was a best over 20 minutes at 314W, which should see me below the 22 minute threshold next year.

I only raced two 25s in 2015, on G25/54 and H25/2, and was able to PB in both races. The first saw me finish in 58:25, taking almost 30s off last year’s PB. In the second I was able to produce significantly better power and produced a 56:51 – a big chunk of time off my previous PB but some way from my 55:xx goal.

My first 50 was during my taper for the Etape, so I should have been going well. However, the conditions were bad with an awful headwind – a friend and strong tester was barely able to get within 5 minutes of his PB. I managed a 2:04:19, which put me closer to the 2-hour mark than I had expected.

I had been bitten by the bug, and entered the last available 50 of the season for me, which would require travelling to Chester. On the D50/3r, I managed a 2:01:43, significantly closer to my stretch goal and a big chunk off my PB. Promisingly, when reviewing the data from the race I saw that I had averaged the magic 25mph until the 42-mile mark, at which point the course turned into a headwind and headed uphill. This race also saw my second top-10 finish, and saw me achieve my top-20% goal in an open.

I didn’t manage to enter a 100 this season, since scheduling conspired against me. It’s still on my list to do, but perhaps a target for 2017.

At the Wheelers end of the season awards night, I received a nice surprise – I had won the Club Time Trial Series, a points-based tournament held over a number of races. Although I was quite far from being fastest in any of the disciplines, consistency saw me place highly and I was chuffed to win. It’s not something I expect to repeat – there are significantly quicker testers in our club than myself.

Etape du Tour

A bucket-list event, I signed up after some friends told me they were doing it. I love riding in that region and couldn’t wait to test myself on the Tour climbs. After a yo-yo’ing weather forecast, and a thunderstorm the night before, the day of the event was incredibly hot. Although we started relatively early whilst it was cool, it soon heated up, with the final climb on La Toussuire being particularly sweaty – south facing and exposed, with fresh tarmac reflecting the heat. Kind families in their motorhomes were handing out water, and a man sprayed riders with a hose at one of the feed stations. As I passed one spectator holding a bottle of water, I motioned for her to pour it on me. “C’est froid”, she warned. I wished I’d known the French for “I fucking hope so”.

I’m more a hot than a cold weather guy, and I loved the event (I even managed to not get sun-burnt). The first pint of lager (and the second and third…) whilst I waited for my room key to turn up was brilliant. I finished in 6:36, the quickest of our group and 759th of 12,092 starters. The slowest rider on the Tour de France finished in around 4:55. So, they’re just a bit better than me.

We followed up the Etape with a week in the Vercors and I felt fantastic. I didn’t hit many PBs but I was loving riding my bike and couldn’t wait to get back to racing.

Hill Climbs

The traditional British Time Triallist’s end of season, I only managed three hill climbs this year. I made the mistake of going straight from racing open TTs to racing hill climbs, without any specific training in between. As a result, my performances weren’t as good as I’d hoped.

I returned to Denbies Wine Estate for Dorking & Redhill’s Denbies Duels. I improved my time by 12 seconds, despite being partner-less, but was still outside the cut-off to progress to the later rounds. As a result, I was able to head over to Staple Lane for Charlotteville’s club race. Staple is a climb I know quite well, and was able to place 5th and only a few seconds behind my friendly rival Mark Gray.

My biggest success of the season was at my own club’s race on Leith Hill. I didn’t improve my time on last year thanks to a headwind, however I was the quickest member of the Kingston Wheelers, making me club Hill Climb Champion 2015.


Perhaps I was a bit ambitious in 2015. As a result, a lot of my targets will move over to 2016.

  • 10s. Achievable: 21:xx. Stretch: sub 21:30.
  • 25s. Achievable: 55:xx. Stretch: 54:xx.
  • 50s. Achievable: sub 2-hours. Stretch: sub 1:57:38 (25.5mph average).
  • La Marmotte. Place similarly to the Etape – top 10% or so.
  • Hill Climbs. Retain my Wheelers Club Champion status. Train for them properly.
  • Overall. Plan the season better, with space for specific training between TTs and HCs.

Riding 315 miles for CALM

In 2012, my brother John sadly took his own life. In 2013, to mark the year anniversary, I rode from Cornwall, one of his favourite places, to Walsall over two days, raising money for The Campaign Against Living Miserably, who aim to raise awareness of male suicide and support those in need. To mark the occasion in 2014, I decided to do the same route but in a single ride, again raising money for CALM.


I always worry about the bike on trains – perhaps more so than on an airplane. The bike racks in the First Great Western trains seem quite bike-unfriendly. They’re mainly a channel for the front wheel, coupled with a slot for the tyre and a piece of material to hold it in. The guide, though, pinched the spokes on my front wheel, which made me a little nervous.

I’d booked a table at a nice pub just outside Truro, and managed to sit on their terrace overlooking the valley which was nice and relaxing ahead of the ride. Unfortunately, cycling shoes on their polished wooden floor had me on my arse more than once – fortunately no damage done to either myself or the floor.

I’d planned to split the ride into three legs, each around 100 miles. Each leg would end somewhere I knew I could have a rest and get some food – the first at a 24 hour Tesco and the second at a friend’s house. It would also help me mentally chunk the ride – three 100 mile rides seems oddly easier than one 300 mile ride.

Continue Reading..


A site refresh & Porsche Challenge

A new website. Why not? It’s been a while. Who knows, I may even update it more now.

Another thing that’s coming out today is a new game I’ve made called Porsche Challenge. This is a game my colleague Andy & I play (or at least, used to play) in the office. Basically, we would each choose a side of the A40, and the first to see a Porsche won. A fairly simple game, but surprisingly addictive!

The online versions works as follows: You are given a unique URL which you share with whoever you want to challenge. Once your opponent has joined the game, you are both dropped in the same random location on Google StreetView somewhere within the M25. The first to navigate around & find a Porsche, wins. Easy! Try it – it’s better than it sounds!


DoodleDesk 1.2 Released

Version 1.2 of DoodleDesk is now available on the Mac App Store. This update fixes a few bugs and adds the following features:

  • Adds export to JPEG, PNG, GIF & TIFF formats
  • Improves line smoothness
  • Variable pen size (We’re aware of a minor bug with this – we’re aiming to push a fix as soon as possible)
To celebrate, DoodleDesk is available at a special sale price of £1.99 ($2.99) for a limited time. Exciting!
DoodleDesk, the Whiteboard for your Desktop, is the best application for drawing literally on your desktop. It’s perfect for engineers, designers, teachers and presenters. What have you doodled on your desktop today?

An Autonomous RC Car

A while back, I posted about Autonomous Robotics and how I’d love to do an autonomous racing series. Last week, I attended the inaugural London Machine Learning Group meetup (which was fantastic, by the way), where David Singleton gave a presentation on his self-driving RC Car. My interest was piqued. How much fun does that sound?!

Today, I did some more thinking about it, and I’ve put together the beginnings of an equipment list for the project.

  • Aston Martin V8 Vantage RC Car. I’ve already got one of these, and I don’t think I’ve played with it in ages. Might as well hack it apart, then! (Also, Aston Martins are awesome.)
  • RaspberryPi. This isn’t out yet, but boy am I excited. It looks like it should have the processing power required to perform all the calculations locally, and should be small enough to fit in the RC car itself.
  • Minoru 3D Webcam. In my fourth year, a friend was using this as a range finder (and it looks like there’s some open source code to do this), so this camera could perform two great functions: firstly, the “basic” self-driving task using images; and second, potentially acting as a range-finder for some more advanced mapping.

The ultimate aim for this would not only be for the car to drive itself, but for the car to learn the course in the same way racing drivers do. For example, the car may drive itself around the course, producing an internal map. The car could then use some kind of genetic algorithm to attempt to define and follow a route around the course for the aim of getting the fastest lap time.

Ambitious, hey?

There are a few immediate issues I can foresee:

  • Power. The RaspberryPi will require around 4xAA batteries to power it, and the camera may require the same again. I could end up with an RC Car full of batteries that won’t move anywhere because it’s too heavy…
  • Control. David Singleton used an Arduino board wired into the car’s controller to pass instructions to the car, but if I want to keep everything onboard then I’ll need to do something else. Ideally, this should work alongside the standard wireless controller so I can still retain some ability to control the car.
  • I’m being a bit ambitious. One step at a time, Griff…

A Week (& a bit) on the Mac App Store

11 days ago, I launched my first app, DoodleDesk, onto the Mac App Store. I had realistic expectations – I’d set my sights at a few hundred pounds profit over the year, enough to pay for a nice meal out or something. Nothing fancy. Of course, all app developers dream of App Store Success, and I was one of them, but I didn’t think I had a chance of coming anywhere near close to that.

The first few days of sales were encouraging. I did very little marketing and was selling 10-20 a day – one day I got a review on a French website and sold almost 40! I was pretty chuffed with that.

Then, on the 19th, Apple decided to put DoodleDesk on the front page of the Mac App Store in the “New & Noteworthy” section. I was absolutely amazed. My app was now surrounded by a collection of really superb applications, and was right up there for everyone to see. Incredible. At around the same time, the press release I’d put together was released, and a number of sites re-printed it. Suddenly, 10-20 a day looked a bit meagre.

I shan’t go into precise figures, but it’s certainly a lot more than I had expected. In one day over the weekend I surpassed what I’d hoped to make over the year. Because I’m quite anal about these things, I kept an eye on the app’s position in the charts. The peak values were:

  • Top Paid: #19
  • Top Grossing: #48
  • Top Paid (Productivity): #6
  • Top Grossing (Productivity): #14

At one point, DoodleDesk was higher in the Top Grossing chart than Angry Birds. Angry Birds!! As you’d expect, things are starting to tail off now the initial excitement is over, but it’s still surpassing expectations daily.

Whilst all this has been incredibly exciting, the most exciting part has been the emails and tweets I’ve had from people who are enjoying the app. I knew there were people out there who wanted something along these lines, but to hear from people who are actively using and enjoying the app has really made the whole experience. Some of the users have found fantastic use-cases for DoodleDesk – such as one man who intends to use it for tutoring his grandson over screen share. Superb. I couldn’t ask for any more.

Of course, the flip side to this is the people who aren’t enjoying your application, and I’ve had a good few of those as well. What has been frustrating for a first-timer on the App Store is how people will prefer to vent their annoyance at the app publicly by reviewing it, rather than emailing me with suggestions or constructive criticism. Similarly, only a few people have given positive reviews (though this has improved over the last day or so), although I’ve had plenty of positive messages from people personally.

Ultimately it’s not an issue – some of the negative reviews border on the ridiculous, and the app is simple enough to speak for itself. Public criticism is something I was worried about before I launched the product, but in my experience it’s far outweighed by the personal messages you receive from genuinely happy users.

What next? The difficult second album. So many ideas of my own, and many more wonderful feature requests from users. The trick will be making the app as useful as I can for everyone, whilst retaining the simplicity and ease of use. Watch this space…


DoodleDesk is New & Noteworthy

Just a quick one to say that DoodleDesk has been featured in the New & Noteworthy category – very exciting! We’re looking forward to some exciting times ahead as the app gains a bit more widespread knowledge.