Skip to content

matteobortolazzo/its-resources

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ITS - DevOps & AI Resources

Introduction

This is a small document to help you get started with modern DevOps and AI practices and generic advices.

Resources

  • DevOps Resources: A document on discussed DevOps topics (Git, Actions, Docker, K8S, Deployments).
  • AI & ML Resources: A document on discussed AI & ML topics (Models, LLMs, ML.NET, Neural networks).

Projects

2025

  • JParser: A Node.js library for parsing and manipulating JSON data with advanced features.
  • PokeBattle: API and UI in docker with example GitHub actions workflows and ML.NET examples.
  • WalkGame: A Pytorch-based 2D game where an agent learns to navigate and environment using Supervised Learning, Reinforcement Learning, and NeuroEvolution.

2024

  • ITS SQL: A distributed No-SQL database engine similar to Cosmos DB with SQL-like query language.

2023

  • GitMess: A GitHub backend clone running in Docker for managing repositories.

How to be a good engineer

  • Be curious: Always be curious about how things work. Use YouTube (examples later), Reddit, X; follow people and projects.
  • Challenge yourself: Build complex projects and solve complex problems.
  • Simplify: Once you know how to build complex things, strive to simplify them.
    • Don't use the latest technology just because it's new. Use it because it's better.
    • You don't need NoSQL, Microservices, or Kubernetes if you don't have a problem that needs them.
    • YouTube - Microservices
  • Work iteratively: Don't try to build everything at once. Build small parts and iterate on them.
  • Security: Always think about security. Data leaks and downtime are expensive, very expensive.
  • Documentation: Document your code, your projects, your decisions. It will help you and your team.
  • Tooling:
    • There's no perfect language, framework, or tool. Use the right tool for the job and skill-set.

Example projects

  • Write a language: It's not magic, someone wrote it. Same goes for IDEs, with custom highlights and autocompletion. This also include frameworks like Angular or Svelte.
    • Write the compiler
    • Write the VS Code plugin for syntax highlighting
    • Write the VS Code plugin for autocompletion (LSP - Language Server Protocol)
  • Write a database: Again, you can do a simple implementation of a DB like Cosmos
    • Think about the data structure
    • Write the storage engine
    • Write the query engine
    • Add indexing
  • Write a web server: You can write a simple web server like Express, or ASP.NET. They are "just" libraries on top of Node and .NET. You can also write a simple version of Kestrel.
    • Write the HTTP parser
    • Write the routing engine
    • Write the middleware engine
  • Write an ORM: You can write a simple ORM like Entity Framework or TypeORM. They are just libraries to write on SQL.
    • Write the query builder
    • Write the change tracker
    • Write the migration engine
  • Write a CI/CD pipeline: You can write a simple version of GitHub Actions, or Azure DevOps. They are just scripts that run on a server.
  • Write a container engine: You can write a simple version of Docker. It's just a process running in a namespace.
  • Write version control like Git: It's just a graph of commits. You can write a simple version of it.

Tools

Be a good engineer doesn't mean to be fast. Your brain is more important than your hands.

HOWEVER, if you are also fast, it's better. If you are fast you won't experience those micro context switches that slow you down, and you can just type as the speed of thought.

Here are some tools that can help you be faster:

  • Keyboard: Minimize the use of the mouse, they keyboard is faster, and you can do more with it.
    • Mechanical keyboards: They are more comfortable and better feedback Great price/quality
    • Touch typing: It's faster than looking at the keyboard
  • Linux: It's faster than Windows if you know what you need to do (or MacOS at least)
    • You can tailor it to your needs
    • Use tiling window managers like i3, Sway, Hyprland or PopOS
    • Distributions examples:
      • Debian, Ubuntu, PopOS: stable releases (release every 6 months)
      • ArchLinux: rolling release (release every day)
      • NixOS: the whole OS is defined in a single file with predictable results
    • Udemy - Arch Linux per Comuni Mortali (Udemy)
  • The terminal: It's faster than any GUI if you know what you need to do
    • oh-my-posh: themes, Git info and more for Bash and Powershell
    • zsh: A better shell, with autocompletion and more (Oh my ZSH)
  • Shortcuts: Learn the shortcuts of your IDE, OS and tools they are faster than the mouse
  • Vim motions (installable on any IDE)
    • You will be able to edit text much faster in any IDE
    • It is frustrating at the beginning, but it's worth it. Start with just a few motions
    • YouTube - Vim motions playlist
  • NeoVim (When you mastered Vim motions)

    This is not perfect for every situation, it can replate easily VS Code, but not IntelliJ or Visual Studio for specific workflows.

  • Tmux (Multiple terminal "windows" in one terminal)

YouTube channels

Generic advices

About

This is a small document to help you get started with modern DevOps practices and generic advices.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors