This week I attended the WindyCityGo, Chicago’s mobile developers conference. WindyCityGo is in its second year and like musicians second album, it was potentially a tricky one. Chicago’s tech scene is currently enjoying massive growth, no doubt helped by the success of locally based popular internet brands Threadless, 37signals, Orbitz, Career Builder and not forgetting Groupon. Recently many local startup companies have also been making a big name for themselves as well such as Peapod, GrubHub, Braintree and my employer Sittercity. With this in mind I expected a massive turnout for the WindyCityGo conference, so I was rather surprised to discover that this conference was a very intimate affair.
The conference was hosted at the Groupon headquarters, providing a rather cosy environment for proceedings. The lecture room chosen was probably not the most suitable for a conference of this nature. However the free wifi did provide a great service and didn’t drop once in the two days, which was a refreshing change from most conferences. However, the room felt slightly awkward. Three large displays provided the slide presentations, one large plasma at the front flanked by two attached to pillars. Speaking of the pillars, they were bulky and spread throughout the room such that if you got caught behind one it hid the speaker completely. These details are only small negative points against the venue, but they did start to add up. Given that Groupon were also the platinum sponsor it did all feel a little bit too convenient. However, none of these details would stop the conference from commencing, and it did so with real gusto.
The first day started with a session from The Second City, Chicago Improv players, lead by Cody Dove. The Second City group are famous for launching the careers of John Belushi, Bill Murray, Mike Myers, Dan Aykroyd, Steve Carell and Stephen Colbert among many many others. Needless to say the players for the conference weren’t any of the above, but they were excellent nonetheless. The session started with an improvised sketch with all four players creating a short sketch whilst pausing for amusing input from the audience. This then lead into another four activities all requiring audience participation in one form or another. It was very energetic and more importantly fun. Once the players had finished, the audience was awake, alert and ready to learn. This was a novel and inspired way to kick things off and I tip my hat to the organisers. Not since Aral Balkan’s opening performance at Update Conference 2011 has such an introduction been so entertaining. Everyone was now ready for some technical talks.
First up was a talk on Painless Localization from Whitney Young of FadingRed, the creators of the Mac personal finance application Koku. Localization is often an overlooked aspect of mobile and desktop development, but vitally important in these competitive markets if you want to reach the broadest possible audience. Whitney provided some analysis of global language distribution to re-enforce his argument. It was fascinating to witness that the proportion of English as a first language speakers is relatively small on a global scale. However, a large proportion of the worlds population would use a computer within the english localization. The talk then went on to explain how you localize projects in Cocoa, which was nice to see as I’m currently in the process of doing this myself. Localization is not trivial on any platform and you can see why in some cases developers choose to ignore it completely. This puts localization right up there with accessibility in this respect.
To ease the pain and make life easier for FadingRed localizing their applications, they created a tool called Greenwich. Greenwhich is a Cocoa framework that provides a great solution to the localization problem, enabling the users of the application to provide the translations. Whitney explained that before Greenwich was created, their end users would email them translations for their applications. So it was clear there was a hunger for user-created translations. Crowd sourcing localization obviously has some risks, but Greenwich provides some additional tooling to sanity check the provided translations. The real power of Greenwich is the instant feedback mechanism, allowing translations to be examined in the app immediately, without having to recompile the binary. Greenwhich looks like a great project and one I’ll be watching closely. If you’re building Cocoa apps for desktop or mobile, I suggest you checkout Greenwich.
Following Whitney was David Kinney presenting iOS Application and Data Security. This talk provided some deep insight to some of the security issues that plague iOS, though in reality Android suffers the same vulnerabilities. The talk started with a general look at iOS security model;
- Device Security via pass code or pin code
- Data Security via encryption and keychain
- Network Security via SSL/TLS and VPN
- Application Security via code signing and sandboxing
First off David criticised people who protect their iOS devices using just the four digit pin code. The pin code protection provides ten-thousand possible variations, which is a lot for a person to go through. However software can defeat this in under two minutes. iOS does provide a string based pass code as an alternate method of securing the device and David recommended using that with a strong password. Personally I feel that if your device is stolen then you’re screwed anyway. Modern hardware can process around three billion passwords per second. At that rate a password that a human can also recite will be broken in a reasonable amount of time.
Given the device is not safe, the next subject of Data Security was apt. If the device is not safe, then data must be made secure. David went into to detail about the OS security features, pointing out the flaws with using Keychain. Keychain is only as secure as the device. So if sensitive data is being stored then it is best to encrypt it using a custom method using the CommonCrypto library. David went into more detail covering the preferred encryption algorithms to use such as AES and TripleDES, touching briefly on Password Based Key Derivation Function v2. Overall David’s talk was highly informative and gave a great overview of the security pitfalls of developing for devices in general.
Next up was Eric Meyer from 8th Light presenting a talk on how to test code properly in Cocoa. This is the subject matter that I was most interested in seeing today and Eric did not disappoint. I have had the pleasure of briefly working with Eric so I was sure this would be an informative session. The session took the form of a brief introduction to the two tools Eric would be using, ObjectiveCSlim and OCDSpec. ObjectiveCSlim is an Objective C implementation of the Fitness wiki based acceptance test framework. OCDSpec is an implementation of RSpec (or PHPSpec) in Objective C.
With the introduction to the tools complete, Eric switched into live demonstration mode. Using the board game Mastermind as the use case, Eric demonstrated how to build the ObjectiveCSlim and OCDSpec tests and then implement code against them. Of course this is classic test driven development. Unfortunately there is not a lot to say, other than ObjectiveCSlim looks like it is a great tool for acceptance test verification. OCDSpec is also an interesting tool, although it is very verbose (even awkward) when compared to the implementation in its dynamic language cousins. But this is small criticism. Anyone writing Objective C would be used to this level of verbosity. Eric’s presentation was competent and bar a few minor live demo issues, was delivered without issue. I must give Eric bonus points for doing a live demonstration.
After lunch Jason Van Lue kicked off things with his talk on the mobile design process. This session was aimed squarely at web designers for all devices. The talk provided a walk through some best and worst practices of modern web design, touching on the differences between adaptive and responsive web design. As an aside, it is nice to see responsive design being talked about at conferences right now. Just as progressive enhancement was important in the last decade, responsive design is important in this one. In reality progressive enhancement and graceful degradation sit comfortably with responsive design. They are all members of the same discipline, the web as one platform for all.
Jason’s talk was very well delivered and equally well received. I must be honest that I didn’t learn very much myself, but I’ve spent a lot of time researching this subject matter. I imagine everyone watching who wasn’t aware of these deign concepts benefitted from Jason’s talk.
After a break the subject matter returned to the technical. Chris Anderson presented a talk on the CouchDB backed datastore, CouchBase. CouchBase is basically a set of existing open source technologies woven together into a new product that resembles a document-store-come-memory-cache with a multitude of interfaces. Out of the box CouchBase has a RESTful HTTP and Memcache compatible interfaces for remote access, as well client libraries for C, Java, .NET, Ruby, Python and PHP. Chris provided a broad overview of how CouchBase builds upon CouchDB and Memcache to provide a highly scalable and resilient datastore.
At this point another related project called TouchDB was introduced. TouchDB is an iOS datastore that is sync compatible with CouchDB, and by extension CouchBase. TouchDB basically provides the same data abstraction as Apple’s CoreData, but using an open source implementation. This was all very intriguing, but I was beginning to wonder why I would use TouchDB over CoreData? The next subject covered categorically answered this question.
CouchBase Mobile Syncpoint is a new sync service (currently in beta) for CouchBase and TouchDB. CouchBase Mobile Syncpoint effectively provides an open source iCloud implementation. However unlike iCloud, multi-tenant synchronisation does not have to be limited to one user account. This potentially allows for some new, and until now impossible, synchronisation models.
There was a lot of information delivered by Chris over his 40 minutes, but little technical detail. At times it felt a little too light on technical details, but I guess this was a symptom of the number of subjects being introduced. The talk has certainly inspired me to look at CouchBase Mobile Syncpoint in more detail.
The last talk of the day came from Eduardo Scoz on the subject of QuickDialog. QuickDialog is an iOS framework designed to make dialogs simple. Eduardo started his presentation exclaiming that the UIKit framework was great, but when it came to dialogs it found itself wanting. I tend to agree with this opinion. As a result most people ,including this author, use a
UITableView to build custom forms.
QuickDialog aims to simplify this process, providing a framework that uses JSON documents to describe the dialog required. Once the JSON has been defined, the QuickDialog framework builds the
UITableView with all the necessary controls. Additionally QuickDialog binds data between the view inputs and the model, so an update in either one will result in the other being updated. It was a great talk by Eduardo delivered with some excellent live demonstrations. I will certainly look into this framework in more detail.
After a long day of excellent talks I was ready for home. I decided to forego the after party and head straight home to start playing with some of the tools mentioned. Overall day was full of very insightful talks aimed at the iOS platform. The next day would be split between Android and Windows Mobile. The few negative factors mentioned at the beginning of this post did dampen the experience slightly, but the quality of the talks so far was helping to compensate for those minor issues. Given a better venue, this conference would have been excellent.