Top all-time · #11654
Mickey Donaghy
Personal blog · m50d.github.io · on HN as lmmprogramming
Mickey Donaghy is a personal blog at m50d.github.io about programming. Since 2013, 6 different Hacker News readers have linked it 42 times. The last post was in 2022, but the archive is still widely read.
Too few sampled comments (1) to say how often HN recommends it.?
Why HN links it
The only comment is about the site failing to render Markdown over HTTP, not about the writing. The thread title, "When Rust Makes Sense, or The State of Typed Languages", suggests the posts cover Rust and typed languages.
Summarised by Claude from a sample of 1 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
What Hacker News says?
I tried to write a bit about my use cases at http://m50d.github.io/2014/05/16/signs-your-java-program.htm... and http://m50d.github.io/2015/04/21/effects.html (apologies for formatting issues). Basically I find the really useful problem that advanced type systems solve is keeping track of cross-cutting concerns (e.g. database transactions, audit logging - the kind of thing you'd be tempted to use AOP for) in a consi…
Comment linking /2015/04/21/effects.html
on “NPM and Left-Pad: Have We Forgotten How to Program?”Submitted People who disagree aren't trying to make things complex as a story · 237 points
HN discussionI agree with a lot of his position, but HTML is so tiresome to write by hand (all those angle brackets) and the tools to manage it already exist. My blog ( http://m50d.github.io ) is all about text like the OP, but I still use strapdown so that I can write markdown rather than html.
Comment linking /
on “This is a web page”Submitted My Latte is Worth It - No Fun Allowed as a story · 233 points
HN discussion> You sound like programming in another level higher than mine. I applaud that. I'll revisit Spray/Scala _when_ I found a definitive use-case for this. For now, Java seems to fit the bill for pretty much 99% my use-cases and fit my taste as well (less low-level code stuff because it is built-in the framework that is well-architected/well-designed so that I can focus on business logic code). Sometimes you don't need…
Comment linking /2014/05/16/signs-your-java-program.html
on “Java for Everything”Submitted When Rust Makes Sense, or The State of Typed Languages as a story · 75 points
HN discussionThat's a very broad question. Rust does the things that I would say are table stakes for a decent programming language these days: decent type system (similar safety to Java) with type inference (similar conciseness to Python), a sensible approach to errors (errors are values as in Go, but since Rust is a non-joke language it doesn't need to special-case errors at the language level, they're just another type of val…
Comment linking /2015/09/28/when-rust-makes-sense.html
on “Announcing Rust 1.8”Submitted Why Scala is the best language available today as a story · 64 points
HN discussionAgree 100% on just showing the real code. Don't tell me what a monad is, tell me a problem I can solve with it. (I've made my own attempt at http://m50d.github.io/2013/01/16/generic-contexts.html )
Comment linking /2013/01/16/generic-contexts.html
on “What I Wish I Knew When Learning Haskell”Submitted Why Do Decent People Accept Bitcoins? as a story · 39 points
HN discussionI've never got the hate for Maven - all the design decisions people dislike seem to be the same things that people praise Cargo et al for. If anything it suffers for being ahead of its time. Use the Scalor plugin, https://github.com/random-maven/scalor-maven-plugin , and then Scala.js just works. I actually hooked it up to Netlify by treating Maven as a static site generator: http://m50d.github.io/2018/11/29/deployi…
Comment linking /2018/11/29/deploying-scalajs-with-netlify
on “The Hard Part of Learning a Language”Submitted Medium is Winning as a story · 18 points
HN discussionAn abstraction is only useful if you can use it. What sold me on applicatives was being able to write "traverse", and similar operations, that would be m * n if you had to write them for each (traversable, applicative) pair but can be m + n instead ( http://m50d.github.io/2013/01/16/generic-contexts.html ). That's a very concrete code saving. Having three examples of things that form categories is great - but can we…
Comment linking /2013/01/16/generic-contexts.html
on “The category design pattern”Submitted When Rust Makes Sense, or the State of Typed Languages (2015) as a story · 5 points
HN discussionWhen I found out about monads it was after I'd already implemented the same abstraction. It actually comes up quite a lot (async calls, error handling, audit logging, database access). http://m50d.github.io/2013/01/16/generic-contexts.html . Just like when I was told about "the visitor pattern", my reaction was mostly "that? I've been doing that for years. So that's what it's called". Still, it's worth knowing the n…
Comment linking /2013/01/16/generic-contexts.html
on “Everyday hassles in Go”Submitted Infrastructure as code would be easy if we cared – No Fun Allowed as a story · 4 points
HN discussionA nomad is a wanderer. A monad is just a particular abstract interface that turns out to come up a lot and so lead to very reusable code. It's hard to talk about monads in general because the concept is very abstract, I find the best thing is to understand a couple of specific examples first (Writer and Future are good simple cases, and then Nondeterminism or Continuation gives you some idea of the powerful things y…
Comment linking /2013/01/16/generic-contexts
on “Attitudes That Lead to Maintainable Code”Submitted Becoming More Functional as a story · 3 points
HN discussionMonad is an interface which a lot of useful "context" types conform to - I find that if a function returns any kind of "secondary value" or "effect" (think the sort of things aspect-oriented programming is supposed to be for - permissions, logging, database transaction boundaries) this can usually be represented by a type which will form a monad. http://blog.sigfpe.com/2007/04/homeland-security-threat-leve... is a s…
Comment linking /2013/01/16/generic-contexts
on “Are Monads a Waste of Time?”Submitted My Five Years of Scala as a story · 3 points
HN discussionI can't explain the "a monad is just a monoid in the category of endofunctors" thing simply; I barely understand it myself, and I'm actually sceptical that it's even true at all. I certainly don't think it's a useful way of learning anything. If you're asking about monads in general, I think trying to understand the generic concept before understanding a bunch of concrete examples is the problem. https://m50d.github…
Comment linking /2013/01/16/generic-contexts
on “Monads are monoids in the category of endofunctors”Submitted Object Oriented Essentialism as a story · 3 points
HN discussionI actually agree with this much. Explaining monads before explaining a lot of concrete examples of monads is putting the cart before the horse, and is where a lot of these tutorials go wrong ( https://m50d.github.io/2013/01/16/generic-contexts is my own effort at taking the opposite approach). But calling something a functor when it isn't is extremely unhelpful; the whole point of using a special-purpose term like f…
Comment linking /2013/01/16/generic-contexts
on “Monads are monoids in the category of endofunctors”Submitted Signs your Java program wants to be written in Scala as a story · 3 points
HN discussionI found that when I tried to use up goer five speak (e.g. http://m50d.github.io/2013/01/18/girl-with-not-real-power.ht... ) I used many more words to express the same number of concepts. So I'd be interested to see how much more or less compressible it actually makes things.
Comment linking /2013/01/18/girl-with-not-real-power.html
on “Shakespeare.txt.jpg: A JPEG compression experiment”Submitted My Latte is Worth It (2012) as a story · 2 points
HN discussionIt's not about I/O. It's about being able to handle cross-cutting concerns like logging, or error handling, or dependency injection, or async, with ordinary refactor-safe functions rather than global variables. http://m50d.github.io/2013/01/16/generic-contexts.html was my effort.
Comment linking /2013/01/16/generic-contexts.html
on “Functors, Applicatives, and Monads in Pictures (2013)”Submitted Effects – No Fun Allowed as a story · 2 points
HN discussion> Sure, you could write that algorithm as three nested list comprehensions, but does that accomplish anything other than showing off? Ask different programmers this and you'll get different answers. One group will say that the list comprehensions reduces ceremony and makes the essential business logic clear, and writing out a loop longhand would serve no purpose other than showing off your knowledge of implementatio…
Comment linking /2018/12/11/people-who-disagree
on “Write Dumb Code (2018)”Submitted An Arrow that Points Back to Where we Started as a story · 1 points
HN discussion