<?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:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Glasseye]]></title><description><![CDATA[A monthly digest of AI, data science and statistics]]></description><link>https://www.glasseye.ink</link><image><url>https://substackcdn.com/image/fetch/$s_!BNpS!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25cfdbf9-a6e9-4423-bd9f-06ba1c52f2b6_440x440.png</url><title>Glasseye</title><link>https://www.glasseye.ink</link></image><generator>Substack</generator><lastBuildDate>Wed, 17 Jun 2026 20:55:38 GMT</lastBuildDate><atom:link href="https://www.glasseye.ink/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Simon Raper]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[glasseye@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[glasseye@substack.com]]></itunes:email><itunes:name><![CDATA[Simon Raper]]></itunes:name></itunes:owner><itunes:author><![CDATA[Simon Raper]]></itunes:author><googleplay:owner><![CDATA[glasseye@substack.com]]></googleplay:owner><googleplay:email><![CDATA[glasseye@substack.com]]></googleplay:email><googleplay:author><![CDATA[Simon Raper]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Glasseye]]></title><description><![CDATA[Issue 25: May 2026]]></description><link>https://www.glasseye.ink/p/glasseye-0b5</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-0b5</guid><pubDate>Tue, 26 May 2026 07:08:55 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/608a9b20-54f8-4d15-887e-4a81b2bac715_617x348.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this month&#8217;s issue: </p><ul><li><p>Writing is thinking, reading is thinking, coding is thinking. Ada knew it. You should too. <strong><a href="https://glasseye.substack.com/i/198682760/the-white-stuff">The white stuff</a></strong> sets things straight. </p></li><li><p><strong><a href="https://glasseye.substack.com/i/198682760/semi-supervised">Semi-supervised</a></strong> explains how to solve the scrappiest of problems by maximising your ignorance.</p></li><li><p><strong><a href="https://glasseye.substack.com/i/198682760/the-dunghill">The dunghill</a></strong><a href="https://glasseye.substack.com/i/198682760/the-dunghill"> </a>sniffs out the bad practice behind &#8220;modelled&#8221; variables.</p></li></ul><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>The dunghill</h2><p>A couple of weeks ago the <em>Guardian</em> ran <a href="https://www.theguardian.com/global-development/2026/may/04/kenya-ai-healthcare-reforms-driving-up-costs-for-poor">an article</a> covering the tragic consequences of the Kenyan government's use of machine learning for means testing. The initiative was supposed to determine how much each Kenyan family should pay for healthcare. In the <a href="https://www.developmentpathways.co.uk/blog/poxy-means-testing-official/">terminology of the World Bank</a>, the model would enable <em>proxy means testing</em>; in other words, it would provide a prediction of household income based on other variables, most significantly household possessions. This prediction would then be used to work out how much the family is able to contribute to a government-subsidised scheme. Putting to one side the ethics of doing this at all (Is it ever acceptable to use a proxy when discrepancies between the proxy and the true value have such dire consequences?), there were, as investigators at <a href="https://sha.africauncensored.online/">Africa Uncensored </a>revealed, serious flaws in the modelling methodology that went beyond just top-level predictive accuracy. As I have pointed out in <a href="https://glasseye.substack.com/i/169293401/the-dunghill">previous posts</a>, subjective decisions nearly always need to be made during the training and tuning of machine learning models, and these decisions reflect particular interests. In the case of the Kenyan government&#8217;s programme, the decision was to tune the algorithm to classify the rich more accurately than the poor, on the grounds that a rich person classified as poor is far less likely to report the error than a poor person classified as rich. While this was better for government finances, it was disastrous for the poorest families.</p><p>Now bear with me, as this might seem unrelated. After I posted last month&#8217;s <strong><a href="https://glasseye.substack.com/p/glasseye-89e">Dictionary of bullshit for statistics, AI and data science</a>, </strong>I asked subscribers what I had left out. <a href="https://www.linkedin.com/in/scottgthompson/">Scott Thompson</a> then kindly offered &#8220;<em>modelled</em> as an adjective for papering over all kinds of shoddy guesstimation.&#8221; Perhaps you are lucky enough never to have heard of <em>modelled variables, </em>but they are a mainstay of the data brokerage industry. A modelled variable is a proxy for a real variable, created in exactly the same way as the Kenyan government&#8217;s proxy income value. In fact, had the Kenyan government been looking for a term that made their proxy variable appear more respectable, then they might have gone for &#8220;modelled&#8221; income.</p><p>The consequences of modelled variables are of course usually trivial compared to what has happened in Kenya, but nevertheless the shoddiness is well worth an airing. Let me say first that of course there is nothing wrong with creating a machine learning model that predicts income or anything else. It&#8217;s what you do with it next that matters. </p><p>For one thing, the producers of modelled variables often forget to mention the fact that the values are not real; and the consumers often forget to ask (granted they might not even suspect it). This, in fact, was my first exposure to &#8220;modelled&#8221; as a bullshit term - used to bat back some concerns about the reliability of purchased data. No, the variables were not &#8220;actual&#8221;, but I needn&#8217;t worry, I was assured, since they were &#8220;modelled&#8221;. Knowing no better at this early stage in my career, I failed to come back with the correct response - something along the lines of: &#8220;Well in that case I really need to know how accurate they are because this will affect every conclusion I draw using this data.&#8221; </p><p>The most common fate for a modelled variable is to end up as an input for yet another predictive model. Modelled income for example might end being used to predict customer lifetime value. But does this really work? There are three scenarios here:</p><ol><li><p>This second model was trained using real income values as features; modelled income is used only as an input once the model is deployed. But now of course we don&#8217;t know how accurate the second model is, because any training-related performance measures assume that the income value is &#8220;actual&#8221;. The model could be wildly inaccurate. </p></li><li><p>The second model was trained using modelled income values; this will mean that the performance measures account for the uncertainty in such values, but the question then arises: why not just take the features that were used to predict income and use them directly in the second model? This will almost certainly yield a better outcome for the second model as it will allow interactions between those features to play a role in prediction.</p></li><li><p>The second model was trained on a mixture of real and modelled income values, the latter being used when the former are unavailable. Now we have a god-awful mess. The model performance measures are valid only for the particular balance of real and modelled income values present in the training set. Unless we can guarantee this balance in the wild, who knows how the model is going to perform.</p></li></ol><p>Since not a lot of attention is usually paid to features used for machine learning what we end up with is a two-step process of obfuscation. First, nothing is said and nothing is asked during the handover of modelled variables. Second, these variables are tucked away in machine-learning pipelines, where they are safe from further interrogation, in a way they would absolutely not be if they cropped up in, say, a shareholder report. No one is any the wiser.</p><p>Thanks again to Volodymyr Fomichov for pointing me to the <em>Guardian</em> article and <a href="https://www.linkedin.com/in/scottgthompson/">Scott Thompson</a> for suggesting &#8220;modelled&#8221; as a bullshit term of art.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jtwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The white stuff</h2><p>&#8220;Writing is thinking.&#8221; So says a <a href="https://www.nature.com/articles/s44222-025-00323-4">short editorial</a> in <em>Nature Reviews Bioengineering</em>, pleading the importance of &#8220;human-generated scientific writing&#8221; in the age of generative AI.</p><blockquote><p>Writing scientific articles is an integral part of the scientific method and common practice to communicate research findings. However, writing is not only about reporting results; it also provides a tool to uncover new thoughts and ideas. Writing compels us to think &#8212; not in the chaotic, non-linear way our minds typically wander, but in a structured, intentional manner.</p></blockquote><p>&#8220;Reading is thinking too&#8221;, says the author of <a href="https://link.springer.com/article/10.1007/s10439-025-03879-9">a letter</a> to the <em>Annals of Biomedical Engineering</em>, citing the Nature article. Of course it is. </p><p>I&#8217;m reliably informed that agencies are losing business because their pitch teams are presenting LLM-generated slides they neither authored nor properly read. Not having had the thoughts themselves, they are tongue-tied as soon as the prospective client asks a question.</p><p><a href="https://glasseye.substack.com/i/191854469/from-coppelia">As I said</a> in Glasseye no. 23,  I suspect we are now seeing proposals being generated from LLM-transcribed meeting notes, which then become contracts by a further act of generation, to be signed by parties who have no idea what they contain.</p><p>Coding is thinking too. A form of thinking that should be prized for the way it clearly separates out concepts that are muddled together in everyday thought. Ada Lovelace knew this (right at the very beginning) as you will learn from this month&#8217;s recommendation: Lovelace&#8217;s notes to her translation of Menabrea&#8217;s memoir, <em><a href="https://www.gutenberg.org/files/75107/75107-h/75107-h.htm">On the Mathematical Principles of the Analytical Engine</a></em><a href="https://www.gutenberg.org/files/75107/75107-h/75107-h.htm">.</a> Here she advises that we introduce into our thinking the distinction between operations, objects operated upon, and the results of the operations performed upon those objects, a distinction she learnt from programming Babbage&#8217;s Analytical Engine:</p><blockquote><p>It were much to be desired, that when mathematical processes pass through the human brain instead of through the medium of inanimate mechanism, it were equally a necessity of things that the reasonings connected with <em>operations</em> should hold the same just place as a clear and well-defined branch of the subject of analysis, a fundamental but yet independent ingredient in the science, which they must do in studying the engine. The confusion, the difficulties, the contradictions which, in consequence of a want of accurate distinctions in this particular, have up to even a recent period encumbered mathematics in all those branches involving the consideration of negative and impossible quantities, will at once occur to the reader who is at all versed in this science.</p></blockquote><p>I enjoy watching Claude Code as much as the next person, but take care not to hand over the important stuff!</p><p></p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W6Dt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 424w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 848w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1272w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png" width="728" height="149.95348837209303" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:124,&quot;width&quot;:602,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:102848,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/174226120?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde682b2a-c8b2-4d4e-997a-44feea305da2_658x124.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 424w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 848w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1272w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>Semi-supervised</h2><p>I have a useful tool for you. It was briefly mentioned in <strong><a href="https://glasseye.substack.com/i/159738609/the-white-stuff">the white stuff</a></strong> of Glasseye no. 11, but it has come in handy so often recently that I thought it deserved more of a spotlight. This is the <em>principle of maximum entropy</em> as introduced by E.T. Jaynes in his 1957 paper, <em><a href="https://bayes.wustl.edu/etj/articles/theory.1.pdf">Information Theory and Statistical Mechanics</a></em>. Compared to the concepts of statistical inference, the idea is relatively simple. To quote me:</p><blockquote><p>The principle uses Shannon&#8217;s concept of information entropy - at the time only recently formulated - to update Laplace&#8217;s<em> principle of insufficient reason</em> (in the absence of any relevant information, we should assign equal probabilities to all possible outcomes). Jaynes redefines this in terms of entropy: in the absence of information, it is logical to assume the probability distribution that is maximally non-committal - in other words, the one that contains the least information, ergo the one that has the highest entropy.</p></blockquote><p>Most usefully, Jaynes shows how we can constrain the optimisation process with whatever information is known about the distribution to obtain a final distribution that reflects the known facts while remaining maximally non-committal. </p><p>In order to sell it to you let me first explain why the principle of maximum entropy is useful. After that I will describe how it is done. There was a fashion a while back among consultancies for intimidating potential employees by posing irritating interview questions along the lines of: &#8220;How many trees are there in Hyde Park?&#8221; or &#8220;How many people can you fit in Wembley Stadium?&#8221; The point was, no matter how little you know, you should still be able to say something. The use case for the principle of maximum entropy is in a similar vein. It is, if you like, the opposite of a big data problem. It is the almost-no-data problem - certainly nothing at the level of the individual observations. Since this is not an unusual situation, especially when it comes to decision making, it is extremely useful to have a method that arrives at not just any guess, but the most rational one.</p><p>Specifically, the principle of maximum entropy comes into play when we are after a best guess at a probability distribution and all we have at our disposal is a few high level facts about that distribution, facts that can be turned into constraints. To give an example we might want a best guess at the distribution of UK citizens over gender, income band, and party voted for at the last general election. The scraps of information we have to hand are: a top level percentage split of individuals by party voted for, a percentage split of men by income band, and a percentage split of women in the highest two income bands by party voted for. The answer, I hope you agree, is not completely obvious. </p><p>So how do we do this? Fortunately Jaynes provides a general solution for discrete distributions. If a probability distribution with probability mass function <em>p</em> is subject to <em>m</em> expectation-based constraints:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\sum_{i=1}^n p(x_i)f_k(x_i) = F_k \\qquad k = 1,\\ldots,m,&quot;,&quot;id&quot;:&quot;NYGXCQWJMY&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>then the distribution which maximises entropy is given as:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;p(x_i) = \\frac{1}{Z(\\lambda_1,\\ldots, \\lambda_m)} \\exp\\left[\\lambda_1 f_1(x_i) + \\cdots + \\lambda_m f_m(x_i)\\right],&quot;,&quot;id&quot;:&quot;AIHSTSISHO&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>where the lambda k are Lagrange multipliers. The normalisation constant is given as:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;Z(\\lambda_1,\\ldots, \\lambda_m) = \\sum_{i=1}^n \\exp\\left[\\lambda_1 f_1(x_i) + \\cdots + \\lambda_m f_m(x_i)\\right].&quot;,&quot;id&quot;:&quot;AYADYFBYVX&quot;}" data-component-name="LatexBlockToDOM"></div><p>To arrive at the solution we need to calculate the value of the lambda k. This can be done by solving the system of equations:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;F_k = \\frac{\\partial}{\\partial \\lambda_k} \\log Z(\\lambda_1,\\ldots, \\lambda_m)&quot;,&quot;id&quot;:&quot;ENLKJVTXMU&quot;}" data-component-name="LatexBlockToDOM"></div><p>That might feel like a lot of work, but the key step is turning the constraints that we have into expectation-based constraints, and we do this, in each case, by choosing an indicator function <em>f</em>k that picks out those discrete outcomes whose probabilities need to add up to whatever proportions we do happen to know about. Take the example above: if we know that 60% of the electorate voted Labour we would need an indicator function that picked out all the outcomes in which there was a vote for Labour, for example: male, income of 40 to 50K, votes Labour. After that it comes down to calculus and solving simultaneous equations (or you could just plug the objective function and the constraints into an optimiser).</p><p>I can almost guarantee that the end result will strike you as breathtakingly obvious in retrospect - the kind of conclusion that, had you thought about it long enough, you&#8217;d have reached intuitively. But intuition is one thing, justifying an intuition is something else. In fact the principle of maximum entropy is particularly good at proving things that do strike us as somehow obvious. For example, it provides a justification for the conclusion that, when nothing else is known, the distribution of a group over a variable is the best guess for the distribution of any of its subgroups over that same variable - an intuition that we draw on when we do certain kinds of sample weighting.</p><p>One last point: it should be clear that this technique is not a form of statistical inference. We obtain only point estimates for the individual probabilities. We can say nothing about how accurate these estimates are. The principle of maximum entropy does however play a role in Bayesian statistical inference, as a principled method for selecting priors.</p><p>Please do send me your questions and work dilemmas. You can <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia</p><div><hr></div><h2>From Coppelia</h2><ul><li><p>After the slapdash, ego-driven unpreparedness of most business meetings, it was a nice change to be an external reviewer for Birkbeck&#8217;s School of Computing and Mathematical Sciences. It was expertly run at an orderly pace and felt genuinely meaningful. This could be a case of grass is always greener, but I love the place (did my post grads there) and will always recommend it.</p></li><li><p>Thank you to everyone who has sent me more examples of deranged propaganda for synthetic respondents (and thank you to the providers themselves who have spammed it straight to my inbox). An update on my favourite bugbear is coming soon, I promise!</p></li></ul><div><hr></div><p>If you&#8217;ve enjoyed this newsletter or have any other feedback, please leave a comment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/p/glasseye-0b5/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.glasseye.ink/p/glasseye-0b5/comments"><span>Leave a comment</span></a></p>]]></content:encoded></item><item><title><![CDATA[Glasseye]]></title><description><![CDATA[Issue 24: April 2026]]></description><link>https://www.glasseye.ink/p/glasseye-89e</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-89e</guid><pubDate>Tue, 21 Apr 2026 08:16:51 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4a4ebadb-e107-4aa2-954b-0c89ee2443ef_1085x607.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>To celebrate two years of Glasseye we are going to do something a little different in this issue. No <strong><a href="https://glasseye.substack.com/i/152756954/the-dunghill">dunghill</a></strong> or <strong><a href="https://glasseye.substack.com/i/152756954/the-white-stuff">white stuff</a></strong> or <strong><a href="https://glasseye.substack.com/i/152756954/semi-supervised">semi-supervised</a></strong> this month. Instead a resource which should be invaluable in your day-to-day dealings with senior management, with the marketing department, with management consultants and with software vendors. My sincere hope is that the following will help you translate the instructions given by these dedicated professionals into something you can act upon. This should be especially helpful if you are early in your career, and perhaps still inclined to take people at their word. </p><p>Enough preamble. Glasseye is proud to present... </p><h2 style="text-align: center;">A dictionary of bullshit for statistics, AI and data science</h2><p><strong>accuracy</strong> /&#712;&#230;k.j&#601;.r&#601;.si/ <em>noun</em> 1. The degree to which predictions match reality within a subset of the data selected to yield the highest possible accuracy. 2. Whichever of the <em>true positive rate</em> and the <em>true negative rate</em> is the most impressive.</p><p><strong>actionable insight</strong> /&#712;&#230;k.&#643;&#601;n.&#601;.b&#601;l &#712;&#618;n.sa&#618;t/ <em>noun</em>   An insight that would have made a substantial difference had it not been forgotten by the end of the meeting: <em>Our Insight Engine is our live repository of strategic answers, data-driven guides, and actionable insights designed to demystify the future of marketing</em>.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><p><strong>adaptive</strong> /&#601;&#712;d&#230;p.t&#618;v/ <em>adj</em>   As yet non-existent, therefore capable of being anything: <em>Our production-grade models are adaptive, responsive and state-of-the-art</em>.</p><p><strong>adstock</strong> /&#712;&#230;d.st&#594;k/ <em>noun</em> <em>(archaic)</em> A model of advertising impact that, despite its apparent simplicity, is able to generate surprisingly detailed and specific media plans.</p><p><strong>agentic</strong> /e&#618;&#712;d&#658;en.t&#618;k/ <em>adj</em>   1. Possibly useful because able to do something. 2. Having the potential to cause chaos: <em>Agentic AI tools have the potential to speed up diagnosis by prioritising urgent requests.</em> (NHS)</p><p><strong>AI</strong> /&#593;&#720;.i/ <em>noun</em>   1. A blanket term covering all forms of technology from the spade to the quantum computer: <em>We will be using AI to leverage our in-garden harvesting capabilities.  </em>2. A chat bot.</p><p><strong>AI-driven</strong> /&#716;&#593;&#720;.i&#712;dr&#618;v.&#601;n/ <em>adj</em>   1. Initially driven by the misconception that AI might be useful: <em>Accelerate application modernization with AI-driven discovery, analysis, and delivery</em>.  2. Funded by a business&#8217;s AI budget though not directly involving AI. </p><p><strong>analytics</strong> /&#716;&#230;n.&#601;l&#712;&#618;t.&#618;ks/ <em>noun</em>  Any activity involving numbers: <em>Our service comes with extensive analytics capabilities.</em></p><p><strong>correlation</strong> /&#716;k&#594;r.&#601;&#712;le&#618;.&#643;&#601;n/ <em>noun</em>  A relationship between events that is unlikely to be causal but which can be treated as such for the sake of having something interesting to say.</p><p><strong>CAIO</strong> /&#716;si&#720;.e&#618;.a&#618;&#712;&#601;&#650;/ <em>noun </em> <strong>C</strong>hief <strong>AI</strong> <strong>O</strong>fficer. A literature graduate who has been placed in charge of a team of highly qualified engineers and mathematicians.</p><p><strong>CHAID</strong> /t&#643;e&#618;d/ <em>noun</em> <em>(archaic)</em> Primitive classification tool, no longer in use except in isolated research communities still under the guardianship of SPSS.</p><p><strong>data-driven</strong> /&#712;de&#618;.t&#601; &#712;dr&#618;v.&#601;n/ <em>adj   </em>Not based on a whim.</p><p><strong>data point</strong> /&#712;de&#618;.t&#601; p&#596;&#618;nt/ <em>noun</em> <em>(Silicon Valley)</em>  An item of information recently acquired by a tech-bro: <em>That data point is completely out-of-sample. I&#8217;m going to need to adjust my priors. </em>(See entries for <em>out-of-sample</em> and <em>prior</em>.)</p><p><strong>decisioning</strong> /d&#618;&#712;s&#618;&#658;.&#601;n.&#618;&#331;/ <em>noun</em>  A form of decision making that is more efficient because it has fewer syllables: <em>Builds and runs AI agents that automate content creation, personalization and decisioning across brands, markets and functions.</em> </p><p><strong>deep</strong> /di&#720;p/ <em>adjective</em>  In existence since the 1970s but dramatically enlarged over the last two decades: <em>We have been using deep learning AI and deep neural networks to bring intelligence to advertising.</em></p><p><strong>digital twin</strong> /&#712;d&#618;d&#658;.&#618;.t&#601;l tw&#618;n/ <em>noun</em>  A model of something real.</p><p><strong>directional</strong> /d&#618;&#712;rek.&#643;&#601;n.&#601;l/ <em>adj</em>  1. An estimate so poor that the best that can be said about it is that it is not negative when it should be positive and vice versa. 2. Wrong, but you get what you pay for: <em>Inform the client that our estimates of their ROI are directional.</em></p><p><strong>engagement</strong> /&#618;n&#712;&#609;e&#618;d&#658;.m&#601;nt/ <em>noun</em>  An abstract quantity that has the advantage that no-one really knows what it is: <em>Customer engagement has increased this quarter by 1.6%.</em></p><p><strong>enterprise-ready</strong> /&#712;en.t&#601;.pra&#618;z &#712;red.i/ <em>adj</em>  Far enough behind the cutting edge that it is capable of being integrated with the Microsoft product suite: <em>Our tool orchestrates enterprise-ready agents with built-in context, controls and observability, so teams move from pilot to secure production in weeks, not months.</em> </p><p><strong>fine-tuned</strong> /&#716;fa&#618;n&#712;tju&#720;nd/ <em>adj  </em>Out-of-the-box.</p><p><strong>generative AI</strong> /d&#658;en.&#601;&#712;re&#618;. &#593;&#720;.i/ <em>noun  </em>Probabilistic layer added to deterministic systems to introduce uncertainty.</p><p><strong>hypothesis</strong> /ha&#618;&#712;p&#594;&#952;.&#601;.s&#618;s/ <em>noun   </em>A thought that is too technical-sounding to be disagreed with.</p><p><strong>key driver</strong> /ki&#720; &#712;dra&#618;.v&#601;/ <em>noun  </em>A variable that has been included in a model because the data is available.</p><p><strong>model fitting</strong> /&#712;m&#594;d.&#601;l f&#618;t&#618;&#331;/ <em>noun  </em>The practice of selecting the variables and functional form for a model to produce the greatest amount of happiness in a client.</p><p><strong>next-generation</strong> /nekst &#716;d&#658;en.&#601;&#712;re&#618;.&#643;&#601;n/ <em>adj</em>   Dating back to the 1970s: <em>Our latest wave of predictive models are truly next-generation.</em></p><p><strong>optimise</strong> /&#716;&#594;p.t&#618;.ma&#618;&#712;ze/ <em>verb  </em>1. Improve slightly. 2. Use a mathematical process to reach a pre-specified outcome: <em>We used state-of-the-art modelling to optimise our client&#8217;s media plan.</em></p><p><strong>out-of-sample</strong> /a&#650;t &#601;v &#712;s&#593;&#720;m.p&#601;l/ <em>adj</em> <em>(Silicon Valley)</em>  Surprising.</p><p><strong>one-pager</strong> /w&#652;n &#712;pe&#618;.d&#658;&#601;/ <em>noun</em>   The final form taken by a lengthy and thorough piece of analysis once stripped of subtleties, caveats and technical details: <em>Could you turn that report on the effectiveness of our search algorithm into a one-pager for the CTO?</em></p><p><strong>predictive</strong> /pr&#618;&#712;d&#618;k.t&#618;v/ <em>adj  </em>Somewhere between infallible and fractionally better than a guess: <em>Our agent-built machine learning solutions were found to be highly predictive.</em></p><p><strong>predictive intelligence</strong> /pr&#618;&#712;d&#618;k.t&#618;v &#618;n&#712;tel.&#618;.d&#658;&#601;ns/ <em>noun</em> Intelligence.</p><p><strong>prior</strong> /&#712;pra&#618;.&#601;/ <em>noun</em>  Whatever a tech bro happens to believe at any given moment, based on very little evidence.</p><p><strong>p-value</strong> /&#712;pi&#720;.v&#230;l.ju&#720;/ <em>noun</em>  The probability of a robust test given the amount of wishful thinking.</p><p><strong>real-world</strong> /&#716;r&#618;&#601;l&#712;w&#604;&#720;ld/ <em>adj  </em>non-fantastical: <em>Our analytics team is focussed on real-world outcomes.</em></p><p><strong>R-squared</strong> /&#593;&#720;&#712;skwe&#601;d/ <em>noun</em>  Final arbiter of whether or not a regression model is fit for purpose. A model with a sufficiently high R-squared needs no further qualification.</p><p><strong>signal</strong> /&#712;s&#618;&#609;.n&#601;l/ <em>noun</em>  1. Energy wave emitted from datasets that, once harnessed, has the power to transform a business: <em>Leverage trillions of signals, advanced AI, and privacy-first collaboration to unlock new levels of growth.</em> 2. A pattern.</p><p><strong>significant</strong> /s&#618;&#609;&#712;n&#618;f.&#618;.k&#601;nt/ <em>adj</em>   1. Negligible but not due to chance. 2. Substantial but completely random.</p><p><strong>simulation</strong> /&#716;s&#618;m.j&#601;&#712;le&#618;.&#643;&#601;n/ <em>noun  </em>Method for producing data when there isn&#8217;t any.</p><p><strong>SPSS</strong> /&#716;es.pi&#720;.es&#712;es/ <em>noun</em> <em>(archaic)  </em>Ancient surveying technology carefully preserved in its original state by the market research community.  2. Device for turning a single data file into two separate but unusable data files.</p><p><strong>storytelling</strong> /&#712;st&#596;&#720;.ri&#716;tel.&#618;&#331;/ <em>noun</em>  1. The crafting of an engaging narrative that will bring an otherwise dry piece of analysis to life. 2. Overfitting.  3. Lying.</p><p><strong>synthetic</strong> /s&#618;n&#712;&#952;et.&#618;k/ <em>adj</em>  Fake.</p><p><strong>synthetic respondent</strong> /s&#618;n&#712;&#952;et.&#618;k r&#618;&#712;sp&#594;n.d&#601;nt/ <em>noun  </em>A simulation of an ultra high net worth individual obtained by averaging blog posts, online fan fiction and fake product reviews.</p><p><strong>touch point</strong> /t&#652;t&#643; p&#596;&#618;nt/ <em>noun  </em>1. Any event recorded in a customer database, no matter how trivial.   2. Unwanted attention from a business. </p><p><strong>test and learn</strong> /test &#230;nd l&#604;&#720;n/  An activity mentioned on the last slide of a presentation on the understanding that no business has the patience or self-discipline to carry it out.</p><p><strong>value</strong> /&#712;v&#230;l.ju&#720;/ <em>noun</em>  A rare substance obtained through data mining: <em>&#8220;Our data team are busy extracting value from the data as we speak.&#8221;</em></p><p><strong>weighting</strong> /&#712;we&#618;.t&#618;&#331;/ <em>noun  </em>A mathematical technique that transforms the survey actually executed into one that you would like to have executed.</p><p>For more on these topics - for example, on <a href="https://glasseye.substack.com/p/glasseye-8f7?open=false#%C2%A7the-dunghill">CHAID</a>, <a href="https://glasseye.substack.com/i/164469245/the-dunghill">synthetic respondents</a>, <a href="https://glasseye.substack.com/i/191854469/the-dunghill">weighting</a>, <a href="https://glasseye.substack.com/p/glasseye-9fb?open=false#%C2%A7the-dunghill">techbro-speak</a>, and the <a href="https://glasseye.substack.com/i/151934968/the-dunghill">changing meaning of &#8220;AI&#8221;</a> - see the <a href="https://glasseye.substack.com/i/152756954/the-dunghill">full list of posts</a> for the dunghill.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Many of the usage examples are real, although, out of kindness, I have not provided the sources.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Glasseye]]></title><description><![CDATA[Issue 23: March 2026]]></description><link>https://www.glasseye.ink/p/glasseye-4f6</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-4f6</guid><pubDate>Wed, 25 Mar 2026 09:30:52 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/47f09061-d7bb-4243-ab78-2413a49f6e65_1024x576.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this month&#8217;s issue: </p><ul><li><p>Data science has a weight problem. <strong><a href="https://glasseye.substack.com/i/191854469/the-dunghill">The dunghill</a> </strong>offers some advice.</p></li><li><p><strong><a href="https://glasseye.substack.com/i/191854469/semi-supervised">Semi-supervised</a></strong><a href="https://glasseye.substack.com/i/191854469/semi-supervised"> </a>walks you through my tool choices for a post-LLM working environment. </p></li><li><p>Boring unravels the myth of the normal law, interestingly. Not a crossword clue, but the subject of this month&#8217;s <strong><a href="https://glasseye.substack.com/i/191854469/the-white-stuff">white stuff</a>.</strong></p></li></ul><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W6Dt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 424w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 848w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1272w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png" width="728" height="149.95348837209303" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:124,&quot;width&quot;:602,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:102848,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/174226120?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde682b2a-c8b2-4d4e-997a-44feea305da2_658x124.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 424w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 848w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1272w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>Semi-supervised</h2><p>I can&#8217;t tell you that your job is safe from AI. My strong feeling is that if you feed your curiosity and keep your problem-solving skills sharp, then it almost certainly is (for reasons I go into below). One thing I do know for sure: standing still is not an option.  But then that&#8217;s nothing new - just ask the SAS guys who thought they could reach retirement writing SAS macros. (If you don&#8217;t know what I&#8217;m talking about, then that only proves my point!)</p><p>You will always be running to catch up. The trick is to choose as wisely as possible who and what you are chasing; to figure out which aspects of the current tech revolution are wasting your time, and which are rich with possibility. With that in mind, I present you with one set of choices - mine - and their rationale. </p><ol><li><p><strong>Terminal over GUI</strong>: Not being particularly original here (the devs have been here forever) but now, more than ever, it feels like a good time to go full <a href="https://en.wikipedia.org/wiki/WarGames">Matthew Broderick.</a> Why? Three reasons: First, it is a decisive victory in the battle against  distraction. There are no ads (yet) in the terminal. No endless attempts to get you to engage with new features. Second, unlike the old days, it is now a tool-rich environment, and if the CLI for what you want does not exist, then you can vibe it into existence. Which brings me to the third reason: it&#8217;s the natural home of Claude code (or your preferred substitute). It&#8217;s in the very nature of the prompt to draw our attention away from the two dimensions of a GUI and back towards the single dimension of a dialogue stream. This has always been the way of the terminal. We should add to all this the apparent psychological benefit of a minimalistic,  infinitely customisable terminal environment, where you call the shots, rather than run around after every scroll bar and flashing icon. Over the last couple of years, the GUI has started to feel like a side-stepped middleman.</p></li><li><p><strong>Keyboard over mouse</strong>: The wisest decision I made over the last year was to learn to touch type. Not only did it stretch parts of my brain that have never been stretched, but it has also paid off handsomely at the terminal and the prompt. But to really leave the mouse behind takes modal editing - vim or emacs. I&#8217;ve gone vim (fond memories of vi). Why am I touting 90s technology at the same time as telling you to keep up with the times? Because technological revolutions can revitalise earlier technologies, and I have a feeling this is a case in point. Vim, of course, has never really been out of style among devs, but its new relevance is driven by the fact that agents are pushing us back to the terminal. Now that we are settled in, Vim allows us to edit code and documents without the jolt of returning to a GUI. (One last point is that the headache of Vim configuration is handled effortlessly by LLM agents.)</p></li><li><p><strong>Raw markdown over notebooks</strong>: When Jupyter notebooks arrived in 2014 they were a wonderfully liberating technology for data scientists. But they also cut us off from the rest of the coding ecosystem. Unlike the raw text files used for most programming languages, they required specialised rendering. With hindsight, a better solution is to be able to execute the code-fenced blocks in markdown files. This is the direction I&#8217;m now heading, using quarto and neovim. It means my markdown notebooks are readable with just about any editor, and they are more elegantly handled by LLM agents. I think this is the future. Sorry Jupyter.</p></li><li><p><strong>Raw markdown over just about every other text document format</strong>: While we are on the topic of markdown, it has for many years been my policy to prefer it over any other document format and to prefer tools that store content as markdown. If others want another format then I write in markdown and convert. The cost in terms of layout restrictions is more than compensated for by the freedom to move my work wherever I want. Often the markdown files can stay where they are, and I will simply switch the tool that sits on top. For example, my vault of markdown files is managed with Obsidian but I can switch to neovim as my preferred editor. I see this as all part of the same trend: once again, away from the GUI and towards a combination of raw data and the terminal.</p></li><li><p><strong>Agent over autocomplete:</strong> I&#8217;ve been on a bit of a journey here. Probably the same one as everyone else. A year ago, coding agents seemed bolshy and incompetent, but I was impressed by the efficiency of LLM-driven autocomplete. Now the situation seems to have reversed. I put this down to Claude Code getting the partnership between human and LLM just right. I&#8217;ve turned off the auto-complete. It got annoying.</p></li><li><p><strong>Agent as teacher and critic over agent as author: </strong>I&#8217;ve noticed something recently that I hadn&#8217;t expected, and that goes against the idea that coding agents will turn us all into project managers: using an agent is leading me deep into the detail of things that I previously didn&#8217;t have the patience for. The most dramatic example is that I&#8217;m enjoying using git at the command line and finding out about all the weird things it can do. It&#8217;s a similar experience with shell scripting. Last month&#8217;s <strong><a href="https://glasseye.substack.com/i/186221370/the-white-stuff">white stuff</a></strong><a href="https://glasseye.substack.com/i/186221370/the-white-stuff"> </a>reviewed a paper on the impact of LLMs on skill formation that concluded that skill acquisition is retained if the agent is used for instruction rather than code generation. I&#8217;m for holding onto such skills since I&#8217;m betting on agents being <a href="https://glasseye.substack.com/i/185407626/the-dunghill">irredeemably flawed</a> and therefore, in all but the most trivial cases, in need of a human to talk to about the details. So my policy at the moment is not to grab at the productivity increases delivered by coding agents, but instead to take it slow and benefit from some efficient, context-based training. I figure my clients will thank me in the long term.  The exceptions are menial tasks where I&#8217;d learn nothing anyway, or occasions where I&#8217;m using an agent to code very precisely defined tools or components, whose inner workings I have no interest in.</p></li><li><p><strong>CLIs over MCPs: </strong>Again it looks like I&#8217;m not alone here. There&#8217;s a debate going on online about performance, but my preference is rooted in something more basic - the need for control. The CLI is, after all, an interface, and that means well-defined inputs and outputs. If I&#8217;m letting a coding agent lose on my GitHub repo or my emails, I want to see exactly what it is doing there, and I want some understanding of the limits.</p></li><li><p><strong>Roll my own over find someone else&#8217;s: </strong> Hours used to be lost in search of the plugin, extension, app, repository, or CLI that did exactly what I wanted. Then hours more in replacing those tools that were incompatible with the newcomer. All that has gone since I can use an agent to code the exact tool I want. I usually don&#8217;t share the result. Partly because I&#8217;m lazy, but partly because there is no need since others can create their own. This feels new. </p></li></ol><p>Some things that are not for me: agents anywhere near what I write (here or even in the simplest of emails); using LLMs to summarise papers (I like skim reading and sometimes it&#8217;s the small details that are important); agents replacing the kind of grunt work that gives me a feel for the problem or internalises information. (I would never, for example, ask the agent to draw me <a href="https://glasseye.substack.com/i/156295648/semi-supervised">a concept map</a> - the value is in the thinking, not the result.)</p><p>As I said, these are my personal choices. They might be wrong. I might change my mind.</p><p>Please do send me your questions and work dilemmas. You can <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jtwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98854,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The white stuff</h2><p>Edwin G Boring - with a name like that, how could you fail to be interesting? And so he was. Boring was a prolific experimental psychologist who began his career working on intelligence testing in the army in World War II, but soon became critical of their methods, drawing attention to a lack of scientific objectivity. His interest to us is in a brilliant paper, published in <em>The American Journal of Psychology </em>in 1920. <em><a href="https://www.jstor.org/stable/1413989?seq=1">The Logic of the Normal Law of Error in Mental Measurement</a> </em>ripped to shreds the notion that the normal distribution is all-pervasive in nature. Since that myth is as alive as it ever was, and since it is a cornerstone of IQ testing (which is once again being talked about as though it were a serious metric), the paper is worth our attention. It is also superbly written, as you can see in this excerpt in which Boring defines the problem:</p><blockquote><p>The normal law of error has been both an inspiration and a limitation in statistical measurement&#8230; There is a bit of magic in the formula. The law came to play the part of a first principle of nature, of an ideal, given a priori, to which nature seeks to conform. The mathematicians wrought slowly, but they wrought a god. Against such blind faith later statisticians have protested. They call the normal law a &#8220;fetish&#8220; and its a priori use a &#8220;superstition.&#8221; Nevertheless the&#8221;superstition&#8221; still lingers and is mixed up with mental measurement. For this reason we are going to enquire, concerning the law of error, what real value it has for us to-day as a scientific tool.</p></blockquote><p>The paper is also an object lesson in intellectual history, tracing the development of the normal distribution and its gradual scope creep from games of chance, to the measurement of error, to the modelling of variation. The last step was taken in the hope that the normal distribution would turn out to be a fundamental scientific law describing variation in nature, which would allow it to be used to make inferences, including about mental ability. But this is turned out to be wishful thinking, the argument easily knocked down by switching the measurement. (If the diameter of a spherical seed is normally distributed, then what about its volume?) The dream of a transcendental law for biology was baseless. As Boring concludes, interestingly:</p><blockquote><p>Here we may leave the question of the a priori nature of the normal law. There is, after all, no magic in it. It gives us back always what we put into it. If we know from experience what nature is up to, as we do with the coin, then we can proceed upon cogent reasons to apply the law and we get results. If we do not know, we must appeal to nature and see. </p></blockquote><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The dunghill</h2><p>Weights are routinely applied to data sets with little understanding of what they are for and what impact they have on analysis. But this is the dunghill, so I&#8217;m not going to get into how to do the job properly (that might be a topic for semi-supervised in some later issue) - instead, let&#8217;s wallow a little in the malpractice. We all know that&#8217;s more entertaining.</p><p>The most common and problematic use of weights is in the analysis of survey data. The literature will tell you about design weights, non-respondent weights, and other exotica, but in the overwhelming majority of cases, the weights applied to survey data, in industry and research, are post-stratification weights. We conduct a survey; the sampling is a long way from random but we are not too sure of the biases; we do however have population percentages for certain demographic strata. The weight for any observation falling into a particular stratum (say, female, 18-30) is equal to the proportion in the population falling into that stratum divided by the proportion in the sample falling into the same. </p><p>So with that in mind, here is my list of weighting crimes ranging from the unforgivable to the unbelievable. Knowledgeable as you are, dear reader, some might seem obviously ridiculous. But I can assure you they are happening&#8230; a lot. </p><ol><li><p>At the extreme end of negligent are those who believe in the magic power of post-stratification weighting: once applied, it will resolve all problems related to survey representation. Never give it another thought; all analysis can proceed just as it would were the results obtained from simple random sampling. Now I&#8217;m classing this as unforgivable because it does not take a post-grad degree in statistics to spot the flaw. If the information we are interested in is unrelated to the demographic strata, then a re-weighting by these strata will achieve very little.  Say we are using a survey to estimate the proportion of the UK population who like cheese. I doubt this has much to do with either age or gender but it might well affect whether someone volunteers to be part of an online survey by a pizza chain. So no, it&#8217;s not magic. The strata need to be related to the question at hand.</p></li><li><p>Another easy one, but again missed when we think weighting is magic: for any analysis that is restricted to a subset of the data that falls within one of the strata, weighting does again precisely nothing. Everyone in that stratum has the same weight. Did I need to point that out? Yes I did.</p></li><li><p>A more understandable error, since spotting it takes more than common sense, is the failure to adjust for weights when it comes to calculating the variance on results obtained from the survey. Any fool knows that in simple random sampling the variance of an estimate is related to sample size. With weighted data, however, the situation becomes more complicated. Oversampling in one stratum, while under-sampling in another, can lead to more uncertainty in the estimator, even if the actual sample size remains the same. In my experience, very few analysts make the necessary adjustments, preferring to once again see weighting as a magic cure-all.</p></li><li><p>Next, an error that I describe using the slogan: &#8220;You can&#8217;t weight your way out of complete lack of representation&#8221;. This was most glaring during the early days of online surveys when half the population were on the internet and the other half,  still in the pub. The half on the internet were more tech-savvy and, yes, they were younger. But if we want the survey to be representative of the whole population, we can&#8217;t just upweight the older respondents to the online survey, for they are, of course, precisely the tech-savvy older people. The tech-averse remain stubbornly absent from the survey, which will be a disaster if the survey is related to technology.</p></li><li><p>If we are doing slogans then the next one is: &#8220;You can&#8217;t weight your way into another population&#8221;. You might wonder if I am making this one up - it&#8217;s so out there -  but I promise you it happens, and it is getting more common as businesses try to resell their data. Let me spell it out. You cannot take a sample from one population (a country, a customer base, a marketing channel) and then, by re-weighting, <em>transform it</em> into a sample from another population. You cannot, for example, take Saga cruise customers and age-weight them into PlayStation users. At its most extreme, this is done not to surveys but to whole populations - an entire customer base gets re-weighted to &#8220;look like&#8221; customers of another business. Weird. Wrong.</p></li></ol><p>And that&#8217;s just survey data. We&#8217;ve not even touched the use of weighted data in machine learning. Perhaps you can send me your horror stories. </p><p>If you have some particularly noxious bullshit that you would like to share then I&#8217;d love to hear from you.  <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><h2>From Coppelia</h2><ul><li><p><strong>I&#8217;ve got the skills to pay the bills.</strong> I&#8217;m fully on board with skills now. My mistake initially was failing to differentiate between well-defined processes (make a tool) and situations where the agent was repeating the same steps over and over on tasks that it excelled at (make a skill). This meant I was building skills that weren&#8217;t working as well as old-school processes, and they were costing me money each time they ran! Anyway, I&#8217;ve got it now. Thanks, as usual, to my colleagues at <a href="https://www.meltcollective.co.uk/">Melt</a> and, as usual, to<a href="https://www.linkedin.com/in/markbulling/"> Mark Bulling</a>, for keeping me relevant!</p></li><li><p><strong>Lemonheads</strong>. There needs to be a word for people who pass on LLM-generated content without even looking at it, let alone checking it (&#8220;lemons&#8221;, maybe?). Here&#8217;s a pattern I think I&#8217;m seeing:</p><ul><li><p>Agency has a meeting with  a client, and the AI agent transcribes the meeting.</p></li><li><p>Agency uses the agent to generate a proposal for work from meeting notes, but does not really read the proposal.</p></li><li><p>Client senses an agent-generated proposal, so doesn&#8217;t really read it either.</p></li><li><p>Both parties sign off on work without either knowing what it entails.</p><p></p></li></ul><p>  Good luck lawyers!</p></li></ul><div><hr></div><p>If you&#8217;ve enjoyed this newsletter or have any other feedback, please leave a comment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/p/glasseye-4f6/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.glasseye.ink/p/glasseye-4f6/comments"><span>Leave a comment</span></a></p>]]></content:encoded></item><item><title><![CDATA[Glasseye]]></title><description><![CDATA[Issue 22: February 2026]]></description><link>https://www.glasseye.ink/p/glasseye-9fb</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-9fb</guid><pubDate>Tue, 24 Feb 2026 08:24:08 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/aca898ae-2fa6-4ea5-8bef-ecf07c13821c_910x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this month&#8217;s issue: </p><ul><li><p><strong><a href="https://glasseye.substack.com/i/186221370/the-dunghill">The dunghill</a></strong> on how tech bros use Bayesian statistics to signal their rationality.</p></li><li><p>Are you being de-skilled by the prompt? And, if so, what can you do about it? <strong><a href="https://glasseye.substack.com/i/186221370/the-white-stuff">The white stuff</a> </strong>reviews a recent paper.</p></li><li><p>Never again be humiliated by your own work.<strong> <a href="https://glasseye.substack.com/i/186221370/semi-supervised">Semi-supervised</a></strong> gives you three essential checks for any piece of analysis.</p></li></ul><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>The dunghill</h2><p>What&#8217;s going on with tech bros and their &#8220;priors&#8221;? And why 10x something? Why not 3x it? Or 5x it? Or maybe just &#8220;turn it up&#8221;? And is the last thing someone told you really a &#8220;data point&#8221;? Was that surprising news worth describing as &#8220;out of sample&#8221;? In short, why is Silicon Valley suddenly talking and writing like Gelman&#8217;s <em>Bayesian Data Analysis</em> is a style guide? </p><p>If this were just an irritating trend, then it probably wouldn&#8217;t be worth our attention. Unfortunately, it seems to be symptomatic of something else. A nasty bit of hubris.</p><p>The truth is this is about <em>rationality signalling </em>(I&#8217;m having this if no one else has claimed it) <em>- </em>the attempt to convey the impression that the speaker&#8217;s thought processes are identical to the workings of a Bayesian model. Their current beliefs, their &#8220;priors&#8221;, are laid out before them with perfect clarity; every new fact they learn, every new data point, modifies these beliefs in the most rational way possible, that is through the application of Bayes&#8217; Theorem. In other words, the bro is a relentless, unstoppable calculating machine, with a rational response to anything and anyone.</p><p>Admittedly, the philosophy of the website LessWrong (the wellspring of this movement, with posts like <em><a href="http://update-yourself-incrementally">Update yourself incrementally</a></em>) is more subtle than this. The authors there do very much focus on the cognitive biases that get in the way of flawless Bayesian processing. But what subtlety there is in the strange, slightly cultish doctrine of <em>The Sequences</em> (the teachings of their master, Eliezer Yudkowsky) was lost when it was absorbed into the vocabulary of Silicon Valley.  Here the point is not to emphasise vulnerability or analyse the causes of failure, but to project superhuman competence.</p><p>But look, if there&#8217;s one belief that it&#8217;s rational to hold, given the overwhelming evidence, then surely it&#8217;s this: <em>we are the least Bayesian animal out there</em>. An earthworm, I&#8217;d wager, is more Bayesian than any human being, untroubled as it is by wounded pride, daddy-issues, emotional complexes, etc. We are so far off being Bayesian in our everyday thinking that even to suggest it as a goal is misleading. Better to accept that this mode of thought requires an intense effort, that it goes against the grain, and that it is unlikely to ever completely succeed. Fooling yourself into thinking that it&#8217;s your default mode is the opposite of insightful. I certainly don&#8217;t know the vast majority of my &#8220;priors&#8221;. Do you know yours?</p><p>Talking of fooling yourself, perhaps the least rational of all behaviours is betting the house on something happening (say the emergence of consciousness in a tin shed in Memphis), just because you&#8217;d really really like it to happen.</p><p>If you have some particularly noxious bullshit that you would like to share then I&#8217;d love to hear from you.  <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jtwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The white stuff</h2><p>Someone - some self-effacing, anonymous contributor - took great care in planning out the <a href="https://docs.pola.rs/">polars</a> Python library. This relatively new data manipulation package is a masterpiece of minimalism. There is one easily-learnt syntax for constructing expressions, but the expressions themselves are given different meanings in different contexts (for example, in the context of a selection, a filter, an aggregation, etc.) The result is both highly constrained and extremely flexible. Achieving such a balance is an art. Create something too simple and it gets butchered by workarounds, too complex and we never quite get the hang of it (ahem Regex).</p><p>But I missed all this when it was first released. Why? Because its rise to prominence coincided with the emergence of LLM-assisted coding. Although I skim read the documentation and convinced myself that it was all going in at some level, I didn&#8217;t really feel it. A couple of weeks ago, I decided enough was enough, pulled the plug (temporarily) on my little agent friends and invested a few hours in understanding  how polars really works. That was when I started to appreciate the design, and I&#8217;m sure my coding benefited.</p><p>But I am, after all, a sample of one, and that, as we all know, is never good enough - which is why the paper <em><a href="https://arxiv.org/abs/2601.20245">How AI Impacts Skill Formation</a></em> (laudably commissioned by the Anthropic foundation) is so timely. In fact, career-wise, it may be one of the most important papers you ever read. </p><p>The authors express a concern that may have crossed your mind. If, as seems increasingly likely, coding agents will always require human agents to direct and debug them, and if junior coders are, through their reliance on coding agents, losing the skills needed to carry out these tasks, then, while we might be ok for the time being, there will come a day when we run out of road - that is out of people who know how to code.</p><p>There&#8217;s good news in this paper, and there&#8217;s bad. The bad is that their randomised controlled study confirms our worst fears: &#8220;We find that AI use impairs conceptual understanding, code reading, and debugging abilities, without delivering significant efficiency gains on average.&#8221; The good is that when we dig into results from the AI-assisted group, there are lessons to be learnt about how we can have and eat cake. The authors found that those who scored highest on skill acquisition &#8220;only asked AI conceptual questions instead of code generation or asked for explanations to accompany generated code; these usage patterns demonstrate a high level of cognitive engagement.&#8221; The lesson then is: know thyself. If you don&#8217;t have the self-discipline or patience to follow up code generation with questions (that&#8217;s me), then ask first and code later (by yourself). Note, this only applies to work in areas that you do not yet understand. If it&#8217;s familiar territory, then other than to keep your tools sharp, there&#8217;s no reason not to let those agents whir.</p><p>But there&#8217;s another reason to keep the tools sharp. If the big AI players are unable to recoup their losses elsewhere, then they might be forced to squeeze as much as they can from products where the use cases are real. Might the long-term strategy be: keep the price low, wait until everyone has become dependent, not just on LLMs (they are a dime a dozen) but on tasty, IP-laden products like Claude Code, and then&#8230; jack it up?<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><p></p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W6Dt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 424w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 848w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1272w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png" width="728" height="149.95348837209303" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:124,&quot;width&quot;:602,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:102848,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/174226120?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde682b2a-c8b2-4d4e-997a-44feea305da2_658x124.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 424w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 848w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1272w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>Semi-supervised</h2><p>First, apologies to anyone I&#8217;ve worked with, managed, or mentored over the last twenty-five years. You will have heard this before. Feel free to skip, although there&#8217;s some new stuff here too. </p><p>I&#8217;m talking about my three tests - three simple quality assurance tests that fit almost any piece of analysis work. They are quick and easy to do. Find yourself pressed for time, then do these as a minimum, and you can be almost certain your work will stand up to scrutiny.</p><ol><li><p><em>The triangulation test:</em> Find another way of arriving at roughly the same result. For example, you might be estimating the size of a potential market for a new product by using the purchasing behaviour of individuals. This is a bottom-up approach. Test that your answer is sane by doing a top-down calculation, starting with the populations of the UK and narrowing it down to your potential market. If the two techniques produce roughly the same number, you can be more confident in your estimate. Sometimes it is reasonable to assume that the two techniques will arrive at exactly the same result. If it turns out there&#8217;s a difference, then debug. </p></li><li><p><em>The spot check:</em> Defined as a  test made without warning on a randomly chosen subject. Your analysis work might pass the triangulation test but still, at a more detailed level, there are problems with your work, perhaps errors that get averaged out in the aggregated data. This is a job for the spot test. Pick five to ten records at random and follow them through whatever process or algorithm you have built. If everything happens as you&#8217;d expect, then you should be ok at the nuts and bolts level.</p></li><li><p><em>The bastard test:</em> You may have been extremely diligent in the last two tests but unfortunately you make a typo on a number in the final presentation and are judged, perhaps unfairly, on that. This would have been picked up on with the bastard test. Imagine you are another person, a person who hates you with a passion. (I find it helpful to picture the famous mathematician G. H. Hardy in the pose shown below.) Run through your work and try to catch yourself out. Make quick sense-checking calculations in your head and examine the whole thing for plausibility. The bastard test can now be supplemented (not replaced - see this month&#8217;s Dunghill) by the <em>digital bastard test</em>. So long as there are no confidentiality or data protection issues you can run your work past an LLM (Anthropic&#8217;s Opus is particularly good for this) instructing it to search aggressively for errors.</p><p></p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BeRB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d3f625-4033-4bed-aec6-72bfdb697a48_1242x1466.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BeRB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d3f625-4033-4bed-aec6-72bfdb697a48_1242x1466.png 424w, https://substackcdn.com/image/fetch/$s_!BeRB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d3f625-4033-4bed-aec6-72bfdb697a48_1242x1466.png 848w, https://substackcdn.com/image/fetch/$s_!BeRB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d3f625-4033-4bed-aec6-72bfdb697a48_1242x1466.png 1272w, https://substackcdn.com/image/fetch/$s_!BeRB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d3f625-4033-4bed-aec6-72bfdb697a48_1242x1466.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BeRB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d3f625-4033-4bed-aec6-72bfdb697a48_1242x1466.png" width="487" height="574.8325281803543" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/98d3f625-4033-4bed-aec6-72bfdb697a48_1242x1466.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1466,&quot;width&quot;:1242,&quot;resizeWidth&quot;:487,&quot;bytes&quot;:1837986,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/186221370?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc94e7e8a-cf59-4a90-be68-d1314f6dae91_1242x1466.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BeRB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d3f625-4033-4bed-aec6-72bfdb697a48_1242x1466.png 424w, https://substackcdn.com/image/fetch/$s_!BeRB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d3f625-4033-4bed-aec6-72bfdb697a48_1242x1466.png 848w, https://substackcdn.com/image/fetch/$s_!BeRB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d3f625-4033-4bed-aec6-72bfdb697a48_1242x1466.png 1272w, https://substackcdn.com/image/fetch/$s_!BeRB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d3f625-4033-4bed-aec6-72bfdb697a48_1242x1466.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;It pains me to point out that you have made a rather embarrassing mistake on slide three.&#8221;</figcaption></figure></div><p>One more tip - a technique not a test: I find it useful to pick out what I call <em>guideline numbers</em> (after the lines used to align objects on a digital canvas). These are numbers that thread through all of your calculations and data transformations, while remaining the same. They should be recalculated at every step of the process and if they do change, it is a sure sign that something has gone wrong. Some simple examples are: the number of subjects in a test, or the minimum and maximum date covered by a data set.</p><p>Please do send me your questions and work dilemmas. You can <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia</p><div><hr></div><h2>From Coppelia</h2><ul><li><p>Despite all the griping in this issue&#8217;s <em>white stuff</em>, this, for me, has been the month of Claude Code. I now have an army of personal CLI tools written in Rust that do exactly what I want them to do. Whether I will actually use them is another thing. Two that I am particularly happy with are:</p><ul><li><p><a href="https://github.com/coppeliaMLA/pangraph">pangraph</a>: a universal graph converter, that allows me to switch between Mermaid, Graphviz, the Obsidian Canvas, SimpleMind Pro, and many others that I haven&#8217;t even heard of!</p></li><li><p><a href="https://github.com/coppeliaMLA/td">td</a>: a CLI tool for managing minimalist <a href="http://todotxt.org/">todo.txt</a> files (which I love). A <a href="https://github.com/todotxt/todo.txt-cli">nice tool </a>already exists, but I wanted one that handles time contexts.</p></li></ul><p>Use both at your own risk - I can&#8217;t vouch for my collaborator (who pretty much did all the work!).</p></li><li><p>After the spectacular wrong turn of <a href="https://glasseye.substack.com/i/164469245/the-dunghill">synthetic respondents</a>, it is encouraging to see what looks like an original and intelligent use of digital in the usually stagnant world of quantitative research. Take a look at <a href="https://pol.is/home2">Polis</a>. (Thanks to <a href="https://www.linkedin.com/in/pottsmark/">Mark Potts</a> for pointing me in their direction!)</p></li></ul><div><hr></div><p>If you&#8217;ve enjoyed this newsletter or have any other feedback, please leave a comment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/p/glasseye-9fb/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.glasseye.ink/p/glasseye-9fb/comments"><span>Leave a comment</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p><a href="https://www.nytimes.com/2026/02/06/opinion/ezra-klein-podcast-doctorow-wu.html">This</a> is worth listening to on this very subject.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Glasseye]]></title><description><![CDATA[Issue 21: January 2026]]></description><link>https://www.glasseye.ink/p/glasseye-6b4</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-6b4</guid><pubDate>Tue, 27 Jan 2026 10:37:45 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e01ec521-a557-41b3-93ba-eab5b405d231_1024x576.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this month&#8217;s issue: </p><ul><li><p><strong><a href="https://glasseye.substack.com/i/185407626/semi-supervised">Semi-supervised</a></strong> asks that you show some compassion towards your predictors.</p></li><li><p>Owning up to uncertainty in <strong><a href="https://glasseye.substack.com/i/185407626/the-white-stuff">the white stuff</a>.</strong></p></li><li><p><strong><a href="https://glasseye.substack.com/i/185407626/the-dunghill">The dunghill</a></strong> looks at why old-school model scepticism is back in style.</p><p></p></li></ul><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>The dunghill</h2><p>There&#8217;s an old wisdom from the deeply unfashionable world of frequentist statistics which says that a model is just a view from a particular, and necessarily limited, perspective, that it is one view among many, and that it should be consulted, but never entirely trusted. This way of looking at things was a matter of course for old-school statisticians from Box to Cox;<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> it is at the heart of Karl Popper&#8217;s account of scientific progress through conjecture and refutation; and it is built into the idea of a statistical significance test, where the null hypothesis is the incumbent and the alternative hypothesis no more than a hopeful challenger. At its most influential, this view was part of a post-war scientific culture that was understandably suspicious of excessive self-belief, and too much faith in world-shattering ideas. As a method it is based upon an unspoken assumption: the default position, the one challenged by the model and which we fall back on if unconvinced, is a set of assumptions that have worked well so far, and which are based in part on the kind of thing that can&#8217;t easily be captured in a model - gut-feels, condensed real-world experience, the wisdom of centuries. It&#8217;s all very small-c conservative, but not necessarily wrong.</p><p>And yet the strange thing is that this view of modelling, so downbeat, and so contrary to the current mood of tech optimism, is making a comeback. Even more surprising is who is pushing it forward. I <a href="https://glasseye.substack.com/i/174226120/the-dunghill">previously quoted</a> the co-founder of Anthropic, Jack Clark,  interviewed on the Newsagents. I&#8217;m going to quote him again as I find it so striking:</p><blockquote><p>The way that I use these systems [LLMs], and many do, is I read a research paper, I write out what I understand that paper to mean and when I upload the paper and my understanding of it to the system and say, do I have this right? And if I don&#8217;t have it right, explain to me. That&#8217;s useful learning because the system reads the paper, reads my explanation and tells me whether I got it right or wrong, just like a colleague. If we use these things in the right way, they can help us be a lot more capable and a lot smarter.</p></blockquote><p>One way of reading this is as an ingenious pivot by an LLM provider who has realised that hallucinations are here to stay. If you set human judgement as the default and position the LLM as a brilliant but overly imaginative critic, whose insights must be filtered by the user, then you are off the hook for hallucinations. But another, more generous, interpretation is that this is a thoughtful correction to LLM overreach, one which places the model back in its rightful position - an advisor, no more and no less, and never to be entirely trusted. </p><p>Of course this is absolutely right. Notwithstanding their utter brilliance in many areas (Anthropic&#8217;s Claude Opus  just found an embarrassing number of errors in some dense maths I was working on), LLMs, as much as twentieth-century regression models, are outrageous simplifications. That might seem like an absurd thing to say about something so intricate and opaque. Nevertheless they <em>are</em> simplifications on account of the fact that a) they reduce everything to the problem of predicting text and b) they leave out so much, e.g. the external world, its physics, its logical and mathematical laws, its complex systems, etc. What is more, they are worse than the old models in at least one respect - they are built on undoubtedly biased data, and we have no idea in which direction. </p><p>This is why, in my view, almost all applications in which LLMs are given autonomy are doomed. An LLM has a perspective. It is often a stunningly insightful perspective,   which makes it an invaluable contributor in a human-computer partnership. But by itself it is a limited, flawed, irresponsible, dangerously one-sided perspective, missing huge chunks of reality. It is the perspective of someone who has spent too much time on the web, who is capable of extraordinary insights but needs to get out more. And indeed, if what it lacks, as many are now saying, is a world model, then <a href="https://glasseye.substack.com/p/glasseye-095?open=false#%C2%A7the-white-stuff:~:text=The%20late%20Hubert,the%20start.%E2%80%9D1">getting out might well be the answer</a>. </p><p>If you have some particularly noxious bullshit that you would like to share then I&#8217;d love to hear from you.  <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jtwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The white stuff</h2><p><em>Model Uncertainty, Data Mining and Statistical Inference</em> by Chris Chatfield was published in 1995. I wish I'd read it then - or at any time that decade. It would have saved me years of confusion. I was confused because the things that were puzzling me, and which seemed like pretty serious problems for statistical inference, were not anywhere being discussed. Chatfield's paper is full of helpful phrases like &#8220;in practice no one believes this&#8221; and &#8220;unfortunately this is never done&#8221; and &#8220;this is very strange given that &#8230; &#8220;. </p><p>The bomb he drops, and the main theme of the paper, is that the entire statistical field is obsessed with the calculation of probabilities that are only valid if it is assumed that the statistician has selected the correct model. In practice that&#8217;s an enormous &#8220;if&#8221;. The reality is that the uncertainty surrounding model selection often dwarfs the uncertainty surrounding the values of model parameters.</p><p>Chatfield was not the first point this out - Box and Tukey both had a good go at it - but he pulls together his arguments at a crucial point in the history of statistical modelling. In 1995, Vapnik was publishing on support vector machines, and the machine learning revolution was imminent. Machine learning treated model selection as a problem to be solved rather than ignored, and in doing so drew attention to the vast number of models <a href="https://glasseye.substack.com/i/146165448/the-white-stuff">that will fit a data set almost equally well.</a> Chatfield&#8217;s worry that the automation of model selection was leaving to overfitting, his call for sensitivity analysis to proof against false confidence in model selection, and his favouring of predictions over estimates of population parameters - the problem with the latter is that &#8220;the analyst will never know whether the inferences are good since the estimates cannot be compared directly with the truth&#8221; - were all anticipations of this revolution, far ahead of their time, especially in the world of statistical modelling. </p><p>What's most shocking though is that the paper is still relevant. The problem of measuring the effect of model uncertainty in statistical inference still lacks a satisfactory solution, and I would still recommend the paper to half the graduates I work with, many of whom are just as confused as I was about the role of model selection, and would be relieved to find out that &#8220;in practice no one believes this&#8221;.</p><p>(Note that <a href="https://www.jstor.org/stable/2983440">the paper</a> is behind the JSTOR paywall. However you can read it online for free simply by signing up for a JSTOR account.)</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W6Dt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 424w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 848w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1272w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png" width="728" height="149.95348837209303" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:124,&quot;width&quot;:602,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:102848,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/174226120?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde682b2a-c8b2-4d4e-997a-44feea305da2_658x124.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 424w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 848w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1272w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>Semi-supervised</h2><p>From my Glasseye inbox:</p><blockquote><p>I was hoping you could help me sanity-check how I&#8217;m framing a modelling problem. I can&#8217;t tell if I&#8217;m overthinking this, or if there&#8217;s a genuinely tricky aspect that I&#8217;m getting stuck on. I&#8217;ve been tasked with predicting the probability that a user will make a purchase within 24 hours of a reference time <em>t</em>. My initial instinct was that this is a fairly straightforward classification problem, but I've been struggling with how to construct the dataset in a way that avoids bias and data leakage.</p></blockquote><p>No definitely not overthinking it - I would say this is probably one of the most underthought issues in model design. In fact it&#8217;s astonishing how little is written about it, given how many have fallen into this particular pit. So congratulations to the asker, and double congratulations for asking when you thought the answer might be obvious. The truth is it is <em>genuinely tricky</em>.</p><p>In a nutshell, we need to avoid the classic trap of training a predictive model on training data that does not match the input that it will face at the time of deployment. For argument&#8217;s sake let&#8217;s say that the reference point <em>t </em>is the moment that a user registers for a service, and that the data scientist has access to a range of demographic and behavioural features with which to make the prediction. Let&#8217;s also assume that they have constructed a target variable that is equal to one if the user made a purchase within 24 hours of registration, and zero otherwise. Now the stupidest thing to do is to train the model to predict this variable using the demographic and behavioural variables<em> as they stand.</em> I say stupid, but this is done, and it is done a lot! Why is this such a bad idea? Because by the time you build the model, behavioural data will have accrued that records events subsequent to or concurrent with the purchase, and which are then of course highly correlated with the purchase. It is not uncommon to find models where the user&#8217;s total spend has been used to predict the probability of first purchase.</p><p>So you are not going to do that. But what are you going to do? You have two options. I&#8217;ll deal with the hardest one first as it is more interesting. This requires you to recreate the data for each customer as it would have been at <em>t</em> - the only training data that makes sense since it is the only data that the classifier will see in the wild. But recreating this data is no easy matter. For a start, there is no single <em>t</em>. It is different for every user. If you are lucky enough to be using a system with very thorough database auditing then you may be able to recreate this data from snapshots. Otherwise you&#8217;ll need to rewind it yourself. For this your features usually fall into five categories:</p><ol><li><p>Those which you can reasonably assume won&#8217;t have changed since <em>t. </em>Many demographic variables fall into this category, as do variables that record events prior to <em>t</em>.</p></li><li><p>Those which you can adjust using some time-based calculation. For example, a customer&#8217;s age at <em>t</em> can obviously be recreated. So can features like day of the week, hour of the day, etc.</p></li><li><p>Those which you can somehow infer based on other values. For example, a customer might have been flagged for a particular offer based on some item of data that has since been overwritten.</p></li><li><p>Those which you should exclude because they are irrelevant at <em>t.</em> User spend in our example, since it will always be zero.</p></li><li><p>Those which cannot possibly be recreated.</p></li></ol><p>The features in the final category will, I&#8217;m afraid, have to be junked. This is fine as you are building a predictive model rather than a model for understanding relative contributions to an event. </p><p>The other option I mentioned is simple, but rarely available as it requires a friendly, patient client. This is to simply start taking snapshots of the data at all future <em>t</em>s until you have enough data for a model. The nice thing about this approach is that you can think in advance about what might be predictive and therefore worth capturing. </p><p>Another difficulty, for both approaches, is in deciding which data is going to be representative of <em>t.</em> Are you going to use all your customer registrations to train the model, or some subset - those within a certain recency window for example -  or a sample, or some kind of weighted sample? Again it helps to think of the deployment of your model. I try to visualise it sitting patiently on the data pipeline, and then springing to life with each registration. What does the data look like from its perspective? How can you make the data that you train it on as much as possible like the data it will face? This mental exercise should help answer the question about representative data. For example, if your business is in a rapidly evolving sector where behaviours often change their significance, or if the market has recently undergone a major shock that has radically altered behaviours (e.g. a pandemic) then you may need to shorten the time window on your training data. Another example, if you anticipate a change in the demographic profile of new customers (perhaps new legislation has been passed, perhaps product adoption is increasing among older people) then you should upweight the appropriate groups in your sample.</p><p>And this is just one scenario. Every time a model is dropped into the real world it faces a stream of data that is unique to its particular situation. It requires imagination to think through what it will be up against. Being a good data scientist requires empathy!</p><p>Please do send me your questions and work dilemmas. You can <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia</p><div><hr></div><h2>From Coppelia</h2><ul><li><p>It&#8217;s interesting to think about the future of plugins in the age of coding agents. Instead of spending hours searching for exactly what I need, I find myself just asking Claude Code to build it for me. And then I&#8217;m too lazy to share the result. LLMs seem to be particularly good at writing code for backend tasks. Will we all end up with completely customised working environments?</p></li><li><p>On the topic of Claude Code, thank you to my <a href="https://www.meltcollective.co.uk/">Melt</a> colleagues for pushing me in this direction. I&#8217;m moving away from Cursor, which has been driving me nuts with its overly bullish agents. I need to feel more in control, and there&#8217;s nothing better for this than the command line - it&#8217;s in the name. I think of Claude Code like a thoughtful, boundary-respecting butler: &#8220;I&#8217;ve prepared this data set for you sir! Would you like a moment to digest it?&#8221;</p></li><li><p>Prepare yourselves for the imminent AI course correction. Put LLMs to one side. Coppelia is now doing training courses in symbolic and neurosymbolic AI (relevant Python packages proglog, SymPy, pyKEEN). Let me know if you are interested.</p></li><li><p>Lastly, as far as AI correctives go, I have to point you to  the second season of Shell Game,  in which the journalist Evan Ratliff (pitch-perfect deadpan) takes the tech bros at their word and sets up a company staffed entirely by LLMs. Thanks to <a href="https://www.linkedin.com/in/niazy-h/">Niazy</a> for the recommendation. Rise and grind Ryan, rise and grind!</p></li></ul><div><hr></div><p>If you&#8217;ve enjoyed this newsletter or have any other feedback, please leave a comment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/p/glasseye-6b4/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.glasseye.ink/p/glasseye-6b4/comments"><span>Leave a comment</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Most statisticians know George Box&#8217;s famous &#8220;All models are wrong but some are useful&#8220;. David Cox agreed: &#8220;The very word model implies simplification and idealization. The idea that complex physical, biological or sociological systems can be exactly described by a few formulae is patently absurd.&#8221; (See the commentary in Chatfield, Chris. &#8220;Model Uncertainty, Data Mining and Statistical Inference.&#8221; <em>Journal of the Royal Statistical Society. Series A (Statistics in Society)</em>, vol. 158, no. 3, 1995, pp. 419&#8211;66. <em>JSTOR</em>)</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Glasseye]]></title><description><![CDATA[Issue 20: December 2025]]></description><link>https://www.glasseye.ink/p/glasseye-6a8</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-6a8</guid><pubDate>Tue, 16 Dec 2025 08:28:02 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/01101917-6a07-4ede-ad12-e688fa4e98ef_860x484.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this month&#8217;s issue: </p><ul><li><p><strong><a href="https://glasseye.substack.com/i/181248382/the-dunghill">The dunghill</a></strong> is full of AI slop. Will it drown us all or will apathy win the day?</p></li><li><p>Late Victorian machine learning creaks back into life in <strong><a href="https://glasseye.substack.com/i/181248382/the-white-stuff">the white stuff</a>.</strong></p></li><li><p>And <strong><a href="https://glasseye.substack.com/i/181248382/semi-supervised">semi-supervised</a></strong> solves the riddle of the one-tailed test.</p></li></ul><p>Plus quantum computing, semantic leakage, and a cold caller who undermines her own existence. </p><p>Does that not sound fun?</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>The dunghill</h2><p>The dunghill would not be a proper dunghill if we did not, at least once, address the issue of slop. And ok, cards on the table, as you no doubt are well aware, this newsletter is awash with AI-generated images. (Look up, about an inch above this sentence - you&#8217;ll see a pitchfork with too many prongs.) But they are, I would like to argue, the good kind. They cost me effort. I had to think. AI slop, by contrast, is characterised by an obvious lack of effort, and no attempt at deeper meaning.</p><p>Whatever you think of my images, it seems likely that slop, lots of slop, is headed our way. It might be prudent, therefore, to size up the threat. What are we facing then, as data scientists and statisticians? To what extent will we become slop consumers and, despite our best intentions, slop producers?</p><p>First, it&#8217;s worth considering how we might become the victims, indirectly, of slop produced and consumed by others - perhaps those at the more visionary end of the AI adoption curve. I&#8217;m thinking in particular of the thousands of articles on the benefits of AI produced in the less-scrutinised industry magazines. Try <a href="https://glasseye.substack.com/i/174226120/from-coppelia">dropping some of these into ZeroGPT</a>, and you&#8217;ll see what I mean. A lot looks like slop, more worryingly, slop that tells your CEO what you and your team should be doing next.</p><p>Next, we should think about ourselves as direct consumers. It is particularly true in statistics and probability that the right answer is not always the most convincing or popular answer. Here, then, the strategy of &#8220;averaging the internet&#8221; does not seem wise, especially once we throw in hallucinations. Far more concerning, though, than chatbot output (which, after all, only becomes slop once we paste it somewhere) is the gradual undermining of our only real method of filtering out false claims - the peer-reviewed paper. The slop problem in paper writing is <a href="https://www.theguardian.com/technology/2025/dec/06/ai-research-papers">well known</a>, and the peer-review process itself has the potential to deliver yet more slop. Yes, I know that the peer review process was already dysfunctional, with academics producing human-slop<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> to chase citations, but automating the problematic part of this process is surely not the answer.</p><p>What about us? Do we produce slop? Already, if I leave an agent on in a markdown cell of a Jupyter notebook, I find that it is itching to write me a tedious but lengthy account of what is going on in the data. The temptation is there. Even if I resist, there&#8217;s every possibility that my work will be sucked into an LLM-generated presentation, which will be read out without comprehension and listened to without interest. </p><p>And there&#8217;s the real problem. Once we know that it&#8217;s slop, once we realise that the producer has contributed precisely nothing - not even the sweep of a critical eye - to the content, then the incentive to consume vanishes. &#8220;If you can&#8217;t be bothered to write it, then why should I be bothered to read it?&#8221; I read that somewhere this week. It is scary because it implies that some of our most necessary communication channels might grind to a halt.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> But perhaps it is also the way out: if I can&#8217;t be bothered to read it, why should they bother to generate it?</p><p>If you have some particularly noxious bullshit that you would like to share then I&#8217;d love to hear from you.  <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jtwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The white stuff</h2><p>Have I got a treat for you. Warm your slippers, clean out your pipe and get ready to enjoy some late Victorian (or is it early Edwardian?) machine learning. By this I mean <a href="https://ia800805.us.archive.org/view_archive.php?archive=/13/items/crossref-pre-1909-scholarly-works/10.1080%252F14786440108636578.zip&amp;file=10.1080%252F14786440109462720.pdf">Pearson&#8217;s original 1901 paper</a> on principal component analysis. Not that he called it that  - the term &#8216;principal component&#8217; is due to Hotelling, who rediscovered the process in the 1930s. Pearson&#8217;s paper is entitled <em>On lines and planes of closest fit to systems of points in space</em>. It begins:</p><blockquote><p>In many physical, statistical, and biological investigations it is desirable to represent a system of points in plane, three, or higher dimensional space by the &#8220;best-fitting&#8221; straight line or plane.</p></blockquote><p>And there it is. We would say that the best-fitting straight line is the first principal component, and the best-fitting plane is defined by the first two principal components. But other than that, it is nearly all there, and it is fascinating to see how much of modern statistical terminology and notation is already in place by 1901.</p><p>Interesting, but is there a better reason to revisit old papers than mild curiosity? I think so. I find that they are more likely to contain the original intuitions and relate to the original problems than modern textbooks. The latter have filtered out all the tangible fumblings that eventually led to the abstractions.</p><p>Pearson&#8217;s paper addresses a problem I had never really thought about, and which is ignored now in most explanations of PCA. </p><blockquote><p>In nearly all the cases dealt with in the text-books of least squares, the variables on the right of our equations are treated as the independent, those on the left as the dependent variables. The result of this treatment is that we get one straight line or plane if we treat some one variable as independent, and a quite different one if we treat another variable as the independent variable.</p></blockquote><p>This matters because:</p><blockquote><p>In many cases of physics and biology, however, the &#8220;independent&#8221; variable is subject to just as much deviation or error as the &#8220;dependent&#8221; variable. We do not, for example, know x accurately and then proceed to find y, but both x and y are found by experiment or observation. We observe x and y and seek for a unique functional relation between them.</p></blockquote><p>If we are to have a single line of best fit, then it must treat both variables as equally prone to error. And, as you have probably guessed, this line turns out to be the first principal component for points scattered across two dimensions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iKbV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24354ac6-b8f6-4a34-962f-99415b722c3d_1160x742.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iKbV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24354ac6-b8f6-4a34-962f-99415b722c3d_1160x742.png 424w, https://substackcdn.com/image/fetch/$s_!iKbV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24354ac6-b8f6-4a34-962f-99415b722c3d_1160x742.png 848w, https://substackcdn.com/image/fetch/$s_!iKbV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24354ac6-b8f6-4a34-962f-99415b722c3d_1160x742.png 1272w, https://substackcdn.com/image/fetch/$s_!iKbV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24354ac6-b8f6-4a34-962f-99415b722c3d_1160x742.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iKbV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24354ac6-b8f6-4a34-962f-99415b722c3d_1160x742.png" width="469" height="299.99827586206897" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24354ac6-b8f6-4a34-962f-99415b722c3d_1160x742.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:742,&quot;width&quot;:1160,&quot;resizeWidth&quot;:469,&quot;bytes&quot;:87938,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/181248382?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24354ac6-b8f6-4a34-962f-99415b722c3d_1160x742.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iKbV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24354ac6-b8f6-4a34-962f-99415b722c3d_1160x742.png 424w, https://substackcdn.com/image/fetch/$s_!iKbV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24354ac6-b8f6-4a34-962f-99415b722c3d_1160x742.png 848w, https://substackcdn.com/image/fetch/$s_!iKbV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24354ac6-b8f6-4a34-962f-99415b722c3d_1160x742.png 1272w, https://substackcdn.com/image/fetch/$s_!iKbV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24354ac6-b8f6-4a34-962f-99415b722c3d_1160x742.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The best-fitting line, as illustrated in Pearson&#8217;s paper</figcaption></figure></div><p>We are so conditioned to think using linear algebra that it to never occurred to me to link PCA to measurement error. It is a path that led Pearson to an &#8220;ellipsoid of residuals&#8221; where the first principal component coincides with its major axis. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XwMG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b21a2e6-aa1a-4015-bdf5-7050978bf529_1093x1004.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XwMG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b21a2e6-aa1a-4015-bdf5-7050978bf529_1093x1004.png 424w, https://substackcdn.com/image/fetch/$s_!XwMG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b21a2e6-aa1a-4015-bdf5-7050978bf529_1093x1004.png 848w, https://substackcdn.com/image/fetch/$s_!XwMG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b21a2e6-aa1a-4015-bdf5-7050978bf529_1093x1004.png 1272w, https://substackcdn.com/image/fetch/$s_!XwMG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b21a2e6-aa1a-4015-bdf5-7050978bf529_1093x1004.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XwMG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b21a2e6-aa1a-4015-bdf5-7050978bf529_1093x1004.png" width="575" height="528.1793229643184" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b21a2e6-aa1a-4015-bdf5-7050978bf529_1093x1004.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1004,&quot;width&quot;:1093,&quot;resizeWidth&quot;:575,&quot;bytes&quot;:238541,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/181248382?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0045138a-7c9d-4613-af81-748d5595a2bf_1106x1016.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XwMG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b21a2e6-aa1a-4015-bdf5-7050978bf529_1093x1004.png 424w, https://substackcdn.com/image/fetch/$s_!XwMG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b21a2e6-aa1a-4015-bdf5-7050978bf529_1093x1004.png 848w, https://substackcdn.com/image/fetch/$s_!XwMG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b21a2e6-aa1a-4015-bdf5-7050978bf529_1093x1004.png 1272w, https://substackcdn.com/image/fetch/$s_!XwMG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b21a2e6-aa1a-4015-bdf5-7050978bf529_1093x1004.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Pearson&#8217;s diagram showing the ellipsoid of residuals and the fitted lines</figcaption></figure></div><p>I say put the above diagram in your next presentation and inform your boss that your machine learning pipeline is cutting-edge as of 1901.</p><p></p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W6Dt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 424w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 848w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1272w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png" width="728" height="149.95348837209303" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:124,&quot;width&quot;:602,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:102848,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/174226120?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde682b2a-c8b2-4d4e-997a-44feea305da2_658x124.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 424w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 848w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1272w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>Semi-supervised</h2><p>Yes, significance testing is out of fashion; yes, we are all Bayesians now (when we can be), but frequentist statistics has a long shelf life, and while it remains in stock, I know I&#8217;m going to be asked the following question: &#8220;When and why should I use a one-tailed test?&#8221; It&#8217;s a topic that has baffled students since statistics entered the mainstream curriculum in the fifties - and for a very good, very interesting reason. So I urge you, even if you have sworn never to touch another p-value, read on, since the confusion around one-tailed tests points to something deep and counterintuitive about probability theory.</p><p>Fortunately, to explain the one-tailed test, I have a nice example to hand, or rather a riddle: </p><p>Two gamblers are playing a game of chance. The first gambler rolls three dice and gets a triple six. The second gambler says, &#8220;Unbelievable! What are the chances of that? One in 216, if I&#8217;m not mistaken&#8217;. The first gambler says, &#8216;What do you mean? It was 50-50 that this was going to happen.&#8221; They are both right. How can that be?</p><p>To answer the riddle, we need to recognise the difference, in statistical terminology, between an outcome and an event.  When we talk about the outcome of an experiment (or in this case a roll of the dice), &#8220;outcome&#8221; means precisely what we think it means - the thing that actually happens. Outcomes are mutually exclusive - the same experiment cannot have two distinct outcomes. The meaning of &#8220;event&#8221;, however, is less obvious. In probability theory, an event is a subset of the possible outcomes of an experiment. An event is either <em>elementary</em>, if it corresponds to just one outcome, or <em>compound</em>, if it corresponds to many. If the latter then we describe it using a disjunction of the outcomes: &#8220;Outcome one <em>or</em> outcome two <em>or</em>&#8230; &#8220; Events, unlike outcomes, are not mutually exclusive.</p><p>Thus while rolling three sixes is both an outcome and an event, something like rolling three sixes <em><strong>or</strong></em> two sixes and a five is simply an event. And here we have the answer to our riddle: The second gambler is thinking of the event: all the dice come up as a six, while the first gambler is thinking of the event: the sum of the results adds up to an even number (or some other compound event with a 50% probability). </p><p>My guess is that we initially struggle with this idea for two reasons: First, we don&#8217;t like the disjunctive nature of statistical events. We are hard-wired for concrete, definite, actual and discrete occurrences, so that when anyone mentions an event, we naturally think of an outcome. Thus our minds rebel against the idea that the same outcome can be two different events.</p><p>The second reason - the one that really scuppers us, and I think gets to the heart of the problem we have grasping the difference between one and two-tailed tests - is that we appear to be able change an event merely by thinking something different. In our riddle there is nothing determining the nature of the events other than what is inside the heads of the gamblers. Were the gamblers to think the same thought then they would be in agreement about the probability.</p><p>By now I&#8217;m sure you&#8217;ve got it: a one-tailed test is different from a two-tailed test because it describes a different event (the appearance of the test-statistic in a particular tail of the distribution). The troubling thing is that we can change the results of the experiment by doing nothing more than beginning it with a different thought, i.e. a different hypothesis.</p><p>But thoughts are slippery. Fail to define and record them and they easily slide into something more convenient. A statistician who runs a one-tailed test, but then switches to a two-tailed test when observing an interesting result in the other tail, is doing exactly this. Such behaviour makes a nonsense out of any kind of statistical test. We could, for example, claim that any role of three dice was amazingly improbable by simply claiming that whatever shows up is exactly what we were testing for.</p><p>Now that we have recognised and accepted the weirdness of it all, the answer to the question &#8220;When should I use a one tailed-test?&#8221; is straightforward. Use a one-tailed test when that is the event that you are interested in, i.e. the one that matters for whatever it is that you are trying to do. If a gambler wins the jackpot on a roll of three sixes then that&#8217;s the roll that matters.</p><p>Please do send me your questions and work dilemmas. You can <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io</p><div><hr></div><h2>From Coppelia</h2><ul><li><p>Thanks to a forward-looking client, I was able, this month, to investigate <em><strong>quantum computing</strong></em>. We used IBM&#8217;s <em><strong>qiskit</strong></em> package and ran programs on their cloud-based quantum computers. A statistical background is helpful for the basics, although the placing of quantum bits into superposition remains head-melting. Coppelia offers a short introductory course should you happen to be curious.</p></li><li><p>If it wasn&#8217;t already a joke I think the problem of <em><strong>semantic leakage</strong></em> would deal the death blow to the idea of <em><strong>synthetic respondents</strong></em>. See <a href="https://garymarcus.substack.com/p/new-ways-to-corrupt-llms">Gary Marcus&#8217;s recent post</a> for the details. If this is right then simulated ultra high net worth individuals spend their time shopping in <em>Cash Converters</em>, listening to <em>Money, Money, Money</em> and watching <em>Who Wants to be a Millionaire</em>. </p></li><li><p>LinkedIn is a place for odd conversations. My weirdest to date began with, <em>&#8220;hey simon, your article in Significance on the &#8216;pitfalls of using averages&#8217; really resonated. it&#8217;s the same problem in GTM - most scale with headcount instead of a better system. we built a way for experts to capture the demand their own content creates. lmk if you want a one pager.&#8221; </em>I like it when people read my articles, but (a) I&#8217;ve no idea what GTM is and (b) this seems very much like a sales ploy. Weirder still, the one-pager was about an AI company called <a href="https://withvalley.notion.site/onepager">Valley</a>, who specialise in identifying &#8220;warm signals&#8221; and sending &#8220;personalized outreach automatically&#8221;. This I take to mean using AI to trawl through an individual&#8217;s publications and to send them a personal message that impersonates a reader. It&#8217;s cynical, but why use it on someone (me) who you are trying to sell the service to? Perhaps to say, &#8220;Look at how effective this is. After all we got you!&#8221; But then, when I asked just this, she (if actually human) denied it. I&#8217;m lost. The upshot was that the very existence of her product made me extremely sceptical about whether she was real - which I think proves why this strategy might in the end be self-defeating.</p></li></ul><div><hr></div><p>If you&#8217;ve enjoyed this newsletter or have any other feedback, please leave a comment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/p/glasseye-6a8/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.glasseye.ink/p/glasseye-6a8/comments"><span>Leave a comment</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>It&#8217;s worth noting that slop thrives in areas where output is already poor-quality.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>I confess to a Luddite fantasy in which certain areas of bureaucracy, where the text itself is relatively pointless, are assimilated by LLMs. The LLMs end up just dealing with each other, doing things that no one really cared about in the first place. For example HR use the LLM to write instructions for a performance review; the employee and line manager use LLMs to complete it; HR use LLMs to summarise the performance review; the result is filed away. Then a product comes along claiming to write a performance review in such a way that the person is more likely to get a pay increase, then HR purchases a product to detect such products&#8230; In my fantasy this all ends magically: the internet becomes a giant Rube Goldberg machine, talking to itself but doing nothing of any importance. We run off into grassy meadows. </p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Glasseye]]></title><description><![CDATA[Issue 19: November 2025]]></description><link>https://www.glasseye.ink/p/glasseye-8f7</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-8f7</guid><pubDate>Tue, 25 Nov 2025 09:15:15 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/bbc1f552-daa7-4ac4-8f10-f8cafe97a85e_1024x576.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this month&#8217;s issue: </p><ul><li><p>So long CHAID: <strong><a href="https://glasseye.substack.com/i/179461918/the-dunghill">the dunghill</a></strong> calls time on an algorithm that has outstayed its welcome.</p></li><li><p>Unfaithful digital twins and a poetic assault on LLMs in <strong><a href="https://glasseye.substack.com/i/179461918/the-white-stuff">the white stuff</a>.</strong></p></li><li><p><strong><a href="https://glasseye.substack.com/i/179461918/semi-supervised">Semi-supervised</a></strong> promotes unit-testing as the way to fool-proof your data science project.</p></li></ul><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>The dunghill</h2><p>Have you heard of CHAID? Is it what you instinctively reach for when you want to understand a complex data set? No? Never? That&#8217;s because you don&#8217;t work in market research or any of the other survey-based industries where SPSS still squats like a malignant toad. </p><p>CHAID (Chi-squared Automatic Interaction Detector) is a decision-tree algorithm that has shipped with SPSS for as long as I can remember. Market researchers are often stunned that data scientists outside their field have never heard of CHAID. They are unaware that SPSS has been preserving this museum piece since the early 1980s. </p><p>Not that you would know if you researched it online. The only people who write about CHAID are its users, and SPSS has done such a good job of cutting them off from the rest of the world that they have little or no idea how far it has fallen out of favour or what the alternatives are. And of course LLMs are enthusiastically amplifying this one-sided view. The net effect is that a graduate joining a research company will Google &#8220;CHAID&#8221; and find nothing but endorsements. Unless they are sufficiently curious, they will live out their career none the wiser.</p><p>We can&#8217;t hope to reverse this powerful process (it has withstood four decades of tumultuous change in statistics and data science), but we might be able to extend a hand to a few lost souls. So, for those who are wondering, here&#8217;s why no one else is using CHAID. </p><p>Really the answer can be summed up in two words: <a href="https://rss.onlinelibrary.wiley.com/doi/epdf/10.1111/j.1740-9713.2020.01357.x">Leo Breiman</a>. Breiman was, among many other things, the originator of classification and regression trees (CART), and then, in collaboration with Adele Cutler, random forests. Breiman was undoubtedly a class act. Whatever he did, he did brilliantly, and CART, an alternative decision tree algorithm, knocked CHAID out of the water. </p><p>To understand why, we need some background. I&#8217;m assuming you know what a decision tree looks like. You probably also know that they are very unstable - small changes in the data will result in very different models - and that this is a sure sign that they are overfitting the data. But they are also rather mesmerising to look at. What is more, a decision tree is supremely explainable. If you wanted to, you could write out its rules in plain English. By itself this is a great virtue, but when combined with the tendency to overfit, it is a disaster. Visual appeal and verbal explainability lure us towards patterns that are not really there.</p><p>So if you must have a decision tree (and why not, since they are so pretty) then it is of paramount importance that you do all you can to prevent overfitting.</p><p>One way of doing this is to stop growing the tree when the data left at each mode becomes too meagre to justify further splits. This is the approach taken by CHAID, which uses a chi-squared test to look for evidence of further structure. But for decision trees, it is often true that an important split is preceded by several weak splits. The CHAID approach risks halting tree growth before this important split is reached and thus falls into the opposite trap of underfitting the data. </p><p>An alternative is to grow the whole tree and then prune parts of it back. As you prune, you reduce model complexity. This is the approach taken by CART. But there are two problems with this approach. First, there are multiple routes back from the full tree to the starting node. How do you choose the right one? Second, how do you know when to stop pruning? What Breiman and his co-authors did was to find a single pruning path back to the root node that could be justified in terms of the classification performance of each tree on the path. They could then map that single path onto a continuous variable (which also happens to be a penalty on the size of the tree) and treat that variable as a measure of complexity. It was then straightforward to tune that complexity parameter using standard machine learning techniques.</p><p>So in a nutshell Breiman created an alternative to CHAID that was proofed against the twin perils of overfitting and underfitting. It didn&#8217;t hurt that it was perfectly aligned with the emerging discipline of supervised machine learning, or that it was announced in an excellent textbook, explaining its properties and detailing the theory that justified its use. CHAID, by contrast, felt ad hoc and cobbled together. Even its one great strength - the diagrams are easier to read because the nodes can be split in more than two ways - turned out to be a weakness, since the splitting is too aggressive, prematurely reducing the size of the data in each node.</p><p>So that&#8217;s it. CHAID was state-of-the-art in 1980, but obsolete by 1984. Of course if you want to use it, then that&#8217;s up to you - it won&#8217;t hurt so long as you validate your findings using some more robust method. But equally, it won&#8217;t do much for your credibility outside of research.</p><p>Thank you to <a href="https://www.linkedin.com/in/wendymartinez-96/">Wendy Martinez</a>, whose intellectual curiosity inspired this post!</p><p>If you have some particularly noxious bullshit that you would like to share, then I&#8217;d love to hear from you.  <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jtwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The white stuff</h2><p>Two entirely unrelated papers this month. The first is <em><a href="https://arxiv.org/html/2511.15304v1">Adversarial Poetry as a Universal Single-Turn Jailbreak Mechanism in Large Language Models</a>. </em>(Thank you to <a href="https://www.linkedin.com/in/neilcharles/">Neil Charles</a> for bringing it to my attention.) It&#8217;s as strange as it sounds. Requests written in verse are considerably more likely to get around measures that have been put in place by model providers to prevent access to harmful content. The authors found that &#8220;20 manually curated adversarial poems (harmful requests reformulated in poetic form) achieved an average attack-success rate (ASR) of 62% across 25 frontier closed- and open-weight models, with some providers exceeding 90%.&#8221; Particularly fascinating is the fact that the larger models tended to do worse. The authors speculate that their increased compliance is partly due to their ability to understand the content of the disguised request. In short, they are too educated for their own good (or our good). </p><p>The second is <em><a href="https://arxiv.org/pdf/2509.19088v3">A Mega-Study of Digital Twins Reveals Strengths, Weaknesses and Opportunities for Further Improvement</a>.</em> (Thanks to <a href="https://www.linkedin.com/in/mediaczar/">Mat Morrison</a> for this one.) I was especially interested in this paper, since the digital twin set up here is a special case of the practice of surveying synthetic respondents, of which, as you probably know by now, I&#8217;m not a fan. It&#8217;s a special case, because for this study the synthetic respondents are based on detailed data profiles of real people (hence digital twins). If you like, it&#8217;s synthetic survey respondents taken to the nth degree. It has the additional advantage that results from surveying the digital twins can be directly compared with those from their real counterparts. As expected, these results are not great. Commendably, the authors differentiate between successfully predicting an individual&#8217;s response and successfully capturing the variation in response within a population. (It&#8217;s easy to get a high degree of accuracy in predicting the response to &#8220;Do you like pizza?&#8221; Just predict &#8220;yes&#8221; for everyone. Far more difficult - and useful - to be able to predict who likes pizza.) While the score on the first looks good (75%), the correlation for the second is more revealing (0.2). Note this supports the point I made previously, namely that synthetic survey respondents would reproduce trivial findings with a high degree of accuracy, but fail when to comes to reproducing surprising (and therefore valuable) findings. </p><p>Even more worrying is another &#8220;I told you so&#8221;: &#8220;Our analysis suggests that the accuracy of digital twins is uneven across demographic groups, with better alignment for participants who are more educated, higher income, and with moderate political views and religious attendance habits.&#8221; The authors speculate that these biases are &#8220;likely to come from the base LLM powering the digital twins&#8221;. </p><p>The closing statement of the paper is something I think should be stamped on the marketing material of all agencies proffering synthetic respondents.</p><blockquote><p>Based on our results it may not be realistic to think about them as &#8220;clones&#8221; of humans, but rather as hyper-rational, quasi-omniscient versions of humans, with implicit values partly imbued by their base LLM. </p></blockquote><p></p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W6Dt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 424w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 848w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1272w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png" width="728" height="149.95348837209303" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:124,&quot;width&quot;:602,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:102848,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/174226120?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde682b2a-c8b2-4d4e-997a-44feea305da2_658x124.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 424w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 848w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1272w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>Semi-supervised</h2><p>In September I posted about the merits of <a href="https://glasseye.substack.com/i/174226120/semi-supervised">package building</a> as an approach to modelling, analysis and data science in general. Many of you found that useful, so I thought I&#8217;d follow it up by promoting another technique I&#8217;ve borrowed from software engineering - the unit test. Once again, half of you will hardly need convincing. If you are an ML engineer or at all involved in the production of software, then this is your bread and butter - you can stop reading now - but if you wandered into data science from the sciences or even further afield, this may be new to you. </p><p>To conduct a unit test, we isolate a component within a system, preferably a low-level component, and check that it performs as expected. The check involves submitting example inputs and checking that the component produces the right outputs. Because the component is relatively simple, it is usually straightforward to calculate the expected outputs by some other method. Particular attention is paid to constructing examples of edge cases that might break the component. The hope is that if all the parts are doing their job properly, then the system as a whole will be. (This isn&#8217;t always the case - failure can be at a system level -  but most of the time it&#8217;s a good start.)</p><p>The usefulness of such a technique is obvious when it comes to building the kind of products and applications that need to withstand constant and varied use, and which cannot afford to fail. The advantages for one-off pieces of analysis, or offline data science processes, are less obvious. But they are there.</p><p>First, as the September post made clear, I think there&#8217;s a case for building modular packages for all but the lightest of data science tasks. The clarity it lends to your thinking and the rigour it adds to your work are worth the extra effort - and frankly, in the long run, as the complexity builds, you&#8217;ll save time. (I&#8217;ve written many a software package that has been used only once.) Once you&#8217;ve made this leap, the unit test is the natural step to ensure that your work is robust.</p><p>Let me give you an example. Something generic. You are building a process that makes a customer-level recommendation or a prediction, based on demographic and behavioural data. The pipeline involves various steps: validating the data; constructing new features (using some custom-built transformations); reducing the number of dimensions;  perhaps some conditional logic that selects the most appropriate model; and then the application of the model. Each of these is a unit, and within each of them, there are potentially subunits. </p><p>Now I didn&#8217;t mention that unit testing is a very mature area of technology. It has seen much innovation, and most unit testing packages (for example, pytest) are rich in tools and features. One such feature is the fixture. Fixtures are objects that are reusable across tests, providing efficiency and standardisation. Thus, for the example given above, I would create, as a fixture, a test set of just a handful of customer records. I would design them to be as different as possible so as to flush out a wide range of issues.  I would then construct unit tests for the various steps, using my fixture as the input data and constructing the expected output using some hand-cranked calculations. But, you object, the input to the later units is not the original customer data but some transformation of it. Fortunately fixtures can be created by applying code to other fixtures, so it is easy enough to create a new fixture for, say, the modelling module by running the original fixture through the preceding modules.</p><p>The pay-off for all this work is a feeling of near-complete security in an environment where extremely complex things are happening. Over time, you will build up a battery of unit tests, which you then run each time the code is changed. Modifying your pipeline will inevitably break some of your tests. Some of these failures will be expected (you will modify the tests to reflect the changes), but some will be unexpected, signalling an unintended consequence of your modification.</p><p>One last point. Sometimes, while developing a solution, I will begin with a prototype that I know will only get me part of the way to the answer (the virtues of this approach I described in an <a href="https://glasseye.substack.com/i/161169149/semi-supervised">earlier post on toy models</a>). At this point, I build unit tests for the prototype modules. Into these units I feed, as a fixture, some simplified data - so simple that the prototype is able to cope and produce a decent enough answer. Next, I increase the complexity of the data to the point that it will break the tests, motivating a new round of development, the goal of which is to produce code that will cope with the more complex data. This technique has a name - test-led development. If I&#8217;m honest, I often break the rules and do the development before modifying the tests. But the important thing is that the tests co-develop with the code, providing ever-present guardrails and a better understanding of the implications of what you are writing.</p><p>Please do send me your questions and work dilemmas. You can <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia</p><div><hr></div><h2>From Coppelia</h2><ul><li><p>Life at the terminal grows richer (and more obsessive) day by day. My latest discovery is the perfect set of plugins for turning Vim into a writing tool: <em>Goyo</em> and <em>Limelight</em> for a nice distraction-free page, <em>Pencil</em> for word-wrapping, and <em>Vale</em> for  customised style linting. I also discovered I could access my Obsidian vault in vim using the vimwiki plugin on my markdown files. No further customisation needed.</p></li><li><p>Coppelia is part of the <a href="https://www.meltcollective.co.uk/">Melt Collective</a>, a small but very experienced group of mostly independent data science professionals. This month we are very happy to welcome three new members. <a href="https://www.linkedin.com/in/saragaspar/">Sara Gaspar</a>, <a href="https://www.linkedin.com/in/adrialuz/">Adri&#224; Luz</a>, and <a href="https://www.linkedin.com/in/martin3ast/">Martin East</a>. All fantastic at what they do. </p></li></ul><div><hr></div><p>If you&#8217;ve enjoyed this newsletter or have any other feedback, please leave a comment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/p/glasseye-8f7/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.glasseye.ink/p/glasseye-8f7/comments"><span>Leave a comment</span></a></p>]]></content:encoded></item><item><title><![CDATA[Glasseye]]></title><description><![CDATA[Issue 18: October 2025]]></description><link>https://www.glasseye.ink/p/glasseye-181</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-181</guid><pubDate>Thu, 30 Oct 2025 09:29:25 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/801737d3-1380-4aac-ad5e-90d64d1a1b73_1843x1037.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this month&#8217;s issue: </p><ul><li><p><strong><a href="https://glasseye.substack.com/i/177212816/semi-supervised">Semi-supervised</a></strong> explains why AI is <em>not</em> coming for your job (as long as you are doing it properly).</p></li><li><p>A sober assessment of AI agents in <strong><a href="https://glasseye.substack.com/i/177212816/the-white-stuff">the white stuff</a>.</strong></p></li><li><p><strong><a href="https://glasseye.substack.com/i/177212816/the-dunghill">The dunghill</a></strong> deplores the unreasonable demands on human classifiers.</p></li></ul><p>Plus lovely <strong>tmux</strong>, the purity of <strong>todo.txt</strong> and another helping of <strong>survey slop</strong>.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W6Dt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 424w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 848w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1272w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png" width="728" height="149.95348837209303" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:124,&quot;width&quot;:602,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:102848,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/174226120?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde682b2a-c8b2-4d4e-997a-44feea305da2_658x124.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 424w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 848w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1272w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>Semi-supervised</h2><p>I&#8217;m going to stick my neck out and say that you are not going to lose your job to an LLM-powered coding agent. As this has been the worry of more than one colleague over the last month, I will back this up with an argument. If I&#8217;m wrong, I&#8217;m very sorry. </p><p>It&#8217;s a two-part argument: (1) Coding agents are currently, and for the foreseeable future, awful at doing anything new. (2) If you are good at your job - data scientist or statistician - you are always doing something new. </p><p>For the first part of the argument, so that you&#8217;re not just taking my word for it, I&#8217;m enlisting the help of OpenAI founder and Silicon Valley insider Andrej Karpathy. He&#8217;s no AI doomster, so, if at all, he should be biased in the other direction.</p><p>But in a recent (extremely interesting) <a href="https://podcasts.apple.com/us/podcast/andrej-karpathy-agi-is-still-a-decade-away/id1516093381?i=1000732326311">interview</a>, he said the words that so many of us were repeating silently to ourselves: &#8220;This is a damn fine auto-complete tool, great for boilerplate code and prototyping, but I&#8217;m not sure it&#8217;s good for much else.&#8221; Ok, these aren&#8217;t his exact words, but if anything he&#8217;s even more blunt. (If you don&#8217;t believe me, listen to <a href="https://podcasts.apple.com/podcast/id1516093381?i=1000732326311&amp;r=1793&amp;t=1793">this segment.</a>) He also expresses frustration at the claims being made on behalf of LLM-powered agents (this is from the person who coined the term &#8216;vibe-coding&#8217;). This time I will quote him verbatim: &#8220;They&#8217;re just cognitively lacking, and it&#8217;s just not working. And I just think that it will take about a decade to work through all those issues.&#8221;</p><p>He makes three further comments which I can&#8217;t help but love him for:</p><p>First, &#8220;I think it&#8217;s kind of annoying to type out what I want in English, because it&#8217;s just too much typing.&#8221; Oh yes. </p><p>Second, &#8220;A lot of times, the value that I brought to the company was telling them not to use AI. I was the AI expert, and they described the problem, and I said, don&#8217;t use AI.&#8221; Oh but they listen to you Andrej!</p><p>And third, have a listen to his take on the operating model for <em><a href="https://podcasts.apple.com/gb/podcast/dwarkesh-podcast/id1516093381?i=1000732326311&amp;r=6580">Waymo cars</a></em>, in particular his strong suspicion that sitting behind the apparent autonomy, is a control room full of human telemetric operators. </p><p>But back to the argument. Karpathy&#8217;s observation is that the performance of LLM coding tools falls off when you are writing atypical code. (<a href="https://podcasts.apple.com/gb/podcast/dwarkesh-podcast/id1516093381?i=1000732326311&amp;r=2111">&#8220;They are not very good at code that has not been written before&#8221;</a>) This certainly chimes with my experience, and that of many of my colleagues. In fact, it seems the secret to efficient use of such tools is to develop a sense for when you are straying into well-mapped territory (LLM autocomplete on) and when you are on the fringes (LLM autocomplete off). <a href="https://glasseye.substack.com/i/156295648/from-coppelia">As I&#8217;ve said before</a>, the single greatest efficiency hack is to set up a &#8220;shut up&#8221; shortcut key.</p><p>The second part of my argument rests on experience: when it comes to problem-solving in data science and statistics, in nearly three decades of graft, I&#8217;ve seen very few repeatable patterns. Problems can be similar, but never the same, and each difference requires a great deal of thought. In other words, each solution is a new solution. To those who refuse to believe me, I point to the shipwrecks of companies that tried to sell data science products, going right back to <a href="https://en.wikipedia.org/wiki/Autonomy_Corporation">Autonomy</a> in the early 2000s. I&#8217;m not talking about tools that will help a data scientist do their job, but rather off-the-shelf solutions that claim to automate away the data scientist. Whenever one appears, I do a little poking, and pretty soon I find the equivalent of Karpathy&#8217;s telemetric control centre - a roomful of STEM graduates, wondering why they are never mentioned in company presentations.</p><p>I don&#8217;t know exactly why reusable solutions are so rare in our line of work. If I had to guess, then it would be something to do with the fact that we typically solve problems that involve complex systems (businesses, supply chains, customer cycles), rather than components within systems, and these systems are always themselves unique.</p><p>So I have faith in the irreducible uniqueness of such problems, and from that I conclude that you and I will be fine. That said, if you spend your days regurgitating other people&#8217;s code, ignoring the specifics of your client&#8217;s problem, and shoehorning briefs into solutions that don&#8217;t fit, then you&#8217;d better look for another job. But I would have said that anyway. </p><p>Please do send me your questions and work dilemmas. You can <a href="https://substack.com/@glasseye">DM me</a> on Substack or email me at simon@coppelia</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The dunghill</h2><p>The way to foil every act of terrorism is to incarcerate everyone. The way to prevent every case of domestic child abuse is to place every child in care. The way to catch every potentially fatal disease before it is too late is to monitor everyone, all of the time. Obviously this is stupid. But if we know this, then why, in each of these areas, is there so much moral indignation when anything less than 100 percent is achieved?</p><p>In terminology that will be familiar to most of you, the examples above obtained complete recall at the cost of abysmal precision. Recall is calculated as true positives/(true positives + false negatives). If we assume every citizen is a terrorist, then we will have no false negatives and the recall will be equal to 100 percent. Precision is calculated as true positives/(true positives + false positives). Since the vast majority of the population are not terrorists, the number of false positives will be enormous, and precision will be close to zero. I&#8217;m not telling you anything you don&#8217;t know already.</p><p>But then you are lucky. You have had years of training machine classifiers. You know, in particular, that for any classification problem two kinds of improvement are available:</p><ol><li><p>There&#8217;s the expensive kind: you improve the performance of the classifier itself - that is, you make it better at predicting the probability that any given individual is A or not A. This should improve both the recall and precision, or at the very least improve one without penalising the other.</p></li><li><p>And the cheap kind: doing nothing to improve the performance of the classifier itself, and accepting the predicted probabilities as they are, you raise or lower the threshold probability for a &#8216;Yes&#8217;. Raise it to one, and you have the situation we opened with: 100 percent recall. Lower it to zero, and you have 100 percent precision.</p></li></ol><p>So what does this tell you about classification out in the real (much nastier than your notebook) world? First, the unscrupulous will try to sell us the cheap option, as though it were the expensive one. &#8220;The solutions are simple: lock everyone up, send everyone home; what&#8217;s all the fuss about?&#8221; Of course, here the chickens of abysmal precision will eventually come home to roost.</p><p>Second, there is in many cases a hard limit on how good the classifier - and now I mean a person or a process - can be. How can you know for sure whether someone will reoffend, or commit a lone wolf terror attack? The best practices, the greatest diligence, will take you up to this limit, but nothing short of supernatural powers will take you over it. Once that limit is reached, the only improvement available is the cheap kind: raise recall or precision, but always one at the expense of the other.</p><p>This means there are good, justifiable, thoughtful criticisms of classification failures, which ask why people or processes weren&#8217;t operating close to the limit of what is possible. But there are also petty and unreasonable criticisms, which blame people who could not have possibly done more. Once again, the cheap trick here is to pretend that it was always easy, and that perfect recall is achievable without cost to precision. </p><p>If you have some particularly noxious bullshit that you would like to share, then I&#8217;d love to hear from you.  <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jtwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The white stuff</h2><p>As you&#8217;ve probably guessed by now, I&#8217;m not at the hawkish end of the <em>Great AI Debate</em>. Last month I made a passing comment slagging off the buzzword <em>agentic</em>. To make amends, and prove that I&#8217;m not a total Luddite, this month I buried my head in <em><a href="https://arxiv.org/pdf/2505.10468">Al Agents vs. Agentic Al: A Conceptual taxonomy, applications and challenges</a></em>. It&#8217;s a well written and level headed paper, and earned my respect almost immediately by doing some desperately needed <a href="https://glasseye.substack.com/i/154255908/semi-supervised">room-tidying</a> on the agentic concept. The authors do this by differentiating between AI agents, &#8220;defined as autonomous software entities engineered for goal-directed task execution within bounded digital environments&#8221;, and agentic AI, an &#8220;emerging class of systems [that] extends the capabilities of traditional AI Agents by enabling <em>multiple intelligent entities</em> to collaboratively pursue goals through structured communication, shared memory, and dynamic role assignment.&#8221; This is very useful distinction. Unfortunately no-one else seems to be up for it.</p><p>All in all the paper is a pretty sober account of both AI agents and agentic AI, providing a sensible review of the opportunities and an exhaustive, unsparing list of the challenges. Perhaps, like me, you&#8217;ve been worn down by the relentless concept creep and need reminding that there might be something in the idea; or perhaps you are an AI evangelist, puzzled by all the frowning going on. Either way you&#8217;d do well to read this paper - and maybe shake hands in the middle.</p><div><hr></div><h2>From Coppelia</h2><ul><li><p>I&#8217;m now into month three of my retreat from GUI-land to the safety of the terminal and I&#8217;ve finally figured out why I&#8217;m doing it. It&#8217;s simple, probably obvious, but it didn&#8217;t hit me until now: in a world of pure text those who wish to distract me with their buttons, images and sounds have been stripped of their powers. No wonder it&#8217;s such a peaceful place. My happy discoveries this month have been tmux (there&#8217;s something beautiful about the minimalist, bar-less panels into which it divides my screen) and todo.txt - the severest, most stripped down todo list I&#8217;ve yet to encounter. </p></li><li><p>I&#8217;m feeling partially vindicated this month in my crusade against synthetic respondents (AKA survey slop). Two papers have been published that voice similar concerns: <em><a href="https://arxiv.org/pdf/2509.13397">The threat of analytic flexibility in using large language models to simulate human data: A call to attention</a> </em>and <em><a href="https://www.verasight.io/reports/synthetic-sampling-2?">The Limits of Synthetic Samples in Survey Research</a></em>.  The second paper makes exactly the point I made <a href="https://glasseye.substack.com/i/161169149/the-dunghill">here</a>, about the likely failure of synthetic respondents when it comes to non-obvious insights: <em>&#8220;While LLM-generated &#8220;synthetic samples&#8221; can approximate real-world population proportions on frequently asked and highly polarized poll questions, such as Donald Trump&#8217;s approval rating (LLM error was around 4 percentage points), LLMs badly predicted the public&#8217;s attitudes on less polarized and novel survey questions.&#8221; </em>Unfortunately this point was missed in a further paper: <a href="https://arxiv.org/pdf/2510.08338">LLMs Reproduce Human Purchase Intent via Semantic Similarity Elicitation of Likert Ratings</a>. No effort is made to separate out surprising (and therefore information-rich) findings from the bleeding obvious, and if we can&#8217;t see that, then we don&#8217;t know how well the technique is doing in precisely the area in which it would be useful. Many thanks to those who forwarded me the papers!</p><p></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W3ZC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e62a65-4ba2-4083-ab40-95b16a46a317_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W3ZC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e62a65-4ba2-4083-ab40-95b16a46a317_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!W3ZC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e62a65-4ba2-4083-ab40-95b16a46a317_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!W3ZC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e62a65-4ba2-4083-ab40-95b16a46a317_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!W3ZC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e62a65-4ba2-4083-ab40-95b16a46a317_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W3ZC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e62a65-4ba2-4083-ab40-95b16a46a317_1024x1024.png" width="178" height="178" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06e62a65-4ba2-4083-ab40-95b16a46a317_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:178,&quot;bytes&quot;:1159254,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/177212816?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e62a65-4ba2-4083-ab40-95b16a46a317_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!W3ZC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e62a65-4ba2-4083-ab40-95b16a46a317_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!W3ZC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e62a65-4ba2-4083-ab40-95b16a46a317_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!W3ZC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e62a65-4ba2-4083-ab40-95b16a46a317_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!W3ZC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06e62a65-4ba2-4083-ab40-95b16a46a317_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p><div><hr></div><p>If you&#8217;ve enjoyed this newsletter or have any other feedback, please leave a comment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/p/glasseye-181/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.glasseye.ink/p/glasseye-181/comments"><span>Leave a comment</span></a></p>]]></content:encoded></item><item><title><![CDATA[Glasseye]]></title><description><![CDATA[Issue 17: September 2025]]></description><link>https://www.glasseye.ink/p/glasseye-520</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-520</guid><pubDate>Wed, 24 Sep 2025 08:25:27 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/bae2ed5f-c563-4bda-a5eb-f6e8df36f901_2620x1554.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this month&#8217;s issue: </p><ul><li><p>Some annotated AI sophistry in <strong><a href="https://glasseye.substack.com/i/174226120/the-dunghill">the dunghill</a></strong></p></li><li><p><strong><a href="https://glasseye.substack.com/i/174226120/semi-supervised">Semi-supervised</a> </strong>asks you to package things up</p></li><li><p>The secrets of icy-clear technical prose in <strong><a href="https://glasseye.substack.com/i/174226120/the-white-stuff">the white stuff</a>.</strong></p></li></ul><p>Plus cursor on the command line, a plot twist for last month&#8217;s dunghill, and at last some industry interest in the synthetic respondents brouhaha.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>The dunghill</h2><p>One of the British newspapers used to run a regular feature in which they would annotate a political speech or interview to explain to those outside the Westminster bubble what was really going on beneath the surface. I thought it would be interesting to do something similar for a sample of Silicon Valley AI speak.</p><p>So here&#8217;s a short segment from an interview with Anthropic&#8217;s CEO, Dario Amodei, that featured on the BBC&#8217;s <a href="https://www.bbc.co.uk/sounds/play/m002ht32">Radical with Amol Rajan</a>. It&#8217;s less than three minutes long, but it is nevertheless crammed full of verbal manoeuvring. I&#8217;ve numbered the sections I&#8217;m going to comment on.</p><blockquote><p><strong>Dario Amodei: </strong>And of course, AI models are starting to write code. About 90% of code at Anthropic is written now or at <em><strong>least suggested by AI models</strong>.<strong>(1)</strong></em> We use our own AI models internally, and I&#8217;ve heard the CEOs of large companies say the same. So we&#8217;ve gone from barely being able to put together a sentence to writing a lot of the production code at some of the biggest technology companies in the world,  at the level of a scientist, a PhD level scientist.</p><p>And the fact that there&#8217;s this exponential, that, you know, we&#8217;ve gotten to this stage&#8230; if the progress continues for even a couple of years beyond that, we may get to levels where the models are capable of doing things like making new biomedical discoveries, proposing a new molecular structure of a drug. <em><strong>We&#8217;ve already seen some of that with things like AlphaFold that you&#8217;ve seen Google did in the UK. (2) </strong></em>And we&#8217;re starting to see LLMs participate in things like this. It&#8217;s small, but we&#8217;re already working with pharmaceutical companies to use LLMs to speed the approval of clinical trials or <strong>something called a clinical study report</strong><em><strong>. (3)</strong></em> And usually that takes nine or ten weeks to do. It&#8217;s kind of a summary of the results of a clinical trial. We&#8217;ve gotten that time down to less than one week with LLMs. So this is now compressed by eight weeks, the amount of time it takes to approve a drug.</p><p><strong>Amol Rajan: </strong>And there&#8217;s a very good practical example I actually covered on the radio this morning, the day we&#8217;re speaking, which is that <em><strong>artificial intelligence is being used to identify the causes of a stroke in people who come to a hospital very, very quickly.(4)</strong></em> Was it a burst blood vessel or was it a blocked blood vessel? That often requires very specific knowledge and artificial intelligence can be used to augment what a doctor does.</p><p>You know, it&#8217;s interesting just listening to you, right? <em><strong>Because if you follow this field closely as I&#8217;ve done, you report on it, you read the books, you listen to the podcast (5),</strong> different big players</em>, and you are one of the biggest players, are known for different things. And Anthropic, the clue is in the name, is trying to make through Claude a more humane Al, something that has kind of something that&#8217;s a bit more the complete human.</p></blockquote><h3>Commentary</h3><ol><li><p>&#8220;At least suggested by AI models&#8221; - this might seem like an innocent enough qualification, but in fact it is doing most of the work. It would be nice to know, for example, what percentage of the 90% was suggested as opposed to taken as read. The reason this matters is that the big sell (and, for many, the big fear) with AI is that it will be deployed in situations where it can act autonomously. For this to become a reality, we need to reach a point where certain types of error (hallucinations and the kind of common-sense errors that occur because LLMs do <a href="https://garymarcus.substack.com/p/generative-ais-crippling-and-widespread">inhabit our world</a>) are near enough eradicated. Now it looks like many in Silicon Valley are coming round to the idea that this is not going to be possible, not just practically but also in principle, and this has prompted some quiet back-peddling. A rather brilliant pivot is to place the responsibility for being right on human beings, and limit the role of an LLM to that of an insightful but unreliable critic, who provides interesting suggestions, all of which must be taken with a pinch of salt. That way, if they suggest something that&#8217;s clearly nuts, it can be brushed off with no harm done. This seems to be exactly what Jack Clark, another Anthropic key player, is saying in <a href="https://www.youtube.com/watch?v=217P7agnneU">a recent interview</a> on the Newsagents podcast: &#8220;You know, today lots of people use these systems [LLMs] to learn, but some of them use these systems to do junk food learning and some of them use these systems to do effective learning. Junk food learning is: upload a research paper to the system and say, tell me what this research paper is about and then read the output. You haven&#8217;t actually learned anything there. You&#8217;ve just become dependent on the machine in a way that doesn&#8217;t help anyone. The way that I use these systems, and many do, is I read a research paper, I write out what I understand that paper to mean and when I upload the paper and my understanding of it to the system and say, do I have this right? And if I don&#8217;t have it right, explain to me. That&#8217;s useful learning because the system reads the paper, reads my explanation and tells me whether I got it right or wrong, just like a colleague. If we use these things in the right way, they can help us be a lot more capable and a lot smarter.&#8221; This is all very true. It is exactly how we use these systems to code, and they are enormously useful. But saying that the LLM is &#8220;just like a colleague&#8221; is misleading. There is a reason they have been relegated to the passenger seat and are not allowed to touch the steering wheel.</p></li><li><p>Alphafold is not an LLM. It does share with LLMs a transformer architecture but one that is specifically designed for the job of predicting protein structures. All credit to Amodei, he doesn&#8217;t do the usual thing, which is to pretend that Alphafold and LLMs are essentially the same thing (see point 4 below) but, as his next sentence shows, he is undoubtedly leaning on its achievements to create the impression that similar successes for LLMs are just around the corner.</p></li><li><p>A report writing tool then? Something that suggests or summarises text? Well it better not be the junk food kind that Jack Clark has just warned us about. But if it is not going to be junk food then, as Clark points out, it needs a human being as the primary authority. This is a very different proposition to Alphafold, which can operate without supervision. It is a stretch then to say that LLMs are starting to &#8220;participate in things like this&#8221;, unless you qualify the kind of participation. </p></li><li><p>This one is on Amol, and just about every journalist who has written or spoken about AI since 2020. The fact is that over the last decade or so the word &#8220;AI&#8221; has meant:</p><ol><li><p>A multidisciplinary project to create autonomous agents that can act intelligently in complex environments (pre-2010).</p></li><li><p>A small but suddenly very successful sub-discipline within that project, i.e. machine learning using deep neural networks (roughly 2010-2015).</p></li><li><p>Just about everything that sat inside a computer (roughly 2015 - 2020:  if I remember rightly, there was a brief interregnum before the arrival of LLMs where no one was quite sure what AI was and anything could be sold under its banner without any mention of a chatbot).</p></li><li><p>An even smaller but phenomenally successful sub-field (LLMs) of the previously mentioned sub-discipline. (2020 to now)</p><p></p></li></ol><p>So much overuse has left the term very slippery indeed. The most common slip being between what it means to most people now (ChatGPT or a variant) and the many things it has been in the past (and thanks to <em><strong>step c</strong></em> there&#8217;s not much it hasn&#8217;t been). This is very fortunate for those who wish to make a strong case for the practical usefulness of AI ( in <em><strong>sense d</strong></em>) because they can draw on <em><strong>a</strong></em>, <em><strong>b</strong></em> and <em><strong>c </strong></em>for myriad examples, despite the fact that these examples are only distantly related. I think most people would be surprised to learn that the technology at work in every NHS AI success story (scanning, detecting, imaging, etc), including the one mentioned by Rajan, has nothing to do with generative AI and everything to do with slow and steady progress in a field (machine learning) that has has been trundling along for twenty or so years.</p></li><li><p>From a journalistic point of view, I think this gets to the heart of the problem. The podcasts, the books, the speakers, these are all an obfuscating layer between the journalist and the truth about the technology.  And who can blame them for not digging deep enough? There are lots of big names, with convincing qualifications, some with Nobel prizes, telling fascinating, newsworthy stories about the end of humanity. Who would want the truth?</p></li></ol><p>If you have some particularly noxious bullshit that you would like to share then I&#8217;d love to hear from you.  <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jtwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The white stuff</h2><p>It is a lazy stereotype about technical people that they are poor communicators. When I get a three word email with a hundred possible meanings it has invariably come from a &#8220;people person&#8221; whose charisma has not made it into the text. Nevertheless there is always room for improvement, which is why I&#8217;m recommending two books to sharpen your prose. The first is Stephen Pinker&#8217;s <em>The Sense of Style: The Thinking Person&#8217;s Guide to Writing in the 21st Century. </em>Whatever your views on Pinker&#8217;s relentless enlightenment positivism, this is an incredibly useful book, for at least two reasons: first Pinker&#8217;s academic background was originally linguistics which means that he can convincingly give you the &#8216;why&#8217; as well as the &#8216;what&#8217; for each linguistic rule (and show pedants the door); second he is himself a writer of clear and engaging scientific prose (an understatement), and can explain how he has achieved this. </p><p>The second book, Clear and Simple as the Truth: Writing Classic Prose, is heavily referenced by Pinker and with good reason - it is an argument for something the authors call the &#8216;classic style&#8217; - a conversational writing style that emphasises, brevity and directness.  </p><p>It doesn&#8217;t matter that you are not personally writing a book, or an article. Both of the above will change the way you write an email or text message; even - under some circumstances - the words that come out of your mouth.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W6Dt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 424w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 848w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1272w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png" width="728" height="149.95348837209303" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:124,&quot;width&quot;:602,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:102848,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/174226120?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde682b2a-c8b2-4d4e-997a-44feea305da2_658x124.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!W6Dt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 424w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 848w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1272w, https://substackcdn.com/image/fetch/$s_!W6Dt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fd19ac9-5efe-4cda-944d-b7f70d317349_602x124.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>Semi-supervised</h2><p>Of the data scientists I work with my assumption is that one half started out as software engineers and drifted data-wards, and the other half came from a variety of numerate but not necessarily IT-intensive disciplines: natural sciences (a lot of physics students for some reason), economics, social sciences etc. My unproven, armchair theory is that the latter group gravitates towards Jupyter (or R) notebooks as a way of working since the format here is closest to the more familiar paper or essay format. If this is true then these are the people I&#8217;m talking to today. The first group will need no convincing.</p><p>Because I&#8217;d like to talk up the merits of package building as an approach to modelling, analysis and data science in general. By package building I mean assembling a core of reusable, configurable, documented, tested code with a decent interface. If you are one of the many who entered data science through the notebooks of online data science courses then it might not have even occurred to you that this is a way of working. Or you may have dismissed it as hugely inefficient given your limited, one-off goals. But hear me out.</p><p>First, I&#8217;m not suggesting you write a python package for every ad-hoc analysis request that comes your way. That would be silly. Nevertheless there are signs that a package is calling out to you from the pages of your notebook: repeated blocks of code with minor variations, sometimes coagulating into functions that you run at the top of the notebook; a growing feeling that you lack control over a complex problem; the multiplication of notebooks with titles that sound like software processes. (Note that once you are in the habit of package building things will never again get this out of hand - the problem type, or its objectives will have demanded a package way in advance.)</p><p>Second, let me point out that by building a package you will be availing yourself of problem solving techniques that have been refined over fifty years of software design, using simple but powerful concepts such as object-orientation, encapsulation, separation of concerns, statelessness, chaining. These are invaluable for organising your thoughts and then your code. If you doubt this then consider how they are all used in the analysis and modelling packages you already find so useful.</p><p>Third, note that by entering the into the world of software design you will be helping yourself to a much richer toolset for managing your work - tools for managing virtual environments, tracking changes, testing and debugging your code. </p><p>Fourth, you&#8217;ll see that software development comes with a well-honed set of processes for managing people and projects. They were invented to prevent well-meaning meddlers from wrecking development projects so how could they not be useful to you in managing upwards. Log issues, separate them into bugs and enhancements, provide your output in a bundled release of data and model after some thorough unit and system testing. Insist people wait for the next release.</p><p>Fifth, are you planning on collaborating with others on your project? Ever tried collaborating on a notebook? I don&#8217;t think I need say more.</p><p>Finally, delivering a package at the end of a project means delivering a reusable, modifiable, living, breathing thing, hopefully with a nice API that will make it easy to use. The client gets a tool rather than a dead-on-arrival report or presentation, you get some new skills and some job satisfaction.</p><p>Please do send me your questions and work dilemmas. You can <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppe</p><div><hr></div><h2>From Coppelia</h2><ul><li><p>The flight to the command line mentioned in last month&#8217;s glasseye has been given an extra boost by the discovery of the <a href="https://cursor.com/cli">cursor CLI</a>, a newish CLI tool that comes with the standard cursor subscription. I&#8217;m too tight to fork out for Claude Code so was very happy to find this. It&#8217;s a little erratic but so far so good.</p></li><li><p>A plot twist for <a href="https://glasseye.substack.com/i/171866656/the-dunghill">last month&#8217;s dunghill</a>: when I feed the offending Campaign article into ZeroGPT (the tool for detecting LLM written prose mentioned in <a href="https://glasseye.substack.com/i/171866656/the-white-stuff">the white stuff</a>) I get the response: &#8220;We are highly confident this text was AI generated&#8221;. I think the Campaign article is bad but it&#8217;s not (I hope) written by genAI. So how do we interpret that result? Does it imply that the Campaign article is very human in the sense of very average/bland and of a style highly represented in a training data set that contains millions of similar articles and therefore quite typical of what a model trained on that data would spit out. Or, to take <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Dominic Bates&quot;,&quot;id&quot;:8642594,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/627eca7c-0916-43ff-887e-ecd8a51b3653_96x96.png&quot;,&quot;uuid&quot;:&quot;c61cc3c3-778f-4e26-bcc4-213278fbba3b&quot;}" data-component-name="MentionToDOM"></span> <a href="https://glasseye.substack.com/p/glasseye-786/comment/149672559">point about fine tuning steps producing less human responses</a>, is the article very un-human? Or is ZeroGPT just not good at its job?</p></li><li><p>I&#8217;m very happy to report that someone, somewhere is pushing back on the synthetic respondents bullshit that we have been railing against for well over a year now. I have been talking to a couple of people in large research agencies about how to gently point out to well meaning peers that the emperor is butt-naked. If anyone else is having such problems, I&#8217;m offering my services for free on this one! </p></li></ul><div><hr></div><p>If you&#8217;ve enjoyed this newsletter or have any other feedback, please leave a comment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/p/glasseye-520/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.glasseye.ink/p/glasseye-520/comments"><span>Leave a comment</span></a></p>]]></content:encoded></item><item><title><![CDATA[Glasseye]]></title><description><![CDATA[Issue 16: August 2025]]></description><link>https://www.glasseye.ink/p/glasseye-786</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-786</guid><pubDate>Wed, 27 Aug 2025 13:06:13 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c8bb5168-3042-4a6a-9e16-9df9c76afed1_820x462.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this month&#8217;s issue: </p><ul><li><p><strong><a href="https://glasseye.substack.com/i/171866656/semi-supervised">Semi-supervised</a> </strong>offers some advice to the tongue-tied frequentist</p></li><li><p>Synthetic populations - the latest synthetic bullshit to find its way onto <strong><a href="https://glasseye.substack.com/i/171866656/the-dunghill">the dunghill</a></strong></p></li><li><p><strong><a href="https://glasseye.substack.com/i/171866656/the-white-stuff">The white stuff</a></strong> asks whether humans still have the edge when it comes to good quality prose.</p></li></ul><p>Plus an abortive retreat into spacemacs, talking to the dead, and some experimental vibes.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aMhN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105008,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>Semi-supervised</h2><p>One of the first things we learn (and perhaps the last we understand) in any introductory statistics course is that a confidence interval is <em><strong>not</strong></em> to be understood as a range that contains the population parameter with a given probability. While it&#8217;s nice to know what a confidence interval is not, most people, and more pointedly most employers, would like to know what it is. And, what&#8217;s worse, they expect this to be explained in no more than two or three sentences. </p><p>This is the dilemma I&#8217;d like to help you with today. What is the best wording to explain something you know to be fiendishly counterintuitive, for an audience with zero interest in the philosophy of probability?</p><p>(And yes it&#8217;s a trap we all escape by going Bayesian. But the most die-hard of Bayesians still has to live in a world in which their boss or client is more likely to be familiar with confidence intervals than credible intervals. At a minimum they would like to see you explain the former before they buy the latter.)</p><p>So first a very quick, since it is explained <em>ad nauseam</em> on the web, recap of why interpreting a confidence interval is difficult in the first place. For a frequentist, a probability is a property of a <em>series</em> of experiments. It is the frequency at which a given event occurs during these experiments, or, more precisely, the limit approached by that frequency as the number of experiments tends to infinity. This severely limits the kind of thing that can have a probability. Single experiments cannot have a probability. A finite group of experiments cannot have a probability. Thus, from a frequentist perspective, it is nonsense to talk about the probability of obtaining a six in a single die roll. Only a potentially infinite series of such rolls has a probability.</p><p>The drawing of the sample used to build a confidence interval counts as a single experiment. Whether or not the resulting confidence interval contains the population parameter is a single event, like getting a six with a single die roll. Therefore, it is not the kind of thing that, according to the frequentist, can have a probability. What can have a probability is the event that the confidence interval contains the population parameter when the sampling and confidence interval calculation are endlessly repeated. Why? Because then it can have a frequency, and that frequency can have a limit.</p><p>Hence to the frequentist, the otherwise very fair-sounding question: &#8220;What is the probability that the range you have just given me contains the true value?&#8221; is simply nonsense, alongside &#8220;What is the probability that it will rain tomorrow?&#8221; or &#8220;What is the probability that the next card is the king of spades?&#8221; The correct response is an eye roll.</p><p>How did the founders of frequentist statistics get away with such an extraordinary cop out? How did they avoid the flak we&#8217;d now get if we even attempted to pull this off? Part of the explanation is the intellectual climate in Europe in the early part of the nineteenth century. This was a period in which people took seriously the idea of creating a grounded, rigorous scientific language that was quite separate from the language of ordinary people. The frequentists were co-opting the term &#8220;probability&#8221; for this language. Ordinary people could still make primal grunting sounds that vaguely indicated degrees of belief (just as they could make them in appreciation of artworks or ethical positions) but this was not the precisely defined thing that now went by the name of probability.</p><p>So this is the core of the dilemma: because it is so widely adopted, we can&#8217;t abandon the tool that we have inherited, but neither can we adopt the methodologically correct position with respect to its use - i.e. blink a lot and claim not to understand the question. Are there no words that can get us out of this?</p><p>If you look through the textbooks and the literature, what mostly happens is that probability sneaks back into the interpretation of the confidence interval through phrases such as &#8220;likely to be&#8221; or &#8220;plausible range of values&#8221;. This is unsurprising: the frequentist might have run off with the word &#8220;probability&#8221; but we still need to somehow express degrees of belief. Hence we lean on the remaining probabilistic terms. My preferred wording is still guilty of this to some extent, but I think gets across, by its connotations, the proper frequentist position. Here it is:</p><blockquote><p>The population parameter is between x and y. The technique we are using to provide this range is reliable. It is right 95% of the time.</p></blockquote><p>I like this wording because it separates the claim, &#8221;the population parameter is between x and y&#8221; about which - keeping the frequentist happy -  nothing probabilistic is being said, from the reliability of the technique, which, as a series of repeated experiments, can be given a probability. It thus encourages the reader to make the right kind of inference -  along the lines of &#8220;Will this car break down? &#8230; I don&#8217;t know but this make of car is very reliable.&#8221;</p><p>Many thanks to <a href="https://www.linkedin.com/in/adrialuz/">Adri&#224; Luz</a>, whose deceptively simple question about presenting confidence intervals led to this post.</p><div><hr></div><p>Please do send me your questions and work dilemmas. You can <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jtwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The white stuff</h2><p>I have a theory, actually more of a hope, that LLM-generated prose is not the end of journalism and other kinds of professional writing, but a revitalising force - faced with an inferior and untrustworthy alternative, consumers will once again see the value of good, well-researched prose, and be willing to pay for it. Naive? Luckily I can check my armchair theories with an industry expert. If you have not already subscribed to <a href="https://chrisduncania.substack.com">Chris Duncan&#8217;s substack</a> on the intersection of copyright law, media industry, and AI then I urge you to do so. It&#8217;s the good prose I&#8217;m talking about. </p><p>When I expressed my hopes to Chris, he was less optimistic, pointing out that  &#8220;it is equally likely that the impact [of the proliferation of AI generated content] is for consumers to mistrust all information equally - same thing happened to politicians during the expenses scandal, where one party sinned and all parties suffered.&#8221; But Chris did agree that &#8220;the real opportunity for publishers is to spend marketing money to show that they are run by humans who are on your side, and that there is a human touch to original sources that gets diluted by machine abstraction.&#8221; </p><p>The idea of there being a &#8220;human touch to original sources&#8221; prompted a dive into the latest research comparing AI-generated and human-generated text. Here are a couple of interesting papers. <em><a href="https://arxiv.org/pdf/2407.03646">Differentiating between human-written and AI-generated texts using linguistic features automatically extracted from an online computational tool</a> </em>by<em> </em>Georgios P. Georgiou takes a statistical approach to uncovering the differences. Aside from making me very curious about the nature of approximants, fricatives, laterals, nasals, and plosives, it was helpful for confirming what most of us already feel: AI-generated content is different but in subtle ways. The paper cites previous work showing that there is less variation in sentence structure in AI-generated text: </p><blockquote><p>AI-generated essays exhibited a high degree of structural uniformity, exemplified by identical introductions to concluding sections across all ChatGPT essays. Furthermore, initial sentences in each essay tended to start with a generalized statement using key concepts from the essay topics, reflecting a structured approach typical of argumentative essays.</p></blockquote><p>Georgiou&#8217;s study adds to these findings by spelling out the structural differences: &#8220;the AI text used more coordinating conjunctions, nouns, and pronouns, while the human text used more adpositions, auxiliaries, and verbs.&#8221;</p><p>A second paper <em><a href="https://arxiv.org/pdf/2301.10416">AI vs. Human - Differentiation Analysis of Scientific Content Generation</a></em> by Ma et al comes to a similar conclusion, but rather than using statistical analysis to analyse differences it (among other things) examines the features used by the RoBERTa-based OpenAI Detector to differentiate GPT content from human text. The paper is a little old so I wondered about the current state of AI content detectors. This in turn led me to something I can barely get my head around - the use of such detectors to identify passages in AI-generated content that look too obviously like they were generated by AI, so that humans can tweak them by adding a human touch. <a href="https://www.grammarly.com/ai-detector">Grammarly is explicit about this use case</a> for their detection tool &#8220;Grammarly&#8217;s AI content detector and writing assistant assess your work for you, so you know exactly where to refine and polish to make sure it&#8217;s authentically yours.&#8221; To see how this is actually being used, check out this quote from an American high school student reported in <a href="https://theimportantwork.substack.com/p/ai-is-creating-a-divide-between-teachers">The Important Work</a> (which I came across in <a href="https://buildcognitiveresonance.substack.com/p/an-annotated-guide-to-openais-enshittification">Cognitive Resonance</a>):</p><blockquote><p>For me, William, and my classmates, there&#8217;s neither moral hand-wringing nor curiosity about AI as a novelty or a learning aid. For us, it&#8217;s simply a tool that enables us not to have to think for ourselves. We don&#8217;t care when our teachers tell us to be ethical or mindful with generative AI like ChatGPT. We don&#8217;t think twice about feeding it entire assignments and plugging its AI slop into <a href="https://www.humanizeai.pro/">AI humanizing tools</a> before checking the outcome with myriad <a href="https://gptzero.me/">AI detectors</a> to make sure teachers can&#8217;t catch us. Handwritten assignments? We&#8217;ll happily transcribe AI output onto physical paper.</p><p>Last year, my science teacher did a &#8220;responsible AI use&#8221; lecture in preparation for a multiweek take-home paper. We were told to &#8220;use it as a tool&#8221; and &#8220;thinking partner.&#8221; As I glanced around the classroom, I saw that many students had already generated entire drafts before our teacher had finished going over the rubric.</p></blockquote><p>A better use of these tools is to reassure yourself that you are, in fact, human. I fed the above into <a href="https://app.gptzero.me/">GPTZero</a> (another detector) and I am pleased to report that &#8230;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x8YX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e9ea154-02aa-4535-8149-cbde3ace8f76_1062x398.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x8YX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e9ea154-02aa-4535-8149-cbde3ace8f76_1062x398.png 424w, https://substackcdn.com/image/fetch/$s_!x8YX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e9ea154-02aa-4535-8149-cbde3ace8f76_1062x398.png 848w, https://substackcdn.com/image/fetch/$s_!x8YX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e9ea154-02aa-4535-8149-cbde3ace8f76_1062x398.png 1272w, https://substackcdn.com/image/fetch/$s_!x8YX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e9ea154-02aa-4535-8149-cbde3ace8f76_1062x398.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x8YX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e9ea154-02aa-4535-8149-cbde3ace8f76_1062x398.png" width="1062" height="398" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e9ea154-02aa-4535-8149-cbde3ace8f76_1062x398.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:398,&quot;width&quot;:1062,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:54706,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/171866656?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12094099-1176-4149-82be-e2db235a95b1_1062x398.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!x8YX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e9ea154-02aa-4535-8149-cbde3ace8f76_1062x398.png 424w, https://substackcdn.com/image/fetch/$s_!x8YX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e9ea154-02aa-4535-8149-cbde3ace8f76_1062x398.png 848w, https://substackcdn.com/image/fetch/$s_!x8YX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e9ea154-02aa-4535-8149-cbde3ace8f76_1062x398.png 1272w, https://substackcdn.com/image/fetch/$s_!x8YX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e9ea154-02aa-4535-8149-cbde3ace8f76_1062x398.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>P.S. For a fun activity try submitting the Campaign article mentioned in <strong>the Dunghill </strong>into the<a href="https://app.gptzero.me/"> same detector</a>.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The dunghill</h2><p>It certainly feels like &#8216;agentic&#8217; and &#8216;synthetic&#8217; are the bullshit terms of the moment. Bullshit evolves, so perhaps it is significant that they are sly little adjectives and not the hefty nouns we&#8217;ve grown wary of (compare &#8216;big data&#8217;, &#8216;block-chain&#8217;, and &#8216;AI&#8217; itself).</p><p>Let&#8217;s leave &#8216;agentic&#8217; for another time. It&#8217;s too slippery and frankly too irritating. &#8216;Synthetic&#8217; we&#8217;ve seen several times already: synthetic respondents, the boosting of sample sizes with synthetic data. All good things come in threes, so it&#8217;s no surprise that <a href="https://www.linkedin.com/in/scottgthompson/">Scott Thompson</a> has dug out another one for me - synthetic populations.</p><p>Unfortunately, the article he found, <em><a href="https://www.campaignlive.co.uk/article/synthetic-populations-future-media-planning/1929238">Synthetic populations could be the future of media planning</a></em>, is behind a paywall. This might be for your own protection. As Scott pointed out to me, there are so many things wrong here that it is difficult to know where to start.</p><p>But start we must, so I&#8217;ll begin with this: I can see here a move very common to AI-related bullshit. This is to slip between, on the one hand, well-established, sometimes decades-old techniques, and, on the other, highly speculative, unproven or nonsensical ideas, and to do this as though they were the same thing. This works because if you want concrete examples of successful applications of the technology then you fall back on the former; if you want to wax futuristic you glide back to the latter. Sometimes this is done cynically, in full knowledge that two are in fact different; at other times it is done in ignorance. (A classic example can be seen in the way that successive British governments have promoted their plans for AI within the NHS. When they want to talk up its successes, they refer to the use of AI in screening and scanning - old school machine learning no doubt, but talked about as though it were one and the same with new school generative AI, whose successes have yet to be seen.)</p><p>Synthetic populations is just this again. The old school tech is agent-based modelling, the dubious parvenu is of course the whisker-twiddling LLM. Let me talk you through it. </p><p>The article begins in full-on prophetic mode:</p><blockquote><p>As media planning moves into an era shaped by privacy, AI, and unpredictability, a radical new concept is poised to redefine how we think about audiences: synthetic populations. These virtual societies, built from real-world data and fuelled by machine learning, could give marketers the ability to simulate campaigns before they ever go live.</p></blockquote><p>Synthetic populations are not new. They have been around for decades as an essential component of agent-based modelling (a simulation technique that involves modelling the interactions between agents whose characteristics are distributed to mirror real-world populations). And the idea of using agent-based modelling to &#8220;simulate campaigns before they ever go live&#8221; is just as old. So perhaps the author means something different? Let&#8217;s look at some of his ambitions for synthetic populations:</p><blockquote><p>Rather than extrapolating from panels or historical data, synthetic populations offer a proactive approach. Planners can model out-of-home exposure, simulate podcast engagement, or test social creative across varied personas and life stages.<br>Want to understand how a price-sensitive household in the Midlands might respond to a supermarket ad during an economic downturn? Or if a premium beauty product resonates more in urban rentals than suburban family homes? These are scenarios synthetic models could answer &#8211; before a campaign goes live.</p></blockquote><p>Now admittedly an agent-based model is going to struggle to do any of this. Their strong suit is in helping us understand the behaviour of systems which, because of feedback loops and complex interactions, are too difficult to understand without simulation. If we want to understand the effect of a premium beauty product using an ABM then we must provide data about these beauty products and specify rules about how people behave towards them, given their demographic profiles. But the implication of the above is that any impromptu query can be fired at the synthetic population.</p><p>So what is being sold here under the banner of synthetic populations? Well it&#8217;s not explicitly mentioned but I think we can all guess: the plan is for agents to be driven by LLMs, that is they will make decisions based on prompts that specify their individual profiles and backgrounds, as well as the details of the decision.</p><p>Everything that is wrong about synthetic respondents in survey panels, as detailed in <a href="https://glasseye.substack.com/p/glasseye-12e?open=false#%C2%A7the-dunghill">previous posts</a> is just as wrong here. We have no idea how the LLM training data relates to the population we are simulating. We might think we can overcome this by comparing the behaviour of our simulated populations with real data, but the broad patterns used in such comparisons are rarely the ones that people are interested in. (As the quote above shows, synthetic populations are being sold as way of answering very specific questions, and there&#8217;s no way of ensuring <a href="https://glasseye.substack.com/i/146165448/synthetic-survey-respondents-a-revolution-in-research-methods-or-the-worst-idea-ever">algorithmic fidelity</a> on these points without conducting your own real world research - at which point why would you need the synthetic population?)</p><p>But credit where credit is due - the article does at least present a theory that is falsifiable. In fact, better than that, it contains, to use <a href="https://glasseye.substack.com/i/161169149/the-dunghill">Popper&#8217;s language</a>, bold, novel predictions. Take the one mentioned above: in the near future we will be able to successfully predict how a price-sensitive household in the Midlands will respond to a supermarket ad during an economic downturn. Not just the average price-sensitive Midlands household mind - this will be specific &#8220;household level insight&#8221;. Now that&#8217;s bold. </p><p>ABMs were never great at predictions: too many assumptions were needed, and too many models with very different outcomes fit the available data -  but at least we knew what the assumptions were. My prediction about the future of campaign planning is considerably less bold. I think such synthetic populations, if they ever come to be, will be awful predictors of campaign performance. I also predict that, given the millions of hidden assumptions, we will have no idea why.</p><div><hr></div><p>If you have some particularly noxious bullshit that you would like to share then I&#8217;d love to hear from you.  <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>From Coppelia</h2><p>As I think I mentioned before, in uncertain times I feel an irrational pull back to the terminal and the command line. I don&#8217;t think I&#8217;m alone in this. It&#8217;s probably a need for total control mixed with 80s nostalgia. Anyway, I&#8217;ve always been a vim guy and never really looked at emacs. However this month I discovered spacemacs, the <a href="https://www.spacemacs.org/">Emacs advanced Kit focused on Evil</a>. Which sounds amazing, however you may be disappointed to find that EVIL stands for <strong>e</strong>xtensible <strong>vi</strong> <strong>l</strong>ayer for Emacs, which means I can use my vim bindings while taking advantage of the many emacs extensions. It&#8217;s a wonderful thing to see your email inbox in a text editor. The moment of fear and paranoia has passed, however, and it might be a while before I revisit it.</p><p>Thank you to <a href="https://www.linkedin.com/in/markbulling/">Mark Bulling</a> for taking me through his pragmatic, realist approach to vibe coding. It was the perfect corrective to all the evangelistic stuff I&#8217;m seeing online. Perhaps more on this next month.</p><p>A truly weird variant of the synthetic respondent idea appeared in the <a href="https://www.thenewsagents.co.uk/article/would-you-pay-to-talk-to-your-dead-relatives-5Hjd98d_2/">Newsagents </a>this month. &#8220;Reflekta, allows people to create digital versions of deceased relatives by feeding the system memories, text, and voice recordings, enabling ongoing conversations for a monthly subscription fee.&#8221;  This is no more your grandad than the synthetic panellist is a billionaire tech bro. But it&#8217;s a lot sicker (Pet Sematary vibes) and feels more like a kidnapping. Pay or grandpa gets it (although he&#8217;s actually already had it.) Please stop.</p><p></p><div><hr></div><p>If you&#8217;ve enjoyed this newsletter or have any other feedback, please leave a comment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/p/glasseye-786/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.glasseye.ink/p/glasseye-786/comments"><span>Leave a comment</span></a></p>]]></content:encoded></item><item><title><![CDATA[Glasseye]]></title><description><![CDATA[Issue 15: July 2025]]></description><link>https://www.glasseye.ink/p/glasseye-7da</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-7da</guid><pubDate>Tue, 29 Jul 2025 08:48:14 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/fee27a89-a2dc-404f-86ab-37c084639531_1475x830.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this month&#8217;s issue: </p><ul><li><p>As the government announces that it is considering using machine learning to estimate the age of asylum seekers, <strong><a href="https://glasseye.substack.com/i/169293401/the-dunghill">the dunghill</a> </strong>calls for transparency about trade-offs.</p></li><li><p><strong><a href="https://glasseye.substack.com/i/169293401/semi-supervised">Semi-supervised</a></strong> talks up the virtues of a good old-fashioned analogy.</p></li><li><p>We take a look at some of the beautiful, extravagant, but ultimately doomed attempts to communicate the inner workings of AI in <strong><a href="https://glasseye.substack.com/i/169293401/the-white-stuff">the white stuff</a>.</strong></p></li></ul><p>Plus more <strong>synthetic respondent lunacy</strong>, my continuing adventures in <strong>Rust,</strong> and yet another <strong>concept diagram</strong>.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aMhN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105008,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>Semi-supervised</h2><p>A final, for now, tip for solving complex problems in data science. I don't have a name for this technique, except perhaps &#8220;domain-switching&#8221;, or &#8220;working with an analogy&#8221;. And anyway, it would be rather presumptuous to name it, since it's as old as the hills. Nevertheless, it is rarely identified explicitly; and I have yet to see its virtues spelt out in a way that does it justice. I'm talking about the following process: faced with a difficult problem - one with many moving parts, full of unknowns and uncertainties -  we identify the equivalent problem in a completely different domain and try to solve it there. </p><p>An obvious example is the transfer of a business problem to its equivalent in medicine: customers become patients, marketing campaigns become medical trials, behaviours become symptoms, etc. We are encouraged in this direction because so much of statistics was originally developed to solve medical problems, and so the language of treatment,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> trials and control suggests this possibility. Traditional statistics hints at many other potentially fruitful problem transfers: Games (guessing games, card games, games with dice, strategy games) are an ever-useful domain in which to recast your problem. The probabilist&#8217;s urn full of coloured pebbles will help ground many a mind-bending probability scenario. I often shift my problems to idealised laboratories or to fields of crops (a hangover from 50s stats textbooks). I have others that are a bit more unusual: cookery, robots, space probes, village shops, plagues. </p><p>But why does it work? What&#8217;s in an analogy? I think at least four useful things happen when you switch domain:</p><ol><li><p>First, it forces you to think about which features of the real world are important for solving the problem, since these are the features that will need an equivalent in the new domain. Using the language of <a href="https://glasseye.substack.com/i/151934968/semi-supervised">a previous post</a>, it forces you to sort out your ontology.</p></li><li><p>Second, it gets your thinking out of a rut. Your previous attempts to solve the problem in the original domain have been hampered by assumptions that you didn&#8217;t know you were making but which show up as optional in the new domain. Plus the analogous objects in the new domain may have ways of interacting which weren&#8217;t at all obvious in the old one. Even the differences between the two domains can be enlightening. Perhaps you are thinking of customer subscriptions as though they were human lifespans (to make use of survival models from medicine and insurance), but think carefully: a customer can disappear for a while and then resubscribe. Does your survival model handle resurrections?</p></li><li><p>Third, it takes you towards an understanding of your problem in the abstract but without leaving behind the concrete. Perhaps your problem is hard because it involves some tricky features: feedback loops, an exploding number of dimensions, counterintuitive concepts from probability, to name just a few. Stepping straight into such difficult terrain, you can easily get lost, but by considering the problem first in a new domain, you can start to understand these abstractions as the things that the two scenarios have in common.</p></li><li><p>Finally, it is invaluable for explaining ideas and for joint problem-solving. Take the situation I described in <a href="https://glasseye.substack.com/i/166609472/the-dunghill">last month&#8217;s dunghill </a>-  in which you are accused of overthinking a problem. The frustrated client cannot see the issue you are raising, probably because of one of you is making an undeclared assumption. When the problem is transferred to another domain, not only is it neutral territory (so everyone can calm down a bit!), but both of you are forced to explain what you assumed was obvious, as you spell out what the problem now looks like.</p></li></ol><p>Of course the topic of the hour is problem-solving with large language models, and in particular explaining where we think they will work, and where not, and why. I&#8217;m still working on alternative domains for that one - any suggestions are most welcome.</p><div><hr></div><p>Please do send me your questions and work dilemmas. You can <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jtwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The white stuff</h2><p>Not your conventional white papers this month, but rather two very similar and equally beautiful attempts to go beyond paper and explore the interactive possibilities of the browser. <em><a href="https://distill.pub/">Distil</a></em> was a short-lived, peer-reviewed online journal &#8220;founded as an adapter between traditional and online scientific publishing&#8221;. Eventually, the burden of producing these stunning interactive articles proved too much, and they shut down in July 2021. The droplet logo now looks more like a teardrop, and the <a href="https://distill.pub/2021/distill-hiatus/">farewell post</a> is very sad. The articles are still there though and are well worth exploring. I particularly enjoyed <em><a href="https://distill.pub/2019/visual-exploration-gaussian-processes/">A Visual Exploration of Gaussian Processes</a>.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!S7xU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b12532-4461-463d-9678-048defda1708_1104x1116.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!S7xU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b12532-4461-463d-9678-048defda1708_1104x1116.png 424w, https://substackcdn.com/image/fetch/$s_!S7xU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b12532-4461-463d-9678-048defda1708_1104x1116.png 848w, https://substackcdn.com/image/fetch/$s_!S7xU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b12532-4461-463d-9678-048defda1708_1104x1116.png 1272w, https://substackcdn.com/image/fetch/$s_!S7xU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b12532-4461-463d-9678-048defda1708_1104x1116.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!S7xU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b12532-4461-463d-9678-048defda1708_1104x1116.png" width="416" height="420.5217391304348" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/68b12532-4461-463d-9678-048defda1708_1104x1116.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1116,&quot;width&quot;:1104,&quot;resizeWidth&quot;:416,&quot;bytes&quot;:153878,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/169293401?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b12532-4461-463d-9678-048defda1708_1104x1116.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!S7xU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b12532-4461-463d-9678-048defda1708_1104x1116.png 424w, https://substackcdn.com/image/fetch/$s_!S7xU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b12532-4461-463d-9678-048defda1708_1104x1116.png 848w, https://substackcdn.com/image/fetch/$s_!S7xU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b12532-4461-463d-9678-048defda1708_1104x1116.png 1272w, https://substackcdn.com/image/fetch/$s_!S7xU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68b12532-4461-463d-9678-048defda1708_1104x1116.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Pretty interesting - an example of Pair&#8217;s explorables</figcaption></figure></div><p>Still going, probably because of infinite funding, are the <a href="https://pair.withgoogle.com/explorables/">explorables</a> produced by Pair, a collaborative team of developers and designers within Google. These are, I think, the same people who produced my all-time favourite: <a href="https://playground.tensorflow.org/#activation=tanh&amp;batchSize=10&amp;dataset=circle&amp;regDataset=reg-plane&amp;learningRate=0.03&amp;regularizationRate=0&amp;noise=0&amp;networkShape=4,2&amp;seed=0.54044&amp;showTestData=false&amp;discretize=false&amp;percTrainData=50&amp;x=true&amp;y=true&amp;xTimesY=false&amp;xSquared=false&amp;ySquared=false&amp;cosX=false&amp;sinX=false&amp;cosY=false&amp;sinY=false&amp;collectStats=false&amp;problem=classification&amp;initZero=false&amp;hideText=false">the neural network playground</a>.  (I honestly believe you could replace a day's training on deep learning with a couple of hours alone with this visualisation.) Again, some of the articles are old (by which I mean three or four years!), but this hardly matters when the last five years have been about scale. I like <a href="https://pair.withgoogle.com/explorables/fill-in-the-blank/">this one</a> in particular.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The dunghill</h2><p>It was reported in <a href="https://www.theguardian.com/uk-news/2025/jul/22/uk-border-officials-to-use-ai-to-verify-ages-of-child-asylum-seekers">The Guardian</a> last week that the government is considering using an AI (by which it means the kind of algorithm that for decades went by the more modest name of &#8216;machine learning classifier&#8217;) to verify the ages of child asylum seekers. Now, I don't know if this is a good idea, but what I do know - since it is almost inevitable - is that the solution will be mis-sold on the strength of its overall accuracy. How do I know this? </p><p>The proposed solution, says the immigration minister, Angela Eagle, will involve an algorithm &#8220;trained on millions of images where an individual&#8217;s age is verifiable&#8221;. The resulting &#8220;facial age estimation&#8221; tool will then be used in borderline cases to predict whether an asylum seeker is under 18. If this is the case, then there are two ways in which this classifier could get things wrong: it could classify an individual as a child (i.e. as under 18) when they are not (a false positive); or it could fail to classify an individual as a child when they are (a false negative). The two errors have very different consequences (or costs, as we would say in the machine learning world). In the first case, a person might undeservedly receive the treatment reserved for an unaccompanied minor (the expense of providing foster care, education and safe-guarding for an unaccompanied minor is, I understand, many times the cost of housing an adult) and contributing, in the long run, to the erosion of trust in the asylum system.  In the second case, the state will have failed in its duty to protect a vulnerable child. These two types of error are related.  For any given classifier, we can minimise the number of false positives but only at the expense of creating more false negatives. In our case, we can set the &#8220;facial age&#8221; classifier so that more of those falsely claiming to be children are identified, but only at the cost of rejecting a greater number of genuine claims.</p><p>Now comes the part that will surprise most people who do not work in machine learning. The threshold for this tradeoff is almost always set subjectively, during the training of the classifier, as the desired balance between precision (measuring the number of false positives) and recall (measuring the number of false negatives). This means that someone, somewhere, will need to decide how to balance the harm caused to a child misidentified as an adult against the cost incurred when one person abuses the asylum system -an unenviable task for anyone with a conscience<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>, and one that is both political and likely to be made under pressure to deliver on promises or contracts.</p><p>Of course we wouldn&#8217;t have to trade off false positives and false negatives at all if our classifier were perfect, and the name of the game is to improve classifiers so that less of a trade-off needs to be made. But in almost all scenarios, a perfect classifier is not going to happen, since the decision-making environment is, in the language of a <a href="https://glasseye.substack.com/i/159738609/semi-supervised">previous post</a>, stochastic and partially observable.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> Trade-offs cannot be eliminated by just working harder. And this is obviously true in our case: a person&#8217;s face is only part of the information needed to work out their age, and presumably quite an unreliable part at that (would extreme trauma not prematurely age a face?) No amount of training and tinkering with the algorithm is going to change this.</p><p>And so the question is: will anyone go to the trouble of explaining the above to all those charities, government departments, and ministers who have a stake in the asylum process, let alone to the general public? Or will they do what happens almost always in the business world - simply present the total number of errors (false positives and negatives) as a percentage of all cases and call its complement <em>accuracy</em>? Worst of all, and I hope this would never happen, might they present the classifier&#8217;s success at minimising the false positives (in catching the bad guys) as the whole story? In the last two scenarios, the trade-off, as well as its subjective and possibly political nature, has been successfully buried. </p><p>This is what I meant when I said that I was certain that the &#8220;facial age&#8221; classifier would be mis-sold on the strength of its overall accuracy. I meant that the false-positive, false-negative trade-off will rarely feature in discussions about the classifier&#8217;s efficacy. Instead everyone will talk about its accuracy - a single metric -  as though it were the most unproblematic of concepts. This is based on several decades of accumulated pessimism. Once again it would be nice if I were proved wrong.</p><p>If you have some particularly noxious bullshit that you would like to share then I&#8217;d love to hear from you.  <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><h2>From Coppelia</h2><p>I&#8217;ve been trying to forget about synthetic respondents and was hoping that <a href="https://glasseye.substack.com/i/166609472/the-dunghill">last month&#8217;s dunghill</a> would release me. But it&#8217;s difficult when readers keep sending me such jaw-dropping examples. <a href="https://uk.themedialeader.com/a-focus-group-of-synths-just-blew-my-mind/">This one</a>, passed to me by an brilliant data scientist working in the world of advertising, is a beauty, and has to be read to be believed. In response, it&#8217;s hard to know how to say this any more clearly: The <em>notoriously difficult-to-find high-net-worth audience</em> are not spending their precious time blogging - i.e. creating training data for LLMs -  for the same reasons they are not attending agency focus groups. But I can tell you who is <em>right now</em> filling the internet with talk about difficult-to-find high-net-worth individuals&#8230; think about it! </p><p>The same person who alerted me to this article also supplied a nice diagram for this process:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ykcC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce772a9-b5d1-4e0d-b91e-e6fed38afedb_1094x928.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ykcC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce772a9-b5d1-4e0d-b91e-e6fed38afedb_1094x928.png 424w, https://substackcdn.com/image/fetch/$s_!ykcC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce772a9-b5d1-4e0d-b91e-e6fed38afedb_1094x928.png 848w, https://substackcdn.com/image/fetch/$s_!ykcC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce772a9-b5d1-4e0d-b91e-e6fed38afedb_1094x928.png 1272w, https://substackcdn.com/image/fetch/$s_!ykcC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce772a9-b5d1-4e0d-b91e-e6fed38afedb_1094x928.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ykcC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce772a9-b5d1-4e0d-b91e-e6fed38afedb_1094x928.png" width="438" height="371.53930530164536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dce772a9-b5d1-4e0d-b91e-e6fed38afedb_1094x928.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:928,&quot;width&quot;:1094,&quot;resizeWidth&quot;:438,&quot;bytes&quot;:113497,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/169293401?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce772a9-b5d1-4e0d-b91e-e6fed38afedb_1094x928.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!ykcC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce772a9-b5d1-4e0d-b91e-e6fed38afedb_1094x928.png 424w, https://substackcdn.com/image/fetch/$s_!ykcC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce772a9-b5d1-4e0d-b91e-e6fed38afedb_1094x928.png 848w, https://substackcdn.com/image/fetch/$s_!ykcC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce772a9-b5d1-4e0d-b91e-e6fed38afedb_1094x928.png 1272w, https://substackcdn.com/image/fetch/$s_!ykcC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdce772a9-b5d1-4e0d-b91e-e6fed38afedb_1094x928.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>As another reader pointed out, this further plot twist - dystopia or utopia, depending on your point of view - was explored in an interesting article in Nature: <a href="https://www.nature.com/articles/s41586-024-07566-y">AI models collapse when trained on recursively generated data</a>.</p><div><hr></div><p>Meanwhile I&#8217;m still exploring Rust as a complementary language to Python for data science. If nothing else, its strict attention to memory management and error handling should make me a better overall programmer.  A promising direction is indicated by its interoperability (not a word I've used before), especially when it comes to Python. In other words, it's very easy to produce Python wrappers for Rust packages, which opens up the possibility of using Python for scripting and prototyping, while bracketing off modules that require speed and reliability for implementation Rust. I'll let you know. </p><p>In the meantime, here&#8217;s a concept diagram I recently produced for a client, explaining how Rust and Python differ as programming languages. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oCwI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a7dc7f4-ec97-44c1-bbd8-8c76ca7cb0be_1897x2134.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oCwI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a7dc7f4-ec97-44c1-bbd8-8c76ca7cb0be_1897x2134.png 424w, https://substackcdn.com/image/fetch/$s_!oCwI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a7dc7f4-ec97-44c1-bbd8-8c76ca7cb0be_1897x2134.png 848w, https://substackcdn.com/image/fetch/$s_!oCwI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a7dc7f4-ec97-44c1-bbd8-8c76ca7cb0be_1897x2134.png 1272w, https://substackcdn.com/image/fetch/$s_!oCwI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a7dc7f4-ec97-44c1-bbd8-8c76ca7cb0be_1897x2134.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oCwI!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a7dc7f4-ec97-44c1-bbd8-8c76ca7cb0be_1897x2134.png" width="920" height="1035" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a7dc7f4-ec97-44c1-bbd8-8c76ca7cb0be_1897x2134.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:1638,&quot;width&quot;:1456,&quot;resizeWidth&quot;:920,&quot;bytes&quot;:409488,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/169293401?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a7dc7f4-ec97-44c1-bbd8-8c76ca7cb0be_1897x2134.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oCwI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a7dc7f4-ec97-44c1-bbd8-8c76ca7cb0be_1897x2134.png 424w, https://substackcdn.com/image/fetch/$s_!oCwI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a7dc7f4-ec97-44c1-bbd8-8c76ca7cb0be_1897x2134.png 848w, https://substackcdn.com/image/fetch/$s_!oCwI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a7dc7f4-ec97-44c1-bbd8-8c76ca7cb0be_1897x2134.png 1272w, https://substackcdn.com/image/fetch/$s_!oCwI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a7dc7f4-ec97-44c1-bbd8-8c76ca7cb0be_1897x2134.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><div><hr></div><p>If you&#8217;ve enjoyed this newsletter or have any other feedback, please leave a comment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/p/glasseye-7da/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.glasseye.ink/p/glasseye-7da/comments"><span>Leave a comment</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Although I think perhaps &#8220;treatment&#8221; came from agricultural examples. </p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Incidentally, another argument against the automation of life-changing decisions is that a person making such a decision at least carries the burden of a conscience. </p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>And this is true not just of machine leaning classifiers, but also of all the government institutions and processes that are in the business of making what are inevitably flawed classifications. These systems can be improved but never to the point of eliminating a trade off. Despite this we are always demanding that both types of error be brought down to zero- as though it were possible to catch every plotting terrorist without incarcerating almost the entire population, or prevent every violent attack by a released prisoner without locking the entire prison population up for life, or avoid every horrific example of child abuse without breaking up families on the slightest suspicion.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Glasseye ]]></title><description><![CDATA[Issue 14: June 2025]]></description><link>https://www.glasseye.ink/p/glasseye-088</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-088</guid><pubDate>Wed, 25 Jun 2025 13:26:55 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/dbec6802-0b8d-4a13-a913-39f5ae30c3a5_1792x1008.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this month&#8217;s issue: </p><ul><li><p><strong><a href="https://glasseye.substack.com/i/166609472/semi-supervised">Semi-supervised</a></strong> takes a casual approach to the causal by proposing some new conventions for causal diagrams. </p></li><li><p>The simple pleasures of a big fat textbook in <strong><a href="https://glasseye.substack.com/i/166609472/the-white-stuff">the white stuff</a></strong>.</p></li><li><p><strong><a href="https://glasseye.substack.com/i/166609472/the-dunghill">The dunghill </a></strong>champions the over-thinker.</p></li></ul><p>Plus first steps into Rust, the RSS makes a smart move, and how I&#8217;m talking more than I&#8217;m typing.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aMhN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105008,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>Semi-supervised</h2><p>I'm going to share with you my own take on causality diagrams. These are not the hardcore <a href="https://en.wikipedia.org/wiki/Directed_acyclic_graph">DAG</a> diagrams used by Judea Pearl and others to plan causal experiments. Although they might lead in that direction. No, these are rough and ready diagrams designed to simplify and clarify problems at the early stages.  </p><p>They were born partly out of frustration: I found that most textbook examples of causal diagrams were for simple, straightforward cases where the nodes represent discrete events that happen in sequence. The &#8220;smoke, fire alarm&#8221; example is perfect for explaining causality concepts, but quite unrepresentative of some very typical causal chains. For example, the weather clearly affects many aspects of human behaviour, but - except for in the canonical rain/umbrella example - the effect is usually ongoing rather than sequential. While the sun is shining, I continue my walk in the park.</p><p>So this is one thing I&#8217;d like to recognise in a causal diagram: whether a causal effect is sequential or ongoing. Another thing is whether the cause is a necessary condition, a sufficient condition, both<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> or neither (which in most cases means it is an insufficient, but necessary part of an unnecessary but sufficient condition - <a href="https://simple.wikipedia.org/wiki/INUS_condition">INUS</a> for short. A small headache but worth looking up!) For general problem solving, it is useful to consider whether one thing <em>must</em> happen to produce an effect, just as it is useful to consider whether it is sufficient by itself to produce that effect.</p><p>Lastly, since these causal diagrams are simply aids to thinking, and not inputs into some further process, there&#8217;s no reason why they need to be either directed or acyclic, so I&#8217;m happy to have arrows going both ways and edges that form loops.</p><p>So the conventions I&#8217;ve adopted for my causal graphs are:</p><ul><li><p>Dotted lines for an ongoing effect, full lines for a sequential effect</p></li><li><p>Tail arrowheads that denote the type of condition:</p><ul><li><p>Circle = necessary</p></li><li><p>Square = sufficient</p></li><li><p>Diamond = necessary and sufficient</p></li><li><p>None = neither necessary nor sufficient </p></li></ul></li></ul><p>Here is an example showing the causes of product purchase. It&#8217;s somewhat simplified and a bit generic as it&#8217;s part of some Coppelia training material (incidentally, if you or your company are interested in training, then do get in touch) but it does the job, that is it brings out the complexity of the problem.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fc6e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89254467-530c-4cd8-8f10-71924a488a8c_2966x1208.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fc6e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89254467-530c-4cd8-8f10-71924a488a8c_2966x1208.png 424w, https://substackcdn.com/image/fetch/$s_!fc6e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89254467-530c-4cd8-8f10-71924a488a8c_2966x1208.png 848w, https://substackcdn.com/image/fetch/$s_!fc6e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89254467-530c-4cd8-8f10-71924a488a8c_2966x1208.png 1272w, https://substackcdn.com/image/fetch/$s_!fc6e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89254467-530c-4cd8-8f10-71924a488a8c_2966x1208.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fc6e!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89254467-530c-4cd8-8f10-71924a488a8c_2966x1208.png" width="1200" height="488.7362637362637" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89254467-530c-4cd8-8f10-71924a488a8c_2966x1208.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:593,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:214395,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/166609472?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89254467-530c-4cd8-8f10-71924a488a8c_2966x1208.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fc6e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89254467-530c-4cd8-8f10-71924a488a8c_2966x1208.png 424w, https://substackcdn.com/image/fetch/$s_!fc6e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89254467-530c-4cd8-8f10-71924a488a8c_2966x1208.png 848w, https://substackcdn.com/image/fetch/$s_!fc6e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89254467-530c-4cd8-8f10-71924a488a8c_2966x1208.png 1272w, https://substackcdn.com/image/fetch/$s_!fc6e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89254467-530c-4cd8-8f10-71924a488a8c_2966x1208.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Note, I&#8217;ve resorted to Graphviz for this diagram as Mermaid isn&#8217;t quite up to the level of customisation needed. Code can be found <a href="https://gist.github.com/coppeliaMLA/12e5c14e43ab188e64c04ff97b5a0402">here</a>. Dump it in something like <a href="https://dreampuf.github.io/GraphvizOnline">this</a> to play with it.</p><p>Finally, some tips on construction:</p><ol><li><p>Check for causality: Deciding whether or not a causal relationship exists between two nodes can be quite challenging, especially when the causal relationship is ongoing. My trick is to imagine that I&#8217;m a time-travelling, omnipotent being who can rewind time, tinker with reality and and then re-run things to see how they would have turned out. According to the counterfactual definition of causality, if my change to A makes no difference to B, then A has no causal effect on B. This seems to work too for ongoing causes like demographic attributes: as an omnipotent being, I can swoop in and substitute an older population for a younger one while holding everything else more or less constant.</p></li><li><p>Make pragmatic simplifications: the goal is to create a general picture of the causal relationships that will help you think through a problem. Not every detail is necessary. In particular you can collapse nodes (I could have added a separate node for gender, age, income etc in the graph above but that would have simply created duplicate causal pathways without adding anything useful to the picture) and collapse chains (I could have spelt out all the ways in which a person&#8217;s lifestyle effects the probability that a person is exposed to an advert but the result would have been an unhelpful spaghetti).</p></li><li><p>Don&#8217;t sweat the edge cases: Yes, strictly speaking you can be exposed to an advert and remain mercifully unaware of the product, so yes, strictly speaking, &#8220;views advert&#8221; is not a <em>sufficient</em> cause for &#8220;awareness of product&#8221;. But in the vast majority of cases, if the product is directly advertised, it is sufficient. Usually that&#8217;s good enough for me.</p></li></ol><p>Anyway, the diagram and the notation are works in progress. If you have any thoughts, criticisms, or suggestions for improvement, I would love to hear them!</p><p>Please do send me your questions and work dilemmas. You can <a href="https://substack.com/@glasseye">DM me</a> on Substack or email me at simon@coppelia.io.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jtwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The white stuff</h2><p>There's something particularly satisfying about reading a general textbook on a topic for which you already have a deep but very patchy knowledge. For example, this month I've started reading <em><a href="https://www.amazon.co.uk/Learning-bash-Shell-Programming-Nutshell/dp/0596009658">Learning the Bash Shell</a> </em>by Cameron Newham<em>.</em> Now if I hadn&#8217;t spent twenty-five years hacking my way through shell scripts, this would have been an ordeal. But, as it is, it's full of surprisingly pleasurable &#8220;Oh that&#8217;s why&#8221; moments. And, having sunk so much time into this topic (through no fault of my own), I can&#8217;t but help care about the content. </p><p>It seems to me that the value of a broad, discipline-level textbook is even greater now that we can go so deep, so quickly online, without ever seeing how the pieces fit together. The limited physical nature of the textbook is also important. You just can&#8217;t go down a rabbit hole. It forces you into a breadth-first rather than a depth-first search. And a broad view of a discipline inevitably helps with impostor syndrome. We are naturally less paranoid once we know the terrain. </p><p>So with that in mind, here are three of my favourites. I think of them as a sort of polyfilla that, when spread evenly, will fill in the gaps in your knowledge.</p><ul><li><p><em><a href="https://www.amazon.co.uk/Computer-Science-Overview-Glenn-Brookshear/dp/1292263423/ref=sr_1_1?crid=2TGYWADZ424YD&amp;dib=eyJ2IjoiMSJ9.fHs8rAFxYLcFQecN3Cri640yVn_rKbf9h2RWiU06Q1l0lc2IpukTakSk1D5bHYg0U4gJtiP6uQyLCS_9q3KNEk_FzR5l3oYfMTtUQkwqhnMs_10wiYHhvn3ucPcYi2fOamS2bfBowzNgZK4RuBO0DBp4RcJd1JcRid18hv0p8YckeBSyW6Rd1NnEIvtzEom5pIDCpbgyba1mJVlS8dI9WXAt8vHnM-s31K6DW6JYDP0.hXqcKFgIwMaGl2JTmAqabEasqvScCgHh-LCXBdd_vj4&amp;dib_tag=se&amp;keywords=computer+science+an+overview&amp;qid=1750854691&amp;s=books&amp;sprefix=computer+science+an+overview%2Cstripbooks%2C87&amp;sr=1-1&amp;ufe=app_do%3Aamzn1.fos.95fd378e-6299-4723-b1f1-3952ffba15af">Computer Science: An Overview</a></em> by Glenn Brookshear  - Broad and beautiful, it saved me when I landed in a proper IT department.</p></li><li><p><em><a href="https://www.amazon.co.uk/Economics-13e-David-Begg/dp/1526850230/ref=sr_1_1?crid=H0DPTADVY3C3&amp;dib=eyJ2IjoiMSJ9.ehUkb1OxDjtsisFK65CGwYSgAOAH60Nu4iJVDb3B9AssSvimWTyJ3KEturQytKYGjH6f1CTy6T85KolRHaMpgoKFU9sv5wj5_BTKbxmVJW3V1x8sC1oJ11z0oZ3dcgJ0lW9-NGR30I8ld2w_TnwE0JupCcfKgTtHCcozAL85pvrjUk38j5lZfE4ff7Ywa4bEtPDT6Pjfp1JWy9kuNauBKYxjtARWR5HmqLtH6xHRUHI.rQd1L2gu4mPuUopDDjfjl66Udez5-WZC7EFD_qU74og&amp;dib_tag=se&amp;keywords=economics+begg&amp;qid=1750854804&amp;s=books&amp;sprefix=economics+begg%2Cstripbooks%2C73&amp;sr=1-1&amp;ufe=app_do%3Aamzn1.fos.95fd378e-6299-4723-b1f1-3952ffba15af">Economics</a></em> by David Begg - Stopped me from feeling like a complete fraud in the company of economists.</p></li><li><p><em><a href="https://www.amazon.co.uk/Artificial-Intelligence-Modern-Approach-Global/dp/1292401133/ref=sr_1_1?crid=2P1E9YYZSZIU9&amp;dib=eyJ2IjoiMSJ9.F4BJEvae4dekAwkEnttBiJhOTrJV9FCCQABlF-h3WQx2lsgGpOv05GbxtIhw_JiMdu9HEdib-YQ4ZFC_NQUF2yrFHivui1rIlB0ErqPsD0y4eoYWBwIb_hqVFZ3pUDUSTW3ij_pyUgnTFvxiCJ4pFFqLXXyGLffQnkdLWvW1Lvs.api5FoLscKYrvfrdl3PuQmTK1CqV6OlltvdLuAseD7M&amp;dib_tag=se&amp;keywords=ai+a+modern+approach+4th+edition&amp;qid=1750854997&amp;s=books&amp;sprefix=ai+a+moder%2Cstripbooks%2C90&amp;sr=1-1">Artificial Intelligence: A Modern Approach</a></em> by Russell and Norvig - Mentioned so often before on this substack, but I'll never tire of promoting it as the perfect antidote to a narrow focus on LLMs. </p></li></ul><p>Although it's hardly work-related, I've also got to mention <em><a href="https://www.amazon.co.uk/Biology-Global-Approach-Neil-Campbell/dp/1292341637/ref=asc_df_1292341637?mcid=3fb232e4faac3398a187cf0971122cca&amp;hvocijid=6499243203533686041-1292341637-&amp;hvexpln=74&amp;tag=googshopuk-21&amp;linkCode=df0&amp;hvadid=696285193871&amp;hvpos=&amp;hvnetw=g&amp;hvrand=6499243203533686041&amp;hvpone=&amp;hvptwo=&amp;hvqmt=&amp;hvdev=c&amp;hvdvcmdl=&amp;hvlocint=&amp;hvlocphy=9044974&amp;hvtargid=pla-2281435176698&amp;psc=1&amp;gad_source=1">Biology: A Global Approach </a></em>by Neil Campbell et al, since it is one of the most awe-inspiring textbooks of all time, covering modern biology from atoms to the human mind. It's also excellent for raising your monitor. </p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The dunghill</h2><p>Certain phrases still trigger early career PTSD. A particular horror is <em>&#8220;You&#8217;re overthinking it.&#8221; </em>I wince when I hear it, especially delivered in a pompous, strident tone by someone who has not thought about <em>it<strong> </strong></em>at all. Let me break down the reasons why this particular phrase bugs me so.</p><p>First, there's a hidden premise: All problems and ideas can be reduced with enough worldly brilliance to something simple and pithy. If they're not in this final state, then there's still work to be done. Go away and try again. The irreducibly complex simply does not exist in the practical, no-nonsense world of the executive.</p><p>Second, there is an implied value judgement: It relies on the stereotype of the befuddled nerd who can't see the wood for the trees. <em>You&#8217;re overthinking it</em> is the slap which wakes them from their academic, that is to say, largely useless, reveries.</p><p>Third, it's a power move: The unsaid part is, &#8220;There's nothing I don't know that's worth understanding. I have no intention of meeting you in the middle. Play it back to me in my language.&#8221;</p><p>Fourth, it's absurd: You were hired to overthink it. It's your job to consider all the various ways in which something might not be right, all the little things that might go wrong with catastrophic results. You were recruited on the strength of years of overthinking. Yes, solutions can be simple, but problems are usually complex. That's why they are problems. </p><p>A more charitable interpretation of the situation is that "you're overthinking it" is simply shorthand for &#8220;You're giving me too many details. I'm only interested in the conclusions, the parts that affect my decision&#8221;. But that's not what &#8220;overthinking&#8221; means. If that was the intent, then I offer this more respectful alternative:</p><blockquote><p>Please continue to think about this in great depth, and then present me with your conclusions&#8212;and, if I should so ask, your methods. </p></blockquote><p>That would be nice.</p><p>If you have some particularly noxious bullshit that you would like to share then I&#8217;d love to hear from you.  <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><h2>From Coppelia</h2><p>I&#8217;ve started to learn Rust - I can&#8217;t say it&#8217;s motivated by anything more than curiosity (at the zeal of the Rustaceans), awe at the speed of packages like polars and uv,  and a growing dissatisfaction with the messiness of Python. I&#8217;ll let you know how I get on.</p><p>In <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Piers Stobbs&quot;,&quot;id&quot;:132746675,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22d28bd1-e19b-4031-bd1a-6184cf5fa05c_800x800.jpeg&quot;,&quot;uuid&quot;:&quot;8503c31f-cd10-45ac-bb1d-e93e793f7163&quot;}" data-component-name="MentionToDOM"></span> excellent <a href="https://rssdsaisection.substack.com/">substack</a> (subscribe if you haven&#8217;t already). I read that the Royal Statistical Society has launched a peer-reviewed data science and AI journal. This feels like the right direction for the RSS. They have a reputation for rigour, and they can bring that to the table.</p><p>Meanwhile on my to-do list for GenAI are: </p><ul><li><p>Check out <a href="https://firebase.google.com/?gad_source=1&amp;gad_campaignid=12300214754&amp;gbraid=0AAAAADpUDOhVc5xUBEFv-vxb6hXn42BbD&amp;gclid=CjwKCAjwvO7CBhAqEiwA9q2YJeVZWNeA0qAfFWnCTKSQ3hPPZw7iz4mn1MNsw0lyKrYPE-RcN-M2pRoCIkAQAvD_BwE&amp;gclsrc=aw.ds">Firebase</a> (thanks to <a href="https://www.linkedin.com/in/wendymartinez-96/">Wendy Martinez</a> for the nudge)</p></li><li><p>Read up on <a href="https://storage.googleapis.com/deepmind-media/DeepMind.com/Blog/alphaevolve-a-gemini-powered-coding-agent-for-designing-advanced-algorithms/AlphaEvolve.pdf">AlphaEvolve</a> (evolutionary algorithms and LLMs are intuitively a good match).</p></li></ul><p>Finally, last month I mentioned <a href="https://willowvoice.com/">Willow</a>, an AI-based dictation tool. I'm taken aback by just how much this has changed my working life. I&#8217;d say more than half my text output is now dictated. Thanks again to <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Mark Bulling&quot;,&quot;id&quot;:17246064,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/06a135af-bcc3-42c9-ac98-b9d811908c2c_1282x1564.jpeg&quot;,&quot;uuid&quot;:&quot;5a5dd429-fa1b-4ae4-8847-c3f850488fcb&quot;}" data-component-name="MentionToDOM"></span>!</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Njkg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd49580bf-b77e-4512-93ea-946a5516b3cb_1792x1008.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Njkg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd49580bf-b77e-4512-93ea-946a5516b3cb_1792x1008.png 424w, https://substackcdn.com/image/fetch/$s_!Njkg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd49580bf-b77e-4512-93ea-946a5516b3cb_1792x1008.png 848w, https://substackcdn.com/image/fetch/$s_!Njkg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd49580bf-b77e-4512-93ea-946a5516b3cb_1792x1008.png 1272w, https://substackcdn.com/image/fetch/$s_!Njkg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd49580bf-b77e-4512-93ea-946a5516b3cb_1792x1008.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Njkg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd49580bf-b77e-4512-93ea-946a5516b3cb_1792x1008.png" width="255" height="143.4375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d49580bf-b77e-4512-93ea-946a5516b3cb_1792x1008.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:255,&quot;bytes&quot;:1246426,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/166609472?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd49580bf-b77e-4512-93ea-946a5516b3cb_1792x1008.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Njkg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd49580bf-b77e-4512-93ea-946a5516b3cb_1792x1008.png 424w, https://substackcdn.com/image/fetch/$s_!Njkg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd49580bf-b77e-4512-93ea-946a5516b3cb_1792x1008.png 848w, https://substackcdn.com/image/fetch/$s_!Njkg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd49580bf-b77e-4512-93ea-946a5516b3cb_1792x1008.png 1272w, https://substackcdn.com/image/fetch/$s_!Njkg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd49580bf-b77e-4512-93ea-946a5516b3cb_1792x1008.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p><div><hr></div><p>If you&#8217;ve enjoyed this newsletter or have any other feedback, please leave a comment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/p/glasseye-088/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.glasseye.ink/p/glasseye-088/comments"><span>Leave a comment</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Rare, since if this is the case, then it's often best just to merge the nodes. </p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Glasseye]]></title><description><![CDATA[Issue 13: May 2025]]></description><link>https://www.glasseye.ink/p/glasseye-12e</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-12e</guid><pubDate>Tue, 27 May 2025 10:52:52 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c8ba535e-a2ac-4f32-b831-ca14fbf0d264_2760x1628.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this (first anniversary!) issue: </p><ul><li><p>The last word (maybe) on synthetic respondents in the now thoroughly deserved <strong><a href="https://glasseye.substack.com/i/164469245/the-dunghill">dunghill</a></strong><a href="https://glasseye.substack.com/i/164469245/the-dunghill">.</a></p></li><li><p><strong><a href="https://glasseye.substack.com/i/164469245/semi-supervised">Semi-supervised</a> </strong>invites you to consider a world where points are spaces and spaces points.</p></li><li><p>We investigate the old-school magic of directed graph layouts in <strong><a href="https://glasseye.substack.com/i/164469245/the-white-stuff">the white stuff</a></strong><a href="https://glasseye.substack.com/i/164469245/the-white-stuff">.</a></p></li></ul><p> Plus, how I broke up with <strong>conda</strong> over <strong>uv</strong>, and the brilliant but temperamental <strong>willow.</strong></p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aMhN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105008,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>Semi-supervised</h2><p>Back <a href="https://glasseye.substack.com/i/151934968/semi-supervised">in December, </a>I promised to use this space to provide you with tips for solving real - as opposed to textbook - problems. Over the last six months we&#8217;ve considered <a href="https://glasseye.substack.com/i/151934968/semi-supervised">ontologies</a>, <a href="https://glasseye.substack.com/i/154255908/semi-supervised">room-tidying</a>, <a href="https://glasseye.substack.com/i/156295648/semi-supervised">concept-mapping</a>, <a href="https://glasseye.substack.com/i/159738609/semi-supervised">feasibility</a> (via AI environments) and <a href="https://glasseye.substack.com/p/glasseye-5e6?open=false#%C2%A7semi-supervised">toy-problems</a>. We&#8217;re not out of steam yet. This month we are thinking about space, and points in space, and the point of points in space.</p><p>Points in space are of course the bread and butter of any statistician/data scientist. We cluster them, we rotate them, we separate them from one another, we fit lines, planes and hyperplanes to them. All the more reason, then, to give them careful consideration. And by that I do not mean delving deeply into the mathematics - that&#8217;s what the textbooks are for - I mean something much more basic and probably for that reason more often neglected: I mean thinking about what they represent in any one problem. </p><p>I feel all the more justified in this statement of the obvious now that the word of the moment is <em>embeddings</em>.  Embeddings are, after all, points in a space, and if we forget, or don&#8217;t care, what the space and the points mean, we'll get utterly lost. </p><p>But this is not about embeddings. It&#8217;s about the absolute basics, merely a reminder to ask yourselves the following: What in your <a href="https://glasseye.substack.com/i/151934968/semi-supervised">ontology</a> do the points represent&#8212;people, organisations, images, concepts, sounds? And how do you interpret the space between them?</p><p>Take as an example a scenario where points are customers in a space where the axes are attributes such as annual spend, number of purchases, age, gender, etc. The most immediate and intuitive interpretation of this space is to interpret nearness as similarity. But to make this work, variables must be scaled, and the correlation between variables accounted for.</p><p>All this is quite basic (although crucial and often forgotten in the rush to do something more exciting with the data). Less familiar, but rich in its problem-solving potential, is the possibility of flipping points and axes: that is, making the columns of your data set the points in a space defined by the rows. In the example given above, points are now customer attributes in a space where each axis is a customer. Nearness in this space, as long as the variables are standardised and mean-centred, means something like correlation. In fact, cosine similarity in this space is equivalent to correlation. Thinking in this more unusual space can lead to surprising insights into, for example, the workings of linear regression and the meaning of degrees of freedom.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><p>But from a practical perspective, this space-point flipping is more useful when the original variables (columns) share enough in common for a more distinct interpretation once they are recast as points (rows). To use the classic example, a dataset of viewers and movies watched, can be flipped from viewers in the movie-space to movies in the viewer space.</p><p>With enough practice you can learn to see every data set as two datasets. For example:</p><ul><li><p>A survey is a set of questions that can be plotted in a respondent space, as well as a set of respondents that can be plotted in a question space.</p></li><li><p>An image data set is a set of images that can be plotted in a pixel space as well as a set of pixels that can be plotted in an image space.</p></li><li><p>A document dataset is a set of n-grams that can be plotted in a document space as well as a set of documents that can be plotted in an n-gram space</p></li></ul><p>And of course these two spaces are really just the starting point. For various purposes each can be rotated, transformed or projected into spaces of lower or higher or even infinite dimensions. But none of this fancy stuff will be at all useful if you haven&#8217;t carefully thought through the meaning of point and space in the most basic of cases.</p><p>Please do send me your questions and work dilemmas. You can <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jtwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The white stuff</h2><p>I&#8217;ll admit to being slightly obsessed with the <a href="https://mermaid.js.org/">mermaid diagram</a> layout - feeding it with ever more complex graphs just to witness the beauty of the output. The magic, it turns out, is well documented in this classic paper from 1993: <a href="https://graphviz.org/documentation/TSE93.pdf">A Technique for Drawing Directed Graphs</a> by Gansner et al, which was the inspiration for both the dagre package (on which the mermaid layout is built) and the graph layout for GraphViz. It&#8217;s also an object lesson in problem solving: the problem is clearly defined; several competing aesthetic objectives are laid out; the task is broken down into four stages; and then each subtask is tackled by drawing on an impressive range of mathematical and algorithmic techniques (the network simplex algorithm, barycenter functions, splines, etc.).</p><p>Mermaid have just added an alternative to dagre: the ELK layout. It&#8217;s very pretty (see below), although I think I like it for trivial reasons (it&#8217;s easier to read the labels on the edges). The only relevant paper I could find was <a href="https://arxiv.org/pdf/2311.00533">The Eclipse Layout Kernel</a> by Domr&#246;s et al. It&#8217;s a little thin on detail. If anyone finds something more substantial, please let me know!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The dunghill</h2><p>I (almost) promise that this will be my last word on synthetic respondents. If I&#8217;m more strident now than I was <a href="https://glasseye.substack.com/i/146165448/synthetic-survey-respondents-a-revolution-in-research-methods-or-the-worst-idea-ever">ten months ago</a>, then this is partly because in July last year I did not really believe that people would fall for it. But it&#8217;s happening. Even the most absurd of use cases is gaining traction. As I pointed out in <a href="https://www.linkedin.com/posts/simonrapercoppelia_glasseye-activity-7323397070520791041-77Kk?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAADvAlEBQzBEHDlds90oaB8xg6p-IRwakag">this thread</a>, &#8220;in its most ludicrous form, the claim is that [synthetic respondents] can get you access to ultra high net worth individuals who otherwise would not answer your survey. Bear in mind that LLMs are trained on web data, and there's only one UHNWI I can think of who is weird enough to spend his time plastering the internet with his opinions&#8230; But the big worry is that where businesses go, governments follow. Do we really want government policy to be built on LLM mush derived from internet mush? And I worry that the patter about using synthetic respondents to replace hard-to-reach groups will be ultimately applied to hard-to-reach vulnerable groups.&#8221;</p><p>This comment prompted the accusation that I am a) some kind of market research reactionary who winces at the very thought of change, and b) someone with a vested interest in the status quo. I wrote a long reply to my accuser, which was completely ignored. I think it does a good job of summing up my argument, so here it is in full: </p><blockquote><p>Hi Tony, I am very sympathetic to your point about resistance to change. I admit that there is a great deal of inertia in the market research sector. I'm not sure if by "people" you mean me. Hopefully not, but anyway, I can put your mind at rest here. I don't work in market research, and market research companies only form a very small fraction of my clients (and those that are my clients tend to be pretty forward-looking). So there's no vested interest here, and I think I can say the same for most of the respondents so far on this thread.  If there's an interest, then it's the one I stated above. I worry that bad decisions will be made in important areas (government policy, medicine, etc) because decision makers have been blinded by the hype surrounding AI.</p><p>I have to push back also on the idea that my objection to synthetic respondents is based on "nothing but gut feel".  Here's my argument which you are welcome to pick holes in. </p><p>To compare like with like, assume that we are comparing good-quality old-school research with a conscientious use of synthetic respondents. For the first we have some theory (central limit theorem, etc.) that connects the sample to the population, and, provided some assumptions are met, we know how wrong we might be when making estimates based on the sample. We also have a pretty clear idea of where it falls short (biased samples, multiple comparisons etc). </p><p>I don't think anyone would claim that there is this kind of theoretical understanding when it comes to synthetic respondents. We don't know how the training data relates to the population (other than the fact that, as web data, the population created it), and we know very little about the incredibly complex rules that have been learnt by the model and which apply when a response is generated. </p><p>But potentially this doesn't matter if, as you say, we take an empirical approach to validating the process of synthetic respondents: i.e. we re-run existing human-based surveys on the equivalent synthetic respondents and compare the two. If, after many such comparisons, we find that, say, 80% of the time the synthetic respondents produce near enough the same results then we can say to someone using synthetic respondents that the chances are that their results are also a good match. </p><p>Against this I am arguing (<a href="https://glasseye.substack.com/i/161169149/the-dunghill">here</a>) that what is valuable in research is the information you discover that is surprising; something that a competitor is unaware of since it is not common sense, or something that would force you to change business processes, or treatment or policy because it goes against what everyone has always assumed. So for me a good test of synthetic respondents would be to take some existing research, ask the consumers of that research to flag the findings that they did not expect, and which are significant for them, and then look at whether these patterns are also found among the synthetic respondents. So if there's any "gut feel" going on, it&#8217;s just that I don't think LLMs are going to be very good when it comes to this test. </p><p>But anyway, I am offering a method for falsifying my gut feel, so if synthetic respondents turn out to be consistently good at replicating valuable findings, I'll be happy to admit I'm wrong! Lastly, I'd say we've got good a priori reasons for asking for this level of validation. We can easily think up situations where synthetic respondents could be formed from extremely inappropriate content. In the trauma scenario, which was discussed in the thread above, the material might be violent fantasies rather than testimonials. And if clients have the self-discipline to treat the results as "directional" and the information is consequential, they will need to validate it using a sample of real people, which gets us back to where we started.</p></blockquote><p>Still waiting to hear from Tony.</p><p>If you have some particularly noxious bullshit that you would like to share then I&#8217;d love to hear from you.  <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><h2>From Coppelia</h2><p>This month I have, like many others, fallen for <a href="https://github.com/astral-sh/uv">uv</a><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>, the new rust-based Python package manager.  It&#8217;s like a hot knife through butter. So after a relationship of more than ten years, I&#8217;m breaking with conda. (If I&#8217;m honest it&#8217;s been over for some time.) </p><p>This prompted a Mermaid <a href="https://glasseye.substack.com/p/glasseye-e42?open=false#%C2%A7semi-supervised">concept map</a> (using the new ELK layout discussed above) on the topic of Python package managers, which I'm sharing here in case it's useful. </p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JfSa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ae77c9-5c5b-4478-a65f-4fd9b1cab74c_3178x1372.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JfSa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ae77c9-5c5b-4478-a65f-4fd9b1cab74c_3178x1372.png 424w, https://substackcdn.com/image/fetch/$s_!JfSa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ae77c9-5c5b-4478-a65f-4fd9b1cab74c_3178x1372.png 848w, https://substackcdn.com/image/fetch/$s_!JfSa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ae77c9-5c5b-4478-a65f-4fd9b1cab74c_3178x1372.png 1272w, https://substackcdn.com/image/fetch/$s_!JfSa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ae77c9-5c5b-4478-a65f-4fd9b1cab74c_3178x1372.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JfSa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ae77c9-5c5b-4478-a65f-4fd9b1cab74c_3178x1372.png" width="1456" height="629" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4ae77c9-5c5b-4478-a65f-4fd9b1cab74c_3178x1372.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:629,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:388187,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://glasseye.substack.com/i/164469245?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ae77c9-5c5b-4478-a65f-4fd9b1cab74c_3178x1372.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JfSa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ae77c9-5c5b-4478-a65f-4fd9b1cab74c_3178x1372.png 424w, https://substackcdn.com/image/fetch/$s_!JfSa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ae77c9-5c5b-4478-a65f-4fd9b1cab74c_3178x1372.png 848w, https://substackcdn.com/image/fetch/$s_!JfSa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ae77c9-5c5b-4478-a65f-4fd9b1cab74c_3178x1372.png 1272w, https://substackcdn.com/image/fetch/$s_!JfSa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ae77c9-5c5b-4478-a65f-4fd9b1cab74c_3178x1372.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A concept map for Python package managers</figcaption></figure></div><p>My regular supplier of anything on the cutting edge, <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Mark Bulling&quot;,&quot;id&quot;:12113878,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/e77731ab-e9e9-492d-b892-64ea75059014_144x144.png&quot;,&quot;uuid&quot;:&quot;2716ef40-6ba8-4fa1-a02c-d577e1d321a7&quot;}" data-component-name="MentionToDOM"></span>, has put me on to Willow, a genAI-powered dictation tool that removes the friction of dictation by revising and punctuating our mumblings.  It&#8217;s brilliant, but as you'd expect, sometimes thinks it knows better. So you have to watch it</p><div><hr></div><p>If you&#8217;ve enjoyed this newsletter or have any other feedback, please leave a comment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/p/glasseye-12e/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.glasseye.ink/p/glasseye-12e/comments"><span>Leave a comment</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Linear regression on a dataset of N rows can be understood as a projection from an N-dimensional observation space to a subspace of N-k-1 dimensions.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Thanks to S&#248;ren and Jonas for the recommendation!</p></div></div>]]></content:encoded></item><item><title><![CDATA[Glasseye]]></title><description><![CDATA[Issue 12: April 2025]]></description><link>https://www.glasseye.ink/p/glasseye-5e6</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-5e6</guid><pubDate>Tue, 29 Apr 2025 08:51:52 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4e2054ce-0a75-44d2-9151-9a57deb0430c_2586x1455.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this month&#8217;s issue: </p><ul><li><p><strong><a href="https://glasseye.substack.com/i/161169149/semi-supervised">Semi-supervised</a></strong> makes the case for toy problems in real life. </p></li><li><p>We question the information value of LLM output in <strong><a href="https://glasseye.substack.com/i/161169149/the-dunghill">the dunghill.</a> </strong></p></li><li><p><strong><a href="https://glasseye.substack.com/i/161169149/the-white-stuff">The white stuff</a></strong> finds out that clinical research is not entirely free from methodological madness. </p></li></ul><p>Plus a new <strong>problem-solving workshop for data scientists</strong>, we welcome the rigour of <strong>D-spy</strong>, and how <strong>Quarto</strong> has taken over my output.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aMhN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105008,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>Semi-supervised</h2><p>Toy problems are not just for textbooks, although you&#8217;d be forgiven for thinking so, given how rarely they appear outside academia. This is a shame since they are perfect for breaking down the more complex and intimidating problems that occur in real life. </p><p>I will explain, but first we should clarify what is meant by a toy problem. Most real-life data science problems are hard for reasons we explored in <a href="https://glasseye.substack.com/i/159738609/semi-supervised">last month&#8217;s semi-supervised</a>: that is, they are typically set in partially observable, multi-agent, stochastic, sequential, dynamic, continuous environments. A toy problem strips away the complexity by assuming a world that is simplified to the point of being unrealistic, or constrained in such a way that the complexity is kept out. Every exercise at the end of every textbook chapter is a toy problem. If they were real-world problems they simply would not fit on the page.</p><p>AI is full of well-known toy problems from chess and tic-tac-toe to <a href="https://en.wikipedia.org/wiki/Blocks_world">stacking blocks</a> and navigating <a href="https://glasseye.substack.com/i/151169479/indy-world">Wumpus World</a>. As the AI examples show, toy problems are designed to highlight particular aspects of the real world - other aspects can be temporarily put to one side. Toy problems are, if you like, the problem-solving equivalent of controlled experiments. </p><p>So how, outside academia, might they be useful? I have three distinct uses for toy problems, but they all involve, as you might expect, getting a handle on complexity.</p><ol><li><p>The real-world problem is too hard, but I think I can solve it for a much simpler scenario. So I start with a simple toy world; solve the problem there, and then, one by one, add in the real-world components. With each addition, I re-solve the problem.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> Sometimes I hit an iteration that cannot be solved, but then at least I understand what makes the problem intractable. Of course this process never makes it all the way to the real-world problem. Long before I get anywhere close, I will have either hit upon the right way to go or satisfied myself that the problem is insoluble.</p></li><li><p>The real-world problem seems mostly solvable but there is some aspect of it that I just can&#8217;t get my head around. This calls for the targeted toy model - the one that brings out just a single feature of the problem and simplifies away the rest. To do this I like to imagine I am writing the textbook exercise version of the problem, designed to focus the student on one thing only.</p></li><li><p>I have a new algorithm or statistical technique that I am struggling to understand, and it doesn&#8217;t help that the problem it is being applied to is itself horribly complex. So instead I give the algorithm significantly easier tasks to perform. Here the toy problem usually involves a simulated data set which I can adjust, slowly adding complexity, until I understand better how the algorithm does what it does and what its strengths and weaknesses are. Sometimes - if I have too much time on my hands -  I make a toy version of the algorithm (a much simplified version, built from the ground up) to apply to the toy problem. My favourite example in this vein can be found <a href="https://playground.tensorflow.org/#activation=tanh&amp;batchSize=10&amp;dataset=circle&amp;regDataset=reg-plane&amp;learningRate=0.03&amp;regularizationRate=0&amp;noise=0&amp;networkShape=4,2&amp;seed=0.26738&amp;showTestData=false&amp;discretize=false&amp;percTrainData=50&amp;x=true&amp;y=true&amp;xTimesY=false&amp;xSquared=false&amp;ySquared=false&amp;cosX=false&amp;sinX=false&amp;cosY=false&amp;sinY=false&amp;collectStats=false&amp;problem=classification&amp;initZero=false&amp;hideText=false">here</a>.</p></li></ol><p>The obvious next question is: how do we know which features to include in a toy problem and which aspects to simplify? If you&#8217;ve been following the last few issues of Glasseye then you might find this less daunting: <a href="https://glasseye.substack.com/i/151934968/semi-supervised">constructing an ontology</a> will help purge the problem of abstractions and provide a list of entities to select from; a <a href="https://glasseye.substack.com/p/glasseye-e42?open=false#%C2%A7semi-supervised">concept-map</a> will clarify how these entities relate to one another and give you some ideas about where to apply simplifications; perhaps best of all the dichotomies described in Russell and Norwig&#8217;s <a href="https://glasseye.substack.com/p/glasseye-9bc?open=false#%C2%A7semi-supervised">AI task environment</a> will suggest simplifications: assume that the environment is discrete not continuous, episodic not continuous etc.</p><p>It perhaps goes against the grain to step back from a problem, and you might get a raised eyebrow when your boss looks over your shoulder. But there&#8217;s nothing embarrassing about playing with toys. I have got them out for such varied problems as optimising supermarket shelving, detecting biomarkers in saliva, and understanding the spread of COVID in hospitals. </p><div><hr></div><p>Please do send me your questions and work dilemmas. You can <a href="https://substack.com/@glasseye">DM me</a> on Substack or email me at simon@coppelia.io.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jtwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The white stuff</h2><p>Of all the forms of human error, the one I find most fascinating is mass delusion, possibly because groups are able, through a combination of peer pressure and feedback mechanisms, to talk themselves into far more extravagant beliefs than the average lonesome individual.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> I know that this group madness happens in my world; I&#8217;m not surprised that it happens in academia, but one place I thought must be safe, since the stakes are so high and since faddism is so obviously discouraged, is the world of clinical research. That was until I read <em><a href="https://academic.oup.com/jrssig/article-abstract/22/3/40/8099023?redirectedFrom=PDF">The Curious Rise of Randomised Non-Comparative Trials</a></em> by Pavlos Msaouel in this month&#8217;s <em>Significance Magazine</em>. (The magazine is behind a paywall, but content usually becomes free one year after publication. My own contributions can be found <a href="https://academic.oup.com/jrssig/search-results?f_Authors=Simon+Raper&amp;login=false">here</a>.)</p><p>Curious is right. Usually the abuse of statistics in science is quite understandable. The subject is counterintuitive, often badly taught, and marred by methodological fudges. But this particular abuse is not due to confusion. It is simple and flagrant. So simple that it can be summarised in a few lines.</p><p>The standard approach in clinical research is the randomised controlled trial (RCT). Participants are randomly allocated to groups (or arms), each of which receives a different treatment. Randomisation is crucial since it breaks the causal link between the trial outcome and any factor other than the treatment. </p><p>Sometimes, when RCTs are impossible or unethical, a single arm trial is preferred. A single group receives the experimental treatment and the outcome is compared to historical data on that same group. This is an observational study not a controlled experiment. Some attempts can be made to handle confounding factors through modelling or matching but the results are generally less reliable than those obtained by an RCT.</p><p>RNCTs, which Msaouel says are on the rise, are a nonsensical hybrid. They involve multiple arms to which participants are randomly allocated, &#8220;but instead of comparing the outcomes in these randomised arms, RNCTs compare each arm individually to historical or external data.&#8221;<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> Why then randomise? Msaouel can find no satisfying rational explanation. In fact, &#8220;all the safeguards provided by randomisation have been cast aside &#8211; and all that remains is the use of the talismanic word &#8216;randomisation&#8217;.&#8221; When he runs a workshop for oncologists, the participants are surprisingly candid about their motivations:  &#8220;We want the aura of an RCT&#8230; but we won&#8217;t do a formal comparison. Instead, we&#8217;ll compare each arm&#8217;s results separately against historical data. This lets us call it a &#8216;randomised trial&#8217; without the heavy burden of a large sample size or the risk that a formal comparison might yield a &#8216;negative&#8217; result.&#8221;<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a></p><p>Conjuring up the aura of a scientific method when the reality is anything but - this is not uncommon in business, and particularly so in media, advertising and marketing. But here at least no one is getting sick or dying. Let&#8217;s hope that Msaouel&#8217;s article has shamed it out of existence in clinical research.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The dunghill</h2><p>Karl Popper must be one of the most professionally useful of philosophers. He is famous for his criterion for distinguishing science from pseudoscience (to be scientific a hypothesis must be falsifiable) and for his account of how science works (by putting forward conjectures and then ruthlessly attacking them). Even if both views have been shown to be overly simplistic they nevertheless work as biblical commandments for scientists. And great is the temptation to sin. No one wants to knock down an idea they have spent long hours building up; no business wants to challenge the premise on which it was built. All I can say is that it helps to think of Popper (not a happy-looking man) standing over your shoulder, shaking his head.</p><p>Recently though a specific implication of these theories has seemed especially relevant. If we broadly agree with Popper on how science works then it obvious that not all findings are of equal scientific value. </p><p>First, refutations are worth more than confirmations. At any one time we theorise against a background of accepted, orthodox hypotheses. A confirmation of one of these hypotheses is worth very little. (So it turns out people buy more ice-cream in the summer. Hooray.) Refutations by contrast are intrinsically surprising. In fact the informational value of a refutation might be gauged by how many of the background hypotheses it knocks down. </p><p>Second, of the conjectures that withstand criticism, we should prefer those that Popper describes as &#8220;bold&#8221;, leading to &#8220;novel predictions&#8221;. The most valuable are again those that do the most damage to the orthodox body of scientific opinion. The hypothesis of descent through natural selection is an obvious example.</p><p>In both cases the background theories render the result (refutation, conjecture holding its ground) improbable, and as every good student of information theory knows, the confirmation of an improbable event provides the most information.</p><p>So why am I bringing this up now? Because I think it is useful for sifting the good from the bad among the opportunities currently offered by LLMs. Those that are selling these opportunities tend to downplay two important facts about LLM output: (a) its usefulness is less apparent when measured by its information content (as Popper pointed out, bland confirmations are worthless alongside earth-shattering refutations) and (b) the more valuable (information rich) the content, the more certainty matters, since surprising, counterintuitive results usually require changes, and changes cost time and money.</p><p>And so when the cheerleaders for LLM-powered <a href="https://glasseye.substack.com/i/146165448/synthetic-survey-respondents-a-revolution-in-research-methods-or-the-worst-idea-ever">synthetic respondents</a> tell us that there is an <a href="https://www.evidenza.ai/#:~:text=88,%25">88% correlation</a> with answers given by real respondents, I want to know what that correlation looks like on just those findings that were surprising, and therefore of high informational value. And even if synthetic respondents were shown to be capable of delivering surprising, counterintuitive findings, I would want to know how, if not by an real survey, the certainty called for by surprising results would be achieved.</p><p>Similarly when it comes to the average LLM prompt response, I can&#8217;t help noticing how much hedging is built in. The output seems very low-grade in terms of surprisal, bland by comparison to human output (or at least the best of it).<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> But again, even if this could be fixed, we still run into the same old bind - the more interesting the information, the more risk associated with it, and therefore the more certainty we want. And if hallucinations are intrinsic to LLMs (and I<a href="https://glasseye.substack.com/i/151934968/the-white-stuff">&#8217;m pretty convinced they are</a>) then that certainty has to come from elsewhere. </p><p>If you have some particularly noxious bullshit that you would like to share then I&#8217;d love to hear from you.  <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><h2>From Coppelia</h2><ul><li><p>If you&#8217;ve enjoyed the recent semi supervised posts on solving problems that are outside the mould then you might be interested to know that Coppelia now runs a three day workshop, <em>Real-world problem solving for data scientists.</em> It is particularly aimed at those who have an academic background in data science, or a related discipline, but are puzzled about how to apply this knowledge to their day-job. Do mail/message me if you are interested.</p></li><li><p>I&#8217;ve been spending some time this month getting to know <a href="https://dspy.ai/">DSpy</a> (thanks to <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Mark Bulling&quot;,&quot;id&quot;:12113878,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/e77731ab-e9e9-492d-b892-64ea75059014_144x144.png&quot;,&quot;uuid&quot;:&quot;fd2c1ea7-a737-4ddd-9630-987900095fcd&quot;}" data-component-name="MentionToDOM"></span> for putting me on to this). Very interesting. It&#8217;s an attempt to place LLMs inside the framework of supervised learning. The most magical part is the way it treats the prompt as a kind of tuneable hyper parameter. I particularly welcome the opportunity to pit LLMs against other algorithms, and get a fair assessment of what they are good at. </p></li><li><p>I&#8217;ve noticed that, since it was recommended to me by <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Simeon Duckworth&quot;,&quot;id&quot;:2621504,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/36b6e2de-f3fd-44e3-86e1-55d85b553da8_144x144.png&quot;,&quot;uuid&quot;:&quot;2bc13cac-f474-4b4c-bfaa-914de43d7019&quot;}" data-component-name="MentionToDOM"></span> and <a href="https://www.linkedin.com/in/andriedevries/">Andrie de Vries,</a> <a href="https://quarto.org/">Quarto</a> has been gradually taking over my document output. Almost everything I produce that goes to a client (other than code) now goes via this superb package. And as yet no one seems to mind that it&#8217;s not Word or Powerpoint,  contains full prose, references etc. <em>Raper&#8217;s Rule #231: if you treat your client like an idiot they are sure to do the same for you.</em></p></li></ul><p>If you&#8217;ve enjoyed this newsletter or have any other feedback, please leave a comment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/p/glasseye-5e6/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.glasseye.ink/p/glasseye-5e6/comments"><span>Leave a comment</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>If you do a lot of coding, this will be familiar as a standard debugging procedure.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>My all time favourite book on the subject is the neglected classic <a href="https://en.wikipedia.org/wiki/When_Prophecy_Fails">When Prophesy Fails</a> (the study which introduced the term <em>cognitive dissonance</em>).</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Pavlos Msaouel, Bad stats: The curious rise of randomised non-comparative trials, <em>Significance</em>, Volume 22, Issue 3, May 2025, Pages 40&#8211;44,</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>Msaouel is paraphrasing the participants (see the original article for more details).</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>My rule of thumb for trusting LLM output is in fact blandness-based. I trust most those facts which I reckon to be fairly well-known and therefore all over the training data.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Glasseye]]></title><description><![CDATA[Issue 11: March 2025]]></description><link>https://www.glasseye.ink/p/glasseye-9bc</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-9bc</guid><pubDate>Wed, 26 Mar 2025 08:45:35 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0d2968ce-2ae9-4aff-b3d6-06a58dca0019_693x390.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this month&#8217;s issue: </p><ul><li><p>Maximise your lack of commitment with E T Jaynes in<strong> <a href="https://glasseye.substack.com/i/159738609/the-white-stuff">the white stuff</a>.</strong></p></li><li><p><strong><a href="https://glasseye.substack.com/i/159738609/the-dunghill">The dunghill</a></strong><a href="https://glasseye.substack.com/i/159738609/the-dunghill"> </a>considers the perfect conditions for a market built on pseudoscience.</p></li><li><p>How the idea of AI task environments can be used for feasibility studies in <strong><a href="https://glasseye.substack.com/i/159738609/semi-supervised">semi-supervised</a></strong>.</p></li><li><p>Plus a response from Eppo to <a href="https://glasseye.substack.com/i/156295648/the-dunghill">last month&#8217;s dunghill</a>, and frustrations over badly behaved LLMs.</p></li></ul><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aMhN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105008,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>Semi-supervised</h2><p>When the LLM bubble goes pop, will we all be rushing back to <a href="https://aima.cs.berkeley.edu/">Russell and Norvig</a>? I like to think so. Beautifully written, terse but clear, effortlessly multi-disciplinary, and even finding space for historical notes at the end of each chapter, it&#8217;s my favourite AI textbook by some distance. Since AI <em>proper</em> is about building autonomous agents that need to cope with a wide range of environments, the book is also, indirectly, a compendium of problem-solving techniques. All we need do is substitute ourselves for the autonomous agent.</p><p>In this vein, I have repurposed Russell and Norvig&#8217;s classification of AI task environments as a method for conducting feasibility studies. The result is a tool that tells me quickly just how difficult a project is going to be, and gives me a language to explain the difficulties. </p><p>I will explain: For Russell and Norvig, task environments are the specific worlds in which the autonomous agents must operate to solve problems&#8212;in a sense, they are the problem. For the robot vacuum cleaner, the task environment is a floor interrupted by objects; for the AI chess program, it is the board, the pieces, the rules, and so on. Russell and Norvig categorise the possible environments using a series of dichotomies. Is the environment&#8230;</p><p>1. Fully observable or partially observable?</p><p>2. Single agent or multi agent?</p><p>3. Competitive or co-operative?</p><p>4. Deterministic or stochastic?</p><p>5. Episodic or sequential?</p><p>6. Static or dynamic? </p><p>7. Discrete or continuous?<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><p>Since the option on the right-hand side is nearly always the more difficult one, this has become my feasibility checklist for any problem environment I happen to be given. If everything is on the right, we&#8217;re in trouble.</p><p>Take the apparently simple example of a sales forecast. Here the environment is a marketplace, filled with buyers and sellers, and impacted by all manner of internal and external forces. It is undoubtedly a <strong>partially observable</strong> environment (we cannot know every relevant fact, unlike, say, a game of chess where we can see the full board and the location of every piece). It is also a <strong>competitive</strong>, <strong>multi-agent</strong> environment: if the business acts as a result of the forecast then a competitor may react, invalidating the forecast, unless, that is, we build in their expected actions. On top of this, it is highly <strong>stochastic</strong>; it happens in <strong>continuous</strong> time; it is <strong>sequential</strong> (what happens next, is dependent on actions taken now); and it is <strong>dynamic</strong> (the situation can change while we are deliberating). This is why forecasting markets (as opposed to, say, some physical systems) is so hard, and why we don&#8217;t even attempt perfection.</p><p>What to do when faced with right-side-heavy environments? First, massively lower expectations (which is what we do with forecasting). Second, if possible, approach the problem by making some simplifying assumptions (moving from the right side to the left). Can we ignore the competitors for now? Can we treat the environment as static even if, strictly speaking, it is not? Can we approximate the situation using discrete time? But in each case track the implications of the simplification, or it may come back to bite you.</p><p>By the way, as human beings, we operate for the most part in partially observable, multi-agent, stochastic, sequential, dynamic, continuous environments, which is why we are so damn great and not about to be replaced.</p><p>Please do send me your questions and work dilemmas. You can <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jtwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The white stuff</h2><p>E T Jaynes is a cult figure among probabilists. He wrote clearly and inspiringly about the deepest aspects of probability; he crossed disciplines, invented new ways of looking at the world, and quietly got on with the business of being a genius. </p><p>This month I&#8217;ve been reading his seminal 1957 paper <em><a href="https://bayes.wustl.edu/etj/articles/theory.1.pdf">Information Theory and Statistical Mechanics</a></em>, where he introduces for the first time his <em>principle of maximum entropy</em>. The principle uses Shannon&#8217;s concept of information entropy - at the time only recently formulated - to update Laplace&#8217;s<em> principle of insufficient reason</em> (in the absence of any relevant information, we should assign equal probabilities to all possible outcomes). Jaynes redefines this in terms of entropy: in the absence of information, it is logical to assume the probability distribution that is maximally non-committal - in other words, the one that contains the least information, ergo the one that has the highest entropy. Philosophically, this puts this approach to probability on a firmer foundation since it removes &#8220;the apparent arbitrariness of the principle of insufficient reason, and, in addition, it shows precisely how this principle is to be modified in case there are reasons for &#8216;thinking otherwise.&#8217;&#8220; But it is also a whole new way to build a probability distribution and as such unlocks a whole new line of problem-solving techniques. (I am using it in a project right now.) If you are still not satisfied, it links (as Jaynes shows in the paper), the statistical concept of entropy to the thermodynamic one.</p><p>If the paper gets you hooked then Jaynes&#8217; classic, posthumously-published masterpiece - like I said, a cult figure - <em>Probability Theory: The Logic of Science</em> is available <a href="https://bayes.wustl.edu/etj/prob/book.pdf">here</a>.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The dunghill</h2><p>When I&#8217;m asked by clients for my opinion on <a href="https://glasseye.substack.com/i/146165448/synthetic-survey-respondents-a-revolution-in-research-methods-or-the-worst-idea-ever">synthetic respondents</a>, it&#8217;s a bit awkward. On the one hand, I feel strongly that most commercial implementations are going to be a joke.  On the other, I can&#8217;t rule out the possibility that, despite this, they will drive a burgeoning market in which millions are made. This in turn made me think about the necessary conditions for a market built on pseudoscience. These conditions will have to explain the markets we have seen so far - digital attribution modelling, bad (i.e. most of) market mix modelling, as well as the ones just on the horizon (synthetic respondents, <a href="https://glasseye.substack.com/i/154255908/the-dunghill">synthetic sample size boosting</a>).  Here&#8217;s where I&#8217;ve got to. As ever, I&#8217;m interested in your views.</p><p><strong>Necessary conditions for a market built on pseudoscience</strong></p><ol><li><p>First, someone needs to benefit. A direct benefit to the business is impossible since the thing doesn&#8217;t work. But there are other ways: someone&#8217;s reputation can be enhanced by the work - they can catch some of the reflected glory of the latest technological advance. Or a project, a campaign, a controversial business decision can be retrospectively justified.</p></li><li><p>Next, any checking of the results needs to be impossible, or at least highly disincentivised. Under ideal conditions, the claims will be truly unfalsifiable (checking off Karl Popper&#8217;s classic definition of a pseudoscience). But it might just be that a check is expensive, and then who wants to spend money on potentially undermining a favourable result (see the next point)? Contrast this with applications of statistics and data science such as prediction or network optimisation where just using the method is a check on its performance.</p></li><li><p>A corollary of (2) is that with enough tweaking and twisting (see <a href="https://glasseye.substack.com/i/146165448/the-dunghill">QRPs</a>) the given technique can be made to say whatever the client wants it to say. Such a feature will further activate the market since it produces an endless stream of satisfied customers.</p></li><li><p>The technique employed must look like real science, else why would it be taken seriously. The surest way to do this is by borrowing a technique that works in its own limited domain and then aggressively misapplying it.  </p></li><li><p>To be convincing the market must be run by true believers. For this to happen the details of the technique must be sufficiently complex to fool the practitioners into thinking that it is the real deal. Ideally there should be debates, conferences,  controversies, rival theories. Ultimately it should generate its own history - who could doubt it after that?</p></li><li><p>Finally the average buyer needs to be incapable of calling bullshit. In the best case scenario, they are scientifically and mathematically illiterate, so that, even if they wanted to (and often they do not - see point 3) they could not question the result.</p></li></ol><p>I think synthetic respondents - in all but the most cautious use cases - scores a solid six here - which makes me feel better about simultaneously slamming it and predicting huge growth.</p><p>If you have some particularly noxious bullshit that you would like to share then I&#8217;d love to hear from you.  <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><h2>From Coppelia</h2><p>After <a href="https://glasseye.substack.com/i/156295648/the-dunghill">last month&#8217;s dunghill</a> querying the approach to relative-lift AB testing taken by Eppo, I got an email from their head of statistics. They had accepted the main part of my criticism and put in a fix. Now I can't emphasise enough how rare this is. Usually the response from a business to this kind of criticism is silence, or aggressive technobabble. But this was gracious, grown-up behaviour, and deserves respect! </p><div><hr></div><p>This month I once again attempted to embed an LLM within a process; once again the result was disappointing. To be clear I'm not talking about the use of LLM as a sidekick - in coding, data manipulation, research, problem-solving. There the results are, I&#8217;ll admit, phenomenal. The point of failure for me (and for many others - I don't think I'm being particularly controversial here) has been when the little ones are left to play by themselves. Then all hell breaks loose. Yes, I know about all the clever things you can do with prompts and such like, but I reach the point where saying nice things to them just gets frustrating - perhaps even a touch humiliating - and I return to the old ways.</p><div><hr></div><p>If you&#8217;ve enjoyed this newsletter or have any other feedback, please leave a comment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/p/glasseye-9bc/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.glasseye.ink/p/glasseye-9bc/comments"><span>Leave a comment</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>I have left out the known/unknown dichotomy from Russell and Norvig&#8217;s list since it is not particularly useful for assessing feasibility.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Glasseye]]></title><description><![CDATA[Issue 10: February 2025]]></description><link>https://www.glasseye.ink/p/glasseye-e42</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-e42</guid><pubDate>Mon, 17 Feb 2025 12:39:10 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/34bc572b-5e8e-47b3-8c0f-c3d35ae441f3_907x518.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this month&#8217;s issue: </p><ul><li><p>Map your way towards concept clarity in <strong><a href="https://glasseye.substack.com/i/156295648/semi-supervised">semi-supervised</a>.</strong></p></li><li><p><strong><a href="https://glasseye.substack.com/i/156295648/the-dunghill">The dunghill</a></strong> wonders what some high-profile experimentation platforms are doing with such wonky distributions.</p></li><li><p>We are impressed by Fran&#231;ois Chollet&#8217;s intelligent approach to intelligence in <strong><a href="https://glasseye.substack.com/i/156295648/the-white-stuff">the</a></strong><a href="https://glasseye.substack.com/i/156295648/the-white-stuff"> </a><strong><a href="https://glasseye.substack.com/i/156295648/the-white-stuff">white stuff</a></strong><a href="https://glasseye.substack.com/i/156295648/the-white-stuff">. </a></p></li></ul><p>Plus swapping out langchain for llamaindex, keeping a tight chain on LLMs and shushing copilot.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aMhN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105008,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>Semi-supervised</h2><p>In the last instalment we looked at &#8220;<a href="https://glasseye.substack.com/p/glasseye-844?open=false#%C2%A7semi-supervised">room-tidying</a>&#8221;: the essential clarifying and untangling work that a data scientist should carry out before tackling a difficult problem. This month we are taking a closer look at one of the techniques briefly mentioned - the surprisingly under-used art of concept mapping.  </p><p>The idea is to construct a graph in which every node is a concept that features in the problem and every edge describes a relation between concepts.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XLrq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cf4156-da47-4d40-b56b-72afedaffc6c_1344x484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XLrq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cf4156-da47-4d40-b56b-72afedaffc6c_1344x484.png 424w, https://substackcdn.com/image/fetch/$s_!XLrq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cf4156-da47-4d40-b56b-72afedaffc6c_1344x484.png 848w, https://substackcdn.com/image/fetch/$s_!XLrq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cf4156-da47-4d40-b56b-72afedaffc6c_1344x484.png 1272w, https://substackcdn.com/image/fetch/$s_!XLrq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cf4156-da47-4d40-b56b-72afedaffc6c_1344x484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XLrq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cf4156-da47-4d40-b56b-72afedaffc6c_1344x484.png" width="496" height="178.61904761904762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2cf4156-da47-4d40-b56b-72afedaffc6c_1344x484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:484,&quot;width&quot;:1344,&quot;resizeWidth&quot;:496,&quot;bytes&quot;:39818,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XLrq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cf4156-da47-4d40-b56b-72afedaffc6c_1344x484.png 424w, https://substackcdn.com/image/fetch/$s_!XLrq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cf4156-da47-4d40-b56b-72afedaffc6c_1344x484.png 848w, https://substackcdn.com/image/fetch/$s_!XLrq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cf4156-da47-4d40-b56b-72afedaffc6c_1344x484.png 1272w, https://substackcdn.com/image/fetch/$s_!XLrq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cf4156-da47-4d40-b56b-72afedaffc6c_1344x484.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>Don&#8217;t be fooled by its simplicity; this is a powerful technique. And it&#8217;s worth emphasising that a concept map is not a mind map. With the latter almost anything goes, whereas a concept map (as I do it) is tightly regulated by a single simple rule: the node-edge-node sequence of labels should form a sentence that is read in the direction of the arrow. &#8220;Tensorflow&#8230; implements&#8230; neural nets.&#8221; Sticking to this rule imposes structure on your thinking and keeps the diagram clean and clear.</p><p>To illustrate here&#8217;s a diagram I featured in a previous post, untangling the confusing world of deep learning in Python.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PByX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef49bd8-1819-4237-89d1-ba7d1397ceae_2206x1280.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PByX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef49bd8-1819-4237-89d1-ba7d1397ceae_2206x1280.png 424w, https://substackcdn.com/image/fetch/$s_!PByX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef49bd8-1819-4237-89d1-ba7d1397ceae_2206x1280.png 848w, https://substackcdn.com/image/fetch/$s_!PByX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef49bd8-1819-4237-89d1-ba7d1397ceae_2206x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!PByX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef49bd8-1819-4237-89d1-ba7d1397ceae_2206x1280.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PByX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef49bd8-1819-4237-89d1-ba7d1397ceae_2206x1280.png" width="724" height="420.17857142857144" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/def49bd8-1819-4237-89d1-ba7d1397ceae_2206x1280.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:845,&quot;width&quot;:1456,&quot;resizeWidth&quot;:724,&quot;bytes&quot;:235814,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PByX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef49bd8-1819-4237-89d1-ba7d1397ceae_2206x1280.png 424w, https://substackcdn.com/image/fetch/$s_!PByX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef49bd8-1819-4237-89d1-ba7d1397ceae_2206x1280.png 848w, https://substackcdn.com/image/fetch/$s_!PByX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef49bd8-1819-4237-89d1-ba7d1397ceae_2206x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!PByX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef49bd8-1819-4237-89d1-ba7d1397ceae_2206x1280.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Sometimes I find it useful to include concept definitions under node labels. Obviously these definitions are independent of the other concepts in the map (else they would also feature as edges).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YkoJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eab964f-dcd3-486b-a2c0-0578ef283031_2168x957.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YkoJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eab964f-dcd3-486b-a2c0-0578ef283031_2168x957.png 424w, https://substackcdn.com/image/fetch/$s_!YkoJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eab964f-dcd3-486b-a2c0-0578ef283031_2168x957.png 848w, https://substackcdn.com/image/fetch/$s_!YkoJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eab964f-dcd3-486b-a2c0-0578ef283031_2168x957.png 1272w, https://substackcdn.com/image/fetch/$s_!YkoJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eab964f-dcd3-486b-a2c0-0578ef283031_2168x957.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YkoJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eab964f-dcd3-486b-a2c0-0578ef283031_2168x957.png" width="660" height="291.3376383763838" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0eab964f-dcd3-486b-a2c0-0578ef283031_2168x957.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:957,&quot;width&quot;:2168,&quot;resizeWidth&quot;:660,&quot;bytes&quot;:169625,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YkoJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eab964f-dcd3-486b-a2c0-0578ef283031_2168x957.png 424w, https://substackcdn.com/image/fetch/$s_!YkoJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eab964f-dcd3-486b-a2c0-0578ef283031_2168x957.png 848w, https://substackcdn.com/image/fetch/$s_!YkoJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eab964f-dcd3-486b-a2c0-0578ef283031_2168x957.png 1272w, https://substackcdn.com/image/fetch/$s_!YkoJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eab964f-dcd3-486b-a2c0-0578ef283031_2168x957.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Adding labels for some of the more common relationship types (e.g. X is a Y&#8221;) can clutter up the map. To avoid this I borrow the <a href="https://www.visual-paradigm.com/guide/uml-unified-modeling-language/uml-class-diagram-tutorial/#:~:text=only%20mandatory%20information.-,Relationships%20between%20classes,-UML%20is%20not">standard UML arrow types</a> for class diagrams and adopt the convention that if an edge is unlabelled then the UML rules apply.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><p>One last thing worth mentioning: it is usually possible to break down complex definitions into simple relationship pairs. For example, &#8220;Pytorch is a python library that was developed by Meta&#8221; becomes &#8220;Pytorch is a python library&#8221; and &#8220;Pytorch was developed by Meta&#8221;. But sometimes we are stuck with a relationship between three or more elements. This typically happens when the relationship takes the form of a sentence with a direct and an indirect object, such as &#8220;X processes Y for Z&#8221;. I solve this problem by introducing an extra circular node like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FvHk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88d202-0269-4150-af6c-c01f172891ed_1366x856.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FvHk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88d202-0269-4150-af6c-c01f172891ed_1366x856.png 424w, https://substackcdn.com/image/fetch/$s_!FvHk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88d202-0269-4150-af6c-c01f172891ed_1366x856.png 848w, https://substackcdn.com/image/fetch/$s_!FvHk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88d202-0269-4150-af6c-c01f172891ed_1366x856.png 1272w, https://substackcdn.com/image/fetch/$s_!FvHk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88d202-0269-4150-af6c-c01f172891ed_1366x856.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FvHk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88d202-0269-4150-af6c-c01f172891ed_1366x856.png" width="394" height="246.89897510980967" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb88d202-0269-4150-af6c-c01f172891ed_1366x856.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:856,&quot;width&quot;:1366,&quot;resizeWidth&quot;:394,&quot;bytes&quot;:51570,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FvHk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88d202-0269-4150-af6c-c01f172891ed_1366x856.png 424w, https://substackcdn.com/image/fetch/$s_!FvHk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88d202-0269-4150-af6c-c01f172891ed_1366x856.png 848w, https://substackcdn.com/image/fetch/$s_!FvHk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88d202-0269-4150-af6c-c01f172891ed_1366x856.png 1272w, https://substackcdn.com/image/fetch/$s_!FvHk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88d202-0269-4150-af6c-c01f172891ed_1366x856.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>All of this is made supremely easy through the use of the diagramming syntax of Mermaid, which can be used in most markdown editors and IDEs.  I don&#8217;t know which algorithm it uses to lay out the diagrams but it can achieve wonders. (The Mermaid markup for all the above diagrams can be found <a href="https://gist.github.com/coppeliaMLA/db5f54f7b41d0756a190028b388569f6">here</a> - view the raw file to see the code.)</p><p>Finally, if part of your plan is to signal effortless brilliance, you can get the hand-drawn look by dropping your mermaid markup into <a href="https://excalidraw.com">Excalidraw</a>.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2VCn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffedbf378-8a67-40a4-aa6a-295f1a52e24e_3290x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2VCn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffedbf378-8a67-40a4-aa6a-295f1a52e24e_3290x1458.png 424w, https://substackcdn.com/image/fetch/$s_!2VCn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffedbf378-8a67-40a4-aa6a-295f1a52e24e_3290x1458.png 848w, https://substackcdn.com/image/fetch/$s_!2VCn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffedbf378-8a67-40a4-aa6a-295f1a52e24e_3290x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!2VCn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffedbf378-8a67-40a4-aa6a-295f1a52e24e_3290x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2VCn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffedbf378-8a67-40a4-aa6a-295f1a52e24e_3290x1458.png" width="1456" height="645" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fedbf378-8a67-40a4-aa6a-295f1a52e24e_3290x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:645,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:404338,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2VCn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffedbf378-8a67-40a4-aa6a-295f1a52e24e_3290x1458.png 424w, https://substackcdn.com/image/fetch/$s_!2VCn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffedbf378-8a67-40a4-aa6a-295f1a52e24e_3290x1458.png 848w, https://substackcdn.com/image/fetch/$s_!2VCn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffedbf378-8a67-40a4-aa6a-295f1a52e24e_3290x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!2VCn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffedbf378-8a67-40a4-aa6a-295f1a52e24e_3290x1458.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Please do send me your questions and work dilemmas. You can <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jtwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The white stuff</h2><p>If you are looking for a paper that does, for the muddled world of genAI,  exactly the kind of concept clarification work described in this month&#8217;s and <a href="https://glasseye.substack.com/p/glasseye-844?open=false#%C2%A7semi-supervised">last month&#8217;s</a> semi-supervised then you won&#8217;t do much better than <em><a href="https://arxiv.org/pdf/1911.01547">On the Measure of Intelligence</a></em> by Fran&#231;ois Chollet. It provides the rationale for Chollet&#8217;s Abstraction and Reasoning Corpus (ARC), which, for now at least, is the most generally accepted benchmark test for AGI. But it is also an object lesson in <a href="https://glasseye.substack.com/p/glasseye-844?open=false#%C2%A7semi-supervised">room tidying</a> since he takes great care to straighten out the concepts before getting started on his own definition of intelligence. </p><p>Among his clarifications my favourite is his distinction between &#8220;the process of intelligence (such as the intelligence displayed by researchers creating a chess-playing program)&#8221; and &#8220;the artifact produced by this process (the resulting chess-playing program)&#8221;. The human chess player, who learns this skill from scratch, without being specifically engineered to play chess, is both the process and the artefact, with the process being the most remarkable part. Until AI is both process and artefact we are, he implies, fooling ourselves.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The dunghill</h2><p>The Central Limit Theorem is a wondrous thing. One of its many gifts to us is the power to AB test sample means from two populations no matter how the population data is distributed. If we take a typically skewed metric such as income, then, with a large enough sample size, the distribution of the sample mean over many samples will be approximately normal. Conveniently, the absolute difference between two normal distributions is also normal - and this gives us the starting point of an AB test.</p><p>Which is why it is odd that anyone would choose to work with the relative difference - (A-B)/A - instead of the absolute difference A-B. But, as <a href="https://www.linkedin.com/in/saragaspar/">Sara Gaspar</a> recently pointed out to me, this is exactly what some experimentation platforms are doing. One example is <a href="https://www.geteppo.com/">Eppo</a>. They are not small (47 million of investment according to <a href="https://techcrunch.com/2024/08/20/eppo-lands-new-cash-to-grow-its-app-website-and-ai-experimentation-business/">this post</a>) so I hope they know what they are doing. </p><p>Their rationale for making this move is that they wish &#8220;to provide effect estimates consistently across all metric types (counts, rates, percentages, etc.)&#8221;. You can&#8217;t but sympathise with this: anything that makes communicating results easier is worth having. But what is the cost? </p><p>Commendably they give us their workings <a href="https://docs.geteppo.com/statistics/confidence-intervals/statistical-nitty-gritty/">here</a> on their website. Their justification for using relative difference is that under certain conditions the ratio of two normal distributions is approximately normal, and they cite <a href="https://www.researchgate.net/profile/F-Rubio/publication/257406150_On_the_existence_of_a_normal_approximation_to_the_distribution_of_the_ratio_of_two_independent_normal_random_variables/links/53d7a18a0cf2e38c632ddabc/On-the-existence-of-a-normal-approximation-to-the-distribution-of-the-ratio-of-two-independent-normal-random-variables.pdf">this paper</a> to justify the claim. Now you might think that if the absolute difference is normally distributed then the relative difference is going to be a bit wonky. And you&#8217;d be right - it can indeed be very wonky. Therefore the conditions for approximate normality are worth investigating. </p><p>A fairly typical case in A/B testing is one where we are investigating whether a proposed change in a product or a process results in the increased probability of an action. It is very common in my experience to be dealing with very small increments on what are already very low probabilities. The baseline probability might for example be 0.02 and the uplift 0.005. If the sample size is around 300 then the distribution looks like this.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!f-EO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4818d759-bf83-4d11-ac40-3ceecdfc035b_1798x1104.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f-EO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4818d759-bf83-4d11-ac40-3ceecdfc035b_1798x1104.png 424w, https://substackcdn.com/image/fetch/$s_!f-EO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4818d759-bf83-4d11-ac40-3ceecdfc035b_1798x1104.png 848w, https://substackcdn.com/image/fetch/$s_!f-EO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4818d759-bf83-4d11-ac40-3ceecdfc035b_1798x1104.png 1272w, https://substackcdn.com/image/fetch/$s_!f-EO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4818d759-bf83-4d11-ac40-3ceecdfc035b_1798x1104.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!f-EO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4818d759-bf83-4d11-ac40-3ceecdfc035b_1798x1104.png" width="570" height="349.9862637362637" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4818d759-bf83-4d11-ac40-3ceecdfc035b_1798x1104.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:894,&quot;width&quot;:1456,&quot;resizeWidth&quot;:570,&quot;bytes&quot;:139260,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!f-EO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4818d759-bf83-4d11-ac40-3ceecdfc035b_1798x1104.png 424w, https://substackcdn.com/image/fetch/$s_!f-EO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4818d759-bf83-4d11-ac40-3ceecdfc035b_1798x1104.png 848w, https://substackcdn.com/image/fetch/$s_!f-EO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4818d759-bf83-4d11-ac40-3ceecdfc035b_1798x1104.png 1272w, https://substackcdn.com/image/fetch/$s_!f-EO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4818d759-bf83-4d11-ac40-3ceecdfc035b_1798x1104.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Not too normal. In fact it takes a sample of around 10k or more before it starts to look passably normal (this is in line with the conditions described in the paper). You can find the code for the simulation <a href="https://gist.github.com/coppeliaMLA/c0a5346161d566b1838db5986c554132">here</a>. </p><p>To be fair, the documentation comes with the <a href="https://docs.geteppo.com/statistics/confidence-intervals/">caveat:</a> &#8220;If the estimate for Control is close to zero, that ratio becomes unreliable. We do not compute the relative lift when Control is less than 1.5 standard deviation around zero.&#8221; Although it&#8217;s not exactly clear what this means. 1.5 standard deviation of which distribution? If they want to ensure that the inference works then wouldn&#8217;t be better to use the bounds given in the paper.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> And if they don&#8217;t use relative lift then what do they do? Revert to absolute lift? In which case what was the point of the whole exercise?</p><p>I hope the sample size calculations on Eppo take all this into account, although I see that their formula for<a href="https://docs.geteppo.com/statistics/sample-size-calculator/usage/"> minimum detectable difference</a> does not.</p><p>Either way I&#8217;m not convinced the benefits outweigh the costs in this particular case. </p><p>If you have some particularly noxious bullshit that you would like to share then I&#8217;d love to hear from you.  <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><h2>From Coppelia</h2><p>February has been a month of heavy coding with some interesting discoveries. I&#8217;ve swapped over from Langchain to <a href="https://www.llamaindex.ai/">Llamaindex</a>, on the promise that it is simpler to use and better at the straightforward data extraction tasks I&#8217;m mainly using LLMs for at the moment. So far it is living up to that promise.</p><p>I also started exploring the world of LLMOps which seems to be expanding exponentially as businesses bet on being among the first as a new sub-industry takes off. I&#8217;m still feeling sceptical about just how many use-cases there really are, but still it is interesting to see all the new monitoring and measurement frameworks out there, most of which involve LLMs monitoring LLMs (the so-called LLM as judge approach). Take a look at <a href="https://docs.confident-ai.com/">DeepEval</a>.</p><p>Finally I&#8217;ve discovered the secret of working with copilot within an IDE. It&#8217;s very simple: a &#8220;shut up&#8221; shortcut key. Forget every other copilot shortcut. Toggle it on when you need help and off when you need some peace and quiet. It&#8217;s life-changing!</p><div><hr></div><p>If you&#8217;ve enjoyed this newsletter or have any other feedback, please leave a comment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/p/glasseye-e42/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.glasseye.ink/p/glasseye-e42/comments"><span>Leave a comment</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Note you can get the UML arrow heads on concept maps in mermaid by fudging a classDiagram as shown in the code <a href="https://gist.github.com/coppeliaMLA/db5f54f7b41d0756a190028b388569f6">here</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>The option is under AI tools in the menu bar.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Also given in <a href="https://gist.github.com/coppeliaMLA/c0a5346161d566b1838db5986c554132">the code.</a></p></div></div>]]></content:encoded></item><item><title><![CDATA[Glasseye]]></title><description><![CDATA[Issue 9: January 2025]]></description><link>https://www.glasseye.ink/p/glasseye-844</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-844</guid><pubDate>Tue, 14 Jan 2025 10:41:02 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/41f85932-346d-4203-9a58-ebeaf2909496_1362x766.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this month&#8217;s issue: </p><ul><li><p><strong><a href="https://glasseye.substack.com/i/154255908/semi-supervised">Semi supervised</a></strong> gets strict and demands that you <em><strong>tidy your room!</strong></em></p></li><li><p>We worry about the Orwellian implications of generative AI in <strong><a href="https://glasseye.substack.com/i/154255908/the-white-stuff">the white stuff.</a></strong></p></li><li><p><strong><a href="https://glasseye.substack.com/i/154255908/the-dunghill">The dunghill</a> </strong>pursues a hunch that something is not quite right with AI-driven sample size boosting.</p></li><li><p>Plus its <a href="https://glasseye.substack.com/i/154255908/from-coppelia">out with the old and in with the new</a> as polars, cursor and mkdocs, nudge my old tools from the nest!</p><p></p></li></ul><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aMhN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105008,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>Semi-supervised</h2><p>Last month, I started a series of posts on solving the kind of problems in statistics and data science that do not fit a standard template, and the advice was to <a href="https://glasseye.substack.com/p/glasseye-2f6?open=false#%C2%A7semi-supervised">define your ontology</a>. This month we look at a complementary approach that I call &#8220;tidying the room&#8221; after a quote from Wittgenstein (no apology for pretentiousness!)</p><blockquote><p><em>In philosophy we are not, like the scientist, building a house nor are we even laying the foundations of a house. We are merely &#8216;tidying up a room&#8217;.</em></p></blockquote><p>What Wittgenstein meant was that many of the most difficult problems in philosophy can be solved simply by paying close attention to our use of language. If we straighten out the meaning of certain key concepts then these puzzles will simply disappear. This was quite an extreme view (which has since fallen out of fashion). More recently Daniel Dennett made a similar but less controversial claim when he said: &#8220;We philosophers have a taste for working on the questions that need to be straightened out before they can be answered.&#8221;</p><p>What I&#8217;m saying is that our work in data science and statistics requires a significant amount of room tidying before any building gets underway. Why us in particular? Because very often a data science project is the first time a business concept has required a precise definition.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> Before that moment, terms like &#8220;subscriber&#8221;, &#8220;lifetime&#8221;, &#8220;visit&#8221;, &#8220;touchpoint&#8221;, &#8220;lapsed&#8221;, &#8220;cost-per-acquisition&#8221;, etc. have meant what each person has wanted them to mean (the root cause of many a pointless meeting). If you forget to tidy the room before you get to work then you will end up building something on top of this chaos and that will please no one.</p><p>And very often the room tidying <em>is</em> the work or at least a substantial part of it. I have worked on more than one project where just clarifying the concepts solved the issue, just as Wittgenstein wanted it to do for philosophy. This means that to be a statistician or data scientist you&#8217;ve got to have, as Dennett puts it, a taste for this kind of work. If you like your problems delivered in neat little parcels then it probably isn&#8217;t for you.</p><p>So what strategies can I suggest for room tidying? Here are a few:</p><ol><li><p><strong>Define your terms</strong>, and I mean really define them:  i.e. in such a way that they are non-tautologous and have strict boundaries. Is a customer someone who has just visited the site, or do they need to have made a purchase? When do they cease to be a customer? After how many months of inactivity? Is a customer in the real world the same as a customer on the database? Evidently not, if a single person can have more than one account. Most people are unaware of quite how difficult this activity is. (If you think any of the terms I listed above are self-evident then you&#8217;ve never tried it!) Clearly this is a task made much easier if you have in place an <a href="https://glasseye.substack.com/p/glasseye-2f6?open=false#%C2%A7semi-supervised">ontology</a>.</p></li><li><p><strong>Beware of dates and time windows</strong> - they are a particularly potent source of confusion. For some reason, time seems to get forgotten when defining our concepts.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> We treat things as though they are either permanent or happen in an instant. Time windows (e.g. a customer lifetime, the duration of an ad campaign etc) are particularly treacherous because each pair has four possible relationships (A contains B, B contains A, A overlaps the beginning of B, B overlaps the beginning of A). Make sure you think about them all.</p></li><li><p>Once you have a passable first draft of your key concepts, <strong>start to think about the relationships between them</strong>. There are many useful tools for doing this. Diagrams are indispensable. I suggest <a href="https://glasseye.substack.com/i/146165448/untangling-deep-learning-in-python">concept maps</a>, causal diagrams, fishbone diagrams, Venn diagrams. Think about the relationships between measurements. If one grows should the other grow proportionally or should it tail off, or grow exponentially? Remember this is all <em>a priori</em> work, concept clarification - you have not even touched the data yet!</p></li><li><p>Above all <strong>bring the business (or client) with you</strong>. It is their room you are tidying, so there should be an ongoing conversation in which you test your latest revision of a definition against their knowledge of the reality. Never start from zero. A common sense definition should be your base.  I can guarantee that if you approach a business person with &#8220;What is an X?&#8221; then you will come away empty-handed, but if you ask &#8220;Is X a Y or a Z&#8221; then you will get somewhere. Use plenty of examples to refine definitions or illustrate incompatible scenarios.  </p></li></ol><p>Do all of this, and do it in a friendly way, without condescension or finger-pointing, and you will be off to a very good start. The client will be reassured that you care about the actual problem and you will know what you are talking about.</p><p>Please do send me your questions and work dilemmas. You can <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jtwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The white stuff</h2><p>Will human-produced art and entertainment - music, novels, movies, poetry - soon become a luxury product, only for the connoisseur? Will the rest of us be fed on mass-produced, machine-generated dross? Will media consumption soon be divided between the cultural equivalents of a farmer&#8217;s market and a budget supermarket? These are the questions hinted at towards the end of <em><a href="https://cs.nyu.edu/~davise/papers/GPT-Poetry.pdf">ChatGPT&#8217;s Poetry is Incompetent and Banal</a>. </em>This short but fascinating paper is itself a response to <em><a href="https://www.nature.com/articles/s41598-024-76900-1">AI-generated poetry is indistinguishable from human-written poetry and is rated more favorably</a>, </em>in which the authors ran two sets of experiments to determine how poetry produced by ChatGPT compares to the real thing. In the first they asked their respondents to pick out genuine poems by famous poets from among ChatGPT-produced imitations; in the second they asked their respondents to rate a selection of ChatGPT and human-produced poems without knowing which was which. The result was that in the identification exercise, &#8220;participants performed below chance levels in identifying AI-generated poems (46.6% accuracy, &#967;<sup>2</sup>(1, N&#8201;=&#8201;16,340)&#8201;=&#8201;75.13, p&#8201;&lt;&#8201;0.0001)&#8221;, and that in the preference experiment they overwhelmingly preferred the AI-generated poems.</p><p>It&#8217;s a nice irony that the person leaping to the defence of poetry in the second paper, Ernest Davis, is a professor of computer science at New York University, while the champions of ChatGPT are professors within the humanities; even better, while the latter run and analyse a set of statistical experiments, Professor Davis makes his points using textual criticism. You might think I&#8217;d be team stats, but no I agree with Davis, the ChatGPT efforts are undoubtedly crap. As he puts it:</p><blockquote><p>All in all, the AI poems seem like imitations that might have been produced by a supremely untalented poet who had never read any of the poems he was tasked with imitating, but had read a one-sentence summary of what they were like.</p></blockquote><p>But then why did the results in the first paper come back as they did? In short, Davis&#8217;s answer is that most people don&#8217;t understand poetry. They don&#8217;t expect it to be &#8220;di&#64259;cult and spiky&#8221;. On top of this they have low expectations of AI output and so mistake the weirdness of real poetry for AI imperfections. Thus we cannot conclude from these results that there is no difference, qualitatively, between human-generated and AI-generated poetry. Davis argues that:</p><blockquote><p>one could formulate reasonable, measurable, psychological and linguistic criteria under which the real poem is hands down more sophisticated, richer, thought-provoking, deeper, etc. But a preference for the cheery, shallow AI poem may be perfectly reasonable.</p></blockquote><p>This is uncomfortable territory. On the one hand might feel elitist to claim that most people just don&#8217;t get poetry, but at the same time it feels reassuring that, with a bit of effort to take us beyond the banal, humans can still comfortably outrun LLMs. </p><p>Davis ends his paper by referring us to a similar experiment conducted by the literary critic I. A. Richards in the 1920s and described in detail by George Orwell. In this version, students were presented with rarely seen poems by major poets and bad poems by minor poets and asked to evaluate them. The results were of course that supposed &#8220;lovers of poetry have no more notion of distinguishing between a good poem and a bad one than a dog has of arithmetic.&#8221; This leads Davis to conclude:</p><blockquote><p>I also think it is a safe bet that the idea that, one hundred years later, scientists would write that drivel generated by an automaton is &#8220;indistinguishable&#8221; from Shakespeare and Whitman would not have occurred to I.A. Richards in his darkest dreams, and would have occurred to Orwell only in his darkest dreams.</p></blockquote><p>Orwell&#8217;s darkest dreams famously took shape in <em>1984</em>, where novels and song lyrics were written by machines &#8220;for the benefit of the proles&#8221;. Is that where we are heading? Is that what the first paper is pointing to? I suspect things are not that serious. In selecting poetry the authors have picked a genre which, let&#8217;s face it, most people either dislike or are indifferent to. Had they picked film or music or fiction, matching their participants to genres they genuinely cared about, then I think the results would have looked different. Still, in all the discussion about AI rising to approach human intelligence, not much is said about the possibility that, numbed by its output, we might meet it halfway.</p><p>  </p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The dunghill</h2><p>This month&#8217;s dunghill is based on a hunch. Once again it&#8217;s market research in the frame but this time the topic is AI-driven sample size boosting. This is quite different from the synthetic respondents issue we covered back in the <a href="https://glasseye.substack.com/i/146165448/synthetic-survey-respondents-a-revolution-in-research-methods-or-the-worst-idea-ever">July issue</a>. There we questioned the wisdom of using LLMs as a surrogate for real world respondents. There&#8217;s no suggestion here that LLMs are involved. Rather, or so it is claimed, techniques borrowed from image processing are used to &#8220;amplify the patterns in the data&#8221;.</p><p>Let&#8217;s look at what sample size boosting says it can do. We&#8217;ll pick on Toluna as they seem to be <a href="https://tolunacorporate.com/in-the-press/toluna-launches-harmonaize-transforming-market-research-with-advanced-synthetic-data-solutions/">making a lot of noise</a>, but there are a lot of competitors offering similar services:</p><blockquote><p>Toluna HarmonAIze Boost, the first product in the new suite, empowers clients to conduct deep-dive analysis on small or niche subgroups where collecting enough real-world data would traditionally be time-consuming or impossible. By amplifying patterns in existing data, Toluna HarmonAIze Boost helps unlock valuable insights without the need for additional data collection.</p></blockquote><p>Now I&#8217;m currently at the self-doubting stage where it still seems inconceivable that so many businesses would have invested so much money in something that doesn&#8217;t do what it says it does. But still I have a vague feeling that all is not as it should be. At a high level this is based on the following:</p><ul><li><p>I can&#8217;t yet find any rigorous academic research to explain or back up the big ideas behind sample size boosting. </p></li><li><p>I&#8217;m pretty sure that where information is concerned there can be no free lunch, a small data set is a small data set.</p></li><li><p>I know that everyone is under enormous pressure to produce AI-driven tools. </p></li></ul><p>But I also have some more detailed concerns. I&#8217;m going to stay on Toluna as I went to the trouble of watching the <a href="https://toluna.wistia.com/medias/q8tnuxmvpz">introductory video</a> to HarmonAIze Boost. There we learn that sample-size boosting will unlock insights from small subsets within our data - hard-to-reach groups, or people we didn&#8217;t know we would be interested in (you might already be screaming <a href="https://glasseye.substack.com/i/146165448/the-dunghill">QRPs</a>!) These groups can be as small as 50 and they will be magnified to around a thousand, after which they can be fed into familiar analytical processes such as regression models for key driver analysis, clustering algorithms and factor analysis.</p><p>To help explain the sample-size boosting process the presenter used the example of digital image upscaling, a process which uses various statistical and machine learning-based algorithms to enlarge digital photos while avoiding pixelation. Just as you can pinch and zoom on a digital image, the presenter explained, so sample-size boosting allows you to pinch and zoom on your low-resolution (small sample) data set. The impression is that those &#8220;niche subgroups&#8221; that sample size boosting will allow us to zoom in on are like heavily pixelated figures in the background of a photo. I&#8217;m not sure this analogy works. If a pinky-brown pixel stands in an image where a person&#8217;s face should be (and would have been with a higher resolution camera) then no amount of modelling is going to bring back the face. In fact it&#8217;s more likely to be the opposite - the pixel will be erased as noise. However the de-pixelation is done (smoothing, VAEs, CNNs) the principle is the same. A model of some kind is fitted, which hopefully preserves the signal and throws away noise - you get a sharper but more basic shape. What the process does not do is reveal some previously hidden intricate details.</p><p>So much for the analogy, but then perhaps it failed to capture all the cleverness. What about the actual process used? The presenter mentions that a <a href="https://en.wikipedia.org/wiki/Copula_(statistics)">Gaussian copula model</a> is being fitted and that their model was inspired by work in medical imaging. From that I assume she is referring to something like the process described in <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC4235514/">this</a> paper. If you read closely you will see that here a Gaussian copula model is being used as a feature extraction process - it just so happens that data is being sampled from the learnt Gaussian copula model and fed into the classifier, which is a rather unorthodox method for passing learnt features to a classifier. Could someone within the market research sector have read this paper and concluded that this simulation step instead of extracting simpler more stable features in fact created more detail?</p><p>As every good machine learning engineer knows feature extraction is part of the classifier. It is not a magical step that creates a better data set prior to the learning. But I&#8217;m worried that this is what Toluna and their competitors are doing: learning a model from the original data, using that model to generate more data, and then suggesting we feed this data into more traditional models. </p><p>Why is that a problem? Well, it&#8217;s not if you bolt together the Gaussian copula model and factor analysis and call it a dimension reduction tool, or the Gaussian copula model and regression and call it a regressor in the machine-learning sense. But if you think you are somehow doing factor analysis, or regression in the classical sense (where statistical inference is used to estimate parameters) on an expanded sample, with all the joy that a higher N will bring to the certainty around your parameters, then you are sadly mistaken. </p><p>Could this all be a misunderstanding? The large sample coming out of the Gaussian copula model despite its size contains less detail - that&#8217;s the whole point: it&#8217;s not a sample from the original population, it&#8217;s a sample from a model fitted to the data, designed to bring out its broad features. That&#8217;s why in the paper I cited above it leads to more stable predictions. But researchers are raised on the mantra that more sample equals more detail. Not in this case.</p><p>As I said at the beginning, I&#8217;m going to be a coward at this point and hedge wildly. I&#8217;ve only just started looking at this. If I&#8217;m wrong please educate me.</p><p>If you have some particularly noxious bullshit that you would like to share then I&#8217;d love to hear from you.  <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><h2>From Coppelia</h2><h3>Out with the old, in with the new</h3><p>The toolbox has had a spring clean this month with three very successful substitutions:</p><ul><li><p><strong>Polars for pandas: </strong>I wholeheartedly recommend this one. Pandas has served us well but <em>it is time</em>. It&#8217;s a particular joy to be free from panda indexes (no more <code>reset_index</code>), but I&#8217;m also enjoying the tidyverse style chaining and the overall simpler syntax. </p></li><li><p><strong>Cursor for vscode: </strong>I was a bit late to the party here, but I&#8217;m glad I showed up. As everyone says, the collaboration with LLMs is almost frictionless. You can feel your brain changing!</p></li><li><p><strong>Mkdocs for sphinx: </strong>I wanted to go from python docstrings to package documentation written in markdown. Sphinx, my go-to, seemed to struggle which led me to mkdocs. Fantastic, with lots of marketplace add-ons. </p></li></ul><h3>New year, new skills</h3><p>Use your training budget effectively this year. Instead of spending it on generic, web-based courses that are forgotten the moment they&#8217;re over, let me prepare something specific for you and your team, based on problems you face right now. I cover just about any topic in AI, data science and statistics. See <a href="https://www.coppelia.io/services/training">here</a> (although a bit out of date) and <a href="https://glasseye.substack.com/i/151934968/from-coppelia">here</a> for some ideas. </p><div><hr></div><p>If you&#8217;ve enjoyed this newsletter or have any other feedback, please leave a comment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/p/glasseye-844/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.glasseye.ink/p/glasseye-844/comments"><span>Leave a comment</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>I do accept that rigorous definitions are needed to construct databases, applications, etc. but once that has happened, a maddeningly imprecise language grows up around them.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>To give a particularly extreme example, I recently reviewed documentation for a model optimising the flow of traffic through a network in which time was not mentioned once!</p></div></div>]]></content:encoded></item><item><title><![CDATA[Glasseye]]></title><description><![CDATA[Issue 8: December 2024]]></description><link>https://www.glasseye.ink/p/glasseye-2f6</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-2f6</guid><pubDate>Mon, 09 Dec 2024 09:00:31 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/37ed64b5-b2e5-446b-a72a-081942fd3616_1320x742.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this month&#8217;s issue: </p><ul><li><p>Can you honestly say that you do AI? <strong><a href="https://glasseye.substack.com/i/151934968/the-dunghill">The dunghill</a></strong> looks at the shifting boundaries of a buzzword and the dilemmas it throws up. </p></li><li><p>G&#246;del and hallucinations in <strong><a href="https://glasseye.substack.com/i/151934968/the-white-stuff">the white stuff</a></strong><a href="https://glasseye.substack.com/i/151934968/the-white-stuff">.</a></p></li><li><p>What&#8217;s my ontology? This is the first question you should ask when tackling a difficult problem.  <strong><a href="https://glasseye.substack.com/i/151934968/semi-supervised">Semi-supervised</a></strong> explains why.</p></li></ul><p>And if you&#8217;d like to revisit some of this year&#8217;s content, I&#8217;ve put together a <a href="https://glasseye.substack.com/p/all-the-sections">new page</a> that brings it all together. </p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aMhN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105008,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>Semi-supervised</h2><p>In <a href="https://glasseye.substack.com/i/151169479/the-dunghill">last month&#8217;s dunghill</a>, I did some reckless boasting about being able to solve problems in situations where the problem does not fit a well-known template (such as regression or straightforward optimisation). I said I could offer tips, and so for the next few months, I will make good on that promise. I have no overall method (be suspicious of anyone claiming to have one), just lots of angles. So here&#8217;s one of them.</p><p>One of the first questions I ask myself when given a new problem is: <em><strong>What&#8217;s my ontology?</strong></em> What are the relevant things - real, solid, three-dimensional things - in the problem domain? This might seem so obvious that it&#8217;s not worth stating, but it will introduce clarity to your thinking right from the very start. Why? Because:</p><ol><li><p><em>It forces you to decide which things are part of the problem and which are not. </em>A common but bone-headed reaction to a brief is to start gathering data about anything in any way related to the problem. Before long, you are drowning in a pool of data that you feel you must somehow make use of. If instead you think carefully about which entities matter for solving the problem, then you will start the process lean rather than bloated. Do digital devices matter to my measurement problem? Are stores important for forecasting sales? Does the problem demand that my basic entity is a person, or can I do just as well with groups?</p></li><li><p><em>It steers you away from abstractions.</em> Businesses love abstract nouns - <em>innovation, strategy, risk, engagement, customer satisfaction</em> - they maximise impressiveness and minimise commitment. Your ontology will help clear away the fog by insisting that the conversation is about concrete things. Don&#8217;t tolerate talk of &#8220;customer engagement&#8221;. You need to look at people, doing things with other things, in a place, at a time.</p></li><li><p><em>It forces you to pin behaviours and attributes to things</em>. Brand is a good example here. Without an ontology, it seems to float about, elusively - all things to all marketeers. But what really matters are psychological states, belonging to people, influencing their actions, and, in turn, influenceable by marketing. </p></li><li><p><em>It helps you to see other dimensions of a problem.</em> As soon as you start thinking about concrete entities, the spatial and temporal considerations all come out. When will this machine learning model be applied to the customer? When they join? After a year? Every day? What do you mean by customer lifetime? When would it end? If a customer returns, is that another lifetime? </p></li><li><p><em>It brings out relationships and hierarchies. </em>The classic case here is that of confounding factors in causal models. Hopefully, you will have considered such things when deciding which entities are part of the problem. (If we are interested in how X affects Y but decide that W also affects Y, then W better also be an entity in your ontology.) But now that your entities are laid out in front of you, other relationship questions suggest themselves. Does W also affect X, and does that matter? Is W really just a type of X? And so on.</p></li></ol><p>None of this is exactly new - for decades, software engineers have focused their efforts by building entity-relationship diagrams.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> But it is not a common first step for data scientists and statisticians. It won&#8217;t solve your problem, but I guarantee it will make it clearer. </p><p>Please do send me your questions and work dilemmas. You can <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jtwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The white stuff</h2><p>After the discussion of hallucinations in <a href="https://glasseye.substack.com/i/151169479/semi-supervised">last month&#8217;s semi-supervised</a>, I came across two recent academic papers<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> on the topic. (There are actually hundreds. It is, for the moment, a very active research area.)</p><p>Both papers have the same aim: to prove mathematically that hallucinations are an inevitable feature of large language models. Both seem to be G&#246;del-inspired. </p><p>The first, <a href="https://arxiv.org/pdf/2401.11817">Hallucination is Inevitable: An Innate Limitation of Large Language Models</a>, defines a simple, formal world in which the relationship between LLM output and the ground truth is unproblematic. (As we saw last month, this definitely is not the case for the wider world.) This makes a hallucination easy to define: it is simply an inconsistency between the two. The authors then prove that hallucinations are inevitable even in this much simpler world, and since this simple world sits inside the real world, it follows that hallucinations are inevitable there too. G&#246;del did something similar when he proved that even something as basic as arithmetic on the natural numbers could not be grounded in the axioms of logic. This floored the much grander logicist project of grounding the whole of mathematics and science in logic.</p><p>The second paper, <a href="https://arxiv.org/pdf/2409.05746">LLMs Will Always Hallucinate, and We Need to Live With This</a>, takes a different approach. It shows how the causes of hallucinations inevitably enter the process of training an LLM and the process of generating its output. A crucial part of their argument - the part where they show that an LLM will hallucinate, regardless of how it is trained - is based on the halting problem, which is intimately related to G&#246;del&#8217;s First Incompleteness Theorem.</p><p>Which is interesting. Perhaps some parallels?  G&#246;del&#8217;s theorems undermined the grandiose plans of a group of brilliant but quite arrogant men&#8230;</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The dunghill</h2><p>How long will your integrity hold out against the combined might of ten million marketing departments? At what point do you accept that the bandwagon is now the regular bus into town, and it&#8217;s time to get on board? If you have even a shred of decency and a job in data science, statistics, computer science or an adjacent discipline, then you will have asked yourself this question at least once in the last five years. More specifically, your thoughts will have run along roughly these lines: &#8220;Should I be describing what I&#8217;m doing as AI? After all, the techniques I use are part of AI? And people have been talking about part of AI (machine learning) as though it were the whole of AI for some time now. Has the word already changed its meaning? In which case insisting on the original meaning just makes me a pedant. (Remember all the soul-searching about &#8220;data science&#8221;.) Or is a perfectly good and well-defined concept under assault from cynical market forces, and if so shouldn&#8217;t I be leaping to its defence?&#8221;</p><p>For the record, I caved around 2020, partly because I felt I could justify the label but mostly to avoid commercial irrelevance. But I admire anyone in the business who lasted longer. I recently spoke to one such person. She runs a business building specialist optimisation models for agriculture. These models are mathematically sophisticated, and it was not too much of a stretch to describe them as making intelligent decisions. But she held out valiantly, way longer than me, until she passed a point where it seemed perverse to continue. But when the moment came to make the switch, to pin on the AI badge and smile nervously&#8230;  something unexpected happened. Her client was ahead of the game. They knew exactly what AI was, and they knew that this wasn&#8217;t it. How did they know? Because nowhere, neither in the front end nor under the bonnet, was there any sign of a chatbot.</p><p>It is worth, if only for the sake of our collective sanity, retracing the path that got us here. I&#8217;m not talking about the recent history of AI (<a href="https://glasseye.substack.com/i/150015895/the-white-stuff">although that is fascinating</a>) but rather the recent history of the term &#8220;AI&#8221; in the workplace. Here is my personal recollection of about fifteen years of verbal gymnastics.</p><p>A decade and a half ago, AI was (S<em>till is!</em> I hear someone scream) a multi-disciplinary field of research. It was the world of <em>AI: A Modern Approach</em> by Russell and Norvig (still the best introductory textbook on AI). Machine Learning was just one of many sub-disciplines called upon to solve the problem of creating a computer agent that could &#8220;operate autonomously, perceive their environment, persist over a long period of time, adapt to change, and create and pursue goals&#8221;.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> (Hold onto this definition - you will see it again!) AI was on campus, where it belonged. In the workplace, we used bits of it for specialist jobs, but I tell you now, had I described my random forests model as artificially intelligent, I would have been led off quietly to HR.</p><p>All this changed with the arrival of deep learning. The part became the whole. Machine learning swelled up to fill the whole of AI, squeezing everything else (including, crucially, the goal of creating a fully autonomous agent) into the corners.</p><p>But it didn&#8217;t stop there. Over the next decade, AI as a buzzword blew up, supernova-like, into a fiery ball, many times its previous size, so that its boundaries easily encompassed statistical modelling, data engineering, data science and simulation. This was the moment in which anyone north of Excel could claim to be doing AI - the public knew no different.</p><p>But then, just as a supernova dissipates, leaving a tiny neutron star with an enormous gravitational pull, so the boundaries of AI (the buzzword) rapidly receded, falling back not just to machine learning, but narrower still, to the edges of a sub-discipline within a sub-discipline - large language models. Left out in the cold were not just my agriculture-optimising friends but all those who had reluctantly given way to the new terminology.  Because now the public had a point of differentiation: AI is something you can chat with.</p><p>A final cruel twist for those who have watched their discipline swell up and contract like Grandma in <em>George&#8217;s Marvellous Medicine</em> can be found in the recent trend for something called &#8220;Agentic AI&#8221;. I found <a href="https://www.geeksforgeeks.org/what-is-agentic-ai/">this definition</a> online:</p><blockquote><p>Unlike traditional AI systems that require human intervention for decision-making, Agentic AI operates independently, using its internal models, learning algorithms, and decision-making processes to navigate and interact with its surroundings.</p></blockquote><p>This works only for those suffering from long-term memory loss. In that case, &#8220;traditional&#8221; would mean the last five years, and the idea of autonomous agents would indeed be something new.</p><p>If you have some particularly noxious bullshit that you would like to share then I&#8217;d love to hear from you.  <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><h2>From Coppelia</h2><p>It&#8217;s time to remind you that Coppelia runs <a href="https://www.coppelia.io/services/training">short courses</a> and <a href="https://www.coppelia.io/services/mentoring">mentoring</a> sessions covering in detail many of the topics we have <a href="https://glasseye.substack.com/p/all-the-sections">touched on this year</a>, including:</p><ul><li><p>Bayesian statistical modelling </p></li><li><p>Machine learning</p></li><li><p>Best practice in statistics and data science</p></li><li><p>Proper A/B testing</p></li><li><p>Simulation</p></li></ul><p>And probably most relevant of all this year</p><ul><li><p>How to emerge from the LLM hype cycle unscathed!</p></li></ul><p>If you&#8217;d like to be mentored by me, or would like me to run workshops for you and your team, then just drop me a line at simon@coppelia.io.</p><div><hr></div><p>If you&#8217;ve enjoyed this newsletter or have any other feedback, please leave a comment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/p/glasseye-2f6/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.glasseye.ink/p/glasseye-2f6/comments"><span>Leave a comment</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>And this way of thinking will set you up nicely when it comes to translating the problem into code!</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Preprints at the moment, I believe.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Russell, S., Norvig, P., 2016. Artificial Intelligence: A Modern Approach. Pearson. p. 4.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Glasseye]]></title><description><![CDATA[Issue 7: November 2024]]></description><link>https://www.glasseye.ink/p/glasseye-09f</link><guid isPermaLink="false">https://www.glasseye.ink/p/glasseye-09f</guid><pubDate>Tue, 12 Nov 2024 10:31:04 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a68066f1-4dff-4697-bd3d-78c49a2f78c4_839x472.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this month&#8217;s issue: </p><ul><li><p><strong><a href="https://glasseye.substack.com/i/151169479/semi-supervised">Semi-supervised</a></strong> looks into the problem of defining a hallucination</p></li><li><p>The tables are turned for machine learning and philosophy in <strong><a href="https://glasseye.substack.com/i/151169479/the-white-stuff">the white stuff</a></strong></p></li><li><p><strong><a href="https://glasseye.substack.com/i/151169479/the-dunghill">The dunghill</a> </strong>rails against the naysayers</p></li><li><p>Plus a logic-powered agent explores <em>Indy World, </em>and we finish with a useful Bayesian snippet.</p></li></ul><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aMhN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105008,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aMhN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!aMhN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e6eaf9-c985-41c0-a09c-44272eaff322_730x150.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>Semi-supervised</h2><p>I&#8217;m not sure I should thank <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Chris Duncan&quot;,&quot;id&quot;:17301289,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/040e6533-1c68-4ad6-ad32-45d514027500_2742x2742.jpeg&quot;,&quot;uuid&quot;:&quot;1439a131-1ab4-4332-8b5b-9d557e2895ba&quot;}" data-component-name="MentionToDOM"></span> for this month&#8217;s question. So short and innocent looking - who would have thought it would turn out so nasty? The question was: &#8220;What is a hallucination?&#8221; - in the context of large language models.</p><p>The main players give straightforward answers. <a href="https://cloud.google.com/discover/what-are-ai-hallucinations">Google</a> says, &#8220;AI hallucinations are incorrect or misleading results that AI models generate.&#8221; <a href="https://docs.anthropic.com/en/docs/test-and-evaluate/strengthen-guardrails/reduce-hallucinations">Anthropic</a> says that hallucinations occur when LLMs &#8220;generate text that is factually incorrect or inconsistent with the given context.&#8221;</p><p>So why not just call it what it is - an error? Cynical folk will suspect a euphemism, but I don&#8217;t think this is fair. &#8220;Hallucination&#8221; might not be right,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> but I can see why a new label is needed.</p><p>This point is best made by contrasting an LLM&#8217;s output with that of an old-fashioned machine-learning classifier. The classifier learns to predict the right label for a set of inputs, the so-called ground truth. Presented with a new set of inputs the classifier gets it right if it predicts the right label. &#8220;Apple&#8221; for apple, &#8220;pear&#8221; for pear.</p><p>Now see how horribly complicated the concept of error gets for an LLM. A prompted LLM is playing a game of complete the sentence. Given a sequence of tokens (the prompt), it predicts the most likely set of tokens to follow,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> based on the billions of text chunks it has been trained on (and some additional feedback from human beings). But if we now ask whether the LLM has got it right, we run into some problems:</p><ol><li><p>What is the ground truth in this case? This was straightforward for the classifier. The ground truth is the label or, if you like, the bit of the world that got labelled - in this relatively simple situation it doesn&#8217;t make a difference which you choose. But what is the LLM trying to get right? Its description of the world, or the chunk of text most likely to follow the prompt? (If you are old enough and from the UK you can imagine chatGPT as a contestant on <em>Family Fortunes</em>!) This distinction is most stark when we think about prompts that demand a creative response: &#8220;Write a poem about &#8230;&#8221; Here the ground truth cannot be some fact about the world. Which makes us wonder whether it ever makes sense to grade an LLM on whether it gets the facts right.</p></li><li><p>What do we mean by wrong? When we compare the predicted label &#8220;apple&#8221; and a particular fruit this is usually simple, but when comparing a chunk of text to the world there are so many more ways in which it can be wrong. It can be wrong on a minor detail that does not matter much, or it can be wrong on a detail that turns out to be crucial, or it can be mostly right, or it can be a complete fabrication, or it can just be misleading (however you define that).<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> Do we have degrees of wrongness? If not, where is the line?</p></li><li><p>And if we do decide that the ground truth is the text and not the world, then we are no better off because how do we know if it has got the text right? When a standard machine learning classifier comes across some novel input (say, an image of an apple that was not seen in the training data), then whether it gets the classification right is uncontroversial. But, without referencing the world, who can say which bits of text are <em>supposed</em> to follow a given prompt?</p></li><li><p>When the temperature parameter is increased on an LLM more randomness is allowed to creep into the generation of the token sequence. But can a process that involves deliberate randomness truly be said to have got something right? After all, the answer will be different the next time you run it. Using the philosopher&#8217;s standard definition of knowledge as justified true belief, any correct answer from an LLM appears to lack justification. Compare this to the average machine learning classifier, which can at least justify its answer, even if that justification is often difficult to understand.</p></li></ol><p>Given all this, I can well understand why someone felt that a more exotic word than &#8220;error&#8221; was needed. And it&#8217;s true that the term &#8220;hallucination&#8221; does capture the sense in which LLM output is sometimes aligned with reality and sometimes not, slipping between the two because getting the facts right was never its primary concern.</p><p>Sorry Chris, I think I have, once again, failed to answer your question, other than by saying &#8220;hallucination&#8221; is a placeholder because &#8220;wrong&#8221; does not seem right.</p><p>Please do send me your questions and work dilemmas. You can <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jtwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jtwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Jtwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1369e9cc-0fa3-4918-8654-1e29bc78a0cf_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The white stuff</h2><p>An audio recommendation this month: the philosopher <a href="https://en.wikipedia.org/wiki/Timothy_Williamson">Tim Williamson</a> is on the podcast <a href="https://partiallyexaminedlife.com/2024/11/04/ep354-1-tim-williamson-heuristics">The Partially Examined Life</a> to talk about his latest book <em>Overfitting and Heuristics in Philosophy. </em>You can probably guess from the title why we are talking about it here! Usually philosophy is used as a tool to pick apart the more problematic areas of science - statistics, data science and AI included. But here Prof Williamson turns it around and applies a concept very familiar to us - overfitting - to philosophy itself. This is the man who managed to convince most contemporary philosophers<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> that there is a sharp but unknowable boundary between a bald person and a person with hair. It cannot be anything but interesting!</p><p>On the topic of overfitting thanks to <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Simeon Duckworth&quot;,&quot;id&quot;:2621504,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/36b6e2de-f3fd-44e3-86e1-55d85b553da8_144x144.png&quot;,&quot;uuid&quot;:&quot;afefd1bd-cfc0-4f34-806e-5f8d802b0f35&quot;}" data-component-name="MentionToDOM"></span> for forwarding me the paper <a href="https://arxiv.org/pdf/2407.12220">Questionable practices in machine learning</a> after reading the <a href="https://glasseye.substack.com/i/146165448/the-dunghill">July issue</a>. Machine learning is my happy place when I get frustrated with all the fakery in statistics so this sobering.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N4_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png" width="730" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88380,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N4_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 424w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 848w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1272w, https://substackcdn.com/image/fetch/$s_!N4_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F378aaf2a-4cdf-4f6b-94d1-9f428c6f24ae_730x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>The dunghill</h2><p>It&#8217;s true; we&#8217;ve been a bit hard recently on people who like to say yes. We&#8217;ve tended to lump them together with all kinds of deluded, eager-to-please go-getters. This month we will even things up - saying yes is not a sin and indeed the naysayers have a bullshit of their own. </p><p>A recent recipient of the &#8220;no&#8221; variety was a client of mine. She explained how frustrated she was with her internal data science team. Nothing would move forward; every project she proposed would come to a halt on the pretext of inadequate data or unmet modelling requirements. </p><p>Now to those who say, in response to a data set and a question, it can&#8217;t be done, I say this (full-on preacher mode now): here is some data; here is the question; and sitting between the two is a system - mechanical, biological, economic, social - that both generated the data and motivated the question. Your job is to explain, as best you can, how the data relates to the question, even if the answer is that there is no relation. This is usually extremely difficult and might require no end of caveats, but it is rarely impossible, and it should be a point of honour that you at least try!  All the statistical and algorithmic tools we have exist only because this problem has been cracked in a small number of cases. </p><p>So by all means say, "This can't be done using linear regression," or "There's an entire PhD's worth of work here," or even, &#8220;I don&#8217;t know how to do this; we need help,&#8221; just not that it cannot be done.</p><p>This extends to the problem of bad or incomplete data. Whoever or whatever is responsible for the badness must be considered part of the system that generated the data - and so part of this ever more intriguing problem.</p><p>We could put it another way: as a statistician you need never say no. Quantifying uncertainty is your trade. If your first objection is, &#8220;This will be wrong,&#8221; then the next question you should ask is, &#8220;How wrong will it be?&#8221; And if even that is unanswerable then your fallback task is to show why it is unanswerable and therefore what can be done to fix it. We always have something to say.</p><p>And how do we solve these very hard problems - the ones that do not fit the templates of those already solved? Each one is different; I can only offer tips. Simulation is a godsend since it allows you to experiment with (and sensitivity test) complex assumptions. Solve the problem first for simpler &#8220;toy&#8221; systems and work your way towards the real world. You may need to go back to first principles and invent new things. And my favourite - divide and caveat: make your results conditional on some clearly stated assumptions about which the client must make a call.  There is nothing wrong with a conclusion that takes the form: if this then that. After all, you can&#8217;t do everything.</p><p>If you have some particularly noxious bullshit that you would like to share then I&#8217;d love to hear from you.  <a href="https://substack.com/@glasseye">DM me</a> on substack or email me at simon@coppelia.io.</p><div><hr></div><h2>From Coppelia</h2><h3>Indy world</h3><p>I&#8217;m very proud to present you with Indy World, a knock off of the famous <a href="https://en.wikipedia.org/wiki/Wumpus_world">Wumpus World</a> popularised by Russell and Norvig in <em><a href="https://www.amazon.co.uk/Artificial-Intelligence-Modern-Approach-Global-dp-1292401133/dp/1292401133/ref=dp_ob_title_bk">Artificial Intelligence: A Modern Approach</a> </em>(still my favourite AI textbook). Wumpus World was too complex for my needs (a short training session on symbolic AI) so I paired it down by killing off the Wumpus. We are left with something very like the opening scene in <em>Raiders of the Lost Ark</em>. Indy must cross the temple floor to retrieve the idol while avoiding the pits. He knows he is near danger when his flaming torch flickers in the breeze coming up from a pit. He knows he is near the idol when his torch lights up the steps.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u5VW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7fdf78-c977-41cc-9b2f-fd2081e4f0cf_1216x1274.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u5VW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7fdf78-c977-41cc-9b2f-fd2081e4f0cf_1216x1274.png 424w, https://substackcdn.com/image/fetch/$s_!u5VW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7fdf78-c977-41cc-9b2f-fd2081e4f0cf_1216x1274.png 848w, https://substackcdn.com/image/fetch/$s_!u5VW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7fdf78-c977-41cc-9b2f-fd2081e4f0cf_1216x1274.png 1272w, https://substackcdn.com/image/fetch/$s_!u5VW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7fdf78-c977-41cc-9b2f-fd2081e4f0cf_1216x1274.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u5VW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7fdf78-c977-41cc-9b2f-fd2081e4f0cf_1216x1274.png" width="1216" height="1274" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb7fdf78-c977-41cc-9b2f-fd2081e4f0cf_1216x1274.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1274,&quot;width&quot;:1216,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:353130,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!u5VW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7fdf78-c977-41cc-9b2f-fd2081e4f0cf_1216x1274.png 424w, https://substackcdn.com/image/fetch/$s_!u5VW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7fdf78-c977-41cc-9b2f-fd2081e4f0cf_1216x1274.png 848w, https://substackcdn.com/image/fetch/$s_!u5VW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7fdf78-c977-41cc-9b2f-fd2081e4f0cf_1216x1274.png 1272w, https://substackcdn.com/image/fetch/$s_!u5VW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7fdf78-c977-41cc-9b2f-fd2081e4f0cf_1216x1274.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://gist.github.com/coppeliaMLA/87d21ec8fe6672386dbb9896b636ab48">Here&#8217;s the code</a> if you&#8217;d like to see how an agent solves this using just propositional logic.</p><h3>Bayes with boundaries</h3><p>Here&#8217;s another useful snippet from this month&#8217;s workload. Quite often we want to estimate a population proportion from some sampled data using an informative prior because we know a priori the upper and lower bounds for that proportion. If we assume that the prior distribution is uniform between lambda (the lower bound) and mu (the upper bound) then the posterior distribution is defined as: </p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;h(x| n, k) = \\begin{cases} C x^{k} (1-x)^{n-k}  &amp; \\text{for } x \\in [\\lambda,\\mu] \\\\\n\n 0  &amp; \\text{otherwise}\n\n\\end{cases}&quot;,&quot;id&quot;:&quot;EPVFXCAZDO&quot;}" data-component-name="LatexBlockToDOM"></div><p>Where <em>C</em> is a normalising constant.</p><p>This is very easy to simulate (no need for pymc):</p><pre><code>import numpy as np

def bayesian_proportion_with_informative_priors(n, k, lam, mu, n_samples=1000):

    p_grid = np.linspace(lam, mu, 1000)

    unnormalized_posterior = (p_grid**k) * (
        (1 - p_grid) ** (n - k)
    )

    # Normalize the posterior
    posterior = unnormalized_posterior / unnormalized_posterior.sum()

    # Sample from the posterior distribution
    dist = np.random.choice(p_grid, size=n_samples, p=posterior)
    return dist</code></pre><div><hr></div><p>If you&#8217;ve enjoyed this newsletter or have any other feedback, please leave a comment.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/p/glasseye-09f/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.glasseye.ink/p/glasseye-09f/comments"><span>Leave a comment</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>It&#8217;s not popular <a href="https://academic.oup.com/schizophreniabulletin/article/49/5/1105/7176424?login=false">here</a> for example.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Strictly speaking it does not always output the most probable tokens. As the temperature parameter is raised the the LLM starts to sample tokens using the predicted probability distribution.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>The authors of <a href="https://arxiv.org/pdf/2409.05746">this preprint</a> identify several interesting categories</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>On the analytic side of the fence that is!</p></div></div>]]></content:encoded></item><item><title><![CDATA[Kamala's 71 paths to victory]]></title><description><![CDATA[From Glasseye]]></description><link>https://www.glasseye.ink/p/kamalas-71-paths-to-victory</link><guid isPermaLink="false">https://www.glasseye.ink/p/kamalas-71-paths-to-victory</guid><dc:creator><![CDATA[Simon Raper]]></dc:creator><pubDate>Tue, 05 Nov 2024 12:30:04 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4facf672-c578-4a27-8752-b02affa3826a_1024x1024.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I'm sure this is already online in a million and one places but it was easier and more fun to do it than to search for it! </p><pre><code>from itertools import combinations

kamala_in_the_bag = 226
swing_states = {'Arizona': 11, 'Georgia': 16, 'Michigan': 15, 'North Carolina': 16, 'Nevada': 6, 'Pennsylvania':19, 'Wisconsin': 10}

for w in range(1, 8):
    comb = combinations(swing_states, w)
    for c in comb:
        swing_state_wins = [swing_states[s] for s in c]
        total_wins = kamala_in_the_bag + sum(swing_state_wins)
        if total_wins &gt;= 270:
            exp = f"{kamala_in_the_bag} + {" + ".join([str(w) for w in swing_state_wins])} = {total_wins}"
            print(f'{", ".join(c)} ({exp})')</code></pre><p>Gives us&#8230;</p><pre><code>Arizona, Georgia, Pennsylvania (226 + 11 + 16 + 19 = 272)
Arizona, Michigan, Pennsylvania (226 + 11 + 15 + 19 = 271)
Arizona, North Carolina, Pennsylvania (226 + 11 + 16 + 19 = 272)
Georgia, Michigan, North Carolina (226 + 16 + 15 + 16 = 273)
Georgia, Michigan, Pennsylvania (226 + 16 + 15 + 19 = 276)
Georgia, North Carolina, Pennsylvania (226 + 16 + 16 + 19 = 277)
Georgia, Pennsylvania, Wisconsin (226 + 16 + 19 + 10 = 271)
Michigan, North Carolina, Pennsylvania (226 + 15 + 16 + 19 = 276)
Michigan, Pennsylvania, Wisconsin (226 + 15 + 19 + 10 = 270)
North Carolina, Pennsylvania, Wisconsin (226 + 16 + 19 + 10 = 271)
Arizona, Georgia, Michigan, North Carolina (226 + 11 + 16 + 15 + 16 = 284)
Arizona, Georgia, Michigan, Nevada (226 + 11 + 16 + 15 + 6 = 274)
Arizona, Georgia, Michigan, Pennsylvania (226 + 11 + 16 + 15 + 19 = 287)
Arizona, Georgia, Michigan, Wisconsin (226 + 11 + 16 + 15 + 10 = 278)
Arizona, Georgia, North Carolina, Nevada (226 + 11 + 16 + 16 + 6 = 275)
Arizona, Georgia, North Carolina, Pennsylvania (226 + 11 + 16 + 16 + 19 = 288)
Arizona, Georgia, North Carolina, Wisconsin (226 + 11 + 16 + 16 + 10 = 279)
Arizona, Georgia, Nevada, Pennsylvania (226 + 11 + 16 + 6 + 19 = 278)
Arizona, Georgia, Pennsylvania, Wisconsin (226 + 11 + 16 + 19 + 10 = 282)
Arizona, Michigan, North Carolina, Nevada (226 + 11 + 15 + 16 + 6 = 274)
Arizona, Michigan, North Carolina, Pennsylvania (226 + 11 + 15 + 16 + 19 = 287)
Arizona, Michigan, North Carolina, Wisconsin (226 + 11 + 15 + 16 + 10 = 278)
Arizona, Michigan, Nevada, Pennsylvania (226 + 11 + 15 + 6 + 19 = 277)
Arizona, Michigan, Pennsylvania, Wisconsin (226 + 11 + 15 + 19 + 10 = 281)
Arizona, North Carolina, Nevada, Pennsylvania (226 + 11 + 16 + 6 + 19 = 278)
Arizona, North Carolina, Pennsylvania, Wisconsin (226 + 11 + 16 + 19 + 10 = 282)
Arizona, Nevada, Pennsylvania, Wisconsin (226 + 11 + 6 + 19 + 10 = 272)
Georgia, Michigan, North Carolina, Nevada (226 + 16 + 15 + 16 + 6 = 279)
Georgia, Michigan, North Carolina, Pennsylvania (226 + 16 + 15 + 16 + 19 = 292)
Georgia, Michigan, North Carolina, Wisconsin (226 + 16 + 15 + 16 + 10 = 283)
Georgia, Michigan, Nevada, Pennsylvania (226 + 16 + 15 + 6 + 19 = 282)
Georgia, Michigan, Nevada, Wisconsin (226 + 16 + 15 + 6 + 10 = 273)
Georgia, Michigan, Pennsylvania, Wisconsin (226 + 16 + 15 + 19 + 10 = 286)
Georgia, North Carolina, Nevada, Pennsylvania (226 + 16 + 16 + 6 + 19 = 283)
Georgia, North Carolina, Nevada, Wisconsin (226 + 16 + 16 + 6 + 10 = 274)
Georgia, North Carolina, Pennsylvania, Wisconsin (226 + 16 + 16 + 19 + 10 = 287)
Georgia, Nevada, Pennsylvania, Wisconsin (226 + 16 + 6 + 19 + 10 = 277)
Michigan, North Carolina, Nevada, Pennsylvania (226 + 15 + 16 + 6 + 19 = 282)
Michigan, North Carolina, Nevada, Wisconsin (226 + 15 + 16 + 6 + 10 = 273)
Michigan, North Carolina, Pennsylvania, Wisconsin (226 + 15 + 16 + 19 + 10 = 286)
Michigan, Nevada, Pennsylvania, Wisconsin (226 + 15 + 6 + 19 + 10 = 276)
North Carolina, Nevada, Pennsylvania, Wisconsin (226 + 16 + 6 + 19 + 10 = 277)
Arizona, Georgia, Michigan, North Carolina, Nevada (226 + 11 + 16 + 15 + 16 + 6 = 290)
Arizona, Georgia, Michigan, North Carolina, Pennsylvania (226 + 11 + 16 + 15 + 16 + 19 = 303)
Arizona, Georgia, Michigan, North Carolina, Wisconsin (226 + 11 + 16 + 15 + 16 + 10 = 294)
Arizona, Georgia, Michigan, Nevada, Pennsylvania (226 + 11 + 16 + 15 + 6 + 19 = 293)
Arizona, Georgia, Michigan, Nevada, Wisconsin (226 + 11 + 16 + 15 + 6 + 10 = 284)
Arizona, Georgia, Michigan, Pennsylvania, Wisconsin (226 + 11 + 16 + 15 + 19 + 10 = 297)
Arizona, Georgia, North Carolina, Nevada, Pennsylvania (226 + 11 + 16 + 16 + 6 + 19 = 294)
Arizona, Georgia, North Carolina, Nevada, Wisconsin (226 + 11 + 16 + 16 + 6 + 10 = 285)
Arizona, Georgia, North Carolina, Pennsylvania, Wisconsin (226 + 11 + 16 + 16 + 19 + 10 = 298)
Arizona, Georgia, Nevada, Pennsylvania, Wisconsin (226 + 11 + 16 + 6 + 19 + 10 = 288)
Arizona, Michigan, North Carolina, Nevada, Pennsylvania (226 + 11 + 15 + 16 + 6 + 19 = 293)
Arizona, Michigan, North Carolina, Nevada, Wisconsin (226 + 11 + 15 + 16 + 6 + 10 = 284)
Arizona, Michigan, North Carolina, Pennsylvania, Wisconsin (226 + 11 + 15 + 16 + 19 + 10 = 297)
Arizona, Michigan, Nevada, Pennsylvania, Wisconsin (226 + 11 + 15 + 6 + 19 + 10 = 287)
Arizona, North Carolina, Nevada, Pennsylvania, Wisconsin (226 + 11 + 16 + 6 + 19 + 10 = 288)
Georgia, Michigan, North Carolina, Nevada, Pennsylvania (226 + 16 + 15 + 16 + 6 + 19 = 298)
Georgia, Michigan, North Carolina, Nevada, Wisconsin (226 + 16 + 15 + 16 + 6 + 10 = 289)
Georgia, Michigan, North Carolina, Pennsylvania, Wisconsin (226 + 16 + 15 + 16 + 19 + 10 = 302)
Georgia, Michigan, Nevada, Pennsylvania, Wisconsin (226 + 16 + 15 + 6 + 19 + 10 = 292)
Georgia, North Carolina, Nevada, Pennsylvania, Wisconsin (226 + 16 + 16 + 6 + 19 + 10 = 293)
Michigan, North Carolina, Nevada, Pennsylvania, Wisconsin (226 + 15 + 16 + 6 + 19 + 10 = 292)
Arizona, Georgia, Michigan, North Carolina, Nevada, Pennsylvania (226 + 11 + 16 + 15 + 16 + 6 + 19 = 309)
Arizona, Georgia, Michigan, North Carolina, Nevada, Wisconsin (226 + 11 + 16 + 15 + 16 + 6 + 10 = 300)
Arizona, Georgia, Michigan, North Carolina, Pennsylvania, Wisconsin (226 + 11 + 16 + 15 + 16 + 19 + 10 = 313)
Arizona, Georgia, Michigan, Nevada, Pennsylvania, Wisconsin (226 + 11 + 16 + 15 + 6 + 19 + 10 = 303)
Arizona, Georgia, North Carolina, Nevada, Pennsylvania, Wisconsin (226 + 11 + 16 + 16 + 6 + 19 + 10 = 304)
Arizona, Michigan, North Carolina, Nevada, Pennsylvania, Wisconsin (226 + 11 + 15 + 16 + 6 + 19 + 10 = 303)
Georgia, Michigan, North Carolina, Nevada, Pennsylvania, Wisconsin (226 + 16 + 15 + 16 + 6 + 19 + 10 = 308)
Arizona, Georgia, Michigan, North Carolina, Nevada, Pennsylvania, Wisconsin (226 + 11 + 16 + 15 + 16 + 6 + 19 + 10 = 319)</code></pre><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.glasseye.ink/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Glasseye! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>