\
0:00 Introduction
6:00 A bit about me
7:01 Installing Go
7:52 Installing Visual Studio Code
9:21 Installing Make
10:49 Asking for help
12:04 Mistakes. We all make them.
, the go keyword, and WaitGroups\
13:10 What we’ll cover in this section
14:14 Creating GoRoutines
20:48 WaitGroups to the rescue
29:27 Writing tests with WaitGroups
36:22 go-concurrency-0240-goroutines-4
38:47 Challenge working with WaitGroup
41:12 Solution to Challenge
Conditions, Mutexes, and an Introduction to Channels\
46:13 What we’ll cover in this section
50:34 Race Conditions an example
55:45 Adding to our code
59:11 Testing for race conditions
1:02:51 A more complex example
1:16:06 Writing a test for our weekly income project
1:19:39 ProducerConsumer - Using Channels for the first time
1:27:16 Getting started with the Producer - the pizzeria function
1:37:13 Making a pizza the makePizza function
1:48:00 Finishing up the Producer code
1:55:29 Creating and running the consumer ordering a pizza
2:02:51 Finishing up our ProducerConsumer project
4.A Classic Problem The Dining Philosophers\
2:07:30 What we’ll cover in this section
2:09:24 Getting started with the problem
2:15:19 Setting up our mutexes
2:21:05 Finishing up the code
2:30:11 Trying things out
2:32:20 Adding a delay to let a philosopher think
2:34:47 Challenge Printing out the order in which the philosophers finish eating
2:35:49 Solution to challenge
2:39:33 Writing a test for our program
, and another classic The Sleeping Barber problem\
2:45:02 What we’ll cover in this section
2:49:07 Introduction to channels
3:02:56 The select statement
3:15:08 Buffered Channels
3:21:26 Getting started with the Sleeping Barber project
3:26:59 Defining some variables, the barber shop, and getting started with the code
3:35:21 Adding a Barber
3:48:47 Starting the barbershop as a GoRoutine
3:55:10 Sending clients to the shop
4:03:03 Trying things out
Project - Building a Subscription Service\
4:07:14 What we’ll cover in this section
4:08:34 Setting up a simple web application
4:16:35 Setting up our Docker development environment
4:21:55 Adding postgres
4:30:07 Setting up a Makefile
4:34:27 Adding sessions & Redis
4:39:06 Setting up the application config
4:43:46 Setting up a route & handler for the home page, and starting the web server
4:50:12 Setting up templates and building a render function
5:08:45 Adding session middleware
5:10:52 Setting up additional stub handlers and routes
5:15:54 Implementing graceful shutdown
5:22:32 Populating the database
5:25:10 Adding a data package and database models
5:32:13 Implementing the loginlogout functions
Email Concurrently\
5:46:05 What we’ll cover in this section
5:47:46 Getting started with the mailer code
6:06:14 Building HTML and Plain Text messages
6:13:25 Sending a message (synchronously)
6:17:52 Getting started sending a message (asynchronously)
6:25:38 Writing a helper function to send email easily
6:27:30 Sending an email on incorrect login
6:30:26 Adding cleanup tasks to the shutdown() function
a User and Displaying Plans\
6:33:28 What we’ll cover in this section
6:34:29 Adding mail templates and URL signer code
6:39:49 Starting on the handler to create a user
6:48:56 Activating a user
6:54:56 Giving user data to our templates
6:57:38 Displaying the Subscription Plans page
7:10:15 Adding a route and trying things out for the Plans page
7:17:00 Writing a stub handler for choosing a plan
Concurrency to Choosing a Plan\
7:20:23 What we’ll cover in this section
7:21:24 Getting the plan id, the plan, and the user
7:29:04 Generating an Invoice
7:38:45 Generating a manual
7:59:56 Trying things out, subscribing a user, updating the session, and redirecting
\
8:12:08 What we’ll cover in this section
8:13:01 Setting up our tests
8:21:28 Testing Routes
8:29:29 Testing the Renderer
8:41:09 Modifying the data package to make it testable
8:55:18 Implementing the PlanTest type
8:59:44 Getting started testing Handlers
9:14:20 Testing the Login Handler
9:28:14 Testing a handler that uses concurrency