My Resume

Name Ng Hun Yang
Languages English, Mandarin
Nationality Malaysian; Singapore PR

Contact

Email nhy_web@smallapple.net
Phone +65 9823-5417
Address Blk 666, Choa Chu Kang Crescent, #05-321, Singapore 680666

Professional Experience

Date Company Main Role
Aug 2012 - now Hewlett Packard (Business Printing Division, Printing and Personal Systems Group) Senior R&D Engineer. Web development; technical lead

Key accomplishments:

  • Auto select webpages based on product configuration; don't need to duplicate configuration
  • Implementing unit testing (part of firmware-wide effort)
  • In experimental project to add small-office user management
Nov 2011 - Jul 2012 Hewlett Packard (Business Printing Division, Imaging and Printing Group) Senior R&D Engineer. Web development; technical lead

Key accomplishments:

  • Track defects more efficiently and effectively
  • Added server-side preprocessing to reduce HTTP requests
  • Changed backup/restore settings code to be modular, data driven and secure
  • In experimental project to enable printing kiosk in public locations
  • Lead code refactoring exercises

Tools: GIT

Oct 2009 - Oct 2011 BPD, IPG, HP Senior R&D Engineer. Web development; technical lead

Architect role: implementing new look-and-feel for a different range of printers, improving the code architecture and evaluating up-and-coming technologies.

Mentor role: responsible for maintaining the coding standards and improving the team's skills.

Key accomplishments:

  • Improved home page access by 100% through a combination of techniques, such as enabling HTTP caching, combining files and using image sprites.
  • Improved session management with security in mind; works to an extent even without cookies.
  • Improve the development environment by using the deployment parameters automatically. (Don't need to configure twice.)
  • Do automatic element matching for related XML files to reduce maintenance efforts.
  • Integrated HTML fragments within JS files to reduce HTTP requests.
  • Created CSS preprocessor to simplify style handling. Layout, browser-specific and right-to-left language styles are synthesized from existing styles.
  • Enabled linting to enforce good coding practices.
Sep 2008 - Sep 2009 BPD, IPG, HP Senior R&D Engineer. Web development.

New Printer Website

In the framework team to rearchitect the printer website for the 2010 printer lineup.

Features: Ajax-based, JavaScript file dependencies, templated HTML, GUI widgets, namespaced XML, customizable homepage and localization.

Technologies: HTML, CSS, JavaScript, jQuery, jQuery UI, XML, PHP, Perl, C
Tools: Apache, SVN, Linux

May 2006 - Aug 2008 BPD, IPG, HP Senior R&D Engineer. Embedded system programming.

Energy Star 1.1 Compliance

Late requirement to modify our printers to meet the ES 1.1 standard.

Led the firmware team and worked closely with the EE. One of our objectives was to minimize changes in a largely non-sleep aware firmware due to the tight schedule.

Technologies: C, ThreadX
Tools: SVN, Linux

Universal Printer Driver (UPD)

Modified our business printers to allow the use of the UPD — just one driver needed to print to any printer!

Improvements to Pen Alignment

Created new pen alignment algorithms that are faster and more accurate. Filed several disclosures, but were deemed too specific.

Added end-user scripting support by adding a virtual machine (with ~100 instructions).

Technologies: C++, ThreadX
Tools: BitKeeper, Linux

Jun 2002 - Apr 2006 BPD, IPG, HP R&D Engineer. Embedded system programming.

1" Printhead Pen Alignment

Designed and implemented new patterns for the 1" printheads.

Technologies: C++, MIPS assembly language (minimal), ThreadX
Tools: ClearCase, HP-UX

4800 dpi

Improved the in-printer pen alignment to meet the 4800 dpi claim. (Patent Application #20060158476)

Technologies: C, ColdFire assembly language, vxWorks
Tools: ClearCase, HP-UX

Jul 2001 - May 2002 Knowledge Engineering Senior Software Engineer. Internet Banking website using J2EE.

The website allows UOB customers to enquire and do transactions with their accounts over the Internet. The project migrates the original CGI-based system to a J2EE platform.

UOB Internet-banking IPO transaction

Migrated the IPO transaction from C++/COBOL to J2EE. This is a multi-page workflow that allows the customer to apply for IPOs through the website.

Technologies: WebLogic J2EE, HTML, JavaScript
Tools: Ant, CVS

Sep 1998 - Jul 2001 Knowledge Engineering Software Engineer. Embedded system programming.

Object Oriented Gate System

A real-time embedded gate control system used in the MRT gates. The MRT gate processes the passengers' ticket and controls traffic flow using a barrier.

Technologies: C++, x86 assembly language, vxWorks
Tools: Visual Studio 6

Other Experience

Date
Aug 2011

YouTube and blip.tv user scripts

Wrote two user scripts YouTube Links and Blip.tv Links that show the video links so that they can be saved easily. (Local link)

Jul 2011

Sudoku Solver

Wrote a Sudoku solver that does single/hidden candidate, line/box interaction, naked/hidden subsets, fishy subsets (X-Wing, Swordfish and Jellyfish).

2011

Request Management System (On hold)

A simple system that allows requests to be entered and followed-up on.

Technologies: HTML, CSS, JavaScript, jQuery, JSON, Ajax, PHP, MySQL
Tools: Apache, Linux

2009 - 2010

Game State Machine (On hold)

A server-side game state machine that allows different board games to be implemented on the browser.

Has user management and chat.

Technologies: HTML, CSS, JavaScript, jQuery, JSON, Ajax, PHP, MySQL
Tools: Apache, Linux

2010 - now

PlayStation Emulator (On hold)

Understood how the PlayStation works using the long defunct open-source PCSX emulator, then develop a new emulator from scratch.

Objectives:

  • I want to achieve good emulation through correct principles (of how the real PlayStation works) and not through hacks.
  • I want to research binary translation (also known as dynamic recompilation). I am converting the MIPS R3000 instructions to an intermediate language, processing it and then translating it to native code (x86/ARM).
  • Having seen lots of bad C code, I want to write a properly designed C program.

Key features:

  • Many tunable parameters, such as fractional instruction cycles, memory read/write speed, DMA speed and so on.
  • Precise event/interrupt handling. Emulation inner loop runs until the next scheduled event. This is unlike the original where events are checked at every taken branch.
  • Small and efficient memory map — using two 128 kB pagetables to map 512 MB address space (at 4 kB page granularity).
  • One I/O memory map for 1-, 2-, 4- bytes access. The same map is used by both the interpreter and the recompiler.
  • Uses HLE (High-Level Emulation) instruction to break into the emulator for various purposes. This is very efficient because we don't have to monitor every instruction. (Enhancement of existing feature)
  • Dynamic recompilation at the function level. This allows much more efficient translation than at basic-block level. (Work-in-progress)
  • A built-in network-based debugger: unassemble, dump, edit, go, halt, trace, add/del breakpoints, add/del watchpoints

Technologies: C, MIPS 3000, x86 assembly language, Win32
Tools: Visual Studio 2010

Academic Education

July 1998 National University of Singapore Bachelor of Science (Computer Science) with First Class Honours

School Projects

1997 Final Year Project A system that allows students to manage their modules (taking pre-requisites and a bunch of other rules into account) and calculate their CAP (Cumulative Average Points).

The system implements a simple Pascal interpreter and uses INI format for storage.

Used: Delphi, Windows 95

1993 Final Year Project A TSR (Terminate-Stay-Resident) program that adds user-level and directory-level access control to DOS.

Used: C, x86 assembly language, DOS

1991 School Competition A slideshow program that has several transition effects, such as fade, dissolve, slide, and allows simple scripting.

Used: C, DOS

Interests

Anime, photography, programming.

Visit me at http://www.smallapple.net/ to find out more! This is my corner on the Internet where I also maintain a blog and showcase my web programming know-how.

(Technologies: HTML, CSS, JavaScript, jQuery, PHP, MySQL)