Skip to content

Links

This page serves as a collection on various different materials which I really enjoyed.

Videos

Tame the frontend with Elm
Elm is a functional programming language that compiles to JavaScript. This talk presents Elm's syntax and the movel-view-update architecture. Really nice slides too.
JavaScript: Understanding the Weird Parts
Great introduction to JavaScript. Explains a lot of the "behind the scenes" topics like execution contexts and the scope chain. Really good presentation style.
An intuition for List Folds
Explains the difference between foldr and foldl. Main take aways: foldl is similar to a loop and does not work on infinite lists. foldr does constructor replacement and works on infinite lists.
Propositions as Types
Great talk by Philip Wadler. When I saw this talk for the first time I was actually quite blown away. It showcases the link between logic and computation, which is also often called Curry–Howard correspondence. The talk also gives a nice lesson on the history of logic and computation. Also make sure to watch it till the end :P
Beyond Computation: The P vs NP Problem
Really good introduction to what "P vs NP" is all about.
Concatenative Programming
Concatenative programming, also known as point-free programming, is a really unusual paradigm at first. While not really mainstream, there have been a number of different concatenative programming languages like Forth, PostScript or Joy.
Basic Mechanics of Operational Semantics
Really nice introduction to Operational semantics. Structural operational semantics (or small-step semantics) formally describe how the individual steps of a computation take place in a computer-based system; by opposition natural semantics (or big-step semantics) describe how the overall results of the executions are obtained.

Blog Posts

3 tribes of programmming
This blog post introduces 3 different types of programmers or rather 3 different types of views on programming. Each of those types follows different goals and has different values in what they do with programming. It gives a good answer on why there are so many wars on what is the best programming language.
How to Write a Git Commit Message
I cannot share this blog post enough. I think everyone should read it and follow it. It introduces 10 small rules to follow for having nice, consistent and helpful commit messages.
What every computer science major should know
Quite a long list of different areas and topics in Computer Science. Has a good list of different programming languages in each paradigm and also highlights main topics of other areas which are a "must know". I surely do not know everything on that list.
Challenging projects every programmer should try
A list of projects that does not list your typical todo app which has been created a billion times already. I would like to eventually explore creating a really simple operating system.
Why I don't use Autocomplete
I have to agree with this post. I know it is a really controversial stance and a lot of people will hardly disagree. But for me auto-completion gets in my way way too often.
Derivatives of Regular Expressions
Brings back a really mind-blowing result that was published in 1963. Brzozowski applied the concept of a derivative of a language onto regular expressions. With this concept you can create an algorithm that gives you a DFA from a RE without relying on creating an NFA first (compared to the classical Thompson Construction).
Parsing: a timeline
Just a nice timeline on the most important discoveries in the history of parsing and compilers.
Why C++ is bad
Explains by example what's fundamentally wrong with C/C++. Highlights why it is not good for beginners to learn as their first language.

Papers

How to Read a Paper
Introduces a "Three-pass approach" to reading scientific papers. Follwing this approach really helped me when I read my first papers. The "first pass" phase seems so trivial at first, but I think it is really valuable.
Monadic Parsing in Haskell
Showcases how nice and intiuitive you can implement a recursive-descent parser in Haskell. A parser is just a function String -> [(a, String)]. This appproach treats parser as first-class values and relies on composition.
A Tutorial Introduction to the Lambda Calculus
Just a short concise introduction to Lambda Calculus. Covers the basic idea without much of the advanced ideas.
Some fundamental theorems in mathematics
As the title says. I have yet to really look into it but it seemed like a good thing to bookmark.

Books

How to read text books
Similar to "How to read a paper", this showcases an approach on how to read technical books. Compared to normal books, technical books are not as easy to read and understand. This is a good approach that helps you remember the covered topics without having to re-read them every time.
Crafting Interpreters
Probably one of the best introductions on how to write an interpreter/compiler. Instead of working through pages of definitions and theory, this uses code to explain the most important concepts. I think is a really good starting point when you want to get into this area. After this you can start with the typical compilers book.

Random

https://www.freecollegeschedulemaker.com/
Cool site for creating your class schedules.

Last update: November 23, 2020