Sam de Freyssinet

An archive of thoughts and discoveries in the world of software development

Dutch Mobile Conference 2014

The Dutch Mobile Conference in Amsterdam is once again being held this June. It is the third year this conference has been held in conjunction with its well established and lauded sibling, The Dutch PHP Conference. This year the focus of the Dutch Mobile Conference is returning to all things mobile, returning the subject matter to native mobile development as well as mobile web.

I was very fortunate to be able to speak at the inaugural Dutch Mobile Conference in 2012, and I am delighted to be asked to return to speak once more. This year I am going to be tackling the subject of Behaviour-Driven Development. BDD has been a subject that has found itself at home at many a PHP and Ruby conference in recent years. However it has been noticeably absent from the mobile gatherings. Very conscious of this, I have decided it is time to bring testing to the forefront of mobile development.

Arbiter: A Simple Notification Observer Framework for Ruby

The team at Sittercity have been busy building a vast variety of software components for the organisation over the last twelve months. The array of components crafted range from iOS applications to single sign-on services. One problem that has consistently appeared is how to handle various use cases where multiple parties are interested in the result of a particular routine. Early in the lifecycle of a project these concerns are usually handled directly within the use case itself, and providing there are only one or two operations things are usually happy. But as it turns out, many use cases have a wide range of interested parties. Shovelling each interested parties concerns into the use case does not scale well, whilst simultaneously violating a number of good design practices.

To help explain the problem, consider this simple example.

Compiling Libzmq as a Universal Static Library for iOS

I am currently playing around with the ZeroMQ messaging framework and iOS. This article describes the challenges encountered when integrating ZeroMQ with my iOS project and how I mitigated them. This resulted in a tool to automate producing a single libzmq static library for i386, armv7 and armv7s architectures.

For the uninitiated, ZeroMQ provides a simple way to pass messages between processes, whether they are local or remote. It can use TCP, UDP, inproc, multicast and several other protocols as the transport mechanism. In the past I have heard ZeroMQ (or ØMQ from now on) referred to as a “sockets framework”. Although this doesn’t capture the entirety of what ØMQ is, it does provide a nice metaphor for my particular use case.

The project that required ØMQ in this instance was a proof of concept for another project I am currently engaged in. The application in question requires two iOS devices to communicate with each other in realtime across a network. ØMQ provides the communication layer, coupled with Apple’s Bonjour zero config network discovery protocol. As ØMQ is a C based library, integrating it with an iOS project should require relatively little effort. Obtain the libzmq source, compile and add to the Xcode project. But as it turned out, producing a static library for iOS development took some additional effort.

WindyCityGo Mobile Conference Day 1

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.

Refactoring the PhoneGap iOS DatePicker

iOS Date Picker

Recently my team were using PhoneGap, the HTML5 middleware that enables web developers to write mobile apps once using technologies they know; HTML5, CSS and Javascript. The completed PhoneGap/HTML5 application is then compiled into binaries for each of the supported mobile platforms. The idea is simple, developers write code once and deploy many times. PhoneGap can certainly be used for creating simple applications, but stray from the core API and you quickly find yourself either writing a native extension; or more likely finding a plugin that does the task for you.

DNS Woes

Just a quick note to say that I have been experiencing some DNS woes with this domain. As a result, many of you have probably been seeing a far from beautiful 404 Not Found served by my former hosting company. Initially I thought this was an issue with my Heroku web dynos. However after doing some further DNS analysis and investigation I discovered that I had what can only be described as DNS EpicFAIL!

Adding OCMock to Xcode 4 Projects

Today I have been adding some new functionality to an iPhone application I am currently developing for work. Being the good developer that I am (Ed: and modest too), I started by writing some tests to cover the changes I needed to make. These days Xcode ships with the SenTest Objective C unit testing framework, which is great. But SenTest does not include a mocking framework. Fortunately OCMock exists to solve this very problem. However getting it into your iOS project and running takes a little bit of effort.

Dutch Mobile Conference 2012

Dutch Mobile Conference

I am delighted to announce that I’ll be speaking at the Dutch Mobile Conference in June 2012. I will be presenting Ten considerations for taking a web business to the mobile market on the Friday. The talk will provide attendees with ten useful considerations for taking an existing online business into treacherous world of mobile. Moving an established online business into the mobile domain sounds simple to say. In some cases, it can be simple to perform. But the reality for a lot of companies is that their present model does not necessarily work within a mobile context.

Hello 2012

As is so common at this time of year, I have made a new years resolution to restart blogging. I have attempted to blog in the past, twice in actuality. However both excursions failed to hold in the longterm due to a number of factors, most regularly real life syndrome. Of course I have not been totally silent in this time, writing for the popular PHP blog TechPortal on the subject of HMVC Scalability and Optimization.

So why start writing again now? Well there are a number of reasons, too many to list here in full without leaving you bored. But three are worth mentioning;