Career Objective
Design and develop server-side solutions using Java, J2EE, and WebSphere with a
strong interest in multi-threading, socket communications, asynchronous
messaging, and Java internals (JVMTI and byte-code instrumentation).
Technical Areas
Java (all versions), J2EE (JSP, Serlet, & EJBs), WebSphere (4.0-6.1 in z/OS and
Windows), ColdFusion, multi-threading, socket communications, JDOM, DOM, SAX,
XML, Javascript, JMS, DB2, Oracle, PL/SQL, JDBC, ODBC, SQL, byte-code
instrumentation (BCI & DBCI), JVMPI, JVMTI, C, C++, WebSphere Studio Application
Developer, Rational Application Developer, WAS Admin Console
Certificates
WebSphere Studio Application Developer 5.0
WebSphere Application Server 5.0 for z/OS Administration
Work Experience
COMPANY: Compuware APM Lab
TITLE: STROBE for WebSphere Technical Lead
STROBE for Java Technical Team member
START DATE: January 2005
END DATE: January 2008
WORK DESCRIPTION:
Responsible for research, design, prototyping, and implementation of new Product
offering using the JVMTI API and byte-code instrumentation. The product was a
multi-process/multi-threaded solution for determining application performance in
Java and WebSphere environments.
Designed and developed a single solution to replace the STROBE for WebSphere
and STROBE for Java products using Compuwares proprietary Java byte-code
instrumentation technology
Incorporated Compuwares Vantage JVMTI Java agent into the STROBE product
architecture
Researched and designed modifications to existing instrumentation code to
instrument around calls to all non-instrumented method invocations. This was
necessary due to complications in instrumenting certain system classes in the
z/OS environment.
Designed, prototyped, and implemented a 100% Java multi-threaded central
server to handle all TCP/IP communication between STROBE and multiple JVMTI
agents. Central server handled administration of multiple agents and measurement
sessions, TCP/IP port management, caching of agent measurement data, creation of
XML containing report data, and logging functionality. Designed reusable
architecture to handle socket communication, parsing and creation of XML messages
using JDOM, and threading.
Designed and implemented code to incorporate STROBE measurement functionality
into the Vantage Agent technology, i.e., socket communication with Central
server. (90 % C/C++ / 10% Java)
Chosen by Compuware as a subject matter expert and given an extended contract
to help with the knowledge transfer from the Cambridge lab to the Corporate
headquarters in Detroit. Transition contract consisted of product training and
detailed knowledge transfer of new and old projects related to the STROBE for
WebSphere/Java products
Assisted Product Architects with alternate technology solutions to bring
product offering to the market sooner
START DATE: June 2001
END DATE: January 2008
WORK DESCRIPTION:
Responsible for design, implementation, and problem resolution for the legacy
STROBE for WebSphere and Strobe for Java products.
Led large team that developed the STROBE for WebSphere Application Server
product offering that provided performance metrics for Servlets, JSPs, and EJB
applications running in the WebSphere Application Server for z/OS environment
Became company wide WebSphere contact and helped MIS and developers learn and
troubleshoot problems with WebSphere administration (server and environment
setup), application deployment, etc. in the Windows and z/OS environments
Assisted in design and maintenance of the STROBE for Java product offering
Resolved serious design limitation in the STROBE for Java product by reverse
engineering IBMs SVC Dump tool to provide product support for Java 1.4.x z/OS
environments. Due to internal changes in IBMs JVM for z/OS STROBE could not
traverse the java and native stacks to show call stacks associated with activity
hot spots.
Designed and prototyped new Java product feature to navigate to application
class and jar file directories to extract class and method names. This idea was
then incorporated into the STROBE for Java product offering to provide class and
method selection capabilities for measurement targeting.
COMPANY: Compuware Numega Lab
TITLE: Senior Software Engineer II
START DATE: February 2001
END DATE: May 2001
WORK DESCRIPTION:
Member of small design team tasked in defining, designing, and developing a Java
application error detection tool. Delegated to researching Java technologies
useful in developing error detection tool.
helped educate team members with Java technology
Researched Java Virtual Machine specification to understand how the JVM
operates and processes Java class files.
Researched Sun's Java Virtual Machine Profiling Interface (JVMPI) to determine
how to extract Java information and implement byte code instrumentation at
runtime.
COMPANY: Compuware APM Lab
TITLE: Senior Software Engineer II
START DATE: October 1999
END DATE: January 2001
WORK DESCRIPTION:
Recruited by Advanced Design Team to design, develop, and deliver distributed
application framework for multi-tier application (STROBE for NT/Unix). Primary
goals of framework were to provide browser access to distributed servers
providing end-users the ability to remotely schedule, measure, and analyze
application performance. The framework consisted of three major components; the
web, global, and measurement servers.
Took part in development of a proof-of-concept prototype, written in Java, to
demonstrate that Java was a feasible technology to use. Prototype successfully
demonstrated distributed communication between 3 machines using Java's Remote
Method Invocation (RMI) class library. In addition, it demonstrated object
serialization and communicated with a native process via a socket using a simple
XML message protocol.
Responsible for creating a high-level design document that summarized each of
the applications distributed components and their sub-components.
Wrote logic specifications for all server components
October 1999 - Compuware Corporation acquired Programart Corporation
COMPANY: Programart Corporation
TITLE: Senior Software Engineer II
START DATE: September 1999
END DATE: April 1998
WORK DESCRIPTION:
Recruited into Advanced Design Team to research and design future products and
product enhancements. Participated on an 8-member design team responsible for
reviewing specifications for all new STROBE and APMPOWER product features.
Wrote initial product specifications for STROBE Java Language Feature to
provide Java application specific information when measuring Java applications
compiled into native code using IBM's High Performance Java compiler (MVS).
Tasked with researching the collection of Visual Basic information for STROBE
for NT/Unix project. Support for including VB symbols with application
performance data was required to make the data more useful to the end-user. In
addition, the collection engine needed to detect when Visual Basic libraries and
OCXs were loaded into memory.
Designed and prototyped new feature for APMPOWER product enabling users to see
top N Resource consumers in applications measured by STROBE. This enabled
end-users to dramatically cut down on profile analysis and solve application
performance problems much quicker.
TITLE: Senior Software Engineer II
START DATE: September 1997
END DATE: March 1998
WORK DESCRIPTION:
Lead engineer responsible for scheduling and planning of release specific work
throughout the development life cycle.
Worked in a semi-management role to ensure that product release sizing efforts
and initial function specifications matched the product requirements
Responsible for assigning work to team members
Assisted other engineers with development process
Tracked teams progress on a daily basis and reported to management committee
once a week
Joined Design Council to review and inspect all initial function
specifications, product wide
Trained new employees about the architecture and use of STROBE and APMPOWER
products
Responsible for maintenance and new product feature support in applications
written in C and providing ODBC database access.
TITLE: Senior Software Engineer I
START DATE: September 1994
END DATE: August 1997
WORK DESCRIPTION:
Lead engineer responsible for ongoing maintenance and new release functionality
of PC-based APMPOWER product for OS/2 and Windows, mostly using C and Easel.
Played a critical role in porting APMPOWER product from OS/2 to Windows 3.1
particularly in the database access area. Database access was converted from
imbedded static SQL to ODBC.
Responsible for all database related code to support Oracle, MS SQL Server,
Sybase, DB2, and MS Access
Assisted in design, development, and maintenance of print engine for APMPOWER
using C++ and MFC
Responsible for data reduction of data received from the mainframe and loading
via ODBC to a relational database
Responsible for designing and rendering of STROBE report data for display by
APMPOWER
TITLE: Software Engineer
START DATE: September 1991
END DATE: August 1994
WORK DESCRIPTION:
Developed and maintained COBOL and Assembler reporting applications for
Programart's STROBE application performance product.
Tasked with writing new support to emit reporting data to a proprietary file
format for use by STROBE's companion product, APMPOWER
Designed and developed new reports for analyzing performance data from
applications written in COBOL, Fortran, SQL, Natural, CICS, etc.
Responsible for providing patches to COBOL and Assembler reporting modules for
customer problems
September 1991 - Hired by Programart Corporation
COMPANY: Global Software, Inc.
TITLE: Software Engineer
START DATE: January 1985
END DATE: August 1991
WORK DESCRIPTION:
Maintained and developed new features for company products. I became proficient
in COBOL and acquired some experience with the OS/370 assembly language, Job
Control Language (JCL), DL/I, and SQL.
Responsible for maintenance and new functionality support for ISPF-panel
driven front end to IMS DBDC and DATAMANAGER data dictionaries and a SQL
workbench that generated SQL command syntax.
Continuing Education
Note: I am currently working on completing my Bachelors degree with a
concentration in Computer Science of which I have completed all of the Computer
Science course requirements.
Since 1995 Harvard University Extensions Cambridge MA
Distributed and Enterprise Computing (J2EE w/ Seam and Spring)
Web Applications with Ruby and Ruby on Rails
Web Design for Database Applications (PL/SQL Oracle) main focus on database
design
Distributed Programming in Java
Java Programming I and II
Web Development using XML
C Data Structures, C++, Windows Programming with MFC, Advanced Windows
Programming with ActiveX & COM (DCOM), Java Programming, Distributed Java
Programming with Java and CORBA
Since 1991 Boston University Brookline MA
Vax Assembler, C Programming, C Data Structures, Windows SDK Programming, and
Data Communications and Networking.
|