Last Updated: September 30, '11

Curriculum Vitae

Personal Details

Name: Brian Somers
Address: 1771 Ralph St.
North Vancouver
BC V7K 1V8
Canada
Date of Birth: June 26, 1967
Home Tel: +1 604 924 1929
E-mail: brian@Awfulhak.org
Availability Date: None at present
Document Location: http://www.Awfulhak.org/brian/cv.html

Education

1979 - 1984: St. Benildus College, Kilmacud Road, Kilmacud, Dublin 16, Ireland.
1984 - 1985: Kevin Street Technical College, Kevin Street, Dublin 4, Ireland.

Qualifications

Leaving Certificate: Maths, Applied Maths, English & Art.

Technical Summary

Primary Focus: Communications software development under Unix using C, technical & system design, low-level (device driver) programming.
Operating Systems & environments: FreeBSD, OpenBSD, NetBSD, Solaris, Linux, OSX
Languages: C, C++, Objective C, Bourne & Korn shell script, perl, python, awk, sed, HTML/SGML.

Work History

OpenDNS

OpenDNS is an innovative security company that protects it's customers at the DNS level.

Development at OpenDNS is done across a VPN from multiple locations including Vancouver and San Francisco. Collaboration tools such as VNC, skype and facetime are used to virutally "pair" with other developers from day to day.

OpenDNS, September '11 - present

Project: Protoss development
Position: Software Engineer
Experience Gained: This project focuses on bringing virtual in-house appliances to our customer, providing per-user security customisations. It is currently very much in the design phase.

Sophos

Sophos is a company that specialises in anti-virus, anti-spam and email policy software for businesses. Their flagship server product is Puremessage - an application that runs on many Unix-like operating systems to provide reliable, proactive protection at the email gateway.

Development at Sophos was done using OSX, FreeBSD and linux workstations in a segregated network and using perforce for source management.

The role of Principle Developer 1 was the highest technical role at Sophos and was held only by myself.

Sophos, January '11 - September '11

Project: Sophos Anti-Virus for Mac development
Position: Principle Developer 1
Experience Gained: Responsibility for the SAV for Mac product moved from the UK to Vancouver at the end of 2010 requiring ongoing monthly updates of the Anti-Virus engine and identity files for both PowerPC and Intel hardware and for all versions of OSX from 10.4. OSX deployment was set up and managed using DeployStudio. Feature enhancements included dynamic kernel -> userland scanning handoff, consolidated scan management and scheduled scanning support.

Additional experience included building a local Darwin kernel to investigate technoligies in OSX 10.7 (Lion) such as file revision control which uses Apple's kauth kernel subsystem and initially conflicted with SAV for OSX.

Sophos, January '09 - December '10

Project: Email Appliance development
Position: Principle Developer 1
Experience Gained: Ongoing e-mail appliance development included enhancing the product to support end-user email encryption, new appliance hardware revisions, cluster job control and a virtual appliance option that can be clustered with other virtual appliances or with hardware versions, supporting features such as encrypted filesystems, automated filesystem growth, dynamic reconfiguration based on detected hardware and software branching to support controlled release of software to a "low-touch" customer base.

Appliance "abstractions" were developed to allow the immediate rollout of build machines and development pairing stations using the same appliance base but containing additional packages and configuration for their respective roles.

Sophos, March '08 - December '08

Project: Appliance infrastructure development
Position: Principle Engineer
Experience Gained: Driving the supply of necessary components and infrastructure to other teams within Sophos to facilitate product developments. This role involved actively working with other teams to determine their needs and steering development in a consistent direction where appropriate. This role also involved the design of build systems to produce appliance builds, pairing station builds and builds for the build systems themselves, allowing the clean ongoing integration of new FreeBSD releases and bugfixes, and providing easy upgrade and new installation mechanisms.

Sophos, April '05 - February '08

Project: Puremessage Appliance development
Position: OS Tech Lead
Experience Gained: A complete appliance development lifecycle, including choosing between appliance vendors and Operating Systems, determining which OS components were required, handling copyright issues, developing solutions to upgrade issues, working towards a full implementation of the product requirements, then undergoing the develop/release/test cycle to bring the product to maturity for final release. The product (the ES4000) went live at the end of March 2006.

Key appliance features include fully automated updates, hardware and software monitoring, support tunneling and clustering.

Sun Microsystems

Sun Microsystems are one of the most inovative companies in both the hardware and software industry, having an international presence and over 40,000 employees. Their VSP group were introducing x86 blade servers and required Linux OS support.

Sun Microsystems, July '04 - April '05

Project: Working for the Linux group within Sun
Position: Software Engineer
Environment: Mostly working from home (80%-90%) as part of a nomadic team.
Experience Gained: Some initial work was done with ATCA blade systems and further modifications and fixes were done to the Linux tg3 driver. Research was also done into laptop keyboard event handling under Linux, although the likes of ACME and acerhk were discovered to pretty much cover the requirements.

Sun Microsystems, March '04 - June '04

Project: ARP Colouring implementation under Linux
Position: Software Engineer
Environment: A private subnet as used with the Scimitar project below.
Experience Gained: Modifying the ARP protocol to allow the determination of fabric colours involved a few subtle changes to the ARP implementation under Linux. It required a full understanding of the linux neighbourhood cache abstraction and the state machine associated with resolving IP addresses.

Sun Microsystems, May '02 - March '04

Project: Linux implementation on the Sun B100x and B200x Blade Servers
Position: Software Lead
Environment: For this project, I set up a private LAN with its own DNS, DHCP, TFTP and NFS services, as uncontrolled network traffic was likely and should not affect the rest of Suns internal network.
Experience Gained: Leading a team of Linux engineers through an 18 month software project. Maintaining a build and release system that handles eight different versions of Linux and builds drivers against various stock RedHat and SuSE kernels (handling the module versioning correctly). Co-ordinating BIOS modifications with BIOS engineers situated in Taiwan and Korea. Developing drivers for firmware updates, ECC support, network interface aggregation and failover and gigabit NIC support. Troubleshooting problems from fiberchannel NIC link autonegotiation to IP protocol bugs and even Northbridge schematic errors. Helping with the documentation of the PXE install system and describing how the network configuration was implemented and used.

FreeBSD Services Ltd

FreeBSD Services Limited was a company established and owned by a group of UK based FreeBSD committers (including myself). It provided FreeBSD consultancy and support services and focused on promoting FreeBSD as the server operating system of choice.

FSL, March '01 - May '02

Project: Support, development and distribution of FreeBSD
Position: Director, technical programmer & analyst.
Environment: A loosely coupled network of FreeBSD servers using assorted WAN technologies and VPN arrangements.
Experience Gained: Low-level FreeBSD kernel development (implementing a serial multiport comms driver and writing a reference implementation for FreeBSD's device cloning capabilities), Internet gateway installation and maintenance (supporting the usual gateway services, and including a turnkey solution), WWW and DNS hosting, wireless setup and administration, VPN encryption development, FreeBSD DVD creation, production and sales (see The FreeBSD Services sales page), including the design and implementation of an online credit card fulfillment system using Perl and Postgresql under FreeBSD.

FSL, August '01 - November '01

Project: Organising and publicising BSDCon Europe
Position: programmer / committee member.
Environment: The conference was hosted at the Thistle Hotel in Brighon. It was digitally filmed and offered a terminal room for use by the delegates during the conference. The terminal room was connected to the Internet via a 12 way bundled ISDN connection.
Experience Gained: We used laTeX to create the conference proceedings, publishing the delegate's papers from a variety of source formats from .gif files to html text. We built the terminal room on the day before the conference started, providing DNS and CVSup services to the delegates and connecting to the Internet over a 12 way ISDN bundle (768k bandwidth). Printed badges, t-shirts and Brighton Rock were provided. The video recording of the conference tutorials is being digitised and made available to the attendees.

Sun Microsystems

Sun Microsystems are one of the most inovative companies in both the hardware and software industry, having an international presence and over 40,000 employees. Their Netra division, based in Bracknell were introducing support for systems alarms and service monitoring into the Solaris operating system.

Sun, August '00 - March '01 (Contract)

Project: Systems Alarms and Service Monitoring
Position: Technical programmer & analyst.
Environment: Sun Sparcstations with some Sun/i386 machines. Code is written in C.
Experience Gained: Device driver, library and application implementation under Solaris. Thread programming using the Solaris threads library. The use of a distributed SCCS-based source code system that's capable of allowing updates through any of the distributed repositories.

Deutsche Bank

Deutsche Bank is the biggest international investment bank in the world and has many offices in the City of London. My experience is with their back-end trading and interface systems.

Deutsche, November '98 - August '00 (Contract)

Project: Writing discrete systems for interfacing Deutsche's legacy Cobol systems with bought-in software and external clients.
Position: Programmer, analyst, release engineer.
Environment: FreeBSD, Solaris, AIX and PC workstations connected to a network of Solaris, AIX and NT hosts. Code is written in C with a lot of shell scripting.
Experience Gained: The implementation of a fax/telex interface communicating with Cray System's IMX gateway, the implementation of the Oasys Global Direct interface communicating with Thomsons S.W.I.F.T. message exchange, the implementation of another S.W.I.F.T. interface communicating with Logica's FASTWIRE software, the maintenance and development of control and monitoring tools for the back-end dbTrader system and the creation of new software control tools using CVS, SCCS and RCS.

Livingston Electronic Equipment Services, The Sema Group & Orcasoft Limited

Livingston is an international company that buys and sells electronic equipment, leasing it to the public in the interim. I was working on behalf of The Sema Group and via Orcasoft Limited. The Sema Group is a large software consulting and managment company, and Orcasoft is a group of consultants, dealing with the technical implementation of the project.

Livingston, January '98 - October '98 (Contract)

Project: SCCS front-ending, release engineering and general Unix system re-organisation.
Position: Programmer, analyst, administrator & technician.
Environment: PC workstations connected to a small network of Solaris & NT machines. Code is written in C.
Experience Gained: The design and implementaiton of a complete development life-cycle including secure software control, automated validation, build & release proceedures with remote installation and rollback facilities. In-depth Sun hardware & software administration. Technical interviewing for additional Unix & network operations staff.

Citibank N.A.

Citibank N.A. is a subsidiary of Citicorp, a large international bank with a presence in 98 countries and territories worldwide.

Citibank N.A., July '97 - December '97 (Contract)

Project: Making Citibanks' Citiaccess system comply with their year 2000 guidelines, and enhancing several standalone Visual C++ applications.
Position: Programmer.
Environment: PC workstations connected to a mix of Novell and NT servers on a Token Ring network. Code is written in C and Visual C++.
Experience Gained: The creation and integration of a date library, handling all date functionality for the Citiaccess system. The Citiaccess codebase consists of over 950 source files, making up over 360,000 lines of code. The creation of a makefile hierarchy to control the building of the system, allowing the ultimate creation of the two software installation diskettes.

Utell International

Utell International represents over 7500 hotels to approximately 200,000 travel agents through offices in over thirty countries. The entire operation is handled by a distributed hotel reservation system developed in-house over a number of years. Utell was in the process of adapting a new reservations system to replace their existing systems. The contract was extended twice, each extension being six months.

Utell International, May '96 - July '97 (Contract)

Project: The installation of an internet gateway, and the ongoing maintenance and enhancement of Utell's computer systems.
Position: Analyst programmer.
Environment: Sequent PTX, IBM AIX & FreeBSD unix hosts, Novell Servers, Crosscom & Cisco routing hardware and PC workstations. Code is written in C or C++.
Experience Gained:
The setup and maintenance of a gateway machine supplying the following services; DHCP, DNS, HTTP, SMTP, POP, NTP, NMBD/SMBD, NNTP and various proxy services.
Reviewing Utell's functional additional documents that specify modifications necessary to migrate from the old computer systems.
The design and implementation of several critical system enhancements necessary prior to the implementation of Utell's new computer systems.

Utell International, January '96 - May '96 (Contract)

Project: The design and implementation of an MS-DOS device driver that converts serial traffic to network traffic and vice versa.
Position: Analyst programmer.
Environment: A PC running MS-DOS 6. Code was written in C with some assembler.
Experience Gained: UART, Interrupt, Packet Driver and TSR programming abilities.

British Gas & CMG Computer Management Group (UK) Ltd.

CMG is a Computer Consultancy firm dealing mostly with Payroll systems. In this instance however, CMG were contracted by British Gas to design, develop and implement a large PC application to run on a laptop PC. The original contract termination date was December '93. CMG extended the contract on several occasions. The project was delivered to British Gas at the end of '94 after which British Gas re-contracted CMG to implement a set of major design changes. These changes were finished and went live at the end of '95.

During my time with CMG, they were re-certified as BS5750 compliant twice after examination of the procedures in place for the projects with which I was involved.

British Gas, September '93 - December '95 (Contract)

Project: British Gas Area Operations, Module C.
Position: Consultant / Analyst programmer.
Environment:
Several environments were necessary. They mainly consisted of PC workstations running MS-Windows, Novell servers and unix hosts running AIX.
PC workstations connected to a network of Novel and AIX servers. Code and documentation was stored on a Novell server under SMS. Code was written in C++ using Zinc Framework and initially using CodeBase. The target hardware was eventually re-specified as an i486 with 8Mb of memory (rather than the initial 8086 with no extended memory).
Experience Gained:
The design and implementation of a relational file access mechanism, including a fully functional strong-tree class, requiring less resources than the CodeBase system originally used.
The implementation of a somewhat unusual Human Computer Interface (of British Gas design) using the Zinc source code as a foundation.
The creation of a generic EDIFACT parser, used to break down the messages sent from the Unix host.
Debugging and correcting the mobile communications software that was originally sub-contracted to a third party.
Assisting on the technical side of interviewing for additional contract staff.
I created a virtual communication mechanism that allowed the PC application to communicate with either a radio, a test harness, a radio emulator or directly to the Unix host that allocated the service jobs (via an NFS solution installed by myself).
The re-write of the low-level memory allocation routines used by the Symantec compiler (malloc et al).

Utell International - September '93 - September '98 (Part-time Contracts)

Project: Various part time roles
Position: Consultant/Analyst/Programmer (part-time).
Environment: A Sequent Symmetry Unix host. Code was written in C & C++.
Experience Gained:
Implementing a table driven data translation program, interfacing Utell to an associate hotel chain. The program went live in June '94.
Porting Utell's systems to Dynix/PTX. A six week project plan was presented and completed. The project was dependent on the successful port of a C++ compiler and debugger. The GNU C++ compiler and debugger were found to be the only available tools that were up to the job. I successfully ported these and Utell's database and windowing infrastructure prior to distributing the application work to Utell's full time employees. The system went live on schedule in early February '94. I did a subsequent port to SCO OpenServer in September '98 - this took only a few man days.
Utell's TP systems were modified to allow the communications subsystem to be taken offline without disturbing the front-end transaction processors. This involved multi-threading the system while maintaining data integrity and correct message sequencing. The code went live in November '93.

Utell International, January '88 - September '93 (Full Time)

Project: The design, implementation and extension of a generic and extendable hotel reservation systems infrastructure.
Position: Senior Programmer
Environment: PC workstations connected to a LAN of Sequent hosts. Dumb terminals linked to either a Unix host or a terminal server. Code was written in C++.
Experience Gained: The design and implementation of a distributed WAN TP database system, an X25 multiplexing mechanism, several list classes and a balanced tree class with full deletion capabilities. Porting many freeware and shareware programs, reviewing third party systems, designing and implementing system test procedures and source code control mechanisms.

Interests

Science Fiction, Scouting, Chess, Martial Arts, Internet, OS development.

I am a member of the FreeBSD development team since December '96, with full commit privileges. I originally dealt mostly with PPP, but currently focus on issues affecting my work.

I have designed and implemented full PPP MP (Multi-link Protocol) and IPv6 capabilities in the user-ppp program under both FreeBSD and OpenBSD. I have also implemented synchronous PPP, PPP over Ethernet, PPP over UDP and PPP over a data stream created by executing an arbitrary program. I have designed and implemented portions of the digi and dgm drivers under FreeBSD, have resolved issues with metadata updates in the soft-updates code, and made minor changes to the GEOM encryption layer.

Referees

References from Utell International and BLiX Limited are available. Further references can be supplied on request.