Top all-time · #681
The If Works
Personal blog · blog.jcoglan.comprogramming
The If Works is a personal blog at blog.jcoglan.com about programming. Since 2008, 93 different Hacker News readers have linked it 114 times, most often “Why GitHub is not your CV [2013]”. It is still writing: the last post was on 2026-03-23, and you can follow it by feed.
Sometimes recommended · 13 of 39 sampled comments recommend it?
Why HN links it
Readers link James Coglan's posts for explanations of diff algorithms (Myers, patience), monads and promises in JavaScript, and his argument against using GitHub as a CV.
- Recommended for · 13 comments
- Commenters recommend the diff-algorithm and promises/monads posts and call the JavaScript monad translation helpful.
Summarised by Claude from a sample of 39 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Most-linked posts?
- Why GitHub is not your CV [2013]15 people · 15 mentions · first linked 2014-02-10
- The Myers diff algorithm: part 17 people · 10 mentions · first linked 2017-02-23
- The patience diff algorithm (2017)5 people · 5 mentions · first linked 2020-05-31
- Haskell to JavaScript: Introduction to monads4 people · 6 mentions · first linked 2014-08-18
- Uses for Nested Promises4 people · 4 mentions · first linked 2026-03-23
- Generic Returns in Rust4 people · 4 mentions · first linked 2019-04-22
- Promises are the monad of asynchronous programming4 people · 4 mentions · first linked 2011-03-11
- Callbacks are imperative, promises are functional4 people · 4 mentions · first linked 2014-01-10
- Introduction to monads in JavaScript3 people · 3 mentions · first linked 2011-03-09
- Deriving the Y combinator (2008)3 people · 3 mentions · first linked 2008-02-08
What Hacker News says?
> The second link is merely an animated gif of an octopuss. Now that is funny. Either the blogger changed his URL structure in the time I copy/pasted, or I did a dumb: https://blog.jcoglan.com/2013/11/15/ > If she did somehow draw a causal link between those activities and not using github (she doesn't), it would imply that women should also be absent from Facebook, Pinterest and Instagram. They aren't. Wait a minut…
Comment linking /2013/11/15/
on “The Other Side of Diversity”Submitted Callbacks are imperative, promises are functional as a story · 353 points
HN discussionI'd point you to a few well written articles that address this line of thinking pretty well: * http://www.ashedryden.com/blog/the-ethics-of-unpaid-labor-an... * https://blog.jcoglan.com/2013/11/15/why-github-is-not-your-c... * http://www.garann.com/dev/2012/you-keep-using-that-word/
Comment linking /2013/11/15/why-github-is-not-your-cv/
on “The Other Side of Diversity”Submitted Announcing Building Git as a story · 291 points
HN discussionA day later I looked at this again and I'm a little closer to understanding. var listPromise = new Promise(); creates an object that, being a Promise object, has certain methods and internal state, derived from the prototype of Promise. for (var k in listPromise) promises[k] = listPromise[k]; This confused me because I thought "k" was a stand-in for a numeric index, e.g. that it was doing promises[0] = listPromise[0…
Comment linking /2011/03/11/promises-are-the-monad-of-asynchronous-programming/
on “Callbacks are imperative, promises are functional”Submitted Why you should never use hash functions for message authentication as a story · 171 points
HN discussion> Github acts as a portfolio site for programmers. No [1] [2]. It is not your resume or your CV. You should be able to highlight projects or accomplishments on your CV - github gives you no control over the layout of your profile. > The usual refrain when doing hiring is "check a candidate's Github." (I'm assuming you mean something that they do rather than something they don't do) I'm not saying you can't look at b…
Comment linking /2013/11/15/why-github-is-not-your-cv/
on “Using a single AWS account is a serious risk”Submitted Introduction to monads in JavaScript as a story · 155 points
HN discussionAt least you should try. Maybe start small (and stay small..), there is always some path to escape from cubicle nation.. ;) As for "github is your CV" hype: http://www.ashedryden.com/blog/the-ethics-of-unpaid-labor-an... https://blog.jcoglan.com/2013/11/15/why-github-is-not-your-c...
Comment linking /2013/11/15/why-github-is-not-your-cv/
on “Ask HN: My 56-year-old father is a developer having a tough time finding a job”Submitted The Myers diff algorithm: part 1 as a story · 148 points
HN discussionyou'll probably enjoy the patience diff: https://blog.jcoglan.com/2017/09/19/the-patience-diff-algori...
Comment linking /2017/09/19/the-patience-diff-algorithm/
on “Difftastic: Syntax-aware structured diff tool”Submitted The Myers diff algorithm: part 1 as a story · 148 points
HN discussionYes: here's an interesting discussion of promises (in JavaScript) in terms of monads: http://blog.jcoglan.com/2011/03/11/promises-are-the-monad-of...
Comment linking /2011/03/11/promises-are-the-monad-of-asynchronous-programming/
on “Guido van Rossum Deconstructing Twisted's Deferreds”Submitted The Myers diff algorithm that is used in Git (2017) as a story · 122 points
HN discussionAnother explanation of Myers diff algorithm that I found interesting: https://blog.jcoglan.com/2017/02/12/the-myers-diff-algorithm...
Comment linking /2017/02/12/the-myers-diff-algorithm-part-1/
on “Myers Diff Algorithm – Code and Interactive Visualization”Submitted Why GitHub is not your CV as a story · 107 points
HN discussion> the biggest problem is that the SHA1 digest of a message is not an authenticator of that message, because an attacker can generate the same digest given only the contents of the message. Curious, if the secret token comes after the message & there is proper delimiters to separate the message from the secret, where is the vulnerability? Take a look at this link: https://blog.jcoglan.com/2012/06/09/why-you-should-ne…
Comment linking /2012/06/09/why-you-should-never-use-hash-functions-for-message-authentication/
on “Telegram’s Cryptanalysis Contest”Submitted Translation from Haskell to JavaScript (Introduction to monads) as a story · 64 points
HN discussionrelated: http://www.artima.com/forums/flat.jsp?forum=106&thread=3... http://tratt.net/laurie/tech_articles/articles/a_modest_atte... http://www.tbray.org/ongoing/When/201x/2011/12/27/Type-Syste... http://blog.jcoglan.com/2011/12/29/black-box-criteria/ http://www.stanford.edu/class/cs242/slides/Types.ppt
Comment linking /2011/12/29/black-box-criteria/
on “Experiment: Unit testing isn't enough; You need static types, too ”Submitted Hilbert’s Rusty Hotel as a story · 43 points
HN discussionYou are correct, thanks for the clarification. From https://www.gnu.org/software/diffutils/manual/diffutils.html... > You can think of this as subtracting older from yours and adding the result to mine, or as merging into mine the changes that would turn older into yours. The point stands: taking history in account is unconvincing, as it assumes intent where none is explicitly given. In the example, if the top branc…
Comment linking /2017/05/08/merging-with-diff3
on “Anu: A sound, distributed version control systema”Submitted Writing a language in 15 minutes as a story · 28 points
HN discussionJames Coglan has written a lot [1] about these issues. His series on evented programming [2] is a good place to start. [1] http://blog.jcoglan.com/ [2] http://blog.jcoglan.com/2010/02/21/events-theyre-not-just-fo...
Comment linking /2010/02/21/events-theyre-not-just-for-the-dom-you-know/
on “The jQuery Divide:Understand where jQuery ends and JavaScript begins”Submitted Composing DSLs in JavaScript as a story · 17 points
HN discussionGreat article, I learned a lot from http://blog.jcoglan.com/2011/03/05/translation-from-haskell-... as well.
Comment linking /2011/03/05/translation-from-haskell-to-javascript-of-selected-portions-of-the-best-introduction-to-monads-ive-ever-read/
on “Learn from Haskell - Functional, Reusable JavaScript”Submitted Announcing Vault: safer passwords for the web as a story · 11 points
HN discussionNew link: https://blog.jcoglan.com/2011/03/05/translation-from-haskell...
Comment linking /2011/03/05/translation-from-haskell-to-javascript-of-selected-portions-of-the-best-introduction-to-monads-ive-ever-read/
on “Functors, Applicatives, and Monads in Plain English”Submitted Why GitHub is not your CV [2013] as a story · 10 points
HN discussionYou could try "You Could Have Invented Monads" for an explanation of why they're valuable https://blog.jcoglan.com/2011/03/05/translation-from-haskell... (linking to the JS version, which links to the Haskell version). But while I liked that tutorial, I think what worked was time. I tried to write Haskell and slowly got a feel for them. After awhile, I started to read JS and Java code and think "oh, another monad".
Comment linking /2011/03/05/translation-from-haskell-to-javascript-of-selected-portions-of-the-best-introduction-to-monads-ive-ever-read/
on “Functors, Applicatives, and Monads in Plain English”Submitted Heist (Scheme in Ruby) 0.2 adds proper list support, better documentation as a story · 10 points
HN discussion