|Location:||Kitchener, ON, Canada|
|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.|
|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.|
|Feb 2017 -|
iOS Software Developer
|Jun 2015 -|
Backend Software Developer.
- Implementing large-scale web search functionality on top of existing web crawler and 10+ PBytes of live data.
- 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 -|
|Sphere Consulting Inc|
Senior iOS/Android Developer.
- 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 -|
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 -|
- 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 -|
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).
|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 didn’t 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.
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.
|English:||Upper Intermediate / Advanced|