Writing Good Unit Tests: A Step By Step Tutorial

A tutorial to help you write comprehensive unit test suites.

Let’s imagine we just wrote a method calculating distance between two points on our planet. And let’s imagine we want to test it as well as possible. How do we come up with test cases? And what exactly do we need to test?

Bonus: learn a surprising fact about the Fiji islands. 🇫🇯

Continue reading “Writing Good Unit Tests: A Step By Step Tutorial”

Little Geo Stories: Square Miles

How I sensed a bug while not seeing any, and what came of it.

Dear reader,

Today I found a place on our website where we display the size of a recreational area in square kilometers.

199 km²

I cannot fully explain what happened next, but I had a hunch something must be wrong with this feature.

Narrator: there was.

Continue reading “Little Geo Stories: Square Miles”

Little Geo Stories: A Tale Of 180th Meridian

A little story about a very common mistake when working with Earth coordinates around 180th meridiane.

Several days ago, I got a bug request: no airports around a certain hotel were being displayed.

There certainly were some airports relatively close to the hotel, and judging by all conditions they should have been there. This hotel’s page could boast with very good air connections, but it did not.

Like a proper seasoned Geo-expert should do in this case, first thing I did – was checking the location of the hotel.

Of course, it was located on Fiji.

The problem immediately became absolutely clear to me.

Continue reading “Little Geo Stories: A Tale Of 180th Meridian”

How we checked road graph correctness

How to make the roads better?
What about roads on a map?
Read to learn what graph (and non-graph) algorithms we implemented to make the roads good.

One particularly nasty and cold day, in the middle of February, our users, cartographers, came to visit us, developers. And they looked worried.

We offered them hot tea and chocolate candy. By gentle nudging and careful questioning we managed to understand what was bothering them.

They wanted the roads to be good.

Continue reading “How we checked road graph correctness”

Geo Information System: Map Navigation

Bad-ass development of scalable systems with lots of user requirements, tight schedules and limited resources? Ask me how!

This is the series of articles about building a professional enterprise Geo Information System. Here I’m going to tell you how we dealt with the most intensive and visible part – the map navigation.

I’m continuing the series of articles about developing a Geo Information System for 2GIS company.

In the first part of the series I described the user requirements for the Geo Information System we were developing, and in the next part – an overview of the architecture. Here I’m describing in more details how we dealt with map navigation.

Continue reading “Geo Information System: Map Navigation”

Geo Information System: Architecture

Bad-ass development of scalable systems with lots of user requirements, tight schedules and limited resources? Ask me how!

This article is about our GIS-system architecture. Read on to learn how we dealt with all requirements!

I’m continuing the series of articles about developing a Geo Information System for 2GIS company.

In the first article I described the requirements we gathered. Now it’s time to talk about the implementation.

Continue reading “Geo Information System: Architecture”

Geo Information System: Requirements

Bad-ass development of scalable systems with lots of user requirements, tight schedules and limited resources? Ask me how!

This is the first article in series about building a Geo Information System. Here I’m going to tell you about user requirements we gathered before we rushed into development.

I’m starting a series of articles about building a geographic information system, or GIS-system. With a great team of smart and very dedicated developers, we created a robust scalable solution that our users were happy with. Or, almost happy. You can never make users completely happy. Sigh.

Continue reading “Geo Information System: Requirements”