Skip to content
HomeVideosBooks
AllTopicsTrends
BlogsPodcasts
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
    Cover of Ray Tracer Challenge

    Ray Tracer Challenge

    Jamis Buck · 2019

    Brace yourself for a fun challenge: build a photorealistic 3D renderer from scratch! In just a couple of weeks, build a ray tracer that renders beautiful scenes with shadows, reflections, refraction effects, and subjects composed of various graphics primitives: spheres, cubes, cylinders, triangles, and more. With each chapter, implement another piece of the puzzle and move the renderer forward. Use whichever language and environment you prefer, and do it entirely test-first, so you know it's correct.

    ProgrammingComputer Science
    Open LibraryAmazon
    Stats for nerds
    21recommend
    29mentions
    23people
    2019–2026years
    86% recommend14% neutral

    Mentions per year

    20192020202120222023202420252026

    What Hacker News says

    1. r053budJan 2026
      “The Ray Tracer Challenge” by Jamis Buck is really good as well
      thread
    2. kristianpNov 2024
      The Ray Tracer Challenge by Jamis Buck. It uses Cucumber tests to specify the behaviour of the code, without giving you the code. Not a single weekend project. I've been doing it in C++ to learn about the modern language, but any language can be used.
      thread
    3. Al0neStarMay 2023
      # Programming

      "A Data-Centric Introduction to Computing"

      https://dcic-world.org/

      # Programming Language Theory

      "Programming Languages: Application and Interpretation"

      https://www.plai.org/

      "Crafting Interpreters"

      https://craftinginterpreters.com/

      # Algorithms/Data Structures

      * Pure C *

      "Algorithmic Thinking: A Problem-Based Introduction"

      https://nostarch.com/algorithmic-thinking-2nd-edition

      # Competitive Programming/Interviews

      "Competitive Programming book, 4th edition (CP4)"

      https://cpbook.net/

      "Elements of Programming Interviews in Python"

      http://elementsofprogramminginterviews.com/

      # Compilation

      "Essentials of Compilation: An Incremental Approach in Python"

      https://github.com/IUCompilerCourse/Essentials-of-Compilatio...

      # Database Systems

      "CMU: Intro to Database Systems"

      https://15445.courses.cs.cmu.edu/

      "CMU: Advanced Database Systems"

      https://15721.courses.cs.cmu.edu/

      # Calculus I/II & Real Analysis

      "A Course in Calculus and Real Analysis"

      https://link.springer.com/book/10.1007/978-3-030-01400-1

      "A Course in Multivariable Calculus and Analysis"

      https://link.springer.com/book/10.1007/978-1-4419-1621-1

      # Physics

      "Matter and Interactions"

      https://matterandinteractions.org/

      # Linear Algebra & ML

      * A Series of books by prof. Joe Suzuki without using any external library for the implementations *

      "Statistical Learning with Math and Python"

      https://link.springer.com/book/10.1007/978-981-15-7877-9

      "Sparse Estimation with Math and Python"

      https://link.springer.com/book/10.1007/978-981-16-1438-5

      "Kernel Methods for Machine Learning with Math and Python"

      https://link.springer.com/book/10.1007/978-981-19-0401-1

      # Discrete Mathematics

      "CMU 21-228 Discrete Mathematics (prof. Poh-Shen Loh"

      https://www.math.cmu.edu/~ploh/2021-228.shtml

      # Mathematical Logic

      "Mathematical Logic Through Python"

      https://www.logicthrupython.org/

      # CS Complexity and Theory:

      Courses by Ryan O'Donnell at CMU

      http://www.cs.cmu.edu/~odonnell/

      # Cryptography

      "Serious Cryptography: A Practical Introduction to Modern Encryption"

      https://nostarch.com/seriouscrypto

      # Problem Solving

      "Math 235: Mathematical Problem Solving"

      https://www.cip.ifi.lmu.de/~grinberg/t/20f

      # Computer Graphics

      * Also look up the course by @pikuma for a pure c impl without OpenGL *

      "Computer Graphics from Scratch: A Programmer's Introduction to 3D Rendering"

      https://gabrielgambetta.com/computer-graphics-from-scratch/

      "The Ray Tracer Challenge A Test-Driven Guide to Your First 3D Renderer"

      https://pragprog.com/titles/jbtracer/the-ray-tracer-challeng...

      # Reverse Engineering

      "Reverse Engineering for Beginners"

      https://beginners.re/

      # SAT/SMT

      "SAT/SMT by Example"

      https://sat-smt.codes/

      Also Hakan Kjellerstrand's z3 page:

      http://www.hakank.org/z3/

      # Game Engine Development

      * 2/4 volumes out (no digital format for the 2 pending volumes due to the authors "piracy" concerns *

      "Foundations of Game Engine Development"

      https://foundationsofgameenginedev.com/

      # Creative Coding

      "Generative Design: Visualize, Program, and Create with JavaScript in p5.js"

      http://www.generative-gestaltung.de/2/

      Articles by Tyler Hobbs specially the one on "Flow Fields" :

      https://tylerxhobbs.com/essays/2020/flow-fields

      Articles by Sighack specially the one on "Watercolor Techniques":

      https://sighack.com/post/generative-watercolor-in-processing

      thread
    4. ojlJan 2023
      I mentioned The Ray Tracer Challenge in a comment below, and it seems quite popular so I’ll submit it here as well.

      http://raytracerchallenge.com/

      It’s not really for beginners though, but maybe possible to start it together with a beginners book in a language of choice. It starts with points, vectors and matrixes, but gets more advanced later on. It’s around 250 pages and there’s basically no code provided, just test scenarios and a bit of pseudo code.

      thread
    5. boredtofearsDec 2022
      I used it a lot over the summer on some pet projects and really enjoyed it. Being a heavy Ruby/Typescript user in recent years it feels like a natural melding of the two. Macros are a really interesting way to achieve many of the same metaprogramming properties of Ruby (although a little awkward to reason about).

      I used Jamis Buck's book The Ray Tracer Challenge[1] as a fun kind of way to learn the language and ended up learning a good chunk of the language as a result.

      My biggest complaint is just that it's not more popular - it's ecosystem is pretty web developer-centric and I'd personally love to see it used for more things outside of that.

      [1] https://pragprog.com/titles/jbtracer/the-ray-tracer-challeng...

      thread
    6. rychcoSep 2022
      I typically write a raytracer while attempting to stick to a small set of "best-practices" for the language I'm trying to learn. I also use this exercise from time-to-time to test new language features (for example C++20 ranges/coroutines recently).

      I also recommend this same exercise to others through the book "The Ray Tracer Challenge" [1] by Jamis Buck, because it describes an entire implementation of a raytracer in pseudocode. Beginners mostly just need to plug-in their language of choice & still end up with a satisfying visual result. Experienced programmers can extend it by adding the ability to load non-trivial .obj models, which will necessarily motivate adding concurrency, bounding volumes, & other general performance improvements.

      I'm planning on tackling it again in Elixir soon, which should be fun & interesting.

      EDIT: Almost forgot to mention the free bonus chapters [2] that get you started on bounding volumes (AABB), soft area lights, and texture mapping.

      [1] https://pragprog.com/titles/jbtracer/the-ray-tracer-challeng...

      [2] http://www.raytracerchallenge.com/#bonus

      thread

    Related

    Cover of Mazes for programmers
    2018–2026

    Mazes for programmers

    Jamis Buck
    19 recommend · 28
    Cover of An Introduction to ray tracing
    2016–2025

    An Introduction to ray tracing

    Andrew S. Glassner
    3 recommend · 4
    Ray Tracing in One WeekendPeter Shirley
    2016–2026

    Ray Tracing in One Weekend

    Peter Shirley
    48 recommend · 84
    Cover of Crafting Interpreters
    2017–2026

    Crafting Interpreters

    Robert Nystrom
    295 recommend · 521
    Cover of Writing An Interpreter In Go
    2016–2026

    Writing An Interpreter In Go

    Thorsten Ball
    73 recommend · 107
    Cover of Cracking The Coding Interview
    2010–2026

    Cracking The Coding Interview

    Gayle Laakmann McDowell
    178 recommend · 553
    Cover of Introduction to Algorithms
    2007–2026

    Introduction to Algorithms

    Thomas H. Cormen
    274 recommend · 880
    Cover of Learning Processing
    2012–2023

    Learning Processing

    Daniel Shiffman
    6 recommend · 9