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

    Solving Problems the Clojure Way - Rafal Dittwald

    Clojure/north

    10 HN recommenders · recommended in 12 months, 2019–2025

    YouTube

    1:02:26 · 87K views · May 24, 2019

    Rafal Dittwald's Clojure/north talk shows how to move from writing Java-style code in Clojure to thinking in data-driven, functional terms. He walks through a JavaScript example, refactoring imperative code step by step into a functional core.

    HN repeatedly recommends it as a fantastic demonstration of procedural, OOP and FP approaches to the same problem, and of functional core and imperative shell.

    Software Engineering & LanguagesFunctional programmingSoftware architecture & designTesting, debugging & developer tools
    1. 1:12:56
      Lecture 1A: Overview and Introduction to LispMIT OpenCourseWare421K views • 7 years ago
    2. 1:03:29
      Maybe Not - Rich HickeyClojureTV181K views • 7 years ago
    3. 46:09
      Why Isn't Functional Programming the Norm? – Richard FeldmanMetosin1.6M views • 7 years ago
    4. 1:14:52
      Effective Programs - 10 Years of Clojure - Rich HickeyClojureTV176K views • 9 years ago
    5. 50:01
      Simplicity Ain't Easy - Stuart HallowayClojureTV24K views • 13 years ago
    6. 1:01:39
      "Simple Made Easy" - Rich Hickey (2011)ClojureTV434K views • 5 years ago
    7. 53:56
      Expert to Expert: Rich Hickey and Brian Beckman - Inside Clojurejasonofthel33t119K views • 13 years ago
    8. 41:19
      Stuart Sierra - Components Just Enough StructureClojureTV36K views • 12 years ago
    9. 41:09
      ClojureScript for Skeptics - Derek SlagerClojureTV72K views • 10 years ago
    10. 36:42
      Bottom Up vs Top Down Design in Clojure - Mark BastianClojureTV29K views • 10 years ago
    11. 51:40
      Domain Modeling Made Functional - Scott WlaschinNDC Conferences71K views • 9 years ago
    12. 1:05:51
      The Functional Programmer's Toolkit - Scott WlaschinNDC Conferences79K views • 7 years ago
    13. 1:48:13
      Clojure for Java Programmers Part 1 - Rich HickeyClojureTV131K views • 13 years ago
    14. 58:39
      Tim Ewald - Clojure: Programming with Hand ToolsClojureTV48K views • 12 years ago
    15. 46:18
      Om Next - David NolenClojureTV44K views • 11 years ago
    16. 36:14
      Barliman: trying the halting problem backwards, blindfolded - William Byrd, Greg RosenblattClojureTV7.9K views • 9 years ago
    17. 1:02:50
      The Language of the System - Rich HickeyClojureTV174K views • 13 years ago
    18. 32:44
      Clojure in a nutshell by James TrunkFunc Prog Sweden104K views • 5 years ago
    19. 39:49
      Hammock Driven Development - Rich HickeyClojureTV333K views • 13 years ago
    20. 49:09
      Debugging with the Scientific Method - Stuart HallowayClojureTV25K views • 10 years ago

    15 comments from Hacker News

    1. @blunteFeb 2022· in “Case against OOP is understated, not overstated (2020)”

      -- (Even if you don't read this whole comment, I urge you to watch this fantastic video which illustrates procedural, OOP(lite), and FP approaches to a sample problem: this video (Despite the name, it illustrates JavaScript, not Clojure). If you follow this approach, you don't even have to tell people you are doing FP. You'll just end up with better, more understandable, and more easily testable code.) -- The early (early as in C++ days) benefit of OOP was probably that it made programmers stop and plan before coding. Having learned FP 20 years after learning OOP, I feel certain that I can do the same things in less and more understandable (and MUCH more easily testable) code in FP. OOP was awesome for a small set of cases and for academic scenarios. But like REST, it doesn't map well to all needs. Then it becomes awkward and unnecessarily complicated. FP, or simplified as immutable data transformations with necessary mutations pushed to the edges, works everywhere, all the time. In FP you can still choose to model your data in hierarchies, keeping some of the useful bits of OOP. But it's still data in, results out. Until you've spent time on real projects in both, you cannot appreciate why FP is superior. (And to be clear, I'm not even talking about Haskell and type-obsessed FP. Perhaps because I'm not a Haskell guy, I can't appreciate it. But it smells to me like an extreme of a good thing (and therefore not usually the best thing for the situation); but I digress.) Concretely

      Strongly recommendsView on HN
    2. @tw25497050Dec 2020· in “I rewrote a Clojure tool in Rust”

      Sometimes the architecture/algorithm matters, and sometimes the architecture/algorithm needs to align with the language. Absent seeing the broader code base [1], I'm inclined to think that the author's larger design led to these expensive functions existing as they did [2]. Pure speculation on my part, but if one has a lot of experience with imperative, mutable languages, one might design a system that ends up being not so great when written in a functional, immutable language. If so, then seeing improvements when directly porting to an imperative, mutable language might be not so surprising. Tangent: Regarding the power and importance of code structure, I highly recommend watching "Solving Problems the Clojure Way" by Rafal Dittwald at Clojure North 2019 [3]. [1] I didn't see a link, but if it's available, I'd love to take a look. [2] The `rule-field-diff` function for example seems to be burdened with some odd choices, e.g., taking in two "rules" as arguments, (which seem to be collections of rules keyed by field), then using two hard-coded "operations" (also keyed by field), and yielding a map whose values are sequences by field (I think). Off the top of my head I don't see why this fn needs to work across multiple fields in the first place (i.e., any field-specific "loop" should be in a surrounding context. Ditto for `diff-rules-by-keys`. [3] this video

      Strongly recommendsView on HN
    3. @michaelteterFeb 2023· in “Functional Core, Imperative Shell (2012)”

      I like to build this way when possible. Unfortunately, I find many people - especially tech leads - resistant to this approach. The first and most common reason is, "Why do I need this? What we are doing is fine." Or when the attitude is positive about it, the common issue is, "I think this would be too difficult for our devs to adopt." I find both of these scenarios disappointing and frustrating, because technology (and software) is usually about improving processes and systems so better results can be made more easily. But at this point it feels like a lost cause, or rather a hill not worth dying on. For my own projects, I go this path; for others, I work dumber and keep the corporate apple cart upright. Rant aside, there is a video which I really like that demonstrates this functional core/imperative shell approach: Solving Problems the Clojure Way - Rafal Dittwald. It is a Clojure talk, but it gives an imperative to functional refactor demo in JavaScript in the middle of the talk. Even though it is a toy example, it is big enough that the result shows a meaningful difference in approach. this video

      Strongly recommendsView on HN
    4. @ngcc_hkDec 2019· in “The Source Code of “Solving Problems the Clojure Way – Rafal Dittwald””

      Watch the video via recommendations here, but no longer can find it. [Solving Problems the Clojure Way - Rafal Dittwald]( this video ) It is a great video and is highly recommended. Spent two days to type and tidy up the source code. If you want the source, and if you like me cannot find it, you may try my version. Just hope Mr. Dittwald would not mind.

      Strongly recommendsView on HN
    5. @slifinJun 2020· in “A History of Clojure [pdf]”

      Hi fellow PHP'er and in a long time gone C#er here I would highly recommend learning the spirit of Clojure first: [LINK] this video There are a few classes of tech that are uniquely Clojure: Data driven DSLs: - [LINK] - [LINK] - [LINK] Hyper normalised relational databases: - [LINK] - [LINK] - [LINK] Advanced SPA tech (hyper normalised data driven): - [LINK] - [LINK] Once you understand the spirit and rationale for Clojure it becomes apparent why other communities don't have this kind of tech yet Once it gets down to practical things I recommend using clj-Kondo with type hints, Cursive for Intellji, make sure you learn how to hot code inject new code into your running program using your editor shortcuts, and TDD in Clojure is also excellent and immediate: [LINK] Also look out for GraalVM and Babashka we're using it to compile fast native binaries out of Clojure

      RecommendsView on HN