upper left corner upper right corner
 
logo image
 
 

123 Bluff Lane • Palmyra, virginia 22963

Phone (434) 207-8899 • E-mail dwm@afmsoftware.com

Daniel W. Milligan

Objective

 

I desire a challenging position managing a group of developers where I can utilize my architectural skills to engineer a solid deliverable.  I am willing to travel as needed.

Education

 

1987 - 1992       Rochester Institute of Technology    Rochester, New York

Bachelor Of Science – Computer Engineering Technology

Skills

 

C/C++, C#, Flex (Action Script), Assembly (Z80, x86), Perl, PHP, Java, HTML, JavaScript, Tcl/TK, BASH

Z80, 80x86, I960, C5 Network Processor, PowerPC, 680XX

Unix (AIX, Solaris), Windows 3.x/9x/NT/Xp, Linux (RedHat/Fedora, Bluecat, MontaVista), VxWorks, DOS

Visual C++, C#, GNU tool suite, SmartBits, Logic Analyzers, Oscilloscopes, GDB, Microsoft Office, Visio, PowerPoint, ClearCase, CVS, PVCS, Perforce, Bugzilla, FogBugz, Code Wizard, Insure, SNMP Research, Eclipse, and JBuilder.

Professional experience

 

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.

Activities

 

n     Cubmaster of Pack 54, Fluvanna County, Virginia

n     Chairman of the S2S committee of the Gaming Standards Association (GSA) for the 2008 & 2009 calendar years.

n     Active participant in the GSA committees including S2S, G2S, Transport, and SAS.

References

 

Available upon request.

 

 
 
 
lower left corner lower right corner
upper left corner upper right corner

(C) 2005 AFM Software
lower left corner lower right corner