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.
The first reactive-related talk was “React Native: The Web Goes Native” by Shine’s own Ben Teese.
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.
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:
- How Do I Game Design? Design Games, Understand People! by Jon Manning and Paris Buttfield-Addison
- The Secret Life of Services by Maksim Lin
- Lectures in Readability by Laura Savino
- Watch This Face: Designing the Same App on Multiple Wearable Platforms, another great talk by Paris Buttfield-Addison and Jon Manning
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.