Software Engineer2008 - PRESENTMichal Pietras Apps
Technologies: Storyboarding, Test-driven Development (TDD), Data Structures, Algorithms, SQLite, Core Graphics, Cocoa Touch, Git, Auto Layout, Instruments, Xcode, Swift, Objective-C, C++, C, FreeBSD, iOS, OS X
- Developed popular and profitable iOS applications in-house.
- Worked as a freelance software engineer for several clients on a contract basis, including startups, a university, and a well-established international company.
Contract Swift Software Engineer/Data Scientist2016 - 2016Firefly Experience
Technologies: MapKit, Test-driven Development (TDD), Concurrent Programming, Data Structures, Algorithms, Mapbox, SQLite, Core Data, Core Motion, Core Location, Git, Instruments, Xcode, C++, Swift, iOS
- Ported various algorithms and data structures from C++ to Swift.
- Designed and co-implemented a framework for processing users' historical raw location data into clean polylines visualizing past journeys.
- Architected the framework as a pipeline with multiple stages of processing including filtering, detecting immobility, snapping close paths together, and hence creating a graph representation.
- Developed a graph cache based on Core Data that allows efficient querying of any arbitrary area.
- Created a highly optimized algorithm for converting part of a graph visible on the screen into polylines, including appending to existing polylines to avoid redrawing them, and removing ones that are no longer visible on the screen.
Contract iOS Software Engineer2015 - 2015Travelex
Technologies: Perl, Model View Viewmodel (MVVM), JSON REST APIs, JSON, Cocoa Touch, Git, Auto Layout, Storyboarding, Xcode, Swift, Objective-C, iOS
- Worked as a part of an Agile team on Travelex Money app, and delivered numerous features, improvements, and bug fixes.
- Refactored the card number validation framework in order to get rid of hard-coded data and enable validation as user types by using the PCRE library for partially matching regexes.
- Reimplemented a custom keyboard and implemented a custom text field based on UILabel. Both were designed to communicate in the iOS native way using UIKeyInput protocol in order to take advantage of all the features provided by the operating system, like support for Bluetooth keyboards etc.
- Co-delivered functionality to purchase more than one currency at the time, the biggest feature since the app launch. It required changes throughout the code base, including changing the flow of the application and reimplementing many screens from scratch using MVVM and Auto Layout.
Contract iOS Software Engineer2015 - 2015Beamly
Technologies: JSON REST APIs, Unit Testing, JSON API, JSON, Cocoa Touch, Git, Auto Layout, Storyboarding, Xcode, Objective-C, iOS
- Managed the full development lifecycle of Beamly and Beamly Bite apps, including building release versions and managing apps’ submissions to the App Store.
- Resolved several issues in the legacy code and implemented a few minor features.
- Involved in workshops regarding new features and products as well as building rapid prototypes.
- Co-designed and co-implemented a generic and extensive framework based on NSURLSession for managing communication with JSON REST APIs.
iOS Software Engineer2013 - 2015Blinkbox Music
Technologies: AudioToolbox, Unit Testing, Concurrent Programming, JSON REST APIs, JSON, SQLite, Key-Value Observing (KVO), Grand Central Dispatch, Core Media, AV Foundation, Core Audio, Cocoa Touch, Git, Storyboarding, Instruments, Xcode, Objective-C, iOS
- Worked as a part of a team with up to 8 iOS Software Engineers with strict coding guidelines and rigorous code review process.
- Transitioned from Audio Queue Services to AVPlayer for playback of music and ads. Designed and implemented the Player Framework to seamlessly manage streaming and playing tracks from the encrypted cache, both locally and on external devices like Chromecast. Implemented playback from encrypted cache with probabilistic ahead loading using AVAssetResourceLoaderDelegate.
- Refactored the cache encryption framework to allow decryption of arbitrary ranges within a track on the fly.
- Co-redesigned and co-refactored the existing SQLite database system using FMDB framework. Fixed a number of bugs to ensure database consistency.
- Prototyped and then implemented a number of features throughout the app, from API integration and data model creation to building UI according to specifications from designers.
Contract Senior Software Engineer2009 - 2013Lublin University of Technology
Technologies: Unit Testing, Data Structures, Algorithms, SQLite, Standard Template Library (STL), C++, C
- Developed a suite of grid model data verification, conversion, and analysis tools.
- Implemented various graph algorithms.