Posts covering a wide range of subjects, most of which are related to day-to-day computing and productivity: you'll find here documentation, guides and ideas.
This is an exhaustive list of the 140 posts in this website, discussing Projects, Publishing, Computing, Configuration, Graphics, Development and Operations, Science and Technology, Filesystems, Productivity, Fun, Games, Music, Films. You may find them grouped by year too.
20 May 2015
A history of monitoring developments, tools and ideas, embracing the CERN Batch Service use case, challenging for the large scale of the cluster and user base.
29 Jul 2007
AIS Monitor, Business Activity Monitoring for the many administrative information services run at CERN, with means to correlate statuses from dependencies.
Remotely Executing Processes from Files
21 Sep 2018
A rather absurd approach I implemented to remotely, non-interactively control a computer with a file-based interface. Absurd, yes, but it does work wonders.
14 Sep 2010
AFS Console, a monitoring system for AFS which reports the health status of the service and statistics, from global summary views to more detailed reports.
A Filesystem-Based Address Book
15 Jun 2018
I had the project of writing an address book program. Rather than storing the data in a database or even in a single file, I left it all to the filesystem.
Spell Checking in Vim and working with Languages
17 Jul 2010
Vim is ready to handle any language – and I do mean any. It comes with a sensational spell checker. It's also great at writing any character from any alphabet.
Controlling Line Breaks with LaTeX
23 Dec 2009
This post is but a small overview of how you can control – ward off, really – undesirable line breaks which may be either caused by spaces or hyphens.
Effective Ways to Compile LaTeX Files
18 Oct 2017
As I was hurriedly typing a live report of the HEPiX Fall 2017 workshop, I reflected upon the different ways to compile LaTeX documents as you go along.
Drawing a Biologist's Looping Arrow with TikZ
11 Nov 2009
These arrows label something on a diagram and they make a loop to avoid being mistaken for e.g. a vector. TikZ offers the coil decoration which is used here.
Ways to Having Text Wrap Pictures with LaTeX
14 Oct 2004
While it is more common to use floats with LaTeX, it is possible to place a picture – or anything else, in fact – next to text that will elegantly wrap it up.
Writing LaTeX Classes
24 Sep 2009
LaTeX may look like dark magic. LaTeX classes even more so. In fact, it's straightforward and becomes instrumental when you write several similar documents.
Principles Around Writing Beamer Themes
1 Mar 2015
Using Beamer for making slides is comfortable if you stick to the many themes it comes with. Things become trickier if you want to write themes of your own.
The Jungle of LaTeX Math Packages
17 Jul 2004
You may have felt lost in the sea of LaTeX packages related to AMS – American Mathematical Society. Which ones do you need? How do they include each other?
Pandoc Markdown Tricks
13 Sep 2014
A selection of syntactic Markdown tricks and advices to get the most out of Pandoc's implementation, which currently has to be the most powerful there is.
How to Misuse Xpdf for More Interactivity?
26 Sep 2009
Xpdf can use hyperlinks in PDF files to open web pages, as they are meant to be used. For good or bad, there are tricks to make Xpdf open anything else too.
Spelling, LaTeX and Accents
31 Dec 2009
There are different tools for checking your spelling that support LaTeX and won't trip on its funny syntax. But they have different limitations with accents.
14 Jun 2015
Two ways of editing existing PDF documents: one with LaTeX for automation's sake, another one with Inkscape for visualisation's sake. This post describes how.
Writing Man Pages with Pandoc
24 Dec 2014
Pandoc offers a very effective and comfortable way to write UNIX manual pages with, for instance, Markdown, which is much more affordable than using groff.
Typesetting online manuals with groff
9 Oct 2005
groff is a document formatting system relying on a typesetting concept named roff. It offers extensions and macros to typeset the traditional man page format.
XeTeX and Fonts
12 Jul 2017
What I particularly like about XeTeX is how using common TrueType and OpenType fonts is made easy. I'm describing in this post how I usually do so in Linux.
Tuning IBM Platform LSF for Performance
28 Nov 2012
The Platform LSF batch system comes with a wealth of parameters to get the best performance out of it. Here are a few which had an impact in our setup at CERN.
LSF Exit Codes
22 Aug 2014
Jobs run by Platform LSF return exit codes, much like UNIX processes do. Things become confusing when you have to make do with both UNIX and LSF exit codes.
Batch and Grid Services at CERN
7 Apr 2015
The CERN Batch Service: its role to fulfil physicists' needs, its workings inside the worldwide computing grid, its challenges to process the massive LHC data.
IBM Platform LSF Debugging Techniques
4 Dec 2012
IBM Platform LSF is a very sophisticated batch scheduler. Here are a few ideas I collected from intensive debugging sessions with our setup at CERN.
A Blunt Way to Configure NTP on Linux
23 Mar 2014
A really quick note about setting up an NTP client on Linux. I realised there are two main approaches, one which I found blunt at first but learned to like.
21 Sep 2013
FvwmButtons is probably the best tool there is to design a toolbar for fvwm. Much better than FvwmTaskBar. This post describes a few useful examples.
Window Managers: Configuration Notes for Notion
5 Aug 2012
The holy grail of window managers, offering that level of configuration I'd always been seeking. Here are tips that were useful as I went along setting it up.
Getting Started with Binary Formats
11 Sep 2012
When I first started writing C# programs which I wanted to deploy, I stumbled upon a concept that I never had to think about before. That of binary formats.
Sound Applets for Notion
16 Jun 2013
Notion comes with a nice status bar where you can have text be displayed as well as system trays with applets. This post describes picking a good sound applet.
XDM: a Simple and Versatile Display Manager
4 Jun 2014
A few notes about xdm – the venerable X display manager – so that we may not forget about how beautifully simple, fast, lightweight, yet versatile it is.
Using gpg-agent as a password manager
5 Jul 2014
Trouble is with password managers, there's so many of them to choose from. An approach I like for its simplicity, is to build up one based on gpg-agent.
Mutt at CERN
16 Nov 2014
Installing, setting up and using mutt at CERN, as a regular user on interactive login services, and enabling those features which make e-mail terrific.
Number-Up Printing with CUPS
16 Apr 2006
The art of printing several pages on a single sheet of paper, and to do so getting it right the first time rather than spending pages working it out.
Who Needs a Display Manager?
29 Jul 2012
When display managers get so large and complicated that they become slow, spend a lot of memory and turn buggy, you start wondering if you need one at all.
Bluetooth and Linux
17 Aug 2018
Behind this mundane title, some notes as I was finding my bearings attempting to use Bluetooth devices when not using a conventional desktop environment.
Microsoft Exchange, Shared Calendars and Linux
22 Jul 2018
Nowadays, Linux users can comfortably dwell in the world of Microsoft Exchange, from mails to calendars, from graphical groupware suites to APIs in Python.
Kdumps to a Remote Server
13 Oct 2014
Sending crash dumps to a remote server instead of keeping them locally seems like a good idea when panicking nodes can't even write to their filesystems.
Adding a Printer from the Command Line
4 Sep 2016
The CUPS web tool does a good job of managing printers, even for someone who dislikes GUIs. But then there's all these cases when some automation is in order.
Huge Resolutions and Video Timings
12 Apr 2009
Some old X.Org versions aren't good at telling optimal resolutions when these are higher than usual. Some uncommon parameters such as timing must then be set.
Django with CERN Web Services
31 May 2012
Is it at all possible to set up Django for an AFS web site with CERN Web Services? Yes it is. The next question – how? – is what this posts aims at answering.
Spell Checking with an Autocommand in Vim
15 May 2018
After decades of using Vim, I still need to get back to basics: today, how options have a scope and the consequences when enabling them from autocommands.
Printer Options with CUPS
8 May 2017
Regular users can set printer options without any privileges, and do so on the fly with arguments passed to lp or configuration files in their home directory.
Juggling Gmail with Mutt
4 May 2017
The IMAP service offered by Gmail isn't conventional and you're in for a few surprises if you don't understand what it does with your mail behind the scenes.
Building the Atmel NGW Development Kit
15 Mar 2008
Building and setting up the development environment for this embedded network gateway isn't that straightforward. Here are a few notes of how it's done.
A Selection of Vim Options
17 Nov 2015
A selection of Vim options that I like to use all the time and make my life so much easier when I go programming, writing prose or manipulating data.
A Simpler Introduction to Sudoers Files
25 May 2019
Despite editing simple sudoers files for over 15 years, I still don't get the basics, each time resorting to ready-to-use examples. Time to change that.
That Jungle of Sound Systems
15 Feb 2014
All those different Linux sound systems always leave me with a sense of awe for all their complex interactions. I once tried to see the forest for the trees.
OpenTSDB: a Time Series Database
12 Jan 2013
My first introduction to NoSQL was with time-series databases. It began with OpenTSDB, a simple yet versatile solution I used to monitor the CERN Batch System.
A TWiki setup with lighttpd
6 Apr 2013
How to set up a local TWiki with lighttpd? Recipes covering the lighttpd configuration, the TWiki setup, security aspects and some general nifty TWiki tricks.
The Eevee Blender Render Engine and Anisotropy
4 Jan 2020
The Eevee render engine doesn't currently support the Anisotropic node, but there is a way to simulate it with a simple node setup. Here's a summary.
Rotating Images for the Web with GraphicsMagick
22 Jul 2017
GraphicsMagick is great for massively processing photos. Rotating them using Exif whether they're landscapes or portraits is a common application for the Web.
Rescuing Photos from iPhoto
2 May 2015
iPhoto is one of these programs which, allegedly for the sake of ease, lies about how your photos are organised in your computer. It only confuses us all.
The Point in Inkscape Symbols
12 Jan 2020
Inkscape supports symbol libraries, offering easy access to commonly-used objects. This post describes what they are, how to use them and create custom ones.
A Random Selection of Inkscape Tricks
20 Mar 2016
Inkscape is one of these vector graphics editors which were designed with enough flexibility in mind to let you do anything you need provided some creativity.
Clipping with Inkscape
15 Dec 2013
Clipping is the art of cutting an object off an image, typically to paste it into another one. Turns out vector graphics are convenient for this purpose too.
Inkscape: Avoiding Transforms Moving Objects
23 Jul 2017
Object positions can be read from the XML that Inkscape writes. They can be subject to transforms, harder to understand. Here's how to make sense out of this.
Raw Photo Editors in a Techie's Workflow
28 Jan 2018
A review of raw photo editors by somebody who doesn't know much about photos, for somebody who doesn't know much about photos, but does know their UNIX.
Working with Inkscape and XML in SVG Files
19 Mar 2016
The beauty of SVG lies in the fact it's structured in XML that's rather easy to work with. The beauty of Inkscape lies in the fact that it keeps it this way.
Ways to Resize Images with GraphicsMagick
26 Jan 2014
It's confusing how many ways there are to scale images with GraphicsMagick. I've listed and compared the various options to find which one is best in practice.
Inkscape Extension Development
1 Feb 2014
If Inkscape comes bundled with many extensions, there will always be repetitive actions specific to your style of work and which you may be able to automate.
Clipping with GIMP
3 Aug 2014
Raster image graphics editors are traditionally used for the purpose of cutting objects off an image. GIMP offers tools to clip images. Here's a few recipes.
Scanning Films with the Plustek OpticFilm 7400
29 Dec 2012
I once scanned thousands of films with a Plustek OpticFilm 7400. Here are impressions, tests and some practical advice on how to do so as quickly as possible.
Using Paths with Inkscape
12 Mar 2016
A good Inkscape tool is the Pen. It lets you draw Bézier curves and straight lines. Understanding node types is everything. This post gives you a feel for it.
What Benefits of Working with Raw Photos?
20 Jan 2018
Photographers swear by the raw format as opposed to JPEG, especially for post-processing. Are there really technical benefits or is this just plain pedantry?
GraphicsMagick: from PDF to an Antialiased Image
25 Jan 2014
An operation that editors like GIMP are naturally good at. However, GraphicsMagick won't smooth curves or text by default. Here's a way to get the same effect.
Randomisation in Blender
1 Apr 2019
An overview of the random ways Blender makes it possible to randomly randomise random things, randomly ranging from colours, to materials, to transforms.
Development and Operations
The Blunt Idea of Patching Code with Ex
12 Feb 2018
Patching code with the patch command or the more elaborate quilt tool is common to make small changes to software before packaging it. And how about Ex?
Python, Subprocesses, Pipes and Doubts
24 Dec 2013
An expression of the doubts and fears I experienced when I once tried to implement pipes between processes in Python, and a proposal for another approach.
Examples of Using the id3lib and mp4v2 Libraries
29 Jan 2009
If the id3lib developers provided solid documentation for their library, your may have a harder time getting started with mp4v2. Here's examples for both.
Parallel Shells and Transfers
22 Mar 2014
PSSH isn't just about running SSH in parallel. It's also about performing parallel transfers with various tools. I was sold by this versatile toolkit.
Interrupting Python Threads
7 Oct 2013
I'm mulling things over as to how best to interrupt threads with Python using a KeyboardInterrupt and what effectively happens to them whenever you do.
Inotify on Distributed Filesystems
20 Oct 2011
If inotify is a great way to track changes on a filesystem, it can be treacherous on distributed ones if you don't understand some aspects of their workings.
A Few ImageMagick C Examples
9 Aug 2009
The ImageMagick suite offers CLIs to work with images of many formats. It also comes with an API for several languages. Here's what it looks like for C.
Apologies to systemd
5 Aug 2018
I want to apologise for not having given systemd a chance before. Like many, I found it an unnecessary change. But the moment I started using it, I loved it.
Writing MySQL Storage Engines
27 Dec 2009
InnoDB and MyISAM are the two most common storage engines available by default for MySQL. I was stunned to discover how easy it is to write custom ones too.
Three Ways to Make DEB Packages
17 Aug 2016
Three different approaches to making DEB packages: the official one with debhelper, the simple one with dpkg-deb and the brutal one with CheckInstall.
A Discussion of C and C++ Code Syntax Styles
16 Jun 2006
It may be a good idea to choose a code syntax style when learning a new programming language. Here's an overview of what style C and C++ authors follow.
The Point in C Pointers
4 Sep 2005
If you're learning C and pointers scare you, either because you don't understand them or don't understand their purpose, this pragmatic note may help you.
Pragmatic Database Design
3 Aug 2008
On my quest to properly design database schemas, I enjoyed reading Elmasri and Navathe's Fundamentals of Database Systems, which offer pragmatic approaches.
Downloading in Parallel with Curl
24 Aug 2007
If you land on a server that has no download tools supporting simultaneous connections, you can still achieve the same with multiple curls and byte ranges.
Thread Safety with PySide
13 Oct 2013
PySide is a nice Python wrapper for Qt which hides some internal aspects of it. For instance, thread safety: what's safe when it comes to signals and slots?
Easy RPMs with setup.py
7 Jun 2015
Building RPMs is a business made easy and flexible with Python's Distutils, and it allows to package any files at all, not just Python scripts and modules.
Testing command-line tools with shelltestrunner
30 Mar 2019
A short getting-started guide to shelltestrunner, which lets you test command-line tools given a stdin, expecting a stdout and stderr, and an exit status.
Working with PNGs with libpng
4 Oct 2008
I get to work with the PNG format all the time. I was very pleased when I discovered the libpng C library makes it easy to programmatically work with it too.
Web Scrapers in Python with Qt and WebKit
25 Sep 2013
It's interesting to see how Qt turns out to be the easiest approach to wield the power of WebKit, even if it's without building a graphical user interface.
Towards Automatically Backing Up Mails with Mutt
16 Dec 2017
Even though mutt is an interactive mailer, it comes with facilities to perform operations in batch. I've cooked up here an example to back up mailboxes.
Python, Subprocess, GPG and Standard Input
25 Apr 2015
A discussion around having the gpg command tell the passphrase from data when both are expected to be supplied on stdin, and ways to achieve this in Python.
Some sort of comparison of sort and :sort
10 Sep 2017
The UNIX sort command is part of any DevOps' toolkit. Vim has its own :sort command, but its behaviour is in some ways radically different – for the better.
Displaying Text with OpenGL
17 Aug 2008
If OpenGL offers means to display text, the business of showing fonts really only becomes satisfyingly powerful when you use FreeType to render it as texture.
Duplicate Files and How to Deal With Them
12 Nov 2017
Juggling with many files, we all accidentally end up with duplicates, causing wasted space and a lot of confusion. Luckily, there's ways to deal with it.
Python Shell Command Lines and External Editors
9 Dec 2013
This post describes a way to add the capability to interpreters you implement with the cmd Python module to edit command lines with custom external editors.
Mac Python Applications and Exceptions
23 May 2015
When wrapping up Python applications to graphically run in Mac OS X, one problem is that informative exception messages are lost. Here's a way to log them.
How to Read and Write MySQL Blobs
5 Jul 2009
While we're normally tempted to only store textual data into databases, it can come in handy to also store binary data. This is what MySQL refers to as blobs.
A Debian Package Management API: libapt
21 Dec 2008
I had a hard time finding my way to writing tools based on libapt. Amusingly, what got me started was to use Graphviz to work out header dependencies.
Watching Standard Input for Data in C
15 Feb 2009
This post describes a recipe written in C around the select() function to wait for data on stdin, eventually timing out if it takes too long to arrive.
Naming Paths in Code
16 Jul 2017
An attempt at a proposal to come up with conventions to clearly describe different parts of file paths during software development, avoiding namespace clashes.
Comparing Files, Directories over Space and Time
3 Sep 2017
How to compare files in batch or interactively? Here are a few nifty tips and tricks to make the most of tools such as diff, vimdiff and git difftool.
Stopping a System with SSH Clients from Sleeping
23 Dec 2019
All it used to take was write a simple script in /etc/pm/sleep.d/ and have it exit non-zero if there were SSH clients. Things are now different with systemd.
Pouring Data into the Dolibarr ERP
24 Mar 2018
Just a word of praise for Dolibarr, whose authors had the good idea of keeping the programming interface transparent, which comes in handy for importing data.
Using HTML in ServiceNow Fields
2 Aug 2014
Using HTML to write messages to our users in ServiceNow tickets isn't easy. I was glad to discover it does remain possible. A welcome feature for IT business.
Databases vs. Plain Text Files
14 Jun 2015
Are databases the answer to everything? When is it more convenient to use plain text files? And which are the scenarios in which they are just safer?
Trying a Command Until It Works
6 May 2017
Some commands only need time before they eventually succeed. As part of your workflows, it can be useful to know when that happens, e.g. to trigger actions.
Auditing for Security and Debugging
4 Aug 2017
I thought that all I'd ever use the Linux Audit system for would be security. More recently, I also chose it to find out where some file corruptions came from.
Science and Technology
The Philips P|3435 Hard Disk Drive
4 Jan 2012
Involved in the heartbreaking job of dismantling a venerable Philips P|3435 hard disk drive, we couldn't do so without studying and documenting its workings.
Dismantling and Cleaning a Dell Inspiron 51xx
11 Jul 2009
This post describes how to take apart and clean up the dust off Dell Inspiron 51xx series laptops, resulting in considerably helping their cooling system.
CERN, European Organisation for Nuclear Research
19 Jul 2015
CERN, European Organisation for Nuclear Research, the world's largest particle physics lab, cradle of the World Wide Web, at the forefront of technology.
EOS in Ubuntu
17 Feb 2018
EOS – which nowadays stands for “EOS Open Storage” – is primarily deployed in Red Hat-like distributions. How to set up an EOS client in a Debian-based one?
pmount: mounting any devices as a normal user
27 Apr 2008
There are tools which are such a revelation, they change your life. It's certainly the case of pmount which I now use everyday and still surprises me at times.
GVFS for Accessing Files Over Any Protocol
19 May 2012
The GNOME Virtual Filesystem lets you access files with Nautilus over many protocols as if on a filesystem. How pleased I was when I found it comes with a CLI.
Accessing Photos over PTP/MTP like a Filesystem
11 Apr 2017
A review of the ways we've got today on Linux to access photos from a camera or a phone like files on a filesystem, many of which involve using FUSE.
Encrypted filesystems, loop devices, cryptsetup
5 Mar 2011
The GNU Privacy Guard is a common tool for encrypting files. An alternative approach for encrypting file hierarchies involves encrypting entire filesystems.
Encrypted Filesystems, Loop Devices, Cryptoloop
7 Aug 2008
A long time user of GnuPG, I was interested to learn about Cryptoloop, which offers full filesystem encryption, making it easier to edit secrets in place.
Remind: Sophisticated Calendar and Alarm Program
7 Aug 2010
I'm sharing here a few configuration and integration notes to describe how I'm using the Remind calendar program, along with its Wyrd user interface.
Multitasking and Keeping Track of Tasks
31 May 2015
This is about the art of starting many tasks and keeping track of their progress and completion with on-the-fly notifications, with no special software.
Mutt, the Address Book and Completion
4 May 2017
I was astounded to see how easy it was to add some clever completion for my address book contacts to my mail composer. And guess what: all thanks to Vim.
Power-Grepping with Vim
5 Feb 2017
grep is an essential command in the standard UNIX toolkit. Vim brings it to the next level making it more interactive and applicable to a variety of contexts.
Notification Sinks in Notion
9 Jun 2013
I devised a simple mechanism with this window manager to non-intrusively open notifications. One of these delightfully useful things Notion makes easy.
Command-Line Key Bindings
20 Nov 2005
Productivity shoots up the moment you understand that key bindings are the way to get stuff done. Even more so when you find most programs share the same ones.
2 Feb 2013
This post is an introduction to using Pentadactyl, which has to be the most tremendous Firefox add-on in the whole history of Firefox and add-ons combined.
Querying Mail from the Command Line
16 Apr 2018
If mutt is great for many mail-related operations, being an interactive tool makes it clumsy for some of them. For instance, how do you list all the senders?
Tiling Window Managers: Saving Window Positions
22 Jun 2013
Some stacking window managers restore the position of windows for some applications when they are restarted. What does this mean with tiling window managers?
Beyond Substitutions with Vim
9 Oct 2016
Regular expressions make the Vim :substitute command remarkably powerful. It comes with nifty and unexpected tricks making it essential in any user toolkit.
The Unixian's Guide to Windows
28 Oct 2018
A few hints for users coming from the UNIX world to find their bearings when they get to work on Windows systems, maybe even to almost feel right at home.
Stacking and Tiling Window Managers Terminology
8 Sep 2012
This post compares what we normally refer to as stacking and tiling window managers. And among tiling window managers, what makes them manual or dynamic.
dwm: beauty in simplicity with a window manager
20 May 2012
The spirit of dwm is to make its C source simple enough that configuring it means altogether modifying it. Here's some notes of what you can do and how.
Working with Hundreds of Windows
4 Jun 2014
Working with hundreds of windows in your windowing system, without losing track of them, never stopping work, keeping it all nicely organised and comfortable.
Word Completion with Zsh
23 Jan 2018
Like many other modern shells, Zsh offers completions of all kinds and flavours. One particularly handy one is word completion, explained in this post.
Thinking Outside the Mailbox
19 Aug 2017
Using mutt to refer to mail messages from outside the mailer, saving them to files and working with them with other programs, following the UNIX spirit.
Visual Selection à la Vim with Zsh
13 Nov 2016
Those Z shell – zsh – nifty tricks that change your productivity life. Who would have thought, for instance, that zsh offers visual selection à la Vim?
Vim: Macros, Substitutions, the Global Command
5 Jun 2016
It's natural to think "substitutions" and "regular expressions" to repeat the same change. There's an even more natural way: recording typed characters.
Caps Lock as a Mod Key
23 Jul 2011
A mod key modifies the behaviour of other keys. When you use window managers which are mostly controlled via the keyboard, choosing yours is everything.
Xfce Custom Actions
1 Jun 2018
I'm not one for graphical interfaces, never mind complex ones like Xfce. But I have to admit Xfce did make me fall in love with the idea of custom actions.
9 Feb 2013
Focus the Right Frame with Pentadactyl
17 Mar 2013
In the spirit of Vim, beyond giving your browser good key bindings, Pentadactyl lets you reprogram the web if needs be. For instance, focusing the right frame.
URxvt Perl Extensions
13 Jun 2015
URxvt Perl extensions open a world of possibilities with your terminal, and bring unique features to an already remarkably powerful terminal emulator program.
Recording the Sounds of your Computer
13 Jan 2018
I'd often like to record discussions from conference calls, but the conference software won't allow it. How about recording the sound your system makes?
Layouts available for xmonad
3 Dec 2011
The xmonad tiling window manager is so-called dynamic as it manages window placement with layouts. Here's a small list of common ones to help you choose from.
A Comparison of Window Managers: i3 and xmonad
8 Jan 2012
Dynamic tiling window managers – constrained to layouts – don't suit me as I crave for more freedom in arranging them live. I gave i3 a whirl after xmonad.
Fun, Games, Music, Films
Writing Text Adventure Games
22 Dec 2012
How to write games such as Colossal Cave Adventure – also known as Adventure – or the Zork series? There are several frameworks helping you write your own.
Maps with MAPS.ME, Google Maps and Other Tools
28 Oct 2017
How to manage maps which you sometimes edit on your smartphone, sometimes in Google Maps, and which you'd like to edit with even more powerful tools still?