Work in progress: 82,651 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #2404

H

Havoc's Blog

Personal blog · blog.ometer.comprogrammingsystems

Havoc's Blog is a personal blog at blog.ometer.com about programming and systems. Since 2010, 31 different Hacker News readers have linked it 53 times, most often “Callbacks, synchronous and asynchronous”. The last post was in 2017, but the archive is still widely read.

Visit the blog
53mentions?
31HN people?
2010–2024first – last linked?
Links on Hacker News per year · peak 11 in 2011

this blog contains blog posts

Most-linked posts?

  1. Callbacks, synchronous and asynchronous
    4 people · 5 mentions · first linked 2011-07-25
  2. Callbacks, Synchronous and Asynchronous (2011)
    3 people · 3 mentions · first linked 2017-03-12
  3. Professional Corner-Cutting
    3 people · 3 mentions · first linked 2016-05-05
  4. /2015/09/07/json-like-config-a-spectrum-of-underoverengineering/
    2 people · 4 mentions · first linked 2017-05-11
  5. A Sequential, Actor-like API for Server-side JavaScript
    2 people · 3 mentions · first linked 2010-11-28
  6. It has to work
    2 people · 2 mentions · first linked 2011-10-24
  7. Asheville, Off the Tech Hub Grid
    2 people · 2 mentions · first linked 2011-01-04
  8. Task Dispatch and Nonblocking IO in Scala
    2 people · 2 mentions · first linked 2011-11-14
  9. JSON-like config, a spectrum of under/overengineering
    2 people · 2 mentions · first linked 2015-09-07
  10. Professional Corner-Cutting (2016)
    2 people · 2 mentions · first linked 2017-04-04

What Hacker News says?

  1. Do you have an example of a nontrivial user-space project that has malloc failure handling that actually works, with tests and all? The one I'm aware of is SQLite. Then there is DBus, whose author disagrees with your assessment. https://blog.ometer.com/2008/02/04/out-of-memory-handling-d-...

    Comment linking /2008/02/04/out-of-memory-handling-d-bus-experience/

    on “The Linux kernel's inability to gracefully handle low memory pressure”
  2. Submitted Professional Corner-Cutting (2016) as a story · 175 points

    HN discussion
  3. Looks at correct-mkdir. Sees "cb = dezalgo(cb)". https://www.npmjs.com/package/dezalgo "Contain async insanity so that the dark pony lord doesn't eat souls" Just... What. I feel like when you need to reach for tools to "contain insanity", you might want to backup and ask someone who has written to a filesystem before... The linked blog about "preventing the release of Zalgo" and the linked https://blog.ometer.com/20…

    Comment linking /2011/07/24/callbacks-synchronous-and-asynchronous/

    on “Do not use NPM 5.7”
  4. Submitted Professional Corner-Cutting as a story · 92 points

    HN discussion
  5. People have tried every point on the JSON-to-full-programming-language spectrum, I put some examples in this post: https://blog.ometer.com/2015/09/07/json-like-config-a-spectr... JSON5 is new since that was written I think... there are a bunch more of them too. As part of the team at lightbend that came up with HOCON I still like it because it lets you use env variables (handy for Docker, Heroku, etc) and has some d…

    Comment linking /2015/09/07/json-like-config-a-spectrum-of-underoverengineering/

    on “JSON as configuration files: please don’t (2016)”
  6. Submitted Callbacks, Synchronous and Asynchronous (2011) as a story · 28 points

    HN discussion
  7. An alternative to C++ in this situation is to have a C core or set of C libraries, with bindings up to something like JavaScript or Lua. World of Warcraft, Emacs, Firefox are a few popular examples of that architecture. GNOME 3 works this way too. It's pretty important to have good automation for the C-to-high-level conversion, for example GNOME has a gobject-introspection to do this, and Firefox has XPCOM. Otherwis…

    Comment linking /2008/08/25/embeddable-languages/

    on “Linus Torvalds on C++”
  8. Submitted Keep the JVM, dump the rest ([thoughts on] Scala+Play+MongoDB) as a story · 16 points

    HN discussion
  9. Linux distributions have been including the major version in the name for a long time; when we started doing this at Red Hat I wrote down the rationale at http://ometer.com/parallel.html in order to convince upstream projects to do this upstream, as many now do. For non-system package managers like npm, always using a lockfile is the best current option IMO, for those package managers that support it. https://blog.o…

    Comment linking /2017/01/10/dear-package-managers-dependency-resolution-results-should-be-in-version-control/

    on “The cargo cult of versioning”
  10. Submitted What Matters In Software Development as a story · 7 points

    HN discussion
  11. Very true for low-level system libraries, but applications should really not waste energy on trying to be OOM-safe: it's hard to understand which actions are safe when you no longer can allocate memory (releasing resources often requires allocating memory temporarily), and it just adds complexity which basically will never get tested, thus getting broken quickly and gaining nothing over just crashing on a NULL deref…

    Comment linking /2008/02/04/out-of-memory-handling-d-bus-experience/

    on “System XVI: A replacement for systemd”
  12. Submitted It has to work as a story · 6 points

    HN discussion
  13. I think the opinions expressed in this article are valid. However, I don't think the inability of current JavaScript to do async I/O without callbacks is Node's biggest problem. As others have said, it works for smaller projects (and even has some geek appeal). And as Havoc Pennington and Dave Herman have explained, generators (which are coming with ECMAScript Harmony) and promises will eventually provide a very nic…

    Comment linking /2010/11/28/a-sequential-actor-like-api-for-server-side-javascript/

    on “Node.js is Backwards”
  14. Submitted Developers: request for complaints as a story · 5 points

    HN discussion
  15. It would be pretty simple conceptually (maybe not practically) to make node.js work in an actor-like way, here's a piece of toy code I wrote that does it for JS (not node, but no reason the same couldn't be done for node): http://blog.ometer.com/2010/11/28/a-sequential-actor-like-ap... By "actor-like way" here I just mean a code module ("actor") sees one thread (at a time), and the runtime takes care of the details…

    Comment linking /2010/11/28/a-sequential-actor-like-api-for-server-side-javascript/

    on “Node.js is Backwards”
  16. Submitted A few thoughts on open projects, with mention of Scala as a story · 5 points

    HN discussion
  17. I agree with the impulse to split stocks/bonds about equally: http://blog.ometer.com/2010/11/10/take-risks-in-life-for-sav... But, the 2x leveraged fund is a Bad Idea. These just don't make sense or do what you think beyond the 1-day horizon. If you want a long-term leveraged bet on oil, one better way is to buy a long-term call option ("LEAP") on an ETF. That will work a lot better than the 2x fund. Not saying you…

    Comment linking /2010/11/10/take-risks-in-life-for-savings-choose-a-balanced-fund/

    on “The Dilbert Black Swan Portfolio: a skeptical/practical guide to investing”
  18. Submitted Task Dispatch and Nonblocking IO in Scala as a story · 5 points

    HN discussion
  19. Reminds me of https://blog.ometer.com/2011/01/20/boolean-parameters-are-wr...

    Comment linking /2011/01/20/boolean-parameters-are-wrong/

    on “Don't use booleans (2019)”
  20. Submitted Callbacks, synchronous and asynchronous as a story · 5 points

    HN discussion
  21. The reason it's hard is that everything you do has to become a "transaction" with the ability to roll back. Say you send five messages in a function, now you have to pre allocate all of them in order to cancel them all if any allocation fails, before sending any. But this pre allocation tends to break abstraction barriers (every API might need separate "prepare" and "fire" calls). It doesn't sound that complicated a…

    Comment linking /2008/02/04/out-of-memory-handling-d-bus-experience/

    on “Cello High Level C: A Fat Pointer Library”
  22. Submitted A Sequential, Actor-like API for Server-side JavaScript as a story · 4 points

    HN discussion
  23. https://blog.ometer.com/2015/09/07/json-like-config-a-spectr... I wrote HOCON and also the above comparison post.

    Comment linking /2015/09/07/json-like-config-a-spectrum-of-underoverengineering/

    on “HOCON – Human-Optimized Config Object Notation”
  24. Submitted Callbacks, synchronous and asynchronous as a story · 3 points

    HN discussion
  25. I designed the HOCON format. Here is my take on the why not JSON / why not YAML questions: https://blog.ometer.com/2015/09/07/json-like-config-a-spectr... Short answer is "UX" There's also a historical reason, Play Framework and Akka had both invented ad hoc formats, HOCON replaced both. The ad hoc formats added things like includes and substitutions but in regex-hack type of ways. So HOCON was cleaning those older…

    Comment linking /2015/09/07/json-like-config-a-spectrum-of-underoverengineering/

    on “HOCON – Human-Optimized Config Object Notation”
  26. Submitted JSON-like config, a spectrum of under/overengineering as a story · 3 points

    HN discussion
  27. Here is a comparison of json like formats by the author of HOCON: https://blog.ometer.com/2015/09/07/json-like-config-a-spectr...

    Comment linking /2015/09/07/json-like-config-a-spectrum-of-underoverengineering/

    on “HOCON – Human-Optimized Config Object Notation”
  28. Submitted Boolean parameters are wrong as a story · 3 points

    HN discussion
  29. Havoc Pennington wrote recently about synchronous and asynchronous APIs, with an interesting analysis of the differences between (synchronous) callbacks and (asynchronous) events. He suggests that a call­back should be either always sync or always async , as a doc­u­mented part of the API con­tract. Callbacks, synchronous and asynchronous: http://blog.ometer.com/2011/07/24/callbacks-synchronous-and-...

    Comment linking /2011/07/24/callbacks-synchronous-and-asynchronous/

    on “8.4% of IE9 hangs caused by not using XMLHttpRequest asynchronously”
  30. Submitted Dear package managers:dependency resolution results should be in version control as a story · 2 points

    HN discussion

Search all of HN for blog.ometer.com

Linked by the same people?