
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.
Education
2011 → 2015 Bachelor’s degree (Faculty of Mathematics and Information Technology) in Dostoevsky Omsk State University
Professional hobbies
- Lead the telegram channel about programming
- I maintain own open-source projects on Github
- Write articles about programming in Apple ecosystems
- Help the community answering questions at StackOverflow
Experience
-
Igloo: Jul 2020 → Apr 2022 (1 year, 10 months)
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 (2 years, 4 months)
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 (3 years, 5 months)
Been involved in many different projects at the outsource company as junior developer: music apps, workout app, booking-analolgue and so on.- Pixelcraft: Swift, MVVM+Routing, Firebase, AVFoundation
- BEATMix: Swift, MVVM, RxSwift, Realm, OpenGL, AVFoundation
- Phyzseek: Objective-C, MVC, ReactiveCocoa, CoreData
- KostHERO: Objective-C, VIPER, ReactiveCocoa
Open Source Projects
- CodableAlamofire: An extension for Alamofire that converts JSON data into Decodable objects.
- NxEnabled: Library that allows you binding enabled property of button with textable elements ﴾TextView, TextField﴿
- XShared: Xcode extension that allows you copying the code with special formatting quotes for social ﴾Slack, Telegram﴿
- Framezilla: Elegant library that wraps working with frames with a nice chaining syntax.
- Framer: Framer is a good framework that wraps working with frames with a nice chaining syntax.
Articles
-
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!
© 2022 Nikita Ermolenko. Some rights reserved.