Combine Workshop @ Bangalore By Ritesh Gupta on 8th Feb 2020

Share
  • Start Date: Feb. 8, 2020, 9 a.m.
  • End Date: Feb. 8, 2020, 2 p.m.
  • Venue: Noon Academy #1147 2nd floor KP ICON, 12th Main, 100 Feet Rd, HAL 2nd Stage, Bengaluru, Karnataka 560038 099020 28393
₹ 500
Description

Purpose: If you don't know where & how to start with Combine, join this workshop to immerse yourself into the land of reactive programming. We will begin with some basic concepts like what's a publisher, subscriber, operators, etc. and gradually move towards real-world applications like implementing multiple async tasks, validating API calls, implementing live search, handling error, switching threads & many more.


Session 1: Quick intro to Combine, part 1
Estimated time duration: 30 min

We will start the workshop with the building blocks of Combine i.e. what's a publisher, subscriber & operators. Quickly will look into the existing publishers like Just, Fail, Future, DataTaskPublisher, Notification.Publisher & @Published. They are followed by commonly used Subscribers like Sink, Assign & AnySubscriber.

Session 2: Quick intro to Combine, part 2
Estimated time duration: 15 min

No introduction to combine can finish without its operators so in this session we will look into the commonly used operators like Map, FlatMap, Filter, Fail, MapError, Catch, etc and will look into how some operators are used for observing output values and some for errors.

Session 3: How to make custom publishers & subscribers?
Estimated time duration: 30 min

In this session, we will explore how to make a custom publisher and a custom subscriber. For demo, we will create a value publisher and a value subscriber for UserDefaults.

Session 4: Combine meets UIKit
Estimated time duration: 30 min

SwiftUI already has some baked-in support for Combine though there will be times when we would like to use it with UIKit. In this session, we will add combine support to various UIKit elements like UIButton, UIControl, UITableView & UIScrollView.

Session 5: Error handling in Combine
Estimated time duration: 30 min

Handling error is an integral part of an app development that shouldn't be avoided. We will look into various combine operators like Fail, Catch, TryCatch, MapError, ReplaceError, SetFailureType, etc which can be used to catch and transform errors.

Session 6: Networking using Combine
Estimated time duration: 30 min

These days we can't imagine an app without a network client. In this session, we will look into the existing combine APIs for networking like URLSession.DataTaskPublisher and gradually develop some custom operators on top of it to handle validation and error parsing.

Session 7: Handling multiple async tasks using Combine
Estimated time duration: 30 min

Every app has some multiple async behaviors which are often difficult to handle via NSOperation or GCD. In this session, we will explore a couple of operators like Merge, Zip, CombineLatest, Debounce, etc which helps in managing multiple async tasks easily.

Session 8: Handling threads using Combine
Estimated time duration: 15 min

Often we have to switch threads to the background when we have to perform some heavy tasks and back to the main thread when updating the UI elements. In this session, we will explore how threading is made easy (and declarative) using combine operators like SubscribeOn and ReceiveOn.

Session 9: Q & A
Estimated time duration: 30 min


Author Bio:
Ritesh Gupta [ https://twitter.com/_riteshhh ] is a Mobile Engineering Manager at Fueled, working remotely from somewhere in India (currently Bangalore). He has been developing iOS applications since 2013 and occasionally delves into Kotlin. He enjoys reactive programming and also writes about it on his personal blog riteshhh.com. He also had the honor of writing one complete issue (295th) of iOS dev weekly & has given multiple talks in various meetups/conferences. When he is not coding, you can find him exploring street food or food markets.

Location:

Noon Academy #1147 2nd floor KP ICON, 12th Main, 100 Feet Rd, HAL 2nd Stage, Bengaluru, Karnataka 560038 099020 28393

https://goo.gl/maps/Y6oqxYNGP17vKEGy5