Hacker Blogs
Work in progress: 15,409 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #2620

B

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.

Visit the blog
48mentions?
32HN people?
2010–2025first – last linked?
Links on Hacker News per year · peak 9 in 2012

The author on HN?

pufuwozu · 3,196 karma · member since 2009

http://www.hackernewsers.com/users/pufuwozu.html Brian McKenna http://brianmckenna.org/ http://twitter.com/puffnfresh Senior R&D Engineer at Precog.

From their public HN profile, which links to this site.

Most-linked posts?

  1. How to stop functional programming
    4 people · 4 mentions · first linked 2016-02-23
  2. Brian McKenna on Polymorphic Programming
    3 people · 3 mentions · first linked 2018-01-07
  3. Row Polymorphism Isn't Subtyping
    3 people · 3 mentions · first linked 2018-03-17
  4. Odd Odd Even Proof in Agda
    2 people · 2 mentions · first linked 2013-08-04
  5. /blog/type_annotation_cofree
    2 people · 2 mentions · first linked 2017-04-15
  6. Architecture diagrams should be code
    2 people · 2 mentions · first linked 2023-01-10
  7. Category Theory for Promises/A+
    2 people · 2 mentions · first linked 2013-04-12
  8. Read-only Guest tmux Sessions
    2 people · 2 mentions · first linked 2025-09-11

What Hacker News says?

  1. 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”
  2. Submitted How to stop functional programming as a story · 225 points

    HN discussion
  3. >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)”
  4. Submitted How to stop functional programming (2016) as a story · 107 points

    HN discussion
  5. I 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”
  6. Submitted Escaping Callback Hell with ClojureScript macros as a story · 53 points

    HN discussion
  7. If 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”
  8. Submitted Odd Odd Even Proof in Agda as a story · 41 points

    HN discussion
  9. The 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”
  10. Submitted S-expression Compiler in Scala as a story · 25 points

    HN discussion
  11. I 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)”
  12. Submitted How to Stop Functional Programming as a story · 7 points

    HN discussion
  13. The 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”
  14. Submitted WebGL for node.js as a story · 6 points

    HN discussion
  15. With 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)”
  16. Submitted Haskell on Heroku as a story · 5 points

    HN discussion
  17. From 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”
  18. Submitted Category Theory for Promises/A+ as a story · 4 points

    HN discussion
  19. You 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”
  20. Submitted Read-only Guest tmux Sessions as a story · 3 points

    HN discussion
  21. I 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”
  22. Submitted Category Theory for Promises/A+ as a story · 3 points

    HN discussion
  23. That 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”
  24. Submitted Row Polymorphism Isn't Subtyping as a story · 3 points

    HN discussion
  25. Submitted Tool Subsumption and Silver Bullets as a story · 3 points

    HN discussion
  26. Submitted bilby.js - Serious functional programming library for JavaScript as a story · 3 points

    HN discussion
  27. Submitted Architecture diagrams should be code as a story · 2 points

    HN discussion
  28. Submitted 10x Engineers Were the Silver Bullet as a story · 2 points

    HN discussion
  29. Submitted Constraints are for methods, not data as a story · 2 points

    HN discussion
  30. Submitted Haskell Library for Dependent Typing Languages compiles to Javascript as a story · 2 points

    HN discussion

Search all of HN for brianmckenna.org

Linked by the same people?