@kenbot@hachyderm.io Profile picture
Architecture, FP, compositionality. Tech talks: https://t.co/E4s7JWBD1W… @thoughtworks
Sep 30, 2020 12 tweets 3 min read
🧵There's been a bit of an elephant in the room for Aussie FP community organisers the last couple of years. I thought it would be fun to share and compare notes.

The root of the "problem" is that functional programming won! /1 Almost every popular language has had FP features grafted on by popular demand, and in new languages functions-as-value, records, immutability, sum types and pattern matching are fast becoming de rigeur. Tutorials for react.js, expound the benefits of immutability at length. /2
Dec 12, 2019 5 tweets 2 min read
Lee Cameron is telling the truth, listen to this man. Every dependency has a cost. #YOW19 Image I've said some similar things, like in my bruising (in a good way!) @melbjvm talks such as
Dec 11, 2019 4 tweets 2 min read
There are so many good talks & speakers at #yow19 - Melbourne, you're in for a treat. My favourite is @sabinehauert's keynote "Swarm engineering across scales: from robots to nanomedicines".

Fascinating, credible, authoritative, cutting-edge and still very accessible & engaging #yow19
Nov 4, 2019 7 tweets 3 min read
Of the crop of food-delivery businesses popping up, the most fascinating by far is EASI, aka 墨尔本送餐 - I'd love to see a newspaper profile on them. Image In 2014 or so, they launched ~exclusively to the Chinese community~ in Melbourne - a bold choice in Oz perhaps, and testament to the Ch community's size & prosperity. Their yellow motorbikes were everywhere, marked only 墨尔本送餐 (Mò​'ěr​běn sòng​cān, "Melbourne Food Delivery") Image
Jun 13, 2019 14 tweets 3 min read
My maths metal band name: Abuse Of Notation 🤘 Monstrous Moonshine 🤘
May 20, 2019 4 tweets 1 min read
"Arabic numerals", as a historical way of referring to our number system is only ever used when comparing it to, say, Roman numerals. Which is to say, once in 12 years of formal schooling.

It's easy to imagine a reasonable, educated, non-racist forgetting this A reasonable, educated person might also take "Arabic numerals" to mean ۱,۲,۳..., which might have a bunch of non-racist reasons to teach or not teach in a US school.
May 9, 2019 4 tweets 2 min read
Slides done! 106 slides does seem a tad excessive for 30 mins though. I can't bear to drop anything! #appliedcategorytheory #compositionality Image There's some solid tech content here: compositionality, monoids, categories, operads, monoidal categories, + the graphical language of string & wiring diagrams.

But the whole talk is pretty diagrams! #act is a lot of fun.
Mar 23, 2019 33 tweets 18 min read
If you're lucky enough to write a thread that blows up and is read by lots of smart people, turns out you get sent some really amazing stuff! 😊

This is another thread to list 31 (!!!) of the interesting related things people mentioned in the replies:
1. The wiring diagrams operad IS SECRETLY THE SAME THING AS LENSES 🤯
/ht @_julesh_
Mar 21, 2019 16 tweets 5 min read
My best kept secret* is that string & wiring diagrams--plucked straight out of applied category theory--are *fabulous* for software and system design. And you don't have to learn a damn thing to start using them. 🙌

*will talk to anyone who'll listen I've been using them as a software design tool for about 2 or 3 years, and they've been great as teaching tools too, with junior and senior colleagues alike.
Jan 6, 2019 4 tweets 1 min read
The award for Most Venomous goes to: ... Australian Funnel Webs! 🇦🇺🏅 Can you spell "funnel web" without "fun"? No. You cannot
Oct 23, 2018 7 tweets 1 min read
Programmers will go to extraordinary lengths to avoid visually nested expressions. Every language seems to have a hack! /1 Instead of g(f(x, y), z) OO langs have x.f(y).g(z) class member syntax, which is nice, but it's like having to subscribe to 12mo of an entire shitty cable network for that one show you like /2
Mar 9, 2018 4 tweets 1 min read
To clarify a common misconception about our successful & ever-increasing Scala adoption at REA: at no point have I, or to my knowledge anyone else, tried to convince anyone to use Scala. Not once. I just help people solve their problems. It was just 5 years of that! You want to know a better way? Let me show you. You want to learn something new? Let me teach you! Your team needs help? Let me give you an hour a week. You want to understand that thing? Here, let's grab a whiteboard.
Jan 30, 2018 4 tweets 1 min read
F is a functor with (given laws etc):
(a → b) → F[a] → F[b]

F is an applicative functor, for all n∈[0,..) with:
((a₁,...,an) → b) → (F[a₁],...,F[an]) → F[b]

The free applicative on any functor F:
FreeA[F,b] = (a₁,...,an) → b) × (F[a₁],...,F[an]) If you had a way to apply these n-ary functions to their n arguments to product a F[b], then F would itself be an applicative functor
Jan 22, 2018 10 tweets 2 min read
Ok, so I've been rightly challenged on my boast that I can explain the "monad is a monoid" thing to you with pen and paper. Here goes: A monoid is some set M with two extra features, COMPOSE and ID, that obey some basic rules. It is the fundamental notion of compositionality from which all category theory springs. Image
Jan 22, 2018 7 tweets 1 min read
A small part of me dies when you use that "A monad is just a monoid in the category of endofunctors, what's the problem?" joke in your slides. Please don't use it. A few reasons (thread): It's usually presented as a joke: "Look how complicated this stuff is to learn". Except that it's not as hard as everyone thinks, it is eminently learnable, and this joke just scares people off. Why not spend your effort helping them understand instead?
Jan 7, 2018 5 tweets 2 min read
Before my head gets back to tech for the year, enjoy another St Andrews Cross spider from my yard. Party in the front, murder in the back! ImageImage I used a real camera zoom this time Mr Smartypants @standeo
Oct 24, 2017 7 tweets 1 min read
Lisp/Scheme/Clojure's map function doesn't just give you a list functor; it is also a zip-list applicative functor pure (+) <*> ZipList [1,2,3] <*> ZipList [4,5,6] == [5,7,9]
(map + '(1 2 3) '(4 5 6)) == '(5 7 9)