Senior Programmer
919-254-7410(w) 919-847-6492(h)
E-mail citron@us.ibm.com
Objective: Develop product software with a team of motivated people who
share a common vision of the product. I like working with new technologies. In
the 70's I implemented an operating system and a word processor; in the 80's
communications protocols and distributed transaction processing systems; in the
90's multimedia, computer telephony, network computers, wireless Internet
access for pervasive computing devices, Windows CE, Java and Linux; and now
performance analysis and measurement for WebSphere-based
products.
I'd like to use some of these skills:
|
Win/XP Win/95 Win/98, Win/NT, Win/2000, Win/2003, Win/CE, Win/3.1, OS2 |
performance analysis Load Runner |
Professional Experience
[Research Triangle Park, NC]
[IBM Software Solutions, Senior Programmer]
Performance analysis and measurement for the following products: IBM's Websphere Portal, WebSphere Domino Extended Productivity Portlets, Sametime Instant Messaging, Portal Document Manager, Websphere Everyplace Mobile Portal, Websphere Everyplace Subscription Manager. These strategic products are written in java and run on the WebSphere application server. My job is to measure and analyze the performance, find bottlenecks, and suggest design, tuning, and coding changes that will improve the throughput and interactive response time.
This work frequently involves working closely with customer installations and occasionally some very complex troubleshooting of functional and performance problems.
Recent career highlights include a presentation to the
In the spring of 2007 a paper I co-authored was made required reading for a mobile computing technologies course at Purdue University.
1999 to 2001
Performance analysis and measurement for IBM's WebSphere Transcoding Publisher. This product allows various internet-enabled pervasive computing devices to fetch web content that is not targeted at the particular device. The product is coded largely in Java with some C code. My job is to measure and analyze the performance and suggest design and coding changes that will improve the throughput and interactive response time. Design changes I suggested have led to a 400 percent throughput improvement while improving interactive response time. In addition, I ported the product to Linux.
Software developer on the eNetwork Web Express team. This product provides wireless access to the Internet. It does this by providing compression, caching, protocol interception, asynchronous WWW access, and other techniques. These techniques are necessary because wireless communications are slow and expensive. This product makes web access faster and cheaper. I've written C++ code to improve the cache and web-access performance and added features to the product that permit it to directly access the Internet without depending on a web proxy. I've ported the product to Windows CE and Network Computers. The port to Network computers was done in Java.
[Research Triangle Park, NC]
[IBM Microelectronics, Senior Programmer]
PC software developer and team leader for the telephony function of the Mwave Multimedia product. I was responsible for Windows and OS/2 multimedia control devices and the call-discriminator application for Mwave's Telephone Answering Machine and Fax Machine. This included Windows 95, Windows 3.1, and OS/2 PC multimedia application and device driver software development. I also assisted in the porting of the same code to Windows NT and AIX. I led the PC software development team that implemented 3-way call discrimination (routing incoming fax, modem or voice calls). The telephone answering machine also supports full-duplex speakerphone, caller ID, distinctive ring, music on hold (CD audio, wave audio, and MIDI over the phone or telephone handset). This required knowing and implementing multimedia APIs and multimedia internals as well as modem APIs, modem internals and applications.
Mwave is a programmable digital signal processor (DSP). The implementation was done with parallel processors, parallel processing, device drivers and application software. It runs on Windows 95, Windows 3.1, OS/2, Windows NT, and AIX.
Mwave did not write all the application software. That was done by independent software vendors (ISVs). Part of my role was to provide API documentation to the ISVs as well as consulting, advising and debugging assistance.
[IBM Architecture and Telecommunications, Senior Programmer]
[Research Triangle Park, N.C.]
Lead architect with IBM's LU 6.2 (or APPC) architecture group (I had the lead architect title officially for two years, and was the defacto lead architect for four additional years). This job included designing architectural enhancements to LU 6.2, getting existing architecture ironed out, convincing products to implement the architecture, helping products figure out how to make the design fit on their operating system, shooting bugs on distributed systems (some IBM, some non-IBM), customer consultation, consulting with competitors, external presentations, coding and maintaining the LU 6.2 compliance test system, designing distributed transaction programs that use LU 6.2, reviewing product specifications, working with international standards groups (specifically OSI/TP, X/OPEN, MIA/TP), and publishing the LU 6.2 architecture specification so others can implement it.
As the lead architect I was required to know all aspects of the architecture. This includes the API, the communication protocols, security, network management, the competing protocols (TCP/IP and OSI/TP), and the implementing products.
The IBM products I consulted with regularly included CICS, IMS, DB2, OS/2 Comm. Manager, RS/6000, AS/400, TPF, VM, MVS, SQL/DS, DB2/2, VTAM, S/88 and APPN architecture.
[IBM Office Products, Staff Programmer]
[Austin, Texas]
Designed, coded, tested and maintained the operating system of the IBM 5520 administrative system (a multi-user, multiprocessor, multitasking forerunner of modern word processors). I was with the 5520 for five releases. The operating systems components I worked on included 2 dispatchers, 2 storage managers, the pager, the swapper, the lock manager, the SVC handler, several interrupt handlers, the abnormal task termination handler, the system timer (clock function), communication support (LU type 4 and 6 .2). Along with operating system work, I also did a one-year stint in the 5520 performance analysis group, and did the high level design for a printer-transform (you can't print editable WYSIWIG text as-is, it needs to be transformed before it can be sent to a printer). The 5520 was a word processor that supported electronic document distribution, and I worked on the communication subsystem for two of the five releases.
[State University of New York]
[Binghamton, New York]
Statistical analysis of psychology experiments as a research assistant at SUNY Binghamton. I later used this background in statistics in my performance analysis work.
Computer Languages: Java, Perl, C, C++, Visual C++ with MS foundation classes (MFC) and VisualAge Class Library, PL/1, APL, COBOL, FAPL, FORTRAN, Pascal, 370 assembler, S/34 CSP assembler, S/34 MSP assembler, Intel 8080 assembler, SAS and SPSS (statistical packages), GPSS (a simulation language), SQL, REXX
Compilers and tools used in the last few years: Java, Eclipse, Microsoft Visual C++ (on Windows 95, Windows 3.1, Windows NT and Windows CE), IBM C++ (on OS/2, Windows 95 and NT), Borland C++ (on Windows 3.1), SoftIce debugger (Windows 95 and Windows 3.1), IPMD (OS/2), Visual Basic Extensions(VBX) (Windows), Codeview (Windows and OS/2), Bounds Checker
Publications
I've published articles in Byte magazine, IEEE Data Engineering, Distributed and Parallel Processing journal, DSP Applications, IBM's LU 6.2 Formats and Protocols book and others. See the addendum that follows for the detailed information on the publications.
Patents
I currently hold 6 patents. Five are related to 2-phase commit processing. The fifth is related to data communications using switched links (i.e., a normal phone call). See the addendum that follows for the detailed information on the patents. A seventh is pending.
Awards
I've received 13 awards for work associated with internal and external publications. I've received 7 awards for patents, including an invention plateau and an award for outstanding innovation. I received a division award for work on the APPC reference model and compliance system. I also received 2 appreciation awards for development of the 5520 operating system.
Education
[Keeping up to date, continuing education, 2002-2004]
IBM encourages employees to keep abreast of changes in the field. In
recent years I've taken courses in AIX Performance, DB2 Performance, LDAP
fundamentals, Websphere 4.0 administration, and
Architecting for Performance.
1976 to 1978
[State University of New York at Binghamton]
[Binghamton, New York]
[Master of Science in Computer Systems]
1969 to 1975
[Northeastern University]
[Boston, Massachusetts]
[Bachelor of Arts in Psychology]
Detailed List of Publications, Conference Presentations, and Patents
Publications
"A Software Review Method that Really Works", BYTE Magazine
Jan. 1984
"Unchained Transactions and SNA's LU
6.2" which appeared in the Fifth International High Performance
Transaction Workshop (HPTS) and in IBM Technical Report 29.1748.
"Generalized Presumed Abort: Marrying Presumed Abort and SNA's LU 6.2 Commit Protocols" which appeared in the
Fifth International High Performance Transaction Workshop (HPTS).
"Unchained Transactions in the Peer-to-Peer Chained Environment of SNA's LU6.2" which appeared in The Eighth
International Symposium on Computer and Information Sciences, ISCIS and in IBM
Technical Report 29.1742
"Reconciling Communication Protocol Support for Chained and
Unchained Transactions" which appeared in II International Conference on
Computer Applications to Engineering Systems.
"Enhancing SNA's LU 6.2 Sync Point to
Include Presumed Abort Protocol" which appeared in IBM Technical Report
29.1751.
"Two-Phase Commit Optimizations and Trade-off in the Commercial
Environment", IEEE 9th International Conference on Data Engineering, April
1993.
Samaras, G., Citron, A.,
Kshemlakyani, A., "Reconciling Communication
Transactional Support for Chained and Unchained Transactions" Proc.
2nd International Conference on Computer Applications to Engineering Systems, IEE
and IEEE, Nicosia, Cyprus, July 1993
Samaras,
G., Citron, A., Kshemlakyani, A., "Unchained
Transactions and SNA's LU6.2”, Proc. 5th
International Workshop on High Performance Transaction Systems (HPTS), Asilomar, September 1993.
Mohan, C., K. Britton, A. Citron, G.
Samaras , "Generalized Presumed Abort: Marrying Presumed Abort and SNA's LU6.2 Commit Protocols', Proc. 4th International
Workshop on High Performance Transaction Systems (HPTS), Asilomar,
September 1993.
Samaras, G., Citron, A.,
"Unchained Transactions in the Peer-to-Peer Chained environment of SNA's LU6.2”, Proc. 8th International Symposium on Computer
Systems, Turkey, November 1993.
"The Mwave Multimedia Control Interface
for FAX and TAM", which appeared in IBM Technical Report 29.1813, Dec.
1993.
"The Implementation of the Mwave Telephone
Answering Machine", which appeared in the March 1994 DSP Applications
Journal and in IBM Technical Report 29.1842.
"Two-Phase Commit Optimizations in a Commercial Distributed Environment. Distributed and Parallel Databases, volume 3, Number 4, October 1995, pages 325-360. ISSN: 0926-8782.
"Handling Parallel Processing in
Multimedia Systems", presented at the International Conference on
Telecommunications April 1996 and in IBM Technical
Report TR 29.2084.
"Transaction Identifier Management in the Peer-to-Peer Distributed
Transactional Environment". Proc. 9th International Conference on Parallel
and Distributed Computing Systems (PDCS=B496), Dijon, France, September 1996.
Mohan, C., K. Britton,
Citron, A., G. Samaras , "Generalized Presumed Abort: Marrying Presumed
Abort and SNA's LU6.2 Commit Protocols', Proc.
International Workshop on Advance Transaction Models and Architectures (ATMA96)
(Edited Book), Goa, India, September 1996 (Held in
conjunction with VLDB'96). Extended version of the HPTS'93 paper.
Samaras, G., Kshemlakyani,
A, Citron, A. "Context Management and its Applications to Distributed
Transactions". Proc. 16th IEEE International Conference on Distributed Computing
Systems (IDCS96) Hong Kong, May 1996.
G. Samaras, A. Citron, A. Kshemalyani"
Reconciling Communication Protocol Support between Chained and Unchained
Transactions", Journal of Systems Architecture: The EuroMicro
Journal, Volume 43(1-5), pp. 229-243 March 1997.
A., Kshemlakyani, Samaras, G., Citron, A. "Context Management and
its Applications to Distributed Transactions", Distributed Systems
Engineering Journal, 5(1):1-11, March 1998.
"Porting Code Built with IBM VisualAge to
Windows CE", which appeared in IBM Technical Report 29.3150, April 1999.
“Stress testing
your software without stressing your testers”, Alan Booth, Andrew Citron,
IBM DeveloperWorks February 2001.
"Transcoding: Extending e-Business to New Environment",
Kathryn Heninger Britton, Ralph Case, Andrew Citron,
Rick Floyd, Yongcheng Li, Christopher Seekamp, Brad Topol, and Karen
Tracey, IBM Systems Journal, Vol. 40, No. 1, 2001. This article is required
reading for a Spring 2007 course at Purdue
“Combine safe
publication and effective immutability to improve performance”, Andrew Citron, Christopher Seekamp, Martin Presler-Marshall,
IBM DeveloperWorks October 2007.
November 1990: "Method of Controlling Limited Resource Sessions in a
Data Communications Network". The patent number is 4,972,437.
November 1993: "Method of Excluding Inactive Nodes from Two-phase
Commit Operations in a Distributed Transaction Processing System". The
patent number is 5,258,982.
June 1994: "Asynchronous Resynchronization of a Commit
Procedure". The patent number is 5,319,773.
December 1994: "System for Managing Unit-of-Work Identifiers When a
Chained, Distributed, Two Phase Commit Transaction System is Severed". The
patent number is 5,371,886.
July 1995: "Method and Apparatus for Improving Database Reliability
and Response Time in a Distributed Transaction Processing System". The
Patent number is
5,432,926.
June 2002: "Method, Systems and Computer Program Products for
Synchronization of Queue-to-Queue communications". The Patent number is 6,401,136. This
patent was in the top 10% of patents licensed from IBM in 2003
_