Skip to content

Commit

Permalink
Run 2 Workbooks (#151)
Browse files Browse the repository at this point in the history
* fix weird hugo bug

I guess I'm writing old code now - it's a year ago

* add new workbooks with provisional dates

will need to make a ticket to allow future dates

* update home pages to say run 2

* update to the new projects

might need to move all the links actually...

* update times from calendar and update product wording

* add place for troubleshooting to be added

* flip order

* missing word

* Update website/content/workbooks/workbook-6.md

Co-authored-by: Daniel Wagner-Hall <dawagner@gmail.com>

* Update website/content/workbooks/workbook-6.md

Co-authored-by: Daniel Wagner-Hall <dawagner@gmail.com>

* Update website/content/workbooks/workbook-6.md

Co-authored-by: Daniel Wagner-Hall <dawagner@gmail.com>

* Update website/content/workbooks/workbook-6.md

Co-authored-by: Daniel Wagner-Hall <dawagner@gmail.com>

* Update website/content/workbooks/workbook-10.md

Co-authored-by: Daniel Wagner-Hall <dawagner@gmail.com>

* Update website/content/_index.md

Co-authored-by: Daniel Wagner-Hall <dawagner@gmail.com>

* Update website/content/workbooks/workbook-6.md

Co-authored-by: Daniel Wagner-Hall <dawagner@gmail.com>

* weight pages instead of letting dates do it

I think we want to explicitly order things

---------

Co-authored-by: Daniel Wagner-Hall <dawagner@gmail.com>
  • Loading branch information
SallyMcGrath and illicitonion authored Feb 1, 2024
1 parent 376f33f commit a75fc29
Show file tree
Hide file tree
Showing 15 changed files with 204 additions and 3 deletions.
2 changes: 1 addition & 1 deletion website/content/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ title="Immersive Engineering Programme"

-> % We are [Code Your Future](https://codeyourfuture.io) and, whoever _you_ are, you are welcome here.

**Learn** more [about CYF+](/about), **follow** a [suggested path](/versions/1-0-0) through our [projects](/projects), and [primers](/primers/), **join** us in [developing](/about/contributing) more, **watch** [our talk](https://www.youtube.com/watch?v=bRatSl8BKGc) at SRECon 2023.
**Learn** more [about CYF+](/about), **watch** [our talk](https://www.youtube.com/watch?v=bRatSl8BKGc) at SRECon 2023, **follow** a [suggested path](/versions/1-1-0) through our [projects](/projects), and [primers](/primers/), **join** us in [developing](/about/contributing) more.
2 changes: 1 addition & 1 deletion website/content/versions/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ title="Versions"

## CYF+ Iterations Log

Each time we run this programme we will put together new projects and workbooks. We've run this programme once, so we are on Run 1 😉.
Each time we run this programme we will put together new projects and workbooks. We're setting up to run this programme again, so we are on Run 1-1-0 😉.
1 change: 1 addition & 0 deletions website/content/workbooks/workbook-0.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
title="CYF+01 Prep Workbook"
date="01 Oct 2022"
versions=["1-0-0"]
weight=1
+++

# Prep
Expand Down
1 change: 1 addition & 0 deletions website/content/workbooks/workbook-1.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ title="CYF+01 Sprint 1"
date="24 Oct 2022"
versions=["1-0-0"]
hero="pictures/depths/dddepth--085.webp"
weight=2
+++

## Study
Expand Down
22 changes: 22 additions & 0 deletions website/content/workbooks/workbook-10.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
+++
title="CYF+02 Sprint 4"
date="01 Jan 2024"
versions=["1-1-0"]
weight=5
+++

# Provisional start date: 20 May 2024

## Study

- [ ] [Distributed Systems: Asynchronous Work and Pipelines](../../primers/distributed-software-systems-architecture/asynchronous-work-and-pipelines)
- [ ] [Troubleshooting Primer](../../primers/troubleshooting/)

## Projects

- [ ] [Kafka Cron](https://github.com/CodeYourFuture/immersive-go-course/tree/main/kafka-cron) - Distributed Cron system with Prometheus monitoring
- [ ] [Troubleshooting project #4](https://docs.google.com/document/d/1V6HEu_OcJ3MHH-aHzUfANf06VJa1rPcGHcpBwql7QLA/edit#heading=h.cjnguaxmynan) TOADD

## Product

Monitoring and alerting is a key part of any production system. As you continue your product work, make sure to understand the monitoring and alerting in place on your codebase and how it could be improved.
23 changes: 23 additions & 0 deletions website/content/workbooks/workbook-11.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
+++
title="CYF+02 Sprint 5"
date="01 Jan 2024"
versions=["1-1-0"]
weight=6
+++

# Provisional start date: 3 June 2024

## Study

- [ ] [Distributed Systems: Asynchronous Work and Pipelines](../../primers/distributed-software-systems-architecture/distributed-locking-and-distributed-consensus/)
- [ ] [Troubleshooting Primer](../../primers/troubleshooting/)

## Projects

- [ ] [RAFT OTEL](../../projects/raft-otel) Do the raft-otel project. This large project explores a distributed consensus protocol using distributed tracing.
- [ ] [DataStores]() TODO: Add datastores project
- [ ] [Troubleshooting project #3](https://docs.google.com/document/d/1V6HEu_OcJ3MHH-aHzUfANf06VJa1rPcGHcpBwql7QLA/edit#heading=h.cjnguaxmynan) TOADD

## Product

You're focusing deeply on your largest challenge yet with RAFT, but how will you document and handover the work you've done on your product? How will you make sure that the next team can pick up where you left off?
1 change: 1 addition & 0 deletions website/content/workbooks/workbook-2.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ title="CYF+01 Sprint 2"
date="07 Nov 2022"
versions=["1-0-0"]
hero="dddepth--085.webp"
weight=3
+++

## Study
Expand Down
1 change: 1 addition & 0 deletions website/content/workbooks/workbook-3.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
title="CYF+01 Sprint 3"
date="21 Nov 2022"
versions=["1-0-0"]
weight=4
+++

## Study
Expand Down
1 change: 1 addition & 0 deletions website/content/workbooks/workbook-4.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
title="CYF+01 Sprint 4"
date="05 Dec 2022"
versions=["1-0-0"]
weight=5
+++

## Study
Expand Down
1 change: 1 addition & 0 deletions website/content/workbooks/workbook-5.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
title="CYF+01 Sprint 5"
date="09 Jan 2023"
versions=["1-0-0"]
weight=6
+++

## Study
Expand Down
51 changes: 51 additions & 0 deletions website/content/workbooks/workbook-6.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
+++
title="CYF+02 Prep Workbook"
date="01 Jan 2024"
versions=["1-1-0"]
weight=1
+++

# Prep

The CYF+ Immersive Engineering Programme is an intensive three month course. There's a lot to get through and you'll need to hit the ground running. To prepare for this exciting opportunity, you will:

## Computers

TODO: Add background reading on how computers work.

## Linux

- [ ] Play [the Bandit](https://overthewire.org/wargames/bandit/) - you must be able to complete up to level 20 (repeatedly)
- [ ] Take this [Unix 101 course](https://www.opsschool.org/unix_101.html) (and then try 102)
- [ ] Print out this [Linux-Cheat-Sheet](https://www.loggly.com/wp-content/uploads/2015/05/Linux-Cheat-Sheet-Sponsored-By-Loggly.pdf)

## Go

- [ ] Learn the basics of the Go programming language: [Get Started - The Go Programming Language](https://go.dev/learn/)
- [ ] Read this, you might find it useful for working through your first projects: [How to use the fmt package in Golang](https://www.educative.io/answers/how-to-use-the-fmt-package-in-golang)
- [ ] And optionally [Learn Go with tests](https://quii.gitbook.io/learn-go-with-tests/)
- [ ] Read the [Pointers chapter](https://www.golang-book.com/books/intro/8) of [An Introduction to Programming in Go](https://www.golang-book.com/books/intro), and do the problems listed in the chapter.
- [ ] Read about [stack and heap memory](https://courses.engr.illinois.edu/cs225/fa2022/resources/stack-heap/) - note that the examples here are C++ not Go, but you should be able to follow them. One important difference between these languages is that in Go, you don't need to worry about whether a value lives on the heap or the stack (in fact, Go is allowed to choose where your variable lives, and even move it around) - this means that it's ok to return a pointer to a stack variable in Go. You also don't need to call `delete` yourself in Go - Go is [a garbage collected language](https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)) so it will delete variables when they're no longer needed.

## Tooling
- [ ] [Set up and get to know your IDE](https://github.com/CodeYourFuture/immersive-go-course/tree/main/prep#set-up-and-get-to-know-your-ide)
- [ ] [Learnt how to navigate Go documentation](https://github.com/CodeYourFuture/immersive-go-course/tree/main/prep#learn-how-to-navigate-go-documentation)

## Projects

Complete the [prep](https://github.com/CodeYourFuture/immersive-go-course/blob/main/prep/README.md) and first _five_ [projects](https://github.com/CodeYourFuture/immersive-go-course/blob/main/projects/README.md) from the [Immersive Go](https://github.com/CodeYourFuture/immersive-go-course) course

- [ ] [Prep](https://github.com/CodeYourFuture/immersive-go-course/tree/main/prep)
- [ ] [Output and Error Handling](https://github.com/CodeYourFuture/immersive-go-course/tree/main/projects/output-and-error-handling)
- [ ] [CLI Files](https://github.com/CodeYourFuture/immersive-go-course/tree/main/projects/cli-files)
- [ ] [File Parsing](https://github.com/CodeYourFuture/immersive-go-course/tree/main/projects/file-parsing)
- [ ] TODO: Add a link to the threads project
- [ ] [Servers & HTTP Requests](https://github.com/CodeYourFuture/immersive-go-course/tree/main/projects/http-auth)

## Reading

Dip in to some longer books, but don't feel you need to read the whole lot!

- [ ] [Google - Site Reliability Engineering](https://sre.google/sre-book/table-of-contents/)
- [ ] [The Unix Tools Philosophy](https://www.linuxtopia.org/online_books/gnu_linux_tools_guide/the-unix-tools-philosophy.html)
- [ ] [The Phoenix Project](https://smile.amazon.co.uk/Phoenix-Project-Helping-Business-Anniversary/dp/B00VBEBRK6/)
36 changes: 36 additions & 0 deletions website/content/workbooks/workbook-7.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
+++
title="CYF+02 Sprint 1"
date="01 Jan 2024"
versions=["1-1-0"]
hero="pictures/depths/dddepth--085.webp"
weight=2
+++

# Provisional start date: 08 April 2024

In the CYF+ process your goal is to demonstrate the profile of an engineer at a high performing company. This series of challenges was designed by a panel of engineers from top companies to help you demonstrate that profile. Key skills include:

- **Problem solving** - You can solve problems in a systematic way, and you can explain your approach to others.
- **Systems thinking** - You can trace the flow of data through a system, and you can explain how the system works to others.
- **Communication** - You can communicate effectively with others, both verbally and in writing. This doesn't mean knowing all the answers; it means being able to research things you don't know, and being able to ask for help when you need it.
- **Collaboration** - You can work effectively with others, and you can learn from them.
- **Self-management** - You can manage your own time and priorities, and you can learn independently.

## Study

- [ ] [Distributed Systems: Reliable RPCs](../../primers/distributed-software-systems-architecture/reliable-rpcs)
- [ ] [Troubleshooting Primer](../../primers/troubleshooting/)
- [ ] [Linux process Intro](https://tldp.org/LDP/tlk/kernel/processes.html)
- [ ] [Linux Process and Signals](https://www.bogotobogo.com/Linux/linux_process_and_signals.php) - This doc has some commands to give you an insight on how to view processes and pass signals to a process; we recommend running those commands and documenting your learning.

## Projects

- [ ] [Servers & databases](../../projects/server-database)
- [ ] [Multiple Servers](../../projects/multiple-servers)
- [ ] [Docker & Cloud Deployment](../../projects/docker-cloud)
- [ ] [gRPC](../../projects/grpc-client-server)
- [ ] [Troubleshooting project #1](https://docs.google.com/document/d/1V6HEu_OcJ3MHH-aHzUfANf06VJa1rPcGHcpBwql7QLA/edit#heading=h.cjnguaxmynan) TOADD

## Product

You will join [CYF Products](https://codeyourfuture.io/volunteers/) as a junior engineer. You will be deployed on a team delivering a product with real users, stakeholders and deadlines. Your challenge is to work with your team to deliver a product that meets the needs of your users, while managing the competing demands of stakeholders, deadlines, and your own learning priorities. Communication, organisation, and collaboration are key skills here.
25 changes: 25 additions & 0 deletions website/content/workbooks/workbook-8.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
+++
title="CYF+02 Sprint 2"
date="01 Jan 2024"
versions=["1-1-0"]
hero="dddepth--085.webp"
weight=3
+++

# Provisional start date: 22 Apr 2024

## Study

- [ ] [Distributed Systems: State](../../primers/distributed-software-systems-architecture/state)
- [ ] [Troubleshooting Primer](../../primers/troubleshooting/)

## Projects

- [ ] [Batch processing](../../projects/batch-processing)
- [ ] [Buggy app](../../projects/buggy-app)
- [ ] [Memcache](../../projects/memcache)
- [ ] [Troubleshooting project #2](https://docs.google.com/document/d/1V6HEu_OcJ3MHH-aHzUfANf06VJa1rPcGHcpBwql7QLA/edit#heading=h.cjnguaxmynan) TOADD

## Product

Your product work is ramping up, and so is the complexity of your study. How will you manage your time?
38 changes: 38 additions & 0 deletions website/content/workbooks/workbook-9.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
+++
title="CYF+02 Sprint 3"
date="01 Jan 2024"
versions=["1-1-0"]
weight=4
+++

# Provisional start date: 6 May 2024

## Study

- [ ] [Distributed Systems: State](../../primers/distributed-software-systems-architecture/state)
- [ ] [Troubleshooting Primer](../../primers/troubleshooting/)
- [ ] [Linux Bash I](https://www.bogotobogo.com/Linux/linux_tips2_bash.php) & [Linux Bash II](https://www.bogotobogo.com/Linux/linux_tips2_bash.php) (There are other blog posts in the same series that could be useful to go through in spare time, would recommend running the commands that the blog post suggests for better understanding.)
- [ ] PHP fastcgi - https://www.php.net/manual/en/install.fpm.php
Systemctl - https://www.freedesktop.org/software/systemd/man/systemctl.html and then https://www.redhat.com/sysadmin/linux-systemctl-manage-services
- [ ] Nginx
https://nginx.org/en/docs/
https://nginx.org/en/docs/http/request_processing.html
https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/

## Projects

- [ ] [Multiple servers](../../projects/multiple-servers) Revisit this project and deploy it with Docker and GH Actions
- [ ] [Troubleshooting project #3](https://docs.google.com/document/d/1V6HEu_OcJ3MHH-aHzUfANf06VJa1rPcGHcpBwql7QLA/edit#heading=h.cjnguaxmynan) TOADD

#### Optional (but recommended) software ops tutorials:

- [ ] Do this HashiCorp tutorial. It will give you hands-on experience with seeing health checks can be used to manage failure. https://learn.hashicorp.com/tutorials/consul/introduction-chaos-engineering?in=consul/resiliency
- [ ] Demonstrate circuit breaking with this HashiCorp tutorial: https://learn.hashicorp.com/tutorials/consul/service-mesh-circuit-breaking?in=consul/resiliency
- [ ] See different kinds of load-balancing algorithms in use with this HashiCorp tutorial: https://learn.hashicorp.com/tutorials/consul/load-balancing-envoy?in=consul/resiliency
- [ ] Do this tutorial which demonstrates autoscaling with minikube (you will need to install minikube on your computer if you don’t have it). It will give you hands-on experience in configuring autoscaling, plus some exposure to Kubernetes configuration.
You may need to run this command first: minikube addons enable metrics-server
https://learndevops.novalagung.com/kubernetes-minikube-deployment-service-horizontal-autoscale.html

## Product

You're starting to learn efficiencies and optimisations. How will you apply them to your product work?
2 changes: 1 addition & 1 deletion website/layouts/_default/list.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ <h1 class="c-page-header__title e-heading e-heading__1">{{.Title}}</h1>
<article class="{{ with .Content }}c-copy{{end}}">
{{ .Content }}
<ol class="c-timeline">
{{ range .Pages.Reverse }}
{{ range .Pages }}
<li class="c-timeline__entry">{{ partial "timeline.html" . }}</li>
{{ end }}
</ol>
Expand Down

0 comments on commit a75fc29

Please sign in to comment.