HyperTrack now supports React Native

Over the last few years in the fast evolving Javascript ecosystem, React has emerged as one of the top libraries for building UI. Described as the “View in MVC” , it provides a high-performance way to keep views up-to-date with JavaScript, using its incredibly fast virtual DOM diff algorithm and one way data flows: from owner to child. Since its launch, React has redefined a lot of paradigms  by bringing fresh new take on web development.

Launch of React Native last year brought the power of React to native development, allowing developers to write React Components and generate genuine native interface using JavaScript. Continue reading “HyperTrack now supports React Native”

Scheduling tasks in Android made easy

Over the years, Android has introduced several scheduling APIs for jobs that need to be scheduled outside the scope of an application’s lifecycle. Most of these come along with features that improve battery life & optimise resource utilisation. The choice of one suitable API, the inflexibility of switching between them and the amount of boilerplate code required for setting up makes it difficult to use these APIs. On top of this, API changes with varying Android API versions and most of the APIs not being backward compatible makes scheduling a headache. Continue reading “Scheduling tasks in Android made easy”

Battery Efficient Real-Time GPS Tracking

One question we frequently get asked is “How real time is your tracking experience?” When we respond saying it’s near real time (~4 second latency) the follow up is “You must be collecting GPS locations very frequently, what’s the impact on battery life?” The fact is we only consume ~5% of battery per hour of tracking. So your fully charged phone can last full day of tracking without breaking a sweat. This blog is a deep dive on how we achieved close to real time tracking with minimal battery usage – two things that are perpetually in tension with each other in the smartphone tracking world. Continue reading “Battery Efficient Real-Time GPS Tracking”

Designed to be offline-first

“You can’t sacrifice partition tolerance” – is one of the more influential articles that I have read on distributed systems design. It talks about applying the CAP theorem: in any distributed system design, choosing between consistency, availability and partition tolerance is a trilemma – you can only choose two of the three.

Theoretical computer science aside, the point it makes is that any practical distributed system needs to have partition tolerance built in. Remote nodes will die, networks will be flaky, and message packets will get lost – and that is how the world is.

Continue reading “Designed to be offline-first”

How we ditched HTTP and transitioned to MQTT!

In the field of location tracking there needs to be lot of back-and-forth communication between devices and the backend. Device transmits location stream and health information (battery level, network strength, etc.). Backend processes this information, applies business logic on top and sends configuration commands back to devices in order to orchestrate tracking. These configuration commands determine when to start/stop tracking, frequency at which to collect GPS data (time and distance), frequency at which to transmit GPS data and so on.

In a world with patchy mobile networks making all this communication robust is quite a task. It is important to choose the right network protocol and design the communication semantics to get maximum benefit of the protocol’s capabilities. We recently switched a large part of our device-backend communication from HTTP to MQTT. This blog is about how we achieved it and our learning from it so far.

Continue reading “How we ditched HTTP and transitioned to MQTT!”

Solution: The HyperTrack API framework

Over the past year, we have interacted with thousands of developers from over 30 countries and as many industries. These conversations have helped us understand the use cases that compel developers to build location tracking features into their products. Turns out, they are forced to build and operate complex location tracking infrastructure to make the features work.

HyperTrack APIs have been built to enable these use cases such that developers can focus on features that are core to their business and not have to worry about the infrastructure. In the previous post, we drew a distinction between location tracking features and infrastructure, and proposed a better primitive to solve the problem. In this post, we walk through the HyperTrack API framework and how the building blocks work for your use case.

Continue reading “Solution: The HyperTrack API framework”

Problem: location/maps APIs are inadequate for developers to build location tracking features

Over the past year, we have interacted with thousands of developers from over 30 countries and as many industries. These conversations have helped us understand the use cases that compel developers to build location tracking features into their products. Turns out, they are forced to build and operate complex location tracking infrastructure to make the features work.

HyperTrack APIs have been built to enable these use cases such that developers can focus on features that are core to their business and not have to worry about the infrastructure. In this post, we draw a distinction between location tracking features and infrastructure, and propose a better primitive to solve the problem. In the next post, we walk through the HyperTrack API framework and how the building blocks work for your use case.

Continue reading “Problem: location/maps APIs are inadequate for developers to build location tracking features”