RSSAmplifier

Blog

Gatsby Starter Blog RSS Feed

Ilya Puchka Blog

ilya.puchka.meRSS feed ↗48 posts

Latest posts

Libraries with resources optimized for build time and application size

When you have a large code base more often than not you end up with your code broken down into multiple frameworks. But when it comes to…

Decoding nested values with property wrappers

Property wrappers is one of the recent Swift proposals that have been welcomed probably the most by the community. To be fair though they…

git rebase vs. git rebase --onto

Recently we were discussing in our team how to approach having fixes for bugs discovered during release both in release and the trunk branch…

Making Slack, CircleCI and Fastlane work together

Nowadays Slack, some kind of CI and often Fastlane are default tools in a toolset of iOS developers. These tools serve their own purposes…

Swift 5 string interpolation

Strings are everywhere. We all use strings everyday. In Swift String is a very powerful type. One of the features it had available since the…

Implementing features with ReactiveFeedback

Some time ago there was an explosion of articles and talks in the iOS community about "unidirectional flow" architectures, inspired by Redux…

iOS UI Automation Tests at Babylon

This article is based on the talk I gave at iOS Astronauts meetup that was held on 03.10.2018 at Babylon. You can check out this talk and…

Parameterized jobs in CircleCI

The title is a lie - there is no such thing as parameterized jobs (at the time of writing, but seems it’s going to be improved in 2.1) when…

Codable in practice

One of the first tasks I got in my new team was to convert entire code base from in-house JSON encoding/decoding solution (in fact two of…

URL parser in functional style. Part 2.

In previous part we started to write base components of URL parser. Time to extend it and add some additional functionality, like…

URL parser in functional style. Part 1.

When I published one of my previous posts about deeplinks and then decided to turn it into a framework it turned out that Brandon Williams…

Swift 4 tricky filters

This is a short story of a regression in Swift 4 that I've recently had to deal with. It can seem as a simple problem, but I think it's a…

Deep links with no brainer

Very often in my practice deep links were something that no one cares much, they work somehow and its fine. Or there are just few of them…

Swift enums with associated values defaults

In Swift enums are much more powerful than we got used to in other languages. One of the features that makes them more interesting to use is…

Xcode Source Editor Extension superpowered with SourceKitten

With Xcode 8 Apple finally provided developers with first party API to develop plugin-like Xcode extensions, at the same time closing all…

Extending native code with JavaScriptCore

This week there were a lot of articles around the web about React Native and its place in a current iOS dev ecosystem. I was also playing…

Going back to the roots

As Roy Marmelstein said in his recent presentation at dotSwift - we love to be excited. Can not agree more. When we read a blog post that…

Adaptive text styles

Textual content is the essential part of any app and text handling in iOS has been improving through last years. Starting with iOS 7 we have…

Inout variables with side effects

Every app has some kind of caching. Let's say our caching strategy is very simple: check if data is in the memory cache and return it if not…

Objective-C headers in Swift framework & custom build configurations

It's already 2 years of Swift and its interoperability with Objective-C as well. When app extensions were released we've got a way to share…

Frameworks, Keychain, NSCoding and Swift

One of the strategies that we use at HelloFresh to reduce compile time, improve code reuse and overall codebase health is breaking our code…

Xcode & cross-platform frameworks

Recently I came across an article by Max Howell describing how he had setup PromiseKit project to use just a single target instead of a…

Douglas-Peucker algorithm

This post is a part of the series about shapes recognition. This post is also available as a part of a playground. When drawing by hand…

Freehand drawing

This post is a part of the series about shapes recognition. This post is also available as a part of a playground. Naive implementation of…

Dependency Injection (DI) in Swift

This post is a script of the talk that I've made on UIKonf'16. That was a first time for me to present on such a big conference and honestly…

Mixing optional binding and boolean expressions

There were few times already when I used this little-known feature of Swift in real code and it improved (in my opinion) readability a lot…

~= vs Range.contains(_:)

Today I was working on simple validators that we use for forms (backed by awesome Eureka) and had to implement validator that validates…

On package managers

I definitely agree with those who say that you should not depend on code from external source (meaning where and how it is hosted). You…

Creating a simple OS X app

OS X developers are kind of rare developer species. I don't know about you but among my fellow developers there is only one who is doing OS…

Intermediate action segues

TL;DR - You can play with source code and example project here. Storyboards segues are very cool. They are very easy yet powerful. They help…

Properties of types conforming to protocols in Swift

In Objective-C it's very natural to have a property of type that also conforms to one or few protocols. In Swift that becomes tedious cause…

Dependency injection with Dip

Note (15.04.16): This post is updated to reflect some of the latest changes in Dip. In some of my previous posts I wrote about using…

IoC container in Swift. Circular dependencies and auto-injection

Note (15.04.16): This post is updated to reflect some of the latest changes in Dip. In my previous post I wrote about Dip, lightweight IoC…

IoC container in Swift

Note (15.04.16): This post is updated to reflect some of the latest changes in Dip. In my previous post I talked about dependency injection…

View controller thinning. Dependency injection with Typhoon.

In my previous post I described how you can break business and presentation logic in small PONSO's to achieve better separation of concerns…

View controller thinning. Behaviors and Interface Builder.

In previous post I showed how you can move some presentation logic from view controller to view. Now view controller is responsible only for…

View themes

In my previous post you could see that I've used ColorTheme and ThemedView protocol to easily customize view appearance. Though that…

View controller thinning

"Massive view controller" is one of the most favorite topic for iOS developers when they talk about architecture. A lot have been said on…

Path to Carthage. Real-life experience.

When it comes to dependency management in Cocoa world you have three options: Cocoapods Carthage Don's use dependency management First one…

Networking in Swift

Recently I've updated my post on how you can implement lightweight networking in Objective-C. Now it's time to look at the same problem from…

Lightweight networking in Objective-C

AFNetworking is the most popular networking library for iOS. Chances are high that it's the first pod you add to your Podfile. It's used as…

Testing Sync Engine

Here is a small presentation that I've made about two weeks ago for our Wire team that provides some overview of Sync Engine testing (by…

Swift 2. Part 1.

This year I was lucky enougth to go to WWDC as part of Wire team. For me the most exciting stuff Apple introduced this year was Swift 2. I…

Swift interesting features

or What Swift Language Guide do not tell you. This post contains the list of interesting features of Swift that I find while using it. To…

Custom UITextView in Swift

In this article I want to describe how I developed custom UITextView component in Swift using TextKit, Playgrounds and IBDesignable and…

Quick overview of Swift Playgrounds in iOS Simulator

Probably lately you've seen few posts on this subject like this or that. Both of described techiques share the same secret - how playground…

Info.plist preprocessing

This is quiet interesting XCode feature I was not aware of until last week. Maybe you will find it not so interesting and definitely will…

iOS storyboards segregation

Recently here at Rambler&Co mobile team we decided to try technique of storyboards segregation (separation in other words). We came to the…