Concurrency Swift + Combine with John Sundell training
Last updated on November 30, 2023 at 4:40 PM
Join John Sundell, creator of Swift by Sundell, for a full-day training workshop all about concurrent programming in Swift — including Swift’s new concurrency system, the async/await syntax, and Apple’s Combine framework. Learn the fundamentals of Combine, Swift concurrency, and various reactive and asynchronous programming paradigms. Topics include how to build increasingly complex data pipelines, how to perform common tasks like network calls using both Combine and async/await, and how to architect and test various kinds of asynchronous code.
The goal of this workshop is to prepare you for using Combine and Swift’s built-in concurrency system to build production apps for iOS and Apple’s other platforms. It’s primarily designed for developers with little to no experience with either Combine or other reactive programming frameworks (including ReactiveCocoa or RxSwift), and will cover both basic and advanced techniques.
If you enjoy the Swift by Sundell website, podcast and videos — then you’ll love this hands-on workshop!
This training is organized by Swift Paris Trainings (aka Greg Lhotellier) in partnership with Delicious Insights.
- World-renowned expert trainer
- Multiple hands-on projects
- State-of-the-art tech
- Latest best practices
The Concurrency Swift + Combine with John Sundell workshop empowers trainees to:
- Get familiar with Combine’s various APIs and operators.
- Learn the fundamentals of building Combine pipelines, focused on iOS-specific use cases.
- Understand how Combine can be used to solve common asynchronous problems, such as writing concurrent code, orchestrating database operations, observing events, and performing network calls.
- Explore various ways to architect and build robust data flows using Combine.
- Learn how async/await relates to Combine, and what it means for Swift to have built-in support for concurrency.
- Discover Swift’s new concurrency system, including actors, structured concurrency, and async sequences.
- Explore how Combine and async/await can be mixed within an app, as well as how those technologies can be made compatible with existing asynchronous code.
- An introduction to reactive programming and its core concepts.
- An overview of Combine’s API, including its built-in publishers, subjects, and operators.
- Building data pipelines by applying operators to publishers.
- Bridging the gap between Combine and closure-based code, and how to refactor existing code using Combine.
- Working with concurrent, multi-threaded code using Combine.
- Integrating Combine with both UIKit and SwiftUI, using tools like ObservableObject and @Published properties.
- Unit testing Combine-based code.
- An introduction to async/await.
- Structured concurrency and performing multiple async tasks in parallel.
- Using async streams and sequences, and how those relate to Combine.
- Using actors to solve data races and to structure concurrent systems.
- Bridging the gap between Combine, async/await, and closure-based code.
- Unit testing async/await-based code.
As a file?
John Sundell is the creator of Swift by Sundell. During the past three years, he’s helped over a million developers level up their skills through over 500 freely available articles and podcast episodes, and by speaking at top tech conferences around the world.
With over a decade of professional software development experience, working for companies like Volvo and Spotify — he’s now working with several teams of various sizes, to help them improve their skills, their code, and the products that they ship.
His goal is always to help the Swift and iOS developer communities as much as he can, to share his experiences working on all sorts of apps and software products, and to help others get more out of their work as software developers.
Want a bespoke training?
Need this training in-house, using our proven curriculum or going full bespoke? Fear not: we got this!
All our trainings are available in-house and can be tailored to your needs (subject to trainer’s approval). The pricing on this page for in-house training assumes no curriculum change.
When going bespoke, a customization fee is to be expected, which will naturally vary depending on just how much tailoring your needs would require. Once we hash this out together, our trainers will estimate the workload for it so we can issue a tight quote for you.
Choose your adventure
- On location at your office or third-party venues, anywhere in the world
- Remotely via Zoom or Teams
- Hybrid, depending on your trainee’s on-location or remote requirements or preferences
A wealth of benefits
- Questions during an in-house training obviously focus on your own business needs
- Our trainer can often do some quick, free consulting during questions, breaks and informal discussions
- When at the office, your teams *use their regular work environment and can access their actual projects (We can sign an NDA for looking at your codebases when fielding questions, if need be).
- It’s usually a lot cheaper to pay for just the trainer’s travel expenses than for all your trainees’.
- Even for remote trainings, when your trainee count gets close to our capacity thresholds (usually 5 and 10 persons), the core teaching cost is usually cheaper than having them attend a pre-scheduled, multi-client session.
We agree! 😊 Use the link below to send a qualified query our way, we’ll get back in touch in no time.
The training takes place entirely in English, so a sufficient spoken understanding of English is mandatory.
Trainees must also have at least a few years of experience in developing iOS apps with Swift and SwiftUI or UIKit, and basic proficiency with Git and command-line tools. We emphasize that this training is not intended for beginners, but targeted at people with prior professional experience of app development with Swift on iOS. It is also not the best fit for people with lots of experience writing RxSwift or ReactiveCocoa code, as a significant share of the training will cover similar reactive programming concepts.
There is no pre-requisite for this training course (as in, verifiably acquired knowledge, through degrees, certifications, tests, etc.).
- Every session is held synchronously, “live,” including remote sessions. This is not about pre-recorded videos.
- We are currently not scheduling new multi-client in-room sessions before, at the earliest, April 1st, 2022.
- Comprehensive course material is provided, acting as a common thread. It usually includes numerous slides and starter codebases or repositories for every exercise and lab.
- Trainees can ask questions at any time.
- Sessions always alternate between theory and hands-on labs, in short intervals (5 minutes to 1 hour).
- Hands-on periods rely on real-world use-cases (which can be bootstrapped through starter codebases, Git repositories or online assignment labs).
- Hands-on periods may be completed individually or as sub-groups that may vary from one period to the next, to foster pair programming and collaboration.
- Remote sessions use a Zoom recurring meeting, accessible through a provided link using both the installed app and the pure-web, no-install client. They mostly use features such as video thumbnails, screensharing, chat, breakout rooms and possibly quizzes, annotations and whiteboards.
Deliverables & assessments
- Every session half-day requires attendance signing (paper sheet or digital tool). For remote sessions, should a trainee fail to submit their entire attendance sheet in due time, Zoom participant logs will be considered authoritative.
- At the beginning of every day’s first period, we run a “debrief”: during about half an hour, we help collectively resurface skills and knowledge first tackled on the previous day. This helps put everyone back “in the zone,”, consolidate learning and boost group dynamics.
- Throughout the course, assessment of skill acquisition is done through the successful completion of hands-on labs (exercises, mini-projects, labs, use cases, etc.). Interactive quizzes may supplement this. The trainer remains available for any question during hands-on periods.
- Should a trainee exhibit significant difficulty, the trainer may opt to provide one-to-one mentoring for a while using the trainee’s computer as a working base. This also applies to remote sessions using Zoom’s dedicated features (e.g. one-to-one / individual assistance).
- When the session ends, every trainee may request a completion certificate (or at least attendance certificate) and, for remote sessions financed by a French institutional entity, we issue a standardized completion certificate in order for financing to be able to proceed smoothly.
- Once the training is over, every trainee receives a link to an online “hot” feedback survey, so they can express, among other things, whether they feel they achieved the stated goals of the training (or believe these will be achieved in the short term).
Trainees work throughout the workshop with various supporting material:
- Sample Xcode projects for every assignment / challenge.
- Slides and live demos by John.
At the end of the workshop, they get a full copy of all supporting material.
Acquired skills are assessed throughout the session, looking at the success rate of interactive exercices (both autonomous and collaborative variants).
Hardware & software requirements
Use a sufficiently powerful laptop, properly set up (in particular, having followed whatever training-specific setup guide might have been linked to in the summons e-mail or training’s web page).
This laptop must be equipped with a webcam, microphone and audio output (preferrably using a headset or earphones, to avoid feedback).
Use an internet access with a minimal bandwidth of 1Mbps both ways, with an ideal minimum of 5Mbps (test your bandwidth here)
Be able to run Zoom, either as a regularly installed software, or through their 100% web-based client. You can verify your installed client works fine using this test.
Every trainee must show up with:
an Apple computer powerful enough to run Apple development tools at a comfortable level of performance.
Xcode’s latest non-beta version installed.
Registration & deadlines
Regardless of the modalities you’re looking for (single- or multi-client, in-room or remote), your initial request (for quotation or contract) should be made online from the training’s web page. You can find further up contract request links for every available multi-client session, a proposal request button for a single-client session, and for any other enquiry can use the contact button further below. Please favor our online forms as they speed up processing by avoiding numerous e-mail back-and-forths in order for us to get all your necessary information.
For multi-client, fixed-date sessions, we reply to quotation or contract requests within at most 2 business days (and usually within minutes). For single-client, custom sessions, we usually get back to you within 3 business days to fine-tune your requirements and create a bespoke offer.
The e-mails we send to provide quotations or contracts, as well as our online training pages, provide a link to an online survey prospective trainees can use for fit-for-needs assessment; this information should get to us ASAP, ideally before contract signing, so we can verify our training offer is a good match for the audience.
Summons are sent by e-mail no later than 7 days prior to the session, at which time a potential cancellation decision (usually because two few trainees registered) is made. If the session is guaranteed ahead of that deadline, we can send your summons earlier at your request.
For multi-client sessions, you can register online (requesting a contract and sending it back signed by e-mail) until the day before the session starts, provided the required amount of seats remain free. If you finalize your registration after the usual summons-sending deadline, your summons are sent immediately by e-mail.
However, when French nationals contractualize with us in their personal capacity, French law mandates a withdrawal period (10 calendar days for in-room sessions, 14 calendar days for online sessions). In order to allow such clients to register later than this, they are provided an opt-in choice in their contract request online form to waive their withdrawal rights if the schedule requires it.
For French client entities applying for third-party financing (e.g. OPCOs, Pôle Emploi, Regions, EU), it is imperative that financing agreements be sent to Delicious Insights no later than the last day of the training session. Should financing be denied or only partially provisioned, the client is liable for payment of the balance of the fee.
You can find more information on the details of registration, cancelling and getting refunds in our Terms of Sale.
Disabilities & special needs
The French law dated September 5, 2018 for “freedom to choose one’s professional future” aims to facilitate accessing and retaining a job for people with disabilities or special needs.
Delicious Insights is very keen to help everyone, regardless of their particulars, move forward professionally.
We can often adapt the modalities of our trainings to fit your needs: let’s just review your situation together.
Do feel free to get in touch with our point person for Disabilities, Christophe Porteneuve, by e-mail or phone.
Do feel free to get in touch with our point person for Disabilities, Christophe Porteneuve, by e-mail at firstname.lastname@example.org or phone at +33 662 059 656.
Financing your training
If you work at a French company, there is a wide array of options for helping you finance professional training. We’ll assume you then speak French (or the relevant person at your company does), so you should direct them to the French version of this page (use the language link at the end of the top navigation bar) our our French page about financing so they get all the information they need.
Otherwise, depending on your company’s location, there might be other financing helps available. Your HR department likely knows about it.
At any rate, a training can be handled like any other service: we invoice your company directly, and you pay us by bank wire within 30 calendar days (“30net” terms).
Need an in-house / custom training?
If you’d like to get a version of this tailored to your needs, in our office or videoconference setup, remotely or anywhere in the world, let us know what your needs are.
Need a quotation?
Get in touch
Don’t fret, we’re sure to have answers to help put your mind at ease and get a clearer picture. So let’s talk!Get in touch