Mohamad Ahmadi


  • Programming Languages: Java, Javascript, Ruby, C++/C, Python, SQL
  • Product Design, Prototyping, and Development:
    • Web Application Development: Spring, Node.js, Ruby on Rails
    • Frontend Development: HTML5, CSS, Javascript, JQuery, AngularJS, GWT, Twitter Bootstrap
    • Test-driven Development (TDD).
    • Object-oriented Design Patterns.
    • Building and working with RESTful APIs.
    • HTML Mobile App Development: PhoneGap/Cordova
    • Databases: PostgreSQL, MySQL, MongoDB
    • Wireframing: Balsamiq Mockups
    • Templating: Dust.js, Handlebars, Liquid
    • Preprocessors: Coffeescript, Sass, HAML, Markdown
  • Search and Relevance concepts and technologies:
    • Full-text and Geospatial search expert with Elasticsearch and Lucene.
  • Geospatial data and Geographic Information Systems (GIS):
    • Geographic data storage and querying with PostGIS (Geospatial module for PostgreSQL) and Lucene.
    • Geographic data manipulation in Java using GIS toolkits such as GeoTools.
    • Working with Geocoding and Mapping APIs as well as standard data formats such as KML and GeoJSON.
  • Development Environment:
    • Virtualization and Provisioning: Vagrant, Shell script, Puppet
    • Version Control: Git, Subversion
    • IDEs/Editors: Eclipse, IntelliJ IDEA, Vim, Sublime Text
    • Operating Systems: Linux, Mac OS, Windows

Work Experience

  • Software Engineer at TripAdvisor  | Ottawa, ON
    • As a member of TripAdvisor’s Search & Navigation team, I designed and developed highly scalable features that enable users in over 45 countries to search through hundreds of millions of businesses, properties, and reviews. I used ElasticSearch, Java, HTML, CSS, Javascript, and Dust.js on a daily basis within TripAdvisor’s fast-paced iterative release process. Speed wins!
  • Software Engineer at Nterop  | Ottawa, ON
    • Delivering features in the entire software stack in a Scrum team using Java, Spring, Hibernate, Maven, PostgreSQL, PostGIS, GWT, HTML, CSS, Javascript, PhoneGap, and Balsamiq Mockups.
    • Performing requirements analysis, prototyping, product design and implementation, testing, documentation, release, deployment, and maintenance of nTerop’s application suite.
    • Having ownership of several critical parts of the application suite including Maps and GeoSpatial features, Authentication and Access Control, and Search and Relevance.
  • Software Engineer Intern at Facebook  | Palo Alto, CA
    • Performed backend and frontend development using PHP, HTML, CSS, and Javascript.
    • Worked on requirements analysis, design and implementation of an interactive Ad unit.
    • Co-developed a feature for adding friends using QR codes as part of a Facebook Hackathon.
  • Research Assistant Intern at Technical University of Ilmenau  | Ilmenau, Germany
    • Used C++ and OMNeT++ network simulator to simulate and benchmark malicious behaviours and appropriate countermeasures in a distributed Network Coordinates system.


  • Masters in Computer Science at the University of Waterloo  | Waterloo, ON
    As a member of the Information Retrieval Lab, my research was focused on statistical and unsupervised approaches to Natural Language Processing and Information Extraction:
    • Developed a learning agent in Python to automatically extract favorable and unfavorable aspects of a restaurant from customer reviews given a small set of dish names.
    • Modeled a POMDP decision making agent for Insulin Therapy.
    • Participated in Named Entity Recognition track of Text Retrieval Conference (TREC).
  • Bachelors in Computer Engineering at the University of Tehran  | Tehran, Iran
    Developed a strong foundation in computer science and a broad understanding of software engineering, its tools and methodologies through a world-class curriculum and numerous projects:
    • Implemented an e-commerce website with inventory and order management using Struts2, Hibernate, JSP, and Ajax.
    • Developed a mini database in Java supporting basic SQL queries, locking, and Hash/B+tree indexing.
    • Implemented a full compiler in Java for a java-like object-oriented programming language.
    • Built a web portal similar to now retired iGoogle featuring interactive gadgets using GWT and Ajax.
    • Implemented a GUI FTP Client and Server, covering common FTP commands using Java and Swing.
    • Developed a 2D multiplayer strategy game in C++.
    • Implemented the complete TCP Protocol over UDP in java.
    • Developed a data Compression/Decompression software based on Huffman Algorithm in C++.
    As a member of the Database Lab, collaborated in a number of projects on Data Mining, Information Retrieval, and Text Classification:
    • Improved an Ant Colony optimization algorithm for the task of detecting trends in spatial Databases.
    • Assisted in development of a standard Persian text corpus and used it to benchmark various text classification algorithms.
    • Implemented and evaluated different Query Expansion methods on Lucene.
    • Attended the Cross Language Evaluation Forum (CLEF) competitions.

Awards and Achievements

  • University of Waterloo Graduate Student Entrance Award 2009-2011
  • Graduated as the 5th top student among over 100 Computer Engineering students. 2009
  • University of Tehran's Faculty of Engineering Award for the highest yearly GPA. 2008
  • Ranked 230th in nationwide university entrance exam among over 400000 participants. 2004

Language Skills

English (Native fluency), Persian (Native), Portuguese (Learning)


  • Enhanced AntTrend: A Powerful Spatial Trend Detector, M. H. Ahmadi, C. Lucas, Bachelor Thesis, School of ECE, University of Tehran, Feb. 2009.
  • Farsi Text Classification Using N-grams and Knn Algorithm, A Comparative Study, B. Bina, M. H. Ahmadi*, M. Rahgozar, Proceedings of the 2008 International Conference on Data Mining (DMIN'08), July 2008, Volume II, 385-390. (*: corresponding Author)

Volunteer Work

Team member, mentor and program organizer at IAESTE Iran  | Tehran, Iran