• Stars
    star
    319
  • Rank 131,491 (Top 3 %)
  • Language
    JavaScript
  • License
    Apache License 2.0
  • Created almost 3 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ultimate Go: Advanced Engineering

CircleCI Go Report Card go.mod Go version

Copyright 2021, 2022, Ardan Labs
[email protected]

Description

This class teaches you how to build a semantically correct blockchain in Go. The implementation of the Ardan blockchain takes inspiration from both Bitcoin and Ethereum. The class is a mix of lecture and coding. During the class you will learn the different aspects of blockchain technology and pair program with the instructor as you build this code base from scratch.

Please look at the wiki for more details.

Licensing

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Learn More

Reach out about corporate training events, open enrollment live training sessions, and on-demand learning options.

Ardan Labs (www.ardanlabs.com)
[email protected]

To attend any of our high-performance tranings check out this link:
https://www.ardanlabs.com/training

Index

Purchase Video

We have not yet produced the video for this class, but to see other Go related classes check out this link.

education.ardanlabs.com

Our Experience

We have taught Go to thousands of developers all around the world since 2014. There is no other company that has been doing it longer and our material has proven to help jump-start developers 6 to 12 months ahead of their knowledge of Go. We know what knowledge developers need in order to be productive and efficient when writing software in Go.

Our classes are perfect for intermediate-level developers who have at least a few months to years of experience writing code in Go. Our classes provide a very deep knowledge of the programming langauge with a big push on language mechanics, design philosophies and guidelines. We focus on teaching how to write code with a priority on consistency, integrity, readability and simplicity. We cover a lot about โ€œif performance mattersโ€ with a focus on mechanical sympathy, data oriented design, decoupling and writing/debugging production software.

Our Teacher

William Kennedy (@goinggodotnet)

William Kennedy is a managing partner at Ardan Labs in Miami, Florida, a mobile, web, and systems development company. Bill has written extensively on the Ardan Labs blog, has written two books, and has trained thousands of developers worldwide in Go. Bill is also a founding member of GoBridge, which is working to increase Go adoption through diversity.

Video Training
Ultimate Go Video
Ardan Labs YouTube Channel

Blog
Going Go

Writing
Running MongoDB Queries Concurrently With Go
Go In Action

Articles
IT World Canada

Video
P99 Talk (2022) - Evaluating Performance In Go
GopherCon Europe (2022) - Practical Memory Profiling
Dgrpah Day (2021) - Getting Started With Dgraph and GraphQL
GDN Event #1 (2021) - GoBridge Needs Your Help
Training Within The Go Community (2019)
GopherCon Australia (2019) - Modules
Golab (2019) - You Want To Build a Web Service?
GopherCon Singapore (2019) - Garbage Collection Semantics
GopherCon India (2019) - Channel Semantics
GoWayFest Minsk (2018) - Profiling Web Apps
GopherCon Singapore (2018) - Optimizing For Correctness
GopherCon India (2018) - What is the Legacy You Are Leaving Behind
Code::Dive (2017) - Optimizing For Correctness
Code::Dive (2017) - Go: Concurrency Design
dotGo (2017) - Behavior Of Channels
GopherCon Singapore (2017) - Escape Analysis
Capital Go (2017) - Concurrency Design
GopherCon India (2017) - Package Oriented Design
GopherCon India (2015) - Go In Action
GolangUK (2016) - Dependency Management
GothamGo (2015) - Error Handling in Go
GopherCon (2014) - Building an analytics engine

Prague Meetup (2021) - Go Module Engineering Decisions
Practical Understanding Of Scheduler Semantics (2021)
Go Generics Draft Proposal (2020)
Hack Potsdam (2017) - Tech Talk with William Kennedy
Chicago Meetup (2016) - An Evening
Vancouver Meetup (2016) - Go Talk & Ask Me Anything With William Kennedy
Vancouver Meetup (2015) - Compiler Optimizations in Go
Bangalore Meetup (2015) - OOP in Go
GoSF Meetup - The Nature of Constants in Go
London Meetup - Mechanical Sympathy
Vancouver Meetup - Decoupling From Change

Podcasts
Ardan Labs Podcast: On Going Series
Mangtas Nation: A Golang Deep Dive with Bill Kennedy
GoTime: Design Philosophy
GoTime: Learning and Teaching Go
GoTime: Bill Kennedy on Mechanical Sympathy
GoTime: Discussing Imposter Syndrome
HelloTechPros: Your Tech Interviews are Scaring Away Brilliant People
HelloTechPros: The 4 Cornerstones of Writing Software

More About Go

Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. Although it borrows ideas from existing languages, it has a unique and simple nature that make Go programs different in character from programs written in other languages. It balances the capabilities of a low-level systems language with some high-level features you see in modern languages today. This creates a programming environment that allows you to be incredibly productive, performant and fully in control; in Go, you can write less code and do so much more.

Go is the fusion of performance and productivity wrapped in a language that software developers can learn, use and understand. Go is not C, yet we have many of the benefits of C with the benefits of higher level programming languages.

The Ecosystem of the Go Programming Language - Henrique Vicente
The Why of Go - Carmen Andoh
Go Ten Years and Climbing - Rob Pike
The eigenvector of "Why we moved from language X to language Y" - Erik Bernhardsson
Learn More - Go Team
Simplicity is Complicated - Rob Pike
Getting Started In Go - Aarti Parikh

Minimal Qualified Student

The material has been designed to be taught in a classroom environment. The code is well commented but missing some contextual concepts and ideas that will be covered in class. Students with the following minimal background will get the most out of the class.

  • Studied CS in school or has a minimum of two years of experience programming full time professionally.
  • Familiar with structural and object oriented programming styles.
  • Has worked with arrays, lists, queues and stacks.
  • Understands processes, threads and synchronization at a high level.
  • Operating Systems
    • Has worked with a command shell.
    • Knows how to maneuver around the file system.
    • Understands what environment variables are.

Important Reading

Please check out this page of important reading. You will find articles and videos around topics related to this repo.

Before You Come To Class

The following is a set of tasks that can be done prior to showing up for class. We will also do this in class if anyone has not completed it. However, the more attendees that complete this ahead of time the more time we have to cover additional training material.

Prep Work

You will get the most out of this advanced Go class if you have taken the Ultimate Go and Service classes first.

The Ultimate Go and Service classes are critical classes to understanding the code in this class.
Ultimate Go Classes
Scholarship

This is a free and great class to learning concepts behind blockchains. Watch videos 1, 2, 6 and 8.
Blockchain Class - Patrick McCorry

Joining the Go Slack Community

We use a Slack channel to share links, code, and examples during the training. This is free. This is also the same Slack community you will use after training to ask for help and interact with may Go experts around the world in the community.

  1. Using the following link, fill out your name and email address: https://invite.slack.gobridge.org/
  2. Check your email, and follow the link to the slack application.
  3. Join the training channel by clicking on this link: https://gophers.slack.com/messages/training/
  4. Click the โ€œJoin Channelโ€ button at the bottom of the screen.

Installing the Training Material

While many of the examples can be done using the online playground (http://play.golang.org), some may find it easier to complete them with their local editor. To do so, you will want to load the training material locally to your machine. From a command prompt, issue the following commands:

$ cd $HOME
$ mkdir code
$ cd code
$ git clone https://github.com/ardanlabs/blockchain
$ cd blockchain

All material is licensed under the Apache License Version 2.0, January 2004.

More Repositories

1

gotraining

Go Training Class Material :
Go
11,851
star
2

service

Starter-kit for writing services in Go using Kubernetes.
Go
3,575
star
3

conf

Package conf provides support for using environmental variables and command line arguments for configuration.
Go
258
star
4

kit

Set of common packages used by all or most projects at ArdanLabs
Go
238
star
5

python-go

Training material on how to leverage Python and Go together to solve different problems.
Go
152
star
6

gotour

Go
100
star
7

practical-go

This repo contains the material for the Practical Go class.
Go
88
star
8

training-ai

Jupyter Notebook
72
star
9

smartcontract

Go
46
star
10

encore

Go
38
star
11

graphql

Simple GraphQL client for executing mutations and queries.
Go
29
star
12

service3-video

Go
26
star
13

ai-training

Go
19
star
14

mapstructure

Package mapstructure is a Go library for decoding generic map values to structures and vice versa, while providing helpful error handling.
Go
18
star
15

tcp

Package tcp provides the boilerpale code for working with TCP based data. The package allows you to establish a TCP listener that can accept client connections on a specified IP address and port. It also provides a function to send data back to the client.
Go
15
star
16

liarsdice

Platform for the liar's dice game
Go
14
star
17

udp

Package udp provides the boilerpale code for working with UDP based data. The package allows you to establish a UDP listener that can accept data on a specified IP address and port. It also provides a function to send data back to the client.
Go
11
star
18

chat

Chat server for Pearson live traning
Go
9
star
19

dgraph

Project built on Dgraph, GraphQL and Go for teaching.
Go
9
star
20

ethereum

Ethereum provides higher level Go API's for writing applications and smart contracts on the Ethereum blockchain
Go
8
star
21

refactorshow

Code from refactoring show by episode
Go
8
star
22

timezone

Package timezone provides two ways to retrieve the timezone for any latitude,longitude position.
Go
8
star
23

linkchecker

Recursively crawls a website and checks that URLs return 200.
Go
8
star
24

rusttraining

Rust code for blogs and training
Rust
8
star
25

service5-video

Version 5 of the Service Class
Go
8
star
26

cobalt

Go
7
star
27

blockchain-class

This is the starter code to use for a blockchain class
Go
6
star
28

spidy

Go
5
star
29

service6-video

Go
4
star
30

smartclass

Go
3
star
31

course

For the US class in March
Go
3
star
32

ardango.nvim

Lua
3
star
33

service4.1-video

This is for version 4.1 of the service class
Go
3
star
34

blkclass

For blockchain class March 22
Go
3
star
35

service4-video

This is for version 4.0 of the service class
Go
3
star
36

gceu24

Athens Class
Go
3
star
37

core2023

Go
2
star
38

usclass

For class from Jan 31st - Feb 4th
Go
2
star
39

bets

Web3 dApp providing users the ability to make friendly bets about anything.
Go
2
star
40

gotham

Gotham Class
Go
1
star
41

gceu

gceu 2023 class
Go
1
star
42

bp-class

Go
1
star
43

gcau

Go
1
star
44

class

Repo for blockchain class in May 2022
Go
1
star
45

golab

Go
1
star