FELIX TANG


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.