Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
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

    The Orange Duck

    theorangeduck.com · Personal blog · on HN since 2012

    Daniel Holden writes about game animation, machine learning, and programming, including parser combinators, springs, and Markov chains.

    Visit blogRSSHN submissions
    GamesAI & Machine LearningProgramming
    What HN says

    Commenters recommend his 17-line Markov chain and spring roll-call posts as clear explanations, and cite his animation and language-implementation work.

    Stats for nerds
    74HN people shared it
    81linked in comments
    1.3Kstory points
    Oct 2024last shared
    2014people per year2024

    Top posts on HN

    1. 1
      Machine Learning, Kolmogorov Complexity, and Squishy Bunnies (2019)
      4 people · 257 points · first shared 2019 · 21 comments on HN
    2. 2
      Let's talk about animation quality
      2 people · 238 points · first shared 2024 · 78 comments on HN
    3. 3
      Why Can't I Reproduce Their Results?
      4 people · 189 points · first shared 2020 · 124 comments on HN
    4. 4
      You could have invented Parser Combinators
      11 people · 156 points · first shared 2014 · 28 comments on HN
    5. 5
      Generating Icons with Pixel Sorting
      1 person · 72 points · first shared 2017 · 5 comments on HN
    6. 6
      What type of Machine is the C Preprocessor?
      1 person · 62 points · first shared 2014 · 47 comments on HN
    7. 7
      14 Character Random Number Generator in C
      1 person · 61 points · first shared 2017 · 17 comments on HN
    8. 8
      Local Minima, Saddle Points, and Plateaus
      2 people · 52 points · first shared 2018 · 10 comments on HN
    9. 9
      My Neural Network isn't working! What should I do?
      3 people · 46 points · first shared 2017 · Discussion on HN
    10. 10
      Phase-functioned neural networks for character control in games
      8 people · 30 points · first shared 2017 · 1 comments on HN

    What HN people wrote when they linked it

    • gus_massaJan 2014

      From a previous article of the same author: http://theorangeduck.com/page/c-preprocessor-turing-complete

      > This is a fairly clear distinction and a compelling argument. Clearly there are languages where you can effectively express unbounded recursion function() { function() } and the C preprocessor is not one of them.

      >* But there are a number of subtleties going on here. For example, if we consider the set of macros I created to be the "machinery", and the "language" to be the Brainfuck input to my system, then it is indeed Turing complete. That is - I have created machinery which can simulate Turing complete languages. Taking all the above definitions into account, consider how odd it is that Turing complete machinery can be expressed in a non Turing complete language.*

      And from the “Brainfuck interpreter written in the C preprocessor”: https://github.com/orangeduck/CPP_COMPLETE

      > Currently the maximum recursion depth is set to around 1000 and the data array size around 100. These can be easily extended but for now, as a general rule of thumb computations exceeding 1000 steps may not run.

      Here is the problem. We can consider the one-step-interpreter: it’s a function that has as arguments a program, the current instruction index and the whole memory state, and this function computes the next instruction index and the next whole memory state. This one-step-interpreter is primitive recursive.
      He put that function inside a bounded loop, which is also implementable as a…

    • dahartNov 2018

      It would be pretty interesting to use a neural network for AO! It's a good coincidence you linked to SSIM based adaptive sampling, I'm actually using the research you linked to: I implemented the OptiX API for SSIM prediction. So far, we've used it for choosing where to send more rays, but I'm not aware of anyone using it to adapt the max distance for AO rays. That might be fun & fruitful to try!

      I'm not certain, but I think in theory that capping the max distance will always bias the AO (to the extent that AO even makes physical sense). You can reduce the bias by mixing lengths, but I'm not sure if you can ever fully compensate for it. More importantly, it's always (theoretically) biasing to separate AO shading from the normal surface shading & lighting calculation. AO is a beautiful simple hack, but I'm not sure it will survive the future, especially as ray and compute budgets increase.

      I know I've seen other AI attempts to learn AO & global illumination, just googling a bit:

      http://theorangeduck.com/page/neural-network-ambient-occlusion

      https://www.youtube.com/watch?v=z_zmRWxU-PY

    • dismisterOct 2024

      I'm sure there will be lots of people recommending great books, so i want to give you some general advice:

      sadly, a lot of language related libraries are in C/C++, so if using those sounds a pain to you, just ignore them for now.

      get somthing simple working soon, such as an interpreter for Forth [0] written in any language you already know.

      do the parsing later, there is so much more to learn about compilers and language runtimes!

      when it's finally time for parsing, i recommend parser combinators [1]. they are pretty easy to implement yourself, once you have understood the concept and are very flexible.

      do not forget about proper error messages with line/col information.

      any kind of performance optimisation is strictly forbidden until you know what you are doing.

      [0] https://en.m.wikipedia.org/wiki/Forth_(programming_language)

      [1] https://www.theorangeduck.com/page/you-could-have-invented-parser-combinators

    • qwertyuiop924Sep 2016

      "people on the 'net jerking themselves off" is a pretty good descriptiob of freenode's ##c. I'll quote Daniel Holden (the author of the book on implementing a lisp you mentioned above)'s words on the matter[1]:

      This channel is hardly known for being friendly. Generally anything other than K&R is regarded as Socratic corruption. And not checking the return value of malloc is on par with adultery. Nor do they have much concern for encouraging the next generation of C programmers. I remember witnessing a new C programmer ripped for several minutes on the channel for simply mentioning the heap and stack in their explanation. Instantly he was shot down with "implementation detail and not defined in the C standard" and told to ask his question in #unix. The channel is generally a great place to go if you want to be told you're an idiot.

      1: http://www.theorangeduck.com/page/ready-fight

    • modelessNov 2023

      IK doesn't "solve" the core problem of realistic character motion. Sure you can tweak foot positions to stop them from sliding but the farther they get from the original animation data the worse the result will look. It's no panacea.

      There are new approaches to generating realistic character motion being shown at SIGGRAPH every year, getting better and better, but the best ones are largely too expensive for games to adopt. Plus, for player-controlled characters, at a certain point you run into a fundamental tension between control responsiveness and physical realism of animations.

      I recently saw a great article on the topic which even comes with a WebGL demo: https://theorangeduck.com/page/code-vs-data-driven-displacement#footlocking

    • cyber_kinetistSep 2021

      I think of neural networks as "smooth compression" - something that compresses a key-value database into a continuous non-linear function. Previously Daniel Holden wrote about something similar in his blog (https://theorangeduck.com/page/machine-learning-kolmogorov-complexity-squishy-bunnies)

      I agree with the author's sentiment that "learning" might be a misleading term. Neural networks can just be seen as specialized programs that just compress certain kinds of data extremely well (at the cost of extremely high pre-computation). But it's still a very useful technique to tackling previously intractable problems.

    Related

    The Math Less Traveledmathlesstraveled.com23 people

    Factorization diagrams in Haskell

    The Math Less Traveled
    Personal · last shared 2025
    Keith Schwarzkeithschwarz.com50 people

    Darts, Dice, and Coins: A beautiful article on a beautiful algorithm

    Keith Schwarz
    Personal · last shared 2026
    Google AI Blogai.googleblog.com596 people

    Google Duplex: An AI System for Accomplishing Real World Tasks Over the Phone

    Google AI Blog
    Company · last shared 2026
    Data Sorcerydata-sorcery.org22 people

    An Illustrated guide to multi-core parallelism in Clojure

    Data Sorcery
    Personal · last shared 2019
    Drew Breunigdbreunig.com43 people

    DuckDB is probably the most important geospatial software of the last decade

    Drew Breunig
    Personal · last shared 2026
    Stanford AI Lab Blogai.stanford.edu45 people

    An Introduction to Knowledge Graphs

    Stanford AI Lab Blog
    Company · last shared 2026
    Fabien Sanglardfabiensanglard.net525 people

    The Polygons of Another World

    Fabien Sanglard
    Personal · last shared 2026
    Dev Geniusmedium.com/dev-genius36 people

    A principled approach to GraphQL query cost analysis

    Dev Genius
    Publication · last shared 2026