Isaac Schlueter
blog.izs.me · Personal blog · on HN since 2009
Isaac Schlueter, creator of npm, writes about JavaScript style, API design for asynchrony, npm tips, and Git.
What HN saysHN commenters often cite his open letter defending JavaScript without semicolons, and also link his post calling JavaScript not a web assembly.
88HN people shared it
41linked it in comments
71stories submitted
2.0Kstory points
8 months agolast shared
2009people per year2026
Most-shared posts
- 1An Open Letter to JavaScript Leaders Regarding Semicolons18 people · 84 points · first shared 2010 · 77 comments on HN
- 2JavaScript is Not Web Assembly5 people · 403 points · first shared 2011 · 99 comments on HN
- 3Designing APIs for Asynchrony5 people · 28 points · first shared 2013 · 6 comments on HN
- 4Things You Probably Didn’t Realize npm Could Do4 people · 55 points · first shared 2010 · 15 comments on HN
- 5Brief FAQ about IO.js4 people · 12 points · first shared 2014 · discussion on HN
- 6Unleashing Zalgo4 people · 1 points · first shared 2023 · 1 comments on HN
- 7A member of our community is missing, help find him3 people · 594 points · first shared 2014 · 65 comments on HN
- 8Git is an editor, and rebase is the backspace key3 people · 162 points · first shared 2012 · 46 comments on HN
- 9Intent out, Reality In2 people · 6 points · first shared 2015 · discussion on HN
- 10ES6 Modules: A Simpler Proposal2 people · 6 points · first shared 2012 · discussion on HN
- 11Favorite NPM Commit2 people · 3 points · first shared 2022 · discussion on HN
- 12The Hazards of Consensus2 people · 2 points · first shared 2013 · discussion on HN
- 13How this works...2 people · 2 points · first shared 2011 · discussion on HN
- 14Promises vs. Eventual Values2 people · 2 points · first shared 2016 · discussion on HN
- 15On npm and Homebrew2 people · 1 points · first shared 2011 · discussion on HN
What HN people wrote when they linked it
svat · 2018-09-14
The developer of NPM.js recommended this book highly[1] on his blog, so I picked it up. Already on a first reading[2] I could see its potential to be life-changing. It has definitely changed how I interact with (or see) others (and myself), and I am trying to put more of it in practice; currently on a second reading.
I think it appeals to the programmer/mathematician in me, because to a large extent it is teaching me to be more precise, about distinguishing observations, evaluations, thoughts, feelings, etc. Of course the ultimate goal is to establish genuine and sincere connection with other people, but even if you can do that with one person (yourself?), the time is probably well spent.
[1]: http://blog.izs.me/post/112818868228/letter-to-marshall-rosenberg
[2]: https://plus.google.com/+ShreevatsaR/posts/2428KBRfYdb
feross · 2016-04-28
I recommend reading the following articles before you assume that omitting semicolons is dangerous.
An Open Letter to JavaScript Leaders Regarding Semicolons
http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leader…
JavaScript Semicolon Insertion – Everything you need to know
http://inimino.org/~inimino/blog/javascript_semicolons
Are Semicolons Necessary in JavaScript?
https://www.youtube.com/watch?v=gsfbh17Ax9I
Spreading FUD doesn't help anyone out.
TheAceOfHearts · 2015-03-05
Every time someone brings up semicolons I think it's worth posting Isaac Schlueter's blog post on the topic: http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leader…
You can get by perfectly fine without semicolons. Going further, if you're using a linter like eslint, I think you can even configure it to give you a warning when the missing semicolon could cause problems.
zorpner · 2014-06-06
Here's a great post about why, even if this were specifically about his specific girlfriend and didn't code sexist tropes, it would still be unacceptable: http://blog.izs.me/post/87902115343/re-maven-is-like-my-girlfriend
elliotlai · 2012-06-15
"JavaScript is the browser’s assembly language."
This reminds me of a blog post by @izs
http://blog.izs.me/post/10213512387/javascript-is-not-web-assembly
Yes, I love Haskell and I do some CoffeeScript but JS is a fairly decent language to me : )
mattbriggs · 2012-04-15
http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leader…
That is a pretty good rundown of the rules. The only problem with not having semicolons is cases like this, where someone is using a bad tool to minify your code. None of the tools that currently do the best job will break on that code.
ludwigvan · 2012-02-12
If you are following Crockford (JavaScript, the Good Parts), it is encouraged. However, some, like the current node.js maintainer think otherwise; see http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leader…
Personally, I still follow Crockford's advice though.
SoftwarePatent · 2011-08-29
It's a sarcastic joke. Check out this site maintained by the commenter http://blog.izs.me/
conartist6 · 2024-12-13
There's a rather famous blog post that cuts to the heart of all this: https://blog.izs.me/2013/08/designing-apis-for-asynchrony/
henriqueinonhe · 2023-11-23
Very well said.
Complementing your answer, I'd also like to point out that another notable guarantee that promises give us is that their continuations are never executed synchronously (even when they could), which prevents the problem described by https://blog.izs.me/2013/08/designing-apis-for-asynchrony/.
susam · 2021-01-09
A transpiler that gets confused when optional tags are missing (a feature explicitly allowed by the spec) is a broken transpiler and it needs to be fixed. This is like the automatic semicolon insertion of JavaScript debate[1][2] all over again. These things are spelled out in the standards and tools that do not adhere to the standards are broken.
[1] https://web.archive.org/web/20201206065632/http://inimino.org/~inimino…
[2] https://blog.izs.me/2010/12/an-open-letter-to-javascript-leaders-regar…
qrohlf · 2017-05-30
This "unleashes Zalgo" and is considered a major anti-pattern when designing async APIs: http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony
danneu · 2016-04-12
Yes, at which point the prefixes are easier to notice when they are missing.
http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leader…
Either way, no matter your preference, the issue is resolved by having a linter, not by scrutinizing your code for missing semicolons. The OP post feels very dated.
Nadya · 2015-06-17
Only evil people put their return value on a second line...
Regardless:
http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leader…
Although to be fair:
http://benalman.com/news/2013/01/advice-javascript-semicolon-haters/
rhaps0dy · 2015-05-30
http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leader…
Please stop spreading FUD.
ChiperSoft · 2015-02-10
Heroku supports iojs, but I suppose that meets the definition of "almost no one" when you scope it to all available PaaS options worldwide.
> io.js kept mum until the last moment before their release, with an invite-only codebase.
This is factually inaccurate. Fedor Indutny created the iojs fork on November 26th. The 1.0 release came out on January 13th, significantly less than 6 months. The iojs repo was always public.
The project you're referring to was the node-forward/node repo, which was initially public and forced to be made private due to Joyent's trademark.
This history is all fully documented here: http://blog.izs.me/post/104685388058/io-js
Already__Taken · 2015-01-30
After reading the linked [Isaacs](http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leader… post it made me realise a bit more about the language. I don't think I'd agree its easy to screw up. Its as easy as accidentally using global variables.
shadowmint · 2015-01-14
If we're lucky this will turn into the 'unstable branch' with new features and things which is periodically folded back into the 'stable' node.js platform.
...but if node wont play ball, it'll become 'the new node', yes.
(there's a lot of backstory to this, which you can read about here: http://blog.izs.me/post/104685388058/io-js)
8ig8 · 2014-11-07
This reminded me of another missing person posted here. Does anyone know what happened to Luke Arduini? I have no connection, but for some reason this stuck with me.
Here's some background:
https://news.ycombinator.com/item?id=7048249
http://blog.izs.me/post/72990767417/a-member-of-our-community-is-missi…
ufo · 2014-07-02
Javascripr lets you put the binary operators in the next line if you want. It won't insert a semicolon there:
http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leader…
I would say that the most common problem is having a semicolon not being inserted if you start a line with `(` or `[`. In practice, the only time when a semicolon gets inserted where it shouldn't is when returning an object literal.
bendrucker · 2014-04-28
The breaks from A+ are pretty serious, both the treatment of undefined and releasing zalgo (http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) and calling it a feature. Not on the hunt for a client side micro-framework but since I use a lot of modules that supply promises there's no way I'd use this.
sheetjs · 2014-03-09
yarou · 2014-01-13
Not at all strange, people have gotten used to being surveilled is all. Maybe she can help find the missing node.js guy as mentioned here:
http://blog.izs.me/post/72990767417/a-member-of-our-community-is-missi…
niggler · 2013-02-25
Do you dislike the language itself (like in the criticism of http://blog.izs.me/post/10213512387/javascript-is-not-web-assembly) or the community?
osener · 2013-01-31
The correct permalink to this post: http://blog.izs.me/post/37650663670/git-rebase
jherdman · 2012-06-26
Homebrew doesn't handle software that updates itself. It's an opinionated piece of software.
UPDATE: More on this here http://blog.izs.me/post/3295261330/on-npm-and-homebrew
nherment · 2012-05-03
Very well written post.
However, I found it to be of little value. When fully reading Isaac's post (http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leader… it appears to not diverge much from what you've written.
I consider myself a beginner in Javascript and did not find Isaac's post the least condescending. I actually learned a few things and am very glad he took the time to explain how things work. Because honestly, I won't read the ECMAScript spec unless I need to.
I'm actually one of the people who never use semi-colons to terminate statements. That's for personal projects. Where I work, we (as a team) decided to use them. And that's fine, but I prefer not to use them.
madrobby · 2012-04-24
#1 has nothing to do with size optimization, it's purely stylistic and about having to write less code. See also http://blog.izs.me/post/3393190720/how-this-works
ricardobeat · 2012-04-15
The examples he gives are exactly the situations where you should use semi-colons, as understood by those who skip them. Take a look at http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leader…
jashkenas · 2012-04-09
For handy reference, @izs' opposition response: http://blog.izs.me/post/20786279320/re-brixens-is-node-better