๐ I'm Ritesh Gupta from Delhi, India ๐ฎ๐ณ.
๐ฑ Senior Staff iOS Engineer / Swift / SwiftUI / Kotlin-Multiplatform,
๐ก Working Remote @Disney+ Hotstar, previously -> @Compass, @Over, @Fueled,
๐ฃ๏ธ Speaker (
talks /
workshops /
meetups
),
๐ฅ Food enthusiast, pretty good at making crispy Dosa,
๐ซ @ragdroid,
๐ NSIT '13
Currently shipping @Disney+ Hotstar's iOS app & also experimenting with kotlin multiplatform which IMO is the only sane multiplatform solution proposed yet. Previously used to work at @Compass, Over & Fueled. I have been working with Swift since it came out (2014) and have published over twenty apps so far, though my entire iOS experience goes over 9 years. When I'm not coding, you can find me tweeting about iOS / Swift / SwiftUI / Combine / Kotlin / Kotlin-Multiplatform or exploring Indian fusion cuisines on Instagram!
Newsletter
Authored the 295th issue of iOS dev weekly, one of the most prestigious iOS newsletters managed by Dave Verwer
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
- Multi-Repository KMM: Streamlining Artifact Generation and Distribution
Droidcon Berlin, Germany (5th - 7th July, 2023), upcoming conference.
- Multi-Repository KMM: Streamlining Artifact Generation and Distribution
Droidcon Kaigi, Japan (14th - 16th September, 2023), upcoming conference.
- Combine & Networking in iOS
iOS Conf Singapore (18th Jan 2020), check out the video here.
- Combine and its overview in iOS
SwiftIndia Bangalore (28th July, 2019), check out the video here.
- Why not MVPI or MVVMI in iOS
DroidJam Bangalore (13th July, 2018), check out the video here.
Speaker, iOS/Swift Workshops
Speaker, iOS/Swift Meetups
- Overview of async-await in Swift
Zomato office, Zomato huddle 2022
- Handling complex async tasks using Combine
Zomato office, Zomato huddle 2019
- Life of a Button
UrbanClap office, Swift Delhi Meetup chapter #13
- Protocol Oriented ViewControllers
Workly office, Swift Delhi Meetup chapter #8
- What's new in Swift-4, iOS-11 & Xcode-9
Zomato office, Swift Delhi Meetup chapter #5
- Deep dive into Protocols
LBB, Swift Delhi Meetup chapter #3
- How to be a POP Star (Protocol Oriented Programming)
Chennai, Swift Chennai Meetup
- Thinking in Swift
Ahmedabad, Swift Ahmedabad Meetup
- Thinking in Swift
Delhi, Swift Delhi Meetup
Blog
- Declarative Networking with Combine:
In this post, we will explore how we can form a declarative networking layer using Combine for iOS applications. The idea here is not to re-create
URLSession.DataTaskPublisher
operator but rather to understand and take advantage of the existing declarative nature of Combine (and its operators) to manage success and error values declaratively.
- 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