Kurt Revis

krevis@snoize.com
http://www.snoize.com


Summary
Software engineer with over ten years experience developing Macintosh applications.

Experience and History
Software Engineer
January 2003 —

Part of a team that designed and implemented two brand-new applications for Mac OS X:

  • Pages, a hybrid word processor/desktop publishing app, as part of the iWork suite
  • iWeb, a web publishing app, as part of the iLife suite

Was primarily responsible for the drawing and graphic features in Pages. Helped refactor Keynote's graphics code into a framework usable by other applications, and added new functionality where necessary.

Implemented major new features:

  • Fast live text wrapping around graphics and in graphics
  • Placing graphics inline in text
  • Moving page thumbnails to rearrange a document's structure
  • Changed rendering from ordinary Quartz to accelerated OpenGL

Helped bring this graphics code to iWeb 1.0, and continued developing major new iWeb features.

Diagnosed and fixed hundreds of bugs and performance issues in wide-ranging areas of all three apps.
Acted as a general Cocoa expert for other team members.

Vacation
August 2001 — December 2002

While taking a voluntary break from work, wrote two open-source MIDI utilities for Mac OS X: MIDI Monitor and SysEx Librarian. Also worked on other experiments and research in audio programming, digital signal processing, and AltiVec and OpenGL programming.
Some of my code from this time period has been re-used in other applications, like Adium, Coda, and QLab.

Senior Software Engineer
April 1998 — July 2001

Worked on a variety of Mac OS X and WebObjects projects, for consulting clients and for Omni directly. Highlights:

  • Led development of a vertical-market store management application for Mac OS X, Salon Transcripts. Worked with the client and end users on the specification, and managed two other engineers.
  • Wrote proposals and estimates for potential consulting work.
  • Added features to, and fixed bugs in, the web browser OmniWeb (winner of two Apple Design Awards in 2001).
  • Performed upgrades, developed bug fixes, and cleaned up the architecture of the online store of a major software company.
  • Wrote Mac OS X, Windows, and WebObjects applications that worked with relational databases (Oracle, FrontBase, DB2, and Sybase).
Software Engineer
January 1996 — April 1998

Developed original multimedia education titles for Macintosh and PC, including 3 shipping CD-ROMs, using C++ and in-house cross-platform libraries. Collaborated with teams of programmers, artists, sound designers, and educators. Also developed a prototype implementation of a "kid safe" web browser for the Mac, using custom code on top of Internet Explorer.

Software Engineer
SPRY/CompuServe Internet Division
June 1995 — January 1996

Developed a user-friendly account creation and network configuration application for Internet in a Box for the Macintosh, using C++ and PowerPlant. Also developed Windows 95-specific enhancements for the web browser SPRY Mosaic, using Visual C++ and MFC.

Web Specialist
Fall 1993 — June 1995

Principally responsible for maintaining and improving Caltech's Web system. Created web interfaces to large databases (quite a novelty in 1994!) and assisted departments with custom work. Replaced aging campus information systems with web systems, maintained and upgraded servers, and wrote extensive documentation for users.


Skills

Expert in:

  • Mac OS X application development, including Cocoa, Quartz, WebKit, and CoreFoundation
  • Mac OS X performance tuning
  • Objective-C, Objective-C++, and C languages
  • Object-oriented design and patterns
  • Xcode

Proficient in:

  • Audio and MIDI programming on Mac OS X (CoreAudio)
  • Web technologies: HTML, CSS, JavaScript, XML, AJAX
  • OpenGL
  • C++, AppleScript languages
  • UNIX programming and scripting
  • Source control with Subversion and CVS
  • Web client implementation: Rendering, JavaScript implementation, TCP/IP programming
  • Web application development with WebObjects
  • Relational database (RDBMS) design and maintenance
  • Platform-independent coding

Familiar with:

  • Java, Perl, SQL, Python, Ruby, Smalltalk languages
  • CoreImage, ColorSync, QuickTime

Education

Personal Projects
Two MIDI utility applications for Mac OS X. Useful for working with external MIDI devices (like synthesizers), troubleshooting MIDI problems, and testing MIDI applications and drivers.