Michael J. Hammel

Principle Software Engineer

2515 Stone Creek Rd.
Colorado Springs, CO 80908
832-754-8755 (c) / 719-282-3314 (h)
mjhammel@graphics-muse.org
http://www.graphics-muse.org
http://www.linkedin.com/in/mjhammel

Professional Objective

Embedded Development on Linux systems, including architecture and design, build systems, and user interfaces.

Experience

20+ years of software development on Unix, Linux and open source systems in R&D environments for the storage, computer system, government and telecom industries.

Operating Systems / Firmware

Linux Distributions: Red Hat/Fedora/CentOS/Ubuntu/Debian/SuSE Linux, FreeBSD, Solaris, UNIX System V R3/R4, AIX, HP/UX, Das U-Boot

Development tools

C, Buildroot/Busybox, Crosstool-NG, Das U-Boot, Linux kernel configuration and builds, BDI2000 JTAG programmer, Git/Mercurial/CVS, Bugzilla/Flyspray, sh/bash/ksh, gcc/gdb/cross compilers, make/autoconf/imake, libvirtd/qemu/virt-manager, MySQL, RPM and Debian package management system, debbootstrap, Wordpress, Java/SWT/JPF, Perl, PHP, XML, X Window System - Xlib / Xt / Xaw / GTK+ / Motif, Web - HTML / DHTML / CSS

Publications

Freelance author, Linux Journal

Columnist, Linux Format Magazine (UK), Future Publishing, 2002-2010

Senior Editor, LWN.net, 2000-2001

Artists Guide to GIMP Effects, No Starch Press, 2006 (2nd edition in development)

Essential GIMP for Web Professionals, Prentice Hall PTR, 2001.

Artists Guide to the GIMP, SSC Publishing, 1999.

GTK+ Programming, SAMS, published 1st Quarter 2000 (authored the 2 chapters on GLib programming)

The Unix Web Server Book, Ventana Press, published December 1996 (co-authored; responsible for Graphics and Multimedia chapters) 

Selected Writings

Managing KVM Deployments with Virt-Manager, Linux Journal, January 2011

Comparing MythTV and XBMC, Linux Journal, May 2010

Mongoose: An Embeddable Web Server in C, Linux Journal, April 2010

Running Remote Applications, Linux Journal, February 2010

Ximba Radio: Developing a GTK+/Glade GUI to XM Satellite Radio, Linux Journal, September 2004

An Introduction to GTK+Programming, Linux Magazine, June 2001

The History of XFree86, Linux Magazine, December, 2001

Education

B.S., Computer Science, May 1987
Texas Tech University, Lubbock, Texas

Talks

SXSW – South by Southwest, panel member, March 2002

Atlanta Linux Showcase, October 2000

LinuxWorld, February 2000

Atlanta Linux Showcase, October 1999




Career Highlights

Principle Software Engineer
Colorado Engineering, Inc.
June 2006 – Present

Responsible for cross toolchain, bootloader, kernel, root file system and applications development for internally developed PowerPC board based on AMCC 460sx utilizing Crosstool-NG, Buildroot/Busybox, u-boot, AVR tools, custom kernels and drivers. Multiple metabuild systems drive Makefile-based builds with custom patches and configurations. Work includes JTAG and u-boot based flash partitioning and custom kernel and toolchain configurations and extensions to bootloader and kernel. Application development tree for user-space applications includes mongoose-based cross-compile embedded web server and Matlab/Simulink modeled autocoded radar functionality. Implementing PCIe kernel driver and user-space utilities to support mutliple FPGA-based PCIe devices. Defined specifications for FPGA to kernel, kernel to user space and user space to remote system data messaging. Defined data flows for complete radar system, mode management of multiple integrated boards and scheduling of development tasks related to milestone deliveries. Also includes extensive project management, software architecture, documentation and production planning duties for a multi-member, cross discipline and distributed team.

Designed, implemented, packaged and project managed .Crunch, a distributed grid computing environment. System includes Web Services interface with a MySQL backend. Autogenerated client side API library from Web Services, including JMS asynchronous messaging, with plugin extensible UI and CLI clients. UI client used for management and workflow submission. CLI client is grid worker running tasks on remote hosts. Clients based on Java Plugin Framework, utilize JNI for platform specific process management and SWT for UI components. Build system designed for RPM/.deb deployment of clients and script based ISO installation of servers. Code base of over 125K lines of code, not including XML configuration files. Work is geared toward releasing clients and server as open source and building vertical market business through grid application development, management and consulting.

Implemented multiple applications on .Crunch grid system including Crunch Cloud, a simplistic cloud management environment utilizing embedded, chained web servers and VNC for web-based access to virtual machines. Configuration includes extensive virtual machine configuration with various Linux distributions using libvirtd/qemu/virt-manager tools. Also implemented a digital signal processing application and a steganographic analysis grid application, both running on .Crunch for Air Force Research Labs.

Other duties: Implemented a social network system interfacing to external Colored Petri Nets component as prototype for government contract. Configure and maintain corporate project-management wiki, issue tracker and developer blog. Implemented Drupal-based document management system. Manually ported 1980's Pascal code to C for weather radar project. Defined and implemented production process, software release process and productization plans for in-house developed boards and software products. Wrote numerous contract proposals.

Senior Software Engineer
Octopus Development Group
DRS Technologies, Signal Solutions Colorado
April 2005 – April 2006

Responsible for overall design and implementation of custom embedded Linux distribution for high-end, blade-like system. Defined and implemented embedded root filesystem layout based on Busybox toolset and MontaVista Linux platform. Created build system for custom Linux distribution based on LinuxFromScratch methodologies. Modified and maintained high speed network driver for HyperTransport/SPI-4 interface for a 2.4 kernel. Focal engineer for design issues from kernel level through distribution and applications support, including work on 2.6 port and clustering software integration. Lead developer for all tools, including CVS management, build system, Wiki and blog installation and maintenance and overall developer tool specifications.

Senior Software Engineer
Control Tower Software Group
RLXTechnologies, Inc.
Nov 2003 – December 2004

Designed and implemented automated full image and upgrade build and developer test systems for Linux based (Red Hat and Debian) blade management product. System includes automated remote testing facility supporting both frontend and backend sanity, regression and unit tests. Build system is template based and utilizes GNU Make, Perl, CVS, wget, RPM, alien and related tools. Test system built with Perl and PHP. Wrote ~20 page document describing in detail image build process, tools and related resources for use by team when I was unavailable.

Also responsible for developer tools for debugging, profiling, encoding and caching of PHP based management system, including integrating CVS with bug tracking system and online blogging software. Built and packaged in RPM format PHP, PostgreSQL and numerous inhouse applications. Implemented Linux LiveCD based factory installation software based on Morphix distribution. Worked on integrating features to a uClibc/Busybox based embedded environment. Installed and managed Wordpress blogger, PmWiki Wiki software, and Qmail for integration with blogger. Established APT repositories for use with RPMs. Built and managed upgrade distributions for field released products.

Additional responsibilities included managing hardware resources for developer group, including CVS, archive, DNS and DHCP servers, test blade and 1U systems and accompanying peripherals and network systems including VLAN management on Cisco switches. Maintained Wiki system and content to keep track of all resources, developer documents and processes used by the Control Tower Software team.

Senior Software Engineer
Hardware Diagnostics Group
Panasas, Inc.
April 2002 - February 2003

Responsible for the design, implementation and deployment of a distributed test harness written in C and used for automated testing of blade server systems in both the hardware design facility and in factory production. System included general infrastructure for link list and task management, distributed status handling using a TCP based protocol, and user interface features based on GTK+, ncurses and Web browsers. Also responsible for diagnostic test tools used in certification of both memory and hard drive subsystems. Over 15000 lines of new code, plus management of existing code base under both Perforce and the Cons build environment.

Senior Editor
LWN.net
September 2000 - November 2001

Responsible for day to day editorial management of various parts of a news oriented web site with over 2 million unique visitors a month. Processed content for the Daily Page, requiring sifting through news leads, finding, reading and selecting, and posting material appropriate for that page. Daily Page used as content primer for Weekly Edition. Wrote lead in articles based on development research and personnel interviews and edited various pages of Weekly on as needed basis. Covered issues including Desktop Linux, Security, Distributions, Development and Commerce. Wrote numerous Front Page editorials. Primary editor for site while Managing and Executive Editors were out of contact, usually once or twice a month. Minor coding work for site maintenance.

Senior Software Engineer
Samsung Telecommunications America
November 1997-February 1999

Responsible for development, test, and installation issues related to base station management system for digital PCS network. Work includes analysis and documentation of Graphical User Interface designed and implemented in Korea, extension of GUI for new features, and overall understanding and debugging of Unix-based daemons and tools. Lead engineer for all Unix-based development.

Senior Engineer
EMASS, Inc. 
June 1996 - November 1997

Designed and implemented Motif based UI and daemon for AMASS file system administration, including generic AMASS API libraries for use with Command Line Interface (CLI) tools. Libraries include signal wrappers, link list management, work file management, and AMASS API wrappers for querying the AMASS API. System being ported to multiple flavors of Unix.

Primary architect for new application layer features. Initiated formal development process, coding standards. Initiated the use of product plans and schedules. Responsible for bug fixes in both application level and some kernel level code.

Lead Developer
Xi Graphcs, Inc. 
April 1995 - February 1996

Responsible for porting of OSF Motif 2.0 to various Intel-based Unices, including BSDI BSD/OS, Linux, and FreeBSD. Ported and packaged X11 XVideo extensions (server extensions and sample implementations of API library) Wrote HTML based documentation for these products. Designed and implemented an mSQL-based Web database using C programs. Responsible for evaluation of various UNIX based tools for graphic design (netpbm, gimp, etc). Established RCS tree and development tools for accessing, updating, building, installing and creating distribution packages. Developed initial Web site. Responsible for keeping an eye on related Usenet newsgroups and forming ideas and information for WEB site.

Contract Programmer
Aztek Engineering, through Adia Information Systems 
November 1993 - February 1995

Wrote event-driven, streams-based application code for Unix-based Interactive Cable Video system (GTE Mainstreet). Designed and implemented DOS-based TCP/IP gateway library. Designed and developed text-based front-end to database conversion utilities. Primary Test Engineer responsible for automating test facilities. Designed and developed Script Generator utilizing SQL for creating scripts used by a load-generating test facility. Developed new proprietary script format for verifying content of video and audio frames sent to a terminal access device connected to TV. Implemented automated tools for analyzing test results for validity. Designed and wrote Acceptance and Field Verification Test Plans.

Designed and implemented textual interface to embedded real-time telephone switching system for developers use in debugging. Implementation protocol for passing information between multiple tasks within the switch. Assisted in debugging of call processing and billing tasks and coordinated the integration of PC-based administration utilities with the switching system.

Other Experience

Chairman and Founder
Colorado Linux Info Quest
August 1999-October 2001

Founded the Colorado Linux Info Quest (aka CLIQ), a registered non-profit in the state of Colorado formed to provide a vendor neutral, community friendly and business focused conference and exhibit for the Rocky Mountain Region. Chaired the first event in April 2000, which ran with a $26,500 budget, including overall event management and management of the board of directors, handled all financial issues for the event, contracted and acted as primary contact for all exhibitors and sponsors, handled all event venue preparations, wrote and tested the Web-based registration system used at the event, handled all attendee registrations and the accompanying database management, handled all publicity and show signage issues and lead the volunteer board of directors who managed all other aspects of the show. Chaired the committee for CLIQ 2001, with similar duties and a budget of approximately $40,000. Managed second event from a remote location (Houston). Handled all tax and corporate filing issues. Both shows broke even. Non-profit dissolved by unanimous vote of board of directors in October 2001.

Independent Work

BeagleBox: Architect, design and implementation of open source, DIY set top box product based on BeagleBoard/OMAP platform utilizing Crosstool-NG, Das U-Boot, Buildroot and Linux. Created metabuild system similar in scope to OpenEmbedded and Poky using GNU make. Implementing UI based on Matchbox fork. Created, wrote and maintain project wiki and bug database. Make regular releases through SourceForge with code repoistory on Gitorious.org URLs: http://www.graphics-muse.org/wiki/pmwiki.php?n=BeagleBox.BeagleBox, https://gitorious.org/beaglebox

XNotesPlus/XNotesNG: Personal Information Manager for Linux/Unix systems written in Java using JPF/SWT. URL: http://www.xnotesng.org