James Andrew Cleland
Bristow, Virginia – (703)402-5447
jcleland@jamescleland.com
Summary
Over twenty-six years experience designing and developing software solutions utilizing a broad range of languages and technologies. Proficient with full-stack web development, user-mode systems programming, and everything in-between. Interests include network communication sub-systems, processor architecture, performance and scalability, as well as Unix/Linux system deployment and administration. Enthusiastic, quick-learning with a passion for problem-solving while producing systems that are easy to understand and maintain.
Professional History
Solution Street, Herndon Virginia
October 2019 – February 2020
Designed and developed a distributed software system which can be used to discover, index, annotate, and redact specific data in non-homogeneous repositories including file systems, mail servers, and version control systems where the targeted repositories were expected to contain petabytes of data. The service was to be driven by an existing web front-end and was written in Java, making use of concurrent processing techniques such as threads, mutexes, and shared data structures such as queues.
March 2019 – October 2019
Maintenance, profiling, debugging, and enhancement of the client’s facilities management software application. Full-stack development employing ASP.NET/C#, MS SQL Server, IIS, HTML5, JavaScript, CSS3. Updated aging UI implementation using Telerik UI for ASP.NET to leverage batch editing of Grids and forms as well as establishing consistency across screens. Extensive work developing and optimizing stored procedures.
InSilico Solutions LLC, Fairfax Virginia
November 2010 – February 2016
MD Anderson Cancer Center, Bioinformatics Lab – Responsible for analysis of high-throughput genetic sequencing data for the TCGA project. Project manager, design, developer for TCGA Batch Effects project – An application for visually identifying genetic outliers when comparing tumor and tumor-normal cell samples. Programmer for SpliceSeq, software for analysis and visualization of RNA-seq data displaying alternative splicing events and functional impacts. Developer for Clustered Heatmap Viewer. Co-authored research-related papers published in several high-profile medical journals including BMC Bioinformatics and Oxford Journals. Developed and maintained the MD Anderson Bioinformatics Department Wiki for all department projects and research.
Tiger Team Consulting, Fairfax Virginia
December 1997 – November 2010
Tiger Team Bioinformatics – Developed applications for SpliceCenter. Responsible for site look and feel, javascript development, JSP as well as image rendering components. Extended the application based upon feedback from biologists and co-workers. Implemented DHTML controls such as resizable and movable frames and pop-up dialogs and windows.
Johns Hopkins University, Karchin Lab – Implemented enhancements to the LS-SNP/PDB web application which utilized UCSF Chimera to display the location and effects of single nucleotide polymorphisms on protein structures.
February 2005 – June 2005
Mantas – Developed an XML to Excel spreadsheet conversion module for the Mantas web application. This module was designed to take proprietary XML report data and generate an Excel spreadsheet identical to an XSL rendered table. The module used complex state and forward-looking logic to employ a single-pass rendering process, capable of handling multiple table styles. Provided guidance on migration from commercial java development tools to Eclipse.
May 2004 – January 2005
SRA International – Developed components for an online PDF form submission application. Developed and modified Adobe Acrobat plug-in for importing form data. Developed java framework for extraction of PDF form data and XML transformation.
September 2003 – April 2004
Mantas – Aided in critical decision making during development and deployment of financial auditing software. Developed java/C++ components providing data export to common formats such as XLS. Provided infrastructure and guidance for code management and debugging.
April 2001 – August 2003
Advisen – Performed development and production support tasks for the clients online application including troubleshooting of existing software problems and extensive new development of raw content processing applications. Responsibilities included Java development including JNI and RMI, development of raw content processing adapters for parsing XML and HTML, Oracle SQL development, perl and shell scripting, and C++ server development. Worked with numerous proprietary API. Gained extensive experience working with Verity K2 server search tools and document conversion libraries. Target and development platforms include Solaris 2.6, Windows 2000, and Linux. All work performed off site.
January 2001 – April 2001
Nexphaze/Omnisky – Performed analysis and troubleshooting for the OmniSky mail service, a wireless service for handheld and laptop PC’s. Responsibilities included evaluation of the existing application client and servers, documenting problems that exist in the server environment, and troubleshooting recurring server errors. In addition to working with existing software, direction was provided for future architectural changes including extensive infrastructure modification and enhancements.
April 2000 – September 2000
Fannie Mae – Developed server to handle loan scoring via FHA and HUD services. Components developed include POSIX thread library, POSIX mutex support, logging utilities, formatted file parsing utilities, and Caching scheme. All development was done using C++ on Solaris workstations. In addition to development of C++ components, a project oriented build environment supporting multiple target types was developed for the project. Responsible for making all technical decisions surrounding the project.
September 1999 – April 2000
FOLIOfn Online Brokerage – Completed design and development of Enterprise Java Beans to perform application logic for a new online brokerage. Components developed included: EJB to integrate front-end application with a third party accounting package, EJB to retrieve quotes from a quote server, and a Java daemon processes to perform ACT reporting to NASD. Deployed EJB in WebLogic’s application server. Developed complex stored procedures to allow bean to interact efficiently with Sybase. Use Java JNI extensively to integrate Java with C APIs to 3rd party packages.
May 1999 – August 1999
American Management Systems – Programmer responsible for development and maintenance of batch software used to process proprietary system data files and manage tables for AMS’s Procurement Desktop System. All batch software written in C using Oracle 8 and Oracle Pro-C compiler. Performed code reviews for existing software and provided suggestions/modifications to increase performance and reliability. Enhanced recovery procedures and provided logical stability where it was lacking.
September 1998 – May 1999
RST Test Tools – Senior programmer responsible for the development of software tools to assist large-scale system test and validation projects. Developed a variety of cross-platform tools to assist AOL in performing Y2K testing and verification. Designed and constructed a performance testing tool for web servers that performs capture and play back functions to automate stress testing of corporate web servers. Designed and developed a hardware clock synchronization tool for automating management of hardware clocks on network machines from a central location to ease configuration tasks during Y2K testing. Testing tools were developed using extensible class hierarchies in C++. RST is currently investigating the possibility of converting these tools into commercial products.
December 1997 – August 1998
NASD Order Audit Trail System – Senior programmer on a team of 15 developers. Implemented NASD system for reporting securities trading events according to emerging SEC requirements. Responsible for the design and implementation of several FOREfront components. Developed common routines for authentication and mutex support. Developed hierarchy of C++ objects to perform data collection, decompression, and decryption. Developed supporting routines for various FTP, POP3, and SMTP protocols. Received commendations from NASD for quality of designs and code. Provided C++ mentoring for team members. Established process and configured tools for software builds and version control of source code. Performed general trouble-shooting assistance to other team members.
Thomson Electronic Information Resources, Fairfax Virginia
March 1996 – December 1997
Communications Infrastructure – Design and implementation of network subsystem to support client/server communications, load balancing, fail-over, routing, and network addresses services for all TEIR applications. Performed research relating to new technologies such as COM/DCOM and CORBA. Presented white papers and recommendations on these technologies to senior management. Played a key role for the design and development of the routing application known as the Transport Engine. Established standards by which software would be developed within the company. Designed and developed Asynchronous Comm Devices for various operating systems ranging from Solaris to Windows 3.1 while keeping the interface identical across platforms.
American Management Systems, Fairfax Virginia
May 1994 – March 1996
ObjectCORE – Developed reusable C++ frameworks designed to facilitate rapid development of solutions utilizing peer-to-peer, client/server, and multi-tiered communication subsystems. Responsible for designing and maintaining Interface Definition Language compiler and a remote procedure call dispatcher. Developed grammars and lexical analysis components for the IDL compiler. Evaluated and integrated various middleware products into the ObjectCORE framework. Worked with Orbix to develop CORBA compliant distributed objects for the ObjectCORE C++ Server Framework. Developed robust asynchronous communications class hierarchy for Windows Sockets using TCP/IP. Developed C++ communication objects for client/server applications on a variety of platforms using TCP/IP, OS/2 Named Pipes, and other technologies including IBM MQ.
Skills/Technologies
Programming Languages
C ‘99, C++ 17, Java 8, C#, PHP 7.x, Python 2.6/3.x, Assembly (x86, 6502, Microchip)
Data/Markup/Scripting Languages
JSON, XML, HTML5, JavaScript, CSS3, make, CMake, Bash, Perl 5.x
Platforms
Windows 3.1-10, IBM AIX, Sun Solaris (Sparc), HPUX, Palm, Windows CE, Linux
Database
Oracle 7/8/9i, MySQL/MariaDB 5.x/8/10
Server
Apache 2.x, Tomcat 9, IIS, ASP.NET, Weblogic, iPlanet, WordPress