Andrew P. Citron

Senior Programmer (retired)

10216 Whitestone Road

Raleigh, North Carolina, 26715

919-740-6721(m) 919-847-6492(h)

E-mail andycitron@hotmail.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; In my last position with IBM: performance analysis and measurement for WebSphere-based products. Some hot topics were big data, predictive analytics, internet security, test automation and continuous delivery.  In my final year with IBM it was IBM’s strategic initiatives:  Cloud, Analytics, Mobile, Security and Social. Since retiring I’ve taken on machine learning, chat-bots, artificial intelligence, internet security, internet of things, block chain and quantum computing.

I'd like to use some of these skills:

Internet, WebSphere, Websphere Portal

wireless communications

communications protocols and APIs

operating systems

Windows

performance analysis  test tools and automation

Java, Javascript, C, C++

computer telephony

distributed transaction processing

multimedia device drivers and APIs

writing portable C++ code

computer music

multimedia

parallel processing

Rational Performance Tester (aka HCL OneTest)

Linux, AIX

Artificial Intelligence, Machine Learning, Chat Bots


Professional Experience

[Retired from the daily grind again]

                        2023

This year I learned the Rust programming language. Rust is an attempt to make computer programs unhackable. I wanted to see how they did that. It turns out to be complicated with a steep learning curve.

Microsoft deprecated support for facial recognition. This broke my robot yet again. I decided that the best way to stop that from happening again was to implement facial recognition myself and host it on my local computer. This meant learning how to implement neural networks. Luckily there are a lot of resources on the internet to help with this. Look for my TJbot YouTube videos to see the latest progress.

                        2021-2022

I’m figuring out how to be retired again.

Late 2021 I noticed that my robot's ability to see stopped working.  After some investigation I learned that IBM Watson had dropped support for visual object recognition.  That broke my robot's ability to respond to "What do you see?"    I decided to re-implement that function using Microsoft Azure's cognitive services.  I posted my code to github so other TJBot implementers could use what I implemented.   I communicated that with the creators of TJBot at IBM research.  In turn, they posted my link to their featured recipies site.

[HCL Technologies]

                        2021

I was coaxed out of retirement to do a part time development project at HCL Technologies.  My responsibility was to implement a performance test for HCL’s hclsofy.com website.   I did this using Rational Performance Tester (now rebranded HCL OneTest).  It has gotten more complicated to implement performance tests as most websites are implemented with JavaScript.  That means that developing a performance test requires reverse engineering the JavaScript programs that are embedded in the web pages as well as reverse engineering the web pages.  I was successful in this task and handed it off to the full time members to maintain.  During the first part of the project I did the work myself.  For the final stage of the project I acted as a consultant to make sure the team members were up to speed and able to take over when my contract was over.

 [Retired from the daily grind]

                        2017-2020

I’ve been enhancing my skills now that I have retired.  This year I decided to learn quantum computing.  It is much different than any other computer programming I’ve ever done.  It’s going to take a while for me to get my hands around quantum computing. 

Last year I finished Udacity.com class on ‘machine learning’ taught by Stanford and Google.  It has rekindled my interest in statistics.  At the end of the class, a student asked, “If I want to pursue this endeavor, what class should I take next?” The professors both agreed the best thing to do was actually solve a problem using artificial intelligence.  I decided to follow that path.  I built a TJBot robot based on IBM’s Watson.  My goal was to have the robot detect motion, recognize who the person is, say hello by name and if the person replies, wave at them.  I’ve had a blast doing that.  I’ve accomplished more than that.  I’ve uploaded some progress videos to YouTube.

I’ve read books on internet of things (Raspberry Pi), JavaScript, internet security, advanced topics in databases (as taught by Carnegie-Mellon), cloud technologies (GIT, SOLR), java, Windows 10 tools, and more. 

Periodically I give a lecture to the “History of Technology” class at Wake Tech.  The lecture is about recognizing and learning the technologies that will keep you employed for the next 30 years.

Now and then, users of Rational Performance Tester reach out to me for advice.  That’s why I put my personal email address all over the tutorials I put on YouTube.

[Research Triangle Park, NC]

[IBM Software Group, Senior Programmer]

                        2001 to 2016

Performance analysis and measurement for the following products:  IBM's WebSphere Portal, Web Content Authoring, Web Application Bridge, Mobile Portal Accelerator, Responsive Web Design, JSF WebSphere Experience Factory, WebSphere Domino Extended Productivity Portlets, Sametime Instant Messaging.  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.  Having a fast website keeps customers on that website.  Website performance is as important as website features.

This work frequently involves working closely with customer installations and occasionally some very complex troubleshooting of functional and performance problems.

I work closely with the developers of the performance measurement tool, Rational Performance Tester.  I tell them how to improve the product to make it easier to use, and which features it needs to add.  I’m happy to say they do implement my suggestions.  From 2014 to 2016 I created a comprehensive set of tutorials about Rational Performance Tester.  The tutorials have been the number one playlist hosted on the Software Group’s YouTube page.  In 2015 I was given a corporate award for using social media to publicize IBM’s products.  Sadly, IBM sold the Rational Performance Tester product to HCL in 2017 and removed the video tutorials I made from their YouTube page.  In 2021 I put those same videos up on my own YouTube page: Rational Performance Tester Tutorials - YouTube

We further refined our continuous delivery process.  That model is based on test automation. I fully automated Websphere Portal’s performance test.  I can now accomplish in 1 day what it used to take 2 weeks to accomplish.  That also made my job much more pleasant as many routine tasks are now automated.  Last year I supervised 2 students automating the data analysis.  This involved automatically putting Rational Performance Tester data to a DB2 database, and then using Statistical Package for the Social Sciences (SPSS) to run analysis of variance to determine if there is a statistically significant difference between the means of two or more performance test runs.  That is all done without human intervention.

A paper I co-authored with G. Samaras, was required reading for the Advanced Topics in Database Systems class, Fall 2013, at Carnegie Mellon. http://www.cs.cmu.edu/~pavlo/courses/fall2013/reading-list.html.  This is a major career accomplishment.  It means that something I’ve done in my career will outlive the products it was invented for.  That article has been cited over 50 times in other related articles.  I discovered that Brown University used a very similar syllabus in their advanced database course:  CS2270 - Advanced Topics in Database Management (brown.edu).  The University of San Francisco required reading this paper for their Operating Systems class.

A solution I proposed to a member of IBM's Apache team, was added to the Apache spec. http://httpd.apache.org/docs/current/mod/mod_headers.html. My addition is 'SetIfEmpty'.  This solution is useful to WebSphere and any other servers that interface with an HTTP server. 

A couple of years ago, I had papers published about doing performance testing using a virtualized test infrastructure and Linux KVM Configuration & Scaling with WebSphere Portal.

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.

                        1996 to 1999

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 were necessary because wireless communication was 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.

1992 to 1996

[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.

1984 to 1992

[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.

1979 to 1984

[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.

1977 to 1978

[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.

Tools

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-2014]

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 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-offs in the Commercial Environment", IEEE 9th International Conference on Data Engineering, April 1993. This was required reading for the Advanced Topics in Database Systems class, Fall 2013, at Carnegie Mellon. http://www.cs.cmu.edu/~pavlo/courses/fall2013/reading-list.html

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.

Samaras, G., S.D. Nikolopoulos, K. Britton, A. Citron, "Efficient Algorithms for Managing Transaction Identifiers in the Peer-to-Peer Distributed Transactional Environment".  Proc. 5th Hellenic Conference on Informatics, Athens, December 1995.

"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.

Compare performance of virtual agents with real ones”, Andrew Citron, Gaurav Bhagat, Marshall Massengill, IBM DeveloperWorks August 2012.

Linux KVM Configuration & Scaling with WebSphere Portal”, Hunter Presnall, Andrew Citron, WebSphere Family wiki update April 2013.

 

Patents:

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

Andrew P. Citron andycitron@hotmail.com

Return to Citron's Home PageAndrew Citron's Home Page

_