Resume

Personal details
Name:Dmitry Chervov
Location:Kitchener, ON, Canada
E-mail:dchervov@yahoo.com
Technical skills
Languages:Mostly working with Objective-C, Java and C/C++. Some experience with PHP, Ruby on Rails, x86 assembler, ARM assembler, scripting for Microsoft Office, Adobe Photoshop and Google Spreadsheets (Google Apps Script), Python, other languages.
Server side and web development:Some experience with Ruby on Rails, PHP, ASP.NET, XML, HTML, CSS, JavaScript, jQuery, Facebook API, FBML, FBJS, Kafka, OCaml, Puppet, scalable architecture.
Databases:SQLite; Some experience with MySQL, MS SQL (+ Transact-SQL), PostgreSQL.
Systems:Windows, Mac OS, *nix, iOS, Android.
IDEs / compilers:Xcode, Eclipse, Microsoft Visual Studio, GCC.
Version control:Git, SVN, CVS.
Graphics / games:OpenGL ES, OpenAL. Some knowledge of DirectX, OpenGL, OpenVG.
Other:Regular expressions; Some knowledge of .NET, WinAPI, COM, MFC, STL...
Computer science:Efficient data structures and algorithms, time complexity of algorithms, image and sound processing, various kinds of Markov models and their application to recognition and prediction tasks, some knowledge of neural networks.
Work experience
Feb 2017 -
Present:
Google
iOS Software Developer
Jun 2015 -
Feb 2017
(part-time):
Ahrefs
Backend Software Developer.
  • Implementing large-scale web search functionality on top of existing web crawler and 10+ PBytes of live data.
  • Implementing a scalable web analytics system (OCaml, Java, HTML, Javascript, Zookeeper, Apache Kafka, Apache Samza).
  • Investigating possible applications of neural networks for the exiting projects (TensorFlow and general theory / mathematics for neural networks).
  • Configuring and maintaining servers (Puppet, *nix).
  • Developing a distributed data mining system (Selenium, PHP, OCaml, MySQL, ElasticSearch, Kibana).
  • Various other development tasks.
Feb 2010 -
Present
(full-time):
Sphere Consulting Inc
Senior iOS/Android Developer.
C++/Objective-C (iOS), Java (Android). Also spent some time working with Ruby on Rails, PostgreSQL, HAML, HTML, CSS, JavaScript, Ajax, jQuery, XML, Facebook Graph API, Facebook Connect, FBML, FBJS, Amazon EC2, RabbitMQ, Linux.
  • Was actively participating in development of more than 15 various mobile projects for iOS and Android, at first in a team as a senior developer, then developed several projects individually, and then as a lead developer with a team of other developers.
  • Programming of UI, business logic, database, setup and maintenance scripts and other necessary parts of various projects.
  • Communication with clients and writing necessary reports.
  • Estimating time, risks and planning new projects.
  • Designing project and database architecture.
Sep 2008 -
Feb 2010:
Gameloft
Senior C++ developer (iPhone).
Finished projects include Wild West Guns, Settlers.
  • Programming of UI, graphics, game logic, AI, sound, etc. (C++, Objective C, Lua, OpenGL ES, OpenAL, iPhone SDK, XCode, Instruments).
  • Flash programming, for GUI (Adobe Flash, ActionScript).
  • Performance and memory usage optimizations.
  • Wrote several Photoshop scripts for processing animations (ActionScript).
  • Wrote a tool that optimizes animations. It compares animation frames, finds similar frame parts and reorganizes animation so that its frames take less space on a texture (Microsoft Visual C++).
  • Wrote various tools, scripts and bat-files for processing game resources (Microsoft Visual C++, Python, XML, Windows and Unix shell scripts).
  • Map editor (C++/CLI).
Jul 2005 -
Jul 2008:
Freelancing
PHP/MySQL developer.
  • Writing regular expressions for a lot of various sites to extract necessary info (using TextPipe and some custom-made tools).
  • Writing a tool for automated data mining (PHP/MySQL, phpMyAdmin).
  • Programming an online store website; implementing PayPal support (PHP, MySQL, PayPal API, phpMyAdmin).
  • Various other development and debugging tasks (PHP, MySQL, osCommerce, phpMyAdmin).
May 2005 -
Oct 2005:
Freelancing
ASP.NET/MS SQL developer
UI, business logic and DB programming for a database of educational institutions, employees and their experience/attestation data. There were about 4 programmers in the team.
ASP.NET, MS SQL (including Transact-SQL).
1995 -
Present:
Open source / personal projects:
  • Programming / analytical / automation / optimization experience: wrote scripts for Google Spreadsheets and Google Forms to automate handling of a spreadsheet with information about Canadian immigrants. Designed and programmed several charts to significantly simplify the presentation of the statistical information. Devised a way to automatically estimate future immigration application processing times with proper corrections for varying application counts, based on the currently available information, despite noise in it. Wrote a script to detect duplicates and similar entries in the data. Made the spreadsheet load and update time orders of magnitude faster by writing scripts to update the data instead of using built-in spreadsheet formulas.
  • Author of several plugins for Miranda IM (multi-protocol instant messaging client), all plugins are written in Microsoft Visual C++:
    • Whiteboard plugin - a multi-user whiteboard, which is actually a collaborative real-time editor for SVG files. It's an implementation of Shared XML Editing protocol over XMPP. The plugin also uses other technologies extensively: whiteboard data is stored internally as a vector document in SVG format, and the document is rendered using an OpenVG backend, which, in turn, uses OpenGL API.
    • New Away System plugin, which manages status messages and status requests from other clients. The plugin has a wide list of features, like autoreply, custom messages for specific contacts, using scripts in status messages - this allows very flexible customization of status message behavior.
    • Spam Filter / Autoreplier plugin, which uses regular expressions to filter incoming messages and authorization requests. Allows replying with a user-defined message.
    • Other plugins, like ContactSettings (manages per-contact settings in a convenient way), XStatusNotify (notifies when contact changes his extended status; uses sophisticated heuristics to filter excessive status changes), ClientChangeNotify (notifies when contact changes his IM client), LogService (a service plugin which provides logging functionality for other plugins), DataAsMessage (a service plugin that allows transmitting arbitrary data via usual messages), etc.
  • Various patches to Miranda IM core and its base plugins.
  • An analog of Supaplex game for iPhone (C++, Objective C, OpenGL ES, iPhone SDK, XCode).
  • Live wallpaper app for Android devices (OpenGL ES, JNI, Java, C++).
  • Pocket PC driver for an infrared keyboard, and a front-end that shows a tooltip with graphical formula representation in realtime when typing formulas in TeX format (written in C++ for Windows CE platform using Embedded Visual C++).
  • A tool that allows batch conversion of formulas in Microsoft Word documents from TeX format to usual Word formulas (Microsoft Visual C++, COM, Microsoft Word API) - this tool along with my keyboard driver were used by me in the university to maintain electronic lecture notes, instead of writing on paper.
  • Software part of an iris recognition system (my master's work at university) - this software uses various image processing algorithms and a lot of smart heuristics to do segmentation of an input image (find an iris on it) and to extract iris signature from the image. Recognition is done based on this signature, by comparing it to a database of previously extracted signatures. The software is written in Microsoft Visual C++ using MFC and MySQL.
  • Various scripts for Adobe Photoshop and Adobe InDesign (written in ActionScript or VBA).
  • Music library - an application that maintains a list of all albums existing on a hard drive and allows generating an HTML report that contains names of all artists, albums and songs (Microsoft Visual C++, MFC, MySQL).
  • MIDI file player for MS-DOS (written in 2002 in Watcom C++, uses assembler to work with sound card). MIDI file format was reverse-engineered from existing MIDI files, as I didnt have any documentation at that time. MIDI programming interface was reverse-engineered from a MIDI driver for an MS-DOS game.
  • 3D labyrinth game for MS-DOS. It uses techniques and programming tricks similar to old Wolfenstein 3D game. Written in TMT Pascal + assembler in 2002.
  • Winner and participant of district and regional programming olympiads in school.
  • Was a member of programming olympiad team in university.
Education
2003-2008:Full-time student,
Kharkov National University of Radioelectronics,
department of Applied Mathematics and Management.
Master of Information Science with Honours. My diploma thesis was about developing software for an iris recognition system.
Languages
Russian:Native
Ukrainian:Native
English:Upper Intermediate / Advanced
Copyright © 2005-2017 Dmitry Chervov