Quickstart guide to Google Cloud Messaging for iOS

There are a lot of moving parts to GCM so hopefully this quickstart guide will be useful to other developers. This post is intended to step through the parts of the process that are not described fully in the Google tutorial.

A new project: Quilt

Recently I departed from the safety of mobile apps to dive into OS X development and Swift. A bit of an adventure - and strangely, all in the name of Android development...

10 Hot Tips for Refactoring Your Javascript

This week I've had a departure from app development to build a web application for a new product we're developing at Airsource HQ. As with any web app this has involved a ton of Javascript, and along the way I picked up a few tips for refactoring that might be useful for your projects. 10 Hot one's as it happens...

Caching broken on iOS 8 - 3/3

In Part 1 I discussed how NSURLCache is broken on iOS 8, and delivered some source code in Part 2. Now that iOS 8.1 has been released (with absolutely no mention in the release notes about this issue, I ran all the tests again,

Caching broken on iOS 8 - 2/3

The roundup for the released version of 8.1 is available in Part 3. In Part 1 I discussed how NSURLCache is broken on iOS 8, and promised some source code. The source code is available here, and it is worth taking a closer look at some of the results.

Caching broken on iOS 8 - 1/3

Part 2, with source code and detailed results, is now available. The roundup for the released version of 8.1 is available in Part 3. Apple have already experienced one PR disaster with the iOS 8.0.1 release which broke cell phone operation for some users. They may be on their way to another problem - less serious this time, but still significant.

Keynote reactions

The dust has now settled after last week's Apple keynote. What were the most interesting announcements for consumers and developers? For me - Apple Pay and the Apple Watch.

Bound services and retained fragments

Getting background tasks right is important. We want our UIs to remain responsive while the background task does its thing. Here I'm going to focus on Android's 'bound services' and a neat pattern for getting background work done on some shared resource, such as an internet connection and ...

iWatch Preview

The countdown has begun - so much so that Apple have taken the unprecedented step of putting the timer to the announcement front-and-centre on their website.

Watch the wearables!

In preparation for the expected launch of the iWatch in October 2014, other manufacturers are moving quickly to release their so-called "wearables" to get in early.

A glimpse of Nokia's future at IQ2012

Summary image for article
Qualcomm's IQ2012 EU event this year moved to the Kosmos Centre in Berlin. An annual one-day shindig designed to give a more regional feel to Qualcomm's roadmap presentation, it's well attended by operators, app developers and partner hopefuls.

Return To Mobile World Congress

After a three year hiatus, I'll be visiting the Mobile World Congress 2012 (MWC) from next Tuesday to see how the landscape has changed after the "app revolution".

MWC, the mobile industry's annual get-together, starts on Monday, February 27th. About 60,000 people will descend on Barcelona from ...

A Summer At Airsource

Well – this is it! After a fantastic 9 week internship it’s sad to be leaving behind the code, co-workers and, of course, coffee machine I have got to know so well. From the very first day I was plunged straight in the deep end, coding new features and fixing ...

Awww, shucks...

It's always nice when you read a lovely review of one of your products, and this month's iCreate magazine in the UK has given Cellar a test drive and decided they love it.

4Music sting featuring QR code

Last night, during the 19:30 ad break, More 4 ran a sting for their sister channel, 4Music. The surreal set included a QR code on a TV in the left hand corner and, in a change from previous televised QR codes, the voiceover dialogue was doing nothing more than ...

QR code chest tattoo? No, it's not...

Everyone seems to be talking about a guy getting a QR code tattoo, from Paris based artist K.A.R.L., that scans to reveal an animated version of said tattoo. It's a video created for Scotch whiskey producer Ballantine's' 'Leave an impression' campaign, designed to coherce a ...

Happy Holidays!

Just like everyone else, Airsource will be closing down for the winter holiday. Tucking into lots of food, gifts good and bad, a drink or two and an afternoon nap, we'll be back in 2011 refreshed and ready to go.

We have lots of exciting projects to look forward ...

Our new look for 2011

Some of the more eagle eyed of you will have noticed what looks like a new logo floating around - it is! We've had a complete refresh of our logo and branding. So far it's only made a public appearance via our spangly new business cards (they are lovely ...

Optiscan iPhone app 1.8.5 update released

We released the latest update of our QR Code scanner and creator - Optiscan - onto the iTunes store last Thursday (12th). Along with stability improvements in preparation for iOS 4.2, you'll find better decoding for newer devices plus a surprise new look!

UI Automation on the iPhone

As a summer intern I could have worried about just being given tasks such as making the tea, but here at Airsource, among other challenges, I was given the chance to work on improving some the QA infrastructure via automated testing. I study Engineering and have learnt some theory regarding ...

Quelle heure est-il? or "What's the time, Mr Jobs?"

A while ago, I was tracking down some NaNs in accelerometer-based code (smoothing device orientation for an OpenGL AR view). It turns out it wasn't my bug — UIAcceleration.timestamp was going backwards approximately every 12 minutes! Naturally, the documentation doesn't mention anything about this: This value indicates the time relative to the device CPU time base register. Compare acceleration event timestamps to determine the elapsed time between them. Assuming iPhone OS is similar enough to Mac OS X, it must be using mach_absolute_time():1

Optiscan update teething troubles

We've been making continual minor improvements to Optiscan, fixing some issues with cut and paste and handling of certain types of addresses. Unfortunately a serious bug slipped into release 1.8.2, which hit the App Store yesterday. Apple helped us immensely by fast-tracking approval of version 1.8 ...

Optiscan developments

Several news items on Optiscan! Last week we sent version 1.8.0 to Apple (hopefully it will make the App Store this week). Together with some other cool stuff, this version adds support for structured append, which has been widely requested by users of the King Jim Pomera DM-20 ...

Optiscan licensing

Optiscan has been successful with consumers on the Apple App Store, but it has also piqued the interest of businesses. If you are interested in licensing the image processing library of Optiscan for your own application, or in developing a white-label version of Optiscan for use on devices specific to ...

Over 30,000 iPhone app sales

It's been not quite a year since we released our first application onto the App Store, and we've sold over 30,000 units in total across 68 countries. This comes despite the fact that Optiscan was off the store for 6 months for reasons largely beyond our control ...

Optiscan reviewed on CNET

Optiscan has just been reviewed on CNET. They say: "Overall, Optiscan is a really nice QR Code reader. ... It's a full-featured app that should satisfy most users."

Optiscan 1.5 bugs and workarounds

The release of Optiscan 1.5 was very rushed in response to a request from Apple, and a few new bugs have sneaked in. We've submitted version 1.6, fixing these problems, to Apple today, but because Apple is very busy we don't expect approval of the update ...

Optiscan updates on Twitter

Starting today, we're adding a new way that we will be keeping in touch with Optiscan users - via Twitter, as @OptiscanApp. We're hoping to make this a way that people can make feature requests and we can disseminate hints and tips a little more easily.

Come and let ...

Announcing - Whisper!

Airsource are pleased to announce the release of our newest application, Whisper, available today on the Apple App Store!

Optiscan 1.5 released

We're very pleased to announce that version 1.5 of Optiscan is now available on the Apple App Store! This update brings: Auto scan functionality on iPhone OS 3.x Support for the iPhone 3GS Various stability improvements Can now often handle multiple QR codes visible at the same ...

Coming Soon: Optiscan 1.5

Last week Airsource finally submitted an update to Optiscan, version 1.5. At long last, we've had some positive, direct communication with people at Apple, which leads us to believe that they will approve our update within the next week or so. This will allow us to return Optiscan ...

Announcing - Cellar!

Airsource are pleased to announce the release of Cellar, developed together with Glasshouse Apps, on the Apple App Store!

Optiscan removed from sale

We have decided to remove version 1.4 of Optiscan from sale until Apple approve version 1.5, due to a bug which affects automatic scanning devices that have been upgraded to iPhone OS 3.0. The user experience using version 1.4 on iPhone OS 3.0 is not ...

Optiscan bug on iPhone OS 3.0

To all our customers who have purchased Optiscan:

Version 1.4 of Optiscan, currently on the App Store, does not support automatic scanning on iPhone OS 3.0. We sent version 1.5, which fixes this problem and adds some new features, to Apple about three weeks ago, but it ...

Viral Fou now available!

Airsource are delighted to announce their latest application, Viral Fou. Viral Fou leverages the power of crowd-sourcing, to identify potential mischief makers in their community. The initial release of Viral Fou is only available in France. It is free, but time-limited, and will expire at midnight tonight.

Optiscan 1.2 now available!

The update to Optiscan has been approved by Apple - get it on the App Store now! The update is free for all existing customers, and includes several bug fixes, including three which could causes the application to crash.

App Store Localizations

Your app is on the App Store, and you've just sorted out the translations for all the metadata. So you go upload them on iTunes Connect, and then obviously you check that they look right in iTunes, changing country to make sure each language looks right. English is unchanged ...

Optiscan Update

The update to Optiscan has been approved by Apple - get it on the App Store now! The update is free for all existing customers, and includes several improvements such as better image processing, internationalisation, and bug fixes. Try it out!

Androidinous Efficiency: To bool or not to bool?

A common belief among programmers is that you should write code that says what you mean, because the compiler will probably do a better job at optimising than you can do off the top of your head. On the other hand, Writing Efficient Android Code says "It is unwise to rely on a compiler to "save" you and make your code fast enough" and recommends that programmers do things like caching member variables (like array lengths) in local variables. This isn't just premature optimisation; it's trivial stuff we expect the most basic compilers to handle! To understand why, it helps to know how your code ends up running on device:

Optiscan Sale

We are about to release the next version of Optiscan, featuring improved image processing algorithms, internationalisation (including Japanese), and bug fixes. It has been submitted to Apple, and will go on sale at the normal Optiscan price of $4.99. BUT - you can get Optiscan right now for $3.99 ...

Why the App Store beats OVI

I have just spent four days in Barcelona at MWC catching up on the industry developments. The main topic on everyone's lips was The App Store, and by "The" App Store I mean Apple's, not Nokia's OVI offering or any of the other contenders.

Let's take ...

Optiscan user feedback

One of the features of Optiscan about which we thought quite carefully prior to the initial release was how to stay connected to our users. We included several entry points through which our users can send us feedback when they have trouble with the application.

Here is some analysis of ...

Optiscan - Upcoming Features

We've had quite a lot of feedback about Optiscan, from various sources. Where possible we've replied, but in some cases email addresses haven't been correct, and in others no reply is possible -- such as on the App Store Reviews.

Monetizacommercial ifuggedaboutit

An old colleague of mine who used to work at Microsoft told me that he once went to a global summit, to find people standing on tables shouting "Show Me The Money". As a business strategy, it doesn't work too badly. It fell out of favour in the 2000 ...

AppStore Research with Mobclix

I discovered an incredibly useful resource yesterday - Mobclix. Among other things, they let you see a graph of how your iPhone App Store application - or anyone else's - is getting on. For instance, here's Home Barista.

Androidinous Intentions

So you've acquired an Android Dev Phone 1 (the page goes to great lengths to avoid telling you that it's just an unlocked G1). You've downloaded Eclipse, installed the Android plugin, and created a "MyProject" app that says "Hello World, MyProject". Now what? Well, if you've been paying attention, you'll have heard of two (or three) new paradigms: Tasks correspond vaguely to the user's idea of accomplishing something, like "sending an e-mail", and an associated "activity stack" which is hidden from the programmer. Activities correspond loosely to subtasks, like "picking a contact". Intents are issued by activities (like SendEmailActivity) to launch other activities (like ContactPickerActivity). But that's about it. UI programming is traditionally a pain, which is why I like the iPhone SDK's InterfaceBuilder --

Thin versus Thick

Apparently, web apps may not be quite the cure-all that everyone thought they were. The linked article gives five reasons why a browser-based app may not be the best idea. Here's five of my own, related to cell phone web apps. A website doesn't know where you are ...

AppStore Pricing

I just noticed that number 24 in the UK AppStore is mBoxMail - a Hotmail client for the iPhone. That's impressive in its own right - you don't see many non-entertainment app that high in the AppStore. But the really interesting thing is the price - £5.99 ($9.99). Looks ...

Save the Bits - Part II

Back in my original Save the Bits article, I noted that a foreign currency application on the iPhone, which I'll refer to as AppX, uploaded 16K of data and downloaded 136K just to render a graph. I said I'd get back when I'd run a packet sniffer. I've just done that, and the results aren't pretty.

Aftermarket Chargers

Anyone with a Macbook knows that the MagSafe (TM) tip for the charger is pretty cool - apart from the fact that you can't get any third party accessories for it, because Apple don't license it. My charger recently started getting rather temperamental due to kink in the cable ...

iPhone Simulator - hidden feature

One day I'll get round to reading the manual for all the devices I use on a day to day basis. No doubt I'll then discover lots of things I never knew - and from then on, life will be more productive, but more boring. In the meantime, I ...

Announcing - Barista!

Airsource and Glasshouse Apps are thrilled to announce our first iPhone application - Barista. Very early this morning it became available on the iTunes Application Store and we are obviously very excited by the launch of our first product.


Barista teaches you how to make the perfect espresso.

Buy an espresso ...

iTunes Connect - failed codesign verification

Your iPhone application is finished. The testers are happy. The graphics designers are sure that everything is pixel perfect. Your microsite is done. Your marketing material is ready. Your metadata is in order. All you need to do is to submit your application to the App Store and start raking in the dough. Your heart sinks, though, because when you submit your application you receive a terrible error message - "failed codesign verification". That's all. No further details. No explanation as to what went wrong. Has all of your stress come to naught?

Getting blood out of a stone

I am pretty network agnostic. If I were buying a new phone contract tomorrow, I would not really care which network operator I used. Obviously I'd check out the details of the contract - but the name of the operator is not significant. With one exception - they have to issue a PAC code over the phone. If an operator isn't prepared to let me leave, then I'm not prepared to join them in the first place.

Chinese Whispers

Just occasionally, I run into the kind of comment on a technical forum that leaves me speechless (or, more correctly, reaching for my keyboard).

Save the Bits!

Over here at Airsource, we're not exactly retro, but we do care about computing resources, especially bandwidth. We like small sleek applications that perform well, not applications that use excess bandwidth, and run twenty times slower than necessary. With that in mind, I picked a relatively simple iPhone application that displays a currency exchange rate and a graph of recent historical movement, and measured its bandwidth usage. The results were amazing.

It's an ill wind that blows no good

I couldn't get to sleep last night, so instead I did a quick pass through the new apps on the AppStore to see what exciting applications (or tip calculators) were now available. I noticed that "Pull My Finger" is now available, which, errr, makes noises. Whoopee, I thought! Just ...

Google and iPhone - part II

I just found another interesting article out there in the World Wild Web, over at Daring Fireball. Apparently, Google started publicizing the voice search feature some time before it actually reached the AppStore. The critical phrase in the NYTimes article is "...Users of the free application, which Apple is expected to make available as soon as Friday through its iTunes store..." which suggests, in Daring Fireball's analysis, that Google may have have pressured Apple to accept their application even though it violated the SDK agreement.

Google using private APIs? Not really...

Google recently admitted to breaking the AppStore rules in their iPhone application, which fuelled a growing wave of resentment, prompted by the belief that Google were abusing their position as industry leaders to gain a competitive advantage in the market. The critics claim that a similar application submitted by anyone else would be rejected by Apple and never make it to the AppStore. Why should there be one law for Google, and another for the plebian masses? Shouldn't the Google application be pulled from the AppStore until they abide by the rules, as others have been?

Information Addiction

Donald Knuth, famously, does not have an email account. Instead, he replies to correspondence (by snail mail) about once every three months. I'm starting to appreciate his motivation. Now obviously, Donald isn't in the business of selling, and his needs are slightly different to mine. But do I ...

Mobile Linux?

Last week, the BBC reported on an upcoming version of Ubuntu for ARM "netbooks". Pity there's no article history; the title (currently Ubuntu set to debut on netbooks) originally said "smartphones" and the meta tags still mention smartphones1 even though the article itself mentions nothing about Ubuntu on smartphones, but I could spend all day reporting on inconsistent reporting.

User-friendly (but not developer-friendly)

Imagine you're coding away on an IDE that you haven't used for a while, and becoming reacquainted with it. You get to the point where you want to play with breakpoints, and, of course you have some trouble remembering the keyboard shortcuts. Some IDEs make your life easier ...

Memory usage in UIImagePickerController

UIImagePickerController has plenty of issues. One of the first to be widely discussed was its memory leak which shows itself when you try to access the PhotoLibrary on the simulator. Fortunately, this leak is limited to the Simulator and does not show up on Device. It has also apparently been fixed in iPhone OS 2.2 - though you obviously need to be aware of it if you are coding for older versions. There is, however, another more serious problem with the image picker on device1

Views of UIImagePickerController

The standard image capture in API in the iPhone SDK is the UIImagePickerController. There is much discussion on the web about how this can be customized via subclassing, both from the viewpoint of technical feasibility, and from the viewpoint of being allowed onto the AppStore. It is generally accepted that going direct to private frameworks is unacceptable, even though this arguably can give a better user experience. Phanfare had their app pulled from their AppStore for using the PhotoLibrary private framework, and returned with a new version that instead customizes the UIImagePickerController experience. I took an in-depth look at the view structure that the standard UIImagePickerController creates.

Airsource One

On Wednesday Airsource reached our first major milestone towards our corporate jet. We have our very own in-house pilot in John!

John (with wings)

So after 12 months of hard graft and weekly lessons and flights John passed his PPL. Congratulations from the team - next step is type certification on Airsource One!

Mobile Summer

I arrived at Airsource twelve weeks ago to begin my summer internship, and now -- sadly -- it is at an end. It has been an interesting time, where I have learnt a lot and contributed something I feel will be lasting.

Yahoo! BluePrint announced

Yesterday at CTIA Wireless IT and Entertaiment Yahoo! announced their contribution to the mobile platform wars in the form of an XML-based language named BluePrint. BluePrint allows the generation of mobile applications for Windows Mobile and S60, as well as widgets that run inside the Yahoo! Go environment. Yahoo! has provided us an overview here. The quest for "write once, run anywhere" continues.

Wordpress for iPod/iPhone

I've recently been playing with Wordpress for the iPod Touch and iPhone. It's a very simple application which allows you to write posts while you're on the go, and post them to your blog over whichever network connection is most convenient.

My impressions so far are that ...

Spill chucking

Just got a letter, from a source that will remain nameless... It was addressed to "Ben BLAUNITEDKINGDOMOPF". Sounds like someone needs to rethink exactly what parts of the address field get auto-completion...

SSH on the iPhone and iPod Touch

SSH is undoubtedly a useful tool and the iPhone and iPod Touch are great portable ways of connecting to networks; put both together you can be a sysadmin on the move! So what are the options for this? The Apple AppStore has a few SSH clients, I decided to take three - SSH, iSSH and TouchTerm - out for a spin.

'It Just (doesn't) Work'

The new iPhone SDK requires that developers upgrade to OS X Leopard, which is a nice excuse for most of us to drop 100 bucks on a new operating system that does, err, exactly what the old one did. I am sure I'll come across some amazing new feature ...

Symbian OS goes OS

Airsource woke up this morning to Nokia's announcement to make Symbian an Open Source platform, and with it all the concrete platforms like S60, UIQ, and so forth. While Motorola, Sony Ericsson, and NTT DoCoMo are all mentioned in the press release, it seems to me that they had ...

Cambridge CAMRA Beer Festival

The Cambridge CAMRA Beer Festival has arrived in town again. An annual event in Cambridge, the Beer Festival features hundreds of brews from all over the UK and Europe. The key message is that the best beer is "Real Ale"; not stuffed with preservatives and artificially carbonated but the genuine, hand-crafted article.

Yotel just another Hotel

I stayed at the Yotel in Heathrow Terminal 4 the other day. I had an 11am flight to the US, and decided that instead of a 6am start from Cambridge, it made much more sense to stay literally 50m away from the British Airways checkin desk. This made me an accidental, but much appreciated, beneficiary of the T5 shambles - BA are keeping a lot of their long-haul flights in T4 until the new terminal has properly bedded down.

Mobile Device Databases

I've just been taking a look at Device Atlas, which in its own words is the "world's most comprehensive database of mobile device information". I had high hopes, but unfortunately it appears to be rehash of the kind of information which is readily available, without anything more useful ...

What platform should I write my app for?

When we set up Airsource, we set it up as a BREW consultancy. We rapidly sold a number of BREW projects, and built on the expertise we had acquired while at QUALCOMM. In the process, however, we inevitably found ourselves working on other software platforms, particularly on Series 60, which now accounts for about half of Airsource's work. Series 60 and BREW are often held up as competitors, though in practice I would argue quite strongly that they target very different markets.

En route to the Mobile World Congress

It's 5:30am and the annual wireless industry hoe-down (now in it's second day) is taking place in Barcelona. In order to avoid the rush, crowds and expensive Easyjet flights, I'm flying out a day late and looking forward to see what's in store for the industry during this coming year.

Android Code Day

After a much-awaited Release Day and the obligatory pub afterwards, last Thursday marked the end of January and Android Code Day in London and Tel Aviv. It was my first time in Israel, which made it more exciting As much as I'd like to visit Israel, I wouldn't be able to justify the expense (it might happen in the future with the current trend in ticket prices). The good news is that the train journey into London is relatively short and painless.

Why should I use static_cast?

I recently had the dubious pleasure of debugging a User 42 Panic on a piece of Symbian code that was given to me by another company. You always need to make sure you understand what the system is telling you, so I went straight to the documentation: User 42: This panic is raised by a number of RHeap member functions, AllocLen(), Free(), FreeZ(), ReAlloc(), ReAllocL(), Adjust() and AdjustL() when a pointer passed to these functions does not point to a valid cell.

On starting a software company

This blog has been going for nearly a year now - our first post was on January 29th. Airsource has been around for a little longer than that - I quit my job at QUALCOMM to work full-time at Airsource in June 2006. We're approaching the end of the year, so what better time for a bit of a review. I'm going to stick to the technical side of things - I'm sure Nick will have something to say, and maybe one of our new employees will want to give their view of things too.

Cambridge Fun Run

The Airsource team have just been out for their first team-building exercise. One of the benefits of running your own company is that you get to choose what the activities are - and since my sport is running, and Airsource is a four man company, I decided we'd do the ...

"Who's your boss?"

Approaching recruitment for the first time is always a bit of a tricky one. You dread the thought of getting someone onboard only to throw them overboard again after a few weeks because you totally misjudged their capacity to work, think or be part of the team. You advertise your position and after a few weeks of interviews you start to wonder if you aren't just doing it all wrong. It's in these moments of sheer desperation that that the Recruitment Agency beckons.

MOTODEV Summit, London

Last Friday I had the opportunity to head down to London to see the Motorola MOTODEV Summit world tour come to town. MOTODEV is Motorola's attempt to woo the developers of the world to their platforms and devices - attempt to capture some mind-share and give us some insight into what is around the corner for their technology.

Using ILogger

It's strange how many BREW specialists you can talk to who have never used ILogger. It's not hard to see why, though: the API reference only sometimes tells you the details of how to use it, and while the ILogger overview notionally tells you what it does, you have to read it very carefully to figure out how to use it. And when you find out what it does, it doesn't seem like the most appropriate thing to use.

Persistent Storage Performance on BlackBerry Curve 8300

There are three persistent storage methods available directly for Java CLDC applications on BlackBerry devices: The MIDP record store RIM's persistent object API The file system, which is newly available in version 4.2 of the OS, and permits storage of multimedia files.

In pursuit of space

After a few months of intensive effort from myself and Ben (not to mention the efforts of many potential candidates), we managed to find two engineers who fit the bill. Taking on two people at once is a bit risky when you're as little as we are, but when you find great people you just need to grab them. There's more equipment to buy and there are more salaries to pay, but once you've got the people on board you only have to go through things once with both of them, so overall it seems to save time. We're feeling pretty chuffed.

All jobs filled...

One pile of CVs later, after 53 days and a whole bunch of interviewing, we have finally filled our roles. The Airsource team is about to double! This means we're not currently recruiting. I would say that speculative applications from good candidates are always welcome, but until we get ...

Airsource are recruiting

If you've been following our blog, you'll notice things have been a bit quiet recently. Business is good - and we need another software engineer. If you're good, and willing to work in Cambridge (that would be Cambridge UK, for our US readers), then we'd love to ...

DUMA Release

As promised, here's the release of DUMA for BREW, announced at BREW 2007. It's a library that helps debug memory problems, and Airsource have ported it over to to BREW. Download it here - it includes a test program, and full documentation of how to use it.

DUMA Release Date

I know that some of you out there have been waiting for our release of DUMA for BREW, which we announced in our talk at BREW 2007. We're still finalising the documentation for this - but it will be out on Tuesday 17th July. Check back here then, and in ...

BREW Conference 2007

The Airsource team are now back in the UK after BREW 2007. We've had a good post-conference debrief, which was particularly interesting for me, the CTO of Airsource, as it was my first BREW conference. I have a few thoughts I'd like to share.

RVCT 3.0 Released

If you've been paying close attention to the grapevine, you will have noticed that today ARM has announced the release of an upgrade to the RVCT toolchain for BREW. For those who aren't aware, RVCT gives BREW developers access to a version of their ARM compiler, linker and ...

Airsource @ BREW 2007

Winging our way across the Atlantic, en route to San Diego, I realise that it's been a year since Airsource started trading. It's not been easy, giving up great jobs and great people in order to go it alone, but we've made it to a year and are managing to stretch the company marketing budget far enough to get to BREW 2007.

BREW interfaces - implementing a new interface

BREW makes heavy use of an interface framework derived from COM. It's very useful to understand the internals of how it works, especially if you want to extend any of the built in classes. In this series of articles, I will discuss: Part 1. The internals of a BREW ...

BREW interfaces - how they work, and how to use them

BREW makes heavy use of an interface framework derived from COM. It's very useful to understand the internals of how it works, especially if you want to extend any of the built in classes. In this series of articles, I will discuss: Part 1. The internals of a BREW ...

Your application drained my battery

A client rings up and says 'your application killed my battery. I ran it, and within 30 minutes my battery was flat'. How do you prove that it's not your application at fault? Now, bearing in mind most mobile phone batteries last for a week or more on standy, even if you some long and very tedious tests, it's going to take you forever to prove, well, nothing really. Certainly nothing that will convince the client.

Floating Point on ARM

This should really be read before my previous post (Floating Point on BREW). It's a brief description of how floating point arithmetic works, and why the BREW environment is limited.

Floating Point on BREW

Pretty much any BREW developer knows that you can't use floating point. Or, to be more precise, you can't use floating point without jumping through a few hoops. You essentially have three options

Windows Mobile Insanity

It's been a few years since I got stuck into Windows Mobile programming - back in the days of the Orange SPV when Windows Mobile was known as Smartphone 2002 - and the time has arrived to get back into it again. It used to be that Microsoft helpfully supplied you with a cut-down version of the Visual Studio toolkit called "Embedded Visual Studio" which you could download for free, but now you're handcuffed to Visual Studio .NET 2005 if you want to do anything with Windows Mobile 5.0 or later. No worries, it was time for an upgrade anyway.

The Art of the Demo

Mobile Monday is a great networking event for companies in the mobile space, and Airsource regularly attends. Last night I went along to their Demo Night, where instead of the usual format of panel debate and a couple of demos, the entire evening was given over to ten demos.

Don't Surprise The User

Back when I worked at Qualcomm, and previously Trigenix, I spent most of my time working on mobile phone UIs, or more specifically on uiOne and its earlier incarnations, a tool making it much easier to implement a mobile UI from scratch. As a matter of necessity, we spent a lot of time looking at UIs on embedded systems. I could go on, at length, about some appalling examples of usability, but that's a topic for another day. The question is, what makes a good UI? Why is one application awesome when others are terrible?

Why doesn't my BREW project work on this machine?

I had a client call me yesterday; he'd built a BREW application (most of the code provided by Airsource) on one machine, and it wouldn't run on another. It ran on all of our machines, so this was a bit difficult for us to debug, until eventually we tried it on a pretty much vanilla VMWare partition - and it wouldn't start. "Unable to start application" chirped the simulator, leaving us none the wiser.

3GSM for £100

Well if that hasn't caught your attention I don't know what will! Having worked in the wireless industry since University (almost 10 years now), I'm no stranger to attending conferences. They're a great way to meet potential customers, to gasbag with old acquaintances and to take the pulse of the entire industry.

On PPTP and T-Mobile Hotspots

Being a small company just starting to get our feet off the ground, we (or rather, I) have to do all of our own IT management. Amusingly, after I completed my degree at University I had to think long and hard about whether to go into Software or into IT. It was quite a hard decision - fortunately a wise gentleman who I was working with suggested that Software was definitely the place to be. I took his advice but I keep coming back to IT. But anyway, I digress. Being a bit of a boffin, I like our IT system to be polished. So much so that even though we are small I have been working to set up a PPTP based VPN system to serve us when we are out and about. It's pretty straightforward; a Debian Linux box running pptpd (PoPToP) behind an ADSL firewall.

A searching look

A fascinating Mobile Monday on Feb 5th was hosted by the BBC at their White City headquarters in London. It's a huge glass and steel testament to the effectiveness of one of the UK's best known and best loved exports - part fancy office block and part uber-new media mecca.

Write Once, Run Anywhere?

Spent a couple of days this week chasing down a crash on a pre-release BREW 3.1.5 handset. The handset rebooted when I exited my application, which was, err, not ideal. It turned out that the crash was caused by releasing (and thereby destroying) an IROOTFORM while handling EVT_APP_EXIT. Remove that line (and leak the object) and the crash went away. Clean up a whole bunch of other objects? Still no crash.