Android devices have longer lifespans than they used to. As the cost of new flagship devices has creeped over $1000 and cellular carriers in the U.S. stopped subsidizing device costs, users are keeping their Android devices longer than before. Devices also get passed down and re-sold from one user to another.

Most hardware on Android devices remains perfectly usable for a number of years. However, an event in mid 2019 caught some users of older Android devices by surprise when their Global Positioning System (GPS) technology suddenly stopped working.

GPS week rollover

To keep time, the U.S. Global Positioning System (GPS) uses a 10-bit code to represent the number of weeks since January 5, 1980. Because the maximum value of a 10-bit number in binary is 1111111111, or 1024 in base-10, every 1024 weeks (or 19.7 years) this number resets, or “rolls over,” to 0000000000 and starts counting up again. …

As software engineers, nothing bothers us more than duplicating code within a project. For every line of duplicate code, it potentially doubles the effort required for each bug fix, refactor, and enhancement later in the life of the project. You may have heard of the DRY principle — “don’t repeat yourself” — that most engineers try to follow.

Image for post
Image for post
Spiderman identifying a *cough* duplicate bug

Duplicating code for nearly identical SDKs

It’s frustrating to encounter situations where code must be slightly different due to dependencies. The first place I encountered this was the Amazon Maps API. …

Image for post
Image for post

You’re rushing out the door, hoping you didn’t miss the 8am Route 5 to work.

Should you sprint to your stop? To find out, you ask OneBusAway for help, frantically yelling:

“Alexa, where’s my bus?”

Alexa responds with times for bunch of routes — but not Route 5. Argh 😠!! Your roommate has struck again. They changed the default stop for a night out on the town, and forgot to change it back.

Fear not, brave transit riders — this problem is soon to be one of the past!

Personalized profiles

The OneBusAway skill for Alexa now supports personalized voice profiles! Now, each user in your household can save their own stops and route filters, and when you…

I’ve been interested in location services for mobile devices ever since I owned my first phone. I wrote my first location-aware apps on the HP iPAQ H555 (with an external Navman GPS antenna) and the Motorola i860, the first device to support the standardized Java Location API.

Image for post
Image for post
The HP iPAQ H5555 with Navman GPS 3450 antenna and the Motorola i860 (Source: USF and Wikipedia)

There have been many changes in the industry since these devices, but one consistent limitation of building apps for consumer-level phones has been the computation of location information in a “black box”. In other words, a mobile app can read the location calculated by the underlying hardware via an Application Programming Interface (API) but it cannot read any of the raw data (e.g., …

How accurate is your location?

There are a lot of factors that go into choosing a new mobile phone. Typically, location accuracy isn’t the first thing that comes to mind. However, the accuracy of your device’s Global Navigation Satellite System (GNSS) receiver can have a huge impact on your mobile experience. Anyone who has tried to use real-time walking navigation or to find your Uber or Lyft ride in an urban environment can appreciate this as they’ve spun in circles chasing the blue dot on the map.

Image for post
Image for post
Remember the Simpsons episode where Homer can’t find his Uber because of poor GNSS accuracy?

Let’s say you want to buy a phone that will give you a great location experience — how would you know which to pick? It’s not like device reviews typically discuss GNSS. And if they do, it’s usually a quote of the manufacturer specs, which looks…

In early 2018 I wrote an article introducing the state of dual-frequency Global Navigation Satellite Systems (GNSS) support on Android:

I expected it to be relatively short-lived — but then things got complicated 🤔. Multiple devices have launched with bugs preventing carrier frequency information from showing up in the GPSTest app, and other devices have launched with L5-capable hardware but for some reason the device as a whole doesn’t include dual-frequency support (i.e., L5 doesn’t show up in GPSTest).

As a result, as of June 2019 we have yet to see a dual-frequency GNSS Android device launch in the U.S. The Qualcomm Snapdragon 855 chipset seemed like it would solve this problem, but for some reason all SD855 U.S. flagships don’t show L5 signals. Why? Great question. …

An open-source tool to help improve the quality of real-time transit data

Real-time transit information has been shown to have many benefits to transit riders, including shorter perceived wait time¹, shorter actual wait time¹, a lowered learning curve for new riders², and increased feeling of safety (e.g., at night)³ ⁴. Transit agencies who have deployed real-time information have also benefited from increased ridership⁵ ⁶, as well as a better perception of the agency and it’s transit service, even if it’s service hasn’t actually changed⁷.

The General Transit Feed Specification (GTFS) format⁸, which has become the dominant format for open schedule data in the transit industry and shared by over 1,500 agencies worldwide⁹, has enabled many applications to show transit schedule information. In the last few years, a real-time counterpart to GTFS, GTFS-realtime (GTFS-rt), has begun to emerge, with agencies sharing their real-time predictions, vehicle locations, and service alerts in this format. Previously, real-time transit information had only been shared in proprietary formats specific to each vendor or agency. …

Apparently, everywhere but the United States.

As the developer behind GPSTest, a popular open-source Global Navigation Satellite System (GNSS) testing app for Android, it’s been incredible to see the advances in both device and satellite technology over the last five years.

It’s also been exciting to hear directly from users as they experience these innovations first-hand. Many updates to the app have been driven by feature requests from these users. I added support for GLONASS, the Russian GNSS, in early 2014 based on user feedback. Support for the Japanese Quasi-Zenith Satellite System (QZSS) and Chinese Beidou GNSS came in October 2014 following user reports of seeing QZSS and Beidou satellites in Asia. Similarly, users reported seeing Galileo satellites from the European Union (EU) GNSS in late 2016. Support for satellite-based augmentations systems (SBAS) such as GPS Aided GEO Augmented Navigation (GAGAN) from India and the U.S. Wide Area Augmentation System (WAAS) and European Geostationary Navigation Overlay Service (EGNOS) came next in 2017. More recently, I rolled out support for dual-frequency GNSS (e.g., …

L1+L5 support for GPS is here! …or is it?

It’s an exciting time for Global Navigation Satellite Systems (GNSS) on Android. Android Nougat 7.0 brought official support for multiple GNSS constellations beyond U.S. GPS (including GLONASS, QZSS, BeiDou, and Galileo), as well as the ability to collect and process raw pseudorange measurements and navigation messages within an Android app. Android P is providing developer options for testing real-time kinematic (RTK), or carrier-phase measurements, for the first time using embedded GNSS. Galileo, the European Union GNSS, is now operational with 22 satellites in Initial Services and nearing completion, and is already supported by a number of mobile devices. Other embedded device sensors are being fused with GNSS measurements for better location info (e.g., …

Image for post
Image for post

It’s exciting to see the OneBusAway Open Source Project continue to grow so quickly. Started as a Ph.D. dissertation topic by graduate students at the University of Washington in 2008, OneBusAway has exploded to serving eight different metropolitan areas in eight different states (and three countries), which covers 21 agencies that provide transit service. Over 340,000 travelers have used the OneBusAway iOS and Android apps in the last 30 days, with over 1 million unique users since the app first launched! OneBusAway is also a magnet for people passionate about transit that have software engineering skills, resulting in open-source native OneBusAway apps for iOS, Android, Amazon Alexa, Pebble smartwatch, Google Glass, and Amazon Fire Phone that are all primarily maintained by volunteers. Transit agencies see OneBusAway as a common open-source platform they can invest in to avoid the steep cost of re-inventing the wheel for their city. …


Sean Barbeau

Improving the world, one byte at a time. @sjbarbeau,, I work @CUTRUSF. Posts are my own.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store