Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    P

    Perfection Kills

    perfectionkills.com · Personal blog · on HN since 2010

    Perfection Kills is Juriy Zaytsev's (kangax) blog on JavaScript, the DOM and CSS internals, plus performance and tooling experiments.

    Visit blogRSSHN submissions
    Web DevelopmentProgramming
    What HN says

    HN links it for deep dives such as global eval and the HTML minifier experiments, which commenters cite when discussing those topics.

    Stats for nerds
    65HN people shared it
    64linked in comments
    941story points
    Jun 2022last shared
    2010people per year2022

    Top posts on HN

    1. 1
      The poor, misunderstood innerText
      6 people · 227 points · first shared 2015 · 32 comments on HN
    2. 2
      Understanding delete in Javascript
      9 people · 220 points · first shared 2010 · 8 comments on HN
    3. 3
      Exploring canvas drawing techniques
      5 people · 200 points · first shared 2013 · 35 comments on HN
    4. 4
      HTML minifier revisited
      1 person · 99 points · first shared 2014 · 41 comments on HN
    5. 5
      Profiling CSS for fun and profit. Optimization notes.
      7 people · 37 points · first shared 2012 · 2 comments on HN
    6. 6
      Experimenting with html minifier
      4 people · 23 points · first shared 2010 · 9 comments on HN
    7. 7
      You thought you knew Javascript
      7 people · 21 points · first shared 2010 · 1 comments on HN
    8. 8
      Extending Native JavaScript Objects. Evil or Not?
      1 person · 17 points · first shared 2011 · 2 comments on HN
    9. 9
      Global eval. What are the options?
      7 people · 9 points · first shared 2010 · Discussion on HN
    10. 10
      What’s wrong with extending the DOM
      6 people · 9 points · first shared 2010 · Discussion on HN

    What HN people wrote when they linked it

    • niftichFeb 2017

      Wow, this takes me way back -- but that 'way back' was only 10 years ago. So much has changed in that span of time, it's mindboggling.

      Around the time that MooTools appeared, Prototype and Dojo were the cutting-edge of DHTML, freshly made cool again by the term 'Ajax'. Prototype was very much a series of ugly hacks driven by the get-shit-done monkeypatching mentality of Rails, but it was fantastic. Meanwhile Dojo was fast-sprawling ecosystem of community and corportate contributions and plugins and whatnot, backed by a non-profit Foundation, and supported by major companies like IBM and Sun -- I can't firsthand speak to its quality (some have said it was quite good), but the contrast was night and day.

      Script.aculo.us emerged built on top of Prototype to add tasteful interactivity (like DOM element dragging), and its branding targeted style-conscious developer-designers (the sort who'd read CSS Zen Garden but were tempted by JS). As the MooTools team noted, the weaknesses of Prototype started to show as its capabilities were pushed -- and it was getting kinda big. It was into this landscape that jQuery, Moo.fx, and MooTools arrived, and the rest is now ancient history.

      There were many things that set jQuery and MooTools apart, but a notable one was their differring philosophies on extending native JS objects, or in contemporary parlance "extending the DOM". jQuery specifically didn't do this, while MooTools followed in the vein of Prototype and actually extended more…

    • NzenMay 2021

      I'm of the impression that it is an internet reimplemented on top of the internet that we are using right now.

      So, you download a vm emulator, like uxn [0]. This able to use a specific protocol to reach out and communicate with other vm emulators of its kind. But, like the tls namespace, my vm doesn't just reach out to macwrite.com/index.html . It has to go through my switch, through a series of switches of my and other commercial ISP datacenters, until it reaches the server that manages 'com' and then finds the server with the webpage I want. But, that requires people to forward that traffic with their own vm emulators. So, Tlon, the organization that sponsors the urbit ecosystem, sold address space for 'galaxies', which are like the top level domains. They are expected/encouraged to lease out address space to many others, as 'stars', who will relay traffic up and down. Finally, laggards are expected to rent address space and subscribe for bandwidth from the star operators as a 'planet'. A vm without a star, a comet, to, I don't know, sign its traffic, can not communicate with other vms on the network. That is what I've concluded urbit is.

      Urbit is sold as the opportunity to reimplement all of computing on top of this system. Like compilers ? They have a language they are building this stuff with. Like OS ? They need to flesh out the vm that you use. Like some application thing ? They probably need that too, reimplement all the things: text editor, web server, build…

    • acdhaMay 2012

      That statement is too broad to be correct: modern browsers have had work optimizing selector performance (see http://calendar.perfplanet.com/2011/css-selector-performance-has-changed-for-the-better/) and you really need to measure before drawing conclusions, particularly when the alternative of cargo-culting less semantic, harder to maintain code has its own costs and doesn't get as much performance attention as browsers do.

      Since there are are now CSS profilers for Chrome, WebKit and Opera (see http://perfectionkills.com/profiling-css-for-fun-and-profit-optimization-notes/) you can also make the better comparison: your actual site.

      Examples:
      http://stevesouders.com/efws/css-selectors/csscreate.php?n=1000&sel=div[id]+%3E+a&body=background%3A+%23CFD&ne=1000
      http://stevesouders.com/efws/css-selectors/csscreate.php?n=1000&sel=div+%3E+a&body=background%3A+%23CFD&ne=1000
      http://stevesouders.com/efws/css-selectors/csscreate.php?n=1000&sel=div%5Bid%5D+a&body=background%3A+%23CFD&ne=1000
      http://stevesouders.com/efws/css-selectors/csscreate.php?n=1000&sel=div+a&body=background%3A+%23CFD&ne=1000

      All four are very close in time in Chrome and Firefox - within 10ms or so. In all permutations of this, what really makes the most difference continues to be the question of how quickly the browser can narrow the set of nodes under consideration, which usually comes down to how well your markup makes expressing relationships natural rather than syntax tricks.

    • javajoshJul 2012

      I really admire Resig, and this post contains a few gems:

      1. Knew about PPK[0], didn't know about JZ[1]

      2. Feature detection came about from writing this book! Which generalizes too: writing is a great way to innovate (something pg has said, too).

      3. A nice little jab at GRRM, who thoroughly deserves it.

      4. An exciting glimpse into the future of computer science pedagogy by way of JavaScript in the browser. (And I can't help but wonder if this is an oblique response to the recent Alan Kay Dr. Dobbs interview, where Kay asserts, "The Web, in comparison, is a joke. The Web was done by amateurs."[2])

      5. Points out that even the best of us can get stuck in a procrastination loop.

      6. Resig is going to finish a JavaScript book [3]

      [0] http://www.quirksmode.org/

      [1] http://perfectionkills.com/

      [2] http://www.drdobbs.com/architecture-and-design/interview-with-alan-kay/240003442?pgno=1

      [3] http://jsninja.com/

    • pfrazeJun 2012

      I'd add also that Javascript proto inheritance is more about composition than type checking, since `instanceof` has its frames problem [1].

      As a result, I'm increasingly inclined to do data-structure objects and composable functions, which seems similar to Go's approach.

      1 http://perfectionkills.com/instanceof-considered-harmful-or-how-to-write-a-robust-isarray/

    • frederickfOct 2013

      The responsive design view is very handy. It switches the size of the view port without changing the size of the whole window. I still use firebug most of the time, but there are some issues with firebug you have to be careful of. See this post for an example http://perfectionkills.com/understanding-delete/#firebug_confusion

    Related

    Juriy Zaytsev (kangax)kangax.github.com24 people

    Named function expressions demystified

    Juriy Zaytsev (kangax)
    Personal · last shared 2013
    Useless Factoruseless-factor.blogspot.com16 people

    Why not mmap?

    Useless Factor
    Personal · last shared 2015
    jwzjwz.org880 people

    Watch a VC use my name to sell a con

    jwz
    Personal · last shared 2026
    PhobosLabphoboslab.org123 people

    QOI: Lossless Image Compression in O(n) Time

    PhobosLab
    Personal · last shared 2026
    Sevargsevarg.net22 people

    Analyzing iOS 16 Lockdown Mode: Browser Features and Performance

    Sevarg
    Personal · last shared 2026
    Google Bug Hunters Blogbughunters.google.com71 people

    How we found and fixed an eBPF Linux kernel vulnerability

    Google Bug Hunters Blog
    Company · last shared 2026
    Embrace The Redembracethered.com55 people

    Image Scaling Attacks

    Embrace The Red
    Personal · last shared 2026
    Pointers Gone Wildpointersgonewild.com88 people

    The internet changed my life

    Pointers Gone Wild
    Personal · last shared 2026