Michael Vitalo
Software Engineer experienced with multi-threaded, distributed, object-oriented software analysis, design, and implementation in client-server based cross-platform architectures.
Special Skills and Qualifications
Analysis and Design of Distributed Systems and Client/Server Architectures.
7 Years of C++ Development.
5 Years of Java Development.
Technical Skills and Qualifications:
Languages and Protocols |
C/C++, Pascal, HTML, Java, Delphi, XML, JNI |
Operating Systems |
Windows 95/NT 4.0/98/Win2000 Unix: Solaris 2.6 - 2.8, Linux (2.2), Linux (2.4), VxWorks |
Network Programming |
TCP/IP, CORBA, ACE/TAO, InfiniBand |
GUI Programming |
MS Windows: Win32 - Delphi |
Hardware Platforms |
Sun Microsystems e4500, Ultra 60, e250, PowerPC Intel based systems |
GUI Builders |
Delphi, CBuilder, VC++ 4.1; 4.2; 5.0; 6.0, JBuilder |
Databases |
Sybase, Oracle, Interbase |
Limited Experience |
MFC, Perl, Bash, awk |
Software Tools |
Numega, CVS, StarTeam, SourceSafe, OptimizeIt, Rational Rose, GNU Make |
Software Libraries |
STL, ACE, TAO, Util.Concurrent (Doug Lea's Java Threading Library) |
Software Design |
UML |
Speaking |
Presented to venture capitalists, programmers, and customers. Instructed programmers. |
Employment History
Celebrate Software, Texas (Feb 2002)
Ported the Celebrate Server software to Linux; this included creating the build environment and creating the correct configuration for the software components the Celebrate Server depends on. (ACE, STLPORT)
Setup the CVS archive and configured the Linux server hosting it.
Provided design guidance in the creation of cross platform communications components and in the use of the ACE library. This included the encapsulation and definition of the TCP/IP protocol used by the clients when communicating with the Celebrate server.
Lane15, Austin, Texas (May 2001 -May 2003)
Senior Software Developer
Designed the 1.1 Subnet Administration multicast function for the Lane15 Subnet Manager.
Designed and implemented the changes necessary to bring the Lane15 Subnet Administrator (SA) to conformance with the InfiniBand 1.1 specification.
Created a user space library, which allowed for the easy retrieval of InfiniBand Subnet Administration data. This library needed to encapsulate the communication with the subnet manager and also hide the complexities involved in retrieving specific pieces of information, such as port information. This library had to be accessible from C applications along with Java applications and so had both a JNI component and a set of exported C functions.
Aided in the redesign of the database components to allow for greater scalability and transaction safety.
Redesigned aspects of the portability layer related to synchronization primitives. These classes needed to be cross-platform and shared between processes along with threads and also had to allow for a third party to insert their own implementations without affecting other components. These components had an addition requirement that they have implementations for kernel space.
Implemented a real-time timing facility modeled after the BSD timers and provides constant time insertion, canceling and expiring of system timers. This component has to run on VxWorks, Windows, Linux, and AIX in both embedded and server environments.
Implemented the remote database facility, which provides the SA component functionality specified in the InfiniBand 1.0 spec.
Implemented a series of interfaces around the SA component to allow easy access to the data contained in an InfiniBand subnet database.
Extended time classes to make use of 64 bit-timing values in a cross platform manner. This included compensating for the use of nanoseconds on Windows platforms.
Modified main database components to facilitate recursive acquisition of resources in a threaded environment. The database classes had a locking strategy that prevented one method from invoking another on the same class while a lock was help. I introduced an implementation based on the “Thread Safe Interface” design pattern.
Provided leadership in the porting of code between different OS versions and hardware. This included tracking compiler differences, such as Red Hat using gcc 2.96.x, synchronization differences, such as not being able to place POSIX mutexs in shared memory on Linux, and providing design solutions to accommodate the differences.
Provided feedback on general design issues ranging from system configuration and initialization and multithreaded design, to the management of resources in an embedded environment.
Infoglide Corporation, Austin, Texas (August 1996- May 2001)
Senior Software Developer (Employee #2)
Designed and implemented the Java API used by AOL/Netscape and other software companies when interacting with the Similarity Engine.
Designed and implemented in C++ using CORBA and ACE the communications component used by remote clients that need to interact with the distributed Java and C++ servers.
In C++ created a DLL to encapsulate the method of communications with servers for non-Java applications (e.g. Delphi). Similarly, developed a C DLL.
In C++ created a DLL that uses JNI to allow non-Java clients to load and run Java applications.
Designed and created components for a cross platform, optimized, multithreaded, XML-based similarity search server that performed multi-attribute searches on large hierarchical databases using C++, CORBA, STL and ACE.
Researched, designed and coded compression routines for back end database using C++, STL and ACE.
Designed and coded a hierarchical mapping component that transforms one hierarchical data representation to another using C++ and MFC.
Designed and coded a visualization component that integrated through OLE Automation a Delphi visualization application into an MFC based C++ application. (VC++, OLE Automation)
Managed development team. Including schedule, meetings and performance reviews.
Provided leadership in the development of C++, Java and Delphi based applications. Assisted in the design of applications, the use of design patterns, and the use of multithreaded constructs.
Designed and coded the communications layer for a set of servers using C++ and Java with CORBA (ACE/TAO and JavaIDL).
Designed and coded a multithreaded Java gateway server for handling messaging and load balancing between back-end servers and distributed clients.
Wrote visualization integration layer with a third party product using DDE on Windows 95 and NT 4.0 in C++ (Visual C++ 4.0,4.1). Included adding GUI enhancements for controlling the visualization.
Extended a set of data import and export routines in an MFC based Visual C++ application to handle binary data.
Setup source code control system using Visual Source Safe, StarTeam and later CVS on Linux.
Contributed to ACE/TAO the NT Naming Service.
Trained programmers in developing software to the InofGlide server API.
Developed the code examples, documentation and training materials used by programmers to develop software which uses the cross platform XML based Similarity Engine.
Education/Training
2004 |
Returned to the University Of Texas to complete my BS in Physics. |
2001 |
USENIX COOTS Conference; Design Patterns for Understanding Middleware and Component Infrastructures, Jan 2001. A one-day presentation by Doug Schmidt on patterns and idioms used in the design of distributed middleware. |
2000 |
Enterprise Java Beans framework and design overview, InfoGlide internal course, June 2000. A two-day course focused on explaining the major components of EJB’s and how to apply them when building applications. |
2000 |
Using Design Patterns and Frameworks in concurrent and distributed systems, Douglas Schmidt and Carlos O’Ryan, May 2000. A three-day course focusing on the design and use of frameworks and programs incorporating patterns for scalable and real-time distributed systems. |
1999 |
CORBA Programming with ACE/TAO, course by Object Computing Inc. A four-day course on CORBA and TAO (The ACE Orb) with emphasis on CORBA 2.3. |
1992 - 1996 |
Austin Community College Austin, TX Mathematics, Physics and Computer Science |