Bill D. Kilgallon
847 Carini Lane
Greenhills, OH 45218
USA
Home Phone: (513) 648-0150
Cell Phone: (513) 300-5630
E-mail: Bill@KilgallonFamily.com
Software Engineering, Linux, Unix, C, C++, HTML, Perl, Perl CGI, Web and Internet, Intranet, Object Oriented Analysis, Object Oriented Design, Object Oriented Programming, RogueWave C++, data modeling, Sablime, nmake, Apache, Tomcat, Tcpdump, Snort, Ethereal, Intrusion Detection, Libnet, Libpcap, IPChains, IPTables, IPPortfw, Security, Instruction, Documentation, X86 Hardwre, TCP/IP, Source Control Tools, Java, JSP, RS-232, Networking, DHCP, Samba, Awk, Sed, LaTeX, Co-routines (Perl and Korn Shell), Palm OS, Prof, UML, XML, Make, RCS, PHP, Javascript, Analog Circuit Design, Digital Circuit Design, SQL, Stored Procedures, Postgres, Oracles, Java JNI, Java Swing, Java Servlets, Kinetics, HP-UX, CAMAC, Software Development, System Design / Analysis, Team Leadership, Web Development, Instructional Design, Unix Administration, Networking and Security, Real Time Programming, Unix Internals Programming, Electrical Engineering, Data Acquisition, Documentation, Microsoft Office, Microsoft Windows (all versions), leadership, team building, communication, constructive problem resolution, ethics, tenacity, creativity, technology exploration, and insight.
Technical Specialist / Technical Lead
1998 – present
Individual assignments and projects listed below. Non-consultant responsibilities for Compuware included proposal generation and review, technical sales, curriculum development, training of other consultants, and participation on branch management team. Received multiple awards and recognition including the top yearly “Award of Excellence”. Work involved some travel and independent and high visibility client interactions.
Software Engineer
2003 to present
Oversaw, and tracked the migration of entire Lexis.com code base from an older proprietary SUN C++ compiler (version 4.2) to a current ANSI compliant C++ compiler (8.0). Identified issues, interfaced with other groups, developed automated scripts to perform tedious source modifications, integrated with source control systems, modified build scripts, performed manual and automatic testing, analyzed memory usage and performance issues, and created migration procedures and status reports for technical development communities. Tracked progress of external groups, identified and resolved external dependencies, and provided project forecasting and planning support. Additionally coordinated and managed contributions of other developers.
G.E. Medical Systems (through Compuware as consultant)
Software Engineer / Technical Project Lead
2002-2003
Did three projects for two groups, all involving the development of network connectivity for legacy medical equipment (CATscanners, MRI machines, and Nuclear Medicine scanners). Was brought in as damage control on a dead project after client was told it was impossible, and successfully implemented desired solution, and continued on to investigate and develop many other machines and platforms.
Used network intrusion detection tools to monitor and analyze unknown network traffic, including non -TCP/IP data. Tools included Snort, Tcpdump, Ethereal, Nessus, custom written C and Perl programs, and even (at about 3 a.m. in front of a particular stubborn system) a soldering iron, wire wrap, and an expendable laptop.
Created custom executable programs (in C) using libpcap and libnet tools to implement from scratch a low level network communications protocol stack for communication with a legacy (non TCP/IP) ISO layer 3 Ethernet protocol (ISO-8073 COTP).
Implemented an RS232 data tap with a TCPIP bridge direct to a Multibus II motherboard.
Successfully conceptualized, designed and implemented a persistent shell service (similar to telnet) on a target machine previously believed impossible. The platform was running an ancient proprietary version of Unix designed in the late 70’s (Regulex) and lacking just about every necessary tool: no functional c compiler, no documentation, no working socket libraries, no accessible TCP stack, not even a shell that was capable of a loop or goto operation. Facilities on the platform were nearly all missing, and the ones present were generally broken or incomplete.
Implemented remote shell (telnet) access to legacy systems (fully state-full) through normal web architectures (state-less) from remote system, through a firewall, directly to end user. This allowed service engineers to remotely examine and repair medical test equipment across an Intranet, where previously expensive onsite visits were required.
Successfully performed onsite audit, network and O.S. investigation of a variety of unknown medical devices. I would generally arrive at a remote, active, third party customer facility not knowing what hardware, operating system, or facility resources would be available. Work required a high degree of professionalism, flexibility, adaptability, discretion, and originality. Time limitations, access limitations, reliability requirements, and permissible activities limitations (both regulatory and ethical) presented significant and complex challenges.
Proctor and Gamble Iams Pet Food division (through Compuware as consultant)
Software Engineer / Technical Project Lead
2002
Assisted client with project ideation and development for possible PDA deployment. Performed exhaustive analysis of available PDA models with recommendations based on and tailored for both business and technical cases. Technical lead for blind focus group interviews and for all interactions with target group technical resources. Performed demonstration data migration for live data portal from corporate database, through corporate web site, all the way down to a usable portable PDA presentation of database information. Operated as go between for technical, marketing, and customer groups.
Lexis Nexis Group (through Compuware as a consultant)
Software Engineer
1999-2002
Designed and developed parts of the Nexis.com web product (using C++, Unix, and Perl). Maintained, extended, and enhanced the Nexis.com product. Created a variety of source code analysis and migration scripts using Perl and Perl-CGI. Performed security and performance analysis and enhancement.
Developed, tracked, documented and ported conversion tools and processes for data migration between divergent legacy civil database applications. Wrote (primarily C) software for a UNIX (Sun and AIX) environment that used both existing application API’s and direct file manipulation to generate and read reports and control files to aid in data analysis and recovery. Worked closely with client developers and managers to discover and remediate multiple instances of potential data corruption.
Instructor
2000-2002
Authored curriculum for Perl and Perl/CGI web development classes. Took students from not even being able to use a command line environment to being fully able to develop functional custom Perl / CGI dynamic web pages in about 12 sessions of 3 hours. Won universal praise from both students and management. Classes described as the best and most important of a five class educational track.
Software developer / software testing designer
1998
Used an automated load testing product to develop C based scripts for load testing of an onsite database installation. Developed reusable component C library for Unix systems that allows data to be generated by one script for successive consumption by later scripts. Developed a Perl parser that takes the automated scripts and automatically generates and publishes HTML Web based documentation correlating all check point labels with the associated actions. This documentation was used in real time to allow domain experts to interpret the ongoing tests and implications for further testing.
G.E. Aircraft Engines (summer Internship, then contractor, then full time direct hire)
Data System Specialist
1995-1998
Designed and championed specification for object oriented peripheral interface library. Implementation eventually grew to successfully abstractly encapsulate disparate devices, ranging from analog devices at 100Hz, through TCP/IP pressure modules updating at 20 Hz, to Daniels Gas Chromatograph systems that update via FTP at 15 minute intervals. Successfully integrated library into legacy C environment.
Created co-routine scripting tool to automate and encapsulate complicated test scenarios on distributed tools into simple click and run interfaces. Completely hid legacy underpinnings of existing systems from end user, but allowed full logging, error detection, and recovery. Did this without modifying legacy code, while allowing both local and remote execution of systems.
Administered in house software development workstations, including porting of GNU type tools (C, C++, LaTeX, Ghostscript, XV, Perl, Awk, Make, and Apache) to in house HP-UX workstations (ranging from HP-UX versions 7 through 10). Built, configured and maintained an Intranet web server on both HP-UX and Linux. Created proof of concept application where collections of C libraries were integrated into the Java environment using the Java Native Interface (JNI).
Created and implemented an abstracted library for Kinetics CAMAC acquisition equipment that allowed a single application to efficiently acquire data from a variety of CAMAC interfaces. The library overcame the further constraint in that it had to successfully integrate with an existing legacy application that had been designed for a completely different I/O architecture (GPIO-32). The library is automatically configured at compile time to support any combination of two types of system interfaces (SCSI or GPIB), three types of controllers (Serial Highway Driver, Single Crate, and Single Crate with List Sequencer), and three significantly different revisions of HP-UX (8, 9, and 10).
Designed and implemented a collection of reusable components, including a low level RS-232 interface library, and a collection of file stream I/O libraries. Designed and implemented a recursive distributed script to allow a Unix stream from any Unix utility to be redirected through any number of intermediate systems to a final Unix system for processing by any other Unix utility. Designed and implemented software to control traversing hardware rigs. These rigs ranged from a 70 foot tall microphone tower on a 50 foot track, to a hydraulically operated thermocouple rake inside running military and commercial jet engine combusters.
Designed and implemented a DAC system for moving data from an existing legacy system and output it to existing strip chart equipment for real time analysis of engine performance on 747 flying test bed with GE-90 engines. Was able to design and implement the system in under a month, bailing out a previously failed 6 month project.
Converted entire source base for ADS data system (hundreds of thousands of lines of code) from a manual revision source control system to an automated standardized source control tool (RCS). Ported all C code to be ANSI C compliant, and eliminated all FORTRAN warning messages, eliminating several previously undetected potentially serious errors. Created automated build routines for the entire system for a variety of target architectures, complete with dependency checking. Automated the creation of future Makefiles by creating a variety of templates for subsystems consisting of everything from shell scripts to C++ programs.
Performed performance analysis and architectural revisions to address serious performance issues with a SQL database. Developed reusable C++ profiling class library to assist in performance optimization. Performed system administration tasks and kernel modifications on HP-UX server to improve overall system performance.
Designed and implemented interfaces to a variety of control systems using a variety of protocols, ranging from RS-232 through TCP/IP. Implemented a variety of aircraft avionics interfaces, including ARINC and 1553.
Adjunct Lecturer
1988 to 1990
Taught structured programming using Fortran to second and third year engineering technology students. Taught various DC, AC, and Digital Circuits lab sessions to first year electrical engineering technology students.
Technologist
1988 – present
Deployed, secured, and maintained high speed always connected network with Unix based firewall, IP Masquerading (NAT’ting) web server, secure shell, DHCP server, port forwarding and secured external web proxy server. Network includes several heterogeneous systems (several Unix distributions, several Windows versions, and several embedded systems), all talking to one another on both hardwired and wireless networks. Automated routing table propagation, automated name server resolution, automatic client configuration.
Created and distributed a “remote digital picture frame” system using surplus embedded computers (3Com Audrey, running a custom burned embedded QNX operating system). System is totally web based (mainly PHP), including secured remote picture upload capability, server side image manipulation tools, and totally autonomous slideshow player (http://www.KilgallonFamily.com/slideshow). Deployed three of these devices, one in my living room, one in my parents living room, one in my Sisters living room. All three sites contribute digital photos in real time, and receive and display images in real time 24x7x365. Relatives get to see updated pictures of the family daily.
Created, registered, and maintained my own domain (KilgallonFamily.com), effectively operating as a domain maintainer and reseller (non-profit). Maintain web space and accounts for several remote distributed users, complete with web mail interfaces and automated spam blocking. Maintain multiple subdomains (i.e. basement.KilgallonFamily.com), including setting up and maintaining my own DNS MX, CNAME and Name Server entries. Perform this same service for several other (non-profit) domains.
Wrote and released as open source software a Perl based backup utility (backburner) that will archive almost anything (disk images, file system copies, any operating system, any architecture) to almost any media (network pipe, zip drive, CDR/CDRW, DVDRW, floppy, tape drive, FTP or HTTP site, etc.)
Wrote a Perl CGI based tool to analyze firewall logs in real time and build a SQL database (Postgres) that can then be used to generate a variety of reports (including list of attacks ordered by frequency, attacking IP addresses, numbers of probes, etc). Web / CGI interface allows a drill down approach that can completely display the source IP address and DNS host name (if available) of the attacker, the time, the type of attack, the frequency of attack, the likely exploit the attacker was attempting to use, and a list of other attacks performed from this same source address.
Served for one year as webmaster and Web Technologist for large, active, nonprofit web site (http://www.cincyvineyard.com/). Hundreds of pages, over 300 megabytes, all of which had been badly mangled by the use of Microsoft Front Page and many short term and inexperienced authors. Completely rewrote site and developed custom Perl CGI scripts to simplify and re-deploy existing content in manageable format. Helped manage and co-ordinate teams of volunteers. Managed schedule, choose technologies, wrote and enforced technical guidelines, and coordinated with management (100+ employee organization).
Wrote curriculum for self guided or instructor lead Perl and Perl/CGI class. Released material under Open Source license and published to www.KilgallonFamily.com. Pages currently have a very high Google rank for Perl instructional material, and generates hundreds of hits. Many Google queries for Perl syntax questions result in my materials being presented on the first or second page.
Deployed, used, tweaked, built and maintained a huge variety of Linux and Unix systems on just about every conceivable piece of supported hardware.
University of Cincinnati College of Computer Science
Completed all coursework requirements for Masters of Science (did not complete Thesis), 1991
Computer Science
University of Cincinnati College of Applied Science
Bachelors of Science, 1989
Electrical Engineering Technology