Vasile Cotovanu: “Better to publish a (not perfect) map than having a masterpiece … unpublished”

Vasile Cotovanu
Vasile Cotovanu
Vasile Cotovanu is the author of the “SwissTrains” railway map -- one of the first animated public transport maps on the web. He has worked as a software engineer on the mobile team of local.ch, one of the most used websites in Switzerland.

Q: Hi Vasile, I’ve looked up your Twitter bio: “Husband and father, neogeographer, hacker and hiker, mobile software engineer, curious, never stop exploring”. I understand you’re currently between jobs and indeed exploring. What is it that you did in your old job?

A: The Twitter bio is outdated, but at the same time current 🙂 About the exploration bit: I am always doing that, no matter whether I’m hiking the Swiss mountains or I’m playing with new technologies. With regard to the job, yes, I am taking a few months’ time off to explore some pet projects that I’ve never had time to work on 🙂 Before this, my previous position was software engineer in the mobile team of local.ch, one of the most used websites in Switzerland.

Q: You have an education as a geomatics engineer. How did you get interested in that specifically?

A: My passion for geography started in early childhood, when I was reading Jules Verne books side-by-side with the world atlas 🙂 Geomatics came in 1997, before graduating high school, when I had to make a choice about which university to attend. I stumbled upon a technology newspaper that had a GIS software article and presented a classic solution for finding a location for a new company branch (I think it was a bank) based on some criteria like target population, existing branch offices, easy access, etc.

So I wanted to find a university that was dealing with such problems and the closest I could find was to study Geodesy at Technical University of Civil Engineering in Bucharest, Romania. After graduation in 2002, I worked as a technical analyst dealing with surveying and photogrammetry projects with a strong focus on the GIS-related programming part. It was the time of learning and discovering Geomedia, ArcGIS and FME.

However, in 2005 with the online maps revolution that started with Google Maps I joined also this “train” and started to work as a freelancer and created various map mashups. Since then I didn’t work anymore in the classic field of geomatics but embarked on a rather different path: I was doing web-programming with a focus on geo-related projects – which I’m still doing today. Except that I ditched the “web-” prefix, because with time I got experienced in working in the whole production pipeline from raw geo data to presenting them on a map, no matter if on web or (more recently) on mobile.

Q: Did your work for your old employer also relate in any way to maps, geo data or GIS, or have these things been hobbies for you?

A: One of the goals of my former company was to provide the best local search experience in Switzerland. So you can imagine it was dealing with a lot of geodata! I joined them when they needed someone to help them migrate to a new online maps provider, and also to grab (read crawl) the Swiss public transport data for the local search directory.

My colleagues there called me “Mr. Geo”, as most of the geo-related questions were routed to me, but also because I had this passion, or obsession even, for geo-quizzes. So they were always testing me by showing me photos from their trips and asking me to guess the location 🙂

Over the last two years at local.ch I wasn’t exposed to maps and geo-related topics as much any more as I wanted, but more to mobile technologies. So this was a perfect opportunity for me to foster learning how to do native development on mobile platforms (iOS and Android) and apply my geo-related knowledge also there.

Q: You’re famous for your “SwissTrains” railway map. In my mind you were one of the first, if not the first, to build animated public transport maps on the web. When did you start this project, and why this fascination with trains? Are you actually what we call a ‘ferrophile’ in German, i.e. a train lover, rather than a geohipster?

A: Actually both! In the railway department, call me trainbuff, railfan, trainspotter, whatever fits 🙂 Yes, I love trains! As a little child I used to go to a friend and play with his model trains. Later I studied building tracks and railway models. And today I am still playing with trains, except that I am drawing and animating them on web and mobile platforms 🙂

I started the SwissTrains project in 2007 as a challenge to visualize the impressive network of Swiss Railways which consists of 13,000 trains on 5,000 km of tracks, generating 150,000 timetable stops across 1,800 stations. In the early years I did a lot of the heavy-lifting myself, because no vector data were available; so I manually digitized the whole Swiss rail network and mined the timetable data from the official providers.

After some really nice press coverage and a lot of feedback from not only train enthusiasts, I pushed the project to the next level: I open-sourced it, helped others to implement it for their regions, and from time to time I improved its codebase by updating the APIs or adding new tools to it.

Q: I imagine your railway maps have experienced quite some technological development over time. What technologies did you use, do you use, and why?

A: Back in 2007 I was still working on a Windows machine, and for my projects I used commercial GIS tools like GeoMedia (to digitize and analyse the network topology) and MySQL (to store and query the timetable data). The two “databases” were integrated with a pair of custom-made scripts and FME workspaces that didn’t always run smoothly. Thus, there was also a bit of manual work involved, which obviously wasn’t great. On the (web)client the things weren’t smoother: the old GMaps v2 wasn’t too fast and I was doing a lot of rendering, e.g. the network polylines were loaded via the client instead of deferring to a tile-service of some sort. I don’t even want to mention some aspects of the UX or performance in mobile browsers at the time 🙂

So as you can imagine I needed to do something to make SwissTrains scale and perform nicely. I cut all commercial software dependency and started relying on open source tools exclusively. For instance, for capturing and analysing network topology changes I started using a custom online editor based on the GMaps API and later the GeoAdmin API. For managing timetable information I started using SQLite and custom-made integration scripts written in Ruby or Python. On the client side, I took the benefit of GMaps v3 which had a mobile first approach, so it rendered nicely on small screens. Additionally, I delegated the load of extra layers to tools like Fusion Tables.

However, any time I revisit the project, I am tempted to refactor big parts of the code. But I try to keep this urge that every programmer has (right?) in check and focus on what is really broken. Or I add wholly new features like realtime imagery updates of the trains, because, remember, my ultimate goal is to play with model trains, but in the browser 🙂

Q: What are you currently working on? I think I’ve seen a tweet of yours where you were looking for beta testers recently?

A: SwissTrains, what else? Jokes aside, yes, I plan to release it on native mobile platforms like iOS and Android. As a matter of fact, I’m testing it in a beta phase for iOS, so anyone can enroll here via Testflight.

SwissTrains iOS v2
SwissTrains iOS v2

Besides that, as said in the beginning, I have some other pet-projects that are in the idea or alpha phase with focus on geo and mobile platforms. They will certainly keep me busy. Plus I have a 4 year old toddler that develops slowly but surely into a trainspotter like his dad 🙂

Vlad -- future trainspotter
Vlad — future trainspotter

Q: And do you know already where the path will take you? Will we see more web maps by you?

A: That’s not yet defined, but I know one thing: I want to work on more geo-related projects, ideally in a company that deals also with native mobile technologies. Therefore I’m currently fostering my iOS and Android experience and preparing myself for the next employer.

However, I will still have a soft spot for web and maps in general, so I will not stop publishing those completely. On the contrary, like in the past, I plan to continue rolling out maps on my personal website. Most of them are listed here: http://www.vasile.ch/work

Q: On closing, what words of advice would you like to give to all the geohipsters out there, or to the world in general?

A: I usually don’t give advice to strangers, but since you asked, here we go: Keep exploring and have fun with your map projects. If you get blocked by whatever reasons, let’s say technical, then you can park the idea for later but not for too late because better to publish a (not perfect) map than having a masterpiece … unpublished. And please, don’t call it MVP 🙂