Houston App: System overview

Houston, is a mobile application replacing the radio communication system previously used by the Transports Publics Fribourgeois (TPF). Houston is a system using existing data network.

The system is spread over more than 200 busses, 30 team leaders and the operation center. It covers the needs of three types of users: the operators, the bus drivers and the team leaders (Houston: a mobile app to replace a radio communication system).

The major components

So how’s Houston working? Here is an overview of the major components. Houston is a distributed system composed of:

  • Two Mobile Apps that fulfill the specific need of bus drivers and team leaders
  • A Web Client used by the operators to create any type of call
  • A Cloud Communication Platform to establish Voice over IP (VoIP) and standard phone call over the Public Switch Telephone Network (PSTN) without having to deal with the complexity of building and maintaining a communication infrastructure. The cloud platform used in this system is Twilio (more details on that later)
  • A Public API: implemented by a backend server used as a bridge between mobile apps, web clients and Twilio. It is connected to a database that stores user identities and bus planning. The database also keeps traces of all performed calls.

A deeper look inside each component of the system and how each of them interacts together will help to understand why Houston was a huge challenge.

Continue reading about Houston App: System overview

Tags: ,

Houston: a mobile app to replace a radio communication system

Bring your company radio system to the 21st century using VoIP and mobile applications to improve communication quality while reducing costs.

With the project Houston, we took the challenge of replacing the old radio network of the Transports Publics Fribourgeois (TPF), a swiss public transportation company by a system using existing data network and running on mobile applications. This solution solved the problem of maintaining a dedicated radio network. It also improved both the global quality of the communication and the availability of the system.

Initial situation: communication based on radio system

Since decades, employees of the Transports Publics Fribourgeois (TPF) have been using standard radio to communicate between them. The radio system is meant to cover the needs of the users. It is spread over more than 200 busses, 30 team leaders and the operation center). There are three types of users, with specific needs:

  • The operators – working in the operation center – use the radio to speak to a specific bus driver, or to broadcast messages to all or part of the running busses.
  • The team leaders are dispatched at different locations. They use the radio to manage daily events – such as the replacement of a driver – or to inform many drivers of a change in the network – for example in case of an accident.
  • The bus drivers use the bus radio as the main means of communication while driving. They can call other busses, the team leaders or the operation center.

 

Logo TPF

Continue reading about Houston: a mobile app to replace a radio communication system

Tags: , , , ,

Native or Hybrid Mobile Application, Which One Should I Choose?

It is complex for non-geeks to understand the mobile application ecosystem. We often hear jargon such as mobile apps, hybrid apps, native apps, single-codebase-cross-platforms apps, etc.

Some clarification is needed.

Continue reading about Native or Hybrid Mobile Application, Which One Should I Choose?

Tags: , , , , ,

5 lessons learnt about the new SAP Cloud Platform SDK for iOS

The SAP Cloud Platform SDK for iOS was released in March and we were very excited to try it out. This toolkit allows companies to let developers build, extend, and run iOS apps based on SAP back-end data. Thus, business’ employees can access live data at any time from their iOS mobile app, and enjoy the standard SAP Fiori design language they are used to.

We booked a one-day hands-on with Noé in our ThinkSpace war room with the objective to have a demo app up and running and plugged to the SAP Cloud Platform (formerly known as SAP Hana). This may sound like an easy goal but honestly, knowing SAP, we thought that it was already ambitious.

Continue reading about 5 lessons learnt about the new SAP Cloud Platform SDK for iOS

Tags: , , , , ,

Do I Need a Mobile Application or a Mobile Website?

In our digital era where people’s attention is scattered between apps and websites, it’s not easy to know whether you need a mobile application, or if a responsive website (that can be accessed via your web browser) would meet your needs.

I have this discussion every week with new clients, and I thought it was time to share our reasoning here at Liip in order to give you a clear answer if you still hesitate.

Do You Want To Reach Your Users, or Bring Rich Features to Them?

When clients come with a mobile app request, I explain them that most of the time, a web application is more efficient in terms of investment, as well as in term of reach.

The second question I get after this answer is: “When would I need a mobile app, then?”
In my point of view, mobile apps are useful when they are crafted to be rich — vs. the reach that web applications can provide. Rich in terms of features that are only available on mobile devices, and that can’t be achieved via web technologies.

Continue reading about Do I Need a Mobile Application or a Mobile Website?

Tags: , , , , , , , , ,

5 industrial challenges mobile applications can solve

How can mobile applications support industries to undertake a digital transformation? In supply chain, risk management, or information distribution, mobile applications will make tasks easier for your employees, thus increasing efficiency. Read about 5 industrial challenges that mobile apps can solve.

First of all, it is important to carefully chose between a web and a mobile application. Mobile apps are useful when they use one of the device’s native capabilities (e.g. Bluetooth, GPS, camera, etc.), and when they enhance the experience provided to the user (compared to what a web application could do).

Industrial challenges

The challenges industries face are often very good candidates for mobile apps as they leverage all their potential. Therefore, I have identified five recurring issues that industries are facing nowadays. These pain points can be easily relieved by mobile applications.

Challenge 1: Productivity issues due to technical limitations

Continue reading about 5 industrial challenges mobile applications can solve

Tags: , , , , , , , , , , , , ,

Going Crazy with Caching – HTTP Caching and Logged in Users

HTTP caching is an efficient way to make your application scalable and achieve great response times under heavy load. The basic assumption of HTTP caching is that, at least for some time, the same web request will lead to an identical response. As long as “same” means simply the same domain name and path, you will get many cache hits. When users are logged in, we have the opposite situation, where potentially everybody will see different content. Lets take a closer look to see where we can still find safe uses for HTTP caching even with logged in users.

Controlling the HTTP Cache Behaviour

A HTTP request is not only the URL, but also the headers. Some are only for statistics or not relevant for your application. But for some web applications, there are relevant headers. The Accept-Language header can be used to decide on the content language, or when building an API, the Accept header can be used to choose whether to encode the answer in JSON or XML.

HTTP responses can use the header Vary to declare what headers lead to distinct responses on the same URL. A HTTP cache uses the Vary to keep the variants of the same URL apart. This works well when there are few variants – you will still get frequent cache hits. However, if every request comes with a different header, caching on the server side makes no sense anymore. There is no benefit in storing results in the cache that will rarely be reused. Even worse, this is a waste of resources that should be used for caching relevant data.

For this reason, caching proxies like Varnish will by default not attempt any caching as soon as there is a Authorization or Cookie header present in the request. Cookies are commonly used to track a session in the application, meaning the user might see a personalized page that can not be shared with any other user. If you force caching with cookies and have your application send a Vary: Cookie header, you will have the situation described above, where you get no value out of your cache.

The rest of this article will dig into various aspects of what you can do to still do some HTTP caching:

  • Avoid Session Cookie, remove when no longer needed
  • Delegate to the frontend: “Cheating” with Javascript
  • Different cache rules for different parts
  • User Context: Cache by permission group

Continue reading about Going Crazy with Caching – HTTP Caching and Logged in Users

Tags: ,

Time for Coffee available on Android

Do you have time to take a coffee before your next public transportation connexion? Time for Coffee is a project initially started by François Terrier among friends in 2015.  We continued the work to make it available on further devices. 

When the Apple Watch came out, a few Liipers had the idea to make an app for it because having the next departures on the wrist was a perfect use case for this kind of device. The app received quite a lot of attentions in Swiss newspapers and received a Silver in the best of swiss apps in the category “Wearables & New Devices”. Since the Android world deserved also our attention, we made the app available for Android and Android Wear watches. The app is downloadable on the Play Store.

Continue reading about Time for Coffee available on Android

Tags: , , , , , , , ,

The Data Stack – Download the most complete overview of the data centric landscape.

This blog post offers an overview and PDF download of the data stack, thus all tools that might be needed for data collection, processing, storage, analysis and finally integrated business intelligence solutions.

(Web)-Developers are used to stacks, most prominent among them probably the LAMP Stack or more current the MEAN stack. On the other hand, I have not heard too many data scientists talking about so much about data stacks – may it because we think, that in a lot of cases all you need is some python a CSV, pandas, and scikit-learn to do the job.

But when we sat down recently with our team, I realized that we indeed use a myriad of different tools, frameworks, and SaaS solutions. I thought it would be useful to organize them in a meaningful data stack. I have not only included the tools we are using, but I sat down and started researching. It turned out into an extensive list aka. the data stack PDF. This poster will:

  • provide an overview of solutions available in the 5 layers (Sources, Processing, Storage, Analysis, Visualization)
  • offer you a way to discover new tools and
  • offer orientation in a very densely populated area

Continue reading about The Data Stack – Download the most complete overview of the data centric landscape.

Tags: , , , , , ,

Hello, Rust! — An overview

This is my report of my talk at the TupperRust meetup hold in Lyon (France, February 2017) You find my slides available to download. 

The February 2nd 2017, I have presented a talk entitled Hello, Rust! — An overview about the Rust language. This language describes itself as safe, concurrent, and practical. The goal of this presentation was to give an overview of several features brought by the language, such as its strong safety guarantees, or speed and memory performances.

The slides are available online

First slide from the Hello, Rust! talk

This talk has been presented during the first TupperRust meetup event in Lyon (France). This is a serie of meetups focusing on Rust. The interaction was exceptional: The audience has been a great actor of this talk, and we even had a live-coding session on projects made by someones in the room. It was a great moment to talk about concrete problem, memory safety, performance etc.

It was also an opportunity to present a project that I have started here at Liip, called Tagua VM, which is an experimental PHP Virtual Machine that guarantees safety and quality by removing large classes of vulnerabilities thanks to the Rust language and the LLVM Compiler Infrastructure.

If you have any question, feel free to ask anything!

Tags: , , , ,