Classes teach you all about advanced topics from signal processing, machine learning to virtual acoustics, but one critical subject is rarely covered, and it's instead left to students to figure out on their own: proficiency with their tools.
This workshop teaches you how to master the command-line, automate tasks and collaborate with others through version control systems.
The first two modules have their focus on basics, mindsets and understanding of design decisions for Bash and Git. They'll give you a basic set of commands and help you of not getting lost in their seemingly complexity. The latter two modules focuses on automation, either by scripting manually or by injecting into a Git workflow. They are useful to establish patterns which support you in your day-to-day work.
The session was finished on Nov 03, you can access material by:
Coming from a consumer background the use of a shell can be quite intimidating. You find yourself in a jungle of symbols which may make not much sense to you.
However, getting comfortable with the shell is important for concise and efficient work. The flexibility and information density in the shell cannot be achieved by graphical interfaces.
Unix, designed 40 year ago, has deeply influenced most of today's systems. The concept of small, composable utilities, files and task pipelines are at the heart of using a shell. This module introduces the prompt, paths, access rights, manpages, redirections etc. to work fluently inside a shell. Simple one-line commands are typical in such a setting.
For example, searching through your history quickly can be a huge time saver. In the example below we show a simple trick related to navigating your shell history for converting audio files:
The session was finished on Nov 10, you can access material by:
How to use version control properly, and take advantage of it to save you from disaster, collaborate with others, and quickly find and isolate problematic changes. No more
rm -rf; git clone. No more merge conflicts (well, fewer of them at least). No more huge blocks of commented-out code. No more fretting over how to find what broke your code. No more “oh no, did we delete the working code?!”. We’ll even teach you how to contribute to other people’s projects with pull requests!
The module is accompanied by an Anki card deck which helps you retain terminology, commands for most situations and important parameters. You can find it under the heading
In the example below we are rebasing the local master branch onto the remote one:
The session was finished on Nov 17, you can access material by:
There are two tools that enable you to write and adapt your code with confidence: Code versioning and unit tests. They allow you to track the history of and collaborate on your project, automatically check whether your code still works as expected, and track down bugs if needed.
But these tools are only helpful if you use them consistently. One way of ensuring this consistency is using automation. The most common scenario is to run these tools whenever a changeset is pushed to the central repository, GitLab. GitLab then starts up a job runner that executes any command you want, which could be
The example demonstrates how Tikz is automatically built for a new commit:
The session was finished on Nov 24, you can access material by:
You will soon notice that one-liner are not always enough when working in the shell. We will continue where we left in the first module and discuss how to structure commands into a script. This includes arguments and returns, parameters, patterns, conditionals, loops, sourcing and where to seek help. In order to make the content not dry as dust, the module is structured into four scripts, each with increasing complexity. The last one shows you how an audio dataset can be managed with help of a Bash script.