- iOS Development - Cocoa Touch / UIKit, Foundation, Core Foundation, Core Audio, OpenAL, AV Foundation, SQLite, Core Data, CFNetwork, Bonjour, Core Location, MapKit, Core Animation, Core Graphics, GameKit, iPod Library Access, Keychain, In-App Purchase, Push/Local Notifications, RxSwift, Firebase, using Swift, Objective-C and C.
- Mac OS X Development - Cocoa / AppKit, Foundation, Core Foundation, Core Services, Core Audio, AV Foundation, QTKit, legacy QuickTime libraries, Installer plug-ins, launchd, using Objective-C and C.
- Media production - Final Cut Pro, Motion, Compressor, Garage Band, Soundtrack, HTTP Live Streaming (Wirecast, Wowza Media Server, mediafilesegmenter, etc.).
San Francisco, CA (Remote)
September 2014 -
Software Engineer —
Developer for iOS-based remote math tutoring application ("MathElf")
- Implemented app features like photo insert/scale/drag/rotate, account creation/login/editing, promo code sharing, tutor scheduling, push notifications, news "carousel", etc., all in Swift
- Performed code reviews for other team members' code.
- Developed backend code and tests in C# for some features.
|Subsequently & Furthermore, Inc.
Marietta, GA /
Grand Rapids, MI
December 2003 -
Software Consultant/Developer — Designer/developer of software for iOS and Mac OS X.
- June - July, 2014 — Developed ambient audio recorder / tester for audio player prototype app.
- July, 2013 - May, 2014 — Developed OS X application to perform realtime chroma key effect on HD video capture (using AV Foundation and Core Image), provide editing and compositing features, export to H.264/AAC in .mp4 for deployment to client's hardware. Stored capture files and metadata in NSDocument for easy management of capture scratch files.
- March, 2014 — Rescue engagement to correct audio synchronization in .mp4 video files exported by iOS-based editing app.
- December, 2013 - February, 2014 — Developed iOS app for brand-name motivational planner / calendar product. Used Core Data to store user goals and progress, handled local and push notifications with periodic reminders.
- March - August, 2013 — Developed iPhone app to monitor/control automatic transmission bicycle via Bluetooth. Parsed custom protocol with External Accessory API to update UI and sent commands via output stream.
- July - September, 2010 — Integrated Core Audio effect units alongside VST plug-ins for Mac OS X audio conversion app, developed drag-and-drop GUI to customize and reorder effects.
- June - July, 2010 — Addition of new features to existing professional sports event iPhone application: in-app purchase, iOS 4 app-switching support, networking fixes for iOS 4, UI changes.
- January - May, 2010 — Worked on team porting user-activity monitor from Windows to Mac OS X. Developed installer plugins (Cocoa) and scripts, uninstaller app, daemon process to coordinate monitor tasks and download and install updates in the background. Also wrote stand-alone status bar menu (launchd agent) for user interaction.
- October - November, 2009 — Diagnosed and repaired Core Audio and networking problems with HTTP Live Streaming audio feature in professional sports league's branded iPhone application.
- June - August, 2009 — Developed user interface and low-latency Core Audio infrastructure for client's iPhone OS text-to-speech application.
- March - December, 2006 — Developed stand-alone QuickTime for Java application (Mac, Windows) per client requests, offering one-off video capture and editing. Solved long-standing QTJ issues regarding rendering of video capture data, handling of device or settings changes, and pre-configured capture-time compression settings.
Independent Software Developer — Developer of end-user Applications sold on iTunes App Store
- "Road Tip" (Released January 2010, Retired September 2013) — Developed iPhone application to find upcoming gas / food / lodging services for in-car use while driving on freeways. Determines current position and course, performs searches on licensed MapQuest data (via web services and proprietary XML protocols) to find and arrange segments of current road, finds exits along that path and nearby services. Implemented in-app purchase to sell ongoing subscriptions to the map data service.
- "Don't You Know Your Own Tunes?" (Released September 2009, Retired September 2013) — Developed iPhone / iPod touch quiz game based on contents of user's music library.
Book author — See PUBLICATIONS below
October 2003 -
Editor of industry-leading technology websites ONJava and java.net.
- Solicited article proposals (3-4 / week), reworked with authors, edited copy for clarity and adherence to company style guide.
- Wrote 20+ blurbs a week on site activities, open source projects, and industry trends. Also wrote five daily blogs and a weekly newsletter.
- Wrote 30+ by-lined feature articles for these sites (see below).
- Recorded, tracked, produced, and edited podcasts of developer interviews, technology talks, and opinion pieces.
- Represented sites at technical conferences: JavaOne, ApacheCon, JBoss World, etc.
January 2002 -
Contract Software Engineer —
Developer of Java-based network monitoring and configuration application.
- Designed, and coded all user screens, wizards, etc in Swing,
heavily threaded for responsiveness.
- Wrote network client classes to receive status reports and send commands, import/export configurations via Java Message Service (JMS), also with RMI, JDBC, and raw sockets.
- Co-developed DHTML web client to duplicate functionality
of an existing media browsing/previewing client, wrote servlet code
to proxy database and Jini connectivity to web client.
- Wrote servlet to report current and historical host status and
customer-support ticket info, with information from separate Sybase
and SQL Server databases. Created needed Sybase database tables,
triggers, and auto-ticketing script fired by trigger.
October 2000 -
Software Engineer — Developer for Java-based visual XML editing application
used to map internet content (websites, databases, legacy servers) into a
- Added essential GUI functionality to application: copy-and-paste,
- Prototyped XHTML browser-like rendering engine in Swing and Java2D.
- Internationalized application for distribution in other languages and regions.
|Video Networks, Inc.
July 1997 -
Principal Engineer — Team-lead and primary architect/developer
for Java-based client-server system used in television news-rooms.
Primary developer for Java servlet-based media browsing/ordering system
- Wrote Swing-based client user-interface.
- Designed distributed event scheme to update client UI's on arrival of new stories or changes made by other users.
- Rewrote dubbing code, which plays an MPEG-2 video clip in an external
application with text overlay from dynamically-generated BMP image,
while controlling VTR via serial cable.
- Developed "plug-in" system to allow for dynamic loading of arbitrary
business logic code on server and client.
- Also wrote code for back-end transport (file moves, database persistence).
- Co-architected next generation of this product, moving from client-server
to distributed architecture, using JMS and Jini for reliable self-networking.
- Developed servlet session-tracking and JSP-like "server-side tag"
functionality before those features were added to servlet API.
- Designed HTML and dynamic content for query and result pages.
- Wrote applet to upload files via FTP and hand off to servlet,
cryptographically signed for and tested on Windows (95/98/NT), Macintosh,
and Unix browsers (Netscape, Internet Explorer, HotJava, and others).
May 1994 -
Writer / Associate Producer —
Wrote top stories for live-hours, then produced update shows.
- Selected video and stories for 15-minute cut-in shows, assigned stories
to writers and copy-edited scripts. Adjusted rundowns during broadcast to
keep to time.
- Frequently filled in as copy editor, editing all scripts for two
live hours and produced a cut-in as above. Occasionally produced
|Pragmatic Programmers, LLC
- iOS 10 SDK Development (co-author), March 2016, 262 pp.
- iOS 9 SDK Development (co-author), February 2016, 326 pp.
- iOS 8 SDK Development (co-author), March 2015, 296 pp.
- iOS SDK Development (co-author), November 2012, 296 pp.
- iPhone SDK Development (co-author), September 2009, 561 pp.
|Forward Swift (2017)
- Firebase: Totally Not Parse All Over Again (Unless It Is), November, 2016
- Video Killed the Rolex Star, November, 2015
- Core Image: The Most Fun API You're Not Using, December, 2014
- Core Audio in iOS 6, April, 2013
- Mobile Movies with HTTP Live Streaming, March, 2013
|Voices That Matter: iOS Developer Conference (2010-2011)
E. Lansing, MI
1991 - 1993
M.A. — Telecommunications (Media Arts emphasis).
1985 - 1990
B.A. — English (Creative Writing emphasis).
B.S. — Symbolic Systems
(Artificial Intelligence emphasis).
- Stack Overflow contributor, user name invalidname.
- Creator and host of Invalidstream a weekly livestream of iOS development lessons, and gaming demos.
- Native English speaker, conversant in French and Japanese.