Top all-time · #1331
Stuart Sierra
Personal blog · stuartsierra.comprogrammingcareer
Stuart Sierra's personal blog at stuartsierra.com covers programming and career. Since 2007, 51 different Hacker News readers have linked it 73 times, most often “Clojure Start Time in 2019”. The last post was in 2022, but the archive is still widely read.
Too few sampled comments (16) to say how often HN recommends it.?
Why HN links it
Linked for Clojure guidance on threading macros, as-> pitfalls, namespace aliasing, dependency management and startup time. Commenters call several posts great or good and nominate one for reading lists.
Summarised by Claude from a sample of 16 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Most-linked posts?
- Clojure Start Time in 20196 people · 6 mentions · first linked 2019-12-21
- Threading with Style3 people · 3 mentions · first linked 2023-02-18
- Facebook's Thrift vs. Google's Protocol Buffers2 people · 2 mentions · first linked 2008-07-12
- Apathy of the Commons2 people · 2 mentions · first linked 2016-07-18
- The Reluctant Dictator2 people · 2 mentions · first linked 2013-01-17
- Clojure Don'ts: Concat2 people · 2 mentions · first linked 2024-11-22
- Clojure 2015 Year in Review2 people · 2 mentions · first linked 2015-12-31
- Heating Up Clojure & Swing2 people · 2 mentions · first linked 2010-01-07
- On the Perils of Dynamic Scope2 people · 2 mentions · first linked 2013-04-01
- /2018/07/15/clojure-donts-thread-as2 people · 2 mentions · first linked 2018-08-02
What Hacker News says?
I agree with most of the recommendation in this article (thanks for publishing it!), but the advice about futures should be taken with a grain of salt. You need to be careful with futures because they swallow exceptions. However, the solution given (setting a global exceptions handler), while sound advice in general, doesn't actually solve the problem of hidden errors, as futures catch all exceptions and return them…
Comment linking /2015/05/27/clojure-uncaught-exceptions
on “Clojure, the Good Parts”Submitted Clojure 2014 Year in Review as a story · 261 points
HN discussionJust to add some reference to why it can take a long time to start a REPL (for example): > As it turns out, Clojure start time is a complicated and multi-dimensional topic. Clojure projects are slow to start not only because of JVM — JVM itself starts in ~50 ms — but because of JVM specifics the classes are loaded slowly. Clojure projects are slow to start not only because of Clojure — Clojure itself starts in ~1 se…
Comment linking /2019/12/21/clojure-start-time-in-2019
on “Thoughts on Clojure UI framework”Submitted Clojure 2015 Year in Review as a story · 197 points
HN discussionI like the suggestion in namespace aliasing in https://stuartsierra.com/2015/05/10/clojure-namespace-aliase... : As a general first rule, make the alias the same as the namespace name with the leading parts removed. (ns com.example.application (:require [clojure.java.io :as io] [clojure.string :as string])) Keep enough trailing parts to make each alias unique. Did you know that namespace aliases can have dots in the…
Comment linking /2015/05/10/clojure-namespace-aliases
on “Why Clojure?”Submitted How to Name Clojure Functions as a story · 120 points
HN discussionok, found it: https://stuartsierra.com/2008/08/08/clojure-for-the-semantic... I think it was in reference to the java ecosystem, more than "a better way to write java," although I still see it that way.
Comment linking /2008/08/08/clojure-for-the-semantic-web
on “Is Clojure dying, and what has Ruby got to do with it?”Submitted Clojure 2011 Year in Review as a story · 114 points
HN discussionWhile everyone is entitled to their own opinion, I think it is worthwhile to give more detailed examples - like for example slow compared to what? For example there is a nice discussion over slow startup (note that for the most people the impression that it is slow comes from the Leiningen startup which starts two JVM processes): https://stuartsierra.com/2019/12/21/clojure-start-time-in-20...
Comment linking /2019/12/21/clojure-start-time-in-2019
on “Why Clojure? (2018)”Submitted Clojure Don’ts: Lazy Effects (2015) as a story · 108 points
HN discussionIn clojure, you can do this with as->, but there are reasons to be careful. Stuart Sierra has a great (brief) article about it[0]. The long and short of it is that it's really easy to change the "type" of an expression as it goes through your pipeline in unintuitive ways. This can cause surprises later down the line, so it's probably better to refactor the functions you are calling so that they play nicely with thre…
Comment linking /2018/07/15/clojure-donts-thread-as
on “Rackjure”Submitted Clojure 2013 Year in Review as a story · 108 points
HN discussionEven in C, always remember the rules of Macro Club[1]: 1) You do not write macros. 2) You do not write macros that violate expectations of normal code behavior. 3) If this is your first time, you must write a macro. 4) Don't think object-oriented. 5) No shirt, No shoes, No dynamic scope. 6) Don't create new scoping rules. [1] http://stuartsierra.com/download/2010-10-23-clojure-conj-mac...
Comment linking /download/2010-10-23-clojure-conj-macro-club.pdf
on “Lisp macros for C”Submitted Clojure: It’s About the Libraries as a story · 68 points
HN discussionDon't agree with 1&4, but 2&3 are subsets of a feature of the Clojure landscape: the guys behind Clojure aren't laser focused on driving adoption like, for instance, Scala is. Indeed, some of them don't really like the idea of a "Clojure Community". http://stuartsierra.com/2013/01/16/the-reluctant-dictator On the other hand, there's an amazing focus on doing the right thing rather than throwing features at a wall, w…
Comment linking /2013/01/16/the-reluctant-dictator
on “Why I am so excited about Clojure”Submitted Apathy of the Commons as a story · 64 points
HN discussionAlso relevant, Stuart Sierra's opinionated guide to threading macros: https://stuartsierra.com/2018/07/06/threading-with-style https://stuartsierra.com/2018/07/15/clojure-donts-thread-as
Comment linking /2018/07/15/clojure-donts-thread-as
on “Threading Macros Guide”Submitted Clojure 2012 Year in Review as a story · 62 points
HN discussion> We all know Java is slow to start up… More specifically, Clojure — https://stuartsierra.com/2019/12/21/clojure-start-time-in-20...
Comment linking /2019/12/21/clojure-start-time-in-2019
on “(Yet Another) Lisp in Go”Submitted Design Philosophies of Developer Tools as a story · 49 points
HN discussionI would nominate Stuart's dependency mgmt blog entry for this page too: http://stuartsierra.com/2011/06/01/dependency-management
Comment linking /2011/06/01/dependency-management
on “Clojure/core Reading List: Rationale, tutorials, resources”Submitted Objects Are Not Abstract Data Types as a story · 48 points
HN discussionThe problem is, and I think in the case of Github he makes his rationale plain and clear: > I don’t think it would be right for Emacs to use github.com. I don’t even think it is right for ENSIME to use github, but I’m scared of moving in-case we lose contributor momentum. The FSF gave github.com a bad score and it’s not libre, which makes me nervous. This is what scares me about the power of GH too. But let's be hon…
Comment linking /2016/07/18/apathy-of-the-commons
on “Open Letter to the Emacs Maintainers”Submitted Heating Up Clojure & Swing as a story · 38 points
HN discussionI haven't done any GUI's in clojure, but i think swing is best doc'd, stuart Sierra series: http://stuartsierra.com/2010/01/03/doto-swing-with-clojure?0... http://stuartsierra.com/2010/01/02/first-steps-with-clojure-... -------------------- or SWT: http://berlinbrowndev.blogspot.com/2009/02/doing-it-wrong-fu... http://www.li-am.com/2009/08/button-in-eclipse-swt-clojure.h... http://www.li-am.com/2009/08/swt-is-alive-…
Comment linking /2010/01/02/first-steps-with-clojure-swing
on “Ask HN: Getting started with Clojure”Submitted Sequential Consequences as a story · 32 points
HN discussionthe code doesn't need anything, people reading it do. Names are useful because they make intent explicit. Point free programming in functional languages is often overused. Stuart wrote a good blog post about this a few years ago. "All too often, however, I see the threading macros used in places where they make the code less clear. Early in Clojure’s public existence, there was a fad for “point-free” programming, a…
Comment linking /2018/07/06/threading-with-style
on “Why Is Jepsen Written in Clojure?”Submitted Heating Up Clojure & Swing as a story · 27 points
HN discussionHere's the big Thrift/PB comparison table: http://stuartsierra.com/2008/07/10/thrift-vs-protocol-buffer... Personally, I like Thrift better. More languages and greater community participation.
Comment linking /2008/07/10/thrift-vs-protocol-buffers
on “Suppose I wanted to write a C++ based web application...”Submitted Thoughts on Clojure Package Management as a story · 27 points
HN discussion