Resume

Objective

To apply my extensive background experience to develop integrated mobile systems.

Summary

Team player with a wide range of experience developing applications and games for mobile platforms, including Android in Kotlin & Java, iOS with Swift (and some Objective-C) and Windows Phone 7 using C# and Silverlight. Highly skilled in designing and developing visual and usable User Interfaces, including both desktop and mobile experience. Currently located in the New England area.

Experience

Principal Staff Engineer, Constant Contact/Endurance, 2014-Present

Re-architected the main Constant Contact iOS app to patterns used in Android app, including clean architecture, RxSwift, MVVM via ReactorKit, Moya for REST APIs and SQLDelight for database layer. Sync engine code on both platforms implemented almost exactly the same due to use of Rx.

Moving most of Android codebase to Kotlin (currently around 55%) on an as-needed basis. Ported common library functionality to use Kotlin extension functions instead of “Utils” classes.

Architected complex cross platform rich text editor for iOS & Android with hierachical JSON data containing template and document data. Editor follows MVVM pattern using ReactorKit/RxReactor. Moved API wrappers to use Retrofit 2, and Moshi for JSON conversion.

Built an Actions on Google app which lets the user log in to their Constant Contact account and make queries about their latest campaign stats, as well as receive some email marketing tips. Built as an AWS Lambda in Kotlin, deployed via CloudFormation scripts. Natural Language Processing uses Dialogflow to turn speech into intents, which are then process by the lambda.

Built out and maintain a large Confluence wiki with information for product, software development (including architecture and feature design documentation), quality assurance, and day-to-day tasks.

Principal Software Engineer, Constant Contact, 2013-2014

Architected the main Constant Contact app that enabled features for mobile users using clean architecture, MVP (and later MVVM), all tied together via RxJava. Built an Rx-based sync engine that handles caching data locally in SQLite database via SQLDelight library.

Architected the MyLibrary Android app for helping users maintain their library of images and files in their Constant Contact account, as well as having a multiple file upload feature.

Built an internal common code library used across several apps, which is regularly versioned and published to an internal Artifactory repo.

Senior Software Engineer, Constant Contact, 2012-2013

Continued to maintain CardStar Android with several new features shipped. Created a full parser and renderer of Apple’s Passbook passes (including instant updates via push notifications) on Android. Participated in short 3 month internal MVP launches to test mobile app ideas. Won several company innovation jams with team projects.

Designed the architecture for the EventSpot app for users to track ticket sales on their events, as well as check in ticket holders. App worked well both online and offline. Worked on open-sourcing our API wrappers for the public API using Retrofit & Jackson.

Lead Editor, AndroidWeekly.net, 2012-present

Editor of premier weekly newsletter for Android developers with over 65,000 subscribers. Operates as a team of three, with two members in Germany. Work closely with mobile conferences around the world.

Founder, trickybits llc, 2008-2012

Designed several games for the Android platform using Java and Eclipse. The first application, Grandma Jong, is available, free and paid, on both the Android Market and Barnes & Noble nook market. The applications effectively use animation and sound provided by the Android UI framework. Additionally, created original graphics in Photoshop and audio from licensed sound effects libraries. Maintaining codebase in various Mercurial repositories. Investigating use of Maven and Hudson to automate Android builds and testing.

Authored an Android article for well-known and high traffic tutorials site Mobile Tuts+ and writing several more for personal site. Presented an “Introduction to Android” at the local Smartphone Developers meetup in front of more than 50 members, as well as BarCamp DC in 2009.

Actively participated in the inception and continued growth of MoDevDC, an incredible meetup group and resource for mobile developers in the DC, MD & VA area. Started MoDevRI a mobile developer group in RI on Jan 2012.

Released new Windows Phone 7 game, Bravo 21, to Microsoft’s Windows Phone 7 Marketplace. The game makes extensive use of Silverlight and all its animation capabilities. User interface laid out in Microsoft Blend, including animation timelines. Currently implementing game on Android using open source, OpenGL-based game engine AndEngine.

2011-2012Radius Networks, LLC. Lead architect of mobile platform for innovative new approach to location based and communication services. Developing multiple Android applications that take advantage of the Android platform’s flexibility to offer this service. Packaged up Android SDK for communicating with MessageRadius servers, which included compiling to a .jar container and obfuscating contained code.
Also developed a Windows client for the same LBS leveraging C# and the .Net platform. The application is a simple tab-based UI with customized rendering of tabs to match client’s needs. Application delivered with installer for automated end user install and uninstall capabilities.

2011-2012CardStar, Inc. Re-architected and re-designed CardStar’s Android application to remove proprietary third-party libraries and created a more stable, faster executing and visually appealing version. Used open source RoboGuice dependency injection framework to streamline implementation. Used and contributed back to open source implementation of Android ActionBar. Application makes calls to web services for up-to-date deals, merchant information and backup/restore/sync functionality, parsed from XML.

2011: Clever Controls. Lead architect on large-scope implementation of Control4® MyHome for Android, a home automation application compatible with Control4 hardware. Designed application UI to supply universal look & feel across hundreds of device screens. Screens were implemented to work across a wide range of devices including medium and high density phones, 5″ phones & tablets, 7″ tablets and 10″ tablets. Designed multithreaded architecture to allow XML requests and responses to and from server to happen in the background. Used open source RoboGuice dependency injection framework to simplify complex object interactions and testing. Had to creatively solve memory issues due to extensive bitmap imagery used in the UI, as well as having much of the device information in memory. Project used GitHub along with Tower for SCM. Used Pivotal Tracker for agile project planning and defect tracking. Scope: 1124 classes, 153 interfaces, 99171 LOC, 672 XML files.

2010Zerion Software, Inc. Responsible for full port of enterprise iOS dynamic data entry app to Android. Gained a complete understanding of Objective-C code base in order to duplicate equivalent functionality. Integrated Mozilla Rhino to implement JavaScript scripting environment. Customized the user interface to keep it recognizable, yet leverage the existing look-and-feel guidelines for the Android platform. Transformed iOS MVC pattern usage to counterpart on Android. Application communicates with server back-end via XML-RPC and parsing return XML data.

Also developed a screensaver/demo application which, when the phone timed out after not being used for a couple minutes, would automatically launch a full-screen video demonstrating the features of the phone. When the video was tapped, the application would exit allowing the full phone to be used. Finally, developed a launcher application that shipped on the Kyocera Zio for navigating to Kyocera’s website for support.

Senior Software Architect,  IBM/Ascential 2004-2008

Completed full life cycle development (design, implementation, support) of an extensible application framework which is an important part of the IBM Information Server. Designed and implemented a skinned look and feel in C#. Developed parts of continuous integration system using CruiseControl.NET and NAnt, including automated tests using NUnit and NUnitForms, FxCop, and Clover coverage reporting. Used agile/iterative methodologies to deal with constantly changing requirements. Developed several custom controls for Eclipse. Collaborated with a User Experience team of 6 on requirements. Managed offshore team of 4 to 10 people writing requirements for new development and mentoring for design and implementation tasks. Participated in code review process of entire codebase. Developed a Yahoo! Desktop Widget for showing current status of the builds.

Consultant,  broad:margin, 2003-2004

Developed a windows service paired with a Winforms application in C# to automatically import/export accounts payable data to & from a cost management system that automatically processes, validates, and manages telecom access bills. Used interop to call into a legacy DLL to do the processing. Developed two web services to wrap functionality of legacy DLLs for the ongoing port of BillTamer to a web application. Provided additional MFC/C++ development experience for both new development and existing code base support.

Software Team Lead,  QueTel Corporation, 2001-2003

Provided day to day coordination between developers and senior management using Microsoft Project and company-wide intranet based on Microsoft Share Point Team Services. Helped create Software Development Standards and Procedures. Maintained communications with clients about requirements, implementation and demonstrations. Designed and developed a query front-end to TraQ Enterprise as well as a web data entry application for police officers using ASP.NET, which included reporting via Crystal Reports 9.

Designed and developed a .NET service application for Pocket PC based handheld devices to securely query and update SQL server databases on a wireless network. Designed and developed a Compact Framework WinForms data entry application and signature capture control for Symbol 8100 Pocket PC using .NET Compact Framework.

Implemented several COM+ object for company’s TraQ Enterprise scalable generic database management system using ATL. Created several databases using TraQ Enterprise, including asset and evidence tracking systems. Did extensive enhancement of MFC based screen editor and client application. Developed an ad-hoc reporting add-on using Crystal Reports.

Co-Founder,  Iconoclast Software LLC, 1997-2001

Designed and developed Iconoclast Software’s proprietary cross-platform game library and complementary tools for editing library related binary data (extensive use of STL). Game editor utilised COM technology to enable a simple, extensible plug-in architecture.

  • 2001: SiteSafe. Redesigned communication engineering tool, including: changed from an SDI to an MDI application, user interface changes to reflect current Microsoft standards using Xtreme Toolkit, report creation through COM automation calls into Microsoft Word and Excel. Used ADO to communicate with Microsoft SQL Server database.
  • 1999-2001: PE Biosystems. Designed and developed COM object wrappers for bioengineering calculations. Created new COM objects using ATL and STL.
  • 1999-2000: Coastal Amusements. Ported Iconoclast’s game library to Coastal Amusements’ new touch-screen game console using the Watcom compiler and Causeway DOS extender. Supervised subcontractor in the creation of several games for platform.
  • 1997-1998: Fox Interactive. Managed the development of the Windows version of Fox Arcade: Sci-Fi Pinball and ported game to Macintosh platform.
  • 1997: Cinegram Media, Inc. Designed and developed a screen saver application for the Mac OS. using C++ and the PowerPlant GUI classes provided with Metrowerks CodeWarrior.  

Senior Software Developer,  Group Logic, Inc. 1996-1997

Designed and implemented a charting ActiveX control in MFC which received data from a remote server via TCP/IP. The control implemented wizards to guide users through display settings. Ported networking transfer tool from Macintosh to Windows by implemented a large part of the MacApp framework on Windows using MFC. Ported telephony device front-end to the Macintosh platform using MFC. Access database storage was implemented on c-tree. MFC database hierarchy was rewritten to work with c-tree.

System Architect,  MLJ, Inc. 1993-1996

Completed full lifecycle development (design, implementation, support) of PathPro, a Cellular and PCS telephone system engineering tool, using MFC. Primary role was designing and implementing user interface elements, including implementing tabbed dialogs, interfacing MFC with third party controls and mapping libraries and displaying engineering data visualization. Created the initial prototype user interface using Smalltalk/V for Windows. Engineering calculations were wrapped in a DLL and accessed by Smalltalk.

Education

University of Maryland, College Park, MD
Bachelor of Science – Computer Science, 1993

Skills

  • Languages: Kotlin, Swift, Java, Objective-C, C#/.NET, XML, JSON
  • Mobile platforms: Android, iOS, Windows Phone
  • Technologies: ReactiveX with RxJava & RxSwift, MVI/MVVM/MVP, Dependency Injection with Dagger 1&2, Retrofit, Moya, SQLDelight, Kotlin/Multiplatform, Continuous integration with Jenkins & Travis, SQLite
  • Software: Gradle, GitHub Enterprise, GitHub.com, Maven, Adobe Photoshop, IntelliJ, Android Studio, Jenkins, TravisCI, SourceTree

Activities

  • Mentored at Startup Weekend Azores 2017
  • Founded MoDevRI after moving to RI, held regular meetups from 2012-2014.
  • Founded the Southern Rhode Island CoWorking Facebook group that met weekly at local coffee shops to get some work done, chat and watch the synergies emerge (2012-2018).
  • Mentored at Startup Weekend Providence 201
  • Active member of MoDevDC mobile developers meetup from 2009-2011.
  • MoDevRI is currently in planning stages, expected to start in 2012.
  • Presented on Android during at Barcamp DC 2009.

Publications