|
09/2004 – Present Video
Gaming Technology, Charlottesville, Virginia
Manager - Protocol Software
n
Responsible for managing a team of 18 developers
n
Designed and implemented various industry protocols
n
Implemented subsystems in C++ for both DOS and Windows based clients and for server systems to communicate with third party systems.
My initial responsibilities were to develop subsystems to be executed on the VGT game server to communicate with various back office accounting systems. As the company grew, my responsibilities increased from single contributor to manager of the protocol team where I am responsible for ensuring our games and servers can communicate with a multitude of back office systems and provide all of the services our customers expect from a casino gaming system. My daily duties consist of working with the other platform managers to ensure we deliver a cohesive system that functions as expected. In addition to this, I work closely with my team leads and team members to ensure we are communicating as effectively as we can and keep us all going in the same direction.
11/2002 – 07/2004 Sandial
Systems, Portsmouth, NH
Senior Firmware Engineer
n
Designed software subsystems in C for a Linux based
fibre channel switch
n
Analyzed various third party database solutions to
replace the existing database
n
Engineered the image download and install subsystem
My
initial responsibilities were to analyze the current image download and
install subsystem and make recommendations on its functionality. The actual code had grown beyond its
original scope that required it to be re-engineered into a usable subsystem
that was both fault tolerant and easily maintained. In addition to this I was tasked with analyzing various third
party databases to incorporate into our product. The main goal of this task was to provide a new database
backend while not changing the existing API that the end user applications
were currently using. This task was
accomplished with minimal impact to the existing code base. My last task was developing various
subsystems for the second-generation switch hardware. This included writing a system agent to
ensure that all applications were functioning as expected and to ensure high
availability of the system.
10/2000 – 11/2002 Cetacean
Networks, Portsmouth, NH
Senior Firmware Engineer
n
Designed software subsystems in C/C++ for an Ethernet
router
n
Developed for VxWorks and the C5 Network Processor
n
Designed tools in Visual C++ to simulate portions of
the system
Initially
my task was to create a communication interface using TCP/IP to communicate
with a management device. This
interface was designed for VxWorks and consisted of multiple tasks to allow
the system to be easily modularized.
This also allowed certain tasks to be given a higher priority over
others as needed. Following this, I
was asked to join the network processor group to assist with developing the
network processor specific code. My
responsibilities included designing a method of storing synchronization data
that was fault tolerant. I was also
responsible for implementing the receive portion of the Gigabit Ethernet
product. This required the
synchronization of 4 RISC core processors using a token scheme supported by
the network processor.
09/1997 – 10/2000 Cabletron
Systems, Rochester, NH
Firmware Engineer III
n
Designed software subsystems in C/C++ for Ethernet
routers, ATM switches, and FDDI devices.
n
Developed for VxWorks and the I960 RISC processor
n
Supported both internal and external customers for
various products
My
primary responsibilities were to maintain and enhance the existing FDDI
product lines while developing portions of the ATM switch as time
permitted. Maintenance consisted of
reproducing customer issues in the lab and providing a reasonable
solution. In some cases, an issue
could not be reproduced which would require traveling to the customer site to
analyze the system, gather data, and provide a solution. Enhancements consisted of modifying the
existing products to meet individual customer needs. When not assisting customers I was tasked
with developing portions of the ATM switch.
This consisted of implementing various MIB entities and a distributed
table to track all CCID’s assigned through out the switch for various
connections. At the completion of the
ATM switch project, I was moved onto an Ethernet routing product where I
implemented various MIBS and started porting the distributed framework code
from I960 based system to the VxWorks PPC system.
04/1996 – 09/1997 Northern
Telecom, Rochester, NY
Software Engineer
n
Created a GUI database editor
n
Developed for RS6000 AIX platform
I
was responsible for designing a database editor with a GUI front end to allow
the easy creation of alarm data for the operator services system. The GUI was designed using Tcl/Tk while
the backend database code was designed using C/C++. This project was designed to remove the dependencies on an
Oracle database while providing the user the same application specific tools
that were currently available.
04/1995 – 04/1996 Ciber
Inc., Rochester, NY
Software Engineer
n
Developed a touch screen GUI for a steam sterilizer
n
Designed software using C/C++ and Assembly for an x86
processor
I
was responsible for writing software in C++ and 80x86 assembly targeted for a
386 embedded computer. This computer
was designed to control the operation of a steam sterilizer that would be
used in a hospital setting. C++ was
used to implement a message based non-preemptive multitasking system similar
to older versions of Microsoft Windows but running on an embedded DOS
environment. I used assembly for the
time critical functions of the system including interrupt processing. Assembly was also used to create an API
for the high level software to access the underlying I/O and A/D boards. Most of this code was initially written in
C++ for functionality and then converted to assembly for speed reasons. Most of the assembly was in-lined to allow
us to maintain the object aspects of C++ while getting the speed improvements
from the assembly instructions. The
final system was comprised of a graphical user interface that was accessed
via a touch screen. This system
supported up to four languages that could be used at anytime and also had a
full on-line help system that was context sensitive.
06/1992 – 04/1995 New
York Air Brake, Watertown, NY
Computer Engineer
n
Designed a serial communications board
n
Designed software using C and Assembly for a z80
processor
I
was responsible for designing new circuits and controlling software to
interface with the existing microprocessor based braking system. I created all preliminary schematics that
were then used for prototyping the designs.
Once the design was completed, the resulting data was passed to the
drafters for entry into the main system.
I was responsible for creating a z80 based communications board that
implemented a RS-485 interface and incorporated a real time clock circuit. I
was responsible for writing the necessary drivers for interfacing with the
real time clock circuit. All code was
written in C and z80 assembly. The
primary function of the software was to communicate between the brake system
and the main locomotive system. The
communication software was designed to follow the ISO/OSI model and uses the
HDLC protocol. All documentation for
the communication software followed ISO standards. In addition to my main responsibilities, I created various simulation
tools to allow testing of our subsystems prior to integration testing.
|