This is a rough plan of the development internship program for 2024 -8 to 10 weeks program-. The intern need to be able to reason about the code, and be able to write tests (units and integration), then they should be able to contribute to the daily work with the team.
In this week we spend some time to get familiar with the basics of linux, git, shell, and how to read the documentation
- https://www.youtube.com/playlist?list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J ( lect 1-7)
- Effective Shell: https://effective-shell.com
- Linux Intro/Essentials https://lym.readthedocs.io/en/latest/ (till Linux Services, package management (apt only), networking commands)
- Reading manpages of
echo, env, cat, wc, head, tail, yes, true, false, tree
- git https://www.atlassian.com/git (branches, commit, log, merge, rebase, tag, github flow)
- audit courses https://www.coursera.org/professional-certificates/google-it-support
- https://ubuntu.com/server/docs
We get our feet with learning the fundamentals of Go, and start developing small utilities in Go.
- Go fundamentals gobyexample
- coreutils #105:
echo, env, cat, wc, head, tail, yes, true, false, tree
(use gobyexample to speed up things) - build your own git https://leshenko.net/p/ugit/# (5 steps)
We introduce you to the testing, writing unit tests, configuring github workflows.
- learn Go with tests
- INI Parser project with tests #21
- Github Workflows
- build your own git https://leshenko.net/p/ugit/# (5 steps)
In this week we develop a small http service and we cover how to test it and how to build a client to consume its api
- Datetime server #144
- HTTP Service testing
- DateTime http client #145
- context package
- build your own git https://leshenko.net/p/ugit/# (5 steps)
In this week we get familiar with docker and docker compose, what they do, and how to build a docker image, and how to reduce its size. Then we go through REST API, Swagger, and Postman. and we will build a small client that consumes the pokemon Restful API service.
- Docker
- Multistaged builds https://fabianlee.org/2020/01/26/golang-using-multi-stage-builds-to-create-clean-docker-images/
- Docker compose
- REST API
- Swagger
- Postman
- pokemon API https://pokeapi.co/ (create http client for pokemon API + tests) #146
- build your own git https://leshenko.net/p/ugit/# (5 steps)
- docker docs https://docs.docker.com/engine/install/ubuntu/
- https://www.youtube.com/watch?v=3c-iBn73dDE
- https://www.youtube.com/watch?v=pTFZFxd4hOI
- https://www.youtube.com/watch?v=HG6yIjZapSA
- https://www.youtube.com/watch?v=PrusdhS2lmo
- https://www.youtube.com/watch?v=X48VuDVv0do
- docker docs https://docs.docker.com/engine/install/ubuntu/
- https://www.youtube.com/watch?v=3c-iBn73dDE
- https://www.youtube.com/watch?v=pTFZFxd4hOI
- https://www.youtube.com/watch?v=HG6yIjZapSA
- https://www.youtube.com/watch?v=PrusdhS2lmo
- multistaged builds https://fabianlee.org/2020/01/26/golang-using-multi-stage-builds-to-create-clean-docker-images/
- https://www.youtube.com/watch?v=X48VuDVv0do
Here we introduce you to the concept of MVC.
- Secret Note MVC #153
- build your own git https://leshenko.net/p/ugit/# (5 steps)
In this week we will redo the project as SPA, by providing two services: an API service and a frontend that consumes that API -next week-
- Secret Note API #152
- Frontend #152
- build your own git https://leshenko.net/p/ugit/# (5 steps)
- Frontend track https://github.com/MohamedElmdary/cat-frontend-circle-road-map
- https://github.com/MohamedElmdary/frontend-session-resources
- Vue.js
- React Megatutorial
- https://selenium-python.readthedocs.io/locating-elements.html
- https://www.toolsqa.com/selenium-webdriver/selenium-locators/
- https://filiphric.com/cypress-basics-selecting-elements
- Cypress https://testautomationu.applitools.com/advanced-cypress-tutorial/
Testing session: https://docs.google.com/presentation/d/1ljUyCXWN-ZF3FyNDUOYXoyOrEagy_DoXWeL5wDMF47Y/edit?usp=sharing
Starting from that week the intern should be able to write testable code and can be introduced to our platform and projects. Best intro the platform by manually testing the capabilities and reporting issues on the normal of the enduser.
- Intro to Codescalers and TFGrid Platform
- How to write a bug report https://www.softwaretestinghelp.com/how-to-write-good-bug-report/
- Manual Testing
- Namespaces, CGroups, Docker
- The Dashboard and deploying your first machine on the threefold grid)
- Terraform and deploying your virtual machines machines on the threefold grid)
- Rust fundamentals
- Manually Testing the platform (intro to testlodge -qa tool we use to develop and track our tests-)
- 4 solutions
- GPU services integration *
- ZOS service rewrites in rust
- Freeflow twin
- Threefold Connect *
- Planetary Desktop/mobile App
- Increase code coverage
- Deployments web builder (drag/drop)
- IaC
- heroku like system on the grid maybe? gridify pushing forward
- RESP Parser #275
- dotenv #208
- Makego #157
- Busybox img #103
- NTP #141
- BMP Width/Height #142
- Msgpack #240
- bitcask paper
- REST API
- GraphQL
- Protobuf
- gRPC
- Concurrency
- Blockchain
- Vue
- Docker/CGroups
- Testing
- Redis
- UNIX Programming
- Caddy
- Zinit
- Flist
- Raft
- Packer
- Zig
- TLS
- Encryption (symmetric/asymmetric)
- 12 factor apps https://12factor.net
- Github flow https://docs.github.com/en/get-started/quickstart/github-flow
- Building a small busybox based distro
- write your own git: https://leshenko.net/p/ugit/#
- creating package in 2022
- python
- django rest framework DRF
- pymotw
- jinja
- bottle
- exploreflask
- flask megatuorial
- TDD with python/django
- redis university
- redis in action is a book that will help you to know redis by practice.
- The following topics are important to know about Redis:
- Data structures
- Pub/Sub Guide link 1 | Guide link 2 | Video
- Data persistence (snapshots & AOF) Guide link | Video
- Transactions Guide link
- Distributed locking Guide link1 | Guide link2
- Resp Protocol Guide link
- Trunk based development https://trunkbaseddevelopment.com/
- effective shell: https://effective-shell.com
- ubuntu server guide
- nginx
- debian handbook
- tmux
- building root filesystem
- coredns
- https://www.nginx.com/blog/what-are-namespaces-cgroups-how-do-they-work/
- https://www.youtube.com/watch?v=8fi7uSYlOdc
- build container in 500Lines
- unix programming
- https://learn.particular.net/courses/distributed-systems-design-fundamentals-online
- slides: https://thesecretlivesofdata.com/raft/
- https://raft.github.io
- https://en.wikipedia.org/wiki/Raft_(algorithm)
- https://capnproto.org/
- https://google.github.io/flatbuffers/
- https://developers.google.com/protocol-buffers
- Kubernetes
- Helm Charts
- Blockchain (substrate, cosmos, solidity?)