Brian T. Colony - Principal Engineer
Background
I graduated from
Montana State University with a BS
degree in
Computer Science. In September of 1984, I moved to Oregon to
work for Tektronix Inc,
developing oscilloscope firmware for the 11000 series of laboratory
instruments. Much of my early experience centered around low level
embedded real time coding in C. This work was
with x86 processors, in both single and multi-processor
implementations. Later on, when I joined TriplePoint
I began work on low level device
drivers and then moved on to a wide range of projects.
More recently I've been focused on the
total software development
process. This has allowed me an opportunity to work more
closely with clients at the beginning of the design
process to architect solutions. It has also allowed
me to bring a lot of value to clients during the
implementation part of their projects.
As a senior engineer I have excellent communication
skills and lots of experience getting products to market.
My work history has taught me the importance of
integrating quickly and smoothly into a development team
to help solve problems.
Languages |
C, C++, C#,
Java,
Python,
perl,
PHP, tcl/tk,
assembler (x86, PPC 603e, Z80180, 6805). I've actually used Fortran IV and
Fortran 77, PL-M, and Pascal, but not for a long time. |
Processors |
x86 (real & protected), PPC 603e, Z80180, Freescale MC9S08AC16 |
Operating Systems |
Windows: WinXP, Win2000, Win NT, Win9x, WFW 3.1; DOS;
VxWorks (Tornado & Tornado II.); Linux (SuSE and Fedora) |
Programming API's |
Win32; WDM/NT; NDIS 5, 4, 3, 2; NT INF Scripting;
Win95 NDI; PCMCIA Card/Socket Services; Novell ODI HSM V3.3;
Drivers on: DOS, WFW, Win95, Win98, NT 3.5, 4.0, Win2000, WinXP, Novell Netware 4.11, OS/2 Warp;
VxWorks |
Protocols |
TCP/IP; HDLC; 802.3; 802.2; 802.11; 802.11b |
Scripting Languages |
Python,
perl,
PHP,
tcl/tk
|
Content Management Systems (CMS) |
Drupal
|
Markup Description Languages |
xml, xsl, html |
Compilers |
Microsoft VisualStudio 2005/8, MS-DEV 6.0; CodeWarrior IDE (Freescale); Borland C++; Watcom C++; GNU C++ |
Editors |
Visual Slick Edit,
Codewright, VI, Emacs |
Project History
|
Jul 2008 - Dec 2008 |
Contract SW engineer for test and measurement company
Ported an existing 6805 based project to a new freescale
MC9S08AC16 processor. The pinouts and peripheral support
had changed quite a bit. A hardware abstraction layer
was implemented to handle the bit swizzling required.
Implemented a C# .NET 3.5 based windows solution to expose the
underlying hardware registers of a product board. The
application interfaced to a Freescale processor through a
SPI interface accessed via a totalphase aardvark
debug interface module.
The solution allowed full control of the hardware
at a register level through a windows gui or command line interface.
(The CLI interface allowed full scripting support from
within a command shell.) The solution shared a common
interface library that was then linked to either the
gui or command line interface module.
The gui was specified and implemented using XAML.
|
Oct 2005 - Jun 2008 |
Contract SW engineer for
MathStar, Inc
Provided ongoing engineering services to a fast moving startup.
-
Designed, coded, implemented a SCM system and build process used for
all Product SW builds based on Python and Subversion (SVN).
- Configured the original Red Hat based LAMPS stack to host the client's Subversion repositories
- Transitioned all existing CVS repository data to the Subversion server
- Replaced a 4 to 6 week manual build process with an automated ~50 minute process
- Implemented a Cruise Control based continous build system
- Project status tracked via build system created project pages for each build
- Interfaced build system with client's Atlassian JIRA bug tracking system.
- Provided scripting support to manage branch/merge operations across multiple code lines.
-
Wrote all current Product SW, Application SW, and internal
tools installer programs using the Ghost Install
utility from
Ethalone Systems.
All installers derived from common ui control and graphic
elements. This allowed simplified definition and maintenance of installer
look and feel across all client installers.
-
Implemented a STAF/STAX based
automated test system to smoke test all Version 2.0 Product SW.
-
Took over the JTAG based debugger development
effort for the product SW group. To support the Silicon Validation effort
and provide a debug tool for external customer use.
-
Successfully transitioned all SVN server management and maintenance
duties to client IT staff.
- Helped IT move to Active Directory based SVN authentication
- Provided Drupal based web front end for SVN access management
-
Helped specify and deploy the client build system solution
based on multiple Dell Poweredge 1950 servers.
-
Helped IT specify and implement SVN hosting plan using twin Dell 2950
servers connected to a multi-terabyte raid array.
-
Specified, developed, and deployed several internal CMS websites using
the open source Drupal project based on PHP
- SVN server support to create/add users and update access permissions through a web interface.
- Build server to expose product SW builds.
- Provided help with transition of support to client IT staff.
|
Jun 2005 - Jul 2005 |
SW engineering support for
Veriwave, Inc
Architected and helped implement a
STAF/STAX based
test system for use within Veriwave.
-
The test system
can dynamically schedule different types of
test jobs and can manages test resources from
common resource pools across the QA team
test network.
-
Python
was used to implement several utilities
of use to the team. (To schedule jobs and
manage test SW deployment/configuration.)
-
Provided documentation and presented
material to team members and outside
contractors to introduce them to the
test system.
|
Apr 2004 - May 2005 |
SW engineering support for
Veriwave, Inc
Responsibilities spanned everything from
regression test writing to design and coding
of 802.11 test suites for a new wireless
test product, their WaveTest Traffic Generator / Performance Analyzer.
The job required
using a custom test language specific to the
product. A list of accomplishments:
-
Learned perl to
implement a series of unit tests used to
verify proper operation of the custom
test language.
-
Learned tcl to help design/implement
test suites particular to various areas
of the 802.11 wireless protocol.
-
Adapted a NDIS 5.3 sample protocol driver
for the client in a couple of days to allow
a test program to bind directly to
attached wireless MAC adapters under WinXP
so that a custom test program could interact
with the adapter. This saved the client
both time and money in the implementation of
the test suite that required the protocol driver.
Driver and test applicaiton supported on linux,
Windows XP, and WinCE.
-
Provided consulting on an adhoc basis regarding
SW development processes and management based
on my industry experience.
-
Editorial Comment:
First exposure to tcl/tk in a production
environment. (The less said the better.
Why anyone would use tcl/tk when
Python
is available is beyond me.)
|
Sep 2004 - May 2005 |
SW engineering support for
Audio Precision Inc
This client requested that I perform a port of
their Tornado II based GPIB platform to support
the new 2700 series
of analog test equipment.
The development effort required the implementation of
a new command set and work to expose the
new hardware capability through the GPIB interface.
Development was done in C and C++ using the
Wind River Tornado II
environment.
This work was performed concurrently with the work for
Veriwave and was
done on a part time basis.
|
Jul 2004 |
Continued using Linux, and began some informal
consulting with a couple of local companies.
When the hard drive on my laptop gave up, I bought
a replacement drive and then made the jump to
SuSE 9.0 on my, now rather old, Dell Inspiron 8100.
The wireless setup was much easier. So was setting
up everything else... With the exception of VMWare.
Which required rebuilding all of the VMWare modules
after some research on the web...
In a change of pace from always working as a
contractor, a person paid for what he can do, I
branched out a bit into some informal consulting.
With 20 years of experience in SW project development,
spanning everything from 1 and 2 person projects to
large team projects with upwards of 100 engineers, it's
fun to be asked to step in and provide input to
companies as they are starting their design process.
Fire fighting is interesting too. Although most
people don't care for the stress of trying to
bring sanity to a SW project in trouble, it can
be rewarding to help a client get a project back
on track to a successful project launch.
|
Sep 2003 - Mar 2004 |
SW engineering support for
Kentrox, LLC
I was brought in to take over the original
STAF/STAX
based test effort of the Q series
router. This was done to allow the
client to refocus engineering resources on
the core firmware development task. Time to
market was a critical issue. The client
wanted someone
who could come up to speed quickly and integrate
well with their engineering team.
The STAF/STAX framework and the test infrastructure
are essentially built on top of python technology.
Tests are specified as xml files passed into an
execution engine. This test development method is
very flexible and is platform agnostic. This
required developing a familiarity with STAF/STAX,
Java, Python/Jython, and the client's product.
The client development environment consisted of
a number of diverse computing platforms including:
Win2000, Red Hat 9.0, and SuSE 8.0.
More specifically the job entailed the following tasks:
-
Standardized test output in html format for
easy comprehension.
-
The original test setup was extended to allow
multiple levels of test coverage.
(Daily build, check in, regression...)
-
The engineering team's daily build test was
stabilized and made repeatable.
-
A python based auto test generation tool was built
to allow automatic generation of a set of
test suites and individual tests based on an
xml description file.
-
Coded several python based utilities to help with
image updates, test management, and OpenSSL certificate
management.
-
Finished integrating
iperf
into the STAF/STAX
test environment to do basic performance testing.
-
Conducted training on STAF/STAX for the core
development team.
-
Conducted training on Python for the core
development team. With an emphasis for how
Python interoperates with the STAF/STAX test
environment.
-
Transitioned the test infrastructure into the
CM Synergy version control system and took on
the role of build manager for the test software.
-
Trained the full time employee hired to
fill my position at the end of the contract.
|
Jan 2003 - Sep 2003 |
A mixed bag:
- I've been helping a 802.11 wireless vendor bring
their Windows drivers to the point where they
can obtain WHQL certification.
- Designed and implemented a configuration/test
utility to be used on Legacy Windows operating
systems for 802.11 network adapters. The utility
provides Zero Configuration capability as
well as link test and site survey features for
a client 802.11 wireless adapter.
- Researched the MS Crypto API to ensure that the
utility kept it's secrets somewhat secure...
- Designed and implemented a very stripped down
XML parser to allow storage and retrieval of data.
- Designed and implemented a command line utility
to allow configuration of multiple wireless
networks on a host machine when the operating
system is installed. This simplifies setup, as
it's no longer necessary to point and click
through a series of menus to configure a PC
to use a 802.11 wireless adapter.
|
Oct 2002 - Dec 2002 |
I pursued a variety of personal projects:
- Upgraded my laptop (a Dell 8100) from
SuSE 7.3 to 8.1. (A very easy undertaking!)
- Built up a SuSE 8.2 based file and print server
for my home network. (Goodbye to my HP Jet Direct
print server, the Netgear hub, two AC power adapters
and a bunch of cables.) The server also backs up my
wife's Apple computers and my windows and linux
machines.
- Researched the Microsoft EAP specification for
WinXP.
- Became familiar with PERL...
- Started to look at the Python programming language.
|
Jan 2002 - Sep 2002 |
SW engineering support for
Audio Precision Inc
This client requested that I perform a port of
their Tornado II based GPIB platform to a new product.
This product was
released as the
ATS-2.
The starting point was the
existing
System Two Cascade Plus product.
(Since superceded by the 2700 series.
The development
effort was concentrated on implementing new GPIB commands
commands to allow access to the new hardware features.
Development was done in C and C++ using the
Wind River Tornado II
environment.
|
Oct 2001 - Jan 2002 |
SW engineering support for
Audio Precision Inc
This job was to finish implementing a
GPIB interface for an existing product, the
System Two Cascade Plus.
(Since superceded by the 2700 series.
The development platform was a PC running Win98 with the Wind River
Tornado II IDE installed. The target processor was a 486 which
was connected to the outside world with a GPIB interface. The
embedded firmware implemented a GPIB parser and the low level
control SW to drive the audio test hardware. The same firmware
image is used to control multiple instrument versions. Run time
configuration determines which options are present and what
capabilities are supported.
This work required:
- Finishing the work in progress to bring the product
to market.
- Defining a backup and archive process to allow the build
process to be repeatable.
- Documenting the development and build environment for
the client to allow maintenance in the future.
Development was done in C and C++ using the
Wind River Tornado II
environment.
|
Oct 2001 |
Started my Linux port project...
The goal is to migrate all of my Windows PC's to Linux...
I started with a brand new Dell Inspiron 8100 laptop...
It only took me a week to get SuSE 7.3 installed and
operational!
|
Feb 2001 - Sep 2001 |
Providing software engineering services Oresis, Inc.
on their ISIS 700
platform. (The company has since
gone out of existence.)
Development was in C using the Wind River Tornado II
environment targeted towards multiple PPC processors.
I concentrated on three areas:
-
General bug fixing.
-
Implemented a circular ring buffer to log and
timestamp events for debugging purposes.
-
Designed and Implemented a global shutdown service to allow
graceful shutdown of multiple distributed processors controlling
data flow in
a controlled manner from a central
SCM (System Control Module) processor.
-
Designed and Implemented a version compatibility checking
system for SW management. This entailed developing a
configuration file format and a parser to read the
configuration files.
|
Sep 2000 - Feb 2001 |
Baby management.
When my wife went on bed rest with our twins I stopped working
to care for her... This was followed by 3 months of intensive
baby management! (140 diapers a week for the first 3 months.)
I'm very good with diapers now...
|
Jan 2000 - Sep 2000 |
Providing software engineering services Oresis, Inc.
on their
ISIS 700
platform. (The company has since
gone out of existence.)
Development was in C using the Wind River Tornado II
environment targeted towards multiple PPC processors.
I implemented a "plug-n-play" system to control resource
allocation/deallocation as communication
cards were inserted/removed from a modular
telecom chassis.
|
Jan 2000 - Aug 2000 |
Ported and extended a 802.11 ODI driver.
Target environment was an embedded system
with a wireless adapter and IR barcode scanner.
Operating system is DR DOS 3.41 and
the driver was a 16 bit DOS ODI driver. The hardware
environment required a point enabled driver. (A driver
capable of configuring the attached PCMCIA controller
on it's own.) Hooks were added to support the
power management capability of the embedded device.
An interface was added to the driver to allow
utilities to register a callback handler with the
driver so the driver could signal whether it was
associated or not.
|
Nov 1999 |
Custom packet filtering application.
Helped a client implement a custom packet
filtering application
using the TpiWedge product.
|
Jul - Sep 1999 |
Novell Netware 5.0 point enabled PCMCIA token ring adapter
Ported an existing PCMCIA driver for the Windows platform
to work under Novell Netware 5.0. Also provided client
support for older WFW and DOS based laptops. Adapter was
based on the TI TMS380 chipset.
|
Feb 1999 |
Windows 2000 custom network installers
Helped a wireless vendor come up with an install
package for their wireless adapter solution. Required
learning about Windows 2000 INF files, install wizards,
and control panel operation.
|
Nov 1998 - Jun 1999 |
Windows NT 4.0 custom HDLC serial driver and install scripts for an ISA bus adapter.
As a proof of concept project, I worked with an engineer
from the New Zealand TAB to port an existing mainframe
specific implementation of a driver and protocol stack
into a Windows NT environment. The project required the
ability for the driver to communicate with programs in
the application space via: ioctls, shared memory, and events.
Driver verification was done with a set of custom built
test applications delivered as part of the project.
Project documents were derived automatically from the
driver source files.
|
Nov 1998 |
Windows 95 (OSR2) custom wireless protocol helper VxD with
Install Script
Provided a custom VxD to a supplier of wireless adapters to
be used to pass wireless access protocol packets into bound
wireless drivers from a custom application developed by the
client. The VxD was built up using the VtoolsD toolkit.
|
Oct 1998 |
Windows NT 4.0 NDIS Shim installer NT INF
Install Script
Worked with other TriplePoint engineers on an NT NDIS shim
driver & installer for NT 4.0. This includes a full
spectrum of utilities, install components, and the NDIS
intermediate driver which is used to intercept TCP/IP traffic
over Ethernet and RAS/WAN interfaces. The components comprise
a starting point for vendors wishing to develop VPN or firewall
products. The package includes a custom interface package to
communicate with the driver via DevIoctl calls. The driver
is multi processor safe and makes use of the NDIS API to
enhance portability.
A requirement of this project was learning, in great detail,
how Microsoft's Windows NT 4.0 INF scripting language works.
|
Sep 1998 |
Win95 NDIS SHIM NetDetect DLL (NDI Interface)
Win95 NDIS shim driver, netdetect.dll & custom installer.
Built on the same code base as the NT Shim, this added
an interface VxD to allow passage of DevIoctl messages
into the shim driver. It included all of the functionality
of the NT package for Win95 solutions.
|
Jun 1998 |
DOS PCMCIA Card Enabler
Developed a MS-DOS PCMCIA card enabler for a wireless
PCMCIA network adapter manufactured and sold by a large
wireless network hardware manufacturer. An interface
driver was provided to make use of the Card Services support
provided under DOS to enable and manage the
adapter. The enabler manages resources for the adapter
hardware driver and the custom hardware compatibility
layer which sits above it.
|
Feb 1998 |
Win95/Win98 NDIS Protocol VxD
Coded a Win95/Win98 NDIS protocol VxD for
Symbol Technologies, Inc
This project provided a custom protocol to be used to pass
WNMP information to and from installed wireless ethernet
network adapters.
|
Sep 1996 |
Tektronix Inc - ATM Traffic Analyzer -
API for custom ATM cell analyzer FPGA
Custom PPC 603e HW drivers for an OC12 ATM traffic analyzer.
Worked under contract for Tektronix Inc to provide a custom API to
allow control and operation of the ATM cell processing FPGA
hardware in a dual channel ATM traffic analyzer. The code
was required to manage a circular ring buffer of ATM cell
data acquired from two OC12 connections at line rate. The
API allowed users to program the hardware to filter ATM
cells from which traffic metrics were extracted for real
time analysis. This required extensive debug work with
the FPGA hardware designers and an in depth understanding
of PPC 603e assembly, including memory management and cache
issues to achieve the performance goals.
Many additional diagnostic and test functions were included
to allow the vendor's hardware engineers to trouble shoot
various parts of the acquisition path. A document was
produced and delivered which outlined the driver design and
the extra test/diagnostic functions available.
The target operating system was Wind Rivers VxWorks and all
code was compiled on Sun Sparc stations running the GNU C++
compiler.
|
Jan 1996 |
3COM Inc - Netware 4.11 ATM LAN Emulation Driver -
Mapped a single ATM adapter into up to 16 virtual ethernet/token ring
adapters
Netware ODI ATM LAN emulation driver for Netware 4.11,
developed for 3COM Inc
Had to extend and modify the ODI 3.12 specification to provide
an ODI HSM interface to an ATM LAN emulation driver. The
driver presented up to 16 virtual ethernet or token ring
adapters to the
operating system. Each of the sixteen virtual adapters
mapped to the same
physical 1.55Mbit ATM adapter. The ODI module interfaced
to the LAN Emulation and Trilium based signaling stack
underneath it to affect hardware control. Although this
scheme worked well on uniprocessor systems running Novell's
Netware OS, supporting the SMP version of Novell's NetWare
4.11 release required extensive, hardware specific work.
Namely the addition of driver level spin locks and the
enabling and disabling of processor interrupts within the
driver to protect against data corruption of operating
system tables.
This led to the anomalous situation that
uni processor systems could run at line rate, but SMP
boxes limped along at about 30Mbit/second!
|
Aug 1995 |
OS2 Warp NDIS 2.0 -
NDIS 2.0 PCMCIA Wireless Ethernet Driver
Port of DOS based NDIS 2.0 driver into the OS2 Warp environment.
This included the low level hardware library code and the
development of PCMCIA specific code for OS2.
|
May 1995 |
NDIS 2.0 Token Ring Network Driver -
Modify existing NDIS 2.0 PCMCIA Token Ring Driver
Helped a customer using their own control libraries with a
TI token ring controller integrate the latest changes from
Madge Networks. Both PCMCIA and PCI bus adapters were
involved.
|
Mar 1995 |
Ethernet NDIS 3.0 Full MAC Port -
NDIS 3.0 Full MAC Port from NT to Win95
Another NT to Win95 port. This included writing the Win95
INF file for the driver. Close work with the vendor
uncovered some interesting hardware problems with the
underlying adapter design.
|
Dec 1994 |
Port Existing WFW driver to Win95 and certify -
NDIS 3.0 Full MAC
This project involved porting an existing WFW driver,
(for the AT&T starlan network cards), to work
under the then new Win95 operating system. Because this
family had multiple hardware variants, the install INF
was more complex than usual.
|
Jul 1994 |
Cable TV Network Drivers NDIS 3.0 and 2.0
drivers for Windows NT 3.51, WFW, and DOS
This adapter consisted of an ISA bus card with an Intel
82588 ethernet controller connected to an RF transceiver
capable of being attached to a cable television connector.
The driver was interesting due to the fact that the 82588,
being limited in the number of receive buffers available,
demanded almost real time response when being flooded with
receive packets.
|
Jun 1994 |
Added debug support to an existing NDIS Ethernet adapter
driver coded as an NDIS 3.0 Full MAC driver...
|
Mar 1994 |
Joined TriplePoint, Inc
|
Jan - Mar 1994 |
Sabbatical
Ski Bum
Visited a large representative sample of western destination
ski resorts, paying particular attention to those with ample
"steep & deep" attractions.
|
Aug 1992 - Dec 1993 |
Firmware Designer - Tektronix TekMeter Handheld
Oscilloscope Family
Embedded Z80180 application
Responsible for the design and implementation of the TekMeter
human interface. The TekMeter family represented a break
through hand held DMM/Oscilloscope product for Tektronix.
The UI was originally simulated on a PC reference platform
which allowed for rapid prototype of design concepts. Final
implementation was via a custom interpreted UI scripting
language which was processor and implementation independent.
Worked on all phases of the product from the initial custom
focus group sessions to the final tweaking of the manufacturing
process to ensure on time quality delivery of the final product.
|
1987 - 1992 |
Firmware Designer - Tektronix CSA403 Oscilloscope Team
Added dynamic Pass/Fail testing to the 11k measurement system.
Added a back weighted average and standard deviation calculation
for all supported measurements. Also added the ability to
capture a Min and Max for each measurement. Port of color
grading software & measurement package from the 11k sampler
family (1180x series) into 1140X code base.
Self managed all phases of the measurement system enhancements
to the project, from interviewing customers to define their
needs to helping the documentation group write the manuals
which described the new features.
|
1987 |
Firmware Designer - Tektronix 11403 Oscilloscope Team
Participated in a software team which continued the development
of the original 1140X oscilloscope family. Several enhancements
were added, including a color display. A lot of manufacturing
cost was removed as circuit boards were consolidated. A low
cost version, the 11201, was produced. Base firmware model
moved from x86 real mode to protected mode. Assisted other
teams porting the 1140X measurement system into the DSA600
and 1180X series of instruments. Was responsible for adding
several new measurements to the base package.
|
Sep 1984 - Dec 1986 |
Firmware Designer - Tektronix 1140X Oscilloscope Team
Worked as part of a large software team to provide the
software for a new digital oscilloscope family for Tektronix.
This included the original 11401 and 11402 products along
with the follow on 1120X (monolithic) and 11403 (color)
products. Designed and implemented the original 11K
Measurement System. Including full measurement annotation
and dynamic update. The measurement code was ported to and
used in the other members of the 11k digital family, the
1180X and DSA series of oscilloscopes.
Generated a number of GPIB based calibration and test
functions used to bring the instruments up in manufacturing.
|
Back to Company
|
|
|