Hyperledger Course

Learn to develop Network Applications on Hyperledger Fabric & Composer Technology

Last updated 2022-01-10 | 4.5

- Develop Hyperledger Blockchain Applications using Composer Framework
- Model the Blockchain Applications using Composer modeling language
- Evaluate if a business application will benefit by adoption of Distributed Ledger Technology

What you'll learn

Develop Hyperledger Blockchain Applications using Composer Framework
Model the Blockchain Applications using Composer modeling language
Evaluate if a business application will benefit by adoption of Distributed Ledger Technology
Develop front end (Client) applications using Composer API
Leverage Composer REST Server to design a web based Blockchain solution
Describe the various components of Hyperledger Fabric Technology (Peers
Orderer
MSP
CA ...)
Design Hyperledger Fabric Composer Business Network Application (NOT the infrastructure)

* Requirements

* Student should have hands on experience with Javascript *or* Java *or* NodeJS
* Basic working knowledge of Web Applications (HTTP
* REST)
* Student must be comfortable in learning new design patterns & an architectural paradigm
* Basic knowledge of concepts of Blockchain
* A decent computer & internet connection
* Good to have : Docker
* Unix commands
* NodeJS

Description

PS: Please READ all the points before proceeding


***Composer - DEPRECATED - it is NO more supported for Fabric updates***


But it is still a GREAT way to learn Fabric Blockchain fundamentals & for carrying out POC. For production grade apps It is suggested that you take a look at my course "Mastering Chaincode Development using GoLang ...."

  1. Please do NOT join the course if you are NOT comfortable with coding

  2. Focus of the course is Composer based application development. Course will NOT teach you how to use ALL the various utilities/tools for hypereldger infrastructure component setup.

  3. Course is NOT for Operators or Infrastructure engineers *but* you are welcome to try as it would help you in building a strong foundational knowledge. Take a look at my other Fabric courses if you are an Operations person.

  4. You MUST have a basic understanding of Blockchain technology. Do take a preview before joining.

  5. This course will NOT teach you Javascript or any Javascript framework to develop UI

  6. You MUST be comfortable in installing software & tools on your machine. Course requires many tools to be installed.

  7. Please read the Pre-Requisites before signing up

  8. Try out the lectures in preview - if you have difficulty understanding the lectures/accent....I request you NOT to join 

If you are still with me lets continue :-)

Background

Demand for Blockchain technologists is going up as multiple enterprises (& startups) are looking to achieve efficiency or/and create new business models enabled by the Blockchain technologies. Bitcoin & Ethereum have proven to the world that Blockchain technologies can change the way we do business. The challenge with these technologies is that they were both built ground up for public domain applications and are not always suitable for building an enterprise grade application. Hyperldger project, a Linux foundation initiative is driven by the industry leaders to build Blockchain technology(s) that would provide a platform for creating Enterprise Blockchain Applications.

Business | Enterprise Blockchain Applications

The obvious question you may have at this point is, what do I mean by "Enterprise Blockchain Applications". The idea is that Blockchain technology for Business (or enterprise) would need to have certain characteristics that do not necessarily apply to the public domain Blockchain technology such as Ethereum. Characteristics that are desired

  • Permissioning, 

  • Network support | operation

  • Smart contract management

  • Control on how transactions are validated

  • Trust management

  • Scaling, Performance, Throughput

  • ...

Hyperledger Fabric | Composer Framework

Hyperledger Fabric is a "Distributed Ledger Technology" a.k.a. Blockchain technology that has been built ground up with the needs of the "Business Blockchain Applications" in mind. Composer is a development framework that accelerates the development of Business Blockchain applications of Fabric platform.

This course will teach you how to develop Fabtric Blockchain Application using Composer. 

Course Approach?

This course takes the approach of “Learn by doing”. Students are encouraged to try out all aspects of the technologies on their own after each lecture. Almost all of the concepts discussed in the lectures are shown in action by way code samples etc. The demo code used in the lectures is available for download from GitHub so that students can change the code to try out new things.

Multiple quizzes in each section will validate student’s knowledge. Coding exercises will help them understand the concepts better & gain confidence.

Course Outline

#1 Build a foundation - covers Blockchain concepts + Hyperledger project-fabric-composer

#2 Introduction to  Hyperledger Fabric & Composer Technology

#3 Setting up the development tools - (Docker, NodeJS, Fabric, Composer tools ...)

#4 Fabric under the hood - student will learn how the Fabric technology works

#5 Learn to use the Composer tools   (Modeling, Yo generators, REST Server, CLI, Playground  ...)

#6 ACME Airline Blockchain Application : We will develop a Network application for this fictitious Airline

  • Business network modelling

  • Smart contracts development

  • Transaction processors - coding in Javascript

  • Client side code - in Javascript

  • Participant management

#7 Composer SDK/API

#8 Transaction flow in Fabric - unravel some of the mysteries :)

How can this course help you?

Many enterprises today are embarking on building Blockhain applications for their business domain. At this time the focus is on trying out the technologies by way of Proof of Concepts | Pilots. This course can put you on track to build the pilots/PoC in a very short period of time (~3 weeks)

Information of Hyperledger frabric (& Composer) is available online and freely.....so why take this course?

  • There are known challenges : The author of this course have gone through the development cycle many times and have taken care of describing the known challenges (& pitfalls) and solutions so, students won't struggle....& spend time on learning rather than searching for solutions on google :)

  • Learning curve is steep : Although information is available it would take new students considerable amount of time to digest & understand. The course has been designed to accelerate the learning process without overwhelming the students with too many details.

  • Coding guides | experience is limited : For every topic discussed in the course, there is a sample code. Seeing things in action and trying out the code will accelerate the learning

  • Time to market : Taking this course will prepare the student for the challenge - delivery of a working Fabric PoC/Pilot in 3 weeks is the goal :)       [Assuming student spends 2 Hour/Day]

Who this course is for:

  • Technologist seeking to expand their knowledge into Blockchain
  • Architects looking to leverage Distributed Ledger Technology for addressing Business Problems | Opportunities
  • Developers interested in learning Blockchain application development
  • Developers willing to learn Blockchain by doing, that is by coding
  • Experimenters curious to learn how Blockchain technology can change the way we do business
  • Entrepreneurs with technology background interested in realizing their business idea on the Blockchain

Course content

13 sections • 128 lectures

Introduction to the Course Preview 05:04

Introduction to the course.

Download PDF Link + Course Information and Updates Preview 00:16

This lecture has information about the course + a list of updates. Students are suggested to check this article often.

What is Hyperledger? Preview 05:50

The term "Hyperledger" is used in different contexts......this causes confusion. In this lecture students will learn about Hyperledger project and its relationship with multiple  Hyperledger "Distributed Ledger Technology" initiatives.


Distributed Ledger Technology & its Challenges Preview 07:44

At the end of this lecture, students should be able to explain (conceptually)

  • What is Distributed Ledger Technology
  • How DLT benefits the businesses
  • Typical realization challenges associated with DLT

Hyperledger & Distributed Ledger Technology

Hyperledger Fabric : A DLT for Business Applications Preview 06:51

Students will learn about 4 characteristics desired in a DLT technology geared towards adoption by businesses. By end of this lecture students will have a high level understanding of why Hyperledger Fabric is suitable for building DLT Business applications.

Hyperledger Fabric : DLT for Business

Quiz will check student's understanding of the characteristics of "DLT for Business"

Assets, Chaincode & Ledger Preview 02:44

Covers the Hyperledger Fabric concept of:

  • Assets
  • Chaincode
  • Ledger

Assets, Chaincode and Transactions

Checks student's understanding of the relationship between assets, chaincode and transactions

Permissioned Network, Members & Membership Service Provider Preview 05:10

Permissioned Network, Member & Membership Services

Nodes and Channels Preview 06:08

In this lecture students will learn 

  • the role of a node in Blockchain technologies. 
  • how Hypreledger fabric nodes are different from the nodes in a public Blockchain network
  • different types of nodes in HL Fabric
  • what is channel & how it is used

Nodes and Channels

Check student's understanding of concept of Hyperledger Fabric Nodes and Channels

Hyperledger Fabric Composer Overview Preview 05:39

Composer Framework provides a set of tools that make it easy for businesses to create Hyperledger Fabric applications. By the end of this lecture students will:

  • understand the benefits of using composer
  • tools offered by composer

Hyperledger Fabric Composer Overview

This quiz will check student's understanding of the Hyperledger Composer tool set.

Frequently Asked Questions | Common Issues Preview 02:28

Lecture covers the common installation issues.

Development Machine Specifications & IDE Preview 02:15

Students will need a decent development machine for installing the tools used in this course. They are also expected to code Hyperledger Fabric Applications. This lecture provides information on:

  1. Minimal configuration for the development machine
  2. Machine/Configuration used for the development of the course material
  3. Integrated Development Environment - Visual Studio Code

Composer Dev Tools Installation Preview 06:13

Walk through of instructions for the installation of the:

  • Pre-Requisites for the composer tools
  • Composer Tools
    • CLI
    • Yo Generator
    • REST Server

Exercise: Validate the Composer Development Environment Preview 00:44

This exercise is to ensure that the Student's development machine has all the required composer tools installed on their machine.

Install Docker or Docker Toolkit Preview 07:17

The Fabric Runtime is available as Docker container images. Students MUST install appropriate version of Docker on their machine before proceeding any further.

FAQ: Vagrant Setup Preview 00:20

Covers some of the common issues with Vagrant based setup.

Native Vs. Virtual Machine Development Environment Preview 04:08

Students can install Hyperledger dev environment natively or in a virtual machine. This lecture will help the student evaluate the options and make a decision on whether to install Hyperledger on

  • their host machine
  • or in a virtual machine

Virtual Machine based Hyperledger Dev Setup Preview 04:41

Explains how the setup will work

Setting up the Virtual Machine using VirtualBox+Vagrant Preview 08:47

In this lecture students will learn how to :

  1. Install VirtualBox Hypervisor
  2. Install Vagrant
  3. Execute the common Vagrant command

Exercise: Tryout the Vagrant Commands Preview 00:36

In this exercise students will try out some commands to become comfortable with Vagrant

Installation of Fabric Tools Preview 05:19

Shows the steps students need to follow for the installation of the Hyperledger Tools on VM

Post Installation Steps Preview 07:22

Shows the steps students need to carry out for:

  • Pulling the Docker images for fabric
  • Creating the PeerAdminCard
  • Validating composer tool
  • Connecting from Docker client on host with Docker Daemon on VM

Frequently Asked Questions | Common Issues Preview 07:48

Lecture covers the common installation issues.

Install CURL and Cygwin (Windows only) Preview 05:05

To install the Fabric tools on Windows/Mac OS Students will need to install the Curl tool on their development machines. This lecture will provide a walk through of instructions for installing Curl.

The Fabric tools use Bash scripts for starting/stopping the Fabric setup. On windows platform there is no in built support for executing the Bash scripts. Students will use the instructions in this lecture to install Cygwin that would provide the capability of executing Bash scripts on Windows machines

Linux/Ubuntu & AWS: Setup of Fabric Development on Local & Cloud VM Preview 09:35

Students may use the Hyperledger Fabric Tools on Ubuntu. This lectures demonstrates the steps needed for installation of the Fabric tools on Amazon AWS Ubuntu/EC2 instance.

Mac OS: Setup of Fabric Development Environment Preview 03:00

This lecture will demonstrate the steps that students need to take in order for setting up the fabric development environment on Mac OS.

By end of this lecture it is expected that students will be comfortable in setting up the development environment on their own Mac OS Machine

Windows : Fabric development environment setup Preview 04:21

Walk through of the steps needed for installing Fabric Development environment on a Windows machine.

Using the instructions student should be able to:

  1. Install the Fabric tools
  2. Address known/common problems

How to use the Dev Tools Preview 03:54

In the last section(s) you student's installed a number of tools on their development machines. In this lecture students will get an overview of how the those tools will be used in the rest of this course.

Development Environment Topology Preview 05:28

In the last section I have given instructions for setting up the Fabric development environment. It is expected that students have used the instructions to setup their own machines. This lecture gives an overview of the Development environment topology that will be used in the rest of this course.

Development Environment Scripts Preview 04:39

In this lecture students will learn about the scripts that they will use for:

  • Launching the dev environment
  • Stopping the dev environment
  • Suspending & Restarting the dev environment

Exercise: Practice Start, Stop, Suspend, Restart Preview 00:32

This exercise will familiarize the students with various dev tool scripts.

Ledger Implementation Preview 09:34

In this lecture students will learn how HL Fabric manages the persistence of transactions and state data for the assets.

Dev Environment Walkthrough: Peer & CouchDB setup Preview 04:01

This lecture  provides the walk through of the Peer and CouchDB setup

Ledger Implementation

Checks student's understanding of the Ledger implementation

Peers Nodes : Anchors and Endorsers Preview 05:43

In this lecture students will learn 2 new concepts:

  • Anchor Peers
  • Endorsing Peers or Endorsers

Consensus is achieved in Hyperledger fabric DLT by way of the endorsements, so it is important for students to understand how it works.

Anchor Peers & Endorsing Peers

Tests the student's understanding of the concept of Endorsers and Anchor peers

Clients Node: Endorsement Policies Preview 05:29

Clients may be thought of as the front end applications with which participants interact. Client nodes initiate the transactions. The transaction initiated by the client goes through an endorsement process before it becomes part of the Blockchain data.

In this lecture students will get an overview of how the endorsement process work.

Client Peer & Endorsing Policies

Orderer Nodes Preview 03:13

Orderer provides the communication backbone to the Hyperledger Fabric Blckchain. On this lecture students will learn about the role of the orderer and its implementation.

Orderer Nodes

A set of questions that students can use for checking their understanding of the Orderer nodes

Membership Service Provider & Certification Authority Preview 06:49

Hyperledger Fabric is a Permissioned DLT. Membership Service Provider is an abstract component that is responsible for providing the authentication and authorization service. In this lecture students will learn about the:

  • Certiciation authorities
  • Membership service providers

Membership Service Provider & Certification Authority

Dev Environment Walkthrough: Orderer and CA Server Preview 02:18

Walk through of the setup of the containers for the 

  • Orderer
  • CA Server

Chaincode Development Preview 04:53

Provide a high level view of the chaincode:

  • Structure
  • Workflow
  • Execution Runtime

Chaincode Development

Checks student's understanding of the chaincode development

FAQ: Composer Tools Preview 00:43

This article contains answers to some Frequently Asked Questions

Fabric Composer Playground Preview 09:52

In this lecture students will get a walkthrough of the online Composer Playground.

Composer Playground

Checks student's understanding of the Playground

Yeoman Hyperledger Generators Preview 04:24

To assist the developers with coding of Business Network Applications, Composer offers a generator that can generate the scaffolding for 

  • Angular application
  • Business Network Application
  • Model

Yo Generators

Participant Roles and Business Network Cards Preview 09:17

Composer tools and front end applications need access to the Business Network Application installed in the Fabric runtime. The configuration and credentials (certificate & keys) are managed by way of cards. In this lecture students will learn about participant roles and network cards.

Participant Roles and Business Network Cards

Checks students understanding of the roles and network cards

Composer CLI Tool - Deploying a Network Application Preview 09:12

Students will be using the Composer Command Line Interface tools for carrying out various development and network application development activities. In this lecture students will learn some of the common commands

Composer CLI Tool - Network Application Management Preview 05:25

This lecture demonstrates the use of the composer CLI command line tool for managing a business network application. Students will see the commands for administration in action as part of the walkthrough.

Composer CLI Tool

Exercise: Create & Deploy Network Application Preview 00:25

This is a practice exercise to ensure that student is able to use the composer tool commands to carry out development and administration activities.

REST Server Overview Preview 09:36

In this lecture students will learn about the composer rest server tool. REST server front ends the Fabric Runtime to expose the various transactions. Front end or UI application connects to the REST server for invoking the transactions.

REST Server Overview

Checks students understanding of the REST server tool

REST Server Security Preview 07:11

In the last students learned about the Composer REST server tool. In this lecture students will learn about certain aspects of REST server that may not be well suited for the application being developed.

REST Server Security

It is important for the students to understand the security implications of the REST server. This lecture will check students understanding of the security implications of the REST server

Skeleton Angular Application using Yo Preview 09:01

Developers of fabric composer toolset suggest an architecture that uses the REST server for connecting to the Business Network Application. This lecture describes the architecture and then walks through the process of generating an Angular skeleton application

Skeleton Angular Application using Yo

Checks if student understands the:

* Suggested architecture

* How to use the Angular based skeleton app

Composer SDKOverview Preview 04:43

In this lecture students will learn about the various modules available in the composer SDK. They will also learn about the type of interfaces that are available. Intent is not to deep dive but give an idea.

Composer SDK Overview

Tests students understanding of the SDK modules

Case Study: ACME Airlines Preview 04:00

This lecture talks about a fictitious airlines that will be used as a case study throughout this section to model a Business Network Application

Modeling Language Files | Namespace Preview 05:42

In this lecture students will learn about the modeling language. Lecture will provide a walk through of how model application is created using the yo hyperledger composer generator. Lecture will cover the concept of Namespaces

Modeling Language Files | Namespace

Checks student's understanding of "what is composer modeling language" and the structure of the model files

Defining the Resources Preview 07:38

Lecture covers the following modelling language keywords:

  • asset
  • Identified By
  • enum
  • default
  • optional

Defining the Resources

Checks students understanding of the concept of Resources

Support for Object Orientation Preview 07:19

Lecture describes the support for object orientation & covers the following modelling language keywords:

  • abstract
  • extends
  • concept

Support for Object Orientation

Tests student's understanding of why modelling language is considered objet oriented.

Modeling Arrays Preview 06:39

Modeling language supports arrays. In this lecture, students will learn how to model arrays.

Registries & Relationship between Resources Preview 11:36

At the end of this lectures students will be able to explain:

  1. How the asset data is persisted in registries
  2. Concept of Relationship

Arrays, Registries & Relationships

Checks on student's understanding of the arrays, registries and relationship

Adding the field Validations Preview 10:23

Modeling language allows simple validations to be associated with the String & Number fields. Lecture teaches how to setup such field level validations

Field validations

Tests student's understanding of the field level validations

Resource Registries & Identities +Exercise Preview 04:27

The Acme airline model built till now have an issue...this lecture explains the issue and the solution to the issue. At the end of this lecture, students need to implement the suggested solution.

Modeling the Transactions Preview 10:36

All transactions need to be modeled in composer framework. This lecture explains how how to model, coding of the transaction functions is explained in the section on SDK/API

Modeling the transactions

Checks students understanding of modelling of the transactions

Exercise: Fix the code for generating the FlightId Preview 00:36

Exercise to be done by students

Queries Preview 07:54

There are two types of queries that are supported by Composer

  1. Named queries
  2. Dynamic queries

This lecture covers the named queries.

Exercise: Add a set of aircraft queries Preview 00:17

This is an exercise that student are expected to do on their own.

Managing identities for Network Applications Preview 10:57

In an earlier lecture students learned how the participant types (roles) are defined as part of the business model. In this lecture students will learn how instances of Participant types are associated with the identities created on Fabric.

Access Control Language (Part 1 of 2) Simple Rules Preview 14:18

Access control can be implemented in Composer framework in 2 ways:

  1. Declarative
  2. Coding

This lecture explains how the declarative control works for simple rules.

Exercise: Simple Rule for ACMENetworkAdmin Preview 00:40

An exercise for creating a simple rule.

Access Control Language (Part 2 of 2) Conditional Rules Preview 10:36

In the last lecture students learned about the Access Control Language and how it is used for creating simple rules. In this lecture students will learn about Complex rules.

Exercise: Conditional Rule for ACMEPersonnel Preview 00:45

Exercise requires students to define a complex rule.

API : Frequently Asked Questions | Common Issues Preview 00:36

Describes the issues and resolution for some of the common issues

Business Network Card Management Preview 09:08

In one of the previous lectures students learned about the Cards. In this lecture students will learn the API that can be used for managing the cards.

Card Storage API

Admin Connection Class Preview 12:09

Admin connection API is used for establishing a administration connection to the Fabric. Functions available on Admin Connection object are used for managing the Business Network Application. In this lecture student will learn all of the functions available on Admin connection object.

Business Network Connection Class Preview 06:14

Client applications connect to the Fabric/BNA by creating the Business Network Connection object. Functions exposed by the business connection is used for multiple types of interactions. In this lecture students will learn how to create an instance of the business network connection and use it for connecting to the BNA. The functions exposed by this business network connection are available in multiple lectures covered in this section.

Admin & Business Network Connection Class

Submitting a Transaction Preview 08:13

Students will learn all the Classes needed for submitting a transaction to the Business Network Application.

Registries Preview 07:42

Registries have been covered in details in earlier lectures. In this lectures students will learn about the Registry related classes/API.

Resources Preview 06:32

This lecture covers the Resource Class & how instances of Resource class are created using factory class.

Querying the Registries Preview 05:33

In this lecture students will learn how to execute Named queries and Dynamic queries from a client side Blockchain  application.

Querying the Registries

Checks student's understanding of the client side query API

Subscribing to Events Preview 09:56

Lecture describes the mechanisms for subscribing to the events emitted by business network applications. Students will see the event subscription code in action:

  • Client API
  • Composer REST Server

Subscribing to Events

Checks students understanding of the events subscription mechanism

Write a utility to create | delete test data​ for ACME Airline Model

Coding Exercise that will require student to use the various API(s) discussed in the lectures.

Embedded Runtime for Testing Preview 08:01

This lecture shows how students can use the Composer embedded runtime for testing the transaction processor function code.

Embedded Runtime

Tests students understanding of the embedded runtime 

Crash course in Mocha and Chai Preview 09:37

As a good practice all code should be unit tested. Mocha Testing framework & Chai assertion libraries are two most popular packages for managing unit tests. In this lectures students will get a crash course on Mocha & Chai. 

PS: Students are encouraged to do their own research o Mocha/Chai

Writing Unit Test Cases for Network Applications Preview 07:45

Lecture shows how students can use Embedded runtime, Mocha & Chai for creating unit tests for their Transaction processor functions.

Runtime API for Transaction Processing Functions Preview 09:28

The Transaction Processor function code interacts with the runtime by invoking functions on an instance of the API class. In this lecture students will learn about how the functions in the API class are exposed to the transaction processor function. 

Runtime API for Transaction Processing Functions

Checks students understanding of the API class

Exercise: Define the Aircraft Assignment Transaction Preview 00:38

Query invocation in Transaction Processing Functions Preview 04:37

In this lecture students will learn the how to use the query() and buildQuery() functions available in the API class in Runtime module. Lecture also discusses the scenarios under which queries are invoked in transaction processor functions.

Implementing Programmatic Access Control Preview 03:30

This lecture describes how students may implement access control logic in Transaction Processor function.

Emitting events and Integrating with external systems Preview 06:06

In this lecture students will learn:

  • how to emit events from the transaction processor
  • conversion between resource objects and JSON
  • integration with external systems using post() to REST endpoints

Emitting events and Integrating with external systems

Application Design Patterns Preview 09:21

In this lecture students will learn various patterns for creating the Front end (UI) for the Hyperledger Applications:

  1. Rest Server middleware pattern
  2. Custom middleware pattern
  3. Hybrid middleware pattern
  4. Desktop pattern

Application Architecture Patterns

Checks student's understanding of the UI patterns

Securing the REST server with Authentication Strategy Preview 06:12

In one of the past lectures students received an overview of how the REST server can be secured. In this lecture students will learn:

  • How to select the appropriate strategy for their REST server
  • Flow of the LDAP | OAuth Authentication strategies

Walkthrough: Applying OAuth2.0 Authentication Strategy to REST Server Preview 09:16

In this lecture students will learn:

  • about environment variables used by the REST server
  • how to setup script for launching the rest server
  • oAuth provider configuration for GitHub

REST Server Authentication

Checks students understanding of how REST authentication works

Working of Multi User Enabled REST Server Preview 04:51

In this lecture students will learn how the multi-user enabled REST server works. Lecture covers:

  • Call execution flow
  • Trust | Security related architectural considerations

Walkthrough - REST Server Multi User mode Preview 07:21

In this lectures students will learn how to setup the REST server in Multi User mode

  • Github OAuth script created in previous lecture will be extended
  • A MongoDB instance will be created in the cloud & used from REST server
  • At the students will see the setup in action

REST Server Multi User Setup

Create the Design Blueprint for the Fabric Application UI

​You are the lead architect for the UI of a Fabric based business network application. Follow the instructions and design the app. Best of LUCK !! PS: There is no Right or Wrong Solution Don't forget that Your promotion & bonus depends on the success of this project :)

Model Development: ACME Airline Rewards Application

Congratulations !!!! You have been assigned the responsibility of designing and coding a Partner Rewards Application. This is your opportunity to standout and shine in front of the ACME management. Big bonus and a promotion is guaranteed if this initiative is successful. All the Best

Bonus Lecture + Discount offer Preview 00:37

What next - Goodbye lecture