Experience
-
April 2014 —
current,
software engineer
in
Google, Zürich.
-
November 2013 —
March 2014,
software developer
in
ShazzleMail, Tashkent.
Contributed to the cross-platform (GUI-less Qt-based) secure e-mail system core:
- Rewritten the legacy network relay subsystem (which allowed NAT/firewall-ed peers to participate) with maintainability and performance in mind, while keeping protocol-level compatibility.
- Introduced pipe-lined background message processing subsystem for tasks like encryption/decryption, spam-filtering, and system notifications.
- Contributed numerous stability, security and performance improvements to the mail delivery, storage, and retrieval subsystems.
- Participated in the overall system design process, drafting protocols, identifying potential security threats and performance bottlenecks.
-
June 2012 —
August 2013,
software developer
in
Sistematika IT, Tashkent.
Lead developer in the online gaming project, responsible for the system
design and some of the technology choices. Contributed to the following
subsystems (in the decreasing order of time spent):
- Back-end: synchronous (Pyramid) and asynchronous (Tornado) Python web frameworks, using SQLAlchemy to access PostgreSQL storage, and Redis as a high-performance storage/message bus.
- Front-end: dynamic interface with real-time updates based on Knockout.js MVVM and (mostly) static HTML combined with JSON REST API and SockJS.
- Game server (defunct): written from the ground up in C++ using Bullet physics engine with game logic extensible in Lua.
- Game client: ported AI code to C# during technology transition period. Created an engine-independent module used in Unity.
-
September 2011 —
March 2012,
software developer
in
Active Cloud, Tashkent.
- Design and implementation of .UZ domain registration and management
plugin for PBA. The module was
successfully deployed, greatly reducing response time for customers'
requests and technical support workload. Developed by a two man
team in C++ with the use of STL, Boost, Parallels proprietary libraries,
SQLite, etc.
- Support and locale-specific adaptation of document generator
(producing printable invoices, contracts etc. from PBA billing)
written in Ruby on Rails.
- Miscellaneous automation of hosting provider and domain registrar
operations: mostly bulk data retrieval and report generation. Utilities
were written in Java and Python.
-
May 2007 —
July 2011,
contractor developer
in
ePoint Systems Ltd
(remote work).
ePoint vending machines: a number of systems selling services and goods
in exchange of cryptographic micropayments. Some of the code is available
under the GPL and can be found in the publicly accessible
repository.
- HotSpot — OpenWrt-based firmware for selling Internet
access, primarily used in commercial SOHO routers. Successfully deployed
in a number of catering establishments, stores, and communities in Budapest.
Written mostly in C for cryptography-related and
performance sensitive parts, and Lua for much of the business
logic and web interface, with some early glue in sh and awk,
and access control relying on iptables.
- PubTerm — Ubuntu-based public terminal selling guest session time,
mostly targeted at and deployed on interactive kiosks. Contributed
the following parts:
- PAM module allowing use of one-time codes for login and
screensaver unlocking. Written in C, uses
D-Bus to communicate with the controlling daemon.
- Core logic daemon, verifying one-time codes with the
issuing server, controlling user session lifecycle, performing
security monitoring. Written in Python.
- Page-counting CUPS
filter blocking or passing through print jobs
based on the current user quota. Written in C.
- Webmon — client-side web application for monitoring data
pushed from devices (e. g. ePoint HotSpots) to the
Fluidinfo
cloud database. Written in Java using
GWT.
- Thiblo (defunct) — blogging and collaborative editing system with support for
commenting specific words and sentences. Back-end written in Python
using Django framework. Administrative interface used GWT.
Education
Skills
Programming languages and platforms
- Plain C in POSIX environment.
- C++ —
recently started catching up with the 2011 version of the standard after a prolonged break.
Was pretty excited by
template metaprogramming and DSLs back in the days, but prefer much more
conservative approach now. Actually, I prefer not to use it unless
absolutely have to.
- Python — favorite language for web development, rapid prototyping and integration.
- JavaScript — good parts only, as per Crockford's definition.
- Haskell — favorite language for rapid prototyping and integration when no one else sees it.
- Lua — so small it hardly counts, but one of the most elegant dynamic languages anyway.
Also, languages I've used occasionally, but don't consider my knowledge to be
“enterprise-ready”:
- Java — comfortable with language proper and SE library, but no experience with EE.
- C# — a few kLOCs in version 2.0 language (i. e. pre-LINQ), mostly algorithmically heavy code.
Operating systems and tools
Using Linux
exclusively for work and entertainment since 2007, mostly
Debian-based systems.
Limited system administration and software packaging
experience. Experience with (and addiction to) version control
(Git,
Subversion)
and issue tracking
(JIRA,
Trac) systems.
Favorite computer science toys
Actively interested in functional programming, type systems, parsers and formal
grammars, compiler construction (particularly
LLVM project).
Personal information
- Birth date:
-
January 1st, 1988.
- Marital status:
- married.