Category: getting started

Interview with Drew Bollinger from developmentSEED on Machine Learning.


Artificial Intelligence (AI) and Machine Learning(ML) are one of those buzzwords that became really popular in recent years. How much hype vs. substance is behind them? Are they practical? How can you use them to solve your specific GIS problems?

Those were just a few questions that had in mind and wanted to answer.

Fortunately, I found devlopmentSEED which specialise in using Machine Learning to solve important problems and ask them to help me out.

I had privilege to talk to Drew who works there and he was eager to answer all of my questions:)
If you’re interested in AI/ML and especially how you can use it in your GIS work, this interview is a great way to start!

00:00   Short intro: what’s this interview is all about?
00:53   How Developmentseed makes Machine Learning more accessible for everyone?
02:06   What’s Machine Learning anyway and how it relates to Artificial Intelligence and GIS?
03:50   How much data do you need to make Machine Learning practical?
05:29   What we can do with Machine Learning that we can’t actually do without it? Drew tells a story about how ML helped        mappers with mapping Energy infrastructure in developing countries.
09:32  Why IA makes more sense that AI right now?
10:20   What’s Developmentseed’s Skynet? (and why you don’t need to fear the evil AI)
11:47   Should GIS Professional learn Machie Learning?
13:35   What would be the very first step for GIS Professionals to start learning Machine Learning?
16:04   What’s LabelMaker and why should you try it?
18:53   When will Machine Learning be integrated into popular GIS desktop software?
20:18   Any ML use cases not based on OSM?
22:05   What’s the main chellange in “training” your own ML algorithms and how to overcome them?
25:21   Question to you dear GIS Professional: How do you think ML would help you with your GIS workflow?

You can also listen to the interview on youtube:

Additional resources:
developmentSEED projects:
Machine Learning resources:

Question of the day: How do you think Machine Learning would help you with your GIS workflow?

Leave me a comment below, thank you!


Programming jargon crusher: grouped values.


In the last post I’ve told you
everything you need to know about
values and variables.

And I hope you’ve enjoyed it!

Those two concepts are really a fundamental
parts of programming.

Now, let’s move to learning about grouping values.

So, a lot of times in programming there a lot of single
values relate to each other.

The perfect example is latitude and longitude values.

They often are used together ,so it’s logical that we will
group them together.

The most basic way to do that is to use an array.

Array is just a list of single values grouped together in sequence.

Let’s see some examples:

If you look at code examples from our last class (it’s class no.2):
And specifically example from map_app7.html line 17 you will see something like that:
mymap.setView([51.505, -0.09], 12);

And here’s the bit we’re most interested in:

[51.505, -0.09]

This is our array of latitude and longitude.

Easy, right?

Another way to group values is to create an object also called a dictionary.

When you look at line 26 of our example you will see something like that:
var osm = new L.TileLayer(osmUrl, {minZoom: 8, maxZoom: 13, attribution: osmAttrib});

You can identify the object by curly brackets:
{minZoom: 8, maxZoom: 13, attribution: osmAttrib}

So, this kind of grouping is a little bit different since we’re grouping
values using keys. Here we don’t care about the order of values. As long
as you define your keys and corresponding values to those keys you’re golden:)

Let’s break it down:
Our keys are: minZoom, maxZoom, attribution
Our values are: 8, 13, osmAttrib

An object is just like an index at the back of a book. You have words or phrases
as keys and page numbers as values.

When you should use an array and when an object?

Well, a lot of times an APIs like Leaflet’s API that we’re using in our example will tell you what to
use when.

In our first example Leaflet’s setView requires you to use an array as first argument. If you use an
object you will get an error.

Same goes for L.TileLayer in our second example, the second argument has to be an object with
specific keys. Otherwise you won’t be able to create a raster layer.

Ok, so let’s recap:

There are two most popular way to group single values in programming.

Using an array or an object.

And array is an ordered  list of single values.

An object is an unordered dictionary of keys and values.

Different parts of an API will require you to use arrays or object in different situations.

That’s it!

If you have any questions about what we’ve covered so far leave me a comment down below:)

In the next part, we will talk about functions, methods and objects (yes, I know we’ve already
covered objects,but next we will talk about more complex objects).

Stay tuned:)


Programming jargon crusher – Variables and Values.


In the previous post I’ve told you how
lack of jargon understanding can hold us
all back from learning new things.

Here I would like to explain and clarity for you
those few fundamental programming
concepts that you will be using all the time when you’re
working on your own programming project.

Ok, so let’s get moving:)

Let’s starts with a value.

What’s a value in programming?

It’s simply some kind of data.

If you think about what’s in the core of every web mapping applications it all boils down to showing
spatial data on a map.

And guess what – a map is a data too:)

So, in programming we have a few fundamental data types that we’re working with.

In web mapping applications the main piece of data are coordinates.

Latitude and longitude are pretty much everywhere.

So, our first data type we work with when programming is a number.

In programming you can use numbers directly, so every time you put a number like 2.22
into your code it will mean exactly that.

In a web mapping application we usually have a lot of text associated with latitude and longitude.

To use a text when programming you need to specifically put it into apostrophes. This for one simple
reason, source code is text too, so a text that you will be using in your application has to be somehow
distinguished from a source code.

So, those two types of values are by far the most commonly used in web mapping applications.

Since programming is all about working with data you also have to have some way to store it.

This is where variables come in.

A variable is a container that store values. When you create a variable you will also name it. Then
every time you use this variable’s name in your code it’s just like you would use its value.

You can change a value of a variable any time you want, you just assign different value to it.

Ok, so let’s recap what you’ve learned:
The two most fundamental values we’re working with in web mapping application are
numbers and text.

In programming, we use numbers directly. Every time you use a number a programming language
sees it as a number.

Text is different. You need to put a text into apostrophes.

A variable is just a way to store numbers and text. A variable has a unique name.
You can use variables just as you would use values.

Ok, that’s it for now:)

Next, I will tell you all about working with more that one value at the time.

I hope that was simple enough!

Feel free to leave me a comment and let me know what you think:)


Why learn programming jargon?


Have you ever read, listen or watch someone
talking about programming and after a few
seconds realise that you’re far,far away,
thinking about totally different things?

It’s almost like our minds shut down when
we hear something we don’t quite understand.

It’s funny because, I do programming for a really
long time and there are still times when my mind
do this from time to time.

It’s because there are always those niches within
every field where experts develop their own lingo
and when you’re not inside their world, it like listening
to an alien species talking in their own language.

Years ago, I went to a Python  conference in Wilnius.

And one of the hot topics back then was a Python version
written in Python itself.

So, I decided to go to one of the lectures to educate myself
on the subject.

After about 10 minutes, I almost fell asleep.

What happened?

Well, right from the beginning, speakers delved deeply into technical details
of their project.

It was full of jargon I didn’t understand, so I wasn’t able to actually
grasp most of the concepts presented there.

I’m sure it sounds familiar.

It happens to all of us, because we’re simply not experts in everything.

Even if what you’re learning something that is not complicated in itself, when you don’t know
the terminology, your mind will assume that this subject matter is indeed very difficult to learn.

Programming is a great example.

There’s nothing special about doing programming.

It’s similar to learning how to use a complex piece of software.

But, there’s this intimidation that every beginner feels.

Some time ago when I was preparing my web mapping course, I had to
refresh my memory on some parts of Javascript syntax.

So, I’ve opened a kindle version of one of Javascript books that I like
and started to go trough one of the chapters.

Then, it hit me.

It sounded so complicated!

I haven’t heard this precise terminology or use it for a really long time.

It became obvious to me why beginners think that programming is complicated.

It’s because it sounds complicated and hard;)

I’ve recently got an idea to explain programming terminology/concepts
only using spatial and GIS terms.

That way you can grasp programming essentials in no time and spend more
time building stuff:)

I don’t know if it’s possible or how far can I actually stretch this,but in the next
post I will explain most import programming concepts in a language that you
can easily understand!


How to find your unique path to learning programming?


I believe that pretty much everyone can learn programming. Unfortunately a lot of people get discouraged when their first experiences with learning programming is negative.

This is how I started doing programming years ago. And probably by accident I didn’t give up. Instead I found my own way of learning programming.

So, if you feel that programming is not for you, it’s more likely that the method that you’re using is not for, not programming itself.

In this video I share with you the story of how did I start with programming, discovered my own path to learning programming and how you can do the same.


How You Can Choose The Best Programming Language For Web Development


In this video I do my best to help you out with making this important choice by giving you a really practical and down to earth “rule” to choose what will be best for you.

If you consider learning web development,but stuck and can’t move forward this video will be perfect for you.

Put your questions and comments down below this video and don’t forget to subscribe to this channel or sign up for email
updates in the form on the right side of this page!