Mr. Gaskill has nearly 19 years experience as a software architect and developer, and specializes in C++ and Java, scalability and portable software development for the Windows, Unix, Macintosh, and other environments. He has 14 years of C++ development, 17 years of Unix, and 13 years experience in low-level Windows and OS/2 programming. He produces highly maintainable code, and maintains advanced architecture and development skills, including software portability, multi-threading, performance and optimization, relational database design, GUI development, language processing, data communications, data encryption and data compression. Mr. Gaskill has prepared and presented professional training courses in six programming languages. He is a highly motivated individual, and continually seeks ways to improve himself and his professional skills.
TECHNOLOGIES CORBA, COM+ / DCOM / COM, EJB, RMI, SOAP, SOM / DSOM, IBM MQSeries, BEA Tuxedo, STL, J2EE, JSP, JDBC, JNDI, LDAP, XML, HTML, ODBC, MFC, DirectX, OpenGL
PLATFORMS Windows XP/2K/NT/ME/9x/3.x, Sun Solaris/SunOS, HP-UX, IBM AIX, SGI Irix, Digital Tru-64, Linux, OS/2, BeOS, MacOS, MS-DOS
TECHNIQUES UML, Patterns, OMT, Booch, TQM
SOFTWARE Microsoft Visual C++, Borland C++ Builder, Symantec C++, Watcom C++, IBM VisualAge for C++, Sun Visual Workshop, HP aC++, MetroWerks CodeWarrior, Borland Delphi, Borland JBuilder, MS Visual J++, Microsoft DCOM, Inprise VisiBroker, IBM DSOM, ExperSoft CORBAplus, Iona Orbix, omniORB, ORACLE, MS SQLServer, IBM DB/2, Rational Rose, Rational Purify/Quantify, MS Office
University of California, San Diego Computer Science studies
Johnson County Comm. College General studies
Mira Costa Comm. College General studies
Lower Columbia Comm. College General studies
Unified Modeling Language 1 day course on UML with Rational Rose
Advanced C++ Techniques 3 day course on advanced C++ topics
Introduction to SQL Windows 5 day course on client/server development in SQL Windows
Paradox 4.0 Development 5 day course on Paradox 4.0 development
Advanced Clipper 5.01 5 day course on CA-Clipper 5.01 design and programming
dBase Programming 5 day course on dBase III+ programming
ORACLE SQL 3 day course on client/server development in ORACLE SQL
Total Quality Management 3 day course on Total Quality Management techniques
Introduction to C/C++ 5 day course on C/C++ programming
Ada Software Development 5 week course on software development in Ada
COBOL Programming 8 week course on COBOL programming and JCL
Hurricane Software, Inc
Position: Senior Software Architect
July 2001 – Present
Primary responsibilities include architecture, design and development of commercial software products and custom software solutions, as well as day-to-day business operations. Development is in C++, Java, and Delphi on the Windows (2000 / NT / 98), Linux, and Solaris environments.
Software architect and developer of a language parser and code generator, developed for a customer in the telecom industry. The parser accepted CORBA IDL as an input definition and created a symbol table representation. The symbol table was then used by dynamically loaded code generators to produce a variety of types of source code, targeted to many languages, platforms, and technologies. The project was developed on Windows 2000 and Linux, using Java as the development language, and resulted in the generation of source code in Java, C++, and XML to run on Windows, Linux, and Solaris.
Software architect for the product upgrade of the WinGREP product, primarily responsible for the introduction of new product features and portability issues. Responsibilities also included defining and providing product requirements, developing reusable components, and designing and implementing plug-in architectures. Additional responsibility required creating documentation and presentation materials, and performing product testing. Product development was in Delphi and C++ for Windows.
Software architect and developer of a C++ portability framework, encompassing user interface, multithreading, file management, and other application and system functions. The framework allows application development to be easily ported to a variety of operating platforms, including Windows, Linux, and Solaris, and will be extended to support additional platforms, as needed. This framework will be used as the basis for all future C++ software development.
Position: Chief Architect, Broadband Development
July 2000 – August 2001
Architecture, design and development of the BroadSight project, which was intended to provide a solution for content services within the telecommunications and Internet/intranet industries. Development was in C++, Java, CORBA and DCOM on the Windows (2000 / NT / 98), Linux, and Solaris environments. Project designs were modeled in UML prior to development
Chief Architect of the BroadSight project, primarily responsible for design and development of the BroadSight architecture and unit testing the final products. The product development team consists of three senior architects / developers, a project manager, and a varying number of junior developers. Responsibilities included defining and providing product requirements, deliverable documentation, and delivery schedules. Additionally, required creating documentation and presentation materials and presenting the product concepts and design to management, sales, and customer audiences.
Chief Architect of ClearPath, an internal project used to provide a portable framework for distribution technologies (CORBA, DCOM, RPC, etc). The project utilized Rational Rose as a modeling source, and generated C++, Java, CORBA, and DCOM code to represent the model. This project was used as a core technology within the BroadSight product.
Business Solutions Group, LLC
Position: Senior Software Engineer, Technical Analyst
January 1998 – July 2000
Design and development of various aspects of the Sprint ION project, which is designed to be a global integrated voice and data network. Development was in C++, Java, and CORBA on the HP-UX, Solaris, and Windows NT environments. All project designs were modeled in UML prior to development.
Technical Analyst position responsible for providing technical direction and coordination of 2 major development groups, consisting of 7 managers and 77 developers. Additionally, responsible for establishing direction with other dependent development groups within the organization. Provided detailed requirements and designs to developers and presented the technical approaches to management. Responsible for the project justification and design presentation provided to executive management for budgetary approval. Provided detailed network software designs to external development organizations. Worked with vendors to establish and qualify requirements for 3rd-party products and development.
Co-designer of a massively scalable, in-memory object database for use in determining user configurations during real-time call processing. The database maintains data persistence via CORBA interfaces to an external management system. The database was designed as a multithreaded server, and was proven to be efficiently scalable with respect to memory, processors, threads, and processes. The database is implemented with STL and pthreads, using a custom allocator for shared memory access. Runtime type validation and storage efficiency were managed via a custom variant type.
Assisted in designing and developing a portable multithreaded architecture framework for distributed processing in an N-tier environment. The framework was initially implemented in C++ on Solaris and HP-UX. The framework provides functionality for installation and component migration, process control, monitoring, event logging, thread control, and portable ORB management.
Analysts International Corporation
Position: Senior Consultant Analyst
June 1995 – January 1998
Complete or partial responsibility for the design and development of multiple components of an enterprise-wide, 3-tier, client/server system. The server programs were written in multithreaded C on Solaris and AIX; client programs were developed using PowerBuilder on Windows NT. BEA Tuxedo was used as the middleware transaction manager, ORACLE and DB/2 operated as DBMS servers, and MQSeries, APPC, and RPC were used to communicate with legacy AS/400 and OS/390 systems.
Team leader and lead developer for a project designed to increase performance within specific application servers identified as inefficient. Responsibility included analysis and tuning of performance and resource utilization of C and SQL code in server programs, conducting detailed source code reviews, and instruct project teams on proper client/server design and multithreaded development. At the end of the project, the number of lines of actual code had been reduced by over 60%, and the applications were, on average, over 300% faster than before; one particular server actually achieved a 1600% increase in performance.
Designer and developer of various multi-platform libraries intended to support a 3-tier client/server environment for Unix, Windows 3.1, and Windows NT, using C and ORACLE. Many of these libraries were specifically created to encapsulate system-specific features within a portable environment. The portable libraries addressed multi-threading, file handling, network communications, error management, database connectivity, checkpoint start/restart, date/time handling, and system security.
Designer and developer of a multi-threaded Fax routing daemon for Unix. The program maintained network connections to multiple clients and processed Faxes on demand. Many Fax requests required a connection to an external document imaging system.
Position: Project Leader
November 1994 - November 1995
Responsible for the design and specification of a suite of commercial multimedia computer-based training (CBT) software, as well as the tasking and productivity of a team of 6 programmers. The project was developed on Windows 3.1 and ported to Windows NT, OS/2, and MacOS.
Project leader, designer, and lead developer of a suite of computer-based training (CBT) software, which enabled CBT authors to quickly create sophisticated CBT courseware. Technical challenges included the development of a rich text editing component, custom video, animation, and sound drivers, design and development of a proprietary relational multimedia database, and development of libraries to support various multimedia file formats. Software compression techniques were used to optimally store multimedia data. Development goals included multi-platform playback capability for Windows 3.1, Windows NT, OS/2, and MacOS. Development primarily occurred in Windows 3.1 and OS/2, using C++ and the zApp application framework.
Sokkia Technologies, Inc
Position: Programmer II
July 1994 - March 1995
Responsible for development of GPS (Global Positioning System) and surveying embedded systems software and prototype applications in MS-Windows. Additional duties included porting MS-DOS software to Windows, designing common code libraries, and developing coding standards.
Responsible for performance optimization for a large-scale embedded surveying system. The project had over 4 million lines of code, and required wholesale size and speed optimization. This project required custom file management, memory management, algorithm, and compression techniques to be employed. The software was originally designed for a 512K ROM embedded device, but was able to be deployed on a 256K ROM system after optimizations were complete. This project retained a significant market for the company.
Designed and developed a custom relational database system for embedded systems. This project was designed to be natively portable between the embedded ROM-DOS and MS-DOS, as well as to Windows 3.1 and Windows NT.
Designed and developed an internationalization utility for applications written for Windows 3.1, Windows NT, and embedded ROM-DOS. Specific features included the ability to dynamically choose languages, compress language tables, and to import and export language files from various sources. Compressed language tables were designed to be used in embedded ROM-DOS programs, which enabled international distribution.
Designed and developed a portable communications API for multiple platforms. The API provided protocol support for a variety of communication mediums, including dedicated serial, dial-up serial, parallel, and network sockets. High-level functionality was provided to applications, including file transfer protocols (X/Y/Z modem, Kermit, ftp), error detection, and guaranteed transmission.
Analysts International Corporation
Position: Consultant Analyst/Programmer
March 1994 - March 1995
Responsible for the design and development of application and systems software on a short-term consulting basis. All development was done in C and C++ under MS-DOS and MS-Windows.
Enhanced an existing embedded application to increase performance and decrease code size. This involved utilizing a number of advanced techniques, including rewriting the file system manager, implementing a custom memory sub-allocator, and designing and writing a dynamic library loader. Additionally, much of the application was rewritten to accommodate portability to the Windows 3.1 and Windows 95 environment to facilitate end-user training and marketing efforts.
Designed and developed a visual component architecture for a commercial multimedia presentation application. Development occurred on Windows 3.1 using C++ and the zApp application framework. The code was ported to OS/2 and Windows NT during development.
Advanced Digital Technologies, Inc
Position: Lead Programmer, Trainer
June 1993 to June 1994
Duties included developing commercial utilities and function libraries, project management, providing direction to subordinate programmers, conducting developer training, and developing training course outlines.
Designed, developed, and presented training courses in C, C++, Pascal, and assisted in the development of CA-Clipper and Visual Basic courses. Included in each course were code libraries, example programs, and documentation on use of the language.
Designed and developed an integrated database development environment for SQL and xBase developers. Features of this project were an integrated text editor, interface to the CA-Clipper compiler and debugger, installable linkers, on-line hypertext reference, and custom environment configuration. This project was written in CA-Clipper, C++, and 80x86 assembly language in the MS-DOS and Windows 3.1 environments.
Designed and developed an add-in library of analytical functions in C++ for Microsoft Excel. The library was developed for use in commercial financial analysis software.
Software Synergy, Inc.
Position: Consulting Analyst/Programmer
June 1992 - December 1993
Duties included developing client/server software for site-specific purposes, analyzing and implementing needs, and performing support services.
Designed, developed, and implemented a test suite of tools at Informix for the HyperScript Tools and Informix Database. Features included development of data driven menus and controls, timer- or counter-based execution, execution and regression log, automated statistical analysis on over 20 criteria, and on-line reference. Written in HyperScript Tools and C++ for Microsoft Windows 3.1, Microsoft Windows NT 3.1, and X/Window.
Designed, developed, and presented an 80 hour C/C++ course for professional software consultants. Included in the course were basic and intermediate C and C++ programming concepts, portability techniques, and full documentation.
Designed and developed a remote login facility for an account management application. Features included the capability to connect via remote network terminal and dial-in access utilizing four major telecommunications protocols. Written in C++, CA-Clipper, SQL, and 80x86 assembly language.
Developed a 3-tier client/server system for real estate and asset management. Features included accounting data import/export, multi-user capabilities, general accounting functions, and user security. Written in C++, SQL, and Gupta SQL Windows.
Position: Software Consultant
October 1988 - April 1990
Duties included technical leadership, writing commercial utilities, applications, and code libraries, and performing hardware and software consulting services.
Designed and developed portable graphics system kernel for GUI environments. Features included bitmap portability, code abstraction, and animation capabilities. Platforms supported were MS-DOS VGA graphics, MS-Windows 2.0, OS/2 PM 1.2, X/Window, and OpenLook. All code was written in C, C++ and 80x86 assembly language.
Designed and developed shareware bitmapped font editor and an EGA and VGA text mode font loader. Capabilities included font creation and editing, import from Windows bitmapped fonts, and text font loading for VGA text mode applications. Written in Pascal, C, and 80x86 assembly language.
Designed and developed various disk management utilities for MS-DOS. Utilities included were disk copying and formatting, directory tree management, file undelete, and backup and restore capabilities. Written in Turbo Pascal, C, and 80x86 assembly language.
United States Marine Corps
Position: Sergeant, Programmer
June 1986 to June 1992
Duties included developing mission-critical software in C, C++, Clipper, Pascal, and 80x86 assembly language, project management for site-specific applications, quality assurance and testing, and analysis and design. Platforms supported were MS-DOS, MS-Windows, OS/2, and Unix.
Designed and developed a communications software application to allow the use of satellite, serial, magnetic tape, and paper tape media to create and distribute Standard Naval Messages. Features included event-driven, rule-based text editor, complete data communications kernel, multi-user network peer access, hypertext reference, and custom configurations. Written in Pascal, C, and 80x86 assembly. Awarded first Navy Achievement Medal for this project.
Designed and developed a Personnel Management MIS system, comprised of 82 major applications integrating military and civil service personnel records and information. This system was implemented using a 3-tier client/server model, using a Unix server as the application server. ORACLE was used as the database, the application servers were implemented in C, C++, and SQL. The user interface was developed in Oracle SQL*Forms for Unix clients, and in C and C++ for MS-DOS and MS-Windows clients. Connectivity was based on TCP/IP protocol, implementing a custom transaction manager protocol to deliver data. Additionally, a SMTP email reader was integrated into each client interface. Awarded second Navy Achievement Medal for this project.
Developed and presented professional development training curriculum for intermediate and expert-level Ada, Object Pascal, C++, and CA-Clipper languages. Courses were presented at a rate of 3 class sessions per week, for a period of 12 weeks. Each course required students to exercise object-oriented design and programming techniques while developing sophisticated team projects.
Designed, developed, and implemented an essential equipment tracking application, designed to control the accountability of equipment crucial to the operations of military units. Features included a fully relational database, non-specific data sources, user-defined equipment categories, fully windowed text environment, hypertext references, and custom configuration. This was written in C, Clipper, and 80x86 assembly language.
Floating Point Data Systems
Position: Programmer, Technician
March 1985 - May 1986
Duties included systems software development and debugging for Apollo minicomputers.
Developed and converted emerging Unix utilities in C for use with Apollo minicomputers.
Assisted in developing a download request project to facilitate the removal of a punch card reader from an assembly-line manufacturing system. Written in C and COBOL on Unix.
Lower Columbia Community College
Position: Programmer, Instructor
January 1984 - June 1985
Duties included presenting instruction in Pascal, BASIC, and MS-DOS as an assistant instructor and C and Pascal development in MS-DOS, Unix, and MacOS.
Assisted in the development and presentation of introductory college courses on Pascal and BASIC programming languages and MS-DOS operating system.
Assisted in development and maintenance of school grading and attendance system. Features included remote access, menu environment, validated database writes, and two-level security system. Written in Pascal and C for Unix and MS-DOS.