FELIX TANG
tangf@eyetap.org
http://www.eyetap.org/~tangf/FelixTangResume.html

SKILLS:

Computer Skills:
- Experienced C, Assembler and Perl programmer
- Assembler programming for Intel(x86), PIC and Motorola (PowerPC, Coldfire)
- Competent in C++, Java, PHP, HTML and shell scripting
- Real-time multi-threaded embedded systems analysis/design/programming
- Object oriented analysis/design/programming 
- In-depth knowledge of computer networks and network protocols
- Client-Server programming (using TCP, UDP and IP: SNTP, NTP, FTP, TFTP, 
  HTTP, SNMPv2, Telnet, proprietary communication protocols)
- Experience in distributed systems programming using Java, RMI and Jini
- Experienced GNU/Linux and Windows, user and system administrator
- Experience programming image processing and motion analysis algorithms
- Familiarity with OpenGL, FOURCC, video processing and video capture
- Ability to program Linux device drivers and work at a low level with devices

Personal Skills:
- Team Leader 
- Excellent team player and proven ability to work in a diverse team
- Results oriented, able to complete a task ahead of schedule and move on
- Self motivated and proven ability to work autonomously 
- Able to conceptualize complex systems and propose the most effective path 
  forward

EDUCATION:

September 2006 - Present	University of Ottawa	Ottawa, Canada
BACHELOR of LAWS (LL.B.)
- Currently in the second year of the English Common Law program.
- Focusing on Law and Technology Program.

September 2005 - April 2006	University of Alberta	Edmonton, Canada
BACHELOR OF LAWS (LL.B.)
- Completed first year of Bachelor of Laws.

September 2000 - July 2002	University of Toronto	Toronto, Canada
MASTER OF APPLIED SCIENCE
- Conducted research work with Professor Steve Mann on Personal Cybernetics, 
  Mediated Reality, and Personal Imaging.
- Designed and constructed wearable computers and mediated reality devices.
- Researched novel uses of wireless technologies for mediated reality and 
  wearable computer interaction.
- Optimized computer vision algorithms through the novel application of OpenGL.
- Designed an IrDA transceiver and programmed a Linux kernel device driver. 
  The driver is a part of the official Linux kernel.
- Configured and maintained multiple VA Linux servers: proftp 
  (multiple sites/mirrors), apache (multiple virtual hosts), bind, etc.) 

September 1995 - April 2000	University of Toronto	Toronto, Canada
B.A.Sc. ENGINEERING SCIENCE (Computer Engineering Option) 
- University of Toronto, Student Administrative Council: Engineering Faculty 
  Council Representative
- Created a distributed system by implementing several distributed services
  using Java, RMI and Jini

EXPERIENCE:

January 2004 - August 2005	ATI Techologies Inc.	Toronto, Ontario
COMPUTER ENGINEER
-Worked in the Handheld software group of the Consumer Products Division on the
Imageon media co-processor. Features include: 2D/3D graphics; megapixel camera 
support; and JPEG, audio and video decoders/encoders. 
-Co-architected and developed initial Image Processing Pipeline software.
This included prototype hardware bringup and writing of hardware assisted auto
exposure and auto white balance algorithms. Understanding of entire image 
capture and encode process (e.g. Bayer interpolation, edge enhancement, low pass
filtering, quantization tables, etc.).
-Wrote C compliance and coding standards documents. Created detailed test plans
and profiling and performance documents.
-Maintained build flow for driver codebase with multiple targets, toolsets and
developers.
-Actively worked with QA to improve the testing abilities of the group. Strove
to increase communication between QA, Core and Platform teams. 
-Working in customer facing role providing time-critical support to Motorola. 
Actively managed customer issues for GSM and iDEN phones (e.g. bug hunting, 
knowledge transfer, preparing code releases, etc.). This includes extensive
knowledge of Motorola development processes, hardware and tools. This 2D 
graphics, multimedia and image capture support involves working simultaneously
with Motorola teams in the USA, Singapore, Japan, India, Russia and Israel.
-Proposed, negotiated and implemented "platform library" changes to build flow.
The idea is to be able to improve configuration and release management for all
platform teams by allowing them to move a greater majority of their changes 
into the development branch.
-Investigated and made recommendation for iDEN team's new test infrastructure.
Rapidly enhanced QA solution in development to support the iDEN hardware. Helped
promote and participated in presentations of new test infrastructure to all 
Handheld software programmers, team leads and management. Moving to common test
infrastructure greatly increased code reusability among Handheld software teams.
-Helped train new teammates.
-Worked directly with Motorola iDEN engineer to bring up new audio functionality
(i.e. portable digital audio player) on iDEN hardware. Thorough understanding of
SPI and SSI protocols and familiar with I2S.
-Worked on Motorola models: E398 (predecessor of iTunes ROKR), RAZR V3, V300,
V600, SAN2RINI, i275, i860, i870.
 
October 2003 - December 2003	DALSA Inc.		Waterloo, Ontario
COMPUTER ENGINEER
-Wrote software for a world leader in machine vision sensor and camera design.
-Programmed for the ATMEL ATMEGA 128(108) chips using the IAR toolchain.
-Reviewed and implemented fixed pattern noise (FPN) and photo response 
non-uniformity (PRNU) correction algorithms.
-In-depth knowlege of CCD and CMOS sensor design from a 10 week internal
training course with assignments and exam.
-Created a prototype of an automated test system for the camera software.
-Wrote software's hardware requirements documents for highest priority project
of the upcoming year. Ability to analyze requirements for microcontrollers, 
memory (e.g. serial, paged) and protocols (e.g. I2C, SPI).

November 2002 - July 2003	Madisent	Melbourne, Australia
COMPUTER ENGINEER - CONSULTANT
- The software that was developed is in hundreds of thousands of Hewlett Packard
  (HP) mass produced calculators, it had to be bug free, functionally complete
  and delivered on the date promised. I worked on the most complex coding tasks.
- Lead development for HP Solve, an equation solver with direct and iterative 
  root finding algorithms for a new HP product. This involved user interface and
  mathematical algorithm work in C all within the restrictions of an embedded 
  target and the IAR compiler.
- Co-architected and developed a memory manager in C for 32KB of external ram 
  for a Sunplus 8051 target CPU. The design allowed for relocatable memory 
  including features such as defragmentation and compression.
- Ported ~3000 lines of 80186 Intel assembler to C while retaining full
  numerical accuracy (i.e. complete reproduction of original algorithm).
- Co-architected and developed automated test systems for HP calculators (e.g.
  12C, 12C Platinum, 17BII, 32SII). The test systems were developed in a very 
  short time span to meet tight project deadlines.
- Test system was developed as a client-server architecture in Perl and C with a
  RS232 interface to the hardware. It is a component based design that takes 
  into account multiple targets to minimize development effort. The system 
  allows straightforward text based mathematical input to ease test case 
  development by mathematicians and testers.
- Designed and developed automatic code generation tool in Perl that produced C
  code for the testing of an extensive mathematical library that was in 
  development.
- The "test system" including "automatic code generator" development was then 
  transferred to another team which I helped train, worked with and supported.
- Worked for 7 months in Melbourne and continued to work for Madisent upon 
  returning to Toronto. Worked daily with team members in Melbourne, Australia 
  (Madisent) and Boise, U.S.A. (HP) using CVS, e-mail, instant messaging and 
  the telephone.
- Worked with manufacturing team members in Shanghai, China and Taipei, Taiwan 
  of Kinpo Electronics. Specifically, dealt with the integration of HP Solve 
  into new and upcoming products.

September 2000 - July 2002	Existech Corporation	Toronto, Canada
COMPUTER ARTIST
- Development on "SeatSale", an Internet accessible chair monitored by 4
  video cameras with a credit card read that presented a multimedia 
  experience on activation. 
- Opened February 2001 at the SFAI in San Francisco, U.S.A.
- Development on "DECONference", a fully functional decontamination center
  with computer vision controlled facilities. Specifically did work on a 
  Linux machine with six BT848 video capture cards.
- Opened August 2002 at Deconism Gallery in Toronto, Canada.
- All systems were Linux based and involved development of C and Perl code.

April 2000 - August 2000	SOMA Networks		Toronto, Canada
COMPUTER ENGINEER
- The company developed a 3G wireless local loop solution.
- Development on StrongARM 1110 based embedded Linux system (e.g. device 
  drivers, modified kernel and binaries for a ROM/ram based system).
- Managed tool chain for cross-compiling to ARM.
- Performed regression testing on target for new software builds.
- Linux System Administration 

September 1999 - April 2002	University of Toronto	Toronto, Canada
TEACHING ASSISTANT
- Teaching assistant: Introduction to Computer Programming, Introduction 
  to Computer Science, Engineering Design, Introduction to Microprocessors,
  and Digital Signal Processing

May 1998 - July 1999		Scientific-Atlanta	Toronto, Canada
COMPUTER ENGINEER
- Developed embedded software to control scrambling hardware for MPEG-2 
  digital video compression systems (PowerVu Plus).
- Designed and implemented applications to run in a real-time multi-threaded
  operating system (pSOS/VxWorks).
- Designed and implemented a proprietary communication protocol between 
  multiple cards in a system. 
- Used network communication protocols and implemented application layers on 
  top of them (e.g. SNTP client written from RFC1361).
- Developed and executed various test procedures for developer and 
  manufacturing use.
- Wrote low level software routines to test hardware functionality.
- Used emulation tools for real time embedded development (visionICE, 
  visionClick, Supertap).
- Worked closely with hardware engineer to develop and debug both H/W and S/W.

August 1996		Bloorview MacMillan Center	Toronto, Canada
VOLUNTEER
- Volunteered in Electronics Department.
- Constructed a 3 button device with an LCD panel that interfaced with 
  MIDI instruments for physically and mentally challenged children.
- Programmed a PIC16C84 chip in assembler. 
- Researched MIDI standards (both hardware and software).
  
PUBLICATIONS:

- Felix Tang, Chris Aimone, James Fung, Andrej Martin and Steve Mann, 
  "Seeing Eye to Eye: a shared mediated reality using EyeTap devices and the 
  VideoOrbits Gyroscopic Head Tracker", Proceedings of the International 
  Symposium on Mixed and Augmented Reality (ISMAR2002), September 30 - 
  October 1, 2002, Darmstadt, Germany, page(s): 267- 268 
  
- James Fung, Felix Tang and Steve Mann, "Creating mediated reality with
  hardware accelerated image registration.", Proceedings of the International
  Symposium on Wearable Computing 2002 (ISWC2002), Seattle, Washington, USA, 
  Oct 7-10, 2002, pp. 83--89. 

INTERESTS:

I extremely enjoy hiking, canoeing, scrambling, camping, rock climbing, 
bouldering and just being outdoors in all seasons and conditions.

REFERENCES:

Ian Fine P.Eng. (e-mail: ifine@ati.com, phone:+1.905.882.2600 x 3418)
Manager, Software Engineering
ATI Handheld Group