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
    T

    Tim Bradshaw

    tfeb.org · Personal blog · on HN since 2007

    Tim Bradshaw writes about Common Lisp, macros, Lisp machines, and old Usenet culture, along with a long-running collection of Lisp hacks.

    Visit blogHN submissions
    Languages & CompilersProgrammingHistory
    What HN says

    HN commenters link his Lisp hacks as examples of DSL-style macro tricks and his Mad people of comp.lang.lisp page for Usenet history.

    Stats for nerds
    20HN people shared it
    20linked in comments
    371story points
    Nov 2024last shared
    2007people per year2024

    Top posts on HN

    1. 1
      The lost cause of the Lisp machines
      2 people · 186 points · first shared 2025 · 171 comments on HN
    2. 2
      Štar: an iteration construct for Common Lisp
      1 person · 100 points · first shared 2024 · 35 comments on HN
    3. 3
      Vector Supercomputers
      1 person · 33 points · first shared 2021 · 21 comments on HN
    4. 4
      Lisp hacks
      4 people · 17 points · first shared 2009 · Discussion on HN
    5. 5
      The endless droning about Common Lisp IDEs
      2 people · 8 points · first shared 2021 · 1 comments on HN
    6. 6
      The Empty List
      1 person · 6 points · first shared 2022 · Discussion on HN
    7. 7
      Metatronic macros: a simple way to write hygienic macros
      2 people · 4 points · first shared 2022 · Discussion on HN
    8. 8
      Two understandable deficiencies in Common Lisp
      1 person · 4 points · first shared 2022 · 1 comments on HN
    9. 9
      Wild Pathnames in Common Lisp
      1 person · 4 points · first shared 2024 · 1 comments on HN
    10. 10
      The Absurdity Of Stacks
      1 person · 3 points · first shared 2023 · Discussion on HN

    What HN people wrote when they linked it

    • jimbokunJul 2008

      I think this is one of the failings of Common Lisp. For the example of snarfing a file into a single string, here are some examples of the fun you can have:

      http://www.emmett.ca/~sabetts/slurp.html
      http://www.tfeb.org/lisp/obscurities.html#SNARFING-FILES
      http://www.codecodex.com/wiki/index.php?title=Read_a_file_into_a_byte_array#Common_Lisp
      http://www.cl-user.net/asp/html-docs/process-file-snippset

      According to the first link, this turns out to be the most efficient and most idiomatic way to do it:

      (defun slurp-stream5 (stream)
      (let ((seq (make-array (file-length stream) :element-type 'character :fill-pointer t)))
      (setf (fill-pointer seq) (read-sequence seq stream))
      seq))

      Makes sense once you know what all the pieces mean, but not the first thing a new Common Lisp programmer will think of. Then, in the SNARFING-FILES link, turns out it's not correct for all files, anyway, and the "correct" version is considerably longer.

      EDIT: Oops. The code I pasted DID include the proper file length check (at the cost of reading into an array of characters, instead of a string). So ignore the last sentence of my (unedited) post.

    • a-french-anonNov 2024

      Tried to contribute to a Go project a few months ago and got bitten by https://github.com/golang/go/issues/67296 due to questionable doc quality. I was pretty disappointed to find that natural sort isn't builtin since Go was the Unicode language in my mind (Go runes, made by some Plan 9 thus UTF-8 creators).

      Go has a lot of good points, but I immediately felt "dirty" when using it. Like that time when I tried to wrap a closure variable over itself ("my_closure = new closure calling my_closure") and needed to use a temporary variable because closure captures are always by reference: if you want to build abstractions, you got to think them better; as it stands, this is the worst of both worlds I know (C++ makes capture type explicit and customizable, Common Lisp was designed by wizards who knew what to do cf https://www.tfeb.org/fragments/2023/02/22/how-to-understand-closures-in-common-lisp/).

    • aeriqueMar 2013

      See cl-who for another example: http://weitz.de/cl-who/#syntax

      Also, this has nothing to do with functional programming but rather with creating a DSL (http://en.wikipedia.org/wiki/Domain-specific_language)

      More links:

      • http://www.tfeb.org/lisp/hax.html#HTOUT

      • https://github.com/franzinc/aserve/blob/master/htmlgen/test.cl

    • mahmudJun 2010

      A lisp with T, NIL, if, and lambda, like "tiny-lisp" here:

      http://tfeb.org/lisp/hax.html#CONDUITS

      Literally, a package hack with zero implementation :-)

      Import defmacro and friends and you have it.

    • gnosisJan 2011

      Some of the personalities who appear in that thread are mentioned in this list of "Mad people of comp.lang.lisp":

      http://www.tfeb.org/lisp/mad-people.html

    • gtaniMar 2011

      Sadly, these multiple identities are not angry enough to qualify him as a "Mad people of comp.lang.lisp"

      http://www.tfeb.org/lisp/mad-people.html

    Related

    Storytotellstorytotell.org18 people

    Free your technical aesthetic from the 2010s

    Storytotell
    Personal · last shared 2026
    Jordan Santellsymbo1ics.com21 people

    I Wasn’t Prepared to Work

    Jordan Santell
    Personal · last shared 2019
    Bill Clementsonbc.tech.coop53 people

    Y Combinator in Erlang

    Bill Clementson
    Personal · last shared 2013
    Dan Weinrebdanweinreb.org29 people

    Why Did M.I.T. Switch from Scheme to Python?

    Dan Weinreb
    Personal · last shared 2014
    Gábor Melisquotenil.com15 people

    Google AI Challenge Winner Post-Mortem

    Gábor Melis
    Personal · last shared 2026
    One Big Flukeonebigfluke.com36 people

    Go's power is in emergent behavior

    One Big Fluke
    Personal · last shared 2024
    Jonathan Reesmumble.net/~jar36 people

    The T Project (2010)

    Jonathan Rees
    Personal · last shared 2026
    Marijn Haverbekemarijn.haverbeke.nl17 people

    Bouncing Beholder: JS1k winner explained

    Marijn Haverbeke
    Personal · last shared 2010