sergey.a.kabanov
BAN USERI am an accomplished Software Engineer with over twenty-six years of experience in Object-Oriented design and development and over fifteen years in the U.S as a Senior / Lead Software Engineer, who is an expert in:
• full life cycle software (SDLC) project design and development
• project time line and resources calculation
• strategic decisions (project structure, program languages, algorithms and technologies)
• program architecture, development, testing, deployment, and technical documentation
• customer support
• technical leadership of 2 - 5 members team
Sergey Kabanov
10520 Chapel Hill Rd, Unit 111
Morrisville, NC 27560
Cellular: (630) 731 83 93
E-mail:
sergey.a.kabanov@gmail.com
U.S. Permanent Resident
http://www.linkedin.com/pub/sergey-kabanov/23/458/b64
My C++ programming and algorithms blog at CareerCup:
http://www.careercup.com/user?id=12402466
OBJECTIVE
To secure a challenging position as a SOFTWARE ENGINEER, SOFTWARE ARCHITECT and/or a team leader.
SUMMARY
An accomplished Software Engineer with over twenty-six years of experience in Object-Oriented design and development and over fifteen years in the U.S as a Senior / Lead Software Engineer.
Responsibilities:
• full life cycle software (SDLC) project design and development
• project time line and resources calculation
• strategic decisions (project structure, program languages, algorithms and technologies)
• program architecture, development, testing, deployment, and technical documentation
• customer support
• technical leadership of 2 - 5 members team
Environments, tools, and libraries used for software development:
• Primary program languages: Visual C++, C/C++, C, VB
• Primary software design environments: MS Visual Studio (2003…2015), Code Composer Studio (V5), WinCE Platform Builder
• Primary operating systems: WINDOWS NT/2000/XP/Vista/2003 Server/2008 Server/2012 Server, WinCE 5.0, WINDOWS 7, WINDOWS 8.1
• Auxiliary operating systems: MS DOS, UNIX, Sun Solaris
• Auxiliary program languages: VJ++, VB scripts, Java scripts, Borland C++, FORTRAN, Pascal, Assembler
• Software modeling tools: IBM Rational Rhapsody
• Notification languages and standards: SQL, XML, JSON, HTML, HL7, DICOM, FHIR
• Libraries: MFC, WIN32API, WinCE API, STL, ATL, GDI+, GDK, Windows Media SDK, WMI, OpenGL, Qualcomm, Novatel, Franklin, Sierra and Dialogic API, RESTful API
• Components and controls: COM/DCOM/COM+, ActiveX, WMI
• Data access models: ODBC/DAO/ADO, SAP as database security layer
• Databases: MS Access, SQL Server, DB2, Oracle
• Protocols: CAN-BUS, TCP/IP, Telnet, FTP, RCP, ASAI, VoIP, Token Ring
• Wireless technologies: GSM, CDMA, WiMax
• Special purpose servers: CTI, IIS, VPN, SAP
• VMWare and Hyper-V virtual machines
• Middleware: SQL data access (ADO, ODBC), XML and JSON interpreters, IIS
• Installation environments and tools: InstallShield, MS Visual Studio Installer, Visual Basic Installer
• Source control tools: VS Source Safe, Tortoise SVN, CMake, IBM Clear Case, Seapine Surround, Team Foundation Server
• Software testing tools: VectorCast
• Team coordination and product development managing systems: JIRA, Mercury Quality Control system, Team Foundation Server, Scrum / Agile
• Documentation systems: IBM Rational Doors, eMatrix
Software design and development experience areas:
• Real time multithreaded and multi-component medical images storage and control systems design, development and support
• DICOM and HL7 (HIIS) servers
• XSD and XDR schema editing tools for HL7 and XML translation servers
• Data communication protocols architecture, design, development and implementation
• Medical devices embedded software control and testing systems based on CAN BUS protocol
• Real-time, multithreaded wireless data access systems based on 3G (GSM, CDMA) and 4G (WiMax) technologies, designed and developed in C++ and STL for Windows 32 and Windows 64 platforms, and running on USB modems, Express cards, and PC cards
• Design and development of real-time video and image processing (AVI, MPEG, H.264, WMV, JPEG, PNG) surveillance systems with remote video sources in C++ and STL for Windows 32 and Windows 64 platforms
• Windows GUI design and development in C++, MFC, and STL
• Wireless video broadcasting and video / image compression development in C++
• C++ based Multi-threaded and multi-processed applications, parallel processing
• Video processing software plug-ins for surveillance server systems in C++ and VB
• 3D graphics based on OpenGL
• Integration with GPS systems
• Remote database control, relational database management systems (RDBMS) in C++ and SQL
• Database security layers’ design (SAP), based on C++, SQL, and ADO/DAO/ODBC
• 3D surface inspection applications in C++
• Software copyright defense and licensing procedures designed and developed in C++
• Special file access systems above FAT32 file system for portable devices made in C and C++
• Win CE based embedded system applications for tablet PC
• PDA based embedded server and Internet browser based client C++ software
• XML and JSON interpreters designed and developed in C++
• Network applications with TCP/IP protocol and Winsock API design and development in C++
• ActiveX components and COM servers integrated into MS Office applications made in C++ and Visual Basic
• Front end GUI products for Lucent/Avaya and AT&T IVR systems made in C++ and Visual Basic
• Internet and Intranet communication client/server applications design and development in C++
• Windows C++ based GUI tools for WINDOWS NT/2000 and UNIX - based IVR systems
• Multithreaded environments for TCP/IP socket data transfer between mainframe, WINDOWS NT/2000 server and UNIX-based IVR systems
• multi-tier C++ based applications with WINDOWS NT/2000/XP front end and UNIX back end
• Remote MS Access, SQL Server, DB2, and Oracle database control systems made in C++ and VB
• Computer Telephony Interactive Voice Response (IVR) applications made in C++ and Visual Basic
• Call centers telephony systems, voice processing boards support packages, WMA and MP3 audio codec
• Computer Telephony Integration (CTI) systems design and development in C++
• Communication between IVR and remote databases (including AS/400 servers and mainframes)
• IVR systems integration with third party text-to-speech and speech recognition systems and MS Internet Information Server (IIS)
• Credit card transaction gateways development in VB
• C++ and ATL based MMC snap-ins based GUI
• Embedded multi-processor systems design and development in C++
• Radio and TV studios design systems written in C++
• Parallel and serial ports (RS232, RS485) communication interfaces written in C and Assembler
• Trade network systems design and development in VB
• Multimedia training systems design and development in C++
• C++ based real-time remote devices control for radio and TV studios and for airline traffic systems
• C++ based real-time aerospace surveillance systems
• C based GUI systems for airline companies staff training
• Space satellite image processing systems design and development in C and Assembler
• Java applets and scripts based GUI help systems
• Customization of 3rd party applications
• Team leadership, presentations, exhibitions, and customer support
• FDA regulations based documentation
PROFESSIONAL EXPERIENCE
November 2013 – Present
FujiFilm Medical Systems USA, Inc., Raleigh, NC, USA
Lead Software Engineer
• Design, development, testing and support of real time, multithreaded and multi-component medical images storage and control systems
• DICOM & HL7 (HIIS) servers, integrated with IIS and Oracle database
• XSD and XDR schema editing tools
• Auxiliary utilities to measure operation timing for physical and virtual (VMWare and Hyper-V) machines performance comparison
• Oracle database stored procedures control
• National languages support / system localization
• Remote management of the overseas team
• presentations, exhibitions, and customer support
Main projects:
• Synapse:
Real time, multithreaded and multi-component system for medical images storage and management, works with DICOM standard for binary images, HL7 (v 2.4, 2.5) standard for information messages, consists of DICOM server, HIIS, Oracle database server, and client workstation, integrated with configuration tools, simulators, and IIS7 for internet access
• Fox:
The next generation of Synapse system: 64 bit components, HL7 v3 (RIM) and FHIR standards support, IIS8 integration
Environments, libraries, protocols, and technologies used:
Windows 2008 R2 and 2012 R2 64 bit servers, VMWare and Hyper-V virtual machines, Visual Studio 2010…2013, C/C++, MFC, STL, COM/DCOM/COM+ components, XML, XDS, XSD, DICOM, HL7 and FHIR notification standards, TCP/IP protocols, RESTful API, ADO and SAP for remote database access.
February 2012 – October 2013
Terumo Heart Inc., Ann Arbor, MI, USA
Lead Software Engineer
• Design, development, testing and support of universal data communication protocol between embedded controllers and external software systems
• Medical devices embedded controllers’ software
• Real time, multithreaded simulation systems for medical equipment communication and reliability testing
• Close coordination with quality assurance team
• FDA regulations based documentation
Main projects:
• DuraHeart II:
Real time software system for human heart pump control
• DTS:
Windows platform based system for human heart pump control software development and testing: CAN packets sniffer, filter and analyzer, embedded devices and data simulation
• CCE:
Universal data communication protocol between embedded medical devices
Environments, libraries, protocols, and technologies used:
Visual Studio 2010, C/C++, MFC, STL, Code Composer Studio V5, third party SDK libraries for communication interfaces (particularly for PCAN interface), IBM Rational Rhapsody as software modeling tool, Visual Source Safe and Seapine Surround as source control tools, VectorCast as software testing tool, IBM Rational Doors as documentation tool
September 2009 – January 2012
Smith Micro Software Inc., Chicago, IL, USA
Senior Software Engineer
• 3G (GSM, CDMA) and 4G (WiMax) technologies based real-time mobile data access software systems (particularly for Sprint, Verizon, AT&T, Comcast, and Clear mobile carriers)
• Wireless data access device software components
(particularly for Franklin, Sierra, Novatel, Qualcomm, and ZTE mobile devices) for multi-tier applications with User Interface front end and device-oriented back end
• Coordination with third party software development and quality assurance teams
• Customization of third party components and applications
• Management and improvement of application building utilities, and source control systems
• XML interpreters
Main projects:
• Sprint Smart View, AT&T Connection Manager, Clearwire Connection Manager, Time Warner Cable Connection Manager, Xfinity Comcast Connection Manager:
Multi-threaded real-time wireless data access software systems made for Sprint, AT&T, Clearwire, Time Warner Cable, and Comcast mobile carriers, and designed to work with variety of mobile devices: embedded modems, USB modems, express cards, and PC cards.
Environments, libraries, protocols, and technologies used:
MS Visual Studio.NET and MS Visual C++ environment, MFC, STL, ATL, WIN32API, Windows Media SDK libraries, third party SDK libraries for variety of mobile access devices, XML, Visual Source Safe, Tortoise SVN system, JIRA team tracking and coordination system
March 2004 – August 2009
Siemens Corporate Research Inc., Princeton, NJ, USA
Senior Software Engineer
• Real-time multi-threaded, multi-processor, and multi-task video and image processing (AVI, MPEG, H.264, JPEG, PNG) for security and surveillance systems
• Video / image compression and wireless video broadcasting
• Video processing software plug-ins for surveillance server systems
• Integration with OpenGL 3D graphics and GPS systems
• 3D surface inspection applications
• Remote database control and database security systems (SAP)
• Large memory allocation management
• Software copyright defense and licensing procedures
• ActiveX components and COM servers for real-time video and still image processing, integrated with MS Office applications
• ATL real-time components for portable / mobile devices and embedded systems, integrated with Internet browser based clients
• Special file access systems (Power Down Consistency File System) above FAT32 file system for portable devices
• XML and JSON interpreters
Main projects:
• RailProtect:
Multi-source, multi-threaded real-time video and image (AVI, MPEG, H.264, JPEG, PNG) processing, compression and wireless broadcasting security and surveillance MFC-based system, integrated with 3rd party video processing plug-ins, GPS systems, and software copyright defense and licensing procedures.
The system is now installed at New York train stations.
• Borescope:
Multi-source, multi-threaded real-time video and still image processing MFC system, based on COM server, integrated with MS Office applications and embedded into mini-PC panel.
• Global Inspection System:
Multi-processed 3D surface inspection MFC-based system, integrated with OpenGL graphics, using remote database control and database security layers (SAP), large memory allocation management, multi-core processor and multi-process resources optimization.
• Colorado:
Real-time, multi-threaded and multi-processed ATL-based system of COM components, integrated with XML and JSON interpreters, and embedded into portable PC panel or WinCE based mobile device.
• PDCFS:
Power Down Consistency File System – special file system layer above FAT32 system for WinCE based portable devices.
Environments, libraries, protocols, and technologies used:
MS Visual Studio.NET and MS Visual C++ environment, MFC, STL, ATL, WIN32API , GDI+, GDK, OpenGL libraries, Windows Media SDK libraries, WMI, WinCE API , WinCE Platform Builder, COM/DCOM/COM+ components, ActiveX controls, XML, JSON, SQL and ODBC/DAO/ADO for remote database access.
May 1998 – March 2004
WebSci Technologies, Inc. / eComServer, Inc. / Bhrigus, Inc., Princeton, NJ, USA
Senior Software Engineer
• Interactive Voice Response (IVR) applications for Dialogic hardware based Voice Response systems
• Computer Telephony Integration (CTI) systems
• Communication between IVR and remote databases (including AS/400 servers and mainframes)
• Dialogic hardware based IVR systems integration with third party text-to-speech (NeoSpeech) systems, speech recognition systems (SpeechWorks), and credit card transaction gateways (TrustCommerce)
• Dialogic hardware based IVR systems integration with MS Internet Information Server (IIS)
• Remote VXML interpreter servers for Dialogic platform based IVR
• WINDOWS NT/2000/XP based front end software products for Lucent/Avaya and AT&T IVR systems
• WINDOWS GUI remote control environment for administration and maintenance of multiple UNIX-based CONVERSANT IVRs, via TCP/IP, Telnet, RCP and FTP protocols
• WINDOWS NT/2000/XP client desktop programs designed as stand-alone applications and as Microsoft Management Console (MMC) snap-ins set
• WINDOWS GUI report generation systems and remote SQL Server and Oracle database management for call centers
• Web design GUI, remote database control and report generation systems
• Multimedia demonstration programs, remote login and encryption applications, keystroke generation tools, operation system control tasks
• Work team management, presentations, exhibitions, and customer support
Environments, libraries, protocols, and technologies used:
Dialogic hardware for WINDOWS NT/2000 platform, MS Visual Studio.NET (VC++ and VB languages, VB scripts) and Jbuilder environments, MFC, STL, ATL, Dialogic API, WIN32API libraries, JDK libraries, SpeechWorks OpenVXI libraries, COM/DCOM/COM+ components, ActiveX controls, OLE automation, SQL language and ODBC/DAO/ADO for remote data access.
May 1996 – April 1998
Computer Technologies House, Moscow, Russia
Software Engineer
• Multimedia English language learning system for Russian speakers
• Business information systems for software production trade companies
Environments, libraries, protocols, and technologies used:
MS Visual Studio environment (VC++ and VB languages, VB scripts), MFC, STL, WIN32API libraries, ActiveX controls, OLE automation, SQL and ODBC/DAO/ADO for remote data access, Java applets and scripts for help system.
March 1994 – May 1996
MEDIA ENGINEERING, Weiningen, Switzerland
Software Engineer
• Real-time remote control systems for radio and TV broadcasting station equipment
• Radio and TV studio design
• Real-time remote multi-processor control systems for radio and TV studio PBX
Environments, libraries, protocols, and technologies used:
MS Visual Studio (VC++ and VB) and Borland C++ environments, MFC, WIN32API, and OWL libraries,
ActiveX controls.
March 1985 – March 1994
LYRA Designer Office, Moscow, Russia
Software Engineer
• Multiprocessor real-time embedded surveillance systems for airline traffic control and blind aircraft flight
• Hybrid software systems of PC and PDP-11 based embedded processors, with high memory and speed restrictions
• Multiprocessor systems for weather forecast satellite image processing and improvement
• Imitation environments for airline dispatcher training, advertising animated presentation programs
• GUI systems for airline companies staff training and advertising graphic programs
Environments, libraries, protocols, and technologies used:
C, C++ FORTRAN, Pascal, and PDP-11 processor based Assemblers.
INVENTIONS
Method and system for interactive virtual inspection of modeled objects, Patent Application #2006P05376US01, filed in October, 2007.
FOREIGN LANGUAGES
Russian, Ukrainian.
EDUCATION
Honors Master’s Degree in Electrical and Mechanical Engineering specializing in Automatic Control Systems, Bauman Moscow State Technical University, Moscow, 1985.
REFERENCES AND DEMO APPLICATIONS
Available upon request.
Okay, here is the algotithm:
1). we need to deside which one will be destination list.
Compare the 1st elements in 2 lists. The destination list will be the one with smaller 1st element:
It 1st elements are the same, we assume the first list will be the desination.
1->2->5->8 (dest)
3->4->7 (source)
1->2->8->10 (dest)
1->3->5->7->11 (source)
2->5->7->8 (source)
1->3->9->10 (dest)
2). if dest->next==NULL - insert the rest of the source into destination and quit.
3). if source->next==NULL - quit.
4). if sourcenode==destnode or sourcenode==destnode->next - move to the next souce node.
5). if destnode < sourcenode < destnode->next : insert source node between them, move to the next source node.
6). if sourcenode > destnode->next : move to the next destination node.
Actually, the loop "while" never ends, and eventually "dest" will point to garbage, "source" will point to letter"h" with garbage after.
- sergey.a.kabanov January 12, 2012"MyClass& const refToObj" actually means "the reference cannot be changed, but the referent can".
We can say so, but it does not make any sense.
The following construction will work even with "explicit":
sample obj = static_cast<sample>(10);
Moreover, in that case our singleton class cannot have a private constructor, and it ruins the whole idea of singleton.
- sergey.a.kabanov January 11, 2012But here "Obj" is static variable, and that is not allowed!
- sergey.a.kabanov January 11, 2012If we have vtable pointer inside a class, we do not need anymore 1 byte difference to prevent object creation at the same place in memory. Thus, the size remains 4 bytes (i.e. more that 1 byte).
- sergey.a.kabanov January 11, 2012// Arr = initial array, Len = initial array length, pRes = pointer to the result array, resLen = length of the result array
template <class T>
void RemoveDuplicatesFromArray(T Arr[], T Len, T*&pRes, T&ResLen)
{
int i;
bool bExists;
T* pCurrent;
if(Len==0)
{
pRes=NULL;
ResLen=0;
return;
}
pRes = new T[Len];
// Always put the first element
*pRes = Arr[0];
ResLen=1;
// then check the result array - do we already have such element?
for(i=1;i<Len;i++)
{
pCurrent = pRes;
bExists=false;
do
{
if(*pCurrent == Arr[i])
{
bExists=true; // found the same element in result array
break;
}
pCurrent++;
} while(pCurrent < pRes+ResLen);
if(bExists==false)
{
*pCurrent = Arr[i]; // add the element to the result array
ResLen++;
}
} // end of "for"
}
Actually, they want "Name" as a variable, not as a function.
So, the class will look like this:
class Tool
{
public:
Tool()
{
Name = typeid(*this).name();
}
// blah blah
public:
string Name;
};
Please pay attention to "typeid(*this)", not "typeid(this)", - else we will have the class name as "Tool*" instead of "Tool"!
Yes, but the vtable pointer to pure virtual function will be NULL.
- sergey.a.kabanov January 11, 2012Do not forget about the special case: two functions in the same class, with the same name, same arguments, but different return types. That will be considered by the compiler as function redefinition.
- sergey.a.kabanov January 11, 2012Simply because an object cannot be destroyed in one way or another, it should be destroyed completely anyway!
- sergey.a.kabanov January 11, 2012
- sergey.a.kabanov January 12, 2012