Training & courses
Training courses are offered on-site and can be adapted to your needs. Send an email to j@patch.no for a quote or details. If you need a course that not listed, I can develop it for you.
Effective git
A hands-on course on effectively using git as a core programming- and development tool.
Version control, which today is almost synonymous with git, is a centrepiece in the programmer toolkit. It is everywhere, from small solo projects, to infrastructure, to massive code bases with thousands of contributors. Unfortunately, it is often only used as a fast copy-and-sync interface to the shared code base, and many powerful features are left unused. Git is an amazing tool, but it can be daunting, and getting beyond the basics is hard. Thankfully, there is a payoff, and being more familiar with git will supercharge you.
This practical course will demystify some very useful operations with git, give you some good habits that set you up for success, and prepare you for solving complex problems.
Through a mix of examples, stories, and exercises you will learn about and get experience with topics and features like:
- The art of good commits
- Effective git log: search, queries, diffs
- Making use of the staging area
- Mastering merges: conflict resolution and octopuses
- Composition with cherry-picks, fixups, and rebase
- Frequent snapshots and rollbacks
- Bisecting for bugs: time travel for the cause
- Recovering not-yet-lost changes
- Transports, patches, and emails
After the course you will have a renewed appreciation for what git can do for you, and a stronger foundation to build on when maintaining your programs. This course is great for the team as it makes some time for team dialogue on conventions and collaboration with git.
What you should bring
Your favourite git client and programming environment.
There is no substitute for real world examples; you can bring your own code base, or a favourite open source one, to play with. This is fun, but optional; plenty good examples will be provided.
Prerequisites
Some basic exposure to git is very useful, but the course can be extended to a bottom-up course.
Package management with Guix
Guix is a fantastic at building software, and an excellent way of managing programs.
Guix is a featureful package manager for GNU/Linux systems that takes a rather different approach than the traditional package managers (dpkg/apt for Debian/Ubuntu, rpm/yum/dnf for Red Hat/SUSE). Sharing ideas with Nix, Guix is a programmable, transactional, and reproducible packaging system. Guix encodes and hashes every build input, including source code and build tools down to the first assembler, and produces the same bitwise-identical output every time. With Guix, you can manage your software supply chain and build with confidence.
By letting Guix provide your build-time dependencies you can reliably manage dependencies and write simpler build scripts – there is no need to mess with conan, vcpkg, cargo, pip, etc. Are you confident that you can rebuild your application or docker image from two years ago, or run your mission critical Python script? What if you delete your .venv, or clear your build caches?
Guix provides a lot of novel features, such as:
- Complete development environments (think supercharged python virtualenvs for all languages)
- A better container builder than docker
- Re-build anything from the past
- Rollbacks and transactional installation
- Cross-language dependency resolution
- Efficient caching and build artifacts
This course will be a primer on software packaging and some history, a tour of some very neat Guix features, and plenty of time to get our hands dirty by writing some packages of our own.
In this course you will learn:
- Software packaging basics
- Basic Guix usage, such as
- Package installation, generations, and rollbacks
- Disposable shells, development environments
- Building containers
- Enough Scheme (Guile) to use Guix
- Writing custom packages for Guix
- Simple and slightly complex packages
- Inherits, package variations
What you should bring
We will be writing packages and need running Guix. Please bring either:
- A computer with Guix installed
- A virtual machine with Guix installed
- A computer that can SSH
If installing Guix is impractical, the instructor will provide a remote system with Guix for you to SSH to.
Prerequisites
None.