LinkedIn | Compact
Resume | Personal Website
Software Engineer in C++ on
MS Windows is looking for a job related to image analysis, machine vision, computer vision,
image processing, or industrial automation. I can not
consider myself an expert in IA, but I'd like to apply my C++ software skills in
- C++, C, C#, HTML, XML, XSLT, Java script, CSS,
- Windows 7/XP/2000/NT/98/95/3.1
- STL, Multithreading, Windows API, CRT, MFC, COM,
ActiveX, DLL and static Libs
- Intuitive Surgical: NPI, stereo endoscope
verification equipment and software, maintained existing code and developed 3 new projects, C++, Python;
- Infosys: Internet server-client for testing XML communications;
- Yes San Francisco LLC: Virtual tour production, Java, HTML, C++, C#
- AB-Software: Image analysis, image processing, and video
software, GigE, C++;
- Incyte Genomics: Image analysis program to analyze DNA
- MRS Inc: A real-time control of a complex machine, MFC, STL, C++;
- CoreTek Inc: Software consulting, framework libraries,
graphical editors, cross-platform development with Mac and UNIX;
- Creative Labs: Graphical editor for collaboration over
network, MFC, C++;
- Computer Curriculum Corporation: Framework cross platform libraries for interactive educational
software, animation, Windows and Mac, C;
documentation, problem solving, debugging, white box testing, prototyping,
profiling, delivering the final product
Areas of expertise
C++, STL, C++ Template
programming, Generic programming, GUI, Graphics, Video, Animation, Interactivity, Image Analysis,
Image Processing, Software design, Manufacturing environment, Cross platform
development, Website design and promotion, Education, Genomics, Machine
control, Basic electronics (analog and discrete digital), Professional photography,
Instruction, Virtual Dance, Virtual Tours,
Pseudo-Stereo, Systematic Innovation, Quality management through innovation techniques of TRIZ
- Developing robust, maintainable, fast, testable
programs and tools through all stages. Utilizing available libraries,
technologies. Vision of advantages of object oriented design and generic programming. Keeping
code simple, clear, easy to read. Software strategy: developing code along with supporting test cases, design for testability, wide use of test
drivers and test agents. Analysis and design for performance;
Understanding that maintain-ability requires significant design and coding efforts.
- Troubleshooting and debugging of complex code.
Reverse-engineering. Streamlining, optimization, transformation of legacy code;
- Appreciating advantages of knowledge exchange and clear documentation;
- Efficient use of collaboration between
colleagues. Supporting broad thinking, openness, creative, cooperative
working environment. Experienced in
Systematic Innovation, brainstorming, quality improvement (TRIZ); Documentation, Agile;
- Finding optimal and simple solutions. Thorough
investigation and choice of system-defining classes and algorithms. STL
style. Optimal structurizing into classes and data structures, functions, files; use of
templates leads to decrease of complexity therefore better human productivity.
Code reuse, libraries, modules. Awareness of impact of small
modifications. State machine approach.
Love for diagramming.
MSEE (Soviet Union, Minsk)
in Automatic Control Systems, 1984; TRIZ school
20 years software engineering, industrial
automation, research; 10 years photography; 2 years web design
- Interested in making the job done and with high
- Is able to identify and analyze problems, finding roots of problems, and solve them;
- Creative, able to find unusual, innovative
- Is able to prioritize, structurize tasks;
- Helpful and supportive
Interests in image analysis and image processing
- Morphological algorithms, wavefront algorithms,
image enhancement, filtration, segmentation, noise reduction, concavity
- Processing of gray images for asynchronous
- Algorithms of shape determination on binary and
gray level images. Recognition of alphabetical symbols and hieroglyphs;
Topological and topographical approaches.
- Processor design for fast execution of
- Automatic problem solving algorithms of
inventive problems and knowledge presentation for inventive problems;
- Chris Nailor's implementation of recognition
engine based on Bayes theorem.
|2015 (one year)
Intuitive Surgical, Software Engineer, NPI, Stereo Endoscope production group
In the Vision group, as part of the team, responsible for design and implementation of systems and algorithms of production and testing equipment of the stereo imaging system of the surgical robot
Developed three new projects of stereo endoscope production equipment by creating and building projects using C++, Python, XML controlling cameras and electronic and moving equipment, and incorporating and making changes to image analysis Matlab modules designed by IA specialists. Cooperation in preparation of the official FDA documentation with a product manager. Prepared the design and software documentation for internal use:
- Color calibration of a proprietary light engine using Radiant Zemax camera;
- Cross-talk correction of the camera;
- Production line verification of the camera depth of field (DOF) and other parameters;
- Maintained, bug-fixed, tested other production line fixtures and software;
- Worked in a team of s/w engineers, testers, image analysis component designers, mechanical and production engineers;
- Modified and enhanced Matlab code;
- Wrote documentation, performed IQ, OQ, and DQ (Design qualification);
- Participated in design and discussion of other projects;
- Diagrammed the software and the production line;
C++, Python, Matlab, Agile, SVN, Radiant Zemax camera, stage and motor control, VS 2013, 2012, 2008
R&D, Yes San Francisco, LLC, www.virtuar.com
- Consulting for A&B
Software [www.ab-soft.com] (All work was done telecommuting);
- Improvements to "Image Warp" production
and scientific Image Analysis software [www.imagewarp.com];
- Developed a generic template C++ library for image processing: optimized algorithms,
iterators, functional objects on segments of images of any shape;
Published on SourceForge under the Mozilla 2.0 license [sourceforge.net/projects/asynchwave/]. Results are presented in the article (see below);
- Design and implementation of a module
for Hamamatsu x-ray line cameras in ImageWarp. It interacts with the
camera to acquire real-time scans assembling them into a constantly
moving image along with immediate application of image processing.
Extraction of frames of arbitrary size;
- Detection and segmentation of regular patterns
on periodic-patterned images. Spatial frequency of features was
- Design and implementation of
video-file (AVI and other) reading support for GigE-supporting products
utilizing DirectShow support for video; Image processing is applied to
the video; The video then is transmitted via network. All parameters are
variable and controllable from the receiving side.
- For Yes
San Francisco [www.virtuar.com/click.htm] developed in 2002 a concept of Virtual Walking Tour
pre-dating Google's Street View. Implemented as web-sties in HTML and
- Walking tour
editing software in C++ for Windows;
- Developed an interactive Java applets with
animation to present walking photo tours on the Web and in a stand-alone
- Photography and content design work. More than
10000 photos were produced;
- Developed a Web site for the on-line presentation,
a Web-shop, 2002;
- Performing search engine promotion, SEO.
Achieved 1st place on Google on "San Francisco Virtual Tour "
search and other searches;
- Produced three CD products: "San Francisco Virtual
Tour", "Alcatraz Virtual Tour", "Las Vegas Boulevard
- Researched the concept of parallax
This effect allows presentation of stereo images on the regular monitor without glasses;
unified data-code diagrams.They are used to diagram actual software (not UML). See the reference to the article below;
Java, C++, C#, HTML, VS 2008, VS 2005, Visual
Studio 6.0, Dreamweaver, Adobe Photoshop
Infosys, Cisco Consulting
- Developed an intranet website-tutorial. XML,
MSDN. Hundreds of pages with various graphical methods of GUI and
information presentation and retrieval;
- Studied physical security aggregating software,
Honeywell Vindicator V5, DigiFort;
- Helping in design, development and testing of
integration modules. XML, .NET, C#
- Developed a test internet server and client;
.NET, C#. This was used to intercept and monitor XML exchange between
various components on the network during development.
When I came there, they were testing communications manually. I proposed an intermediate test server which saved time and efforts.
Dance Instructor, independent, Palo Alto, CA
- Designed a promotional website with content and
SEO; Dreamweaver, Photoshop. Hundreds of pages and photos;
- When I started to learn Argentine tango, there was a confusion about technique and styles. I have developed a theory of body movement mechanics suitable for this complex dance and wrote a book. The results achieved allow automatic generation of dance (an AI topic);
- Conducted numerous workshops up to 40 people and private instruction.
Sr. Software Engineer, Incyte
Genomics, Inc., Palo Alto, CA.
Was responsible for an Image Analysis part
of the production software. This is the program which received scanned images
of 10,000x2 spots arranged in 2 big square fields, recognized the spots, and
calculated a number for each spot corresponding to a value of a certain gene.
These values were entered into a database, and then viewed and analyzed,
automatically or manually by a database application called GemTools.
- Owned the image processing project, including research and development of
technological aspects, development of specifications, software
architecture, design and implementation. Responsible for all aspects of
the image processing software and algorithms at the Incyte Microarray
- Performed reverse-designing
and wrote a diagram of the initial image analysis algorithms to use for
further development and proof of their validity to researchers and
- Developed an algorithm of spot
recognition robust to absence of spots. Used spatial frequency
method to obtain the result.
- Algorithms: improving reliability, implementing new
imaging algorithms, and integrating new and innovative statistical data
methods which dramatically improved the quality of the final result.
Ported MatLab algorithms
- Troubleshooted production issues;
- Code: spent significant efforts reorganizing and streamlining the
image processing code using generic programming methods. Wider use
of functions, classes, STL, templates helped to reduce the amount of
code, made testing easier and more comprehensive; It also greatly
reduced implementation time and simplified bug fixing.
- Designed and implemented STL-style
basic template classes for image analysis;
- Implemented code to generate detailed windows
- Incorporated graphical data visualization
third-party controls into GemTools for viewing and
printing of the database Genomics data related to scans;
- Developed a module "Element Display"
for interactive browsing among spots ( dialog box, interactive graphical
engine, acquiring data from the database and visualization ). Up to
10,000 GUI elements in a view;
- Developed a module "CytoStain" (code,
data algorithms, dialog box);
- Developed GemTools module "GEM
Groups", creating, acquiring and processing information about
groups of scans in the database;
- Incorporated TCL scripting
engine into Image Analysis program and into the GemTools;
- Incorporated PDF third-party printing library;
- Participated in design of new GemTools modules
and additions to the database schema and updated image analysis program
to work with the new database schema;
- Provided software support for research in
statistical improvement of the quality of the output data;
- Designed the next version of the image analysis
product capable of the whole human genome processing (100,000 genes in
one scan) and directed outside contractors to implement it.
- Wrote documentation and drawings.
VS C++, MS Windows, MFC, STL, image
Sr. Software Engineer, MRS Inc., CA. (Magnetic Recording Solutions,
Responsible for design and implementation
of a real-time control and data collection program for a complex high-speed
magnetic media certifying machine for hard drive industry. It was the first
program in the industry implemented on Windows NT with multithreading. The
program reads a number of complex system and data files, assembles the
sequence of control algorithms, performs actions in automatic and manual
modes, reacts to interrupts, acquires data from hardware, processes and
stores data, collects statistics, informs operators about actions, reflects
hardware parameters and data, performs error handling, cancel and abort
- Designed from specifications the main
production multithreaded program. Wrote and debugged the code. Wrote
- Designed and wrote the data processing library
used in the main and other two supporting programs in the system;
- Implemented a simple Windows NT Direct
Port I/O driver to access hardware directly;
- Debugged and tested operations of the program
on the actual machine;
- To check validity and timing of data processing
algorithms developed automatic test drivers. State machine approach to
the data processing design ensured the success;
- Used MFC and ActiveX
in design and implementation of GUI;
- Used STL to implement data objects and perform
efficient collection of and pattern recognition on acquired data;
- Where efficient, templates
and C++ inheritance and polymorphism where used;
- Adopted TCL engine for use as
an interactive runtime debugging and tracing tool.
Engineer, CoreTek Inc., CA.
Three lead engineers from CCC established a
start-up consulting company and convinced me to join them as the first
employee. Here I dived into 24-hours of development and programming of new
modules along with concurrent work on complex software systems and bug
fixing. The work was mostly done telecommuting.
- Palladium Interactive: Worked on Genealogy software;
Development of new modules and porting to UNIX using Bristol technology.
New modules included porting of windows controls controlled by TCL
scripts from the database application, Emulation of try/catch exception
- Mindscape: Debugged ported PrintMaster;
Worked on QuickStitch, image manipulation program: Windows design for MS
- Designed C++ framework library and C++
- other projects including Netscape programming,
a graphic editor, writing custom windows controls.
MFC, GUI, ODBC, TCL interpreter, Internet,
in Windows 95, Windows NT, MS SQL Server, MAC, Unix-shells, Windows3.1.
Engineer, Creative Labs Inc.,
It was a division newly
acquired by Creative Labs which produced a Shared Whiteboard Application used
by US Navy. This is a graphical editor when a document is controlled simultaneously by several parties over the network. I was responsible for design and implementation of the next
generation of it, multi-windowed. Here I have started to work with 32 bits of Win95 with
MFC3.2 in Visual C++ 2.2. My part was a general purpose MFC MDI application. Designed and implemented a graphical C++
The main problem was scripting of MFC windows. I solved this with the approach of connecting components in run time through a message mechanism with "systematic" messages. For example, the mouse module generated not WM_LBUTTONDOWN or WM_MOUSEMOVE, but IMPULS and SEQUENCE messages. This generic approach allowed very flexible combination of components in run time and re-connection of them to test agents.
Software Engineer III,
Computer Curriculum Corporation (CCC)[Paramount Pictures],
CCC, a subsidiary of Simon&Schuster, a subsidiary of Paramount Pictures, produced complex educational software
for schools. The software run on Macintosh and Windows, but originated from
Atari system. My responsibilities were to fix bugs in the framework library
for cross-platform development and develop the next version with the support
of interactive features, multiple windows (the system was one-window only),
animation and movies.
Original software was a legacy software which had only one window. I have
made it "multi-windowed". The successful approach I have chosen was
to emulate Windows system API on Macintosh. C, C++, MPW
The new library provided support for the
scripting engine used by the developers (C-interpreter), therefore objects
like windows and controls had to be configurable and re-connectable at run
time. Developed classes to support this functionality.
Research. San Francisco, CA.
Conducted private research in image
analysis algorithms, super scalar processors, graph presentation, and
automated creative problem solving;
Developed a method how to speed up and turn
into superscalar ones a regular processors like Intel with the introduction
of the very wide data bus. The main problem here is how to access any memory
location, not necessarily word-bound. It was solved by the special memory
design. With such design the transition to 64-bit processors processing
32-bit code would require much less memory. It is possible to design 1024-bit
bus and processors without unneeded increase in memory size.
This method is still applicable to modern processors. It would allow to make Intel 64-bit programs much smaller, and therefore faster.
Polk: “A memory to read out and write a block of words via one memory access
from a random address”
in 1992 IEEE 26-th Asilomar Conference on Signals, Systems & Computers.
Wrote programs in Windows and C, C++,
MSDOS, MS Windows, PROLOG.
Medical Institute, USSR
Responsibilities included the research in
image analysis algorithms and application to the medical field.
- Researched image processing: morphological algorithms, image enhancement,
filtration, segmentation, noise reduction, interactive (mouse) image
modification of the microscopic and X-ray images;
- Researched wavefront algorithms of the topological and topographical shape feature extraction on binary and
gray level images. Created a system of such algorithms for recognition
of alphabetical symbols and hieroglyphs. The system proved to be very
robust to image and symbol distortions. For example, the letter 'a' and
'A', independently of size, lighting, variation in orientation, and
noise where identified by the same feature. Publication: "Wavefront
algorithms of topological feature extraction on gray level images";
- Invented and designed a processor
for fast execution of the wave-front algorithms; The main feature is
accessing a pixel and 8 its neighbors via one memory access;
This was not a trivial problem in the age of cache-less processors.
- Researched in automatic problem solving
algorithms of inventive problems and data representation for inventive
problems. For example, the program successfully solved such
problem: "there is a tightly closed barrel containing unknown
liquid. The barrel is heating. Detect the moment when boiling
starts". In case you want to try to solve it, there are multiple solutions;
- Designed and wrote a medical diagnostic
research program implementing Chris Nailor expert systems engine
based on Bayes theorem in probability. I wrote this system 4 times in my
life: in PROLOG, in Pascal, in C, and in C++.
maintenance and support engineer, Minsk computer center of the ministry of
Maintaining PDP computers
and data entry systems.
Systems Engineer, Mogilev Chemical Company, USSR
Responsibility included support for the
main technological process control circuits of the large chemical plant,
troubleshooting and repairing industrial electronic devices and sensors. The
plant, designed in and built by West Germany engineers (Hoechst) consisted of
4 production lines in the building 300ft long and 4 stories high. Control
circuits included 6 micro-processor-based computers, main computer, data
collection computer, and numerous control electronics including sensors (it
was before an era of total computerization).
- Redesigned central control computer
program for TI-550 to be
adaptable to chemical process parameters and controllable by human
operators. Originally, the process parameters of the original algorithm
were hard coded in formulas making it impossible to modify, the code was messy. The streamlined design
was made on a reserve computer, tested, and then software, at the working
computer, was replaced smoothly with the minimal disturbance to
- Improving and re-drawing schemas of and
repaired gas analyzers, a power supply station, numerous digital
control circuit boards and controllers, magnetic sensors;
1984, MSEE, Minsk
Institute for Radioelectronics, (now BGUIR), USSR (Belarus now)
Studied: mathematics, physics, drawing, computer science (computers,
programming, microprocessors), electronics (analog and digital), automatic
systems control theory, english, writing,
philosophy. Diploma: "Machine vision control system of a painting
1983, Minsk TRIZ school. Based on the study
of patents, methods used to develop strong solutions to inventive problems
were collected. The course included the methods of system thinking and
intensifying thinking process, 77 methods of solutions of contradictory
problems, 44 principles to solve complex problems in technology, 7 trends in
evolution of technical systems. The two-years course included intensive
problem solving training in all areas of technology.
Construction of Convex Sets on Quadrilateral Ordered Tiles or Graphs with Propagation Neighborhood Operations. Dales, Concavity Structures. Application to Gray Image Analysis of Human-Readable Shapes. https://arxiv.org/abs/1608.08251;
Unified Control and Data Flow Diagrams Applied to Software Engineering and other Systems. https://arxiv.org/abs/1610.02374;
A human body movement theory book "Twist Forms".
A guitar book "Perfectly Aligning
Guitar Frets and Strings with Notes on a Staff" describes a new method
of presentation of musical symbols like notes for simplifying sight-reading
Tango website; Virtual Tour website
Available upon request.
US citizen. Hobbies are
mathematics, dancing, dance instruction, running, camping, guitar