I am a professional iOS Developer since 2014, who specializes in building high-quality native applications. Application development is not just my job, it’s also my hobby and passion. I carry out all work efficiently and on time. Always glad to find new challenges and ways to surpass clients’ expectations.
2011 → 2015 Bachelor’s degree (Faculty of Mathematics and Information Technology) in Dostoevsky Omsk State University
UpTeam: May 2022 → Jul 2022
Took part as a full-time contractor for developing the Nexar Smart Dash Cams in the SDK team. Integrated a neural-model for on-device processing by analyzing traffic images from a DVR.
Swift, CoreML, Object Detection, Vision, YOLO
Igloo: Jul 2020 → Apr 2022
Joined a biotech-startup as a main senior developer. Implemented the whole functionality of 2 apps from scratch for med and vet applications. Actively communicated with designers, managers and hardware developers.
Swift, RxSwift, Realm, Core Bluetooth, Protobuf
Yandex: Apr 2018 → Jul 2020
Used to develop a client for Yandex mail as a middle developer. In particular improved the accessibility of the app by implementing the dynamic type and dark theme across the app. Worked out on features from scrath as a head of these features: communicated with managers, developers and designers a lot.
Objective-C, Swift, Core Data
Rosberry: Dec 2014 → Apr 2018
Been involved in many different projects at the outsource company as junior developer: music apps, workout app, booking-analolgue and so on.
UITouch Me If You Can. During several interview processes, I’ve been asked many times about UIResponder and what the beast it is. I guess everybody can somehow explain this concept in iOS, which I did, but lack of in-depth knowledge frustrated me. So I decided to spend a few evenings to clarify it for myself.
Enumerated ForEach in SwiftUI. Today I’m faced with a fairly common task - implementing an enumerated ForEach with indexes in SwiftUI. At first it seemed straightforward, and it was, but with some small pitfalls that I want to highlight in this post. So, without further ado, let’s dive into.
Multiline TextField in SwiftUI. Here it is! How many times did I try to find an answer on Stackoverflow, uhm? No more custom multiline text fields using TextEditor. Starting with iOS 16 we can achieve it using TextField just by adding a new parameter axis.
Type Eraser for Rx Subjects. Let’s continue the series of quick articles! Recently, I’ve had a wish to erase a type of my Subject outside of a class definition. To be clear what I mean I prepared a small class that observes the battery level of my bluetooth device and emits new values on time.
How to clear Xcode console a bit another way. I think everyone has had a whole debugging day trying to figure out how this bug was caught by a QA team. Embellishes the fact you spend a lot of time repeating these steps to reproduce the bug even once but the QA team does it regularly. Familiar feeling, isn’t it? We have such days from time to time and I had a similar one recently. I turned out as a detective and started to investigate the problem.
Dependency Injection for Property Wrappers. This article doesn’t look like a long step-by-step tutorial, it’s just a quick tip for a problem I faced recently. So I decided to share a non-obvious solution for me, maybe it will save some time for someone. Email me if the article was useful to you :)
Make friends UITableView with layout margins. It will not surpise you that most iOS applications tend to have scrolling-style screens. Have a look at some of the screenshots I’ve prepared below - all of which contain scrollable content. One more similarity is layout margins, notice that all content is aligned to the left with the same inset - 16pt.
On a way to great accessibility with Dynamic Type. Sir, put off your monocle, today we will talk about Dynamic Type! Accessibility plays a crucial role in all apps by far, so designing an app keep text size and layout in mind for clarity and readability.
Simplifying the Dictionary’s Subscript with Dynamic Member Lookup in Swift 4.2. Apple’s added some great features in Swift 4.2 release, so in this post, we’re going to use some of them to achieve a neat key-syntax feature for the Dictionary, but before reading further you by far have to know about the Dynamic Member Lookup.
Let’s Simplify the Work with UserDefaults. Everyone has worked with UserDefaults in order to store some simple data and knows that working with that storage is easy as it can be. But today I’m going to improve the interaction with it a bit though!
A Flexible Routing Approach in an iOS App. At Rosberry we’ve given up on using storyboards, except the Launch Screen, of course, and configure all layout and transition logic in code. In order to understand our reasons - read the Life without Interface Builder written by ‘s team, I hope you will find this post useful.
Let’s Optimize the Work with Terminal for Xcode Developers. Lately I’ve often had to switch between different Xcode projects and every time I had to change a path to a specific project in terminal. I am so tired of it! I want to have the opportunity to open Terminal right from Xcode with an already specifed path.
Dive in Disposable Mechanisms in RxSwift. Hey everyone! As a Reactive Lover, I’m going to continue a series of articles dedicated to RxSwift. In my first reactive post, I reasoned about some improvements of flatMap function (you can check it here) and today I want to extend my knowledge of RxSwift by exploring all Rx Disposables.
Improvements of flatMap function in RxSwift. Hey! If you read it, you probably good in RxSwift and ARC, understand differences between weak and unowned keywords. If no, please get acquainted with it and come back!