Exposing a far too frequent and erroneous geospatial algorithm

My Initial Presentation

I presented what I coined the Legend of The Buffer last GIS Day at my alma mater, Sherbrooke University. You can find my presentation on youtube. I removed all algorithmic complexities with a straight-to-the-point article outlining my main ideas.

The main takeaway:

Just don’t use a buffer. The most efficient way to make an algorithm inefficient is to use the wrong data structure. A buffer is almost never the right tool for the job.

Let’s start unraveling the consequences of some common misconceptions of using a buffer.

What is a buffer?

A buffer is most…


Applications of the Adapter Design Pattern in Geospatial

An Adapter

Why are design patterns used?

The use of design patterns is to apply the design of common solutions to similar problems. They are not precise implementations of code but a template for the context of a given problem.

Avoiding repetition is not enough to explain why design patterns exist. The design patterns have the intent of reinforcing clear principles. Our interest is embedding those principles in our architecture.

To quote Uncle Bob, the goal is minimizing the effort to build and maintain our systems. We use design patterns with this goal in mind. …

Exploring the design of a focused geospatial library

I have been developing an introduction to geospatial data structures and algorithms. The main roadblock I was facing was building a minimalist library to assist with the introduction. I wanted the introduction to be hyper-focused on learning the principles of geospatial computation, foregoing any complexities of data formats and map projections. Though important, they are not necessary to learn the principles of data structures or algorithms.

I also failed to find any course built solely for educational purposes. Tutorials cover using specific and awesome tools… for production. I needed a minimalist library…

A Detour in Computational Complexity


I recently faced a small but interesting problem during a relatively high-pressure situation. Without going into the details, it was in my best interest to efficiently solve the problem. I came out of the situation realizing that the most effective solution was staring me right in the face. However, I still was not convinced that my proposed solution was very far from the optimal one.

I decided to revisit the problem and compare my proposed solution with the optimal one. …

I might still be tempted to launch up my Python development environment for more data science tasks, but Go has really been creeping on to me for everything else.

Quick summary of what I love about Go:

  • Features to enforce standards keeping your code clean as it scales,
  • built-in auto formatter,
  • compile errors thrown for dead code,
  • simple package structure,
  • coherent type system (yes, even with value types and references gotchas),
  • clean syntax making it feel like an interpreted language,
  • errors as values,
  • Built-in testing and benchmarking frameworks
  • Built-in concurrency primitives
  • Simple and modern flow statements (defer, panic and recover)

Zachary Déziel

Geospatial Software Developer. @geosimple1

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