Great software can revolutionize how people communicate & express creativity. Poor software can lead to loss of work, time, or money. Inspired by famed designer Dieter Rams, I use the following principles in an effort to create great software:
- Understand the user and their experience & areas of expertise.
- Be forgiving, never blame the user.
- Be accessible by as many people as possible.
- Be easy-to-use, but not at the expense of usefulness.
- Be unobtrusive and honest.
Lead iOS Software Developer, LayerVault
I am the lead developer of LayerVault for Mac, which designers use to remotely sync and collaborate on design assets. Notable contributions include:
- Implementing sync engine to handle multiple files uploading and updating concurrently to keep the files up-to-date while minimizing resource usage.
- Working closely with the Rails website engineers to develop a modern API for remotely syncing files between computers and a centralized server.
- Efficiently tracking file changes and updating only changed data, rather than the whole file to minimize bandwidth usage and storage space.
- Extracting specific art assets from design files to improve customer workflow.
- Involvement in support conversations to better understand users’ needs.
Lead iOS Software Developer, Unbound Medicine
(November 2005–July 2013)
Working for a Palm and Windows Mobile medical software company, I advocated for releasing our software on the iPhone and became the lead developer. Notable contributions include:
- Ported our publishing platform to iOS and used it to create and distribute 50+ medical apps to the App Store.
- Created a centralized sync service to ensure medical information is always up-to-date.
- Worked closely with graphic artists on the UI and interaction design, including the design language for both iOS and non-iOS apps.
- Wrote the original mobile optimized version of the company’s web platform which was ready at the original iPhone launch.
- Developed rich-text web-based tools for medical editors to review and edit content
Software Developer, Rochester Institute of Technology Library
(June 2004–May 2005)
At RIT’s Educational Technology Center, I led a student-run team of developers to migrate our old media and equipment inventory system to a modern web-based system. As the team leader I was responsible for managing project requirements, setting deadlines, programing, and testing the system.
Software Development CO-OP, Boeing Rotorcraft
(June 2003–November 2003)
As part of my CO-OP program, I worked on the V-22 avionic system assisting with software quality assurance testing, participating in software debugging roundtables, and investigating improvements in the software testing system.
Rochester Institute of Technology, Rochester, NY
BS in Computer Science, 2005
- CocoaLove 2014 conference volunteer. Worked with presenters setup and sound.
- Award winning ISS Base Station team member for the 2013 International Space Apps Challenge. Our team won 1st place among Philadelphia apps. Our team also won “Best Use of Hardware” in the global judging.
- Active Open Source Contributor: LayerVaultAPI, PromiseKit, TransformerKit, libPusher. See github.com/codecaffeine for more information.
- Philly Cocoa contributor (local chapter of CocoaHeads). Talks available at: speakerdeck.com/u/mthomas
- Philly Tech Week 2012 speaker: Mobile Lightning panel.
- Created the iPhone fitness game GEO (discontinued) with other local iOS developers.
- Frameworks: Cocoa (7), CocoaTouch (6), CoreAnimation (4), AFNetworking (4),jQuery (2), Rails (2), Sinatra (1), D3.js (1)
- Testing & Debugging: Instruments (6), GDB/LLDB (5), XCUnit/SenTest (4), OCMock (2)
- Databases: MySQL (5), SQLite (5)
- Other: Accessibility & Usability Design (7), OAuth2 (1), Audio Programming (1)