The war continues. russia has not stopped. Our cities are still being bombed, and our people are still being killed. Nothing about that has changed and neither has my position.
However, I have decided to re-launch my plugins repository. I have realized that by keeping my work hidden I am allowing the aggressor to claim a small victory over my professional life and my contributions. My plugins were built to help people solve problems and work more effectively. And I want them to serve that purpose again.
This is not a return to “business as usual”.
If you are a russian, belarusian or iranian citizen or resident; if you believe this is merely “putin’s war”; if you do not recognize russia as an aggressor and occupier; if you refuse to condemn this aggression against a sovereign state; if you accept the false narratives of russian propaganda: my work is not for you.
By using any of my plugins or their source code for any purpose and in any form, you accept and uphold the following:
You acknowledge the absolute sovereignty and territorial integrity of Ukraine within its internationally recognized borders.
You condemn the russian unprovoked act of aggression and the systematic war crimes being committed on Ukrainian territory.
You reject the false narratives and dehumanizing disinformation produced by russian state propaganda.
You recognize the actions of russia as a campaign of genocide against the Ukrainian people.
You acknowledge the collective responsibility of those supporting, enabling, or remaining silent during this aggression.
You support the demand for a special international tribunal to hold all perpetrators and their enablers accountable.
You demand the immediate return of all Ukrainian citizens, including the thousands of children forcibly deported to russia.
You will seek alternatives to products developed by russian entities, recognizing that their revenue contributes to funding the ongoing genocide and that continued use normalizes russia’s actions.
To make this more prominent and explicit, the plugins will display a one-time reminder about these terms upon launch and after updates. My code will not be a silent partner to those who fund or ignore the war in my country.
I choose to keep my work alive. Not for the benefit of the aggressors, but for the global community that stands with us.
I haven’t done this kind of summary post for a while, and I think it’s a good time to start doing them again.
This year has not been an easy one. It was full of hardships, losses, dramatic changes, and dashed hopes. All these things were draining almost all my attention and energy, leaving me nearly without any possibility to work on something I would like to, despite my efforts to return to normal.
While I was not able to work on QGIS as much as I would like, I still managed to contribute some bugfixes and new features, namely:
a small feature allowing you to duplicate the composer grid in one click (Giovanni indeed had an itch, as one blogger wrote, and he mentioned it a couple of times. But the truth is that he never asked nor hired me to do something. It was entirely my own initiative to implement this functionality and a few other fixes/improvements as a gift for a good friend)Duplicate Composer Grid functionality in QGIS Composer
added support for overriding widget wrappers in Processing (something that bugged me a lot as I used to use Processing extensively)
implemented a native widget wrapper for GDAL raster creation options and updated most of the core raster algorithms to support raster creation options out of the box (another item from my long TODO)
added support for marking Processing algorithms as favorite algorithms for easier discoverabilityFavorite algorithms in QGIS Processing Toolbox
fixed a bug in the QGIS Browser metadata search functionality that made it unusable in some cases and added a couple of smallUX improvements
a small feature allowing you to duplicate any connection in the QGIS BrowserDuplicate Connection functionality in QGIS Browser
added a setof tools to Processing to deal with layer metadata (extract layer metadata to a QMD file, populate layer metadata from a QMD file, copy metadata from one layer to another, combine layer metadata with the metadata of another layer, set and clear some basic metadata fields such as Title, Abstract, Identifier, etc., add new history entries to a corresponding metadata field)
ported Basic Statistics Processing algorithm to C++ and added a small improvement along the way
another small feature to allow creation of empty GeoPackages from the QGIS Browser
For some people, this list may look big, but it is actually not. Of course, I’m happy that I was able to do all this, as it is better than nothing. Still, it is far behind my previous level of involvement in the project.
I also published one QGIS plugin — OpenLitterMap — to download data from the eponymous project. Nothing special, just a small Processing provider with a single algorithm for now. The plugin is a bit limited as the parent project lacks a proper API, but I will try to keep an eye on it and update and improve the plugin when the new version with the API is released.
There were a couple of other specialized plugins I developed for clients. One integrates a landslide modeling tool, utilizing the Smoothed Particle Hydrodynamics (SPH) approach, into QGIS and the other implements a set of validation rules for fiber optic networks. Since both plugins are not of interest to most users, I decided not to write about them in detail here. Maybe one day I will write a separate post about the challenges and problems I faced while working on these projects.
Unfortunately, my own plugins and projects had almost zero activity, and I really need to do something about that.
As for the rest of my life, it’s too early to draw any conclusions, as I’m still in the process of understanding things and adapting to the new situation. There are still a lot of issues to resolve and things to handle, from work-related problems to personal life.
I hope that the next year will be more active and positive, with new projects and professional challenges, events and travels, new connections and experiences.
I haven’t posted anything for ages (the last year’s post does not count). Partially because of preoccupation and partially because I kind of lost motivation. Quite a lot has happened since my last post, and all of these things have affected both my life and my desire/ability to write something in one or another way. Disturbances at work, pandemics, changes in personal life and, finally, last year, war came to the doorstep of my home, ruining everything.
A few weeks ago, I tried to gather myself and finally get my hands dirty in an attempt to make this site look the way I wanted it. Refreshing HTML/CSS skills took some time, so did digging through the Hugo documentation, as well as trials and errors. It turned out that Hugo is indeed a great tool: powerful, flexible and at the same time relatively easy to deal with. There is a learning curve, but it is not as steep as it looks at first sight. It was fun, and I do not regret a single second spent on it.
And here we go. While not perfect and probably not optimal here and there, the site is good enough, and I’m quite happy with the result. Still need to migrate old posts, though, and maybe make the whole site multilingual.
Let’s hope that now I will return to more or less regular writing.
In the early morning of February 24, 2022, russia launched a treacherous, full-scale invasion of Ukraine, mirroring the atrocities of Nazi Germany during the Second World War. And we fight back. We fight for our lives, our families, our land, and our right to exist against one of the largest armies in the world.
I have decided to shut down my QGIS plugin repository. I will not allow my professional contributions and expertise to benefit an aggressor state or its people: those who remain silent, do nothing, openly endorse this war, or refuse to accept their responsibility, while our women and children are murdered and our cities are destroyed.
To those who have remained silent while witnessing these crimes and chose to maintain “business as usual”: your silence is a position. My repository will remain offline until the war ends, our lands are liberated, and those responsible for these war crimes are held accountable.
As the year is reaching its end, it is time to look back and remember what happened and how it affected my life.
Firstly, this year will be remembered for changes in professional life. After working on relatively small projects, I moved to work for a large company. I have never had to complain about a lack of interesting and challenging tasks, but now I’m working on the cutting-edge of geospatial technology and directly involved in the development of solutions that make GIS easier to use and accessible, simplify field data collection and processing huge amounts of data, and allow building a geospatial infrastructure either purely with open source components or by using a mix of proprietary and open source solutions.
I continue working on open-source projects, primarily QGIS. I actively contribute to Processing, update my own plugins, and continue with localisation and translation of documentation. Also, I have fixed a few bugs in GeoGig that prevented its usage with cyrillic and other character sets other than Latin1. Unfortunately, I did not have enough time and inspiration to complete another book, lets hope next year will be more productive in this regard.
The year was also packed with conferences and developer meetings. Ukrainian and international, small and big. Kharkiv, Girona, Bonn… Although sometimes (for example, at FOSS4G) I was a bit scared, I anyway made presentations and/or ran workshops.
I was also in Lviv for the first time. The one-week vacation flew by like a flash. Lots of interesting architectural sights, museums, the Giselle ballet, delicious coffee, and cozy evenings. I will definitely have to go there again.
I want to wish everyone and myself that the next year will be even more eventful, active, and diverse.
Next week I will be in Bonn (Germany) for FOSS4G 2016. This will be my first trip to a conference of that scale.
Together with Victor Olaya we will run a workshop on Processing. And as the QGIS project decided to hold another hackfest in parallel with the conference, I will also work on QGIS improvements and bugfixes.
The second (and first for me) QGIS User Conference is over. More than 150 participants, 9 workshops in three parallel sessions, 18 presentations from people all over the world: two incredibly busy days flew really fast.
Workshops from QGIS core developers and the most experienced community members were interesting and useful for both beginners and those who have been using QGIS for a long time. Personally, I managed to attend four workshops:
From data model to QGIS project — Matthias Kuhn and Andreas Neumann were showing how to prepare data and setup QGIS to comfortably use datasets containing lots of interdependent tables with and without spatial information.
QGIS Cartography Tips and Tricks — Alexandre Neto demonstrated QGIS capabilities to create beautiful printed maps. The workshop was dedicated not only to the use of Print Composer and Atlas functionality but also highlighted powerful QGIS features for layer styling, labeling, using map themes, and multiple styles for a single layer.
Advanced Processing — actually, I attended this workshop not as an ordinary participant, but as a second mentor. Together with Victor Olaya we showed some “secret” features of Processing that could take analysis productivity to the next level.
Your first steps in Python with QGIS — led by Martin Dobias and targeted at beginners who want to automate their work by developing scripts and plugins. I attended this workshop to see how others talk about PyQGIS and maybe borrow some ideas for my own workshops.
18 presentations on a wide range of topics once again confirmed that QGIS turned from a “pet project” into a full-fledged competitor of such well-known products as ArcMap and MapInfo a long time ago. It was very interesting to listen to reports on the migration of government agencies to QGIS as well as on using QGIS in conservation and educational institutions. Presentations about new QGIS features, plugins, and other related developments, such as QGIS Server clients, were also captivating.
Many thanks to the organizers for their hospitality and impeccable organization of the conference.
Actually, I’m on a train right now, and this post should be published automatically.
I am going to take part in the 2nd QGIS User Conference and QGIS hackfest. The conference should be really interesting. Even though this is only the second event, the conference program is extremely rich. There are presentations demonstraing how QGIS is used in real-world applications in different areas, workshops from QGIS core developers and advanced users, an overview of new features, etc. It is quite difficult to decide where to go and whom to listen to; almost all talks and workshops are intriguing.
Today PacktPublishing released another book about QGIS, which contains quite a lot of my work. The book is available in both printed and electronic forms.
QGIS 2 Cookbook
As the title suggests, QGIS 2 Cookbook provides a set of carefully selected and detailed recipes for using QGIS to solve different GIS tasks: from the basic ones (such as loading spatial data from various sources) to the advanced ones (working with vector topology, developing own plugins).
Many thanks to my co-authors: Alex Mandel, Anita Graser and Victor Olaya. It was a real pleasure to work with them, and being a part of a large team of authors was a very useful experience.