I love building software engineering and programming tools, and I have spent most of my working life doing just that. Here is a list of selected projects.

Mobile App Energy Profiler for Windows Phone & Windows 8 (Mobile Programming Tool)

Unlike desktops, mobile devices are plugged into power supply for only short durations, and a long lasting battery is a key desirable characteristic for device users. So, it is important for mobile applications to be energy efficient, and mobile application developers need to analyze the impact of their applications on the battery life. Just like execution time and memory profilers expose performance and memory bottlenecks respectively, an energy profiler exposes energy bottlenecks. It provides useful insights about power consumption by various hardware components (e.g. display, network, CPU), and helps application developers in identifying offending events, activities and segments of code that are causing high energy footprint, and improve energy efficiency of their applications. Released as battery profiler in Visual StudioWindows Phone SDK 8.0 in Oct 2012, and an improved version in Visual Studio 2013. (more info)

UML Action Language in IBM Rational Software Architect (Executable Model Programming Tool)

Rational Software Architect (RSA ) and its Real Time Edition (RSA-RTE) can transform behaviorally complete UML models into executable code. However, UML was not sufficient for defining complete behavior, and in practice, engineers embedded code snippets in a programming language (C++, Java) into the UML model. That causes portability and engineer productivity limitations. The project started with a one line description: build a standard action language in RSA/RSA-RTE. It gave me incredible opportunity to start from conceptualization phase, contribute in defining and standardizing UML Action Language, define scenarios and capabilities, architect and design the system, and lead a small team to implement a robust tooling for UAL code editing, compilation & translation, in RSA and model level simulation and debugging in RSA-RTA. It enhanced RSA as Model IDE for Executable UML to be on par with modern IDEs for various programming language. Release inRSA and RSA-RTE 8.0 in Aug 2010. (more info)

Rational PurifyPlus for AIX/PowerPC (C/C++ Programming Tool)

Rational PurifyPlus is a runtime analysis tool to detect memory errors, performance bottlenecks, and code coverage in C/C++ programs. It performs control and data flow analysis on program binaries and instruments them to call its runtime library for memory analysis and data collection. I implemented support for 64-bit binaries in Purify and PureCoverage for AIX, redesigned Purify/AIX runtime for robust interception of libc functions and system calls, implemented new and dynamic mechanism for identifying system calls in Purify, contributed in designing a mechanism for Purify to work with un-instrumented shared libraries, and several other features. I was also PurifyPlus AIX tech lead for about two years. Release in 7.0 and other releases. (more info)

Java Leak Analysis with Leakbot in Rational Application Developer (Java Programming Tool)

Contrary to popular belief, Java Memory Leaks are possible, and are actually harder to isolate and rectify. I was tech lead for developing a data collection agent and leak analyzer based on Leakbot technology. Released in Rational Application Developer 6.0 in June 2005. (more info)

Sarvega XML Switch (XML/XPath/XSLT Processing Tool)

Sarvega XML Switch (now Intel SOA Expressway) provides XML processing and information-aware routing infrastructure for deploying XML based Web services. It accelerates XML processing (XML parsing, validation and transformation), and provides intelligent content-based routing. During 2002-03, I worked in the core compiler group of 4 engineers responsible for XML parsing, schema validation, transformation, and optimization technologies. I worked on XML validator generator, XML tree slicing, resource cache state machine, and XPath based resource selection.

Software Concordance (Software Development Life Cycle Tool)

The Software Concordance is a research prototype programming environment for experimenting with the benefits of enhanced hypermedia services for managing software documents, especially program source code. The Software Concordance’s central tool is a program source editor that allows developers to embed multimedia documentation and hyperlinks in their source code, while still supporting advanced program analysis services, including lexing, parsing, and type checking. The environment is designed to integrate all stages of software development life cycle. During 2000-01, I came up with the overall design of the system and developed the program source editor. (more info)