<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2026-10-28T05:26:00Z</updated>
  <generator>https://nostr.now</generator>

  <title>Nostr notes by raganwald.com</title>
  <author>
    <name>raganwald.com</name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://nostr.now/npub1sqr568dv7aeu2nt7zy9dxg79cahm44hpufqz0cdsntqmnjhcl7nss9fdex.rss" />
  <link href="https://nostr.now/npub1sqr568dv7aeu2nt7zy9dxg79cahm44hpufqz0cdsntqmnjhcl7nss9fdex" />
  <id>https://nostr.now/npub1sqr568dv7aeu2nt7zy9dxg79cahm44hpufqz0cdsntqmnjhcl7nss9fdex</id>
  <icon>https://files.functional.cafe/accounts/avatars/114/461/019/893/114/005/original/1d187694eb79aa41.jpeg</icon>
  <logo>https://files.functional.cafe/accounts/avatars/114/461/019/893/114/005/original/1d187694eb79aa41.jpeg</logo>




  <entry>
    <id>https://nostr.now/nevent1qqs98lw09gwrt9zqd8u2gqwpkmt9y26lc5tpmqp2fpumtsexlxqpr9gzyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6wahefrm</id>
    
      <title type="html">As long as we’re quoting Perlisisms while talking about ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs98lw09gwrt9zqd8u2gqwpkmt9y26lc5tpmqp2fpumtsexlxqpr9gzyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6wahefrm" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdmsqyp8630dhxl4d8c6pxtplvmedzuv23mx7ju4dce0ahg8ns5vcvlwzre&#39;&gt;nevent1q…wzre&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;As long as we’re quoting Perlisisms while talking about single-use software...&lt;br/&gt;&lt;br/&gt;“Is it possible that software is not like anything else, that it is meant to be discarded: that the whole point is to see it as a soap bubble?”&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://www.cs.yale.edu/homes/perlis-alan/quotes.html&#34;&gt;https://www.cs.yale.edu/homes/perlis-alan/quotes.html&lt;/a&gt;
    </content>
    <updated>2026-10-17T12:43:57Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsvzayk6j6v6jcd69wcj7hy32rypmrswkmlxxfjr53ysrux3r3kphszyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6wgx57jz</id>
    
      <title type="html">RE: https://mas.to/@deprogrammaticaipsum/116766052997383721 One ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsvzayk6j6v6jcd69wcj7hy32rypmrswkmlxxfjr53ysrux3r3kphszyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6wgx57jz" />
    <content type="html">
      RE: &lt;a href=&#34;https://mas.to/@deprogrammaticaipsum/116766052997383721&#34;&gt;https://mas.to/@deprogrammaticaipsum/116766052997383721&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;One Saturday a generation ago—2002-11-09—Paul Graham ran a one-day conference for fans of &amp;#34;Lightweight Languages&amp;#34; at MIT.&lt;br/&gt;&lt;br/&gt;There was a morning keynote, a bunch of presentations, lunch, and afternoon keynote, more presentations, and then evening revelry.&lt;br/&gt;&lt;br/&gt;The two keynote speakers he flew in were Joe Armstrong (Erlang) and Yukihiro Matsumoto (Ruby).&lt;br/&gt;nostr:note1jdfx7h9pler77nhhmhe33lud70tke3q39swpp0ffa4ye9vx3vz9sawta6m&lt;br/&gt;
    </content>
    <updated>2026-06-17T15:30:41Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsxgzhek9dgskzcqktpnvsyryfyw5k3t8e6lq4lweys3p8h4hpxfjczyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6wc9uc9p</id>
    
      <title type="html">TreeRegex is a superset of Regex that works with a serialized ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsxgzhek9dgskzcqktpnvsyryfyw5k3t8e6lq4lweys3p8h4hpxfjczyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6wc9uc9p" />
    <content type="html">
      TreeRegex is a superset of Regex that works with a serialized format for tree-structured text such as programming languages.In addition to introducing special parentheses for marking the structure in the serialized form, there are additional elements in the TreeRegex for matching trees and subtrees.&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://treeregexlib.github.io/&#34;&gt;https://treeregexlib.github.io/&lt;/a&gt;
    </content>
    <updated>2026-05-26T19:30:36Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs9jxdntgvq2fn63pd7emcmknewyhmvtjq5pmwrze2zs0pgt4yk7zqzyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6wweyqwz</id>
    
      <title type="html">It was once fashionable to ask &amp;#34;pet&amp;#34; interview questions ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs9jxdntgvq2fn63pd7emcmknewyhmvtjq5pmwrze2zs0pgt4yk7zqzyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6wweyqwz" />
    <content type="html">
      It was once fashionable to ask &amp;#34;pet&amp;#34; interview questions of software engineers. These questions usually demanded that the applicant know—or figure out on the fly—some algorithm with an intermediate- or advanced technique, like recursion.&lt;br/&gt;&lt;br/&gt;One variation on the &amp;#34;pet question&amp;#34; interview would seem to ask for an algorithm, but in actuality there would be  a quick-and-dirty &amp;#34;hack&amp;#34; such as using a regex to perform replacements in a text file.&lt;br/&gt;&lt;br/&gt;&amp;#34;Alice and Bobbie and Sharleen and Dyck&amp;#34; is a fable that reverses the second interview type: The interviewer is looking for a pushdown automaton, and the interviewee presents the quick-and-dirty hack.&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://raganwald.com/2018/11/14/dyck-joke.html&#34;&gt;https://raganwald.com/2018/11/14/dyck-joke.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;p.s. Yes I have written balanced parentheses code live in an interview. I got the job anyways.
    </content>
    <updated>2026-02-13T14:12:17Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs882mujf9lfnyvl44yf23nzgd79wmza9gk2jslqmpw6vx6st0g7yszyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6wgzl38e</id>
    
      <title type="html">Although many people say that JavaScript Allongé is a book about ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs882mujf9lfnyvl44yf23nzgd79wmza9gk2jslqmpw6vx6st0g7yszyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6wgzl38e" />
    <content type="html">
      Although many people say that JavaScript Allongé is a book about functional programming, it’s actually a book about how functions as first-class entities facilitate composition.&lt;br/&gt;&lt;br/&gt;So... Although Kleisli arrows allow for the composition of functions that work with monads without needing to explicitly handle the monadic context, you won’t find them in JavaScript Allongé. 😜&lt;br/&gt;&lt;br/&gt;Buy: &lt;a href=&#34;https://leanpub.com/javascriptallongesix&#34;&gt;https://leanpub.com/javascriptallongesix&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Free-as-in-beer PDF: &lt;a href=&#34;https://raganwald.com/assets/books/javascriptallongesix.pdf&#34;&gt;https://raganwald.com/assets/books/javascriptallongesix.pdf&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://files.functional.cafe/media_attachments/files/115/667/473/604/288/554/original/ce23f0030af680a5.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-12-05T14:43:39Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqszd3nwpffql0fetf803h85ka0a47spud54vzsdxxz9qvy0hhg98rszyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6w4s9fsz</id>
    
      <title type="html">JS/TS *finally* has methods for chaining iterators (take, filter, ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqszd3nwpffql0fetf803h85ka0a47spud54vzsdxxz9qvy0hhg98rszyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6w4s9fsz" />
    <content type="html">
      JS/TS *finally* has methods for chaining iterators (take, filter, reduce, &amp;amp;c.)&lt;br/&gt;&lt;br/&gt;I&amp;#39;m sure &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub10faqj7xvgmhhl42glvf9u5wqfhnafjnrjst6yx6k4227xugupvuqzardvy&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Axel Rauschmayer&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub10fa…rdvy&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; already has written clear, digestible descriptions of how to use these great new methods to write clear, digestible and performant code.&lt;br/&gt;&lt;br/&gt;I really ought to get around to updating my decades-old essays with notes that it is no longer necessary to Greenspun these things for ourselves.&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://raganwald.com/2015/02/17/lazy-iteratables-in-javascript.html&#34;&gt;https://raganwald.com/2015/02/17/lazy-iteratables-in-javascript.html&lt;/a&gt;
    </content>
    <updated>2025-10-27T13:59:53Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs0nk7xz0lflxq4626nwtwu0neame3s0dj5pch6m65598kcdud9mqczyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6wkyputu</id>
    
      <title type="html">Will do some research later... Might do one thing as a blog post. ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs0nk7xz0lflxq4626nwtwu0neame3s0dj5pch6m65598kcdud9mqczyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6wkyputu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxlddznujv0lfp40aufhaa9u83e9czq5wwc3pz0kf3zkj55h5v43g85g0t5&#39;&gt;nevent1q…g0t5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Will do some research later... Might do one thing as a blog post. Still have my 4th edition from 1986:&lt;br/&gt; &lt;img src=&#34;https://files.functional.cafe/media_attachments/files/115/344/856/851/630/574/original/e72d810f687375b4.jpg&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-10-09T15:15:39Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsymgwfrzk2xgndsqn69lqqe2x7qsm27n6hgetg0upg27ak999hceczyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6wf7643x</id>
    
      <title type="html">It is six months until April. How about we collaborate on a ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsymgwfrzk2xgndsqn69lqqe2x7qsm27n6hgetg0upg27ak999hceczyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6wf7643x" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs28yy04qvgve80hhpvmwgdqnfvzvfsnc0w8rf7uk737ql9me7n3ncest5ja&#39;&gt;nevent1q…t5ja&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;It is six months until April. How about we collaborate on a type-level typescript edition of SICP, to drop on 2026-04-01?&lt;br/&gt;&lt;br/&gt;#javascript #js #typescript #ts #sicp
    </content>
    <updated>2025-10-08T19:23:08Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsvschvg5quekeekdvh5hwhdaz034qfzmekmhf0jr6npnscnr4n7rszyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6w5e4c8w</id>
    
      <title type="html">“[Structure and Interpretation of Computer Programs] wasn&amp;#39;t ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsvschvg5quekeekdvh5hwhdaz034qfzmekmhf0jr6npnscnr4n7rszyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6w5e4c8w" />
    <content type="html">
      “[Structure and Interpretation of Computer Programs] wasn&amp;#39;t really about Scheme; I think a lot of the point of using Scheme (as I understood it) is that the language is so minimalist and so beautiful that even this first intro course can be about fundamental concepts of computer science without getting distracted by the language.”&lt;br/&gt;&lt;br/&gt;—Keith Winstein&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://news.ycombinator.com/item?id=44687148&#34;&gt;https://news.ycombinator.com/item?id=44687148&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://files.functional.cafe/media_attachments/files/114/920/093/309/872/335/original/2849381f86a57208.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-07-26T14:57:07Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsga0t4kfgtded4dgkzhdl6d7apeh9ysmah9rfxrcjs4kzpm7gdy2czyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6wgq07ae</id>
    
      <title type="html">👆🏽 “A “purely functional” approach to composing ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsga0t4kfgtded4dgkzhdl6d7apeh9ysmah9rfxrcjs4kzpm7gdy2czyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6wgq07ae" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd9fx78q7uhd99jatlfvxkg50kx2w2yruv4eydalzlfl5f7y4aqpgfwtf8u&#39;&gt;nevent1q…tf8u&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;👆🏽&lt;br/&gt;&lt;br/&gt;“A “purely functional” approach to composing functionality is appropriate when we wish to compose behaviour with classes, but do not wish to mutate a class that is used elsewhere. One approach is to extend the class into a subclass, and mix behaviour into the newly created subclass.”&lt;br/&gt;&lt;br/&gt;—Purely Functional Composition (2015)&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://raganwald.com/2015/06/20/purely-functional-composition.html&#34;&gt;https://raganwald.com/2015/06/20/purely-functional-composition.html&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://files.functional.cafe/media_attachments/files/114/591/865/460/749/113/original/85c7ba586c0b1677.jpeg&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-05-29T15:39:14Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsd9fx78q7uhd99jatlfvxkg50kx2w2yruv4eydalzlfl5f7y4aqpgzyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6wjq38sj</id>
    
      <title type="html">👆🏽 “As a general rule, it’s best to have things behave ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsd9fx78q7uhd99jatlfvxkg50kx2w2yruv4eydalzlfl5f7y4aqpgzyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6wjq38sj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvxnsjealu0uwjt4g93h973s0l8fjqjc45xlftffftyspq7enkqcgqx03xr&#39;&gt;nevent1q…03xr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;👆🏽&lt;br/&gt;&lt;br/&gt;“As a general rule, it’s best to have things behave as similarly as possible in the domain code, and this sometimes does involve some extra complexity in the infrastructure code. But that is more of a guideline than a hard-and-fast rule, and for this reason there is a place for both the object mixin pattern and functional mixins in JavaScript.”&lt;br/&gt;&lt;br/&gt;—Functional Mixins in ECMAScript 2015 (2015)&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://raganwald.com/2015/06/17/functional-mixins.html&#34;&gt;https://raganwald.com/2015/06/17/functional-mixins.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;👇🏽&lt;br/&gt; &lt;img src=&#34;https://files.functional.cafe/media_attachments/files/114/591/851/367/630/205/original/fc21a2f205371f21.jpeg&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-05-29T15:36:06Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsvxnsjealu0uwjt4g93h973s0l8fjqjc45xlftffftyspq7enkqcgzyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6w25lpfg</id>
    
      <title type="html">“Prototypes in JavaScript are “just objects,” and since ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsvxnsjealu0uwjt4g93h973s0l8fjqjc45xlftffftyspq7enkqcgzyzqqwnga4nmh832d0cgs45erchrklwkku83yqflpkzdvrww2lrl6w25lpfg" />
    <content type="html">
      “Prototypes in JavaScript are “just objects,” and since they are “just objects,” we can add, remove, or modify methods of the prototype by adding, removing, or modifying the functions bound to properties of the prototype.”&lt;br/&gt;&lt;br/&gt;—Prototypes are Objects (and why that matters) (2015)&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://raganwald.com/2015/06/10/mixins.html&#34;&gt;https://raganwald.com/2015/06/10/mixins.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;👇🏽&lt;br/&gt; &lt;img src=&#34;https://files.functional.cafe/media_attachments/files/114/591/839/239/217/426/original/4d8dcc1b1206a4f0.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-05-29T15:32:18Z</updated>
  </entry>

</feed>