Programming Languages
2024
Mini-rust in Rust 008: Refactoring our parser -
Mini-rust in Rust 007: Evaluating an operation -
Mini-rust in Rust 006: Parsing an operation -
Mini-rust in Rust 005: Making our lexer an iterator -
Mini-rust in Rust 004: Refactoring our lexer -
Mini-rust in Rust 003: Much prettier errors -
Mini-rust in Rust 002: Errors while lexing -
Mini-rust in Rust 001: Lexing an int -
Rust 101 - 53: Exercises for module G (q4) -
Rust 101 - 52: Exercises for module G (q3) -
Rust 101 - 51: Exercises for module G (q2) -
Rust 101 - 50: Exercises for module G (q1) -
Rust 101 - 49: Foreign function interfaces (interacting with other languages) -
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 - 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 -
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 -
2023
Rust 101 - 6: Structs and Enums -
Rust 101 - 3: Memory and ownership -
Rust 101 - 2: Language basics -
Maths: The Fun Parts - Sets video -
2021
Writing Snake in Terraform Video -
Republishing Bartosz Milewski's Category Theory lectures -
2020
Shutdown order consistency: how Rust helps -
Struggling with Rust to figure out the right types for a function signature -
2019
ACCU Talk "How Kotlin makes your Java code better" -
Examples of Kotlin making your Java code better video -
London Python Meetup January 2019 - Async Python and GeoPandas -
2018
Elm makes me happy (updated for Elm 0.19) video -
Godot: Dragging and dropping physics objects video -
Godot: 2D shapes bouncing off each other video -
Graft Animation Language on Raspberry Pi -
Worksheet: "Tell a story by making animations with code" -
My experience upgrading to Elm 0.19 -
How to write a programming language articles -
Clever Things People Do In Groovy So You Have To Know About Them video -
Ideas on how lexing will work in Pepper3 -
Questions and answers about Pepper3 -
2017
TECH(K)NOW Day workshop on "Writing a programming language" -
Adding a concurrency limit to Python's asyncio.as_completed -
Basic ideas of Python 3 asyncio concurrency -
How to write a programming language ACCU talk -
Iterating over the lines of a file in Java -
2016
How to write a programming language - Part 3, The Evaluator -
Basic Haskell project setup (unit tests, code, formatting) -
How to write a programming language - Part 2, The Parser -
How to write a programming language - Part 1, The Lexer -
Simple example of Netty 4 usage -
Elm resizeable SVG canvas filling the screen -
Ambiguous names in Java due to non-normalised unicode - but all OK in Python -
Elm makes me happy (old: Elm 0.17) -
2015
ZX Spectrum BASIC Web Server -
2014
Absolute Truth in programming languages -
Using the final keyword in interface method parameters does nothing -
2013
Goodness in programming languages, part 4 - Ownership & Memory -
C++14 "Terse" Templates - an argument against the proposed syntax -
2012
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 -
Bash associative array examples -
Goodness in programming languages, part 3 " not doing the same thing more than once -
Tail Call Optimisation in C++ - lightning talk video -
Tail Call Optimisation in C++ published in Overload journal -
Scheme 4: Recursion - how to write functions in Scheme video -
Scheme 2: Basics - pairs and lists video -
Scheme 1: Feel the cool video -
Generalising tail call optimised C++ -
Performance of tail call optimised C++ -
Tail call optimisation in C++ -
Lighting talk - Tail call optimisation in C++ -
Scheme: pairs, lists and recursion -
Goodness in programming languages, part 2 " getting your code running -
Goodness in programming languages, part 1 - syntax and layout -