# Getting Started

To acquire the skeleton code, run `git pull staff master` in your personal repo and a new directory `hw6` should appear. The portion of the homework will be in `hw6/tpc`.&#x20;

### Installing `grpcio`

First, in your VM, install Python gRPC bindings with the following commands:

```
sudo apt -y update
sudo apt -y install python3-pip
sudo pip3 install grpcio grpcio-tools
```

### Learning Go

The level at which you need to understand go to complete this topic is not very deep. But still, you should know how variable assignment, interfaces, structs, functions, conditionals, etc work. I recommend taking a look at [GoByExample](https://gobyexample.com) to learn syntax. You need to understand at least the following sections:

* "Hello World" through "Multiple Return Values"
* "Recursion" - "Channel Buffering"

Professor Culler wrote his own [tutorial](https://github.com/deculler/gotut) for learning Go just for this class. It does a very good job of explaining features of the language and I would **highly recommend** it.

### Go Commands

`go test -mod vendor <dir>`: Runs the unit tests in `dir`. Leaving the directory empty runs it in the current directory. Replacing the directory with `./...` runs it in all sub directories.

`gofmt -l -w pkg/`: run this in the `hw6` directory to format all Go files in the homework. The auto-grader will refuse to run unless your Go files are formatted correctly.

`go build -o tpc -mod vendor main.go`: Run this command to build the KV store and output as a binary called `tpc`.

###

&#x20;
