Swift Alps Conference – experimentation and collaboration

The Swift Alps Conference has a special format focused on experimentation and collaboration. This is my report of the conference and the workshop Kilian and I held. The slides are available below.

Last month my colleague Kilian and I were pleased to attend the Swift Alps Conference, an experimental conference about Swift taking place in the Swiss Alps. This conference had a different format from what one can expect from a typical software development conference. In this case the format was more focused in experimenting and collaborating with other attendees with the goal of learning something new.

Experimenting with strangers

Continue reading about Swift Alps Conference – experimentation and collaboration

Tags: , , , , , ,

Easy Storyboard translation in Xcode with Swift3

In this post I explain how we created a modular library. Today we are happy to release and open source this lib. You can find the code on GitHub. Our objective was to have one set of translation files that could be used in the storyboard and Swift.

In our multilingual iOS projects, we always struggled to translate storyboards in Xcode. We checked all around CocoaPods, but couldn’t find any efficient solution so far. Every time, we ended up with multiple versions of the storyboard along with multiple versions of ‘Localizable.strings’. It was hard to keep everything under control, specially when translations needed to be updated throughout all files.

Continue reading about Easy Storyboard translation in Xcode with Swift3

Tags: , , , , , ,

Introducing Swift 3.0

With the new iPhone 7 Apple has released the iOS 10 operating system and with it comes Xcode 8 and a new version of the Swift language for the iOS developer community.

Swift 3.0 is an open source language that has been developed by the community together with Apple Engineers.

 

Swift Logo

 

One of the great things about developing an open source language is that everybody can see the evolution of the language and inspect the code. In the official release notes there is a list of all the changes that have been implemented in the new Swift version.

Continue reading about Introducing Swift 3.0

Tags: , , ,

High level targeting: how Beacons can enhance your customers loyalty

What is a Beacon?

A Beacon is a technology, often looking like a mini square (about 3cm2), able to communicate with mobile apps via Bluetooth. It works on apps running on iOS or Android devices.
Bluetooth (or BLE – Bluetooth Low Energy – to be specific) allows a device to transmit information to another device. For instance, this technology is used to play music on wireless headphones or speakers, over a short distance.

In other words, Beacons will allow a contextual communication between two devices when they are close enough (a few meters up to a few dozens meters) for a Bluetooth connection to be made.

Continue reading about High level targeting: how Beacons can enhance your customers loyalty

Tags: , , , ,

Mobile apps – Our 3 best advice for your success

Everyone wants a mobile app that people will own, love and use every day. Before you jump in, ask yourself, and your team, these 3 basic questions to avoid the most common mistakes. This is our guide to help you focus on your strategy and make sure that you invest in a mobile app effective for your business.

1 – What is your objective? – Strategize and test

Do you want a mobile app, because during a meeting, the CEO/CMO/Head of Marketing or whoever proposes ideas you have to follow said ‘we should have one’?
Or because a mobile app seems to be a symbol of innovative, modern or digital enterprises, you want one? Maybe because an app is the symbol of your enterprise taking on the digital turn, you need one?
It is time to rethink.
You should not ‘decide’ to have a mobile app. A mobile app should not be a ‘one shot’, it should be part of a marketing mix, which means, it belongs to a strategy.

Start by focusing on the needs of your business and identify the blockers in the customers’ journey. Ask yourself, what added-value would this app offer your customers. If it is a mere duplication of the content of your website, you should not start developing one.
An app needs a user centric design or is meant to fail. Make sure that the objectives of your mobile app are as clearly as possible defined. Skipping this step is taking the risk of developing something useless and/or having to modify it afterwards.

Keep in mind that the further you are in the project, the more expensive it is to modify. Investing time at the beginning of a project to strategize or, in the best scenario, even test with real users the first wireframes is not wasted time.

2 – Who and where are your customers?

Your app will be effective at its best if it answers your customers need. It is essential to know them and their behavior and where you find them. Then, you will maximise your targeting.

Continue reading about Mobile apps – Our 3 best advice for your success

Tags: , , , ,

Apple TV app – or how to continuously innovate

Continuous Innovation at Liip

Doing Agile at Liip does not always mean we live in a continuous flow of sprints, endlessly. Sometimes the comfortable stream of sprints breaks for a while, usually between two projects. This is often a good opportunity to hack on new technologies or try something new. We recently had one of these break and it was the perfect time to try once again our innovation process.

In fact, this process starts before we have one of those breaks. First of all, the whole team lists any innovation idea – could be anything – and anyone is invited to contribute (at the moment we have a dozen projects listed). We try to groom this list as often as possible to keep it relevant. Then, when time comes we can just go to this list and grab a project we want to work on.

Doing innovation keeps us close to new technologies.

Continue reading about Apple TV app – or how to continuously innovate

Hackday React Native for Android

When React Native for Android came out I was excited to investigate it more at one of Liips monthly innovation days. Liip already developed a React Native app for iOS and we wanted to know how it works for Android. We were: Andrey, Germain, Lukasz and me. Germain is currently working on a cross platform app written with Xamarin.

For this hackday we tried to port an existing React Native iOS app to Android.

TL;DR: We are waiting for WebViews to be supported. See the pull request for changes. We didn’t need to dive deep into Android APIs like XML Layouts for views.

Continue reading about Hackday React Native for Android

Tags: , ,

Writing iOS Layout Constraints The Easy Way

Coming from a web-development background, native iOS development always feels a bit clunky to me when it comes to creating the layouts.

Yes, there is the Interface Builder and it is a great tool, but sometimes,
things get more generic and building the views and layouts can be more efficiently done by hand.

Except – layout constraints! Writing layout constraints can be tedious work.

Example, making an element the half of the width of its parent element in objective-c:

It is not much better in C# with Xamarin either:

But behold! There is our ConstraintHelper!

The ConstraintHelper is a small C# library to help with the layout constraints and it brings less common concepts like Method Chaining to the layout constraints.

ConstraintHelper is Open Source and can be forked from GitHub.

Tags: , , , ,

“Time for Coffee!” open sourced!

The public transport app “Time for Coffee!”, made by some Liipers, was finally published at Github under the MIT License. Furthermore the Apple Watch app for it was also released last week, just in time for the watch release in Switzerland this Friday.

Read more about it at the Time for Coffee! blog post.

Tags: , ,

React Native hackday

Yesterday we had a hackday on React Native. The goal was to find out how it feels to develop native iOS apps with Javascript and how much we have to learn to get started. GermainPedro and Adrian (myself) participated. Our combined knowledge of Javascript frameworks listed projects like Angular JS, Backbone, Exosjs, Ember, ReactJS and jQuery. Germain did a bit of Swift but basically we are web developers without iOS experience.

We started with setting up the sample app from the tutorial and played a bit with changing content and reloading the app. Live reloading worked for all three of us only for a few changes before it stopped reloading, we have to investigate further what the cause of that is. After setting up Apple Developer accounts we deployed the sample app on our phones which worked well. We liked how easy it was to get started thanks to the react-native-cli tool.

Since I already hacked on an example project with React Native before, I gave a short introduction of React, JSX and StyleSheets. We all got the UIExplorer example running which is great to see what React Native can do and to use as a reference when creating own applications. The examples felt great and well… native.

A hackday wouldn’t be called a hackday without hacking so we thought of something we could work on. We wanted to try to get a sliding menu and maybe hack a bit on the Guess the Liiper sample app. When sharing the Guess the Liiper code we had some issues with setting up the .gitignore file correctly for an XCode project and updating the react-library to the latest version. Pedro and Germain investigated the sliding menu and how to add images while I fixed the Guess the Liiper app to be actually usable. We found the react-native-slide-menu, integrated it into the sample app and used a background image for the content. When requiring the image we had some issues but that seems to be known. We ended up with a working app, see the source code. We went through the source code of Guess the Liiper and thought of how to create a circular progress bar like this. React-native-svg might be useful to create this.

React Native sliding menu sample app

Findings

Working with React Native is… reactive! It felt like developing for the web and we didn’t have to spend much time getting into it. With the tutorial, UIExplorer app and the sample app it was easy to get started. The Chrome Debugger and tooling like the great Chrome React extension was for us the usual way to debug javascript apps. When thinking about what to implement we found that many components already exist – mostly in a beta stage but the community is very active.

We had to get used to Xcode, digging into the native tools is necessary of course but finding things in Xcode wasn’t the most intuitive experience for us. With our existing knowledge we think we can get quite far to develop apps, especially for quickly prototyping. Probably it needs more iOS and Swift knowledge for specific functionality like applying filters to images, microphone and camera access etc.

When working on styling we noticed that it would be great to have live editing like in Chrome Developer Tools which we are used to. Since we don’t have any iOS development experience we can’t compare this to the normal way iOS apps are developed. But being able to immediately see style changes made in the Dev Tools would be awesome.

We think that the development experience with React Native is great for web developers. The project is very young and it is too early to tell how disruptive it will be. Many components are being developed and there is definitely traction in the community. We are especially looking forward to the Android version.

Tags: , , , ,