Nicholas C. Zakas

nczonline.net · Personal blog · on HN since 2008

Nicholas C. Zakas is a software engineer who writes about JavaScript, ECMAScript features, hiring, and engineering careers.

What HN saysCommenters link his posts on career advice, generalists versus specialists, and ES6 arrow functions as useful and clear.
117HN people shared it
29linked it in comments
141stories submitted
1.9Kstory points
8 years agolast shared
2008people per year2026

Most-shared posts

  1. 1
  2. 2
    The innovations of Internet Explorer
    4 people · 203 points · first shared 2012 · 74 comments on HN
  3. 3
    Node.js and the new web front-end
    4 people · 165 points · first shared 2013 · 155 comments on HN
  4. 4
    Why I'm not using your open source project
    4 people · 20 points · first shared 2015 · 10 comments on HN
  5. 5
    History of the user-agent string
    4 people · 10 points · first shared 2010 · discussion on HN
  6. 6
    React and the economics of dynamic web interfaces
    3 people · 81 points · first shared 2016 · 15 comments on HN
  7. 7
    Generalists and specialists: thoughts on hiring
    3 people · 28 points · first shared 2014 · 6 comments on HN
  8. 8
    I have lyme disease
    3 people · 6 points · first shared 2014 · discussion on HN
  9. 9
    The inception of ESLint
    3 people · 5 points · first shared 2018 · discussion on HN
  10. 10
    A critical review of ECMAScript 6 template strings
    3 people · 3 points · first shared 2012 · discussion on HN
  11. 11
    Understanding ECMAScript 6 arrow functions
    3 people · 3 points · first shared 2013 · discussion on HN
  12. 12
    Internet Explorer 11: “Don’t call me IE”
    2 people · 317 points · first shared 2013 · 185 comments on HN
  13. 13
    Data URIs make CSS sprites obsolete
    2 people · 102 points · first shared 2010 · 64 comments on HN
  14. 14
    The bunny theory of code
    2 people · 67 points · first shared 2015 · 37 comments on HN
  15. 15
    Is the web platform getting too big?
    2 people · 59 points · first shared 2015 · 41 comments on HN

What HN people wrote when they linked it

rbrcurtis · 2016-11-29
Read this: https://www.nczonline.net/blog/2013/10/15/the-best-career-advice-ive-r… I took to heart one sentence from this blog post in particular: "I made sure I only went to meetings that needed me to participate and then I would participate." IE, if you aren't useful to the meeting in a major way, then don't go. That will likely free you up for other things.
markuz · 2014-12-19
This is a great advice if you want to be a generalist. I'm a specialist. Take a look in this article, it illustrates pretty well the differences. http://www.nczonline.net/blog/2014/07/15/generalists-and-specialists-t…
idefine · 2014-04-29
It doesn't execute unless you decide to execute it. It is building the sql string and giving that back to you. You can use any library that'll take sql to execute it against a connection. I got some great feedback today - it seems that ES6 might have some good support for doing something like this. see the following: https://github.com/lalitkapoor/js-sql/issues/2#issuecomment-41637663 http://www.nczonline.net/blog/2012/08/01/a-critical-review-of-ecmascri…
WickyNilliams · 2013-10-29
Also worth pointing out that the fat arrow lambda expression is coming in ES6 [1] so you will see it in vanilla JS soon! [1] http://www.nczonline.net/blog/2013/09/10/understanding-ecmascript-6-ar…
kurrent · 2013-09-20
This will be a much needed and welcome addition to ECMA 6. If you're interested in a bit more of a comprehensive overview, Nicholas Zakas previously wrote an excellent article on arrow functions : http://www.nczonline.net/blog/2013/09/10/understanding-ecmascript-6-ar…
malandrew · 2015-11-03
it's not the way to build an inclusive community I'm genuinely curious where the fetishization of inclusion has come from. Everywhere I look it's is relatively homogenous groups, irrespective of the generalized identity of those groups, that actually start something and grow it to significance. For small contrived tasks that will required minimal time to complete, I can see diversity and inclusion being more effective, but when a task is daunting, stressful, challenging, etc. the benefits of a strong in-group with a similar identity provides a foundation for sticking together through trying/difficult times that you would not find in a diverse group with few social ties around identity. Inclusion is valuable, but only when it can be achieved while also mitigating the group from becoming its own worst enemy when diversity of individual interests compete against shared interests. Linus imparts a very very strong and visceral distaste for bad code. These strong opinions attract those that agree and repel those that don't agree. It's decidedly not inclusion of people who would be tolerant of mediocre code and that is generally a good thing for a critical codebase that is the foundation of so much other code in the world. A group of people that place quality of code at a greater importance over pleasant human interactions is going to produce quality code and sometimes create shitty human interactions. The don't package up and ship the shitty human interactions, but they do…
voidfiles · 2011-10-17
If you are looking for something that is more front-end specific Paul Irish has put together a really great list of blogs, and made a google reader bundle out of them. http://www.google.com/reader/bundle/user/11165870484951445324/bundle/f… Some standout blogs that I always read about programming are: http://www.quirksmode.org/blog/ - Was writing about JS before it was cool, now it just has some of the most detailed coverage you can get of new things happening in js. http://dailyjs.com/ - a great daily roundup of the news in the JS community http://www.nczonline.net/ - A developer who lead many FE efforts inside of Yahoo, very outspoken about how JS should work. http://www.joelonsoftware.com/ - Joels essays can be a bit cantankerous, but also paradigm changing. http://sheddingbikes.com/ - pretty much everything that zed shaw does is fucking awesome. Take it with a grain of salt though. UPDATE: Oh, I almost forgot steve yegge, http://steve-yegge.blogspot.com/ - In a few essays from steve my programming world opened into one of ideas, and not just syntax.
daxterspeed · 2018-05-16
I really wish the browser vendors would come together to establish a plan to clean up User-Agent. It's one of the worst offenders in header legacy[1] and fingerprinting. Exposing what browser I am using and it's major version is fine but I don't think every website I visit deserves to know what OS I am using, nor the details of my CPU. [1] https://www.nczonline.net/blog/2010/01/12/history-of-the-user-agent-st… (2010, though little has changed since then).
swhipple · 2017-02-22
See here [1], under "Why make this change?". [1] https://www.nczonline.net/blog/2016/10/the-ecmascript-2016-change-you-…
kapad · 2015-12-15
I'd read a very similar article from back in 2013 that spoke about the same concept without really calling it "BFF". The article in question actually talks about just using nodejs, but what we implemented from that at my company was really what "BFF" is, and I really think that every microservice architecture needs the backed for front end layer. Here's the link: https://www.nczonline.net/blog/2013/10/07/node-js-and-the-new-web-fron…
antouank · 2015-02-13
I'm using ESLint for all my projects for the last year. I find it much easier to customize ( you can write your own rules ) And because it uses the Esprima parser, it's easier to integrate other things like JSX or ES6. Check out an older intro by Zakas http://www.nczonline.net/blog/2013/07/16/introducing-eslint/ ( Also I think it's a bit faster than JSHint/JSLint ).
gonvaled · 2015-01-28
I think the author is confused: isomorphic javascript's goal is not to run the same code on server and client - that is just a (minor) side effect, for some components. The main goal is to split the UI generation at a more clear boundary, going down to the server if necessary (http://www.nczonline.net/blog/2013/10/07/node-js-and-the-new-web-front…
chubot · 2014-08-12
This reminds me of quasi-literals, proposed (accepted?) for the next version of JS: http://wiki.ecmascript.org/doku.php?id=harmony:quasis http://www.nczonline.net/blog/2012/08/01/a-critical-review-of-ecmascri… The point is to eliminate content injection bugs (XSS). I suppose it's not really the same because JS isn't statically typed, but the motivation seems similar, and it looks similar. Originally from the E programming language: http://www.erights.org/elang/grammar/quasi-overview.html
Sonata · 2014-06-14
It appears the author has already answered my question: http://www.nczonline.net/blog/2014/04/22/creating-defensive-objects-wi…
wturner · 2014-01-11
I approach the issue with the assumption that learning basic sorting algorithms and the like has very little to do with them perse'. It has to do with imbuing you with the mind frame to think along those lines - which takes time to master. As a confidence booster I've been prepping myself to internalize the material in the link below. These are all computer science concepts written in Javascript. This should blend well with your web background if you're interested. http://www.nczonline.net/blog/tag/sorting/
pkmishra · 2013-11-07
I do not agree that node.js revolutionized the company and everyone should start using node.js everywhere. Rather a better approach is what suggested by Nicholas - http://www.nczonline.net/blog/2013/10/07/node-js-and-the-new-web-front…
jakub_g · 2013-11-05
Don't forget the IE11 which pretends to be Gecko and to not be MSIE [0]. [0] http://www.nczonline.net/blog/2013/07/02/internet-explorer-11-dont-cal…
Scottopherson · 2013-04-15
While I enjoyed OP's article, this article is a bit more serious and detailed: http://www.nczonline.net/blog/2012/06/12/the-care-and-feeding-of-softw…
politician · 2013-01-26
I've also successfully implemented Zakas' [1] approach after watching his presentation "Scalable Javascript Application Architecture" [2] and abandoning Backbone.Aura [3]. Aura theoretically implements this, but in practice we found that it made some assumptions that were incompatible with our needs. Consequently, we rolled our own implementation. [1] http://www.nczonline.net/blog/about/ [2] http://www.youtube.com/watch?v=vXjVFPosQHw [3] https://github.com/aurajs/aura
nilliams · 2012-06-14
Does HTML5 validation really matter when your goal is to build an MVC JavaScript app? I'm not trolling btw, many others in the community have long had validation pegged as a red herring [1] [2]. Validation of your attributes is fairly meaningless, and if you have a decent validator setup as part of your workflow (save-time or build-time - I personally wouldn't bother with either), then you should be able to customise it to turn off silly errors. You could also pre-process your JS files as part of your build step to replace ng-* with data-ng-* if it really meant that much to you. The byte-saving doesn't matter of course, but it seems like extra typing and more repetition in your templates for zero benefit. [1] https://groups.google.com/forum/?fromgroups#!msg/html5boilerplate/bRtr… [2] http://www.nczonline.net/blog/2010/08/17/the-value-of-html-validation/
ryankshaw · 2012-01-09
so I am actually wondering why you would even still use a spriting based approach. It seems as if a data-uri based approach would, for all uses I can think of, be more flexible and better, especially if you are using something like compass ( http://compass-style.org/reference/compass/helpers/inline-data/ ). for more info: http://www.nczonline.net/blog/2010/07/06/data-uris-make-css-sprites-ob… this stack overflow answer brings up 2 possible drawbacks of a data-uri based approach: http://stackoverflow.com/a/3525961/897583 but it seems like if you are worried about your other css rules being blocked by your data-uri background-images, either put them in a css file that loads after your important rules, or just put them at the bottom of the css file. and it seems like with gzip the increase in size is negligible.
ugh · 2010-03-24
The most interesting part is this story they linked to: http://www.nczonline.net/blog/2010/01/12/history-of-the-user-agent-str… Quite strange how it came about that nearly every User Agend String starts with Mozilla/5.0. Submitted the whole thing, just for kicks: http://news.ycombinator.com/item?id=1215716
aikah · 2015-12-17
[meta] The title of this article sucks, really, it's a bait, which is sad because the article is actually interesting. Why do blog post titles about programming have to suck in order to attract readers ? > Lots of rework happens because of miscommunications with the user. Other times, the user doesn’t fully understand their problem (there’s not much we can do about this) Agreed. That's where "lean programming" comes into play. If you have the capacity to make the code change as requirements change then I think the issue is pretty much solved. However, not all languages/solutions are equal in that matter. Obviously TDD, Agile techniques help. > If we assume that typing code is the way to program, we will never look for better alternatives. Typing code is a medium. The fact is, for an engineers it usually the most convenient way to create a program. > But without an end goal, of course you have millions of developers releasing Javascript frameworks every day How many of these are still maintained 1,2,5 years after? https://www.nczonline.net/blog/2015/12/why-im-not-using-your-open-sour… So I don't think that is really a problem, there is an handfull of well maintained frameworks and libraries in the JS world. Most are not. Most are flashy with a nice "flat" page then you never hear about them again. It's easy to produce shitloads of code, it's harder to maintain it and build a real community around it. > Building software is 90% a human problem Agreed, but…
joshstrange · 2015-03-10
Could you expand on how it could hurt you? All I was able to find was this [0] > I found two opinions about using strict mode in production: > > There is no reason to ship “use strict” in your production code. There is no performance gain (verified with V8 team and Brendan a while ago) and I don’t need my users’ VMs doing the extra checks as well. Keep it development only, strip it out during build. This way you also avoid the concatenation issue you reference. > And: > > There may not be a performance gain, but there’s also not a performance loss. In production, even more than in development, is where you want to be sure you’re noticing errors. Minimizing the changes between the development and production versions of the code is key to being able to debug issues quickly and efficiently. Yes it helps during development, but there’s no reason to pull it out of production code. > The source is in the comments at the bottom [1] > And of course those 12b weight of "use strict" won't change a thing. [0] http://stackoverflow.com/a/10986793/1072106 [1] http://www.nczonline.net/blog/2012/03/13/its-time-to-start-using-javas…
Zikes · 2014-04-03
Methodologies aside, people really do have to take the majority of their personal health into their own hands. Most folks only see a doctor for a few hours in an entire year (much of that just sitting in reception) and rely on OTC self-medication for most minor issues. There's a lot of criticism around people that self-experiment or self-diagnose, and it is indeed a potentially very dangerous practice, but the expense and fallibility of doctors can sometimes leave little alternative. One example of this is Nicholas C. Zakas's recent account[1] of his discovery that he is afflicted by Lyme disease, has had it for the last 15 years, and was frequently misdiagnosed with everything from depression to having an eating disorder. The point is, regardless of education, nobody cares as much about your health as you do. Doctors deal with hundreds of patients, you get to focus on just one. [1] http://www.nczonline.net/blog/2014/04/02/i-have-lyme-disease/
Prophasi · 2012-08-23
As I recall, IE3 was passable, not laughable. IE4 was better than usable; as much as I clung to my Netscape Communicator 4, it was better than NS's offering. In fact, another current HN article right now details all that IE4 innovated: http://www.nczonline.net/blog/2012/08/22/the-innovations-of-internet-e… IE3 started Netscape's decline, but it really picked up in the couple years after IE4's release (1998-2000). All that competition, the proliferation of features, the new ecosystems of dev tools, new jobs as companies saw the Internet taking off with MS's weight behind it, the press about the browser wars, being able to click the desktop "Internet" icon on your new computer and see well-rendered and fast websites... to state that none of that actually grew web usage and that MS just took NS's users 1-for-1 is unbelievable to me. MS made a better browser and put it in front of everyone's face while simultaneously convincing lots of companies to join the fray. The pie exploded.

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