by John Moore

Developing a Weather App

You can't do anything about the weather, but at least there's a bevy of apps that describe current conditions and offer forecasts

Radiantlabs' Living Earth HD app, however, goes beyond straight-up temperature and precipitation reports. Users can see local weather coverage, but they also can get a sense of broader weather patterns. For example, the app shows cloud formations across the globe, and its vivid heat maps also show temperature, wind speed and humidity trends worldwide.

We spoke to Moshen Chan, owner of Radiantlabs and sole developer of Living Earth HD, about the making of his weather app.

Where did you get the inspiration for Living Earth HD?

Moshen Chan:

I've always been passionate about astronomy and weather and wanted to build an app that provided a better interface to weather and time data as well as provide better context for that information. This was my first project for iOS and I also became really passionate about creating the best-looking simulation of Earth using the limited 3D hardware capabilities of mobile devices.

Living Earth HD must rely a lot on data from various weather services. Is that data mostly open and readily available via APIs?


The app talks to its own custom API running on my weather and data servers. I integrate the data with various weather services on my server. The data isn't necessarily open; licenses are obtained for commercial use and there's processing and integration happening on my own servers so it can get delivered to the app.

The data visualizations and simulations are quite stunning. Do you feel that's the main differentiator between your app and other weather apps?


The visualizations and simulations puts the world time and weather data into perspective. You're able to see exactly why a location will be cloudy or rainy for the next week by seeing the real global cloud cover over areas of the world. You're also able to visualize heat waves, changing sunset/sunrise times as the year progresses, and hurricanes and typhoons around the world. I feel the app is different from other weather apps because it doesn't just provide the weather data or city time for a particular location; it's also able to visually frame that information in a relevant global context.

Did you use any particular development environment to create Living Earth HD?


The development environment was mostly XCode and Photoshop. The 3D engine is written in C++, OpenGL ES 2.0 and GLSL Shading language. Everything else in the app is written in Objective-C. The weather and data server that handles all the requests from the app is written using Node.js as a server framework. Python is used on the server to update and do image processing on the live weather maps. All of this is running on Linux servers.

In developing the app, did you come away with any lessons that you plan to apply to future projects?


Start with a small and simple idea, then execute it as well as possible. By keeping the scope of the project small, it keeps motivation high and gives you the focus to polish each feature. This is important because everything always takes much longer than you think and it's easy to get lost in the amount of work involved and never end up shipping anything.

Once the project ships, take advantage of user feedback and iterate on the polish and details. The easily visible and accessible Feedback button in Living Earth HD gave a very low friction means of getting feedback from users, which was important in making the app better with each update. Only add new features if there's high demand and if you can deliver a fully polished experience.

The first few versions of the app didn't have as many features as the current version, but users still loved it because what was there was very polished, never crashed, and worked well. I felt this was key in attracting and keeping users. Once they use an app frequently, they'll spread the word and tell








Programming & Software Development: "Developing a Weather App"

Article: Copyright © All rights reserved