Hoang Do
San Jose, CA *****
abnc0b@r.postjobfree.com
Status US
Citizen
Employment / Experience
May 2008 - Nov 2009 Sanmina - SCI Defense and
Aerospace Systems 3 Contracts Huntsville, AL
Software Development
This is a sub-contractor for the army at the Redstone Arsenal in the
Huntsville area. The project is a replacement communication system based
on SCI's TOCNET for the Patriot Missile shelters.
. The system is an embedded linux widely distributed node-based network
with a fiber backbone.
. Replace legacy code and port TOCNET to a new platform.
. Replace existing functionality with new code written on top of
TOCNET. This involves studying of existing code and reimplement in
TOCNET.
. Create a linux GUI based on pyKDE to manage system builds.
. Due to the sensitive nature of the military project, not too much can
be revealed.
Skills used: C, C++, Python, wxPython, Embedded Linux on X86 PC104, STL,
DOORS, VisualDSP for SHARK, Kdevelop, CMMI process, Sockets, GNU toolset,
Fedora 8.
Feb 2007 - Feb 2008 Altierre
Corp Permanent
Employee San Jose, CA
Senior Firmware Engineer
This is a startup implementing RFID technology for the retail space. I am
responsible for all Firmware and software of the Access Point in the
Wireless system. The access point is an Arcom Vulcan (XScale based
embedded Linux system board) which controls proprietary digital hardware
and Radio RF via the PC104 bus.
. Provide all system bring-up and test code of ASICs and onboard queuing
subsystem and radios.
. Implement from scratch TCP sockets based protocol for communicating
with the server.
. Write L2 and L3 protocols for communications. Debug physical layers
with the digital and RF hardware engineers.
. Translate a JAVA based simulator into C++ running on the real product.
. Provide a UDP based protocol and communication for providing packet
broadcasting mechanism.
. Provide guidance to the management and engineering team with regards
to correct procedures to follow when bringing up large systems.
. Write bringup code and operational code for driving the hardware
scheduling and queuing.
. Write Linux device driver to service on-board interrupts.
. Provide the GUI for the configuration and test programs in Python and
wxPython.
Skills used: C, C++, Python, wxPython, Embedded Linux on XScale core (ARM
arch) board, Standard Template Library (STL), Sockets, Multithreading
(pthreads), GNU toolset, Cross development on Red Hat, Linux device driver,
Device Software, CVS, VMWare.
Aug 2006 - Dec 2006 IDS-
Sports contract
Jacksonville, FL
Software Development
Implement a new-generation scoreboard system based on Python embedded in
C++ for the PGA Tour for the up-coming Players Tournament. This is a
client-server wireless system that retrieves updated programs and data from
the server in order to do real-time scoring, data gathering, and displaying
as the event is taking place. All code was new and written from
scratch.
Skills used: C++, Borland Studio 2006, Standard Template Library (STL),
BOOST, Python, OpenGL, UML, XML, XPath, Win32, sockets, multithreading,
StarTeam
Feb 2006 - April 2006 Beckman-
Coulter contract
Miami, FL
Software Development
Finish up an Instruments Simulator for the RMS project. The Simulator is a
multithreaded MFC application that uses sockets to communicate and
implement a proprietary Beckman-Coulter protocol. Its purpose is to
emulate 10 different blood measuring instruments that Beckman-Coulter
manufactures. I took over a half-way broken codebase, refactored it, and
added extensive feature sets to bring it to delivery.
Skills used: C++, Visual Studio, MFC, Win32, sockets, multithreading
Nov 2004 - Dec 2005 Cisco
Systems 2
contracts Bradenton, FL
Embedded Firmware and Software Development
The product line is the Catalyst 6500 family of ethernet switches. The
group is responsible for all the firmware that run on all the line cards in
the 6500 chassis. My work involved writing additional features for the
ethernet linecards, fixing bugs in the product, cross-platform porting, and
enterprise level code maintenance with CVS and ClearCase. In addition to
the coding workload, I was the point-man for code-integration and build for
the entire firmware team. Debugging consisted of manipulating Cisco
specialized ASICs, performing packet capture/dissection, and solve
software/firmware problems that are captured by the testing/regression team
and the customers. This includes direct Cat6500 support for the entire
Cisco organization and customer support engineers world-wide.
Skills used: C, ClearCase, Device Software, CVS, Data Networking, GNU
toolset for cross-platform development, TCP/IP, ethereal, packet sniffer
card, Ixxia Ethernet Traffic generators, ASIC programming, Unix, IOS,
CatOS.
June 2004 - Oct 2004 Pegasus Imaging
Corporation Tampa, FL
Software Component Developer .NET Framework and ActiveX
Develop a .NET component which works with Adobe Technologies.
I am the author of pdfXpress.
(http://www.pegasusimaging.com/pdfxpress.htm) It is a .NET component that
allows a developer to read and write PDF files. It is written in C# / C++
and allows the user to extract pages from the PDF into image files as well
as allow you to create and embed images into newly created or existing PDF
files.
Skills used: .NET Framework, PInvoke Interop layer and issues between
Managed/Unmanaged code, Visual Studio 2003, Win32, GDI, NUnit, C, C++, C#.
Mar 2004 - May 2004 Kobe Japanese Steakhouse
chain, Orlando, FL
Web Reservation System
Create a custom web-based solution for the Kobe Steakhouse chain for their
reservation business process. It is web-based because each restaurant
requires concurrent access. The site is hosted on Yahoo. LAMP
(Linux/Apache/MySql/PHP) was chosen because it is the lowest cost for Kobe.
Skills used: PHP, Linux, MySQL, Apache (LAMP).
Jan 2003 - Jan 2004 went on sabbatical
Feb 1997 - Jan 2003 Gawayne Software
Incorporated as Gawayne Software in the Silicon Valley (California)
providing consulting for the following major clients:
Intensys Corporation, San Jose
3 months
Intensys specializes in Digital Color Processing. The work is vxWorks
embedded development.
Skills used: C language, vxWorks BSP, Motorola 821 target, realtime
embedded drivers
. Bring up a motorola MBX821 board with vxWorks. Create a BSP (board
support package) which supports LCD, EIDE disk, & UGL. Integrate the
vxWorks UGL library with the 821 driver and write UGL code to drive
the LCD screen.
. Integrate a PCI driver and write specialized code to drive a PC104
type specialized card.
Interval Research, Palo
Alto 2 Years,
5 contracts
This is a research facility owned by Paul Allen, one of the founders of
Microsoft. The work is multimedia development with MPEG encoder/decoder
cards.
Skills used: C++, MFC, Win32, COM, DirectShow, ATL, Progression MPEG SDK,
Visual C++, SoftICE debugger, GUI development, set-top box development.
. Create an application to act as a digital VCR, much like the TiVo
product. Features include: live pause, speed up playback, jump to
different story segments, and very pleasing visual displays.
. Work with the OptiBase's Progression Encoder SDK on various
demonstratable projects.
. Provide a COM component based on ATL 3.0 for the above piece of
software.
. Provide software fixes and an encapsulation for code that controls a
custom TV Tuner card.
. GUI development with MFC, ATL, and using ActiveX. Provide multimedia
applications demonstrating proprietary enhancements to DirectShow.
. Utilize Microsoft's DirectShow architectures and ActiveMovie in the
implementation of the products.
N*Able Technologies,
Cupertino 1
month
Provide InstallShield installations for their USB SmartCard Keyboard
drivers and applications.
Skills used: Installshield.
Kestrel Solutions Inc., Mountain View
6 months, 2 contracts
This startup aims to provide Network Equipment for the WDM (Wave Division
Multiplexing) market using Optical circuitry.
Skills used: System Architecting, C language, vxWorks, Tornado, MPC860, USB
drivers.
. Architect, design, & document the software infrastructure for an
embedded & distributed processing system provided a hardware
functional specification for the circuit packs. The central
controller is MPC860 based and the peripheral cards are 80x51
derivatives.
. Evaluate USB as a possible communications solution for the System
Control Bus between micro-controllers.
. Design, evaluate, purchase, & set up a hybrid NT/Solaris development
environment.
. The contract for the first 2 months was to do the above. It has been
renewed, and I am now working part time to:
1. Work on a vxWorks BSP for their custom MPC860 board,
2. Setup Tornado, license servers, & prototype targets for the
development environment.
3. Design & code an HDLC based communications protocol between embedded
cards
4. Transfer system & design knowledge to newly hired permanent employees.
Com21 Inc., Milpitas
6 months
This is a startup company making cable modems. The modem acts as a bridge
between the local ethernet LAN and the upstream ATM cloud. The modem is
entirely redesigned to conform to the MCNS (Multimedia Cable Network
System) standard. The assignment is to write code to control the company's
core ASIC which implements translation between ethernet and ATM cells and
an Ethernet Filter Engine. The task involves:
. Writing Design Verification Test code and Driver code under vxWorks
for the ASIC.
. Write code for the QuickTurn emulation system to test out the ASIC
netlist.
. The environment is an AMD29005 CPU and vxWorks in an embedded
development.
Skills used: C language, VxWorks tools, GNU Tool chain, MAKE, VCS, AMD
29000 target.
VISX Inc., Santa
Clara 1 Year
This is a biotech company which creates lasers for eye-correction surgery.
The main product and the basis of their code lies in this machine: STAR. I
was involved with the design of their 2nd generation laser system.
Initially I was hired to do Windows NT drivers for their devices but
because they ran into problems with other pieces of the project and I had
the experience, my work diverged and included many other areas.
Skills used: C++, Windows NT DDK drivers, Borland OWL, Win32 SDK, 80186,
Paradigm cross-platform build tools.
. Work with another UI engineer to port the user interface (based on
Borland OWL) from Windows 3.1 to Windows NT.
. Wrote a C++ class to control the Win32 Multimedia Timer for allowing
the computer to fire the laser directly.
. Design & code an NT kernel mode driver to handle a large amount of
devices interfaced to NT through an ISA card.
. Port existing code on an 80186 based embedded system which controls
and fires the laser to current Borland tools.
. The above embedded laser system was redesigned to work with the new
laser. I had to make modifications and add features in the firmware
to allow it to work. In this phase, I had to work closely with
hardware engineers & laser engineers to get the system to a working
state for a Board of Directors demo.
. All of the above code was done in C++, including driver, user
interface, and embedded firmware work.
Short-term Projects:
Skills used: Web Programming, Python, wxPython, PHP, mySQL, MFC, COM, VFW,
sockets.
. eCommerce system based on PHP and mySQL to provide a storefront for
merchants.
. Client/Server based peer-to-peer networking service providing file
sharing and group collaboration services. This involves a server
component responding to a proprietary protocol as well as a client
doing peer-to-peer communication as well as client/server
communication. It is implemented with Visual C++, MFC, windows
sockets, multithreading, and windows thread synchronization.
. Using Python and wxPython to produce Windows and command-line based
utilities.
. Create and maintain web applications on Jotsite (http://jotsite.com).
. Snapshots - a Windows application making use of a webcam to generate
JPG files quickly. This utilizes MFC and a COM component based on VFW
(Video for Windows).
Oct 95 - Jan 97 Remote Assistant Group, Hewlett Packard, NetServer Division
in Santa Clara: Permanent Employee
The product is called the Remote Assistant (http://www.intekusa.com/d2967-
63214.htm). It is an EISA card (80186 based firmware) which allows for out-
of-band remote management of all HP NetServer products. The project
involved enhancing the feature offerings of the card to include Windows NT
Graphics Console Redirection as well as alpha numeric paging. I was the
prime responsible for the NT Graphics Redirection. This is the main driving
feature for the new product release against Compaq.
Skills used: C++, MFC, Win32, Windows Services, COM, ActiveX, ASP, and
Windows NT DDK programming; Booch methods, Rational Rose design tool, uCOS,
80186 assembly.
The tasks involved the following:
. Cleaned up the firmware base (which was non-ANSI C and riddled with
compile warnings) as well as added some minor features and bug fixes.
. Created a new protocol talking through the BMIC (Intel's standard Bus
Master Interface Chip) to implement the firmware/card end of the
Graphics Console Redirection feature.
. Write a Windows NT Device Driver to control the card. For simplicity
and speed, the driver was written in C and its interface to the user
mode was through an IOCTL call.
. Wrote a Windows NT service in C++ which utilizes the driver to
coordinate and control the card as well as the PCAnywhere32
application. The service had to be robust enough to recover from user
failures, OS crashes, and intermittent or erratic program behaviors.
For reuse purposes, I created a generic 'service' base class of which
this service inheritted from.
. Did extensive product testing of the product as well as the new
PCAnywhere32 releases against all HP's new and currently supported
Netserver platforms for Windows NT 3.51 & 4.0; for continued product
support, did bug fixing for post product release.
. Worked closely with the Symantec PCAnywhere development team to:
1. establish an HP OEM contract for the product,
2. specify software hooks for the application to export to allow
for programatic control,
3. specify future enhancements of their product for the benefit of
HP.
April 95 - Oct 95 Interfaces Group, Cisco Systems (formerly Stratacom):
Permanent Employee
The system is an ATM/Frame Relay switch of which there are two machine
types (broadband: BPX and narrowband: IGX). The group deals with any
interface with the ATM switch, namely telnet, tftp, proprietary protocol,
SNMP, and TTY. Except for TTY, all other interfaces go through either the
LAN, which uses a combination of UDP/IP, or IP relay mechanism between
frame-relay nodes.
Skills used: C language, pSOS pROBE, patching tools. GNU Tool chain,
MAKE, SCCS, RCS, VCS, clearcase.
. Worked on the detailled design & coding of two major features to be
released Jan 96. The first feature deals with the extension of data
frames which are exchanged between the switch and the Sun workstation.
The second deals with providing a way to allow the user interface
routines to be reentrant.
. Solved various bugs on the system software (released on Sept 95) on
both machine types (IGX & BPX).
Oct 93 - April 95 Software Development - Architecture Group, Nortel,
Mountain View. : Permanent Employee
The project is to move the main Meridian 1 PBX line to a technically
superior platform to provide more realtime capacity. It was termed Option
81C and involved using Motorola 68040 and 68060 chips, FLASH Roms, and the
built-in MMU.
Skills used: Object Oriented C (specifically device drivers) on real-time
embedded systems, Interrupt drivers written for VxWorks, writing controls
for CPU elements (MMU, cache, memories), patching at opcode level. VxWorks
tools, AS68k, Motorola BUG147, pSOS pROBE, patching tools. GNU Tool
chain, MAKE, SCCS, RCS, VCS
. Provide all the necessary code for the MMU's virtual memory support as
well as to change any portions of the current system required for
adopting the use of the MMU. This involved writing an extension to the
vxWorks OS.
. Add a memory layer which utilizes the MMU write-protection mechanism
rather than the previously proprietary write-protection method.
. Modify the debugger and patcher to allow debugging of code running
from FLASH.
. Performance tune the cache architecture to provide optimal system
performance.
. Integrate the legacy code into the new platform and resolve any
problems that arise from the new architecture.
. Resolve any issues relating to timing caused by the increased speed.
Port the Option 81 architecture to Option 51C and 61C machine types.
Mar 93 - Oct 93 Foreign Assignment: Nortel, Marne La Vallee, France. :
Permanent Employee
. Create a development environment for the international development
site; this included connecting the Meridian 1 switch to the LAN
network, interface necessary build tools, and perform global load
builds.
. Teach French/Anglo/Swedish developers to code & debug with the new
system switch. This is done by providing lecture courses for about 90
designers and one-on-one tutoring for about 10.
. Configure the switch for the verification team and provide training
for the development community at the Ireland site.
Feb 90 - Mar 93 Sofware Development, Meridian 1 Architecture : Nortel,
Mountain View. : Permanent Employee
The system is marketed under the name Meridian 1 Option 81
(http://www.nortelnetworks.com/products/01/meridian/mer1/) and it is a
fault-tolerant redundant switch. The project involved migrating the current
product into a newer hardware platform driven by a 68030 and various
proprietary ASICs. My involvement consists of the design and implementation
of four software modules towards this goal.
Skills used: Object Oriented C (specifically device drivers) on real-time
embedded systems, Interrupt drivers written for VxWorks, writing controls
for CPU elements (MMU, cache, memories), patching at opcode level. VxWorks
tools, AS68k, Motorola BUG147, pSOS pROBE, patching tools. GNU Tool
chain, MAKE, SCCS, RCS, VCS
. Create two classes (object oriented design implemented in C) for
controlling an interrupt driver/ multiplexer board (low level driver).
The first class allows for creation of objects which control a
multiprocessor bus arbitration ASIC. The second class creates objects
to manage & service interrupt coming from an off-shelf source.
Software for both classes include all operational, self-test, as well
as maintenance routines.
. Provide code for system auto-recovery from hardware faults. The faults
are simulated by test engineers injecting faults into the system.
. Debug at the system level to solve problems due to the global
integration of the entire system software. Note: the global base is
international and contains over 2 Million lines of code.
The other two modules under my responsibility involve managing network
hardware lying on a secondary bus-level. They involve:
. modification of existing code and addition of new to compensate for
new hardware,
. interfacing C with a proprietary language through modification of the
language's procedure vector table.
Education
3 years on the MS program in Computer Engineering, Santa Clara University
(1990-93).
B.S. in Electrical Engineering with minor in Humanities, San Jose State
University, 1989.