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
    M

    Michael Burge

    michaelburge.us · Personal blog · on HN since 2017

    Michael Burge, a programmer, writes about Haskell, Ethereum, blockchain, emulators, and unusual language projects.

    Visit blogHN submissions
    Languages & CompilersCryptoProgramming
    What HN says

    HN commenters mostly mention his Pyramid Scheme post, a Scheme dialect for Ethereum, and enjoy the pun in its name.

    Stats for nerds
    20HN people shared it
    29linked in comments
    2.2Kstory points
    Jun 2024last shared
    2017people per year2024

    Top posts on HN

    1. 1
      Write your next Ethereum contract in Pyramid Scheme
      10 people · 470 points · first shared 2017 · 56 comments on HN
    2. 2
      Implementing a NES Emulator in Rust
      1 person · 386 points · first shared 2019 · 89 comments on HN
    3. 3
      Rolling Your Own Blockchain in Haskell
      3 people · 236 points · first shared 2017 · 32 comments on HN
    4. 4
      Writing a formally-verified image browser in Coq and Haskell
      3 people · 234 points · first shared 2017 · 39 comments on HN
    5. 5
      Haskell Typeclasses vs. C++ Classes
      1 person · 156 points · first shared 2017 · 79 comments on HN
    6. 6
      Roll Your Own Bitcoin Exchange in Haskell
      2 people · 137 points · first shared 2017 · 10 comments on HN
    7. 7
      Using Haskell to debug a C chess engine
      2 people · 130 points · first shared 2017 · 5 comments on HN
    8. 8
      Curiosity Killed the Mario
      1 person · 127 points · first shared 2019 · 23 comments on HN
    9. 9
      Injecting a Chess Engine into Amazon Redshift
      4 people · 97 points · first shared 2017 · 8 comments on HN
    10. 10
      DSLs for Ethereum Contracts
      1 person · 76 points · first shared 2018 · 15 comments on HN

    What HN people wrote when they linked it

    • MichaelBurgeMay 2022

      Pyramid[1] was based on the last chapter of SICP, was executable after a couple weeks, and I had never written any lisp before(outside of a couple hours playing with Scheme once).

      Most of that time was the code generator. An interpreter is much simpler and you could have something similar in a couple hours. Especially if you use a JSON parser to start, and switch to S-expressions once you get everything working. Or use an existing Lisp with a (read) primitive that knows the syntax.

      As for "why Lisp?", it's a bit like how you never need to read the JSON spec to write JSON in practice, because they unified the syntax into a few core datatypes(primitives, arrays, objects). Besides the simple syntax, they also include a symbol table core concept that tells you how to interpret the minimal syntax.

      In most languages, it's a lot of work adding a new feature to the language: Lexer to recognize token, backtracking parser, adding a new internal type, etc. In a Lisp interpreter, you just edit the symbol table to know about a new form and you're done.

      Despite the core being simple, a practical Lisp environment is going to have thousands of primitives with a variety of effects on the runtime, and you'll need to look them up. Racket has about 1700[2] implemented in Chez Scheme, for example. But at least they're "only primitives", so there's uniformity in how they're used. Nothing like "What's the syntax for an anonymous function that takes 1 callback as argument that captures a local…

    • exdsqApr 2022

      I worked on a blockchain that used formal methods as part of the development workflow. The development process was essentially writing a paper that formalised an algorithm or a protocol, an implementation in Agda that would generate Haskell (or written straight in Haskell), property based tests against the paper, and then a whole business analysis/QA side where there'd be a requirements matrix against the paper with unit/integration/end-to-end tests on the features too. So you'd end up with formally checked code, property based tests, unit tests, integration tests, end to end tests, manual checks, and a few other tools too. This was a pretty slow process but on the two major product releases I worked on, I can only remember one bug slipping through and that was patched before people realised (and not a major issue either). So I think this style of development can work if you can 1) afford it, 2) afford the time to do it, and 3) formulate the requirements in such detail upfront.

      Here's an example of a formal method paper that explains how a specific protocol works: https://hydra.iohk.io/build/13099985/download/1/blockchain-spec.pdf

      This is a fun example of doing something similar with Coq to build a porn browser: http://www.michaelburge.us/2017/08/25/writing-a-formally-verified-porn-browser-in-coq.html

      And there are a couple companies out there that do this style of development as a consultancy - it's probably the closest to 'engineering' that software development can get…

    • osteeleMay 2018

      Also worth noting: Hydrogen, the Jupyter plugin for Atom[1][2].

      Hydrogen is a fantastically well-executed and useful piece of software. (As is Jupyter.) I’ve used it in my own programming, and also in teaching introductory software development, where it’s a helpful transition from Jupyter notebooks (which are used in the early part of the course, for problem sets / reading journals) to text files and code editors (which are introduced later, and used for team projects, and for projects that use Flask or PyGame).

      But also — relevant to this sub-thread — “Hydrogen” (it relates “Jupyter” to “Atom”) has to be one of the best project names ever. It’s right up there with “Pyramid Scheme”[3].

      [1] https://nteract.io/atom

      [2] https://atom.io/packages/hydrogen

      [3] http://www.michaelburge.us/2017/11/28/write-your-next-ethereum-contract-in-pyramid-scheme.html

    • smnrchrdsMay 2021

      For me, Racket will always be the language used to create the best programming pun of all times:

      > Write your next Ethereum Contract in Pyramid Scheme

      > I create Pyramid: A dialect of the Scheme programming language that targets the Ethereum Virtual Machine(EVM). Pyramid Scheme is implemented using the appropriately-named Racket.

      http://www.michaelburge.us/2017/11/28/write-your-next-ethereum-contract-in-pyramid-scheme.html

    • wakeywakeywakeyJan 2018

      Unoriginal, unfunny article peddling the same tired old crypto tropes.

      At least put some effort into it like the "Pyramid Scheme" [1] post or similar.

      [1]: http://www.michaelburge.us/2017/11/28/write-your-next-ethereum-contract-in-pyramid-scheme.html

    • skrebbelJun 2024

      Pyramid Scheme comes to mind. It’s a scheme (as in, a lisp for purists) which compiles to Solidity, the language backing Ethereum.

      http://www.michaelburge.us/2017/11/28/write-your-next-ethereum-contract-in-pyramid-scheme.html

    Related

    Bryan O'Sullivanserpentine.com49 people

    Github is making me feel stupid(er)

    Bryan O'Sullivan
    Personal · last shared 2021
    Stephen Diehlstephendiehl.com209 people

    What I Wish I Knew When Learning Haskell

    Stephen Diehl
    Personal · last shared 2026
    FoRKxent.com31 people

    Programming languages, operating systems, despair and anger

    FoRK
    Publication · last shared 2022
    Unlimited Noveltyunlimitednovelty.com42 people

    Node.js has jumped the shark

    Unlimited Novelty
    Personal · last shared 2023
    Vitalik Buterinvitalik.ca227 people

    Hard Problems in Cryptocurrency: Five Years Later

    Vitalik Buterin
    Personal · last shared 2023
    John Regehrblog.regehr.org401 people

    Teaching C

    John Regehr
    Personal · last shared 2026
    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