<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Peter Norvig on Medium]]></title>
        <description><![CDATA[Stories by Peter Norvig on Medium]]></description>
        <link>https://medium.com/@peternorvig?source=rss-4520b72c1b83------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/0*Y9S_0lM_NSkSPh8E.</url>
            <title>Stories by Peter Norvig on Medium</title>
            <link>https://medium.com/@peternorvig?source=rss-4520b72c1b83------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Mon, 08 Jun 2026 16:01:47 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@peternorvig/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[New Python Operators!]]></title>
            <link>https://peternorvig.medium.com/new-python-operators-9f31b56ddcc7?source=rss-4520b72c1b83------2</link>
            <guid isPermaLink="false">https://medium.com/p/9f31b56ddcc7</guid>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[humor]]></category>
            <category><![CDATA[python-programming]]></category>
            <category><![CDATA[data-science]]></category>
            <dc:creator><![CDATA[Peter Norvig]]></dc:creator>
            <pubDate>Mon, 03 Apr 2023 19:12:27 GMT</pubDate>
            <atom:updated>2025-12-03T07:34:33.850Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/1*t6-Yt7--nG2uT2M_8E6PeQ.png" /><figcaption>Walrus Operator :=</figcaption></figure><p>The new “walrus operator” in Python is written as := and has been the topic of much <a href="https://docs.python.org/3/whatsnew/3.8.html">discussion</a>. This post describes a few of Python’s other whimsically-named but less-well-known multi-character operators.</p><p>These operators are announced today, April 1, 2023, but, much like Dorothy with her ruby slippers, you always had the power to use them, you just had to learn it for yourself!</p><h3>Ski Hat Operator</h3><p>The “ski hat” operator is written as *=0 and can be used to empty out a variable, be it a list, string, tuple, or numeric value.</p><p>For example, after executing the following code, skiers is an empty list.</p><pre>skiers = [&quot;Lindsey&quot;, &quot;Alberto&quot;, &quot;Bode&quot;]<br><br>skiers *=0</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/247/1*Eye4tBbgecHkfns50b-eJA.jpeg" /><figcaption>Ski Hat Operator *=0</figcaption></figure><h3>Dumbbell Operator</h3><p>The “dumbbell operator” is written as [:]=[] and can also be used to empty a list, but is not as versatile as the ski hat operator, as it doesn’t work for most other types.</p><p>After executing the following code, reps will be an empty list:</p><pre>reps = [1, 2, 3, 4, 5]<br><br>reps [:]=[]</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/1*Go6hLYquCEwbjgIHXl0A7A.jpeg" /><figcaption>Dumbbell Operator [:]=[]</figcaption></figure><h3>Lapping Cat Operator</h3><p>The “lapping cat” operator is written as ,= and picks out the first element of an iterable. Like a finicky cat, it complains if there are other bothersome elements in the iterable.</p><p>After executing the following code, water is &#39;HHO&#39;.</p><pre>water ,= [&#39;H&#39;*2+&#39;O&#39;]</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Dssu6EYxxRnciJhwTxZHGg.png" /><figcaption>Lapping Cat Operator ,=</figcaption></figure><h3>Starship Operator</h3><p>The “starship” operator is written as , *_= and depicts a photon torpedo alongside a dual-nacelle starship (such as the Enterprise). It has a similar effect to the lapping cat operator in picking out the first element of an iterable, but it allows the iterable to have more than one element.</p><p>After executing the following code, NCC is 1:</p><pre>NCC    , *_=    [1, 7, 0, 1]</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UHDqb-tus5Rw_R5Ko5_DxA.png" /><figcaption>Starship operator , *_=</figcaption></figure><h3>Flying Saucer Operator</h3><p>The “flying saucer” operator is written as --0-- and “beams up” an integer division, making it round up rather than round down. (I learned about it from <a href="https://www.enthought.com/team/mark-dickinson-2/">Mark Dickinson</a>.)</p><p>The following expression evaluates to 5, not 4:</p><pre>--0--   42 // 10</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/736/1*F3yi875cu9nTG1-OAgLIZg.jpeg" /><figcaption>Flying Saucer Operator — 0 —</figcaption></figure><h3>Emphasis Operator</h3><p>The “emphasis operator” is written by surrounding an integer-valued expression with asterisks and is used to emphasize the following sequence by repeating it. For example,</p><pre>sigh = 3<br>[&#39;oh&#39;, &#39;good&#39;, &#39;grief&#39;, *sigh* &#39;!&#39;]</pre><p>evaluates to [&#39;oh&#39;, &#39;good&#39;, &#39;grief&#39;, &#39;!&#39;, &#39;!&#39;, &#39;!&#39;].</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/360/1*kzyqWLke7gx_M72RqctuQA.png" /><figcaption>The emphasis operator *sigh*</figcaption></figure><h3>Shocked Muppet Operator</h3><p>The “shocked Muppet operator” depicts Beaker in a sideways view; it is written as [:-(0)] and has the effect of producing an empty sequence. For example, the following evaluates to an empty string:</p><pre>&quot;meep meep&quot;   [:-(0)]</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/236/0*0cbjz_T6qp1201kr.jpg" /><figcaption>Shocked Muppet Operator [:-(0)]</figcaption></figure><h3>Factorial Operator</h3><p>Math fans will be pleased to learn that the factorial operator n! has been partially incorporated into Python.</p><p>Unfortunately, the implementation is incomplete. But these unit tests all pass, so that’s good enough, right?</p><pre>assert 0!=1<br>assert 3!=6<br>assert 4!=24<br>assert 5!=120<br>assert 6!=720<br>assert 7!=5040<br>assert 8!=40,320<br>assert 9!=362,880</pre><h3>Abstract keyword</h3><p>Python also allows you to use the keyword abstract to indicate that a method of an abstract class must be implemented in a subclass for any instantiated object.</p><p>In the following code, the method name is defined as abstract, so a call to an object of the class results in an error message pointing out that the method is not defined.</p><pre>class AnAbstractClass:<br>    def name(self): <br>        abstract<br><br>&gt;&gt;&gt; AnAbstractClass().name()<br>NameError: name &#39;abstract&#39; is not defined</pre><h3>More</h3><p>The astute reader will recognize that these new operators rely on the placement of spaces in a way that violates <a href="https://peps.python.org/pep-0008/">PEP 8</a>.</p><p>To that I say: but my way is more fun! Especially today, April 1. For more operators, including implementations of the ++ and &lt;&lt; operators from C++, see my <a href="https://norvig.com/python-iaq.html">old pos</a>t.</p><p>PS: Everything in this post is true, except for “that’s good enough, right?”</p><h4>Articles in this Series</h4><p>April 1, 2016: <a href="https://medium.com/@peternorvig/go-dog-gauguin-the-p-d-eastman-story-a81dd9704cb4"><em>Go, Dog. Gauguin! The P. D. Eastman Story</em></a><br>April 1, 2017: <a href="https://medium.com/@peternorvig/last-tweets-of-the-krell-82b8cb74c320"><em>Last Tweets of the Krell</em></a><em><br></em>April 1, 2018: <a href="https://medium.com/p/47984a3cd2ba/edit"><em>Functional Lifestyles</em></a><br>April 1, 2020: <a href="https://peternorvig.medium.com/no-fools-this-april-but-827a20ecfca6"><em>Hope I Incorporate Before I Get Old</em></a><em><br></em>April 1, 2021: <a href="https://peternorvig.medium.com/hamilton-the-mathematical-musical-c9f14226abfc"><em>Hamilton: The Mathematical Musical</em></a><em><br></em>April 1, 2023: <a href="https://peternorvig.medium.com/packet-switching-patent-revealed-d8104a56c310"><em>Packet-Switching Patent Revealed!</em></a><br>April 1, 2023: <a href="https://peternorvig.medium.com/new-python-operators-9f31b56ddcc7"><em>New Python Operators!</em></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9f31b56ddcc7" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Packet-Switching Patent Revealed!]]></title>
            <link>https://peternorvig.medium.com/packet-switching-patent-revealed-d8104a56c310?source=rss-4520b72c1b83------2</link>
            <guid isPermaLink="false">https://medium.com/p/d8104a56c310</guid>
            <dc:creator><![CDATA[Peter Norvig]]></dc:creator>
            <pubDate>Sat, 01 Apr 2023 16:33:09 GMT</pubDate>
            <atom:updated>2023-04-03T23:21:38.932Z</atom:updated>
            <content:encoded><![CDATA[<p>April 1, 2023</p><p>Today a previously secret patent filing by Amazon.com Inc. was uncovered. To quote from the patent:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/830/1*S9ysG3ubV_XQFC3PeFROXA.png" /><figcaption>Figure 1.</figcaption></figure><blockquote>This invention relates to a packet-switching network, and more particularly to a method for routing physical packets through a packet-switched network.</blockquote><blockquote>A conventional packet-switched delivery system typically includes a plurality of interconnected node elements, each of which includes a processor capable of receiving, routing, and forwarding packets along at least one link. The processor of each node element is typically responsible for locating the destination address of a given packet and establishing a route from the source to the destination address. A route through the network thus created may comprise several nodes and it may include intermediate routing nodes at which packets are temporarily stored for further processing.</blockquote><blockquote>The present invention provides a peer-to-peer means for routing physical packets through a dynamic packet-switched network in a more efficient manner than conventional methods. Specifically, the present invention comprises a method wherein participating node elements (automobiles, labeled “A” in Figure 1) will broadcast their current planned route to nearby nodes. Based upon this information, the method determines a route through the network that delivers the packet to its destination.</blockquote><blockquote>Packets are initially loaded into a node’s basket (labeled “B” in Figure 1) and whenever a node is in immediate proximity of another node whose broadcasted route will bring it closer to the package’s destination, the first node will use a Car Augmentation Top-mounted Automated Package Upload and Transfer Tool (or CATAPULT, labeled “C” in Figure 1) to transfer the package to the basket (“B”) of the second node. Through its use of efficient routing, the present invention streamlines the packet delivery process, thus improving overall performance and reliability.</blockquote><p>The patent appears to be an innovative way to reduce transportation costs and pollution (as well as pesky <a href="https://www.businessinsider.com/amazon-delivery-drivers-reveal-claims-of-disturbing-work-conditions-2018-8">labor disputes</a>) by replacing delivery trucks and drivers with a peer-to-peer network of customers who were already on the road anyway, and collectively were driving to the places the packets need to go.</p><p>Since packet loss would be a considerable negative, it is expected that the TCP protocol with the synchronize-acknowledge handshake will be used rather than the UDP protocol.</p><p>Below is a depiction of packet-switching in action:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ikzwDf3eskENuHyBrYnBzw.png" /></figure><h3>Articles in this Series</h3><p>April 1 2016: <a href="https://medium.com/@peternorvig/go-dog-gauguin-the-p-d-eastman-story-a81dd9704cb4"><em>Go, Dog. Gauguin! The P. D. Eastman Story</em></a><br>April 1 2017: <a href="https://medium.com/@peternorvig/last-tweets-of-the-krell-82b8cb74c320"><em>Last Tweets of the Krell</em></a><em><br></em>April 1 2018: <a href="https://medium.com/p/47984a3cd2ba/edit"><em>Functional Lifestyles</em></a><br>April 1 2020: <a href="https://peternorvig.medium.com/no-fools-this-april-but-827a20ecfca6"><em>Hope I Incorporate Before I Get Old</em></a><em><br></em>April 1 2021: <a href="https://peternorvig.medium.com/hamilton-the-mathematical-musical-c9f14226abfc"><em>Hamilton: The Mathematical Musical</em></a><em><br></em>April 1 2023: <a href="https://peternorvig.medium.com/packet-switching-patent-revealed-d8104a56c310"><em>Packet-Switching Patent Revealed!</em></a><br>April 1 2023: <a href="https://peternorvig.medium.com/new-python-operators-9f31b56ddcc7"><em>New Python Operators!</em></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d8104a56c310" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Hamilton: The Mathematical Musical]]></title>
            <link>https://peternorvig.medium.com/hamilton-the-mathematical-musical-c9f14226abfc?source=rss-4520b72c1b83------2</link>
            <guid isPermaLink="false">https://medium.com/p/c9f14226abfc</guid>
            <dc:creator><![CDATA[Peter Norvig]]></dc:creator>
            <pubDate>Thu, 01 Apr 2021 07:07:24 GMT</pubDate>
            <atom:updated>2023-04-03T23:21:17.987Z</atom:updated>
            <content:encoded><![CDATA[<p>I had an idea to write a musical about a man who lived two centuries ago and made profound contributions that affect our everyday lives to this very day, although his story remains relatively unknown. But when I revealed that this man’s name was Hamilton, I was accused of plagiarism!</p><p>That’s so unfair–with all due respect to <a href="https://www.linmanuel.com/">Lin-Manuel Miranda</a>, <em>nobody</em> has written a musical about <a href="https://en.wikipedia.org/wiki/William_Rowan_Hamilton">William Rowan Hamilton</a>, the 19th century Irish mathematician. Today, April 1st 2021, I’m sharing parts of three songs from this highly original musical.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/612/1*-bEeeCG7pmapWtxTUy4FYw.png" /><figcaption>William Rowan Hamilton</figcaption></figure><blockquote>William Rowan Hamilton was a child prodigy in mathematics, linguistics, physics, and astronomy.</blockquote><h3>William Rowan Hamilton</h3><p>How does the 4th of 9 children, son of a solicitor Scotsman, dropped in the middle of a forgotten<br>spot in Talbots Castle in a town that’s smaller<br>grow up to be a hero and a scholar?</p><p>The mathematician on a mission, sent away by his father<br>got a lot farther by working a lot harder<br>by being a lot smarter by climbing up the rungs<br>by thirteen, he knew a dozen tongues.</p><p>Well the word got around they said this kid has knowledge<br>took up a collection just to send him to Trinity College.<br>Get your education don’t forget from whence you came. And the world is gonna know your name.<br>What’s ya name, man?</p><p>William Rowan Hamilton.<br>My name is William Rowan Hamilton.<br>And there’s a million things I haven’t done.<br>But just you wait, just you, wait.</p><blockquote>Hamilton was a pioneer in graph theory, the branch of mathematics concerning connections between things. Every time your UPS or DoorDash or Amazon driver makes a series of deliveries to different locations, that’s a <a href="https://en.wikipedia.org/wiki/Hamiltonian_path">Hamiltonian Path</a>, and the deliveries are more efficient thanks to Hamilton’s work.</blockquote><h3>I’m Not Throwing Away My Path</h3><p>I am not throwing away my path!<br>I am not throwing away my path!<br>Hey yo, I’m just like my graph<br>I’m multiply connected, don’t laugh<br>And I’m not throwing away my path!<br>I’m ‘a get a scholarship to Trinity College<br>I prob’ly shouldn’t brag, but I got the fire and<br>I’m the Royal Astronomer of Ireland<br>Only eighteen but my mind is older<br>These Dublin streets get colder, I pledge<br>Ev’ry vertex, ev’ry edge<br>I have learned to manage, I don’t have disciples<br>I walk these graphs in cycles<br>But I am not throwing away<br>My path<br>I am not throwing away<br>My path</p><blockquote>Hamilton invented the <a href="https://en.wikipedia.org/wiki/Quaternion">quaternion number system</a>, which can be used to represent the position of objects in three-dimensional space, the direction they are pointing, and most importantly the way they rotate. This number system is used today in computer graphics–Buzz Lightyear and Woody are described by quaternions–and in video games such as Assassin’s Creed and Kerbal Space Program. Quaternions are used by industrial robots that have several arm joints that must all rotate in smooth unison. And NASA uses quaternions to accurately chart the flight paths of spacecraft through the solar system.</blockquote><h3>The Vector Where it Happened</h3><p>The quaternion emerges as an unprecedented multiplicative pearl<br>A system he can rotate however he wants<br>The del operator emerges with div, grad, and curl<br>And here’s the pièce de résistance:<br>No other numbers are in<br>The vector where it happened<br>The vector where it happened<br>The vector where it happened<br>No other numbers are in<br>The vector where it happened<br>The vector where it happened<br>The vector where it happened<br>No one really knows what <strong>i</strong>, <strong>j</strong>, and <strong>k</strong> mean<br>The math is so clean<br>How they depict a scene<br>We just assume that it happens<br>But no other numbers are in<br>The vector where it happens.</p><h3>Articles in this Series</h3><p>April 1 2016: <a href="https://medium.com/@peternorvig/go-dog-gauguin-the-p-d-eastman-story-a81dd9704cb4"><em>Go, Dog. Gauguin! The P. D. Eastman Story</em></a><br>April 1 2017: <a href="https://medium.com/@peternorvig/last-tweets-of-the-krell-82b8cb74c320"><em>Last Tweets of the Krell</em></a><em><br></em>April 1 2018: <a href="https://medium.com/p/47984a3cd2ba/edit"><em>Functional Lifestyles</em></a><br>April 1 2020: <a href="https://peternorvig.medium.com/no-fools-this-april-but-827a20ecfca6"><em>Hope I Incorporate Before I Get Old</em></a><em><br></em>April 1 2021: <a href="https://peternorvig.medium.com/hamilton-the-mathematical-musical-c9f14226abfc"><em>Hamilton: The Mathematical Musical</em></a><em><br></em>April 1 2023: <a href="https://peternorvig.medium.com/packet-switching-patent-revealed-d8104a56c310"><em>Packet-Switching Patent Revealed!</em></a><br>April 1 2023: <a href="https://peternorvig.medium.com/new-python-operators-9f31b56ddcc7"><em>New Python Operators!</em></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c9f14226abfc" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[No Fools this April, but …]]></title>
            <link>https://peternorvig.medium.com/no-fools-this-april-but-827a20ecfca6?source=rss-4520b72c1b83------2</link>
            <guid isPermaLink="false">https://medium.com/p/827a20ecfca6</guid>
            <dc:creator><![CDATA[Peter Norvig]]></dc:creator>
            <pubDate>Thu, 30 Apr 2020 22:58:49 GMT</pubDate>
            <atom:updated>2023-08-16T02:55:59.942Z</atom:updated>
            <content:encoded><![CDATA[<h3>Hope I Incorporate Before I Get Old</h3><p>In the 1970’s we thought that our rock and roll icons were leading a revolution against the establishment, and we the fans were part of it. But in 2020, when I see that <a href="https://www.financial-planning.com/news/alliance-for-lifetime-income-sponsors-rolling-stones">a Wealth Management company sponsored the Rolling Stones tour</a> and <a href="https://www.nytimes.com/2002/09/15/automobiles/like-the-song-love-the-car.html">Cadillac has a Led Zeppelin theme song</a>, I realize we’ve all become the bourgeois. So here are some suggested lyric changes for future tours:</p><h3>The Who</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/980/1*-c9xvI7RScUvHbDhXsJVag.jpeg" /></figure><p>Things they do look awful c-c-c-cold<br>I hope I incorporate before I get old<br>To avoid my taxation<br>To avoid my taxation, baby</p><h3>The Police</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/615/1*JpCu14Zn4mvgkXX2ur36zA.jpeg" /></figure><p>Roxanne<br>You don’t have to put on the red ink<br>Those days are over<br>You don’t have to sell your IRA bonds</p><h3>Thin Lizzy</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bcXZdYQm-_alqTgPAgYZCw.jpeg" /></figure><p>Guess who just got back today<br>Them CPAs that had been away<br>Foreign junket got them a tax defray<br>But man, I still think them cats are crazy</p><h3>The Boss</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tyKx9n1YX18GeFuPGoKn2g.jpeg" /></figure><p>Oh, so your daddy says he knows that I don’t have any money<br>Well, tell him this is his last chance to get his daughter in a fine romance<br>Because a reinsurance company, Rosie, just gave me a big advance<br>Prices were slashed and the Dow almost crashed, but the Lord had mercy<br>Xerox machine, she’s a dud, copies are like mud<br>Somewhere in the office parks of Jersey</p><h3>The Clash</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/450/1*DLdT_XiapYmZbuH2Y__pVA.jpeg" /></figure><p>Darling you got to let me know<br>Should I check the box in this row?<br>If you say you are my dear<br>I’ll be here through the fiscal year<br>So you got to give me instruction<br>Should I take you as a tax deduction?</p><h3>Steppenwolf</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QDrwqxCyrid68Op3b0kC_g.jpeg" /></figure><p>Like a culturally privileged child<br>We were born, born to be mild<br>We started out so high<br>We hardly had to try<br>Born to be mild<br>Born to be mild</p><p><em>(And if you don’t recognize the songs, congrats! You’re not part of the aging demographic.)</em></p><h3>Articles in this Series</h3><p>April 1 2016: <a href="https://medium.com/@peternorvig/go-dog-gauguin-the-p-d-eastman-story-a81dd9704cb4"><em>Go, Dog. Gauguin! The P. D. Eastman Story</em></a><br>April 1 2017: <a href="https://medium.com/@peternorvig/last-tweets-of-the-krell-82b8cb74c320"><em>Last Tweets of the Krell</em></a><em><br></em>April 1 2018: <a href="https://medium.com/p/47984a3cd2ba/edit"><em>Functional Lifestyles</em></a><br>April 1 2020: <a href="https://peternorvig.medium.com/no-fools-this-april-but-827a20ecfca6"><em>Hope I Incorporate Before I Get Old</em></a><em><br></em>April 1 2021: <a href="https://peternorvig.medium.com/hamilton-the-mathematical-musical-c9f14226abfc"><em>Hamilton: The Mathematical Musical</em></a><em><br></em>April 1 2023: <a href="https://peternorvig.medium.com/packet-switching-patent-revealed-d8104a56c310"><em>Packet-Switching Patent Revealed!</em></a><br>April 1 2023: <a href="https://peternorvig.medium.com/new-python-operators-9f31b56ddcc7"><em>New Python Operators!</em></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=827a20ecfca6" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[I’ve Consed Every Pair]]></title>
            <link>https://peternorvig.medium.com/ive-consed-every-pair-54ef5d9d93b6?source=rss-4520b72c1b83------2</link>
            <guid isPermaLink="false">https://medium.com/p/54ef5d9d93b6</guid>
            <category><![CDATA[clojure]]></category>
            <category><![CDATA[lisp]]></category>
            <dc:creator><![CDATA[Peter Norvig]]></dc:creator>
            <pubDate>Thu, 30 Apr 2020 18:57:24 GMT</pubDate>
            <atom:updated>2021-10-13T00:43:12.026Z</atom:updated>
            <content:encoded><![CDATA[<p>Back when cafes were open, I met an enthusiastic programmer who wanted to tell me how awesome the <a href="https://clojure.org/"><strong>Clojure</strong> language</a> is. This is a sentiment with which I wholeheartedly agreed, and we had a great discussion. But I found it somewhat ironic that this person, who recognized me as a Python programmer, did not realize that I had a long 15-year history of using Lisp (which Clojure is a dialect of) as my primary language. It reminded me of this Johnny Cash song:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FPoW17xCO0hg%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DPoW17xCO0hg&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FPoW17xCO0hg%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/a13da594660a19018b22b00ac9d2a301/href">https://medium.com/media/a13da594660a19018b22b00ac9d2a301/href</a></iframe><p>so I wrote down these lyrics:</p><h3>I’ve Consed Every Pair</h3><p>I was totin’ my laptop at a trendy Palo Alto cafe <br>When I passed a hacker bro’ with a new 16 inch display<br>“If you’re goin’ to be hacking, Mack, at my table you can rest”<br>And so I climbed into a seat and then I started up a test<br>He asked me if I’d programmed with the Clojure brand<br>And I said, “Listen, I’ve used every <a href="https://repl.it/">repl</a> in this here land”</p><p>I’ve consed every pair, man<br>I’ve consed every pair, man<br>Signaled every err, man<br>I’ve done so much software, man<br>Of repls I’ve a’had my share, man<br>I’ve consed every pair</p><p>I’ve used Franz Lisp, LM Lisp, Common Lisp, PLT<br>MacLisp, ZetaLisp, Emacs Lisp, and Yale’s T<br>Vaxen, Explorer, Symbolics, PDP<br>Sun station, PC, MacBook, Blackberry<br>Racket, Pyret, JScheme, R7<br>R6, R5, R4, I’m in heaven</p><p>I’ve consed every pair, man<br>I’ve consed every pair, man<br>Signaled every err, man<br>I’ve done so much software, man<br>Of repls I’ve a’had my share, man<br>I’ve consed every pair</p><p>I’ve used deftype, ftype, machine-type, define<br>lisp-type, typecase, check-type, read-line<br>class-name, class-of, defclass, load-time<br>base-string, write-string, string-trim, run-time<br>make-list, make-hash, make-node, string-make<br>make-array, display, two-way, for Pete’s sake</p><p>I’ve consed every pair, man<br>I’ve consed every pair, man<br>Signaled every err, man<br>I’ve done so much software, man<br>Of repls I’ve a’had my share, man<br>I’ve consed every pair</p><p>I’ve used arrayp, boundp, minusp, iterator<br>constantp, equalp, typep, numerator<br>bit-nor, vector, ffloor, butlast,<br>special or, xor, err-or, broadcast,<br>truncate, conjugate, concatenate, package-error, <br>allocate, update, random-state, what a terror.</p><p>I’ve consed every pair, man<br>I’ve consed every pair, man<br>Signaled every err, man<br>I’ve done so much software, man<br>Of repls I’ve a’had my share, man<br>I’ve consed every pair</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=54ef5d9d93b6" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Functional Lifestyles Training]]></title>
            <link>https://peternorvig.medium.com/functional-lifestyles-training-47984a3cd2ba?source=rss-4520b72c1b83------2</link>
            <guid isPermaLink="false">https://medium.com/p/47984a3cd2ba</guid>
            <category><![CDATA[functional-programming]]></category>
            <dc:creator><![CDATA[Peter Norvig]]></dc:creator>
            <pubDate>Sun, 01 Apr 2018 04:34:27 GMT</pubDate>
            <atom:updated>2023-04-03T23:19:47.031Z</atom:updated>
            <content:encoded><![CDATA[<p>March 20th was the first day of spring, but it is <strong>April 1st</strong> when many people start thinking about getting in shape for the coming summer months. Finding the right gym can be confusing. I regularly pass by the <em>Functional Lifestyles </em>gym in Palo Alto on my daily commute, but I didn’t understand how they operate until I stopped in and had a chance to interview their Irish-American head trainer, <a href="http://miranda.org.uk/"><strong>Miranda</strong></a><strong> </strong><a href="https://www.haskell.org/"><strong>Haskell</strong></a><strong>-</strong><a href="https://ocaml.org/"><strong>O’Caml</strong></a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ezwnXbhmeHeWIlVK7e0lTw.jpeg" /><figcaption>Functional Lifestyles, <a href="https://www.google.com/maps/uv?hl=en&amp;pb=!1s0x808fbaf105ba035f%3A0x17addac455f1ace6!2m22!2m2!1i80!2i80!3m1!2i20!16m16!1b1!2m2!1m1!1e1!2m2!1m1!1e3!2m2!1m1!1e5!2m2!1m1!1e4!2m2!1m1!1e6!3m1!7e115!4shttps%3A%2F%2Flh5.googleusercontent.com%2Fp%2FAF1QipM4EDswRtQ98_racoEZgkP1hb_7cCDwG5jCKjds%3Dw240-h160-k-no!5sfunctional%20lifestyles%20-%20Google%20Search!15sCAQ&amp;imagekey=!1e10!2sAF1QipM4EDswRtQ98_racoEZgkP1hb_7cCDwG5jCKjds&amp;sa=X&amp;ved=2ahUKEwiv4erkof_kAhXpJDQIHbBJCnMQoiowCnoECAoQBg">Park Blvd, Palo Alto, CA</a></figcaption></figure><p><em>Q: Miranda, can you tell us the philosophy of </em><a href="https://functional-lifestyles.com/"><em>Functional Lifestyles</em></a><em>?</em></p><p><strong>A:</strong> Functional Lifestyles is dedicated to making our clients stronger, slimmer, healthier, more robust, more concise, more elegant, and better able to multitask, by introducing them to a pure <a href="https://en.wikipedia.org/wiki/Functional_programming">functional</a> lifestyle, and weaning them from the <a href="https://en.wikipedia.org/wiki/Imperative_programming">imperative</a> lifestyle. We offer a one-on-one personalized experience; we’ll always call you <a href="https://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_name">by name</a>.</p><p><em>Q: What should I expect in my first workout?</em></p><p><strong>A:</strong> First we’d do some <a href="https://en.wikipedia.org/wiki/Fold_(higher-order_function)">folds</a>, both to the left and to the right. Such a great way to <a href="https://www.geeksforgeeks.org/reduce-in-python/">reduce</a>! Then, for strength: <a href="https://en.wikipedia.org/wiki/Lambda_lifting">lambda lifting</a>. Many clients have inadvertently put on a few unwanted free variables, and lambda lifting will reduce that dramatically. Usually we can slim down even more with some <a href="https://en.wikipedia.org/wiki/Lambda_lifting#Lambda_dropping_in_lambda_calculus">lambda drops</a>.</p><p><em>Q: Is this for anybody?</em></p><p><strong>A:</strong> Absolutely! No matter how <a href="https://en.wikipedia.org/wiki/Eager_evaluation">eager</a> or <a href="https://en.wikipedia.org/wiki/Lazy_evaluation">lazy</a> you are, we’ve got an evaluation strategy for you. And we have <a href="https://en.wikipedia.org/wiki/Homomorphism">structures for all forms</a>; whether you’re an <a href="https://en.wikipedia.org/wiki/Endomorphism">endomorph</a>, an <a href="https://en.wikipedia.org/wiki/Isomorphism">isomorph</a>, or a <a href="https://en.wikipedia.org/wiki/Homomorphism">homomorph</a>, we’ve got the <a href="https://en.wikipedia.org/wiki/Map_(mathematics)">mapping</a> for you. It is completely safe — no <a href="https://en.wikipedia.org/wiki/Side_effect_(computer_science)">side effects</a> whatsoever. And if you’ve got multiple concurrent problems, we can help you reach <a href="https://en.wikipedia.org/wiki/Clojure">clojure</a>.</p><p><em>Q: Can the training </em><a href="https://www.theregister.co.uk/2017/05/31/at_the_feet_of_the_great_monad/"><em>become</em></a><em> almost a religious experience?</em></p><p><strong>A:</strong> I wouldn’t say that. At Functional Lifestyles we believe in a strict separation of <a href="https://en.wikipedia.org/wiki/Alonzo_Church">Church</a> and s<a href="https://en.wikipedia.org/wiki/State_(computer_science)">tate</a>.</p><p><em>Q: I’ve heard that some people who get hooked on the functional lifestyle find it hard to communicate with their non-functional friends?</em></p><p><strong>A:</strong> Not at all! We’ll set you up with <a href="https://en.wikipedia.org/wiki/Monad_(functional_programming)">monad</a>s that will allow you to do all the input and output you want, and even handle exceptions!</p><p><em>Q: So would you say that your training will change me for the better?</em></p><p><strong>A:</strong> Oh for Milner’s sake, no! We consider all our clients to be <a href="https://en.wikipedia.org/wiki/Immutable_object">immutable</a>. What we do guarantee is that the application of our functions will produce a new and improved version of you.</p><p><em>Q: Isn’t that basically the same thing?</em></p><p><strong>A: </strong>OK, you’ve got a lot to learn. Let’s get started!</p><h3>Articles in this Series</h3><p>April 1 2016: <a href="https://medium.com/@peternorvig/go-dog-gauguin-the-p-d-eastman-story-a81dd9704cb4"><em>Go, Dog. Gauguin! The P. D. Eastman Story</em></a><br>April 1 2017: <a href="https://medium.com/@peternorvig/last-tweets-of-the-krell-82b8cb74c320"><em>Last Tweets of the Krell</em></a><em><br></em>April 1 2018: <a href="https://medium.com/p/47984a3cd2ba/edit"><em>Functional Lifestyles</em></a><br>April 1 2020: <a href="https://peternorvig.medium.com/no-fools-this-april-but-827a20ecfca6"><em>Hope I Incorporate Before I Get Old</em></a><em><br></em>April 1 2021: <a href="https://peternorvig.medium.com/hamilton-the-mathematical-musical-c9f14226abfc"><em>Hamilton: The Mathematical Musical</em></a><em><br></em>April 1 2023: <a href="https://peternorvig.medium.com/packet-switching-patent-revealed-d8104a56c310"><em>Packet-Switching Patent Revealed!</em></a><br>April 1 2023: <a href="https://peternorvig.medium.com/new-python-operators-9f31b56ddcc7"><em>New Python Operators!</em></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=47984a3cd2ba" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Last Tweets of the Krell]]></title>
            <link>https://peternorvig.medium.com/last-tweets-of-the-krell-82b8cb74c320?source=rss-4520b72c1b83------2</link>
            <guid isPermaLink="false">https://medium.com/p/82b8cb74c320</guid>
            <category><![CDATA[reliability]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[science-fiction]]></category>
            <dc:creator><![CDATA[Peter Norvig]]></dc:creator>
            <pubDate>Sat, 01 Apr 2017 07:03:00 GMT</pubDate>
            <atom:updated>2023-10-28T05:03:03.434Z</atom:updated>
            <content:encoded><![CDATA[<p>Many readers are no doubt familiar with <a href="https://en.wikipedia.org/wiki/Forbidden_Planet"><em>Forbidden Planet</em></a>, the 1956 documentary film about the <em>Krell</em> — a civilization that came to an unfortunate end just at the launch of what could have been their biggest achievement. Ever since the film’s release, xenoanthropologists have been stymied by a lack of source material on the Krell.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/634/1*CHSGh7VQEkLAAtqQT6aP7Q.png" /><figcaption>Krell Technology</figcaption></figure><p>But on April 1, researchers from the <a href="http://opennmt.net/">OpenNMT</a> institute announced a stunning success in translating previously undecipherable Krell messages, thanks to <a href="https://en.wikipedia.org/wiki/Neural_machine_translation">deep neural machine translation</a> technology.</p><p>They note that the Krell language has three grammatical pluractionality markers, one for <em>public</em> speech addressed to everyone, one for <em>cohort</em> speech among a group of peers, and one for <em>private </em>speech between individuals. The researchers joked that these modes correspond to our Twitter, Slack, and text messaging. Krell names are unpronounceable for us, so we have chosen single-letter initials for the participants.</p><h3>The Participants</h3><p><strong>P: </strong>The president of an organization that we will translate as <em>KrellTech</em>.<br><strong>A:</strong> The alpha technical expert at KrellTech.<br><strong>S: </strong>A site reliability engineer.<br><strong>X: </strong>A user experience designer<strong>.</strong></p><h3>The Messages</h3><p><em>P(to public) </em>KrellTech is thrilled to announce this morning the launch of CognoMaterializer 1.0! The basic version of this service is available free of charge to all citizens of Altair IV. The possibilities are equal to the number ten raised almost literally to the power of infinity!</p><p>P(<em>to cohort) </em>Time to party! All KrellTech employees, friends, and family invited to the big bash at the Level 700 meeting room.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/900/1*A1En0H2RXhUaJ52LkN7xiw.png" /><figcaption>Entrance to Level 700 meeting room; door designed for Krell body shape.</figcaption></figure><p><em>P(to cohort) </em>Congratulations everyone, and special thanks to <strong>A</strong> for leading this project. Never have I seen a single individual successfully do so much, on their own, to create a complex project like this! The drinks are on me, <strong>A</strong>!</p><p><em>A(to cohort)</em> Thanks, <strong>P</strong>! I’ll toast you for one drink but then I’ll have to crash — too many late nights bringing this project home! I’m fried!</p><h3>Later That Night</h3><p><em>P(to public)</em> After midnight … we start day two of the CognoMaterializer era. A few reports of problems, due to user error. I promise we will have a fix by tomorrow for all affected users!</p><p>S <em>(to cohort)</em> @<strong>A</strong>, you better get in here fast. Some of these user reports look serious …</p><p>S <em>(to cohort) </em>@<strong>A</strong>, WHERE ARE YOU!!?? You don’t respond to messages, pages, or calls. I’m going to start a rollback to the previous version.</p><p>S <em>(to cohort) </em>@<strong>A</strong>, or @<strong>X</strong>, or anyone in @<strong>cognoteam</strong>, what’s up with the rollback script??? I tried to run it, and it just gave an error message.</p><p><em>X(to cohort) </em>@<strong>A</strong>, why do you have unreviewed code from experimental running in production? I didn’t even know that was possible!!??</p><p><em>X(to cohort) </em>I warned everyone not to cut the budget for user testing, but did you listen? <em>Noooo</em>, @<strong>P</strong> said we had no budget left. We brought a few users in for one-hour tests, but we never did the week-long home tests I specified as <em>essential</em>. We’re going to have to pull the plug on this whole thing.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/460/1*UYZD5xTKwYHI4-b3POiowQ.png" /><figcaption>Dashboard indicating number of machines running</figcaption></figure><p><em>S(to cohort) </em>I tried the shutdown script, but the ping-and-restart daemons restart the servers faster than I can shut them down. Didn’t anyone try this before?? Can we contact our brick service provider and have them shut it down? Could we run around and pull all the plugs?</p><p><em>X(to cohort) </em>umm, the brick is a 8000 cubic mile array of klystron relays powered by 9,200 thermonuclear reactors. I don’t think we can do a manual shutdown.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/604/1*cS_s6LVKArF8mdRtMzpBBA.png" /><figcaption>A small part of the brick service provider infrastructure</figcaption></figure><p>P (<em>to public) </em>Everyone, we’ve got a few minor issues — I recommend taking a pause from enjoying the CognoMaterializer until we get a quick update out. Just try not to think about anything bad. Or anything at all, really. And whatever you do, don’t go to sleep!!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*CvZTOLHXvmFTI2Kg6Eo4dQ.png" /><figcaption>A few minor issues</figcaption></figure><p><em>X(to cohort) </em>we’re 3-way-copulated</p><p>S <em>(to cohort) </em>we’re triple-3-way-copulated</p><h3><strong>Last Known Krell Message</strong></h3><p><em>S(to public) </em>this is so bad … I don’t know if there is anyone left out there to see this. I’m sorry for the damage we’ve done to our civilization; I know we could have protected it if we had followed these practices:</p><ul><li><em>Many eyes.</em> Don’t let one person work alone. All changes should be reviewed and approved by others.</li><li><em>Understand use cases.</em> The temptation is to concentrate on what you, as an engineer, do in building your service, but the truly important thing is what your customers will do when they use it.</li><li><em>Engineers are judged by failure.</em> Product designers are judged by how useful the product is when it is functioning. Engineers are judged by how gracefully the system degrades when it fails.</li><li><em>Test what you build and build what you test.</em> Make sure the use cases are tested, and that what you run is what was tested. Hermetic builds assure that you know where everything came from, and can reproduce it.</li><li><em>Adversarial testing.</em> Be devious in imagining what could go wrong, and fix it before it does. Hire red teams to try to uncover vulnerabilities.</li><li><em>Software Release Checklist.</em> Don’t release until you check every box: code coverage and tests passing; bugs fixed; feature checklist; security review; privacy review; fairness review; accessibility review; performance review; documentation review; whatever else is part of your development process. Yes, sometimes you will release software with known bugs, but that should always be part of an intentional decision to do so.</li><li><em>Product Launch Checklist. </em>Engineers often have the mindset of “if the software works, ship it.” But working code by itself is not a product. Before launching, have a checklist for the whole product: sales, marketing, communication, and support teams have to be trained and ready to go.</li><li><em>Landing Checklist. </em>Everyone remembers the date that our species first landed on our moon–the day they landed, not the day they launched. So it is with software; prepare for the landing, when the software is in the hands of many customers, not just for the launch, when it is in the hands of a few enthusiastic early adopters.</li><li><em>Progressive rollouts.</em> Trial the system with a small number of users before releasing to a large number.</li><li><em>Monitor.</em> Have enough people, and automatic systems, to gather feedback on how you are doing and sound an alert when there are problems.</li><li><em>On Call</em>: Make sure there is a schedule of qualified people on call to deal with problems, especially at the start and after any major change.</li><li><em>Instant shut down and rollback.</em> Make sure you have the ability to cleanly shut down the system if something goes wrong, and in case of error to roll back to the previous working system. Bonus points if you can selectively cherry pick properly-working improvements and reliably add them to a previous version.</li><li><em>Safe User Interface.</em> Make it hard for users to do unsafe things. <strong>P</strong> insisted on a “one-thought” interface (and even patented it). It is safer to require a specific prompt to initiate action (“<em>OK, Cogno</em>”), to have the system echo back its interpretation of the user’s command, and to use a confirmation dialog for actions with big irreversible effects (“<em>Are you sure you want to conjure a Monster from the Id?</em>”).</li><li><em>Culture.</em> <strong>X</strong> and I (and others) had concerns all along, but the culture encouraged us to keep quiet about problems, discouraged discussion, and didn’t have a process to fix the problems.</li><li><em>Practice emergencies.</em> Don’t wait until a real emergency to see how good your response is; practice in advance.</li><li><em>Premortems. </em>Before launch, ask everyone on the team “Imagine the project turns out to be a miserable failure. What could have caused that?” Then fix the problems before they happen.</li><li><em>Postmortems.</em> When something goes wrong, analyze and understand it after the fact … that is, if there is anyone left alive.</li></ul><h3>Articles in this Series</h3><p>April 1 2016: <a href="https://medium.com/@peternorvig/go-dog-gauguin-the-p-d-eastman-story-a81dd9704cb4"><em>Go, Dog. Gauguin! The P. D. Eastman Story</em></a><br>April 1 2017: <a href="https://medium.com/@peternorvig/last-tweets-of-the-krell-82b8cb74c320"><em>Last Tweets of the Krell</em></a><em><br></em>April 1 2018: <a href="https://medium.com/p/47984a3cd2ba/edit"><em>Functional Lifestyles</em></a><br>April 1 2020: <a href="https://peternorvig.medium.com/no-fools-this-april-but-827a20ecfca6"><em>Hope I Incorporate Before I Get Old</em></a><em><br></em>April 1 2021: <a href="https://peternorvig.medium.com/hamilton-the-mathematical-musical-c9f14226abfc"><em>Hamilton: The Mathematical Musical</em></a><em><br></em>April 1 2023: <a href="https://peternorvig.medium.com/packet-switching-patent-revealed-d8104a56c310"><em>Packet-Switching Patent Revealed!</em></a><br>April 1 2023: <a href="https://peternorvig.medium.com/new-python-operators-9f31b56ddcc7"><em>New Python Operators!</em></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=82b8cb74c320" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Go, Dog. Gauguin! The P. D. Eastman Story]]></title>
            <link>https://peternorvig.medium.com/go-dog-gauguin-the-p-d-eastman-story-a81dd9704cb4?source=rss-4520b72c1b83------2</link>
            <guid isPermaLink="false">https://medium.com/p/a81dd9704cb4</guid>
            <category><![CDATA[childrens-books]]></category>
            <category><![CDATA[books-and-authors]]></category>
            <dc:creator><![CDATA[Peter Norvig]]></dc:creator>
            <pubDate>Fri, 01 Apr 2016 07:21:40 GMT</pubDate>
            <atom:updated>2024-03-18T04:14:35.443Z</atom:updated>
            <content:encoded><![CDATA[<p>If you (or your parents) were learning to read in the 1960s, you were probably introduced to the books of author/illustrator P. D. Eastman:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*EQx0F5L0-Ym30Rbqa74O4Q.png" /></figure><p>I always assumed that P. D. Eastman was a typical American man living a <em>Mad Men</em> existence in the 50s and 60s, turning out children’s books for a living. (Or maybe, like Wallace Stevens, as a diversion from his day job at an insurance agency.)</p><p>But in a fascinating exhibit opening April 1 at the <a href="http://nccil.org/museum/">National Center for Children’s Illustrated Literature</a>, the truth was revealed for the first time. It turns out that “<em>P. D. Eastman</em>” is actually a pseudonym that joins two men, separated by two generations and 5,000 miles, but joined by family ties and an enduring secret.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/282/1*qAlJSjcE4GbYvfpU9BMj9w.jpeg" /><figcaption>Philippe Delano Homme d’Est</figcaption></figure><p>Philippe Delano Homme d’Est was a French artist, born in 1849, and best known for his Art Nouveau illustrations in <a href="https://commons.wikimedia.org/wiki/File:The_Quartier_Latin,_a_magazine_devoted_to_the_arts,_advertising_poster,_ca._1895.jpg"><em>Quartier Latin</em></a><em>.</em> Philippe was befriended by Paul Gauguin, and in 1891 they emigrated together to Tahiti. For several years they both thrived there. Philippe tried to convince Gauguin to join him in a bizarre project: a book that incorporated ideas from Soren Kirkegaard’s existential philosophy, but was presented as an illustrated children’s book. The NCCIL exhibit shows draft pages from the book in Pierre’s hand asking the questions “<em>D’où Venons Nous / Que Sommes Nous / Où sont ces chiens va / Que vont-ils faire</em>” (Where Do We Come From? / What Are We? / Where Are Those Dogs Going? / What Are They Going to Do?) and answering with “<em>À l’arbre! Jusqu’à l’arbre!</em>” (To the tree! Up the tree!). The surviving illustrations demonstrate an obvious clash of styles between the two collaborating artists:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*l_3vnh_33T7fytAvT4HNvw.jpeg" /><figcaption>Collaboration by Paul Gauguin and Philippe D. Homme d’Est</figcaption></figure><p>Eventually the pair had a falling out. Gauguin wanted to present his paintings without the juvenile story-telling. Philippe never forgave Gauguin, and returned to France, where he was able to produce a galley proof of his book, but the publisher eventually declined to produce it, and Philippe died frustrated and disappointed in 1921.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*sojDK9-m5NFRA3R3zmMchg.jpeg" /><figcaption>Galley proof page from the abandoned French Book</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/230/1*lRXyqr7QhImJvh3nqWm3qA.jpeg" /><figcaption>Philip Dey Eastman</figcaption></figure><p>Philippe’s grandson, Philip, inherited a locked box of his grandfather’s artwork, with instructions that it not be opened for 30 years. In 1951 Philip opened the box, and set about to realize his grandfather’s dream of publishing, using the assumed name “P. D. Eastman.” Philip <em>fils </em>was a better story-teller than Philippe <em>père,</em> and was competent enough as an artist to emulate and extend his grandfather’s style. As the NCCIL exhibit demonstrates, the first three books under P. D. Eastman’s name were patched together from his grandfather’s collection of sketches, but after that, the stories and illustrations were all from Philip, with an occasional character borrowed from Philippe’s sketchbook. In deference to his grandfather’s wishes, Philip himself never discussed the origins of the work, and instead locked everything up with instructions that his box too was not to be opened until 30 years after his death. And so it was that on January 7, 2016, the link between Gauguin and Eastman was rediscovered, and with the opening of the exhibit this April 1, it was finally revealed to the world.</p><h3>Articles in this Series</h3><p>April 1 2016: <a href="https://medium.com/@peternorvig/go-dog-gauguin-the-p-d-eastman-story-a81dd9704cb4"><em>Go, Dog. Gauguin! The P. D. Eastman Story</em></a><br>April 1 2017: <a href="https://medium.com/@peternorvig/last-tweets-of-the-krell-82b8cb74c320"><em>Last Tweets of the Krell</em></a><em><br></em>April 1 2018: <a href="https://medium.com/p/47984a3cd2ba/edit"><em>Functional Lifestyles</em></a><br>April 1 2020: <a href="https://peternorvig.medium.com/no-fools-this-april-but-827a20ecfca6"><em>Hope I Incorporate Before I Get Old</em></a><em><br></em>April 1 2021: <a href="https://peternorvig.medium.com/hamilton-the-mathematical-musical-c9f14226abfc"><em>Hamilton: The Mathematical Musical</em></a><em><br></em>April 1 2023: <a href="https://peternorvig.medium.com/packet-switching-patent-revealed-d8104a56c310"><em>Packet-Switching Patent Revealed!</em></a><br>April 1 2023: <a href="https://peternorvig.medium.com/new-python-operators-9f31b56ddcc7"><em>New Python Operators!</em></a></p><p><strong>Addendum</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/0*qqe9wRByhOEs608l" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a81dd9704cb4" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>