This page serves as a collection on various different materials which I really enjoyed.
- Tame the frontend with Elm
- An intuition for List Folds
- Explains the difference between
foldl. Main take aways:
foldlis similar to a loop and does not work on infinite lists.
foldrdoes 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.
- 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.
- 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.
- 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.
- Cool site for creating your class schedules.
Last update: November 23, 2020