![David Reich, Developer in Kearneys Spring, Australia](https://assets.toptal.io/images?url=https%3A%2F%2Fbs-uploads.toptal.io%2Fblackfish-uploads%2Ftalent%2F4078%2Fpicture%2Foptimized%2Fhuge_39da59edf98142a28488e38b0842476e-6a2b79b6f2c7aab1b97daccba291466a.jpg&width=480)
David Reich
Verified Expert in Engineering
iOS Developer
Kearneys Spring, Australia
Toptal member since November 12, 2013
David is a seasoned software developer. He has worked on enterprise-scale apps as part of large teams, as the sole developer, and everywhere in between. He has been a part of cross-functional and multicultural teams. David has worked on greenfield apps, legacy apps, and those in between.
Portfolio
Experience
- Object-oriented Programming (OOP) - 20 years
- Xcode - 15 years
- iOS - 9 years
- UIKit - 8 years
- Swift - 8 years
- iOS SDK - 8 years
- Objective-C - 7 years
- SwiftUI - 3 years
Availability
Preferred Environment
MacOS, iOS, Xcode
The most amazing...
...recent app I've built is for musical instrument performance training. It displayed/played a musical score and listened to/evaluated the student's performance.
Work Experience
Principal
Stellar Software Pty, Ltd.
- Created several SwiftUI open source repositories on GitHub: SwiftUIReference, SwiftUICombined, Classic Life, and GridDragView. The first ones are SwiftUI examples. Classic Life is a tribute to John H Conway. GridDragView is a SwiftUI grid control.
- Designed and developed four apps in the App Store. Additional apps are under development. Stellar Dots & Boxes, Stellar Cram, Stellar Hedron, and Trxilt are multiplayer (or vs. AI) games using Game Center and derived from pencil-and-paper games.
- Worked with Xcode, Swift, Objective-C. UIKit, Cocoa Touch, SwiftUI, Combine, CoreData, CoreGraphics, GameKit, and Game Center.
Senior Consultant
Elysium Digital
- Served as a senior iOS developer for the client team working on an iOS application.
- Added incremental features and bug fixes on the UIKit/SwiftUI app.
- Worked on new features for an existing legacy application.
Senior iOS Developer
Domestic Cat Pty Ltd
- Served as a lead developer on Greenfield iOS SwiftUI applications for clients.
- Worked on apps in the fitness, well-being, and stock trading space.
- Developed and implemented source code architecture using reusable components.
iOS Software Developer
Yo Labs
- Worked on a prototype application to register and configure a prototype IoT device.
- Added QR code scanning and Mbed TLS encryption handshaking for BLE.
- Updated Amazon FreeRTOS code and preserved proprietary modifications.
iOS Software Developer
We Quilt, Inc.
- Worked on the Quilt audio-only chat beta application.
- Created and modified SwiftUI Views and user interface screens, and added new features.
- Used Swift and SwiftUI. App used Agora to manage the chat and GraphQL for the backend.
iOS Software Developer
Flatfox AG
- Worked on the Flatfox rental listing app for the Swiss market.
- Performed code reviews of SwiftUI code. Refactored SwiftUI code.
- Used Swift. SwiftUI, Xcode, GitHub for refactoring and review.
iOS Software Developer
Halfspace LLC
- Worked on Sculptura 3D, tasked with converting the user interface from UIKit to SwiftUI.
- Created SwiftUI Views. Refactored UIKit UIViewControllers into SwiftUI Views.
- Used UIViewRepresentable, UIHostingController, NSHostingController and Xcode, Swift, SwiftUI, MetalKit, Git/GitHub.
Senior iOS Engineer
Cognizant Technology Solutions
- Developed POCs using ARKit and CoreML.
- Completed courses or tutorials on scikit-learn, TensorFlow, and SwiftUI.
iOS Software Developer
ANZ
- Developed for ANZ’s main consumer application.
iOS Software Developer
Suncorp Group
- Developed for the greenfield Suncorp App on iOS.
iOS Software Developer
Medibio Limited
- Added Fitbit server data download to an existing healthcare app.
- Refactored an excessively large legacy storyboard.
- Created a new application focused on ResearchKit.
Senior Software Developer
Megabus Pty, Ltd.
- Helped prepare Marlin GTX for introduction to the US market.
- Maintained features and fixed bugs.
iOS Software Engineer
Australia Post
- Worked on the Digital ID project.
- Developed native iOS apps in Swift.
Software Developer
Musikyoshi
- Developed an app for teaching musical instrument performance.
Software Developer
Tennis Australia
- Added features to existing apps.
- Handled the successful submission of the AO Player app to the App Store. The AO Player app is for the use of players at the Australian Open. The 7+ other apps are for internal distribution and are part of the operation of the Australian Open.
- Covered the user interface, data entry, and display.
Software Developer
Fob App, Inc.
- Created an iOS application focused on image manipulation and composting, using images from the device. The app uses the camera, image picker, and gesture recognizers and connects to AWS and Facebook cloud services, sharing images with Facebook, Instagram, and other social networking sites and external apps.
- Contributed to the user interface, database design, and display.
Software Developer
Startup Company
- Created new apps, added new features, and fixed bugs on existing apps.
- Implemented the apps to use iBeacons in a proprietary manner as a key component of the system.
- Used JSON to wrap the data to and from a REST API. The work covered the user interface, data entry, and display.
Senior Developer
Praemium Limited
- Worked mostly on incremental features and bug fixes covering the user interface, data entry, and display. Also worked with business rules in the front end, Windows services, and SQL stored procedures.
- Handled C#, Visual Basic, SQL, and JavaScript source code development and maintenance.
- Modified database schema (added/changed tables).
Senior Software Developer
Megabus Pty, Ltd.
- Worked on broad incremental features that were manually applied across all modules.
- Fixed a problem due to the structural design of the run-time architecture of how the application ran its modules. Modified (outside of rewriting a key part of the run-time library) almost 200 dialogs and all the places that create those dialogs.
- Made dialogs asynchronous, which required all the creators of those dialogs to use callback methods. Wrapped the dialogs in several library classes. Created asynchronous versions of these classes and callback wrapper classes so that a minimal amount of identical new code needed to be added to the existing codebase.
- Wrote extensive documentation about the problem, describing its cause and the solution. Included documentation of the new classes and developer guides for modifying existing code and creating new code using the new classes. I conducted a training session for the development team.
- Handled maintenance (bug fixes and features) of the user interface, data entry and display, and business rules.
Senior Analyst Programmer
IGT (Australia) Pty, Ltd.
- Worked on incremental features and bug fixes.
- Created SSRS (SQL Server Reporting Services) reports, including associated SQL stored procedures.
- Designed and implemented a New Promotion Wizard to improve the user interface.
- Designed and implemented the reorganization and combination of several configuration dialogs.
- Added DirectShow support for USB cameras for ID photos, etc. within a C# module.
- Wrote specifications for the Promotion Wizard, the configuration dialog reorganization, and the addition of some new features.
- Handled maintenance (bug fixes and features) of the user interface, data entry and display, and business rules in both the client-side application and on the server-side in stored procedures.
Senior Developer
Momentum Technologies Solutions Pty, Ltd.
- Added AES-256 encryption/decryption to Windows-based C# broadcast and media server applications, using the Bouncy Castle C# library. Used the Crypto++ library for the C++ ActiveX control.
- Expanded the use of DirectShow filters in the encoding software, standardizing the mechanics of the construction of the filter graph. Incorporated encoder, motion detector, and de-interlace filters from Leadtools. Developed a filter to flip or rotate the video frame. Created classes to configure the motion detector filter and provide detection callback objects.
- Used the Windows Driver Kit. Built (from open source software) a device driver to monitor the GPIO port on the video capture platform.
- Reconstructed and documented the build system, setting it up on a set of Windows 7 virtual machines, providing portability, reproducibility, and backup. Created the next-generation build system to support building the next version of all applications and their installers.
- Investigated and developed a proof-of-concept broadcast system using the Wowza Media Server to rebroadcast live video from a proprietary media server to a wider range of viewing platforms. Modified and tested Flash players using Flash Builder 4.5.
Senior Software Developer
Megabus Pty, Ltd.
- Worked on a project to rewrite/redesign/migrate/convert a legacy system into a modern GUI, Marlin GTX. Rewrote Microsoft PDS Basic programs into C++ on C++ Builder 2009, and also rewrote Watcom C++ and C++ Builder 6 applications using Btrieve into C++ Builder 2009/2010. Changed the database implementation from a Btrieve file-based model to a more SQL-compliant one. Worked on object, class, and user interface design.
- Refactored a set of 42 data integrity calculation applications into one base C++ class and 42 derived constructor classes, and one singleton factory class to create the different calculation objects for each calculation type. Refactored because originally each calculation application was a separate application, with little common source code, and half of them were written in Basic, and the rest used a discarded database API; therefore, no smart refactoring tools could be used.
- Refactored a second set of 38 data update applications written in Basic into one base C++ class, five derived modifications, and one singleton factory class to create the different update objects based upon a table of parameters for each update type.
- Maintained (bug-fixes and features) the user interface, data entry and display, and business rules.
- Converted all the project files for the entire system from Builder 2009 to Builder 2010. Wrote a small Perl script to change all text that previously included hardcoded link names and paths in the almost 200 project files.
Senior Software Engineer
Barnum Software
- Expanded the graphics supported from CGA to include EGA, VGA, and SVGA modes by converting the Quarter Mile Math program to use the FastGraph graphics library. Added animated horses to the existing animated racing cars.
- Ported the program to OS 9 by creating a Mac toolbox replacement for the parts of FastGraph that we used.
- Converted the math topics into Macintosh "code fragments."
- Converted the original assembly language interrupt service timing code into C, which then ran on the Macintosh and was key to finally porting everything to Windows 3.1.
Senior Software Engineer
LibraryWorld, Inc.
- Developed the LibraryWorld family cross-platform Windows/Macintosh applications. Supported Windows XP, OS 9, and OS X using a common database.
- Based the proprietary database around the MARC record. Used proprietary indexes to provide adequate performance on the desktop systems of the early 1990s.
- Designed and implemented a proprietary report script and report engine for the LibraryWorld product line using a then state-of-the-art dot-command syntax. Implemented the report engine to display reports on-screen, print them, or write them to a file—all from the same script.
- Planned the project to be stable and reliable, and my code has remained unchanged through 4-5 UI design evolutions.
- Worked on the original LibraryWorld web version. Removed the UI, building a family of CGIs around this code. The CGIs provided most of the functionality of the LibraryWorld programs through the internet. LibraryNet was released in 1998 as a product for IIS and Apache on OS X. In 1999 and 2000, I created the LibraryCom web service, which replaced LibraryNet. The current LibraryWorld 2 web service was developed by LibraryWorld based upon my earlier designs.
- Added library catalog record lookup on a web service and publishing catalog records to the web service by adding an asynchronous Telnet client to the applications.
Senior Software Developer
Trimble Planning Solutions Pty, Ltd.
- Completed a project to add support for internationalization to our application. Included migration of the source code from ASCII text to Unicode. The user interface text had to be extracted from the C++ source code and added to the resource files where it would be accessible to translation tools.
- Managed translation of the language database and added automatic translation database maintenance and resource text translation to the build system.
- Migrated the rest of the development team to the new version. Created installation and usage guides for the tools and source code changes. Directed and managed the transition of the development team to the new source code and new tools.
- Began migration of the application data store from a proprietary flat-file system to a SQL database. Created a database schema representing the current data and planned enhancements. Developed a set of object templates to encapsulate the relational database and additional business logic. Developed a Visual Studio wizard to generate source code and store procedure scripts from the tables in the schema using those templates.
- Converted the user manual in FrameMaker into a Microsoft help file.
- Maintained (bug fixes and features) the user interface, data entry and display, and business rules.
- Created and used a series of Visual Basic macros within Visual Studio to semi-automate the movement of text from the source code files into the resource files.
Software Engineer
IGT Systems
- Worked on the Commission-based Program Play (CBPP) module in requirements analysis, functional and technical specifications, user interface design, database specifications, software design, and programming implementation.
- Developed an initial prototype of the module for the CBPP feature and used that prototype as a requirements analysis tool to elicit a greater degree of detail from the client regarding their functional requirements. Based on this, I developed a second prototype. Spent four days at the client site leading discussions with the client stakeholders to help them understand and decide upon the operation of the new feature so that I could refine and complete its specification.
- Specified the database schema for configuration and operational data. Designed and wrote the application code to create, configure, and manage the CBPP programs and to calculate the rewards and commissions and the SQL stored procedures and functions for using and manipulating the data. Designed and implemented the user interface for all of this. Implemented the business logic in stored procedures and triggers that interacted asynchronously with other distributed applications and services. Except for the stored procedures and triggers, all programming was on the client-side. Also provided deployment support for the system’s installation in Macau.
- Worked on an interface between the Advantage system and an external third-party CRM system. The interface was used to synchronize data and report events between the Advantage system and the CRM system. The interface was implemented as multi-threaded asynchronous TCP/IP client and server Windows services. The services, threads, asynchronous client, and asynchronous server were all implemented using the .NET framework, and the interface to the Advantage database was implemented using classes based upon ATL templates.
- Maintained (bug-fixes and features) the user interface, data entry and display, and business rules.
Experience
GridDragView (2020)
https://github.com/DavidSReich/GridDragViewClassic Life (2020)
https://github.com/DavidSReich/Classic-LifeClassic Life
In memoriam
John Horton Conway
1937 - 2020
SwiftUICombined (2020)
https://github.com/DavidSReich/SwiftUICombinedThis is a SwiftUI reference app based upon GiphyTags and then updated with Combine. It is written in Swift 5 and Xcode Version 11.4.1 (11E503a)
SwiftUIReference (2020)
https://github.com/DavidSReich/SwiftUIReferenceIt's GIPHYTags meets SwiftUI!!
GIPHYTags (2017)
https://github.com/DavidSReich/GIPHYTagsOlder source code for my games is also available on my GitHub page.
Trxilt
Stellar Hedron
Selfie Test Drive
I created the app based upon designs and specification from fob. The application is focused on image manipulation and composting, using images from the device. The application uses the camera, image picker, and gesture recognizers; connects to AWS and Facebook cloud services; and shares images with Facebook, Instagram and other social networking sites and external apps. Technology used included the Cocoa Touch, UIKit, Core Data, Core Graphics, MessageUI, AWS, and Facebook frameworks and SDKs. The work covered the user interface, database design, and display.
Several versions were released after my version, but Fob has removed itself and the app from the App Store.
Stellar Cram
Dots & Boxes
Education
Bachelor of Science Degree in Electrical Engineering
Massachusetts Institute of Technology - Cambridge, Massachusetts
Certifications
Certified SAFe® 4 Practitioner
Scaled Agile, Inc.
Skills
Libraries/APIs
REST APIs, iOS Native Libraries, iOS API, RxSwift, CocoaPods, Core Graphics, Microsoft Foundation Class (MFC) Library, Microsoft Foundation Classes (MFC), Firebase iOS SDK, DirectShow, AES, DirectX, Facebook SDK, Alamofire, Scikit-learn, TensorFlow, Mbed TLS, Facebook iOS SDK
Tools
GitHub, Jira, Interface Builder, Auto Layout, Figma, Git, Xcode, TestFlight, AVPlayer, Visual Studio, NAnt, Wowza, Microsoft Visual C++, Visual Studio .NET, CodeWarrior, Apache HTTP Server, Agora, AWS SDK
Languages
C, Swift, C++, GraphQL, Objective-C, SQL, C#, T-SQL (Transact-SQL), XML, Perl, HTML, JavaScript, Java, Visual Basic
Frameworks
SwiftUI, Core Foundation, UIKit, Cocoa Touch, iOS SDK, iOS Frameworks, Core Data, GameKit, .NET, Combine, Core Location, ResearchKit, Swinject, ARKit, Core ML, Message UI
Paradigms
Agile Software Development, Object-oriented Programming (OOP), XP, Mobile Development, REST, Unit Testing, RESTful Development, UX Design, Model View ViewModel (MVVM), Dependency Injection
Platforms
MacOS, iOS, Windows, Mobile, Apple, Firebase, Windows XP, Windows Server 2008, OS X, Windows Server
Industry Expertise
Photography
Storage
JSON, Microsoft SQL Server, Btrieve, SQL Server Management Studio (SSMS), SQL Server Reporting Services (SSRS), Pervasive PSQL, Firebird
Other
User Interface (UI), SOLID Principles, App Store, APIs, SDKs, Mobile App Development, User Experience (UX), iOS App Development, Design, Internet of Things (IoT), Image Processing, Machine Learning, Image Manipulation, Embarcadero RAD Studio, iBeacon, PDF, Apollo, FreeRTOS, AVFoundation, iOS Camera, iOS Video, Augmented Reality (AR), Use Cases
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring