Category Theory 1.1: Motivation and Philosophy
Bartosz Milewski11 HN recommenders · recommended in 9 months, 2016–2026
lecture · intro · evergreen · 2016–2026 on HN
The first lecture in Bartosz Milewski's category theory series for programmers. It covers the motivation and philosophy behind category theory and why composition matters for handling complexity.
HN commenters repeatedly name it as the friendliest entry point to category theory for working programmers.
Up next
2 mo on HNIllustrating Crafting Interpreters
Bob Nystrom
2 HN recommender · 2020–2024
2 mo on HNNoam Chomsky: "Free Markets?"
Santarchy
2 HN recommender · 2014–2020
5 mo on HNMichael Stonebraker | Big Data is (at least) Four Different Problems
Michigan Engineering
5 HN recommender · 2015–2024
2 mo on HNPhilip Wadler - Propositions as Types (Lambda Days 2016)
Erlang Solutions
2 HN recommender · 2016–2021
2 mo on HNWell There's Your Problem | Episode 28: Goiânia Incident
Well There's Your Problem Podcast
2 HN recommender · 2021–2023
4 mo on HNFlat Earth: A Measured Response
hbomberguy
3 HN recommender · 2019–2024
3 mo on HNWhat I Wish I Had Known Before Scaling Uber to 1000 Services • Matt Ranney • GOTO 2016
GOTO Conferences
3 HN recommender · 2016–2023
12 mo on HNSugar: THE BITTER TRUTH
University of California Television (UCTV)
13 HN recommender · 2010–2024
18 mo on HNRuby Conf 12 - Y Not- Adventures in Functional Programming by Jim Weirich
Confreaks
17 HN recommender · 2013–2026
14 mo on HNThe Soul of Erlang and Elixir • Sasa Juric • GOTO 2019
GOTO Conferences
16 HN recommender · 2019–2024
14 mo on HN"Simple Made Easy" - Rich Hickey (2011)
Strange Loop Conference
14 HN recommender · 2022–2026
13 mo on HN"Making Impossible States Impossible" by Richard Feldman
elm-conf
9 HN recommender · 2017–2026
12 comments from Hacker News
If you are coming from imperative land (more specifically C++) then nothing beats articles and videos by Dr. Bartosz Milewski: link ▶ this video link link
This reminds me of a great talk by Bartosz Milewski [1] about the motivation and philosophy behind category theory. He makes the observation that our "monkey brains" are not good at dealing with complexity at all and we only really have one good strategy for dealing with it, that being to chop up complex problems into smaller, simpler problems which we can solve in isolation and then combine the results back together to approximate a solution to the larger problem. His point is that we do this everywhere and therefore it's no wonder that category theory is able to describe so many disparate areas of mathematics - because it's really describing just this mechanism, not some deep truth about the universe itself. Like - what if we as humans are so "register bound" that we can't solve any problems which can't be chopped up and put back together like this - such as those in the social sciences. His presentation style is wonderful - i recommend the whole talk but this part starts at 37:20. [1]: ▶ this video
Eugenia Cheng has some interesting and accessible videos, e.g.: link and in a similar vein I am enjoying her book: "How to Bake Pi". Getting more into the technical side of things, Bartosz Milewski has good lessons in this playlist: ▶ this video
I suggest a combination of theory (videos/books/papers) and practice. For practice; I highly recommend learning Haskell. If you are new to functional programming then learning Haskell is challenging and frustrating but as with any new topic the key is to not give up but keep probing. A good recent development is lot of mainstream languages are beginning to include functional paradigms such as lambda, closures etc., For example Java introduced lambda expressions, Javascript has had them for a while now. But from a first-principles stand point Haskell is as good as it gets so please do learn and code in Haskell if not at work then at least side projects. For theory I've found following material super useful. 0. This[0] is an incredibly awesome lecture where Phil Wadler takes us on a whirlwind tour of computer science. He talks us through different foundational structures on which almost everything (hardware and software) about computer science is built. I watch this lecture once every few months :-). It helps you build up context and ground various topics. 1. The one and only SICP. Book[1] and lectures[2]. 2. Automata theory[3]. This isn't an easy course but gets to the heart of the matter i.e., the meaning of "function" and what how can it be mechanically "computed". 3. Category Theory is where lot of active research is happening in CS theory. This is a very good lecture series[4]. The pace may seem a bit meandering but don't be put off. Bartosz is a gifted teacher and works i
There's a lecture series he did if anyone's interested: ▶ this video I must say that there is a slight Tommy Wiseau energy about the guy, but that's no bad thing :-)
John Baez (physicist / category theorist / smort dude) has a list of books to learn math and physics. Is an interesting source to crib from. link Gerhard t'Hooft has a page on how to become of a good physicist. link Not math though. I'm not necessarily suggesting that a mountain of books is the best way to go about it. I think I respond best to video lectures. I'm not sure where you're starting from or how applied/pure you want. Here's a quick mind dump some of my favorites and some that I haven't watched. Roughly in order of how much I liked them. Gilbert Strang's Computational Methods for engineers was life changing for me. It is a two part MIT opencourse. link A Stanford course on the Fourier transform link Bartosz Milewski's Category theory for programmer's ▶ this video Stephen Boyd's courses are online. link Linear Systems, convex optimization. Useful stuff. Francis Su's Real Analysis is very good link Indian universities have an astounding collection of videos link I have a tough time with the accents, which is a bummer. UCCS MathOnline has quite a haul link I've been enjoying this Visual Group Theory course lately link Math Doctor Bob link Wildberger has some interesting takes on elementary and non elementary topics link link Perimeter scholars lectures. Physics not math. Good stuff. Federico Ardila has a number of combinatorics courses. link Nonlinear algebra course link Also of course there is Coursera and edX stuff. Godspeed.
This is a fun read (fair warning: you should have some understanding of monoids and monads before reading) and further validates my hypothesis that understanding category theory would make me a more effective engineer. If you've had the joy of constructing useful shell pipelines, and part of it is in the ease of knowing how it will behave. this is a nice formal statement that the underlying reasons WHY it just “feels right” are because of category theory--which means if I can just learn category theory, I’ll have a new tool for approaching and factoring problems that will be, technically speaking, hella useful. I suppose I should start (re)working my way through ▶ this video
I recently started going through Bartoz Milewski's Category Theory lectures [1]. I think they are a very nice place to start learning these things. [1] ▶ this video
Those articles (and the videos ▶ this video ) are great but one doesn't need to learn category theory to understand monads in Haskell. The Haskell Wikibook is an underrated resource: link
I can recomend the video series of Bartosz Milewski ( ▶ this video ) I'm at the 4th video and it's the first time that i start to become an understanding of the howl thing. But expect it to take some time. (10 Videos, most are around 1h, i needed to pause several times and think or try something out)
That just means you are missing some foundation. If you are interested in understanding the theory I really recommend this: ▶ this video link
He has also done a youtube series on category theory for programmers [1]. I have personally been using a book recommended by someone here called "Conceptual Mathematics"[2] and have been finding it great so far in the sense that it only relies on high-school level maths concepts while introducing the categorical concepts in contexts where you can see the value of the approach [3]. It is really an interesting set of ideas and as soon as you start using it, some things start to change in how you approach problems. Just today in fact I was working on something and thought to myself "I need the opposite of a forgetful functor - I wonder what that is?" (turns out it's the "free group functor"). But because I knew about the existence of the concept it helped turn what would otherwise have been a maths problem that I would have really struggled with into something that was conceptually easy for me to deal with. I essentially could use the category theory to turn a problem that was hard to think about into something easy to think about (and also to show that this was valid) and then I could solve the problem in a conventional way. [1] ▶ this video [2] link [3] As opposed to say Emily Riehl's "Category Theory in Context" link where the maths required to even get started with the examples in the intro is graduate level. To get a sense, this is literally the first sentence of the first chapter: "A group extension of an abelian group H by an abelian group G consists of a group E together