Top all-time · #2620
Brian McKenna
Personal blog · brianmckenna.org · on HN as pufuwozuprogrammingmath
Brian McKenna writes BAM Weblog, a personal blog at brianmckenna.org about programming and math. Since 2010, 32 different Hacker News readers have linked it 48 times, most often “How to stop functional programming”. It is still writing: the last post was on 2025-01-17, and you can follow it by feed.
Most-linked posts?
- How to stop functional programming4 people · 4 mentions · first linked 2016-02-23
- Brian McKenna on Polymorphic Programming3 people · 3 mentions · first linked 2018-01-07
- Row Polymorphism Isn't Subtyping3 people · 3 mentions · first linked 2018-03-17
- Odd Odd Even Proof in Agda2 people · 2 mentions · first linked 2013-08-04
- /blog/type_annotation_cofree2 people · 2 mentions · first linked 2017-04-15
- Architecture diagrams should be code2 people · 2 mentions · first linked 2023-01-10
- Category Theory for Promises/A+2 people · 2 mentions · first linked 2013-04-12
- Read-only Guest tmux Sessions2 people · 2 mentions · first linked 2025-09-11
What Hacker News says?
Some languages use polymorphic row types and eschew inheritance https://brianmckenna.org/blog/row_polymorphism_isnt_subtypin... https://www.reddit.com/r/types/comments/73lg05/comment/dnt7q... https://noamlewis.wordpress.com/2015/01/20/introducing-sjs-a... https://github.com/purescript/documentation/blob/master/lang...
Comment linking /blog/row_polymorphism_isnt_subtyping
on “Inheritance Often Doesn't Make Sense”Submitted How to stop functional programming as a story · 225 points
HN discussion>2. Tail recursion doesn't really make much of a difference for walking trees, which is recursive, but (mostly) not tail recursive. Non-strictness helps here more than TCO in a strict language. >4. ADTs can be good or bad for describing ASTs. Once you enrich ASTs with semantics shared by all variants (such as source coordinates), inheritance can become a better fit than ADTs. Since this article was written we have b…
Comment linking /blog/type_annotation_cofree
on “Why ML/OCaml are good for writing compilers (1998)”Submitted How to stop functional programming (2016) as a story · 107 points
HN discussionI read about isomorf yesterday... it might be kinda like what you're looking for? Possibly relevant blog post from Brian McKenna, too: https://brianmckenna.org/blog/polymorphic_programming [1] https://isomorf.io/
Comment linking /blog/polymorphic_programming
on “Show HN: Bato – A Filipino Programming Language”Submitted Escaping Callback Hell with ClojureScript macros as a story · 53 points
HN discussionIf you're interested in Agda Proofs - this is a well written post by Brian McKenna demonstrating that the sum of two odd numbers is always even. http://brianmckenna.org/blog/plus_equals_even_take_2
Comment linking /blog/plus_equals_even_take_2
on “Voevodsky’s Mathematical Revolution”Submitted Odd Odd Even Proof in Agda as a story · 41 points
HN discussionThe example sucks but is very simple. I didn't add monadic sugar just to be part of the "cargo cult". I added it because I'm eventually going to use it to implement an automatic continuation-passing transform. I've done a similar thing before with ClojureScript's macros: http://brianmckenna.org/blog/cps_transform_js
Comment linking /blog/cps_transform_js
on “Roy — small functional language that compiles to JavaScript”Submitted S-expression Compiler in Scala as a story · 25 points
HN discussionI know how you feel. I even hacked up a CGI library for node.js so I could host it on a shared server: http://brianmckenna.org/blog/nodejs_via_cgi It would have been great if this came out a few days earlier...
Comment linking /blog/nodejs_via_cgi
on “Heroku Node.js Support (experimental)”Submitted How to Stop Functional Programming as a story · 7 points
HN discussionThe thing that has gotten me the most excited since then has been an initial version of type-safe node.js modules: http://brianmckenna.org/blog/roy_node_modules
Comment linking /blog/roy_node_modules
on “Roy: Small functional language that compiles to JavaScript”Submitted WebGL for node.js as a story · 6 points
HN discussionWith all due respect, I don't think you understand the purpose of currying and partial application. In your defense, the article merely explains what currying is, but does not explain why you need it. For instance while writing functional Javascript code, I never curry my methods, instead I use helper methods from functional libraries such as lodash or Ramda to curry. Where currying is useful is in cases like this:…
Comment linking /blog/howtostopfp
on “Currying vs. Partial Application (2015)”Submitted Haskell on Heroku as a story · 5 points
HN discussionFrom the abstract it sounds a bit like https://brianmckenna.org/blog/type_annotation_cofree , which is a great read.
Comment linking /blog/type_annotation_cofree
on “The Calculated Typer”Submitted Category Theory for Promises/A+ as a story · 4 points
HN discussionYou can checkout my JSConf talk at: http://brianmckenna.org/files/presentations/jsconf-roy/ - hopefully the video will be posted soon I wrote an article about it for IEEE's Internet Computing magazine: http://brianmckenna.org/blog/roy_ieee I've also started writing an introduction but it has been shelved while I work on making the typesystem sound. Hopefully I'll see you at SpainJS if you make it :)
Comment linking /blog/roy_ieee
on “Functional Programming in JavaScript using LiveScript and prelude.ls”Submitted Read-only Guest tmux Sessions as a story · 3 points
HN discussionI wrote a small tutorial on manually setting up Android with Scala: http://brianmckenna.org/blog/minimalist_android_scala_env Enabling ProGuard is done by adding the following to build.xml: <target name="-debug-obfuscation-check"> <property name="proguard.enabled" value="true" /> <path id="out.dex.jar.input.ref" /> </target> Also add "proguard.config=proguard.cfg" to default.properties and "-dontwarn" to proguard.cf…
Comment linking /blog/minimalist_android_scala_env
on “Scala and Android Development”Submitted Category Theory for Promises/A+ as a story · 3 points
HN discussionThat made me chuckle. For those not familiar with the promise design controversy: http://brianmckenna.org/blog/category_theory_promisesaplus https://github.com/promises-aplus/constructor-spec/issues/24 https://github.com/promises-aplus/promises-spec/issues/94
Comment linking /blog/category_theory_promisesaplus
on “Using XPath in 2023”Submitted Row Polymorphism Isn't Subtyping as a story · 3 points
HN discussionSubmitted Tool Subsumption and Silver Bullets as a story · 3 points
HN discussionSubmitted bilby.js - Serious functional programming library for JavaScript as a story · 3 points
HN discussionSubmitted Architecture diagrams should be code as a story · 2 points
HN discussionSubmitted 10x Engineers Were the Silver Bullet as a story · 2 points
HN discussionSubmitted Constraints are for methods, not data as a story · 2 points
HN discussionSubmitted Haskell Library for Dependent Typing Languages compiles to Javascript as a story · 2 points
HN discussion