Interview with Tomas, the creator of Your Local Weather app!

As you already know, I like open source software. I also really like knowing what the weather is currently, and what it is supposed to be over the next couple of days. These two desires coincided lately in a great weather app for Android called Your Local Weather!

I particularly like the graph features in this app!

With tons of features and even some very handy widgets, I’m sure that you will enjoy Your Local Weather. Even better than finding a good app to use was finding a developer who was kind enough to participate in an interview by email! I was curious to see what drives someone to commit the time and effort into these open source projects and to hear their perspective and plans for future builds or projects.

If you were wondering as well, then I have good news for you, because below is the interview!

The Interview

Tomas, what a great Android weather app! Your Local Weather does just what
it claims, with simplicity and ease, as well as a few nifty features. With so
many weather apps already available, what helped you decide to make your own?

Yes, you are right, Weston. There are lot of weather applications
available. I used some of them, but then I found that a location is not
updated properly in widgets. For example – I was in my office for several
hours and weather widget always shows my home location. I’d tried several
applications, but the result was always the same. I didn’t want to develop my
own weather application. But, no application update location properly. I
started investigation to find where the problem is. I found an open source app
which is suitable for my investigation – the app is called Good Weater –
https://github.com/qqq3/good-weather. I started to learn how to write
application for Android. I just wanted to find the problem – not develop my
own application. It took several weeks to find where the problem is. I’ve made
a pull request and my changes had been accepted. Then, I found some bug in my
implementation, but my next changes had not been accepted for several weeks.
So I decided to clone Good Weather application and started to release it with
the new name – Your local weather.

I personally love the graph feature in the app. Did you have to include
extra libraries for those, or did you work those out by hand?

The graphs are originally created in the Good weather app. So I inherited
the way how to create the graphs. The graphs uses MPAndroidChart library
(https://github.com/PhilJay/MPAndroidChart). I just updated the version of
this library in my app and added one more graph (for pressure – the change is
done on user’s request). Now, I’ve just prepared new kind of combined graph
for widgets – so we can see this graph in widgets soon.

How long have you been programming, and what is your favorite programming
language?

My professional career as a software developer started 13 years ago. But I
made my first piece of software when I was teenager – it had been done on
computer Didagtic gama (a clone of ZX Spectrum computer). So I started from
Basic programming language, then I continued with assembler (machine code) and
the latest was Java. My favorite programming language is Java and enterprise
Java. I learned JavaScript also, but my experience with this language is not
so strong as in java.

There are a lot of Android apps out there, and not all of them are open
source, but I’m glad yours is. Why did you decide to release Your Local
Weather under an open source license?

I believe that the answer to this question is obvious from the history of
this project – the licence has been inherited with the code. I can benefit
from the fact that lot of people helped me with a translation. This is really
good. But still, I often think of the next development. I want to leave the
app free and open source. But I want to make lot of improvments and want to
offer paid access to openweathermap.com service also. And this is not possible
without the time and money. I’m still not decided how to solve this problem.

About how much time would you say you spent working on this app? Both
initial development, and now upkeep?

It seems to me that I spent every evening of the last several months coding
this app. But that’s really not the true. I’ve started about one and half
years ago. I learned a lot about android development, location services,
making a graphs, updating widgets etc. It was a lot of ways to a blind street.
Lot of testing the solution without any success. But I’m still looking forward
for the next development 🙂

How did you go about testing? Did you do all testing in house, or do you
have a team of trusted testers?

Every change is tested on my phone – when I make some change I usually
spend some time walking with the new version on my phone. When testing is
finished I release the app to the public audience. I often check the developer
board for ANRs or Exceptions to be able immediatelly make the fix. So my
approach is a short release cycle for bugs. It’s really interresting that
release which works fine on my phone causes problems on other versions of
Android or other devices. I’ve also thought about automated tests, but I
haven’t done any yet.

Do you feel that your work on Your Local Weather is complete, or do Android
updates and user interaction keep pulling you back into working on this
project?

I have a lot of feedbacks from YLW users and I have a several ideas what I
can do more – the improvements and new features. It’s not so easy to decide
what to do earlier, becuse I want to implement everything. So yes, I’m going
to enhance YLW application with a new features. I want to keep the app free
and open source as much as possible, but some features needs a lot of access
to the openweathermap.com service. So this leads me back to thinking how to
get money for the access and for the development also.

How about open source projects other than this one? Are you currently
working on anything that you would like to share?

When I started to investigate the problem with location I participated on
two more projects – UnifiedNLP (https://github.com/microg/
android_packages_apps_UnifiedNlp) and RadiocellsNLP provider (https://
github.com/openbmap/radiocells-nlp-android). Some of my changes has been
accepted, but I’m going to put all my forces on YLW application. I would like
to participate on OsmAND project also (https://github.com/osmandapp/Osmand) –
improvements regarding find of location, navigation (fixes and improvements).
But I haven’t enough time to do it.

Thanks for taking the time to answer a few questions. Before we go, do you
have any advice for someone who wants to get started in programming?

Yes, if you have some idea – write your idea to an application and release
it. You can see lot of the simliar applications, but there could be one small
point which makes you app unique.

Great advice!

Learn more about Your Local Weather

Be sure to check out the source code for YLW on GitHub! Who knows, perhaps it will inspire you to make your own app, just like Tomas did! You can also download the app from the Google Play Store, or from the F-Droid repositories. Tomas is also known as ThOsp on the Google Play Store, or as thuryn on GitHub.

Linux – keep it simple.

Using your Open Weather Map API key

If you are reading this, you are probably trying to figure out how to use your api key from openweathermap.org. If you are reading this and don’t know what that is, don’t feel bad. I didn’t either until I started my Android Developer Course. In a nutshell, when your phone app tells you the weather, it gets it from a server somewhere in a special format, called an API, which returns a JSON object. At least, that’s how I understand it.

The problem is, that server will not just tell anyone the data. All of these servers want you to have a key. Most sites offer some sort of free plan for a very limited number of calls, particularly for developers or for personal use. This requires an account. So I got one at openweathermap, and then was given a key.

One of the principle things you need to get the api data from a provider is an api key. This is where I was having big trouble. After registering and getting the key, I then went to the guide on how to use it. It is located here if you are interested, but it didn’t work.

http://openweathermap.org/appid#get

In the guide it told me to use this call method:

http://api.openweathermap.org/data/2.5/forecast/city?id=524901&APPID=1111111111

Except with my key after APPID=, instead of the 111111111’s. The problem was, it would return this error when I made the call:

{“cod”:401, “message”: “Invalid API key. Please see http://openweathermap.org/faq#error401 for more info.”}

or sometimes this one:

“This site can’t be reached

api.openweathermap.org refused to connect.”

I was getting a little bit frustrated. I reread the documentation, and I still got bad results. I waited until the next day to make sure my calls per day were reset. Still no luck. I googled, I searched, and eventually, I got to this thread:

https://github.com/cmfcmf/OpenWeatherMap-PHP-Api/issues/46

Where I learned two really important things that made it all work:

#1. Don’t use https:// in the call, use http:// instead.

#2. Instead of APPID in the call, use appid (lowercase) in the call to get the results.

Once I did these two things, it immediately started working for me. So if you are having trouble, you should give that a try. Hopefully this will save you hours of frustration.

Linux – keep it simple.