Skip to content
HomeVideos
AllLongsCategoriesPlaylists
BooksBlogsPodcasts
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

    Ruby Midwest 2011 - Keynote: Architecture the Lost Years by Robert Martin

    Confreaks

    10 HN recommenders · recommended in 11 months, 2013–2022

    YouTube

    1:06:39 · 172K views · Jan 18, 2012

    Robert C. Martin's Ruby Midwest 2011 keynote argues that software architecture should express the application's intent rather than its framework. He covers separating entities, interactors and boundaries so the web, database and framework are details.

    Frequently recommended as an influential talk on decoupled, testable architecture, though some commenters push back on Martin's TDD advocacy.

    Software Engineering & LanguagesSoftware architecture & designPython, Ruby & scripting languages
    1. 1:04:33
      Alan Kay at OOPSLA 1997 - The computer revolution hasnt happened yetJeff Gonis127K views • 13 years ago
    2. 58:39
      Robert C Martin - Clean Architecture and Designgnbitcom285K views • 12 years ago
    3. 1:23:35
      "Uncle" Bob MartinProgram on Entrepreneurship179K views • 11 years ago
    4. 1:18:21
      "Uncle" Bob Martin - "The Future of Programming"Paul Stringer's Mobile Tech1.8M views • 10 years ago
    5. 1:13:24
      The Principles of Clean Architecture by Uncle Bob MartinNorfolkDevelopers591K views • 10 years ago
    6. 1:15:58
      October CincyRb - Jim Weirich on Decoupling from RailsLaunch Scout48K views • 13 years ago
    7. 1:48:42
      Clean Code - Uncle Bob / Lesson 1UnityCoin2.2M views • 7 years ago
    8. 1:00:56
      RailsConf 09: Robert Martin, "What Killed Smalltalk Could KO'Reilly87K views • 17 years ago
    9. 28:06
      MountainWest RubyConf 2014 - But Really, You Should Learn SmalltalkConfreaks27K views • 12 years ago
    10. 49:54
      The Clean Architecture in PythonNext Day Video114K views • 12 years ago
    11. 38:47
      RailsConf 2014 - All the Little Things by Sandi MetzConfreaks190K views • 12 years ago
    12. 45:55
      Ruby Conf 12 - Boundaries by Gary BernhardtConfreaks58K views • 13 years ago
    13. 35:53
      RailsConf 2015 - Nothing is SomethingConfreaks84K views • 11 years ago
    14. 51:57
      Lone Star Ruby Conference 2010 Real Software Engineering by Glenn VanderburgConfreaks30K views • 15 years ago
    15. 1:00:10
      Functional architecture - The pits of success - Mark SeemannNDC Conferences152K views • 10 years ago
    16. 1:00:19
      How To Design A Good API and Why it MattersGoogle TechTalks453K views • 19 years ago
    17. 1:03:31
      Brian Goetz - Stewardship: the Sobering PartsClojureTV39K views • 11 years ago
    18. 1:23:35
      Bob Martin SOLID Principles of Object Oriented and Agile DesignPeople career517K views • 11 years ago
    19. 44:36
      Hacker Way: Rethinking Web App Development at FacebookMeta Developers900K views • 12 years ago
    20. 36:53
      Rails Conf 2012 Keynote: Simplicity Matters by Rich HickeyConfreaks220K views • 14 years ago

    14 comments from Hacker News

    1. @SevenNationOct 2022· in “Using a framework will harm the maintenance of your software”

      > Many people will argue that not using a framework means write everything yourself. This is a false dichotomy. We can use libraries and frameworks just fine. ... > But we should give them a clear, and well-isolated place in our project. ... There's an excellent, if older, presentation called "Architecture, the Lost Years" that addresses exactly this problem and gives very specific, actionable guidance on how to solve it: this video But how to pull off this decoupling? The answer is both obvious and surprising. Define a boundary. On one side is the framework. On the other side is your code. Through the boundary, only dumb data structure can pass. JSON works. So do structs. So does XML. The point is that these are behaviorless blobs of data. This buys you a lot. You can run your application completely detached from the network, a database, and other expensive dependencies. So testing becomes much simpler and easier. And of course, you can replace the framework by writing new boundary code. The other big lesson has something to do with why frameworks get added to a project in the first place. When designing a system, the goal should be to defer major decisions for a long as possible. That's when the best information is available. Sometimes you can just defer until the point becomes moot, which is a major win. Reaching for a framework before being forced to do so sets up the kind of situation the author is talking about.

      Strongly recommendsView on HN
    2. @mpweiherApr 2014· in “TDD is fun”

      Excellent riposte! Mine was going to be somewhat less polite :-) Can't stress enough that TDD is not about testing (sth. DHH, like many if not most critics gets wrong). It is about development and design. The fact that you get a pretty decent test suite out of it is a nice side effect. (Love me those side-effects, wouldn't want to program without 'em). I also find that whenever I skimp, it always comes back to bite me. And usually it was because I hadn't understood the problem-space well enough to write a proper test. That's one important part of TDD for me: I have to understand the requirements well enough to actually write a test for them. And the OP is also right in that Rails is a bad environment for TDD, as far as I can tell, because all the magic and auto-integration gets in the way and has to be laboriously stubbed/mocked etc. Maybe it's time the community got over Rails. (See also Uncle Bob's excellent architecture talk: this video ).

      Strongly recommendsView on HN
    3. @catwellOct 2018· in “Ask HN: What are some of the best technical talks you've heard?”

      The talk that had the most influence on how I write software is Robert 'Uncle Bob' Martin's "Architecture: The Lost Years" [1]. Being a Ruby conference keynote, it helps if you know how Ruby on Rails works, but the lessons apply to all software. Another one would be "Let It Crash! The Erlang Approach to Building Reliable Services" by Brian Troutwine. [2] I don't know if you would call it "technical" but Brett Slatkin's talk on Cohort Analysis is something anyone interested in tools to analyze how our users behave should watch. [3] [1] this video [2] [LINK] [3] [LINK]

      Strongly recommendsView on HN
    4. @AnchorSep 2013· in “Slow Tests Are the Symptom, Not the Cause”

      Here's Uncle Bob talking on his version of the idea extensively: this video The main idea is to separate the system into entities, interactors and boundaries, which correspond roughly to model, controllers and interfaces+DTOs (Data Transfer Objects), but with the difference that model classes are not exposed through the interfaces. Rather, the DTOs are used to communicate the changes in the data. We have been using this approach for a year now, with REST on top, and it so far has worked beautifully. The entities map naturally to REST resources and DTOs makes nice request and response classes. Armed with CQRS (now I sound enterprise-y), the data storage is easy to work with using the same DTOs (the data storage and its interface do not know anything about the entities either). On the DB implementation level, we work on the DTOs, which are trivial to store to the database (even without ORM, although it does remove much of the boilerplate). Only one class - the entity repository - is needed to convert the DTOs to entities, and this only happens on create, update, and delete. Reads (due to CQRS) go directly to DB without instantiating any entities - neat. We also use 'unit of work' -pattern to abstract the notion of transaction on create, update, and delete operations, which simplifies the interactor code, hiding the nature of the data storage (making it a swappable in this respect too). But to stay on topic, our tests are fast too as the interactors can be tested by injecting an in

      RecommendsView on HN
    5. @BarreraApr 2022· in “Unit Testing is Overrated (2020)”

      > Although the design above is perfectly valid in terms of OOP, neither of these classes are actually unit-testable. Because LocationProvider depends on its own instance of HttpClient and SolarCalculator in turn depends on LocationProvider, it’s impossible to isolate the business logic that may be contained within methods of these classes. The design of those classes is bad, and the perceived need to reach for mocks (or interfaces) is telling you that. The next step the author takes is to go for interfaces. That's not what I'd do. Instead, I'd decouple network from calculation with intermediate dumb data structures. The network side produces the data structure and the calculation side consumes it. The network side can further be broken down with a transformation of the API call result into the dumb data structure used for calculations. This idea comes from an old Bob Martin presentation [1]. The whole thing is worth watching to put it into context. This is the kind of thing that never seems to get discussed in these pieces praising integration tests over unit tests. For even better results, ditch the classes altogether and just use functions. It's quite surprising how badly designs come off the rails with the "everything is a class" model. [1] this video

      RecommendsView on HN