Skip to content
HHackerTube.videoSurprise me

Category Theory 1.1: Motivation and Philosophy

Category Theory 1.1: Motivation and Philosophy on HackerTube: recommended by 11 Hacker News commenters across 9 separate months, 2016–2026.

Bartosz Milewski

lecture · intro · evergreen

Open on YouTube

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.

Why Hacker News recommends it

HN commenters repeatedly name it as the friendliest entry point to category theory for working programmers.

people recommended it
11
separate months
9
strong recommendations
2
discussed on HN
2016–2026
“I think they are a very nice place to start learning these things.”
— snowcrshd, Apr 2017, in “A monoid is a category, a category is a monad, a monad is a monoid”

What HN commenters said

19 Hacker News comments link this video. Each one links back to its thread.

phekundeMay 2020Strongly recommends

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]

in “Ask HN: How to be fluent in functional language speak?” · View on HN

defaultcompanyOct 2019Strongly recommends

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

in “On the Weaknesses of the Mathematical Mind” · View on HN

OracB7Aug 2022Recommends

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

in “How to learn hard things in tech” · View on HN

vishnuguptaMay 2021Recommends

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

in ““Computer science is not about computers”” · View on HN

smclDec 2019Recommends

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 :-)

in “Category Theory for Programmers (2014) [pdf]” · View on HN

philzookJan 2019Recommends

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.

in “Ask HN: How to self-study mathematics from the undergrad through graduate level?” · View on HN

Show 13 more comments
yanowitzFeb 2018Recommends

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

in “Monadic I/O and Unix shell programming (2001)” · View on HN

snowcrshdApr 2017Recommends

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

in “A monoid is a category, a category is a monad, a monad is a monoid” · View on HN

danidiazApr 2017Recommends

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]

in “From Monads to Machine Code” · View on HN

nuriaionApr 2017Recommends

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)

in “Category Theory, Syntactically (2016)” · View on HN

openfutureJan 2017Recommends

That just means you are missing some foundation. If you are interested in understanding the theory I really recommend this: ▶ this video [link]

in “Why hasn't Haskell taken over the world? And the curious case of Go” · View on HN

seanhunterMay 2026Cites it

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

in “Profunctor Equipment in Haskell” · View on HN

godelskiMay 2025Cites it

It is hard to answer because of exactly what ndriscoll said[0] > It's like trying to argue about the distinction between U(1), the complex numbers with magnitude 1, and the unit circle, and getting upset when the mathematicians say "those are 3 names for the same thing". Or saying that writing C is programming but writing in a functional language like Scala or Haskell (or Lean) is not. As ndriscoll suggests, it is tautological. I mean look at what I said. I really need you to hear it. I said that coding is math. So what I hear is "How programming languages helps with programming languages?" Why are you expecting me to hear anything different? > What math says about zero based indexes? Start at 0? Start at 1? Who cares, it is the same thing. The natural numbers, non-negative integers, integers, even integers, who cares? They're the same thing. And who cares about indexing at 0 or 1 in programming? That's always been a silly argument that's inconsequential. > How do you prevent off by one errors? By not being off by one? What's the question? Like being confused about if you start at 0 or start at 1 and how to get the right bound? It is a shift from one to the other, but they are isomorphic. We can perfectly map. But I really don't get the question. You can formalize these relationships with equations you know. I know it isn't "cool" but you can grab a pen and paper (or a whiteboard) and write down your program structure if you are often falling for these mistakes. This seems mo

in “The language brain matters more for programming than the math brain? (2020)” · View on HN

CrimsonCapeMay 2025Cites it

I recently started watching this lecture series on Category Theory by Bartosz Milewski and he delves into some mind-boggling existential questions in the first video. To paraphrase, mathematicians believe that they are in "a field of discovery" with the implication of "discovery" being that mathematicians are discovering something that already exists. He gives an example of how mathematicians believe that lambda calculus and other systems like set theory and graph theory are actually all the same thing as category theory. In a metaphoric way we have discovered the abstraction (category theory) and recognize that lambda calculus "implements the trait/interface" The dilemma is: did we truly invent a theory of a pre-existing phenomenon? Or do we somehow map physics of the universe to a what a brain is capable of parsing? ▶ this video

in “Using obscure graph theory to solve programming languages problems” · View on HN

kiviuqDec 2023Cites it

HOW DO COMMITTEES INVENT? By MELVIN E. CONWAY Walkthrough [link] Paper [link] Bartosz Milewski's take on the topic of decomposing complexity Category Theory 1.1: Motivation and Philosophy ▶ this video

in “It's not microservice or monolith; it's cognitive load” · View on HN

louthyAug 2023Cites it

> none of it matters if you hope more people use and understand functional programming On a personal level, I couldn't care less tbh. If people want to learn it, that's great, if not that's also fine. There's plenty of room for procedural, OOP, and FP to exist side-by-side. If one domain feels complex to you, don't do it (or put extra effort into learning it), but I'd argue that OOP is much more complicated - it's just that most devs tend to grow up with OOP and so the context switch to FP is more difficult. > you overestimate how much people actually understand oop vs just winging it, in particular, inheritance and polymorphism Forget 'polymorphism' for a second and think about 'object'. An object in the real world doesn't have behaviours attached to it. An object in the real world doesn't mutate, in-place, in a discreet portion of time. Objects in the real world have a immutable past, a present state, and multiple possible futures based on interactions with external events . Those interactions is literally how we define time. OOP (as it's commonly practiced) does away with time and has myriad complexities because of it. The trivial OOP explanation "an object is like a thing in the real world. A rabbit is an object, a triangle is an object, etc." combined with the unbelievable complexity artefacts (in place mutation, hidden state, attached behaviours, etc.) - is much, much worse than the upfront cost of learning about: pure functions, monadic composition, etc. (IMHO of cours

in “Railway Oriented Programming” · View on HN

bluxMar 2021Cites it

Thank you for your comment. This inspired me to try to take another stab at studying category theory. I'll start with this lecture: ▶ this video Are there any good books you can recommend on the subject?

in “Emily Riehl is rewriting the foundations of higher category theory” · View on HN

hans1729Sep 2020Cites it

>How do people that don't have PhDs bridge the gap in their knowledge from what's commonly taught/used (OOP and it's design patterns) to thinking in terms of monads/monoids/functors/etc. ? I can just speak for myself. Started programming via vocational training (apprenticeship for the title 'computer science expert' in germany) about 4 years ago. Learned programming with python, which I loved for the productivity it gave me, the whole superpower yadiya. Was assigned some webrelated tasks, so I got in touch with javascript. My style in these languages was actually 'functional' without me knowing about functional programming - but only to some extent. Mutability, nonstatic typing etc. So, wanting to become a better programmer, I googled things like "advanced python", which yielded things like decorators, generators and metaclasses. In some video about map, filter and reduce something in me clicked - I didn't want to hide attributes and state in classes and objects anymore. It's not modular, it's not atomic, it's not beautiful. I came across Rich Hickeys talks [1] and immediately saw that I'm ... home . The paradigms just click with me, I can't imagine falling back to impurity and oop (unless it can't be avoided for whatever reasons). (I still don't write clojure though, for now I'm still enjoying playing around in python and haskell where I can (you may substitute python with js)) And, honestly - if you have the curiosity to learn Haskell, do you really need a phd? I've taught

in “Haskell GHC 9.0.1-alpha” · View on HN

omginternetsDec 2016Cites it

I've literally just started doing this, starting with category theory. Here's what I've been watching: - ▶ this video - [link] I'm very, very, very open to suggestions... especially if they're presented from the ground up, and in lots of detail. I'm also quite open to material that can be read rather than watched.

in “Ask HN: What do you want to learn in 2017?” · View on HN

Topics & tags

Functional programmingPure mathematicsUniversity lectures & coursescategory theoryhaskellcompositionfunctional programmingmonads