Background in Computer Science, Mathematics and Physics.
Generic Application/System Software Development Expertise
· 5 years of experience in investment banking (electronic exchange trading, front and middle office)
· Over 20 years of experience in software design, development and support
· Object-oriented design and programming, large scale projects, multi-threading, reverse engineering, Windows internals, low-level Windows programming
· Sophisticated user interfaces, client-server systems
· Web services (Java servlets), GIS systems, device drivers, real-time systems
· Management: team of 9 developers supervised in half a year project
Hardware & Operating Systems & Environments
· MS .NET, MS Windows 7/Vista/XP/2000/NT/95/3.x, MS DOS
· Unix (Solaris 10), DEC VAX - VMS, IBM/370 - SVS, PDP-11 - RSX-11M, HP-2000 (RT DOS)
● MS Visual Studio, Oracle Studio 11.x, C# 2.0, WinForms, Visual C++, STL, MFC, C, COM, OLE 2.0, ActiveX, Java, JDK 1.2, J2SE, Oracle JDeveloper, Win32 API, UML, log4net
● Rational Rose, Rational Team Concert, Embarcadero DBArtisan
● OOD/OOP, design patterns, functional design methodologies
● MapInfo 6.5, MapInfo MapX (GIS tools), Pascal (various versions), Borland Paradox Engine
● Brainbench.com certificates: C11 – 4.07, C# - 4.02 (#2549717)
● C# 3.5, WPF, MVVM, J2EE, EJB, JDBC, Boost, Python, bash, SunStudio, DirectX 9, DirectDraw 7, DirectInput 8, MSXML, Syncfusion DataGrid, ODBC, Eclipse IDE, Web services, ADO .NET, VB.NET, Borland C++/Delphi, NetBeans, HTML, SQL, CORBA, MS VisualBasic 6, MS Visio, MATLAB, FrontPage, PL/1, Fortran, Assemblers i386/PDP-11/IBM 370
● FIX protocol, Rational Unified Process, Rational Functional Tester, Tricentis Tosca Testsuite, Rogue Wave Tools++ Professional, Borland OWL, WinWord & WordPerfect macro languages, web-authoring, MS Project.
Luxoft - Moscow, Russia, 6/2014 – current
Lead Software Developer
GEMS, a large scale project at Deutsche Bank - global distributed program trading system (basket trading). Member of team of 8. Support, bug fixing, enhancements, responsible for Hong Kong, Japan and Australia markets - interaction with business, build and release management (both GUI and back-end). Front office, Solaris 10 (Unix), X11, C++, Solaris Studio 11.x (SunStudio), imake, eXeed, Subversion (SVN), bash, Perl, TCL, JIRA, proprietary data access API, FIX protocol.
Freelancer – Singapore & Moscow, Russia, 6/2012 – 5/2014
Small freelance projects. Design and implementation. Win32 API, VBScript, MS Visual Studio C++ 2010.
Home Project - SmartSlider. Author, designer and developer
A special plug-in DLL for various Windows
applications with extensive usage of Slider-controls (Trackbar class), e.g.
Adobe Photoshop, Adobe Lightroom, etc. The plug-in replaces standard Sliders
with a custom control which dramatically improves user experience using mouse.
DLL can be loaded as a standard plug-in if application has this mechanism, or
can be injected in an application which doesn't use plug-ins. Low-level Windows
programming, Win32 API, control subclassing, MS VisualStudio C++ 2010.
PlayFast Technologies – Singapore, 4/2011 – 3/2012
Senior Software Developer
Play-in-browser project – solution to play a stand-alone game inside a browser plugin to look like a web game (mainly because of Facebook popularity). It's done via hooking numerous graphics and Windows functions and modifying their behavior to forward game graphics to browser plugin window and forward keyboard/mouse input back to game's hidden window. MS VisualStudio C++ 2010, DirectX 9, DirectDraw 7, DirectInput 8, extensive reverse engineering, API Monitor, ProcMon, ProcExp, Spy++, hooking of Windows API and COM (MS Detours, EasyHook and other tools), creating proxies for system DLLs, Mercurial (TortoiseHg) and SVN for source control, multi-threading, inter-process communication.
IBM – Singapore, 12/2009 – 4/2011
Advisory Software Engineer
Large scale client-server project TAM E-SSO (1 million source code lines for client side) – single sign-on solution for corporate clients. Automated system for signing on to Windows, Web, Terminal and legacy (mainframe) applications, with second factor authentication (smart cards, fingerprint readers, etc). Fixed bugs and issues in the client side apps, made minor feature improvements, released fixpacks for customers. Work required advanced knowledge of Win32 API, multi-threading, integration with OS, extensive reverse engineering, dump files analysis, building of fixpack releases, etc. MS VisualStudio 2002/2008, C++, C, C#, Win32 API, VBScript, Java 1.4, Rational Functional Tester, WinDbg, CVS, VMware for replicating and testing customers client-server environments, IBM Rational Team Concert for bug tracking.
Merrill Lynch – Singapore, 11/2007 – 3/2009
Assistant Vice President
Client-server project for defining and calculating UK bonds inflation indexes for London traders (team of 10: 5 server and 5 GUI). Worked on requirements document, use cases. Wrote central data/cache manager for client side and interaction with server, index selector control (tree-like) and several user screens (partially). The client side is a multi-threading application, with async interaction with server. MS .NET 2.0, C#, Sophisticated .NET Grid control programming, synchronization mechanisms, proprietary client-server framework, in-house application framework, SVN, JIRA for bug-tracking.
Large-scale client-server project (team of 15) for trading bonds and futures on multiple exchanges across the world. Worked on client part (team of 3), a multi-threading GUI application for traders: bug fixing, development of new features, development of complex build script using NAnt, second-level support. MS .NET, C#, synchronization mechanisms, sophisticated .NET Grid control programming, Syncfusion DataGrid, in-house application framework, proprietary client-server protocol for receiving/sending trading data, NAnt, SVN, JIRA for bug-tracking.
ANTlabs – Singapore, 2/2007 – 11/2007
Senior Software Developer
Internet Kiosk for Changi airport (was deployed to all PCs in transit zone - more than 200). A PC with limited functionality – to use IE only, with a single session limited by timer; numerous features like disabling some UI elements of IE, auto-reboot, cleaning cache, etc. C++, Win API, reverse engineering.
Management console for Securite, a suite for advanced Internet Security. The console's task was to create and edit a complex xml-document (Website security policy) in user-friendly way. Extensive work with multiple dependant DataGridViews, on-the-fly data validation, logging of all changes, XML reader/writer, C#, .NET 2.0, MS Visual Studio 2005.
Securite Installer, a full-featured installer using NSIS. NSIS script language, custom pages, external DLL calls, etc. Two helper DLLs for Securite Installer: DLL for removing inf-files from Windows driver cache (using Windows DDK), DLL for checking activation code using MD5. C/C++, MS Visual Studio 2005, Windows DDK, open source C code.
Java servlet to grant clients their IDs. It used database to maintain IDs and client data. Wrote servlet, Installed and configured Apache webserver, created database schema in MySQL, tested the whole system. NetBeans, Java 1.5, JDBC, MySQL, Apache.
Credit Suisse – Singapore, 7/2004 – 12/2006
FastBooker is a project for bank's Tokyo exchange traders to book large collections of traded products/stocks (baskets, up to several thousands of products). Lead of team of two. FastBooker is a GUI multi-threading application which reads daily trade results and trade reference data from several databases and proprietary trading servers, processes them and writes processed data to a back-office database. Designed class structure and developed major part of the application (data manager, data loaders/writers, major part of UI, booking processing logic, interaction with trading servers). The main challenge was to do a reverse engineering of three existing booking applications and several database schemas in order to understand and capture complex business processing logic. Used .NET synchronization mechanisms for multi-threading work. Optimized database access for considerable performance increase. Developed versions 1 and 2 of the application, implemented numerous smaller enhancements (by traders' requests). Did a second-level support for the application, fixed production issues. .NET, MS Visual Studio 2003, C#, ADO.NET, Sybase, SQL, Reuters SSL library, MS Visio 2000.
GPTMS for Asia project, a large-scale client-server application suite for trading big volumes of stocks (baskets) on stock exchanges around the world. Participated in bug-fixing, implemented several small enhancements. MS VisualBasic 6.0, Visual C++ 6.0, Perl, Unix.
Marconi Wireless/Northwood – Kanata, Canada, 6/1999 – 5/2003
Senior Software Engineer
ERA project – a new generation, large scale (several hundred classes) .NET/C# framework serving as a base for all future products of the company. Made requirements analysis, designed and implemented one of ERA core parts - Mapping subsystem (GIS part of ERA’s broad functionality), with the goal to provide users of the framework an abstract unified API to GIS functionality. It was designed to be able to work with any 3-rd party GIS engine and to isolate peculiarities of a particular GIS. MapInfo MapX 5.0 (a complex COM-server) was used as GIS engine inside ERA’s .NET environment. Participated in establishing coding and design standards, actively discussed various architectural issues of ERA framework. Participated in design and code review sessions. UML, Rational Rose (for class and package diagrams), MS Visual Studio .NET/C#, ILDASM.exe (for taking a look at the insides of some .NET classes), .NET-COM interoperability, MS FxCop, MS Project.
Converted from Java to C# a library for working with
Northwood grid files (very large two-dimensional matrices with additional
geo-information). The library is used currently by many developers at the
company. C#, Java, MS Visual Studio .NET. One year before that wrote the same
library for Java using existing C/C++ version as a base. Reverse engineering of
C/C++ code, MS Visual C++, MS Visual Studio .NET/C#, Oracle JDeveloper.
Support and further development of Regression Analysis tool for deciBel Planner and Planet EV products (planning and RF-analysis of cellular networks). Reverse engineering of existing C++/Delphi code. MS Visual C++, Delphi, MapInfo MapBasic.
Business layer of a client-server enterprise Java solution for RF (radio frequency waves) analysis of cellular networks (lead of team of two). The whole project was developed by Oracle-MapInfo-Northwood trio. Wrote an EJB running inside Oracle Java Server and performing complex numerical calculations on RF propagation and analysis. Numerical part was converted from existing C code. Because of Oracle Java performance problems, developed a separate Java application, which was running outside of Oracle and taking all data from it through XML job-file created by EJB inside Oracle. Performance was considerably improved but still was about 30-40% of C code. Did a thorough optimization of numeric Java algorithms (about 12000 lines of code) and achieved 80-83% performance of C code. Wrote Java utility with simple GUI for batch uploading project data in Oracle. JDK 1.2, Symantec Café, Oracle JDeveloper, JDBC, Win NT, Unix (Solaris 7), Hummingbird Exceed.
Participated in support of deciBel Planner product line (planning and RF-analysis of cellular networks). Fixed bugs, implemented some new features. Borland Delphi, MS Visual C++, MapInfo MapBasic.
Manugistics Canada, Inc. – Ottawa, Canada, 1/98 – 6/99
Senior Software Engineer
ProView project, beta version (member of team of two), part of firm’s supply chain management and planning suite. Designed and implemented client-server CORBA-based system for convenient representation of complex data (proprietary database) and ad-hoc queries. CORBA (Iona Orbix 2.3), MS Visual C++ 5.0. Designed architecture of the whole system and tree component (millions of tree-nodes, both client and server part). Implemented server’s core part, server tree-object and client tree-view, simple filtering functionality.
Java/C++ connection. Small project to connect C++ client and Java server: calling several functions and passing in/out complex data-structures. Sockets and Rogue Wave Tools++ Professional library.
OLE DB provider. Designed and implemented OLE DB provider to access proprietary database. MS Visual C++ 5.0, MS OLE DB Templates. Implemented basic table navigation and one-table queries (SQL SELECT-like statement).
Corel Corp. – Ottawa, Canada, 1/95 – 1/98
Common User Interface Team (10/97 – 1/98). Remagen project, Corel's client-server solution to run Windows applications on multiple platforms. Server side - C++, client side - Java, VisiBroker CORBA broker for language & platform independent client-server communication. Designed and implemented some common controls for Remagen Java client. Worked both on user interface and server communication. Fixed numerous bugs in common engines of Corel DRAW 8 suite. MS Visual C++ 5.0.
Corel Office for Java (01/97 - 09/97). Designed and implemented Expense Report component of CorelCentral, a corporate information manager (e-mail, scheduler, address book, etc); implemented several custom UI controls and print engine. Ported from JDK 1.0 to JDK 1.1. Later, participated in development of corporate e-mail Java package. Symantec Cafe 1.5-1.8, third party libraries.
CorelVIDEO Remote, video-conferencing (1/96 - 12/96). Designed and implemented Internet connection between remote video-client and corporate video-server. Server maintained database of users and their snapshot pictures (freeze frames), published the database on Internet. Remote client accessed staff freeze frames via HTTP. OLE automation, MS Visual C++ 4.2, MFC, part of MS ActiveX SDK (Wininet library), some HTML, CGI, DAO extension of MFC. Windows 95/NT.
CorelCHART (1/95 - 12/95). Porting CorelCHART to 32 bit for NT/Win95. Designed and implemented new Windows 95-style user interface of CorelCHART 6.0. Restructured the previous version of the project for run-time efficiency and multi-language support. Merged Corel’s C++ graphic framework with legacy C code, implemented numerous old features for the new framework. Solved some issues of implementing CorelCHART as OLE server. Over 600,000 lines of code. MS Visual C++ 2.2/4.0, MFC 3.0/4.0, MS Windows 95, MS Windows NT 3.51. All new code written in C++. MS SourceSafe 3.x-4.x.
Moscow Office of Okna Corp. – Paramus, NJ, USA, 1/94 – 9/94
Project Manager/System Analyst
One of key developers of next version of DeskTop Set, a personal information manager for MS Windows (awards of PC Magazine, PC World, Windows Sources). Project size: about 500,000 lines of code in C. Managed team and assigned work (MS Project). Designed new general object-oriented application architecture and specifications of several new subsystems. Studied OLE 2.0, ODBC 2.0, Windows 95 guidelines. Interviewed and tested 200 candidates for developer positions. Developed several critical enhancements. MS Visual C++ 1.5. Wrote user manual of new features.
Eighteks – Moscow, Russia, 3/91 – 12/93
System Analyst/Software Expert
Designed the next version (2.0) of CASE system CASE.Analyst - large scale application (more 150,000 lines of source code) for MS Window 3.x, the winner of Borland Contest ’93. Duties included team management, schedule planning and monitoring (MS Project). Designed new key features of CASE.Analyst. Wrote "Additions To User's Guide". Pavement - graphical application for management of exploitation information about airport technological pavement. Managed team of two, made requirements analysis and OO design, implemented core parts of GUI. Borland C++ 2.0, Paradox Engine.
Developed Russian (Cyrillic) keyboard driver for MS Windows 3.0. The challenge was to write the driver without DDK which required reverse engineering of Windows internals. C, Assembler.
All-Union Research Institute of Instrumentation – Moscow, USSR, 1986 – 1991
System Analyst/Project Leader, 1989 - 1991
Responsible for design, implementation, testing and documenting an operating environment MUZE (sophisticated command shell with full-featured programming language and libraries) for Russian enhancement of HP-2000. Managed team of 9. Made requirements analysis and design. Wrote three manuals, Implemented key MUZE's modules. Pascal, SPL (system programming language), RT DOS.
Engineer-Programmer, 1986 - 1989
Developed SM-2M/RT DOS file system emulation on IBM/370. Participated in development of large-scale (over 600,000 lines of code) real-time system for monitoring nuclear reactor. Developed numerous utilities, special async keyboard driver, etc. Pascal, Assembler, C, FORTRAN-77, RT DOS, IMB/370.
EDUCATION AND TRAINING
M.S. Applied Mathematics, 1980-1986, Department of Cybernetics, Moscow Engineering Physics Institute, Moscow, USSR. GPA 4.85 (out of maximum 5), Degree with Honor.
TOSCA Certified User Foundation Level. March 2013, The Testing Consultancy, Singapore.
Advanced technology course “Object-Oriented Analysis & Design Using UML”.
November, 2001, Learning Tree Education Center, Ottawa, Canada.
Brainbench.com certificates (#2549717): C11 - 4.07, 2013-05-28; C# - 4.02, 2006-02-23