ritesh.hh

About me

March 19, 2018

๐Ÿ‘‹ I'm Ritesh Gupta from India ๐Ÿ‡ฎ๐Ÿ‡ณ.

๐Ÿ“ฑ iOS Engineer / Swift / SwiftUI / FRP / Kotlin / Kotlin-Multiplatform,
๐Ÿ“ก Working Remote @Fueled, previously @Over,
๐Ÿ—ฃ๏ธ Speaker ( talks / workshops / meetups ),
๐Ÿฅ˜ Food enthusiast, pretty good at making crispy Dosa,
๐Ÿ‘ซ @ragdroid,
๐ŸŽ“ NSIT '13

During weekdays I develop iOS apps at Fueled & also experimenting with kotlin multiplatform which IMO is a sane multi plaform solution proposed yet. Previously used to work at Over. I have been working with Swift since it came out (2014) and have published over 20 apps so far, though my entire iOS experience goes over 7 years. Currently shipping apps using SwiftUI & Combine. When I'm not coding, you can find me tweeting about iOS / Swift / SwiftUI / FRP / Kotlin / Kotlin-Multiplatform or exploring Indian fusion cuisines on Instagram! Checkout the new season of Samurai Jack now & thank me later!

Newsletter

I enjoy speaking at iOS/Swift Conferences to share my swifty opinions. If you are one of the conference organisers and want me to speak on iOS / Swift / SwiftUI / FRP / Kotlin / Kotlin-Multiplatform / MVVM / App architectures then feel free to contact me, let's make it happen. Here are some of my talks / workshops at various conferences / meetups:

Speaker, iOS/Swift Conferences

Speaker, iOS/Swift Workshops

Speaker, iOS/Swift Meetups

Blog

  • Custom binding operator in Combine:
    One of the missing pieces in Combine is the binding operator <~ which I think everyone in the ReactiveSwift community is fond of. So, I thought let's try to recreate it using Combine as it shouldn't be too hard.
  • Child View Controllers, Part 1:
    If we are trying to refactor a massive view controller, probably embedding child view controllers is one of the ways to go about it. With this post, I'm starting a series where I'll experiment with this concept and share my findings with everyone.
  • Reactive <~ Closure:
    It's about how to adapt a closure based api in order to have a reactive layer on top of it, without modifying any underlying logic (using ReactiveSwift).
  • MVVM, you had one job to do!?:
    In the last couple of years, MVVM has gained some reputation in the iOS community. Every other conference has at least one talk on this topic. Almost every other blog post is talking about design patterns specially MVVM (like this one :p). All of this indicates that it must be very good at what it does. So letโ€™s try to understand what it actually does ๐Ÿค”.
  • Reusable View Layout using Protocol & MVVM:
    It's about how we can reuse a view's layout with the help of a protocol & MVVM. I have shared how we can outline a viewโ€™s interface, essentially different configuration states, with a protocol which will enable us to inject different viewmodels into a view. In other words, the idea here is to design data agnostic modelling of a view layout.
  • Extend Swift Associated Types in Protocol to compose behaviour:
    Associated Type is a great way to add generic constraints in a Swift protocol. This article aims to explain how we can extend the behaviour of associatedTypes of a child protocol while inheriting from its base protocol ๐Ÿ™Œ.
  • Compile time errors are good:
    I like to think of compile-time and run-time as twins, compile-time being the ๐Ÿ˜‡ (innocent ones) and run-times the ๐Ÿ˜ˆ (evil ones). Compile-time errors will help us avoid any mistakes that could cause their evil twins i.e. run-time errors to bug our product.
  • Status bar throwing tantrums in iOS 9+:
    If you have ever overridden preferredStatusBarStyle for a child controller which is part of a navigation stack, then you know by simply overriding in the respective child controller doesn't work. In this article I have shared a neat trick which you can use to make it work ๐Ÿ’ช.
  • The curious case of Optionalsโ€Šโ€”โ€Š#1 Emptiness:
    Swift introduced optionals so that a variable could also have a state of emptiness. In this article I have shared my views on the relationship between emptiness & optionals.
  • How to be a good Bad-iOS-Dev:
    If you are looking for an informative article then you have come to the wrong place! I am writing to share a few โ€œthingsโ€ about iOS that I have experienced, so that we all can have some ๐Ÿ˜† time while your xcode is running or sipping a cup of tea or maybe in the middle of a boring meeting ๐Ÿ˜ด

Swift Snippets

In my first medium publication I have shared some code snippets that leverages the great power of Swift ๐Ÿค˜ It focuses on extensions, protocols, generics, functional programming, closures etc. If you think you have a swifty snippet which you would like to share with everyone then submit your post on swift-snippet publication and Iโ€™ll add it as a guest post :) Some of the most recent ones are (you can checkout the entire list here),

Open source

I enjoy coding & abstracting reusable components in iOS/Swift and converting them into libraries for easy integration.

  • RGListKit:
    It's a Protocol & MVVM based framework for populating UITableView & UICollectionView. It takes care of batch-reload as well which is powered by Dwifft. 150+ โญ
  • TagCellLayout:
    It's a ui-collection-view layout subclass that takes care of all the logic behind making tags like layout using UICollectionView. It also allows you to adjust the alignment of your layout i.e Left || Centre || Right. Now you just have to take care of your tag view and everything else is sorted. 100+ โญ
  • RGDependencyInjector:
    It lets you inject dependencies in a class which is otherwise difficult to initialize due to framework limitations. It uses a protocol based approach which makes it easy to adopt and extend. There's no magic of any sort happening anywhere, it's a very lightweight ยต-framework which you can browse easily!
  • RGMapper:
    It safely converts Any? into Value types! (useful for mapping api response)
  • RGRoutable:
    It's a type based app routing mechanism which could potentially replaces segues.
  • RGProgressHUD:
    It's an iOS progress HUD written in Swift. You can configure it with three modes - normal, blur & custom. It allows you to change appearance of various UI aspects like tintColor, backgroundColor, alpha etc.

Swift India Meetups

I was one of leading organisers of Swift India Meetups & its Delhi chapter. It's aim is to conduct a meetup per month and so far we have had 16 successful chapters (I was part of first 13 meetups as an organiser) at different offices. You can join our slack group to say hi and stay connected :)

  • Chapter #13 - Protocols, MVI & Xcode @UrbanClap
  • Chapter #12 - Layout Testing, Enterprise iOS Apps Ecosystem, Dependency Injection @Expedia
  • Chapter #11 - CoreML, Neural Networks, Motion Design & Autolayout @Zomato
  • Chapter #10 - 3D Touch, User Interface Design & Unit Testing @UrbanClap
  • Chapter #9 - GraphQL & RxSwift @Exzeo
  • Chapter #8 - Protocol & Alamofire @Workly
  • Chapter #7 - AppTracer, Instruments & Core ML @Naukri
  • Chapter #6 - GCD, Protocols & Library Oriented Programming @Hike
  • Chapter #5 - MVVM, LLDB & Swift 4 @Zomato
  • Chapter #4 - TDD, Server Side Swift (Vapor) & RxSwift @Limetray
  • Chapter #3 - Protocols, Instruments & Analytics @LBB
  • Chapter #2 - Two-Oh-Five @Fueled
  • Chapter #1 - Practical Protocols @Innov8 (Guest Speaker, NatashaTheRobot)

Contact

If you want me to speak at your conference/meetup or collaborate on any swifty open source project or simply want to say hi then feel free to reach out to me at,

Twitter: @_riteshhh
Github: @riteshhgupta
Email: rg.riteshh@gmail.com


Ritesh Gupta

Hi, Iโ€™m Ritesh Gupta, iOS Engineer from India ๐Ÿ‡ฎ๐Ÿ‡ณ. Here, I mainly write about Swift and iOS app development.
twitter โ†’ @_riteshhh.
More about me.