D

Dave Herman

calculist.org · Personal blog · on HN since 2011

Dave Herman, a Mozilla researcher and W3C TAG candidate, writes about JavaScript, Rust, macros, and web platform design.

What HN saysCommenters describe him as a high signal-to-noise contributor and cite his post arguing homoiconicity is not the point when discussing Lisp macros.
25HN people shared it
14linked it in comments
14stories submitted
712story points
3 years agolast shared
2011people per year2026

Most-shared posts

  1. 1
    Homoiconicity isn’t the point (2012)
    12 people · 246 points · first shared 2012 · 76 comments on HN
  2. 2
    Neon: Node plus Rust
    4 people · 338 points · first shared 2015 · 69 comments on HN
  3. 3
    Why Coroutines Won't Work on the Web
    3 people · 6 points · first shared 2011 · discussion on HN
  4. 4
    On “On Asm.js”
    2 people · 98 points · first shared 2013 · 61 comments on HN
  5. 5
    Toolchains as Code
    1 people · 8 points · first shared 2020 · 1 comments on HN
  6. 6
  7. 7
    The little-endian web?
    1 people · 5 points · first shared 2012 · discussion on HN
  8. 8
    Native JavaScript classes in Neon
    1 people · 3 points · first shared 2016 · discussion on HN
  9. 9
    Homoiconicity isn’t the point
    1 people · 1 points · first shared 2013 · discussion on HN
  10. 10
    Homepage
    1 people · first shared 2021

What HN people wrote when they linked it

chalst · 2021-05-03
Dave Herman has been a high signal-to-noise contributor to Lambda the Ultimate over the years; if you want to get an idea as to where he is coming from, looking at his contributions there [1], his slightly active blog [2], and on his now pretty much inactive joint blog [3] are good places to start. [1]: http://lambda-the-ultimate.org/user/825/track?sort=desc&order=auth… [2]: http://calculist.org/ [3]: https://www.thefeedbackloop.xyz/
steveklabnik · 2016-02-16
While this is true in some sense, there are also advantages. A ruby gem written in Rust via C FFI was one of the earliest production uses of Rust; the Skylight people still thought (and think) that it was very, very worth it. https://www.youtube.com/watch?v=2BdJeSC4FFI is a further exploration of this idea and how it works. Yes, you do need that small layer, but future libraries will make it even easier. There's the Neon work, for example: http://calculist.org/blog/2015/12/23/neon-node-rust/
samth · 2014-09-22
Homoiconicity is either a trivial property (we can define an AST!) or a not-relevant-to-macros one (probably best expressed as "we have quote", which is basically true of JS). This post by Dave Herman nicely expresses the problems with homoiconicity as a concept: http://calculist.org/blog/2012/04/17/homoiconicity-isnt-the-point/
soegaard · 2023-07-05
> I used to like Lisp's homoiconicity. These days, I'm not even sure the concept makes any sense? What is it even supposed to mean? You are not alone: http://calculist.org/blog/2012/04/17/homoiconicity-isnt-the-point/
pcwalton · 2018-05-20
S-expressions aren't actually necessary for macros to work. You just have to be able to separate "READ" from "EXPAND" (to use Lisp-ish terminology). I believe, but am not sure, that this is possible for Go. (Of course, whether this is a good idea is another thing entirely. I probably wouldn't have included macros if I had been put in charge of Go 1.0, given Go's goals of simplicity.) More on this from my former colleague Dave Herman, who did his dissertation on macros: http://calculist.org/blog/2012/04/17/homoiconicity-isnt-the-point/
acchow · 2016-11-10
But most compilers have a parser. Scheme doesn't need one ;) http://calculist.org/blog/2012/04/17/homoiconicity-isnt-the-point/
mseri · 2016-01-12
With specific C++ features there is still a lot of work to do, however the C FFI is solid and simple to use if that is enough for you (see e.g. https://doc.rust-lang.org/book/ffi.html). Interfacing Rust and python, ruby, node can be quite simple in fact (micro demo for node: http://calculist.org/blog/2015/12/23/neon-node-rust/)
kibwen · 2015-09-04
Macro systems are becoming increasingly popular (e.g. Rust and Sweet.js), but arguably neither of those languages is homoiconic in the Lisp sense (though see also Dave Herman's "Homoiconicity isn't the point" http://calculist.org/blog/2012/04/17/homoiconicity-isnt-the-point/ ).
JimmyM · 2014-04-04
Homoiconicity is a neat thing when you just get started, although there's some interesting discussion around that subject here - http://calculist.org/blog/2012/04/17/homoiconicity-isnt-the-point/
msl09 · 2013-11-29
This feels almost like a parody to http://calculist.org/blog/2013/11/27/on-on-asm-js/
domenicd · 2016-08-13
> Why even bother with such half-baked solutions? In almost every case it's utterly transparent that these solutions exist for the benefit of the compiler and runtime author, usually because of intentional or unintentional technical debt--a direct or indirect dependency on the C or kernel stack. There is a significant faction of language designers that disagree, and think that keeping coroutines shallow is important for developers writing and reading the code. This post from Dave Herman<(involved in JavaScript and Rust) sums it up: http://calculist.org/blog/2011/12/14/why-coroutines-wont-work-on-the-w… (The comment from Tom van Cutsem is also a good rephrasing: http://disq.us/p/9jcee9.) Note that the argument is not as applicable in languages with racy multithreading (like C/C++ or Java). I don't think it's necessarily a knockout argument, but it at least helps me sleep with what we've chosen for JavaScript.

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close