CURRICULUM VITAE

Glen Kyle McCready

gkm+cv@petting-zoo.net

Redwood City, CA 94062
(650) 599-9791

Skills:

Goals:

Experience:

October 2004-present
Senior Software Engineer - ESX Server Storage
VMware Inc.
3145 Porter Drive
Palo Alto, CA 94304

In this role I was responsible for porting SAS (Serial-Attached-SCSI) drivers from Linux to the VMkernel. Future directions in this role appear to be heading towards support for new Fibre Channel Arrays, and also improving multipathing support within the VMkernel.

September 2002-October 2004
Senior Clustered Storage Engineer
Addamark Technologies (AKA SenSage Inc)
74 New Montgomery St, Suite 450
San Francisco, CA 94105

As the Senior Clustered Storage Engineer I was working on their filesystem-based database for the Log Management System (LMS), implementing such features as backup and restore to a 100% uptime server.

Successfully ported the LMS, a large C++ application, from Linux-x86 to Solaris-Sparc, taking in to account several portability factors including alignment, byteswap, and TCP stack differences. While working with the product several performance bottlenecks were idenitified and significant improvements were implemented.

June 2000-September 2002
Senior Software Engineer
Inktomi Corporation
4100 East Third Avenue
Foster City, CA 94040

In the Content Network Solutions Group my key role was as an expert in UNIX kernels and software portability. As a member of their IO Core team we were responsible for the lower, portable, and yet high performance layer.

To gain even more performance and stability, some development was Linux-centric: Development of multiple Linux kernel modules, as well as finding, tracking, fixing, and often working around various bugs within the Linux kernels and its drivers were major contributions to the products success.

On top of the Linux work I was tasked with porting Traffic Server, a high performance web proxy-cache, to VxWorks on MIPS.

June 1999-June 2000
Member of Technical Staff
Cygnus Solutions Canada Ltd.
2323 Yonge Street
Toronto, Ontario

As a Release Engineer, I was exposed to MS Visual Studio (VC++6.0), and authored InstallShield installers on Windows NT. It also permitted me to apply previous experience with build and release processes, and shell scripting, as the product was partially cross built from a Linux box, and partially natively built with MS VC++ on WinNT. The product in question centered around embedded systems, which is why I was brought on in an advisory capacity at a higher level.

My second and much more interesting role was as a GDB Engineer where I was responsible for adding support for new target hardware to GDB. This entailed looking at chip specifications and making appropriate modifications and additions within the GDB source code to enable proper display and setting of registers, memory and breakpoints.

This built upon my previous experience with the GNU tools, porting and working with them, on QNX4 and Neutrino (QNX6) that I had acquired while working at QNX.

1988-June 1999
Research and Development
QNX Software Systems Ltd.
175 Terence Matthews Crescent
Kanata, Ontario, Canada, K2M 1W8
(613) 591-0931

Summer student until July 1991; from July 1991 until June 1999, full time.

At QNX I was responsible for many projects including programming tasks, technical support, quality assurance, technical writing, along with training people on both existing systems and systems of my design and implementation.

When I started as a summer student QNX was a small company of less than thirty people. The development team consisted of approximately twelve developers. This small team had been maintaining and extending QNX2 and were in the process of specifying and authoring QNX4. This was an exciting time for me because despite being youthful my opinions were taken quite seriously. I spent a great deal of time with the File System and Network Subsystem designers helping test and prototype things. At this time QNX decided that rather than purchase a POSIX-certified utility suite (ie. userland utilities) that they would implement their own. I took responsibility for several of the key utilities, implemented and documented them.

As well, my expertise was in modem and X.25 communications, so I was tasked with helping to improve QUICS -- QNX's customer support bulletin board system. As time progressed we moved on to a 56Kbps leased line, and later a full T1 that I was administrating while carrying on my other duties (such as programming).

Continuing at QNX I gained experience with ethernet drivers, disk drivers, and board support packages (BSPs) at the design and implementation level. On top of this I spent some time doing performance evaluation of the QNX4 File System, at which point I became part of a small team tasked with improving and maintaining QNX4 while others went on to dedicate their time to Neutrino (QNX6).

Not wanting to lose touch with Neutrino I took on a side project of porting 4.3BSD based networking code from an existing QNX4 codebase to Neutrino. The port involved re-implementing BSD kernel threads (co-routines) and modifying the existing interface to match what Neutrino offered. PPP, SL/IP and Ethernet were all made to work.

Next I spent some time collaborating with the Neutrino team and was tasked with doing the design and implementation of the next generation network buffering code.

This project involved writing the middle layer between the network card drivers/DLLs, user DLLs, and external fd-based clients (ie. /dev/enet1). Key elements to this project being a success were a consistent interface, high speed, and careful thought to allow the drivers to be as small and simple as possible, which meant moving as much logic as possible into the buffering code.

Of course, these are just a few highlights of my ten years at QNX...

References:

Available upon request.