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
    D

    David Bryant Copeland

    naildrivin5.com · Personal blog · on HN since 2009

    David Bryant Copeland, a software developer, writes about Rails, Scala, web components, software design, and the security of npm.

    Visit blogRSSHN submissions
    ProgrammingWeb DevelopmentSecurity
    What HN says

    HN commenters link his npm security post on multiple dependency versions, and recommend his Scala tour, though one notes it is dated.

    Stats for nerds
    60HN people shared it
    68linked in comments
    909story points
    May 2025last shared
    2012people per year2025

    Top posts on HN

    1. 1
      Why I'd never work for Google, Twitter, or Facebook
      2 people · 215 points · first shared 2011 · 163 comments on HN
    2. 2
      Brut: A New Web Framework for Ruby
      1 person · 208 points · first shared 2025 · 74 comments on HN
    3. 3
      If You Call Out Bad Code, Make Sure It's Bad First
      1 person · 174 points · first shared 2013 · 128 comments on HN
    4. 4
      Source Code Typography
      3 people · 73 points · first shared 2013 · 65 comments on HN
    5. 5
      Ruby on Rails: Still the Best Web App Framework for Most Teams
      1 person · 62 points · first shared 2020 · 29 comments on HN
    6. 6
      A Real Keyboard for Programmers?
      2 people · 38 points · first shared 2013 · 80 comments on HN
    7. 7
      Rails' Degenerate Front-End Support
      1 person · 16 points · first shared 2014 · 2 comments on HN
    8. 8
      Announcing Rails 6: An Imagined Keynote
      5 people · 11 points · first shared 2016 · 1 comments on HN
    9. 9
      Making It Right: Technical Debt vs. Slop
      1 person · 10 points · first shared 2012 · 5 comments on HN
    10. 10
      One Week with Desktop Linux After a 20 Year Absence
      1 person · 10 points · first shared 2025 · 3 comments on HN

    What HN people wrote when they linked it

    • niftichAug 2016

      Since they're compiled into the code, it means you can't change them without recompiling, so they're not actually configuration. But they're not actually code either, so they can't be subclassed or inherited, don't support generics, and have other quirks [1]. Furthermore, they are a sort of explicit notation to make you feel like you're getting 'convention' over 'configuration', but if it were truly convention you wouldn't need them in the first place.

      For example, to teach my class how to serialize itself into JSON, I can compile com.fasterxml.jackson annotations into it, but by doing so I've made a particular JSON library a dependency of myproject-datatypes. I'd rather my myproject-controller or some other layer of my application take care of how the data looks over JSON. Luckily Jackson supports an entirely different way [2] of teaching it how to map a class, but not all libraries are so nice.

      That is not to say annotations don't have their place. They're good declarative structures, but in my opinion they are used in places where they shouldn't be. This blog post [3] from 2009 accurately describes how I feel about annotations.

      [1] http://www.cowtowncoder.com/blog/archives/2009/02/entry_216.html

      [2] https://github.com/FasterXML/jackson-docs/wiki/JacksonMixInAnnotations

      [2] http://naildrivin5.com/blog/2009/03/11/java-annotations-javas-love-of-configuration-over-convention.html

    • davetron5000May 2025

      This is my favorite game for the 2600.

      I built a clone of it for Windows using Direct X in probably 1999/2000. I don't have a Windows machine, but I think Microsoft's obsession with backward compatibility means it probably still works:

      https://naildrivin5.com/adventure/index.html

      Here's the C++ code in all its glory: https://github.com/davetron5000/adventureclone/

      It replicates the 2600 game, and adds two new levels (additional castle and maze), and two new (optional) objects, a candle that shows more of the labyrinths, and a shield that prevents the dragons from eating you.

    • walrus01Feb 2021

      npm in particular has been problematic for a long time:

      https://naildrivin5.com/blog/2019/07/10/the-frightening-state-security-around-npm-package-management.html

      https://techbeacon.com/security/check-your-dependencies-githubs-npm-finds-nasty-trojan-packages

      https://thenewstack.io/npm-password-resets-show-developers-need-better-security-practices/

    • wsargentMar 2017

      The Artima book by Odersky is the bible, and so you need that one.

      For reference, I like http://naildrivin5.com/scalatour although it's 2.8 rather than the current 2.12.

      For style guide, I'd go with Li Hiayo's blog, notably the Strategic Style series: http://www.lihaoyi.com/post/StrategicScalaStylePracticalTypeSafety.html

    • felipemesquitaMay 2025

      This post (2019) by David Bryant Copeland about npm security goes into some of the complications that arise when multiple versions of a dependency are allowed to be loaded simultaneously:

      https://naildrivin5.com/blog/2019/07/10/the-frightening-state-security-around-npm-package-management.html

    • partycoderMar 2017

      "Another tour of Scala": http://naildrivin5.com/scalatour was informative for me.

      It's a bit dated, mostly targetting Scala 2.8. Current version is 2.12. But should not be fundamentally different.

    Related

    37signals Devdev.37signals.com71 people

    Running our Docker registry on-prem with Harbor

    37signals Dev
    Company · last shared 2026
    Yehuda Katzyehudakatz.com137 people

    Everyone Who Tried to Convince Me to Use Vim Was Wrong

    Yehuda Katz
    Personal · last shared 2025
    DHHworld.hey.com/dhh654 people

    The Framework Desktop is a beast

    DHH
    Personal · last shared 2026
    Charlie Robbinscirw.in34 people

    MVC is dead, it's time to MOVE on

    Charlie Robbins
    Personal · last shared 2025
    Rob Conerywekeroad.com125 people

    PostgreSQL Rising

    Rob Conery
    Personal · last shared 2014
    AkitaOnRailsakitaonrails.com53 people

    Rails has won: The Elephant in the Room

    AkitaOnRails
    Personal · last shared 2026
    Ryan Biggryanbigg.com35 people

    MacBook Pro Keyboard Drives Me Crazy

    Ryan Bigg
    Personal · last shared 2026
    Unlimited Noveltyunlimitednovelty.com42 people

    Node.js has jumped the shark

    Unlimited Novelty
    Personal · last shared 2023