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

    Erik Bernhardsson

    erikbern.com · Personal blog · on HN since 2014

    Erik Bernhardsson, creator of Annoy and former Spotify engineer, writes on software estimation, hiring, data teams and machine learning.

    Visit blogRSSHN submissions
    Data & VisualizationAI & Machine LearningManagement
    What HN says

    Commenters recommend it for Python and recommender systems, and cite his statistical model of why software projects run late.

    Stats for nerds
    150HN people shared it
    141linked in comments
    6.2Kstory points
    Oct 2025last shared
    2016people per year2025

    Top posts on HN

    1. 1
      Why software projects take longer than you think – a statistical model
      15 people · 983 points · first shared 2019 · 317 comments on HN
    2. 2
      I don't want to learn your query language (2018)
      8 people · 612 points · first shared 2018 · 218 comments on HN
    3. 3
      Building a data team at a mid-stage startup
      7 people · 612 points · first shared 2021 · 89 comments on HN
    4. 4
      It's hard to write code for computers, but it's harder to write code for humans
      1 person · 464 points · first shared 2024 · 136 comments on HN
    5. 5
      The eigenvector of “Why we moved from language X to language Y”
      2 people · 442 points · first shared 2017 · 189 comments on HN
    6. 6
      Software Infrastructure 2.0: A Wishlist
      3 people · 436 points · first shared 2021 · 195 comments on HN
    7. 7
      Simple sabotage for software (2023)
      7 people · 292 points · first shared 2023 · 75 comments on HN
    8. 8
      Never attribute to stupidity what is adequately explained by opportunity cost
      2 people · 288 points · first shared 2020 · 91 comments on HN
    9. 9
      The hacker's guide to uncertainty estimates
      2 people · 249 points · first shared 2018 · 11 comments on HN
    10. 10
      The Impending Cloud Reshuffle
      4 people · 220 points · first shared 2021 · 127 comments on HN

    What HN people wrote when they linked it

    • msluyterFeb 2021

      After a number of years with Python, I started a position working in Scala about 6 months ago. I really wanted to learn something new, and become acquainted with functional programming concepts.

      I agree with most of the above. A couple of additional thoughts:

      * sbt -- I still have a lot of coming up to speed to do here, but the manual is like 500 pages and it's somewhat overwhelming. There are tons of little oddities, like why can't I run `sbt --version` and instead have to do `sbt sbtVersion`?

      * The functional side is fascinating -- I'm still studying the cats library. I can almost describe a Monad! It's a pretty big mountain, though, and there are times where I have doubts whether the benefits will be worth it. Would love to hear some re-assurance! ;)

      * The ecosystem for microservices seems pretty closely tied to akka & lagom. These are quite complex in their own right and we've been having trouble with the latter in particular. Curious to learn about alternatives. ZIO?

      * Re: DSLs. Also not a huge fan of DSLs. One refreshing thing about python is that often configuration can just be in Python itself (as in Django, for example). See also:

      [1] https://erikbern.com/2018/08/30/i-dont-want-to-learn-your-garbage-query-language.html

      [2] https://github.com/cf020031308/cf020031308.github.io/blob/master/blog/i-dont-want-to-teach-my-garbage-dsl-either.md

      [3] https://twitter.com/antonycourtney/status/589238574429515777

    • archerabiAug 2019

      Better.com | Software Engineers; Product Managers; DevOps; Data Scientists | New York City (NYC) | ONSITE | Full-time https://better.com

      We're looking for:

      - Software Engineers ( Senior, Junior, Frontend, Backend, Full stack, infrastructure, QA )

      - Product managers

      - Data Scientists

      We’re one of the fastest growing homeownership companies in America. Why? Because we’re building a better way to get home and our customers love it.

      So far, we’ve:

      - Helped more than 10,000 families get home

      - Financed over $3B in loans

      - Saved families an average of $32,000 in fees over the life of their loans

      - Grew our geographic coverage to 36 states, up from 15 states from a year ago

      Better people:

      - Open source authors of popular projects like Annoy (https://github.com/spotify/annoy) and Holder (https://github.com/imsky/holder)

      - A Head of Engineering who writes a fun blog (http://erikbern.com/)

      Better technology:

      - We continuously ship code to production 50-100 times every day

      - Node.js, Python (3.6) and Scala for services

      - React, webpack 4, SCSS, Ember.js on the frontend
      - TypeScript / ES7 across the stack

      I would love to tell you more. Please apply directly on https://better.com/about-us/careers?utm_source=hn or email me at areddy@better.com

    • rm999Jul 2016

      I don't get the innovation in this paper - are they just running word2vec on groups of items? If so, Spotify has been doing this on playlists for years now: https://erikbern.com/2013/11/02/model-benchmarks/

      Also, I know the paper isn't claiming state-of-the-art, but their SVD results are horrendous. Standard CF would create much better artist-artist pairings with even a medium sized dataset.

      As an aside, I've run some quantitative and qualitative tests and have found the best recommendations come from a combination of user-item and item-item. I co-gave a talk at the NYC machine learning meetup recently (https://docs.google.com/presentation/d/1S5Cizi9LFQ7l0bMYtY7gASvOPqxNsQk0-NuP5KWAl-4/pub?start=false&loop=false&delayms=3000&slide=id.p4) that shows how this can work, starting at slide 20. The idea is to create a candidate list of matches using item-item, and then reorder using item-user. I've found this creates "sensible" suggestions using item-item, but truly personalizes when re-ordering. You can remove obvious recommendations by removing popular matches or matches the user has already interacted with (I consider this a business decision rather than something inherent in the algorithm).

    • capablewebJul 2022

      I guess one good example (that was mentioned just yesterday here on HN) would be Flask vs FastAPI: https://news.ycombinator.com/item?id=31953470 - "There are no open issues or pull requests on Flask "

      Quick count finds that FastAPI has 48422 lines of code, while Flask has 9995. Flask just achieved "Zero standing issues/PRs" while FastAPI has 1.1K open issues and ~500 open PRs.

      Large surface area/API quickly leads to be overwhelmed when you're trying to maintain it. Adding new features/fixing existing ones becomes harder as well.

      Best bet to make sure something is maintainable over time is to add as little as possible to it, and if you really have to, make sure you're also removing something at the same time.

      Otherwise you need a massive team just to be able to "survive" and not making things rot.

      There is this blogpost as well about the "half-life of code": https://erikbern.com/2016/12/05/the-half-life-of-code.html

      Someone run that tool on the Clojure codebase as well, and it really shows how well the Clojure codebase has been written, as most code that was initially written is still there and does what it needs, without having to be rewritten.

    • crazygringoMar 2019

      I was very curious to see how this sounded.

      They did a "great" job... for me, it's exactly ambiguous between a high-pitched male voice and a deep-pitched female voice. It's like the old "is it a vase or two faces?" illusion, or "which way is the ballerina spinning?" It keeps flipping in my brain.

      But for the same reason, I would never choose it because it sounds so out-of-the-ordinary, an extreme outlier for human voices. When a computerized voice is speaking, I want it to sound "natural" (e.g. common, unexceptional) so that I'm paying attention to the message, not the voice.

      Unfortunately a single "gender-neutral" voice turns out to sound quite uncommon, very exceptional. I only know a couple of people who sound like that, out of 1000's. I applaud the intention, but unfortunately I don't think it works in the end.

      Regularly or randomly alternating between "average" female and male voices feels like perhaps a better practical solution, matching the two "humps" in the bimodal distribution of actual voice frequencies. [1]

      [1] https://erikbern.com/2017/02/01/language-pitch.html

    • torstenvlDec 2021

      You don't need data to prove that the number of Nouveau apples someone purchases will go down if I, the sole farmer and distributor, raise the price. The application of an economic law to a new problem doesn't require the law to be re-proved.

      The only evidence PG needs is that people continue to spend money on private schools in order to increase university admissions. That serves as evidence that private schooling increases acceptance rates in competitive admissions. It is a variable that schools select for.

      When selections are made based on multiple criteria, and the market is mutually competitive, it follows that within each selection set (except sometimes those at the very, very top) those criteria will be negatively correlated.

      Because academic performance and private schooling are both criteria that universities use in selecting admitted students, those two traits will be negatively correlated within each student body, i.e., "at any given university."

      https://erikbern.com/2020/01/13/how-to-hire-smarter-than-the-market-a-toy-model.html

    Related

    Ben Fredericksonbenfrederickson.com46 people

    GitHub Won’t Help You with Hiring

    Ben Frederickson
    Personal · last shared 2026
    Stitch Fix Multithreadedmultithreaded.stitchfix.com87 people

    Engineers Shouldn’t Write ETL

    Stitch Fix Multithreaded
    Company · last shared 2025
    DaedTech (Erik Dietrich)daedtech.com196 people

    How Developers Stop Learning: Rise of the Expert Beginner (2012)

    DaedTech (Erik Dietrich)
    Personal · last shared 2026
    Peter Steinbergersteipete.me44 people

    Just talk to it – A way of agentic engineering

    Peter Steinberger
    Personal · last shared 2026
    Sean Goedeckeseangoedecke.com182 people

    How I ship projects at big tech companies

    Sean Goedecke
    Personal · last shared 2026
    Edwin Chenblog.echen.me41 people

    Exploring LSTMs

    Edwin Chen
    Personal · last shared 2023
    Steve Hanovstevehanov.ca106 people

    20 lines of code that beat A/B testing every time

    Steve Hanov
    Personal · last shared 2026
    Primary Objectsprimaryobjects.com26 people

    Preparing for a Technical Interview: Algorithms and Data Structures

    Primary Objects
    Personal · last shared 2024