GetGoing/overview.md

3.3 KiB
Raw Blame History

Overview

The following is my overview for what I want this book to cover. This may be incomplete and probably will become out of date quickly, but this is basically my TODO list.

Each top level bullet point is its own chapter/workshop. Slides will be made available as soon as they are created.

  • Basic getting started
    • installing go
    • hello world
    • doing math
  • Data Types
    • Variables
      • Declaring variables
      • Assigning variables
    • Integers
      • byte, int, int32, int64
      • Implement Subtract/Multiply
    • Floating-point numbers
      • Differences between floating point numbers and integers
      • float32, float64
    • Strings
      • examples of strings
      • immutable
      • combining strings
  • Slices and maps
    • generic types (this doesnt mean Go has user-defined generic types)
    • Slices
      • creating
      • appending
      • sorting
      • common slice types
    • Maps
      • make()
      • add value
      • delete value
  • Control structures
    • conditionals
      • if
      • switch
      • type switch
    • looping
      • conditional looping
      • C-style for loop
      • iteration
  • Functions
    • Writing functions
      • Documentation
    • Types of functions
    • Functions are data
      • Functions as arguments to functions
  • Structures
    • defining structs
      • documenting structs
    • instantiating structs
    • JSON support for structures
    • What's the deal with pointers?
      • pointers make values mutable across functions
  • Interfaces
    • What is an interface?
    • Defining them
    • Using them
    • Errors
      • Handling errors
      • Package errors
      • Making your own error types
  • HTTP operations
    • fetching data from canhazip.com
    • validating response
    • parsing response
    • printing response
  • Testing
    • making a fake server for canhazip.com
    • using it in testing
  • Command line app writing
    • Flags
    • Help
    • How to test a command line app
  • Repo hygiene
    • What should go where
    • Applying that to previous things
  • Go Modules
    • how to depend on people's code
    • best practices for releasing code
    • semantic versioning and side effects
    • add markdown support to the wiki
  • Putting it all together with a webapp
  • Webapp Abstractions
    • Adding a JSON api to it
      • Making a client package
      • Tests
    • Abstracting its storage layer to a database (ql?)
      • Migrations 
      • Tests
    • Dockerizing
      • Making the Dockerfile
      • Testing with Docker
  • Bonus: Introduction to Battlesnake
    • brief overview of the problem space
    • the types involved
    • tutorial on how to make a snake
    • somewhere to run it?