oleg@dreyman.dev

I’m a passionate iOS Engineer with deep knowledge of Swift, iOS & watchOS platforms.

iOS Engineer

WWDC 2018 Scholarship Winner.

Writing about Swift & iOS.

Giving talks.

Making apps.

Doing open source.

My Core Values


 

Build on strong foundation

I always spent time making sure that the foundation for the project is solid. I separate reusable components into packages, which are then heavily tested, to speed up the process and make sure the building blocks of the app are reliable.

Write scalable and testable code

Surprisingly (rather not), the balance between testability, flexibility and scalability is a very tricky one. But when the code is done right, with respect for the application domain and specific requirements, it can hit all of these goals.

Treat design as part of engineering process

Good iOS engineers know so much about their domain, iOS concepts and approaches, that they usually have a bigger picture of how to think about designing apps (things like dynamic type, accessibility, dark mode, etc.). And sometimes by knowing deep technical details, we know what can be achieved in uncharted territories (like Apple Watch complications). I always aim to be involved in the design process, making sure that the app feels at home on the platform.

Learn from the community and give back to it

The sense of community is particularly strong in software engineering, thanks to the open source culture we have. iOS community is known for its principle of balancing new ideas with time-tested approaches, and I never stop learning from this community. I always strive to learn from people who share their visions, and am never afraid to give back by writing articles, giving talks or sharing my code.

Watch my Swift talk now

“Privacy Aware Logging with Swift” at Swift Language User Group (hosted by Lyft San Francisco)

My Strongest Expertise


Swift

I spent lots of time working on one of the early-days Swift Server Side projects, Zewo, and it exposed me to numerous new ideas and perspectives, and allowed me to explore Swift with all its powers and capabilities. I know how this incredible language works with full detail, always staying on the cutting edge by embracing newest powerful features as soon as they come out.

Apple Watch Apps & Complications

While working on Women’s Football 2017 app, one of my main goals was to build a first-class experience for Apple Watch, providing meaningful complications for every possible watch face. I spent a lot of time diving deep into the technology, making sure that every complication family is supported, updates in real time, and never truncates crucial data.

Reliable Networking

Spending a lot of time studying NSOperations, URLSession and general networking principles, I was always focused on creating scalable and reliable networking stacks. I have experience creating systems with retry strategies, smart caching, background download and upload tasks, etc. Networking is a huge passion of mine and I always keep my hand on the pulse of what’s new and best.

My networking open source libraries: Avenues, Light

Core Animation

Paperville Intro 3.gif

My WWDC 2018 Submission App, Paperville, was built entirely using Core Animation. It features interactive parallax, multiple layers, shadows, rich animations and much much more. Having access only to old iPad hardware, I spent a lot of time fine-tuning the performance to maximize FPS, learning a lot of technical nuances of Core Animation. Core Animation is an incredibly powerful tool and I’m always extremely happy to work with it, with all its fun and weirdness.

Persistence

I’m spending an embarrassing amount of my free time still trying to figure out what the best approach for persistence is. Having experience using Core Data, Realm, or even creating my own library for lightweight persistence, I realized that the best approach always depends on the app. There’s never a one-size-fits-all solution, and so I always make sure to choose the right tool for the job.

Core Data

I adore Core Data. Many think it’s too complicated, but I appreciate the fact that Core Data is one of the main reasons why Apple’s own apps are so fast and performant. I spent a lot of time diving deep into Core Data, learning from such great minds as Marcus Zarra and Dave DeLong. Core Data is never an easy choice, but when done right it can be a huge win for the project.

 

Select Content


 
 

Don’t underestimate how slow the disk really is

You need to be extremely transparent in your codebase of where your data is coming from. If you want a responsive iOS app — make a majority of data calls asynchronous. If you don’t want to change your whole app to use asynchronous paradigms — use Core Data. But don’t fool yourself into thinking that disk is fast enough.


Do you often forget [weak self]? Here’s a solution

…We can’t rely even on ourselves to write [weak self]in every part of our app (where needed), and we certainly cannot expect all our potential API users to do the same. As API designers, we need to care about safety at the point of use.


Lightweight persistence in iOS shouldn’t be this hard

It’s just that on iOS, lightweight persistence doesn’t have its own level of abstraction. The system solutions lacks uniformity, flexibility and they tend to expose a lot of implementation details to us, sometimes making the code that depends on it untestable.

The goal of Shallows is to provide that missing level of abstraction.

Recent Projects


 

Working on Parable iOS app.

Learn Foreign Numbers (iOS app)

Time and Again (iOS app)

Ask Yourself Everyday (iOS app)

Women’s Football 2017 (dedicated to UEFA Women’s Euro 2017)