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

    Four Solutions to a Trivial Problem - Guy Steele Jr.

    Google TechTalks

    4 HN recommenders · recommended in 7 months, 2017–2023

    YouTube

    1:01:47 · 36K views · Jan 28, 2016

    Guy Steele presents a small geometric problem and compares four computational approaches: a classic sequential solution and three parallel-friendly ones. Each is illustrated pictorially and with working code, weighing total work against time to solution.

    HN points to it as a clear lesson that algebraic properties like associativity unlock parallelism, applicable in any language.

    Mathematics & Theoretical CSAlgorithms & data structuresFunctional programming
    1. 1:09:38
      "How to Think about Parallel Programming: Not!" - Guy L. Steele Jr. (Strange Loop 2010)Strange Loop Conference9.3K views • 5 years ago
    2. 1:07:22
      Invited Talk - Guy SteeleClojureTV39K views • 9 years ago
    3. 1:19:57
      Simon Peyton Jones: Data Parallel HaskellnuACM28K views • 16 years ago
    4. 53:22
      Ruby Conf 12 - Y Not- Adventures in Functional Programming by Jim WeirichConfreaks66K views • 13 years ago
    5. 1:07:10
      Brian Beckman: Don't fear the Monadjasonofthel33t415K views • 13 years ago
    6. 1:12:56
      Lecture 1A: Overview and Introduction to LispMIT OpenCourseWare421K views • 7 years ago
    7. 1:06:45
      Let's #TalkConcurrency Panel Discussion with Sir Tony Hoare, Joe Armstrong, and Carl HewittErlang Solutions13K views • 7 years ago
    8. 1:12:56
      Lecture 1A | MIT 6.001 Structure and Interpretation, 1986MIT OpenCourseWare995K views • 17 years ago
    9. 1:30:45
      The Simple Essence of Automatic Differentiation - Conal ElliottMicrosoft Research17K views • 8 years ago
    10. 35:15
      Solid Ground // Saša JurićEMPEX Conference14K views • 9 years ago
    11. 1:12:12
      2017 ACM PPoPP Keynote: It's Time for a New Old LanguageGuy Steele6.8K views • 9 years ago
    12. 1:02:15
      Lambda Calculus - Fundamentals of Lambda Calculus & Functional Programming in JavaScriptFullstack Academy228K views • 9 years ago
    13. 36:31
      Hey Underscore, You're Doing It Wrong!InfoQ141K views • 13 years ago
    14. 1:05:51
      The Functional Programmer's Toolkit - Scott WlaschinNDC Conferences79K views • 7 years ago
    15. 41:06
      "Unison: a new distributed programming language" by Paul ChiusanoStrange Loop Conference45K views • 7 years ago
    16. 40:50
      Ruby Manor 3 - Programming with Nothing by Tom StuartConfreaks13K views • 13 years ago
    17. 1:29:55
      Sorting Algorithms: Speed Is Found In The Minds of People - Andrei Alexandrescu - CppCon 2019CppCon184K views • 7 years ago
    18. 1:01:39
      "Simple Made Easy" - Rich Hickey (2011)Strange Loop Conference220K views • 5 years ago
    19. 42:03
      The Soul of Erlang and Elixir • Sasa Juric • GOTO 2019GOTO Conferences384K views • 7 years ago
    20. 58:22
      Lecture 1B | MIT 6.001 Structure and Interpretation, 1986MIT OpenCourseWare116K views • 17 years ago

    7 comments from Hacker News

    1. @tkfOct 2020· in “A quick introduction to data parallelism in Julia”

      Hi, the author here. One of the hidden messages of the introduction is: watch Guy Steele's talks [1][2][3] if you are interested in data parallelism! These talks are not Julia-specific and the idea is applicable and very useful in any languages. My libraries are heavily inspired by these talks. Of course, if you haven't used Julia yet, it'd be great if (data) parallelism gives you an excuse to try it out! It has a fantastic foundation for composable multi-threaded parallelism [4]. [1] How to Think about Parallel Programming: Not! [LINK] [2] Four Solutions to a Trivial Problem this video [3] Organizing Functional Code for Parallel Execution; or, foldl and foldr Considered Slightly Harmful [LINK] [4] Announcing composable multi-threaded parallelism in Julia [LINK]

      Strongly recommendsView on HN
    2. @heleninboodlerSep 2022· in “Someone is pretending to be me”

      This type of interviewing style is bullshit. It means the interviewer knows a better solution that is "clever" and expects you to either have the same cleverness epiphany on the spot or to have studied this question. Neither is actually very useful as a hiring criterion. Guy Steele gave an incredibly interesting guest talk[1] at google about four different ways to solve this exact problem, and the fact that it's an interesting enough topic for an hour long google talk should probably be a clue that you shouldn't be expected to invent the best solution on the whiteboard in 40 minutes. [1] this video

      RecommendsView on HN
    3. @platzAug 2018· in “Organizing Functional Code for Parallel Execution (2009) [video]”

      I enjoyed this talk along the same lines by Guy Steele, regarding not necessarily forcing a sequential solution to a non-sequential problem: Four Solutions to a Trivial Problem - Guy Steele Jr.: this video Look for steps that are commutative and/or associative in the problem to exploit parallelism.

      RecommendsView on HN
    4. @MathMonkeyManJul 2023· in “Coroutines for Go”

      Guy Steele Jr. worked on a language called "Fortress." There are a few good talks that he gives: - (toy problem) this video - (parallelism) [LINK] - (languages) [LINK]

      RecommendsView on HN
    5. @raphlinusFeb 2022· in “Mastering Dyalog APL (2009) [pdf]”

      I think APL has a lot to teach us about parallel (specifically GPU) programming. I've rewatched a few talks with Aaron Hsu and listened to his arraycast podcast[1]. In researching an upcoming blog post on monoids, I tried implementing the problem in Guy Steele's "Four Solutions to a Trivial Problem" talk[2] in APL (actually I tried GNU APL for this, because I didn't need anything fancy). This is what I came up with: +/((⌽⌈\⌽a)⌊⌈\a)-a That in turn should be fully parallelizable and run fast on the GPU, as it's based on a couple scan (generalized prefix sum) operations. There's a considerable amount of DNA from APL in modern compiler-based machine learning frameworks, mostly by way of numpy. Dr. Hsu makes a good case that APL has quite a bit of power which is considerably diluted in later spins such as numpy. I'm especially fond of the power (⍣) operator[3], which represents parallel iteration and I think can often be translated to a per-thread while or for loop in a compute shader. I don't believe numpy has anything quite like that (but feel free to correct me!). [1]: [LINK] [2]: this video [3]: [LINK]

      CitesView on HN