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.
What HN saysHN commenters link his npm security post on multiple dependency versions, and recommend his Scala tour, though one notes it is dated.
60HN people shared it
7linked it in comments
68stories submitted
909story points
8 months agolast shared
2009people per year2026
Most-shared posts
- 1Announcing Rails 6: An Imagined Keynote5 people · 11 points · first shared 2016 · 1 comments on HN
- 2Web Components in Earnest5 people · 8 points · first shared 2024 · discussion on HN
- 3Another Tour of Scala5 people · 4 points · first shared 2009 · discussion on HN
- 4Source Code Typography3 people · 73 points · first shared 2013 · 65 comments on HN
- 5Four Better Rules for Software Design3 people · 5 points · first shared 2019 · discussion on HN
- 6Single Responsibility Principle and Rails3 people · 5 points · first shared 2012 · 1 comments on HN
- 7Why I'd never work for Google, Twitter, or Facebook2 people · 215 points · first shared 2011 · 163 comments on HN
- 8A Real Keyboard for Programmers?2 people · 38 points · first shared 2013 · 80 comments on HN
- 99 facets of an awesome command-line app2 people · 7 points · first shared 2012 · discussion on HN
- 10Production is All That Matters2 people · 2 points · first shared 2013 · discussion on HN
- 11The frightening state security around npm package management2 people · first shared 2021
- 12Brut: A New Web Framework for Ruby1 people · 208 points · first shared 2025 · 74 comments on HN
- 13If You Call Out Bad Code, Make Sure It's Bad First1 people · 174 points · first shared 2013 · 128 comments on HN
- 14Ruby on Rails: Still the Best Web App Framework for Most Teams1 people · 62 points · first shared 2020 · 29 comments on HN
- 15Rails' Degenerate Front-End Support1 people · 16 points · first shared 2014 · 2 comments on HN
What HN people wrote when they linked it
davetron5000 · 2025-05-06
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.
niftich · 2016-08-14
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-…
felipemesquita · 2025-05-12
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…
walrus01 · 2021-02-10
npm in particular has been problematic for a long time:
https://naildrivin5.com/blog/2019/07/10/the-frightening-state-security…
https://techbeacon.com/security/check-your-dependencies-githubs-npm-fi…
https://thenewstack.io/npm-password-resets-show-developers-need-better…
wsargent · 2017-03-27
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.htm…
partycoder · 2017-03-27
"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.
phillmv · 2012-06-22
He also brought up http://www.naildrivin5.com/blog/2012/06/10/single-responsibility-princ… - and I had a hard figuring out if it was meant as satire or not.