Ivan Frade


Currently in San Francisco, California


  • M.S., Computer Science, University of Oviedo, Spain, 2006. (Last year working full-time) Master Thesis: “Techniques for concept selection in ontologies”
  • B.S., Computer Science, University of Oviedo, Spain, 2003. (Working part-time)

Work Experience

2013 – present Nokia Tech (USA), Principal SW engineer (cloud)

Family Care (cloud): App to share, monitor and interact on the activity and health levels of your family.
  • Defined the microservices architecture that was reused and refined while iterating the business concept. Based on containers (docker), relational (postgres/redsfhit) and key-value (redis) databases.
  • Defined and implemented multiple REST APIs. CRUD for users, families, reactions and feed items and an orchestration service for the mobile client. Servers in javascript/nodejs/express, data in postgres/AWS RDS and redis.
  • Implemented the withings syncing service, handling the peculiarities of the API. This was the main data source of the project.
  • Wrote build and deployment scripts, supporting also a local development environment close to the real cloud. Using docker, docker-compose, aws-cli (ECS/ECR), bash.
  • Implemented a “discovery” solution that would work in the cloud and in local development. This enabled also local integration testing. Using nodejs and npm.
  • Introduced local integration tests that did a fairly comprehensive check of the whole system, making deployments safer. Using nodejs, mocha, chai.
  • Implemented a “rolling table” to keep n-last-days of user data. Data came in a streaming fashion and a quick lookup was required for the UI. nodejs, npm and redis with some lua scripting.
  • Kept the code up the latest Javascript standards (ES6) and style.
ZLauncher (cloud analytics)
  • Implemented 3 iterations of the in-house analytics before it was moved to a commercial solution. I brought the 4 hours Hive queries down to ~4 minutes with bash/mysql (using same AWS S3 data source). Still, this was growing proportional to the total amount of data, so I reworked it again to grow with the amount of daily data. These analytics were used as KPI in the project. Bash (sed/awk/…), nodejs, mySQL, aws-cli (data in S3).
ZLauncher (Android client)
  • Refactored the existing handwriting recognition library for performance and testability. This unlocked performance improvements in speed (up to 2x). Usual Android technologies: java, gradle, junit.
  • Introduced unit testing, coverage measuring, proper build process and versioned releases. Applied design patterns and a stronger and more idiomatic OO approach.
  • Implemented a multi-character recognition on top of the single-character recognition library.

2007 – 2013 Nokia, Maemo/Meego, Senior software engineer

Meego 1.2 Harmattan, N950/N9: Tracker 0.7-0.10, optimized triplet store
  • As lead developer and architect, introduced the concept of a central store for user metadata in the platform, bringing the information from the application silos to a shared space. Based on the semantic web ideas and technologies like Graphs, RDF, ontologies and Sparql.
  • Translated the concept into reality working on the practical issues related with performance, i18n, mass-storage handling, reliability and APIs with applications.
  • Collaborated with other teams so Tracker became the main backend for multiple applications: Contacts, Messaging, Gallery, Feeds, Music and Video players… and enables new use cases like global search or global tagging of content.
  • Wrote a wide set of functional tests (python, unittest) to run on Desktop/scratchbox/device ensuring safe releases
  • Maintainer of the ontologies (data schemas) in the project

Code in upstream repository

Maemo5, N900: Tracker 0.6, metadata indexer of multimedia content
  • As lead developer, refactor step by step of whole Tracker code base (upstream open source project) for maintenance, performance and extensibility. Code on GObject, C and usual GNOME technologies (autotools, DBus, glib, …).
  • Collaborated with the Image viewer and Media player teams to make Tracker the backend used to find the relevant files on the device. Custom Query language (XML based) and DBus interfaces.
  • Involved in the whole life cycle of a product (N900) ironing out all details to get product quality code.
  • Extensive work on metadata extraction (multiple libraries) and database performance (sqlite)
  • Worked with a internationally distributed team, via IRC/Bugzilla/hackfests

Code in upstream repository

Throughout Nokia experience
  • Continuous interaction with open source community via mailing lists, bugzillas and public repositories. Archives of tracker mailing list
  • Two Nokia internal recognitions for the work on Tracker.

2007/05 – 2007/10. CSC, Software developer.

Zurich Financial Services project
  • Wrote a web frontend in Java with Beehive FW (based on JSP and struts) to create investment quotes. Following a SOA paradigm, the backend was accessible via Web Services, all running in the BEA flavour of J2EE technologies. Private project, no source code publicly available.

2005 – 2007 CTIC Foundation. Semantic Web researcher.

Esperteyu: Semantic search engine for legal documents

Project sponsored by regional government to help users without legal background to find relevant documents in the local legislation.

  • Implemented the syntactical search backend of this engine, based on Lucene (Java) including unit testing (jUnit) and spanish-specific filters for the documents. Got familiar with the basics of indexing and document processing.
  • The evaluation of different algorithms to locate the right concept under common typographic mistakes in Spanish was reused and extended for my master thesis.

Personal Projects

  • Mussorgsky: Album Art downloader and metadata editor for music files for Maemo5. Written in python with pyGTK, mutagen, gstreamer and urllib. Source code available in gitorious, packages available in maemo-extras with moderate activity from users.
  • tracker-distutils: Scripts needed for third party to register new types into tracker 0.6 on installation time. Mostly bash and SQL.
  • Active member in GNOME community: Performance patch in totem-pl-parser, involvement in python-hildon bindings (reporting bugs and submitting simple patches), assistant to Zeitgeist hackfest between others. Member of GNOME foundation.



  • Guademy Valencia, Spain. “Metadata management in desktop”. GNOME/KDE joint conference to address cross-desktop issues


  • Desktop Summit Gran Canaria, Spain (*) “Tracker: metadata central storage for the desktop”. Joint conf. of GUADEC (GNOME Users and Developers Conference) and Akademy (KDE conference).
  • Maemo summit Amsterdam, Holland (*) . “Tracker: Dial M for metadata”. Maemo specific conference.
  • Encuentro linux Valparaiso, Chile . Linux promotion conference, sponsored by GNOME foundation.


  • University of Helsinki (*) . Introduction to students of the work around Tracker.
  • Meego summit Dublin, Ireland (*) . “Content FW in M minutes”. Introduction to the blocks of our API in Meego.


(*) slides are available in http://live.gnome.org/Tracker/Documentation/Presentations

Attended without talks also to GUADEC (GNOME Users and Developers Conference) in years 2006, 2008 and 2010, Maemo summit 2008,


2008, “Cooking HTTP content negotiation with Vapour”, D. Berrueta, S. Fernandez, I. Frade, Workshop on Scripting for the semantic web.


Native spanish speaker.