Videos

2024

Rust 101 - 48: Exercises for module F (q3) -

Rust 101 - 47: Exercises for module F (q2) -

Rust 101 - 46: Exercises for module F (q1) -

Rust 101 - 45: Unsafe types and examples -

Rust 101 - 44: Undefined behaviour -

Rust 101 - 43: The two meanings of "unsafe" in Rust -

Rust 101 - 42: Why do we need unsafe? -

Rust 101 - 41: Exercises for module E (q2b) -

Rust 101 - 40: Exercises for module E (q2a) -

Rust 101 - 39: Exercises for module E (q1b) -

Rust 101 - 38: Exercises for module E (q1a) -

Rust 101 - 37: Async runtimes -

Rust 101 - 36: What async and await really do -

Rust 101 - 35: Futures -

Rust 101 - 34: What is async? -

Rust 101 - 33: Exercises for module D (q3) -

Rust 101 - 32: Exercises for module D (q2) -

Rust 101 - 31: Exercises for module D (q1) -

Rust 101 - 30: Good patterns and not so good -

Rust 101 - 29: Trait objects and object safety -

Rust 101 - 28: Dynamic dispatch -

New home for my videos: video.infosec.exchange -

Rust 101 - 27: Exercises for module C (q2) -

Rust 101 - 26: Exercises for module C (q1) -

Rust 101 - 25: Threads, Mutexes, channels, Send and Sync -

Rust 101 - 24: Parallelism and Rayon -

Rust 101 - 23 Exercises for module B (q3) -

Rust 101 - 22 Exercises for module B (q2) -

Rust 101 - 21 Exercises for module B (q1) -

Rust 101 - 20: Unit, integration and benchmark tests -

Rust 101 - 19: Creating a nice API -

Rust 101 - 18: Dependencies and Cargo.toml -

Rust 101 - 17: Exercises for module A3 (part 2) -

Rust 101 - 16: Exercises for module A3 (part 1) -

Rust 101 - 15: Lifetime bounds -

Rust 101 - 14: Some standard library traits -

Rust 101 - 13: Type Parameters and Associated Types -

Rust 101 - 12: Traits -

Rust 101 - 11: Exercises for module A2 -

Rust 101 - 10: Strings -

Rust 101 - 9: Vecs, Boxes and slices -

Rust 101 - 8: Writing methods using impl blocks -

Rust 101 - 7: Error handling with panic and Result -

2023

Rust 101 - 6: Structs and Enums -

Rust 101 - 5: References -

Rust 101 - 4: Exercises for module A1 -

Rust 101 - 3: Memory and ownership -

Rust 101 - 2: Language basics -

Rust 101 - 1: Course intro -

Maths: The Fun Parts - Graphs video -

Maths: The Fun Parts - Groups video -

Maths: The Fun Parts - Sets video -

2022

Matrix is a Distributed Real-time Database Video -

Improving my vimrc live on stream -

2021

Writing Snake in Terraform Video -

Republishing Bartosz Milewski's Category Theory lectures -

Streaming video with Owncast on a free Oracle Cloud computer -

2020

Code your first game: Snake in JavaScript (on Raspberry Pi) -

Coding a tiny game in JavaScript video -

Keeping track of podcast times with a simple bash script on Linux -

Converting HTML slides to a PDF with Firefox -

2019

KotlinJS: First impressions (formed by writing Snake) video -

Dependency Injection frameworks: reasons to avoid them video -

ACCU Talk "How Git really works" -

What is a Monad? Video -

Python Async basics video (100 million HTTP requests) -

2018

Elm makes me happy (updated for Elm 0.19) video -

Godot: make new objects at runtime (instancing) video -

Godot: Dragging and dropping physics objects video -

Godot: 2D shapes bouncing off each other video -

Migrating videos from YouTube to PeerTube inside a Docker container -

2016

Writing a unit test in Elm -

How to write a programming language - Part 3, The Evaluator -

How to write a programming language - Part 2, The Parser -

How to write a programming language - Part 1, The Lexer -

Snake in Python 3 + Qt 5 -

Basic Concepts of Christianity video -

Elm makes me happy (old: Elm 0.17) -

What's new in Java 8 -

Snake in Elm -

2015

Using GitHub and GitLab -

Difficult merges in Git - don't panic! -

Rabbit Escape out now on Android! -

Snake in Dart -

Tweetable Art Code -

Snake in ZX Spectrum BASIC -

Snake in Ruby -

How to make your own levels for Rabbit Escape -

Rabbit Escape v0.1 out now for Linux, Windows and Mac video -

Snake in Groovy -

2014

Snowflake Christmas card web page on the Raspberry Pi -

Snowflake Christmas card in Scratch on the Raspberry Pi -

Android development - saving state -

Android development - Rabbit Escape really working on Android -

Android programming - a non-Android, Android Game -

Android programming - drawing bitmaps in a game loop -

Android programming - a menu using Activities and Intents -

Android programming - setting up Android Studio -

What is node.js? -

A mini mocking framework -

Simple template programming -

Five Quines video -

OpenID security in a REST API -

Token-based security in a REST API -

Security in a REST API -

Searching in a REST API -

2013

Paging in a REST API -

A Basic REST API -

What is REST? -

Vim for Fun -

Working with others in git -

Merging in git -

Branches in git -

How to use git (the basics) -

Why use git for source control? -

Everybody loves build.xml (test-driven Ant) -

Everybody hates build.xml (code reuse in Ant) -

My First Raspberry Pi Game " Part 12 " Scoring, done! -

My First Raspberry Pi Game " Part 11 " Being less rude -

2012

My First Raspberry Pi Game " Part 10 " Red square -

My First Raspberry Pi Game " Part 09 " Lots more words -

My First Raspberry Pi Game " Part 08 " Success and failure -

My First Raspberry Pi Game " Part 07 " A green circle -

My First Raspberry Pi Game " Part 06 " A better class of waiting -

My First Raspberry Pi Game " Part 05 " Say something -

My First Raspberry Pi Game " Part 04 " A small black screen -

My First Raspberry Pi Game " Part 03 " It's like a magic spell -

My First Raspberry Pi Game " Part 02 " Saying hello -

My First Raspberry Pi Game - Part 01 - Before we start -

Tail Call Optimisation in C++ - lightning talk video -

Scheme 7: Macros video -

Scheme 6: Lambda video -

Scheme 3: Closures video -

Scheme 2: Basics - pairs and lists video -

Scheme 1: Feel the cool video -

JavaScript WTFs Videos -