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 Conf 12 - Boundaries by Gary Bernhardt

    Confreaks

    8 HN recommenders · recommended in 11 months, 2015–2024

    YouTube

    45:55 · 58K views · Nov 25, 2012

    Gary Bernhardt's RubyConf 2012 talk on testing in isolation without mocking everything. It goes through behavior versus data, mutation versus immutability, and how a functional core with an imperative shell yields natural isolation and parallelism.

    HN recommends it as the canonical presentation of 'functional core, imperative shell' and a practical answer to unit versus integration testing.

    Software Engineering & LanguagesTesting, debugging & developer toolsSoftware architecture & designFunctional programming
    1. 38:47
      RailsConf 2014 - All the Little Things by Sandi MetzConfreaks190K views • 12 years ago
    2. 32:23
      Rails Conf 2013 The Magic Tricks of Testing by Sandi MetzConfreaks145K views • 13 years ago
    3. 49:54
      The Clean Architecture in PythonNext Day Video114K views • 12 years ago
    4. 34:55
      "Outperforming Imperative with Pure Functional Languages" by Richard FeldmanStrange Loop Conference98K views • 5 years ago
    5. 53:22
      Ruby Conf 12 - Y Not- Adventures in Functional Programming by Jim WeirichConfreaks66K views • 13 years ago
    6. 1:02:26
      Solving Problems the Clojure Way - Rafal DittwaldClojure/north87K views • 7 years ago
    7. 51:40
      Domain Modeling Made Functional - Scott WlaschinNDC Conferences71K views • 9 years ago
    8. 35:53
      RailsConf 2015 - Nothing is SomethingConfreaks84K views • 11 years ago
    9. 1:00:10
      Functional architecture - The pits of success - Mark SeemannNDC Conferences152K views • 10 years ago
    10. 1:16:14
      Spec-ulation Keynote - Rich HickeyClojureTV136K views • 9 years ago
    11. 1:06:39
      Ruby Midwest 2011 - Keynote: Architecture the Lost Years by Robert MartinConfreaks172K views • 14 years ago
    12. 41:19
      Stuart Sierra - Components Just Enough StructureClojureTV36K views • 12 years ago
    13. 35:32
      Cheng Lou - On the Spectrum of Abstraction at react-europe 2016ReactEurope63K views • 10 years ago
    14. 25:06
      "Making Impossible States Impossible" by Richard Feldmanelm-conf63K views • 10 years ago
    15. 40:00
      "Agility & Robustness: Clojure spec" by Stuart HallowayStrange Loop Conference25K views • 10 years ago
    16. 36:53
      Rails Conf 2012 Keynote: Simplicity Matters by Rich HickeyConfreaks220K views • 14 years ago
    17. 19:44
      Mountain West Ruby 2012 Capability vs. Suitability by Gary BernhardtConfreaks22K views • 14 years ago
    18. 40:50
      Ruby Manor 3 - Programming with Nothing by Tom StuartConfreaks13K views • 13 years ago
    19. 1:14:52
      Effective Programs - 10 Years of Clojure - Rich HickeyClojureTV176K views • 9 years ago
    20. 7:15
      7 minutes of Pharo Smalltalk for RubyistsAvdi Grimm37K views • 11 years ago

    12 comments from Hacker News

    1. @dnauticsMar 2020· in “I Don't Use Classes”

      > I find some problems are solved better in an OO way such as interacting with a relational database. I've switched to functional interactions with a database, (Elixir/Ecto) and really, it's much better. In particular the explicit and declarative nature of the database interactions combines the convenience of an ORM with "not hiding important gotchas from you". I'm not arguing for pure functional systems (which I can see going very poorly with relational databases). There are some things that objects are good at like caching state as a model. But even here the FP systems typically do it better via FP actors and (again, impure) message passing, which enforces no-shared memory, and at least in erlang virtual machine systems, couples segregated state with limiting blast radius for your systems failure domains, which is 150% the "right thing to do". Of course if we're getting pedantic, this is even close to OO the way that Alan Kay imagined it, than what the OP and GP talk about, and I don't consider that to be OO in the contemporary, colloquial sense of "everything that happened after Bjarne Soustroup invented C++" I highly recommend this video for a more philosophical take on how to do "impure FP" without OO that is informed by a decade of industry experience: this video which is by Gary Bernhardt (of WAT fame) > I look for the right tool for the job rather than some idealistic purity This is all about right tool for the job. IMO, FP code is easier to read, easier to reason about,

      Strongly recommendsView on HN
    2. @pmarreckApr 2016· in “Have Software Developers Given Up?”

      Here is the infamous Nagappan TDD paper from Microsoft Research [LINK] Also discussed in this infoq article [LINK] Here's someone's thesis paper on it, with data: [LINK] There's also interesting discussions like this [LINK] "it is my experience that the value proposition for TDD grows exponentially as the time and resources involved in a project grows linearly." This has also been my own experience. This person's comment also is interesting and has data [LINK] Some of the above is empirical (read: scientific, no-bullshit) data. My opinion on it has grown to the point that I think TDD should literally be inseparable from programming, and the two together should simply be called, "programming." Lacking any unit tests whatsoever (TDD or otherwise) should be called, "taking stupid, extremely hazardous risks to save a little time, like reading your phone while driving" I've not found a programming task in at least 5 years that wasn't waaaay better-written when done via TDD. Some things, like IO, can be a challenge to unit-test, but that's why we have great ideas to solve that like Gary Bernhardt's awesome "Boundaries" talk this video

      Strongly recommendsView on HN
    3. @AaronFrielOct 2020· in “A Theory of Software Architecture”

      A few years ago I was on a team and the dev lead had a practice of sharing Gary Bernhardt's Boundaries talk every time there was some degree of rotation or churn on the team. Almost part of the onboarding. As a functional programming aficionado, I didn't need the sales pitch, but it was the presentation that was gripping. Keep in mind, Ruby isn't a functional language, but here was this presenter describing essentially how you write good Haskell code, but in Ruby! A language that makes it so easy to mutate in place that it's known for libraries that "monkey patch" base classes and can change the definition of operators and functions at runtime! Fantastic talk, fantastic presentation. I now share it with my new engineering colleagues too. Here's the talk where he talks about imperative shell, functional core, "Boundaries": this video

      Strongly recommendsView on HN
    4. @dnauticsJan 2020· in “Elixir v1.10”

      if you are a rubyist, I can't more strongly recommend watching this video, which has nothing to do directly with Elixir (in fact it precedes elixir by a couple of years) but if the topics that Bernhart (of wat fame) brings up resonate with you, then you will really like Elixir. this video

      Strongly recommendsView on HN
    5. @zachroseMar 2015· in “Ask HN: Front-end “design patterns”?”

      Forgive me for being vague and brief, but I've been trying to test my UIs for the last year or so and this is what I've come up with. I've found the ideas in Gary Bernhardt's talk, Boundaries (1), to be very helpful in figuring out how to test interactive web UIs. The basic idea is that DOM manipulation can be an "imperative shell" with as little logic and as few conditionals as possible. Derive the state of your UI component with separate functions and methods that return plain values (a "functional core"), and write tests for those because testing for values is easy. So no, don't test for the presence of classes and IDs. Test your imperative shell once, maybe even manually or with an integration test, and that's probably enough. Angular and React both encourage something like this approach, but you don't need those technologies to do it this way. In Backbone, for instance, just try to avoid conditionals and logic in your templates and render methods. If you think your UI piece needs to render with conditionals because it can be in different states, ask yourself if those states are just appearances that can be programmed declaratively with classes and CSS. Also, testing is so much easier when you limit API surface areas. So if you're using a library like Backbone, where models and views both have many methods with many ways they can be called and used, don't give them direct references to each other. I've had some success in having models and views communicate only with a gl

      RecommendsView on HN