Peter Wagner April, 2009
1447 Dove Lane Work: (408) 974-6327
Sunnyvale, CA 94087 iPhone: (408) 309-3856
google map of home EMail: pwagner (at) cs.stanford.edu


Job status:


Skills summary:


Education:  Stanford University 1991: B.S.E. Computer Science with extra study in operating systems and computer graphics
Stanford University 1991: A.B. Quantitative Economics with concentration in mathematical modeling of commodities and foreign currency markets
Mac OS X: 7 years use and programming with Carbon and Cocoa on Mac OS 10.1.5 through 10.6
Tools: Metrowerks C/C++; XCode C/C++/Objective C
Technologies: Cocoa, SQLite, Core Image, Carbon, Quicktime, Time Machine, Applescript, Subversion
Linux: 1 year use, configuration, administration, and light programming using Redhat 7.1 & 7.2 (2.4.x kernel).
Tools: linuxconf, Gnome Desktop.
Technology: Apache, Secure Shell (SSH 2), gcc, pthreads, Perl Scripting, shell scripting, CGI, X11 (r6).
Windows: 4 years programming experience with Win32 and MFC on Windows NT 4.0, 1 year with Windows 2000 Professional.
Tools: Microsoft Visual C++ 6.0, SourceSafe 6.0, Class Wizard.
Technology: ISAPI, IIS, COM, Oracle 8 with OCI 8 APIs.
Internet: Data: HTML 4.0, XML, XHTML
Servers: Apache, Netscape Fastrack Server, Microsoft IIS, Microsoft Personal Web Server
Custom webserver solutions: CGI, ISAPI, SSL, WinSock under NT 4.0, Serverside JavaScript (Netscape), ASP
Macintosh
Classic: 
12 years programming experience with Macintosh Toolbox, Quickdraw, Color Quickdraw, raster-based printer drivers, SCSI drivers, speed-optimized hardware savvy assembly code.
Tools: Metrowerks CodeWarrior, PowerPlant, MPW, Symmantec C++, and much more.
CPUs: full line of 680x0 and 6888x processors, PowerPC 601 - 7400
BeOS: Written several graphics and UI savvy applications for this real-time, modern, internet savvy operating system. Familiar with BeOS object-oriented GUI framework.


June 2004 to present
Senior software engineer, iPhoto, Apple Inc. Responsible for technical design and implementation of various parts of iPhoto releases 5.0 through 8.0. Reworked iPhoto data storage to use SQLite database. Encorporated Time Machine backup technologies.

June 2002 to June 2004
Senior software engineer, iTunes, Apple Inc. Responsible for technical design and implementation of the display and GUI portions of iTunes Music Store. Originally for Mac OS X/C++/Carbon, but also helped port to Win32 platform.

November 2000 to June 2002
Senior software engineer, OS group, Palm Inc. Responsible for graphics of next-generation 68k and ARM-based Palm devices (OS 4.1, 5.0, and 5.1). Key architect and implementor of graphics software for Palm's high-resolution devices, moving the company's 75 dpi software to 150 dpi high resolution screens. Helped move Palm OS to ARM-based hardware. Worked with ARM and x86 emulators that implement 68k compatibility environment. Used ARM Inc. development tools: C, C++, Linker, and debugger (AXD). Worked with prototype Intel XScale CPUs.

May 2000 to October 2000
Independent software consultent working at E-Color Inc ( www.ecolor.com ). Worked on prototyping next-generation color calibration software using Win32, MFC, HTML, and JavaScript. Developed several prototypes that explore tradeoffs between technical color issues and human-interface design. Researched several algorithms for manipulating digital images for accurate display on LCD displays. Defined and developed Macintosh client application (Mac OS 8 & 9, internet APIs, PPC & 68k, PowerPlant). Working for E-Color has given me many insights on software color calibration techniques including display characterization and color image representation and transformation. Several of my ideas are possible patent opportunities for the company.

January 1999 to April 2000
Senior software engineer at Cadero.com--a tiny internet startup. Responsibilities included designing and implementing new data modeling and data mapping products on Windows NT. Wrote GUI-based applications using MFC, Visual C++ 6.0, and IIS. Designed and implemented custom object / relational (O/R) mapping tool for multi-tier database systems, including Oracle 8i and SQL Server. Designed and implemented custom relational database engine with special support for the specific transactions needed in O/R mapping systems. Wrote HTTP server that converts C++ and Java objects to XML and serves them over the internet.

Transium Corporation, September 1997 to January 1999
Senior software engineer with internet startup company. Designed and implemented C++ plugins for internet e-commerce. Used SSL, CyberCash, and industry standard encryption and authentication to implement credit card charging. Worked with GUI designers and artists to create web front-end. Wrote custom C++ programs to dynamically generate HTML for our web service.

Amazing Controls!, May 1997 to August 1997
Senior software engineer with responsibility for creating light-weight, near-real-time, operating system using C++. The OS ran on the company's custom embedded hardware that employed MC68302 and MC68360 CPUs. Defined, designed, and implemented object-oriented C++ APIs to replace procedural APIs of previous operating system written in Modula (Pascal). Operating system handled AppleTalk communication protocol over Ethernet and Localtalk (serial) hardware, DMA-based serial I/O, touch screen with raster graphics LCD, threaded architecture with light-weight multitasking.

Worked on cross-development system that ran on Macintosh. Leveraged Metrowerks' MC68000 C++ compiler to generate code for our embedded controllers. Wrote tool using PowerPlant framework that managed programs and graphics on our embedded controllers. Wrote tool for new LCD touch-screen used by company's embedded system; my tool allowed designers to use Macintosh to lay out graphics, text, and "touch points" for LCD screen; tool converted standard Macintosh dialog resources to run on LCD touch screen.

Visioneer Inc., December 1994 to May 1997
[Second job at Visioneer] Part of hardware group. Wrote low-level Macintosh SCSI driver to interface with company's new color scanner. Used PowerPlant to deliver custom scanner hardware test application for Mac that runs in the manufacturing factory in Taiwan (Mac's standard SCSI interface made it a fast and reliable test platform). Helped design and write custom color calibration software for digital scanner. Worked with ASIC group to research, design, implement, and debug compression and protocol for passing image data from scanner to computer (Windows and Macintosh). Implemented lossy and lossless compression and decompression software for real-time image transmission from scanner to computer; used different algorithms specific to bitonal, grayscale, and color compression needs.

[First job at Visioneer] Part of Macintosh sofware group. Responsible for image storage and low-level image manipulation using C and assembly language. Designed and implemented advanced image processing algorithms specific to the needs of digitally-scanned images: deskew, despeckel, trim edges, color correction (hue, saturation, brightness, contrast, gamma, white point), real-time blur and sharpen filtering, lossy and lossless direct-to-disk image compression. Implemented industry-standard compression and storage algorithms: CCITT group 3 and group 4 bitonal compression, TIFF, GIF, JPEG, huffman coding, LZW and LZSS compression. Designed and wrote object-oriented imaging pipeline that starts with compressed disk data and outputs pixels directly to a video buffer controlled by an object-oriented C++ application framework (MacApp).

Global Village Communication, August 1992 to December 1994
Responsibility for improving GlobalFax fax imaging driver for major 2.5 release. Added custom dithering support for grayscale faxes. Responsible for Quickdraw, Color Quickdraw,and Quickdraw GX fax imaging. Rewrote fax viewing engine while implementing on-the-fly image rotation, custom anti-aliasing, and contrast/brightness control. Designed and wrote all-new client registration application. Designed and wrote all-new multi-threaded client registration server. Rewrote and optimized fax compression and decompression algorithms; ported code to PowerPC architcture; reworked algorithms for highest-speed MC68000 and MC68020 assembly language implementation.

Oracle, September 1991 to July 1992
SQL*Forms 4.0 development team. Experience in very large projects using cross-platform GUI library. Emphasis in long-term and cross-platform code portability. Coding done in C on large VMS system.