Objectives
To design, implement and deliver robust, successful and elegant software-based experiences and services.

To exceed customer expectations by creating intelligent interfaces which facilitate workflow, optimize productivity and provide a rewarding user experience.

To enhance the extensibility of the software by exploiting object-oriented design and programming techniques, languages and development tools.

To leverage and improve applicable Open Source technologies, where appropriate.

Skills
Systems &
Technologies
Veteran object-oriented designer and programmer.
Versed in user interface, database, networking, synchronization, mobile computing, data interchange and web standards, and user scripting issues.
Self-motivated with excellent communication, leadership, and team skills.

Systems MacOS (OS X & Classic), Windows, EPOC R5, PalmOS, OpenStep, Newton OS
Languages C, C++, Java, Objective C, SQL, NewtonScript, Pascal, Object Pascal, 68K Assembly, SmallTalk
Skills Object-oriented design, User interface design, threading, networking, relational database, synchronization, SyncML
Relevant
Experience
Sr. Software Engineer/Team Lead, Apple Computer, Inc.

Nov. 2004 -
present
Lead Software Engineer
.Mac Notifications (lightweight distributed messaging system)
MacOS X 10.4 (Tiger), C, Java, XML-RPC, WebDAV

Implemented client and server sides of an architecture which provides the ability for a client process on MacOS X 10.4 (Tiger) to securely send arbitrary light-weight messages (notifications) through .Mac to other interested processes running on other systems. (In effect, extending MacOS X's CFDistributedNotificationCenter model to the internet.) This is technology behind the "publish and subscribe" features in the .Mac SDK 2.0 announced at WWDC 2005.

The client is a CoreFoundation framework coupled with a UNIX daemon which communicate via XML-RPC with a .Mac server. The notification "server" is a persona of Apple's powerful and flexible .Mac WebDAV server implementation which receives XML-RPC, accesses the WebDAV-based message registry, and coordinates with .Mac's custom DNS server to distribute notifications to remote observers.

 
Nov. 2003 -
Feb. 2005
Lead Software Engineer
SyncServices WebDAV protocol for .Mac
MacOS X 10.4 (Tiger), Objective-C, WebDAV

Designed and implemented and Objective-C framework which layers synchronization and transactional semantics over the standard WebDAV protocol. This protocol is used by Mac OS X 10.4 (Tiger)'s .Mac System Prefs panel to securely store data on .Mac's iDisk WebDAV servers without requiring a .Mac Synchronization Management server. This improves the scalability of the server side while reducing overall complexity and leveraging open standards and protocols.

 
Mar. 2002 -
Nov. 2003
Lead Software Engineer
iSync Synchronization Management Server for .Mac
MacOS X, Apache, Tomcat, Oracle 8i, SQL, Java, XML

Lead the small team which implemented the high performance Java-based synchronization management server which powers Apple's .Mac iSync synchronization service (Mac-to-Mac over the Internet) with a very aggressive schedule. Designed and implemented RDBMS schema and data access framework. Created functional specifications for the server and its XML API. Integrated the synchronization accounts/service with other web-based services offered by .Mac subscription service.

 
Sept. 2002 -
Dec. 2002
Delegate/Interim Vice Chair
SyncML/OMA Data Synchronization Working Group

Participated in the group which develops and extends the SyncML DataSync protocol via email, teleconferences, and face-to-face meetings. Actively participated in the definition of SyncML protocol version 1.2, proposed a solution for "filtering" data, submitted Change Requests and corrections, converted existing specifications to OMA document format, reviewed errata and specifications prior to their public release.

 
Principal Engineer/Architect, fusionOne, Inc.

Oct. 2001 -
Mar. 2002
Delegate
SyncML Core Expert Group

Participated in the group which developed the SyncML protocol via email, teleconferences, and face-to-face meetings. Participated in the definition of SyncML protocol version 1.1, submitted Change Requests and corrections, reviewed errata and specifications prior to their public release.

 
Senior Software Engineer, fusionOne, Inc.

Nov. 2000 -
Mar. 2002
Senior Software Engineer
fusionOne SyncML Synchronzation Server
Windows NT, Oracle 8i, SQL, Java, HTTP, SyncML

Implemented key features in a SyncML synchronization server. Features included: Java servlet implementing session support and HTTP authentication, device capabilities exchange, multiple messages, authentication & security, and C++ SyncML utility classes.

Provided feedback (on the specification and SyncML Reference Toolkit) to the SyncML working group during the development of the SyncML specification (version 0.8 through 1.0.)

In April 2001, this server became one of the first certified "SyncML-compliant" servers.


 
Nov. 2000 -
Jun. 2001
Senior Software Engineer
fusionOne SyncML Reference Client
EPOC, SyncML, HTTP

Implemented critical features for a cross-platform synchronization client core which uses the SyncML protocol. Features included: multiple messages, logging, authentication, and device capabilities exchange. This client core has been ported with minimal effort to the EPOC OS, BREW, & *NIX, as well as an embedded application licensed to prominent manufacturers of mobile phones.

In April 2001, this client became one of the first certified "SyncML-compliant" clients (making fusionOne one of only 2 companies supplying both a SyncML client and server at that time.)

 

Sept. 2000 -
Nov. 2000
Lead Software Engineer
fusionOne Filtering XML Synchronization Server
Windows NT, Oracle 8i, SQL, XML

Improved fusionOne's XML sync server (which uses the proprietary SyncAPI) to support the ability to manage a subset of the records in a user's fusionOne account (in this case, for a Sprint-branded service powered by fusionOne.) This service went live to Sprint PCS customers in September 2001.

 
Mar. 2000 -
Sept. 2000
Lead Software Engineer
fusionOne IrMC Synchronization Server
Windows NT, Oracle 8i, SQL, Java, HTTP, OBEX, IrMC

Designed and implemented server (Java servlet, C++ core, SQL storage) which connects fusionOne's synchronization infrastructure to devices which support the IrMC synchronization protocol (using OBEX transports tunneled in the HTTP protocol.)

Designed and implemented an IrMC client/test application for automated testing of an IrMC server.

 
Senior Software Engineer/Scientist, FileMaker, Inc/Claris Corporation

Oct. 1999 -
Mar. 2000
Senior Software Engineer/Scientist
FileMaker Mobile Companion for Palm
Macintosh, PalmOS

Designed, specified, and began implementation of a stripped-down PalmOS-based FileMaker companion product. Named the product, and designed the box art (!). The product shipped in Oct. 2000 and sold over 30,000 units in its first quarter of sales.

 
Feb. 1998 -
Oct. 1999
Senior Software Engineer/Scientist
FileMaker Server 5
Macintosh, MacOS X

Designed, specified, and implemented a major revision of a cross-platform multi-threaded high performance server for FileMaker solutions. Extended the server's capacity from 100 to 250 concurrent users, improved performance (rewrote TCP networking code, threading model), made user interface and user scripting improvements.

Ported the server to Apple's MacOS X-compatible Carbon environment.

 
Jan. 1997 -
Jan. 1998

 

Senior Software Engineer/Scientist
WebObjects, Java, OpenStep & MacOS X Server (MacOS X Cocoa)

Examined the risks and advantages related to Apple's plans for integrating NeXT technology (OpenStep, WebObjects) into MacOS. Investigated incorporating Java and other Internet technologies into existing Claris applications.

Ported and re-architected FileMaker Pro Server to OpenStep/Rhapsody (now MacOS X's Cocoa environment) for both Intel and PowerPC architectures.

 
Feb. 1994 -
Oct. 1996
Software Designer & Lead Engineer
FileMaker Companion for Newton
Macintosh & Newton

Defined, designed, specified and implemented an application which offered connectivity and synchronization between Newton mobile computers and desktop versions of FileMaker Pro. Went from the conceptual stage to feature complete product.

Implemented an plug-in API which became the basis for FileMaker Pro's successful "Instant Web Publishing" functionality. Worked closely with Apple's developer support group, offering feedback as it developed Newton Toolkit 1.5, Newton OS 2.0, eMate 300 and MessagePad 2000.

 
June 1993 -
Sept. 1994
Software Development Engineer
FileMaker Pro 2.1 & 3.0
Macintosh

Added support for speech recognition & dramatically improved (2000%) performance of AppleScript queries in FileMaker Pro.

 
Nov. 1992 -
Nov. 1993
Software Designer & Development Engineer
Cross Platform Abstraction Library
Macintosh & Windows

Designed, specified and began implementation of a C++ based object-oriented framework which abstracted the differences between MacOS and Windows (eventually this became the foundation for FileMaker Pro 5.) Participated in design discussions for a next generation networked relational database engine.

 
July 1988 -
Apr. 1993
Software Designer & Development Engineer
FileMaker Pro 2.0, FileMaker Pro 1.0, Personal Information Manager, & MacProject II 2.0
Macintosh & Windows

Implemented features and improved performance on a major revision of MacProject II (project management software.) Used object-oriented techniques to design, specify and implement major portions of a Personal Information Manager which never shipped.

Implemented features, improved performance, and developed internal tools for FileMaker Pro 1.0.  Designed, specified, implemented, tested and documented AppleScript support in FileMaker Pro 2.0. FileMaker was an early adopter of the technology, which has created a vibrant add-on community. Re-architected much of FileMaker's data access layer to factor user interface code from core functionality.

Education
BS, Information and Computer Science, University of California at Irvine,
Location
San Francisco Bay Area, California USA
Contact
brendan @ ebyss . net

last updated: 11 June 2005