9482 Davis Creek Rd.
Ware Neck, VA 23178
Mobile Phone: 804-815-7987
Fax: 757-273-0923
Email: bcollins@phunnypharm.org
URL: http://www.phunnypharm.org/~bcollins/resume/
To work in the field of Linux kernel development, specifically device drivers.
Kernel Team Lead
Canonical (Ware Neck, Virginia)
August 2005-Present
Lead an engineering team to handle development, testing and deployment of the Linux kernel for Canonical's Ubuntu Linux distrobution.
Founder/CEO
SwissDisk, Inc. (Gloucester, VA)
April 2004-Present
Developed a secure standards based Internet storage service aimed at traveling professionals and geographically diverse companies.
The site boasts 256-bit AES encrypted filesystems for users. Each users filesystem has its own hash which is protected by the users password. Access to the filesystem is via standard WebDAV over SSL protocol, which opens up usage to a wide variety of clients. The storage system is running Apache with customer modules, MySQL database server, and Linux's Logical Volume Manager.
I developed, tested and deployed this entire system. Website graphics and layout were done by my partner. I sold the company and its IP to a California company February 2005. I still retain 5% of the company.
Software Engineer
Watchguard (Seattle, WA)
September 2001-April 2002March 2003-May 2005
Primary job duties included linux kernel development in an embedded environment. This mainly pertained to hardware drivers and TCP/IP networking (VPN, NAT, filtering, proxies).
Projects:
Software Engineer
DEQO Solutions, Inc. (Newport Beach, CA)
April 2002-March 2003
Head of development for a PVR style client/server media platform. The basic design involved a primary server for storage with modular components for input and output.
My primary task involved helping to spec the hardware platform, and develop the software to power the systems. The server component was basically a Linux based server, with some special tuning for switching HD/SD video streams to disk and/or transmitting them out to video components over a proprietary protocol on ethernet medium.
The systems media out component was driven from a MicroBlaze fpBGA base board, using an in house bootrom design to accept digital video over ethernet and DMA'd directly to RAM, or output through the video hardware. My job was to design the bootrom, operating system and ethernet driver to power this system.
The final product included a from-scratch multitasking, pre-emptive mini-OS. It included a 3k TCP/IP stack, a gigabit ethernet driver for Broadcom's BCM5702 MAC/PHY chip, a custom IP protocol utilizing a ring-buffer and sequential data delivery for video streams, and a driver for the STi7000 MPEG decoder chip. The entire executable image was 115k compressed. It was placed (compressed) into the BCM5702's serial eeprom, and upon boot was uncompressed into slowram. The decompressor was 1.5k of executable code (to fit into 4k fastram). The entire system ran in 512k slowram, plus 4k of fastram for common routines (interrupt handler, memcmp, mul/div).
Projects:
Sr. Developer
ITisOpen (San Jose, CA)
July 2001-November 2001
Hired to lead the Research and Development department of a new Linux start-up. Main responsibilities were to build documentation on a set of service offerings. The start-up never got second round funding.
Directory Services Engineer
Winstar Wireless (Herndon, VA)
January 2000-April 2001
Responsible for the enterprise wide deployment of LDAP services for authentication, employee information, and asset management services. This included identifying and collecting data from key company agencies and synchronization of the data for over 8000 employees. Data was collected from an existing Access database, PeopleSoft database and Email services in to one cohesive data set for propagation over the LDAP system. The LDAP service is based on a replication structure, serving several key network points across the U.S. and overseas, including corporate office buildings and sales offices.
System Administrator
Virginia Dept of Juvenile Justice (Jordan Systems, Inc.) (Richmond, VA)
May 1999-December 1999
Contracted consultant to build an internal information structure consisting of an attribute based web system using LDAP for attribute storage and PHP3/perl for programming the backend applications. Client access is via normal browsers (ie, Netscape, IE, Lynx, Mosaic). This supports the OASYS network, which is based on an Oracle database and AIX/IBM servers. The LDAP API was enabled using OpenLDAP and perl-ldap. Also enabled a "big brother" type host monitoring system using LDAP. Also implemented Kerberos 5 based authentication system for internal and external access to the systems.
System Administrator
NASA Langley Research Center (Jordan Systems, Inc.) (Newport News, VA)
July 1998-April 1999
Part of a four person group that managed software and system maintenance for AIX, Solaris, Irix, and Linux systems. Also responsible for developing and deploying new technologies, most of which I was responsible for developing. Other responsibilities included maintaining a full DCE/DFS cell for general use (ave. of 5000 accounts), as well as integrating software with the DCE authentication scheme. Designed and developed an LDAP based name service (replaced NIS, DCE, and Kerberos) and the utilities associated with it's general use. Began work on porting the DCE/DFS source code to the Linux platform.
Assistant Systems Analyst
DynCorp Information and Engineering Technology (Newport News, VA)
December 1997-June 1998
Developed Web based software as front end database applications with client interface as well as online administration. Implemented security protocol to control access to the systems and linked control to the administration application. Responsibilities also included maintaining the FreeBSD based servers, which served the internal workstations (Windows 95 / WfW 3.11) utilizing Samba for file and print services.
Director of Web Design / Web Admin
Visionary Systems (VisiNet) (Newport News, VA)
June 1996-December 1997
Lead a four person web design group. Responsibilities ranged from project management, to maintaining the Solaris based apache servers. The servers hosted over 200 virtual web sites. Researched new and developing technologies for offering value added features in our web design scheme.
I was also responsible for teaching VisiNet's web courses. This involved creating curriculum and course material as well as actually teaching the class. Topics included Java and HTML. Class sizes ranged from 4 to 40, and audiences ranged from IT professionals, to average office workers. Related to this, I also did many public talks for area user groups.
Hardware design knowledge: Intel x86, ia64 and x86_64, Sun SPARC and UltraSPARC, Motorola M68000 line, Motorola and IBM PowerPC lines, Mips CPU line, StrongARM line.
Operating Systems: Linux kernel based OS's from 2.0 through 2.6, Solaris, HP/UX, AIX, All Windows variants, MacOS and MacOSX.
Programming languages: C (8 years), C++ (8 years), SPARC assembly (4 years), Perl (9 years), Python (5 years), PHP (5 years), YACC (1 year), SQL (1 year).
Internet protocol development: UDP/IP, TCP/IP, HTTP, ICMP, SMTP, DNS, custom IP protocols.
Linux Kernel subsystem development: PCI, networking protocols, ethernet drivers, USB, IEEE-1394 (Firewire), SCSI.
Documentation: DocBook, Doxygen, LinuxDoc, XML, XSL stylesheets, DTD creation.
Database: MySQL, PostgreSQL.
Debian is considered far and wide to be one of the most stable Linux distributions. It's strengths include a stability and policy driven development model and security. It is one of the most cohesive end-to-end systems available, supporting one step upgrades from one major release to the next. Debian is under a non-profit organization, Software in the Public Interest (SPI) and is supported by over 900 volunteer developers from across the globe. All development is done collaboratively via the Internet (email discussion groups, Internet Relay Chat, etc.).
Debian produces a stable distribution for over 11 architectures (Arm, PPC, Alpha, Intel, SPARC, Motorola 68k, ia64, hppa, mips, SH4, s390) and is currently developing ports for several other architectures including AMD-64, We also have a port for the GNU/Hurd system for Intel underway. With over 6000 software packages (spanning 6 CD's for each architecture), all compiled for each architecture in an easy to install package format, it is one of the most complete Linux distributions available.
The Debian Project Leader (DPL) is a position elected by the developers, my peers. During my term as DPL, I was responsible for overseeing project goals and championing new directions for the project, as well as being the public figure head. This involves organizing and drafting proposals for adoption by the project.
I am currently handling Debian's SPARC/UltraSPARC port, although in a much lesser capacity than I used to. The port is stable enough now that the automatic build system generally handle 99% of the work.
The Linux1394 project is working on a complete set of drivers for the IEEE 1394 subsystem in the Linux kernel. Along with the IEEE 1394 subsystem are a set of hardware drivers for specific cards implementing the 1394 spec (including OHCI1394 and PCILynx). Also includes a set of protocol specific drivers such as video1394 and SBP-2.
I've done most of the work to convert the virt_to_bus/bus_to_virt interfaces to Dynamic DMA mappings for the OHCI and SBP-2 drivers. This allowed the drivers to be used on kernel architectures that did not support direct bus addressing, but instead use mappings. I was the first to get SBP-2 working on UltraSPARC.
I've also implemented much of the Node Manager for hooking into the protocol specific drivers, which has led the way to implementing hotplug support for the IEEE 1394 stack. I've taken over the OHCI1394 driver as a result of my work with it.
Since starting to contribute to the Linux1394 project, I was given administrator status. This means that I currently handle the majority of the workload: approving and merging patches from contributors, syncing patches with the primary kernel trees (currently 2.4.x and 2.5.x), selecting major contributors to have SVN access to the project, and administrating the project's resources (issue tracking, etc.).
libugci is a small library that utilizes the Linux USB HID layer to access the special Happ UGCI game device. This device allows you to connect real arcade controls to a standard PC. Using this library it is possible to get real-time events from the controller.
Currently I have had patches merged into the xMAME project to support using this library to interface with the Happ UGCI controller. There are also patches for Snes9x.
SILO is the SPARC/UltraSPARC Boot Loader for Linux/Solaris. It's similar in spirit to LILO, which is the Intel Linux Boot Loader. SILO was written originally by several people, including Jakub Jelinik, and David Miller. With their permission, I took over maintaining this program. My main role involves taking bug reports, applying patches, and implementing features. I used a SourceForge site to make sure the program retained a non-distribution specific status.
Prothon is a new object-oriented prototype-based programming language based on Self and Python. Mark Hahn is the original author (Mark was also my employer with DEQO), and asked me to join the project. I originally started with just getting his win32 code ported to Unix based systems (took two days) and then have continually helped to shape the language and write a good portion of the code.