Junior/Medior/Senior Software Developer at TomTom Int. B.V.
Amsterdam, Netherlands
PND Content Server and Map shop release system
Maintaining the old map shop release system and PND content server (i.e. home server) and working on developing the next generation of the same products.
Mobile Location Based Services
Short stop through the Mobile department. Though only a month, this project provided some insight on location based services, namely routing and geocoding of addresses, and development on mobile platforms (Midlets).
Went back to the old department due to some company internal project restructuring.
MapShare back-end server
One of the original developers of TomTom MapShare technology's back end server. This system is responsible for the storage, processing, and distribution
of map and POI (points of interest) corrections to it's more than 20 million users. This was TomTom's most important project in 2007.
Adopting the Scrum agile methodology from the start, was responsible for the design and implementation of the entire solution (backend server and a web interface where TomTom content moderators can manage incoming
corrections), along with 2 other team members.
As with all server-side projects, the solution had to tackle the usual performance and scalability challenges, as well as the immense amounts of handled data. The answers to these issues were translated into the
following:
- Database tweaking - Some particular parameters had to be tweaked in order to make the most out of our database cluster.
- Read/Write connection splitting - To take advantage of a cluster (master/slave replication) this had to be implemented. In this case, at the application level (custom data source RW splitting module).
- Connection data streaming - Some tweaking had to be performed in order for the database to stream the results to the application, instead of building it up in memory on the database driver. We went
one step further and implemented streaming from the DB directly to the HTTP clients (minimal memory footprint on the server).
- Data distribution caching - All the optimizations on a database cluster will eventually prove less fruitful than a proper caching strategy so we also implemented this, though using an out-of-the-box
solution.
Was also responsible for the creation of other smaller tools (testing, load/stress runs, etc.), some Python scripts for performance measurement and charting of results, and a maven plugin for the generation of a
SQL schema from Hibernate annotations.
MapShare reporting tool
Sole responsible for the design and implementation of a data aggregation and reporting tool for the MapShare backend server's data. This project was born from the management's need to monitor and get information
about the current status of the project, namely the number of users sharing corrections, what kind of devices are sharing data, how much data is being shared, what type of corrections are more common, etc.
This tool consisted on scheduled data aggregators, that retrieved information from the live MapShare system and stored it in a processed/aggregated form, and a web interface - where management could see the aggregated
data and generate Excel reports from it.
Safety camera moderator's web console
In the same team that developed MapShare, was responsible for the design and implementation of a new (web) version of the TomTom safety cameras moderation tool. This tool allows TomTom content moderators to manage
safety (speed) camera information, basically deciding what will end up in user's devices.
This project relied intensively on Ajax, around an openlayers map interface, when moderators could view, change, import, and export information on safety cameras that was previously gathered from several sources.