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
    C

    Curiosity Driven

    curiosity-driven.org · Personal blog · on HN since 2014

    Curiosity Driven is a programming blog covering JavaScript, Bitcoin scripting, Prolog, continuations and small module loaders.

    Visit blogHN submissions
    ProgrammingLanguages & CompilersCrypto
    What HN says

    Commenters cite it for its compact experiments on loaders, continuations and Bitcoin contracts, and one notes its feed page relies on XSLT.

    Stats for nerds
    18HN people shared it
    23linked in comments
    376story points
    Jun 2023last shared
    2014people per year2023

    Top posts on HN

    1. 1
      Bitcoin contracts
      6 people · 123 points · first shared 2014 · 31 comments on HN
    2. 2
      Monads in JavaScript
      7 people · 108 points · first shared 2014 · 125 comments on HN
    3. 3
      Low-level Bitcoin
      6 people · 72 points · first shared 2014 · 26 comments on HN
    4. 4
      Solving Riddles with Prolog and ES6 Generators (2014)
      4 people · 43 points · first shared 2014 · 6 comments on HN
    5. 5
      Continuations
      4 people · 14 points · first shared 2014 · 1 comments on HN
    6. 6
      Easy JavaScript concurrency with generators and promises
      2 people · 2 points · first shared 2014 · Discussion on HN
    7. 7
      Require.js in 30 lines or JavaScript using Promises
      2 people · 2 points · first shared 2014 · Discussion on HN
    8. 8
      Reactive WebRTC conference
      1 person · 2 points · first shared 2015 · Discussion on HN
    9. 9
      Private properties in JavaScript
      1 person · 2 points · first shared 2015 · Discussion on HN
    10. 10
      code-block Web Component
      1 person · 2 points · first shared 2014 · Discussion on HN

    What HN people wrote when they linked it

    • photon_linesMar 2019

      I didn't grok anything at first actually. I had familiarity with Prolog and wanted a refresher, so I decided to take a look at implementation attempts done in other languages. I found one which did it in a few lines of Javascript, and you can find the full read and implementation here: https://curiosity-driven.org/prolog-interpreter . My apologies if I didn't make it clear that this is a port of the original write up - I did include this in the first paragraph of the README though, so maybe I should have been clearer?

      Originally, I was trying to learn Kotlin along with wanting a refresher in Prolog, so I attempted to do the port using Kotlin and gave up half way though. I didn't have the patience to try to grok too many things at once, so I decided to go with Python due to it's simplicity, popularity, as well as the fact that I'm a lot more fluent in it than I am in Kotlin.

      Anyways - sorry if I'm going off track. To answer your question, I grokked the implementation details through porting / refactoring the original code. The concepts / unification I was already familiar with from taking a university course which involved Prolog and from using it in a large AI project. From what I remember, it took me quite a long time to grasp the language and its power!!

    • DorothySimMar 2017

      I love creating programming languages! They're powerful tools of abstraction - designed well they make complex concepts look simple.

      Couple of examples - a language that compiles to Bitcoin script opcodes [0]. Although the Bitcoin script engine is stack based (easier to follow) I couldn't resist designing a small, simple language that could be used to write transaction output scripts. This way it's easy to understand what are the conditions of moving funds to the next owner.

      Another language has first-class functions, operators as functions, optional lazy computations, but more importantly a small runtime that supports tail-calls and capturing execution as a value (callcc) [1].

      I've also written parser and interpreter for Prolog [2], just to get the feeling of logic programming.

      Writing a small language can make you understand the paradigm (functional, imperative etc.) better and it takes a great deal of effort to decide how should the syntax look like, how will the runtime work (usually with toy languages you provide runtime too...).

      Edit: Just noticed the "except toy languages" part... :-/

      [0]: https://curiosity-driven.org/bitcoin-contracts

      [1]: https://curiosity-driven.org/continuations

      [2]: https://curiosity-driven.org/prolog-interpreter

    • hdhzyOct 2017

      Contracts page on Bitcoin Wiki [0] is classic, unfortunately to understand most of it one has to know how script and various extensions (lock time etc.) work. Generally I'd advise reverse engineering how Bitcoin works, something like this [1] in JavaScript. There is also high level description of some contract types [2] but it's basically the same content as on Bitcoin Wiki.

      [0]: https://en.bitcoin.it/wiki/Contract

      [1]: https://curiosity-driven.org/low-level-bitcoin

      [2]: https://curiosity-driven.org/bitcoin-contracts

    • PromargedJun 2018

      This paper [0] (from 2013) linked from this article [1] was also executed on chain, see date here [2] and the actual script via API here [3].

      [0]: https://eprint.iacr.org/2013/784

      [1]: https://curiosity-driven.org/bitcoin-contracts

      [2]: https://blockexplorer.com/tx/7ae5760af2105a5ba54a914f188686e2743ead50cd690afb7e609f7b99e0ae31#o0

      [3]: https://blockexplorer.com/api/tx/7ae5760af2105a5ba54a914f188686e2743ead50cd690afb7e609f7b99e0ae31#o0

    • ShootheApr 2018

      I don't see how this reply addresses the core point, it just argues that async await is useful (that's fine but not novel by itself).

      It is possible to work around the "color" by using generators [0], that way one algorithm can be used in synchronous and asynchronous way. Async await tightly bind to underlying Promises.

      [0]: https://curiosity-driven.org/promises-and-generators#decoupling

    • TheyeardJul 2015

      Very nice! It reminds me of these two loader experiments:
      https://curiosity-driven.org/amd-loader-with-promises
      https://curiosity-driven.org/minimal-loader

      But for production builds I highly recommend Almond: https://github.com/jrburke/almond

    Related

    Data Driven Investormedium.com/datadriveninvestor93 people

    The NSA called me after midnight and requested my source code (2018)

    Data Driven Investor
    Publication · last shared 2024
    Curious Codingcuriouscoding.nl15 people

    Static search trees: faster than binary search

    Curious Coding
    Personal · last shared 2026
    DeepMind Blogdeepmind.com800 people

    AlphaFold: a solution to a 50-year-old grand challenge in biology

    DeepMind Blog
    Company · last shared 2026
    Google Research Bloggoogleresearch.blogspot.com303 people

    Announcing SyntaxNet: The World’s Most Accurate Natural Language Parser

    Google Research Blog
    Company · last shared 2017
    BitMEX Blogblog.bitmex.com61 people

    Flashbots

    BitMEX Blog
    Company · last shared 2024
    Chain Blogblog.chain.com34 people

    Introducing Ivy: a new smart contract language

    Chain Blog
    Company · last shared 2018
    Mike Hearnblog.plan99.net86 people

    It’s time to kill the web app

    Mike Hearn
    Personal · last shared 2026
    Michael Nielsenmichaelnielsen.org208 people

    How to crawl a quarter billion webpages in 40 hours

    Michael Nielsen
    Personal · last shared 2026