Post Job Free
Sign in

Software System

Location:
San Jose, CA, 95133
Posted:
March 09, 2010

Contact this candidate

Resume:

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.



Contact this candidate