WEBVTT 00:08.540 --> 00:09.110 Hi. 00:09.260 --> 00:10.570 Welcome to the video course. 00:10.610 --> 00:13.790 Go concurrency by Mario Castro Contreras. 00:13.800 --> 00:16.040 A video caused by pact publishing. 00:16.080 --> 00:22.520 I'm Mark Thomas and I'll be Mario's voice for this cause Mario Castro Contreras is a software engineer 00:22.550 --> 00:26.680 who specialized in distributed systems and big data solutions. 00:26.690 --> 00:32.450 He works as a site reliability engineer and now he's focused on containerized solutions and apps using 00:32.450 --> 00:39.900 most of the Google Cloud Suite especially Cuban it is his wide experience in systems and solutions integration. 00:40.090 --> 00:45.080 And he's written many scalable and reliable 12 factor apps using go and docker. 00:45.360 --> 00:49.010 He's designed Big Data architectures for financial services and the media. 00:49.240 --> 00:54.160 And he's written data processing pipelines using event driven architectures entirely and go. 00:54.160 --> 00:56.510 He's also very active in the open source community. 00:56.560 --> 00:59.910 And you can find him on his get hub account with the user named Satan. 01:00.160 --> 01:06.650 In the past he's also written mobile applications and back ends in Java Mario is passionate about programming 01:06.650 --> 01:10.610 languages and he finds the best balance between fun and productivity and go. 01:10.610 --> 01:15.060 However recently he enjoys writing in rust and embedded systems in C.. 01:15.110 --> 01:19.240 He's also passionate about road cycling and winter sports cool. 01:19.350 --> 01:24.930 So let's not talk about go go is a multi paradigm programming language that is built in facilities to 01:24.930 --> 01:30.720 create concurrent applications concurrent programming is a large topic but is also one of the most interesting 01:30.720 --> 01:34.860 aspect of the go language goes concurrency primitives. 01:34.860 --> 01:40.020 Make it easy to construct streaming data pipelines to make efficient use of IO and multiple CPE use 01:40.740 --> 01:45.480 concurrent design patterns allow complex systems with multiple components. 01:45.510 --> 01:50.660 In other words we could say that processes or routines can start run and complete simultaneously. 01:50.670 --> 01:55.430 This doesn't have anything to do with the actual execution of the code just the design of the system. 01:55.650 --> 02:00.030 Thus concurrency raises the efficiency of the applications you develop. 02:00.060 --> 02:02.360 Now let's look at our course. 02:02.700 --> 02:04.800 It's divided into two sections. 02:05.010 --> 02:10.260 So our first section explains with more detail the CSP concurrency model used in go by going through 02:10.260 --> 02:16.320 some examples using go routines and channels as well as me text isn't things we'd also be using callbacks 02:16.320 --> 02:17.040 here. 02:17.280 --> 02:22.260 Then we'll move on to the second section which introduces you to some of these CSP concurrency patterns 02:22.260 --> 02:27.350 that are idiomatic to the go language by walking through some examples and explanations. 02:27.390 --> 02:32.790 These are small but really powerful patterns so we'll provide a few examples of the use of each of them 02:32.970 --> 02:36.630 as well as some schemas that will make the understanding of each of them easier. 02:36.630 --> 02:37.950 Sounds amazing isn't it. 02:38.130 --> 02:43.050 By the end of this course you'll learn most of the primitives in go to write concurrent apps and develop 02:43.050 --> 02:48.120 some of the classical design patterns with concurrent structures to maximize parallelism. 02:48.120 --> 02:53.730 Also you'll learn some of the typical structures to develop concurrent apps and go you learn how a classical 02:53.730 --> 02:56.870 pattern can become more complex so we needed to work in a concurrent way. 02:57.280 --> 03:02.160 But the idea is to understand go concurrent primitives so the finishes course knowing how to write your 03:02.160 --> 03:05.490 own concurrent design patterns by using the knowledge taken from here. 03:05.490 --> 03:09.480 Or you need to follow through the examples in this course is a computer running any recent version of 03:09.480 --> 03:10.400 go. 03:10.570 --> 03:16.380 While the examples all use go one point seven this course is for intermediate level developers in the 03:16.380 --> 03:18.360 Go programming language. 03:18.360 --> 03:20.760 Knowledge of design patterns is optional. 03:20.760 --> 03:23.790 You're expected to have basic knowledge of programming. 03:23.790 --> 03:25.690 So let's get started right away. 03:25.710 --> 03:28.500 I'm sure you'll be amazed after exploring this wonderful language. 03:28.620 --> 03:29.500 See there.