Last Updated: August 8, '08

Curriculum Vitae

Personal Details

Name: Brian Somers
Address: 2556 Belloc St.
North Vancouver
BC V7H 1J1
Canada
Date of Birth: June 26, 1967
Home Tel: +1 604 924 1929
Mobile Tel: +1 604 315 1343
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 consultancy, low-level (device driver) programming.
Operating Systems & environments: FreeBSD, OpenBSD, NetBSD, Solaris, Linux, AIX, X-Windows
Languages: C, C++, Bourne & Korn shell script, perl, awk, sed, HTML/SGML, SQL.

Work History

Sophos

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

Sophos, March '08 - present

Project: Appliance infrastructure development
Position: Principle Engineer
Environment: A private subnet of FreeBSD & Linux machines and appliances providing various network services, using XP methodologies and using Perforce for source managment.
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
Environment: A private subnet of FreeBSD & Linux machines and appliances providing various network services, using XP methodologies and using Perforce for source managment.
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.

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 deal mostly with PPP and networking technologies. I run CVSup servers for FreeBSD, OpenBSD and NetBSD from a co-located machine in Brighton.

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'm currently working on adding netgraph support to ppp under FreeBSD. I have also designed and implemented large portions of the digi and dgm drivers under FreeBSD, and have been involved in many other areas.

I maintain a web site for the Bucks County Chess Association at http://www.buckschess.uk.eu.org/. The web site is generated from a series of perl scripts and modules with a small C pgn file parser, and includes several years worth of chess results and games.

Referees

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