LinkedIn | Compact
Resume | Personal Website
|
Objective
|
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 this areas.
|
Technology
|
- C++, C, C#, HTML, XML, XSLT, Java script, CSS,
Python
- Windows 7/XP/2000/NT/98/95/3.1
- STL, Multithreading, Windows API, CRT, MFC,
COM, ActiveX, DLL and static Libs
|
|
|
Work
|
- KLA-Tencor: stitching of circular
images, C++, Windows, Linux, Python;
- 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;
Cisco, an intranet website-tutorial, C#, HTML, Javascript, XSLT;
- Yes San Francisco LLC: Virtual tour production ("Street
View"), Java, HTML, C++, C#
- AB-Software: Image analysis, image processing, and video
software, GigE, C++;
- Incyte Genomics: Image analysis program to analyze DNA
microarrays, C++;
- 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;
|
Skills
|
Design, coding, documentation, problem
solving, debugging, white box testing, prototyping, profiling,
delivering the final product, ...
|
Areas of
expertise
|
C++, STL, C++ Templates,
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
|
Focus
|
- 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.
|
Academic
qualification
|
MSEE (Soviet Union, Minsk)
in Automatic Control Systems, 1984; TRIZ school
|
Experience
|
20 years software engineering, industrial
automation, research; 10 years photography; 2 years web design
|
Personal skills
|
- Interested in making the job done and with high
quality;
- Is able to identify and analyze problems,
finding roots of problems, and solve them;
- Creative, able to find unusual, innovative
solutions;
- Is
able to prioritize, structurize tasks;
- Helpful and supportive;
|
Interests
computer science
|
- Morphological algorithms, wavefront algorithms,
image enhancement, filtration, segmentation, noise reduction, concavity
tree;
- Processing of gray images for asynchronous
parallel processors;
- 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
wave-front algorithms;
- Artificial Intelligence based on Systems
concept;
- Automatic problem solving algorithms of
inventive problems and knowledge presentation for inventive problems;
- Chris Nailor's implementation of recognition
engine based on Bayes theorem;
|
EMPLOYMENT:
|
|
2017 (one year)
|
KLA-Tencor, Software Engineer, contract
|
|
- Conversion of mathematical, statistical
algorithms written in Python to productive C++;
- Redesign and update of stitching algorithms of
images produced by a rotating camera in real time. Code is implemented
within complex multithreaded software, C++, developed in VS, compiled in
Linux.
|
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
|
2002-present
|
R&D, Yes San Francisco, LLC, www.virtuar.com
|
|
- Consulting for A&B
Software [www.ab-soft.com] (All work was done telecommuting,
remotely). The product obtained an award by the "Vision Systems
Design" magazine in 2018: "A&B Software was presented with
a prestigious gold-level award in the software category at the Fourth Annual
Vision Systems Design Innovators Awards presentation. The Vision Systems
Design 2018 Innovators Awards program reviews and recognizes the most
innovative products and services in the vision and image processing
industry";
- 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
measured.
- 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-sites in HTML and java;
- 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
version;
- 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
Virtual Tour".
- Researched the concept of parallax
effect stereo. This effect allows presentation of stereo images on
the regular monitor without glasses;
- Invented 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
|
2012-2013
|
Infosys, Cisco Consulting
- Developed an intranet website-tutorial. XML,
XSLT, Javascript, CSS, animations. Interface design is the same as of
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.
|
2002-present
|
Dance Instructor, independent, Palo Alto, CA
|
|
- Designed a promotional website with content and
SEO; Dreamweaver, Photoshop. Hundreds of pages and photos;
- Conducted numerous workshops up to 40 people and
private instruction;
- Worked on concepts of human body movement
suitable for automatic generation of dances;
- Wrote a dance theory book (see below) on human
movements.
|
06/1999-01/2002
|
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
facility;
- 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
customers;
- 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 into C++.
- 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
application logs;
- 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
analysis, TCL
|
04/1998-04/1999
|
Sr. Software Engineer, MRS Inc., CA. (Magnetic Recording Solutions,
Inc.)
|
|
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
functionality.
- Designed from specifications the main
production multithreaded program. Wrote and debugged the code. Wrote
documentation;
- 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.
|
1/1996-4/1998
|
Software
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;
- Scopus:
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
functionality;
- Mindscape: Debugged ported PrintMaster;
- EnRoute:
Worked on QuickStitch, image manipulation program: Windows design for MS
cross compiler;
- Designed C++ framework library and C++
graphical library;
- 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.
|
6/1995-1/1996
|
Software
Engineer, Creative Labs Inc.,
Milpitas, CA.
|
|
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++ library. 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.
|
3/1993-6/1995
|
Software Engineer III,
Computer Curriculum Corporation (CCC)[Paramount
Pictures], Sunnyvale, CA.
|
|
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.
|
3/1991-3/1993
|
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.
Publication Igor
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.
|
1988-1990
|
Researcher, Minsk
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++.
|
1986-1988
|
Computer
maintenance and support engineer, Minsk computer center of the ministry of
trade, USSR
|
|
Maintaining PDP computers
and data entry systems.
|
1984-1986
|
Automatic Control
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
production;
- Improving and re-drawing schemas of and
repaired gas analyzers, a power supply station, numerous
digital control circuit boards and controllers, magnetic sensors;
|
EDUCATION:
|
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 robot".
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.
|
PUBLICATIONS:
|
A book on innovation methods:
"Junctions. On How Worlds are Connected", 2018;
Innovation methods conference TRIZCON2018,
Purdue University, Lafayette. Two presentations: "Mathematics and
Dialectics of Dance" and "David and Goliath. What Principles are
Involved";
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". http://www.virtuar.com/tango/theory/tb0.htm;
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 skills learning.
https://www.amazon.com/Perfectly-Aligning-Guitar-Frets-Strings/dp/B005HZX1DQ
Tango website; Virtual Tour website
|
REFERENCES:
|
Available upon request.
|
PERSONAL:
|
US citizen. Hobbies are
mathematics, dancing, dance instruction, running, camping, guitar, reading
|