Last week I had the privilege of attending the YOW! Connected conference in Melbourne, Australia. YOW! Connected offers a look at all the interesting things that are happening in the mobile and IoT (Internet of Things) space, from the perspective of both software developers and UX designers.

On the mobile front it included a variety of talks relating to both the iOS and Android platforms and yes, even a little bit of Windows.

In general all the talks that I went to were pretty good,  but here I will write about a few that particularly interested me.

It’s a kind of magic

The conference kicked off with great keynote by Josh Clark: Magical UX and the Internet of Things.

It was a great presentation with a lot of interesting examples of how, by combining our imagination with available technology, we can make life both more interesting and more fun. He showed how, through physical interaction with smart devices, a complex machine like a computer can seem to almost disappear.

He also made the point that, in some ways, the smart phone can be considered to be the first IoT device, because it’s always at our reach at the moment of inspiration. Furthermore, having all these little devices out in the wild, each equipped with sensors and connected to a network, means that the real world becomes a new data source. That said, he emphasised that it’s important to stay focussed on what insights can be extracted from the raw data, rather than just fixating on the sheer volume of it.

This all lead to the great point that the Internet of Things it’s not really about the “Things”. Instead, it’s about technology amplifying our humanity.

Developers and Designers

There were a couple of interesting talks about how to bridge the gap between software developers and designers. Being a developer myself, and having worked with UX designers in the past, I understand how crucial UX is to differentiate your product in a very competitive world. Consequently, it’s critical for designers and developers to be working in harmony.

The first talk was “Bridging the Designer-Developer Divide” by Chris van Raay. He went through several good points, starting first with the prejudices that both designer and developer camps hold about the other. ‘Designers don’t know anything’ say the developers. ‘Developers are lazy’ say the designers.

Chris argued that the way to overcome this is to have fluent communication between each camp. Developers need to communicate when something is possible, too difficult or impossible to implement. Designers need to learn about the platform they are working on. Both of them need to respect each other and work towards the same goal, because at the end of the day both of them want to build a great app.

Finally, Chris introduced how documentation and defining assets like colours and fonts in one place can help to establish the tight feedback loop that is necessary to produce a great app.

The other designer/developer talk was “Design Driven Mobile Development” by Tom Brodhurst-Hill. This talk was a case study for the “CommBank” tablet app, oriented around how developers and designers worked together to make the app happen. It covered everything from working in an incremental feedback loop so designers could evolve the designs, to using different tools that allowed designers to work on the app.

Whilst having designers working directly on an app initially left me dubious, Tom introduced a few quite handy tools that help the process:

  • Using XCode Storyboards to build the UI flow and custom widgets
  • Self configuring view classes
  • Use of IBDesignable and IBInspectable properties added in Xcode 6
  • Creating layout rules visually
  • PaintCode to generate vectorised images that are drawn using CoreGraphics, perfect for all resolutions instead of loading them from static images cut from the PSDs

It’s all about Being Reactive

Reactive programming is becoming more and more popular now. The reactive paradigm orients around data flows and the propagation of changes. Put differently, the application transitions from a well defined state, and the underlying execution model automatically propagates changes through one-way data flow.

One important aspect of it is that we try to avoid mutable variables. The whole new state it’s represented by a new set of immutable variables. The changes of states are triggered by events or signals.

There were 4 talks at YOW! Connected related to reactive programming, indicating that it is something of a hot topic at the moment.

React Native

The first reactive-related talk was “React Native: The Web Goes Native” by Shine’s own Ben Teese.

It was a great talk about Facebook’s new framework that allows developers to write native apps using Javascript. Furthermore, like the original React web framework, React Native uses a declarative programming paradigm that encourages one-way data flow.

Ben started by introducing the React programming model and how it works in a browser by tracking the changes in a virtual DOM tree. He then went on to show how this model translates to the native development world. Basically React Native uses JavaScriptCore to render native UIViews, and manages updates to the view hierarchy for you.

Next he showed how easy is to get started, and how to structure a simple app.

The Android version of React Native was just released last week. Ultimately, React Native aims for a “learn once and write everywhere” approach to building apps across multiple platforms. However, as Ben pointed out, it’s too early to know how whether that goal is achievable. That said, it’s worth keeping an eye on.

On the second day of the conference, there was a second talk about React Native:  “React Native: How we use Javascript for Rapid Native Mobile Development”, by Mike Ebinum. During his talk, Mike showcased an app he wrote entirely using React Native, and presented real life examples of bridging the framework with low-level native components like, for example, CoreBluetooth.

Reactive Cocoa

The other 2 reactive-themed talks concerned ReactiveCocoa, a framework that allows you to use the Functional Reactive Programming (FRP) paradigm in Objective-C and Swift.

The first talk was “ReactiveCocoa in Practice” by Jeames Bone and Mark Corbyn. They described what ReactiveCocoa is, and the key concepts behind it. This included an explanation of what signals are and how they are streamed through time. They also introduced the different operators that can be used to work with the signals.

After that, they went through different examples how to implement common situations using an FRP paradigm.

The second ReactiveCocoa talk was “Untangling Callback-Spaghetti with ReactiveCocoa” by Sam Ritchie.

Sam started the talk by showing how code complexity in asynchronous apps can grow exponentially when trying to add more features and check for edge cases. He then  showed how ReactiveCocoa and FRP techniques can be used to tackle this kind of complexity. Swift in particular emerged as an ideal candidate language for FRP because of its high level and functional nature.


I really enjoyed this conference. I think it has great value if you are involved in mobile development. A couple of other talks that I found interesting were:

In my case, the bulk of my mobile experience is in iOS development, so I attended those talks rather than the Android ones. But I heard the Android ones were very good too.

I definitely encourage you to take a look to the rest of the talks and check out the slides. Whilst the slides don’t constitute the full experience, they will give a good idea of the main concepts discussed.

I think Reactive programming is definitely shaping up as a paradigm that can help to manage the increasing complexity of mobile apps. I also find the Swift programming language very promising. Version 2.0 is officially out, and the language itself (plus some libraries) are soon to be open sourced by Apple. Consequently, I think it absolutely worth the effort to learn it.


  1. Thanks Pablo. You guys know that I’m not a Dev, so please don’t shoot me down if this is a dumb question. I’m asking this in the context of “ask a question, appear dumb for a moment or don’t ask the question and remain ignorant for a lifetime”

    Pablo said that “React Native aims for a “learn once and write everywhere” approach to building apps across multiple platforms.” This sounds kind of familiar. I remember hearing a similar quote about Java many years ago, I think the tagline was “write once, deploy on any platform”.

    My question is what, if anything, is different about React Native that might enable it to achieve this very worthy objective?

    I ask this question because if there are strong reasons why React can achieve this objective better than earlier technologies, then to me, that would make React a very valuable thing for Shiners to embrace and for us to look for in recruitment candidates.

    1. Hi Cam,

      In the Java case it works great for backend but for UI, and specially UI responsiveness/consistency with the platform, it has always been an issue.

      This approach is about learning a paradigm and also a framework. You can then leverage that knowledge when writing on another platform however you still will need to do certain things things differently because you are on a different platform and the framework respects this.
      As Ben mentioned in his talk it’s too early to know if this goal it’s achievable.
      If you already know Java and how to write Android apps or Objective-c/Swift and know how to write iOS apps you will probably get better results using the native languages specially if the kind of apps you are trying to develop require several platform specific nuances. This is my personal opinion.
      However if you don’t know the languages and Javascript is your bread and butter React could be a great alternative and probably you will get better results than using Phonegap Cordova or Titanium.
      I think that the Reactive paradigm itself will keep gaining more traction. With Reactive Cocoa you can use the same paradigm and write your iOS app using Swift.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s