<?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[Bzogramming]]></title><description><![CDATA[Applied, Theoretical Programming Language Design, with some neuroscience, complexity theory, and other influences. Sometimes other stuff.]]></description><link>https://bzolang.blog</link><image><url>https://bzolang.blog/img/substack.png</url><title>Bzogramming</title><link>https://bzolang.blog</link></image><generator>Substack</generator><lastBuildDate>Sun, 19 Apr 2026 00:29:02 GMT</lastBuildDate><atom:link href="https://bzolang.blog/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Charles Rosenbauer]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[bzogrammer@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[bzogrammer@substack.com]]></itunes:email><itunes:name><![CDATA[Charles Rosenbauer]]></itunes:name></itunes:owner><itunes:author><![CDATA[Charles Rosenbauer]]></itunes:author><googleplay:owner><![CDATA[bzogrammer@substack.com]]></googleplay:owner><googleplay:email><![CDATA[bzogrammer@substack.com]]></googleplay:email><googleplay:author><![CDATA[Charles Rosenbauer]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Software Machine Tools]]></title><description><![CDATA[Manufacturing is shaped by machine tools &#8211; the machines that make the machines.]]></description><link>https://bzolang.blog/p/software-machine-tools</link><guid isPermaLink="false">https://bzolang.blog/p/software-machine-tools</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Tue, 03 Mar 2026 01:18:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!K8dp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94390ab5-6bb3-4d26-9932-6bbe578b69ea_2048x1367.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Manufacturing is shaped by machine tools &#8211; the machines that make the machines. There is a wide variety of such tools, with a wide variety of tradeoffs and limitations, and there are no real universal tools.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!K8dp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94390ab5-6bb3-4d26-9932-6bbe578b69ea_2048x1367.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K8dp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94390ab5-6bb3-4d26-9932-6bbe578b69ea_2048x1367.jpeg 424w, https://substackcdn.com/image/fetch/$s_!K8dp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94390ab5-6bb3-4d26-9932-6bbe578b69ea_2048x1367.jpeg 848w, https://substackcdn.com/image/fetch/$s_!K8dp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94390ab5-6bb3-4d26-9932-6bbe578b69ea_2048x1367.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!K8dp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94390ab5-6bb3-4d26-9932-6bbe578b69ea_2048x1367.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K8dp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94390ab5-6bb3-4d26-9932-6bbe578b69ea_2048x1367.jpeg" width="1456" height="972" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94390ab5-6bb3-4d26-9932-6bbe578b69ea_2048x1367.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:972,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;CNC machining | Definition | Processes | Machinery | Automation&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="CNC machining | Definition | Processes | Machinery | Automation" title="CNC machining | Definition | Processes | Machinery | Automation" srcset="https://substackcdn.com/image/fetch/$s_!K8dp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94390ab5-6bb3-4d26-9932-6bbe578b69ea_2048x1367.jpeg 424w, https://substackcdn.com/image/fetch/$s_!K8dp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94390ab5-6bb3-4d26-9932-6bbe578b69ea_2048x1367.jpeg 848w, https://substackcdn.com/image/fetch/$s_!K8dp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94390ab5-6bb3-4d26-9932-6bbe578b69ea_2048x1367.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!K8dp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94390ab5-6bb3-4d26-9932-6bbe578b69ea_2048x1367.jpeg 1456w" sizes="100vw" fetchpriority="high"></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">CNC Mill cutting a part</figcaption></figure></div><p>If you want high-volume, cheap manufacturing, you may want to use progressive stamping, where a flat sheet of metal is shaped and cut, step by step, by hard metal dies driven by a hydraulic press. If you can design your part such that it can be made by simply pressing and cutting a flat sheet of metal into shape with this simple process, it can be made absurdly cheaply and efficiently.</p><p>If you need something with far greater complexity than a simple flat sheet can provide, then there are a variety of other options &#8211; casting, lathes, CNC milling, 3D printing, and more. There also are many very special-purpose machines for making things like bolts, screws, wires, pipes, and more in bulk. A 3D printer may be able to make a part with an incredibly complex and intricate geometry, but it will generally be very slow, with limited choice of material, and often producing parts full of defects, voids, and weak spots. A lathe simply spins an object while moving a cutting head &#8211; great for making objects with a degree of rotational symmetry, though creative machinists have spent centuries finding ways to push this machine to do a surprising range of things.</p><p>And while you can hand a 3D printer any arbitrary 3D model to slice and print, there are quite a few things that you can&#8217;t print in practice. Objects with floating parts or overhangs can sometimes be salvaged with support structures or by reorienting the part, but for the most part are beyond the scope of what a 3D printer can do. Material choice is usually pretty limited, and most printers don&#8217;t support more than one material at a time.</p><p>We can look to sci-fi, there have for decades been dreams of atomic replicators and molecular assembly machines; effectively 3D printers assembling objects atom-by-atom. An alternate route was originally proposed by Robert Heinlein in his story <a href="https://en.wikipedia.org/wiki/Waldo_(short_story)">Waldo</a> (1942), where a scientist builds controllable mechanical arms, which then build smaller arms, which build even smaller arms, and so on until they reach down to the molecular scale. However, the machines from Waldo (often referred to as &#8220;waldoes&#8221;) run into problems; among other issues, physical processes work differently across scales and a design that works well at one scale may work very poorly at a different scale.</p><p>Atomic replicators, even if we could build them, still run into many of the same problems as 3D printers. Simply because you can specify every atom in an object with an atomic number and X,Y,Z coordinates does not mean that you can actually place atoms in that arrangement. You must factor in how the atoms interact with each other and the tool itself, you must factor in how the atoms move around once they&#8217;ve been placed, you must factor in whether or not a molecule is stable enough to hold itself together when it&#8217;s only been half-built. Any manufacturing process, no matter how exotic, has the constraint that the object it&#8217;s building must not only be stable as a final product, but also must be stable at every step throughout the entire process of forming it.</p><p>An atomic assembly process would also undoubtedly have limits in terms of what materials and temperature ranges it can work in. Whatever processes produced and shaped the parts of this machine can also unshape it, and may be outside the domain of what it can actually assemble. Can your extremely sensitive atomic assembly machine safely handle highly corrosive fluorine? Can it handle radiation? Can it print dry ice at -110 degrees? Can it print at 1500 degrees? Can it print a glass of water? Can it print a cell without the cell wall bursting like a bubble when only half-built?</p><p>I don&#8217;t think it&#8217;s very ridiculous to say that your 3D atomic assembly machine would not be able to print a nuclear fusion reactor, hundred-million-degree plasma and all. You could perhaps print the fusion reactor and pump in the plasma afterward, but plasma no matter how hot is just a cloud of atoms at specific positions with specific (albeit very high) velocities.</p><p>Of course, all of this completely sidesteps the question of how you would encode the design for atomically-precise objects. Whatever you manufacture would require either an atomically-precise hard drive many times larger than the object you&#8217;re attempting to print, or would require a substantial amount of data compression. Either way, some amount of computation will be required to read this data, decompress it if necessary, compute positions of atoms, plan and schedule the arrangement of atoms and assembly arms (or whatever mechanism actually does the assembly), and to put each atom in place. This computation will almost certainly have a <a href="https://en.wikipedia.org/wiki/Landauer%27s_principle">thermodynamic cost</a>, technically speaking the movement of the atoms would itself count as a type of computation whose thermodynamic footprint would need to be factored in, and so depending on the approach this kind of molecular assembly could also produce enormous amounts of waste heat and consume enormous amounts of energy, which would need to be managed (likely by means of even more energy) to prevent melting the object or the tool itself.</p><p>In short &#8211; there is no true &#8220;universal machine tool&#8221;, and even the craziest sci-fi dreams fall short.</p><p><strong>Software Machine Tools</strong></p><p>In computing, we can perhaps tell ourselves otherwise. Python is Turing-complete after all. In theory, we can build anything with it.</p><p>Matrix multiplication is close enough to Turing-complete, you can emulate any kind of if/else logic in it, and you can emulate any matrix math with enough if/else logic too. It might not be pretty, but it&#8217;s doable. A big enough matrix can emulate any amount of memory, and with enough layers you can emulate any arbitrarily long computation, and the inverses are equally true. There&#8217;s really no reason why, at least in principle, you couldn&#8217;t perfectly recreate all of Claude with conventional programming constructs &#8211; if/else, for/while, data structures, algorithms, arithmetic, strings, lookup tables, and so on. Doing arithmetic with actual arithmetic instructions would probably be more efficient, more understandable, and more correct than <a href="https://transformer-circuits.pub/2025/linebreaks/index.html">whatever crazy matrix math is emulating it</a>.</p><p>The biggest barriers to building this is not the theoretical capabilities of the language, but rather a combination of the sheer volume of code that would need to be written and the lack of human understanding of how to write it. The whole reason why we use neural networks to solve these problems is simply that we have no idea how to build things like image classification and language models by more conventional means, and so we turn to a tool that can generate a program from a large enough volume of data.</p><p>We can consider the expressivity of a language as a matter of how many keystrokes, or perhaps how long of a source file, it takes to accomplish a task. There&#8217;s of course a difference between these two metrics &#8211; autocomplete can remove some repetitive structure in code, and any code will require much more iteration, modification, and debugging than simply writing out every line of code. Languages may vary in how expressive they are &#8211; small amounts of code may unfold into large amounts of machine code based on what language constructs exist. Languages may vary as well in how debuggable and understandable they are, though this is also a product of how the language is used. Manually writing out a table of neural network weights and running the matrix math will be more or less just as incomprehensible in C, Python, Rust, Javascript, Assembly, or APL.</p><p>There is a recreational programming activity called <a href="https://en.wikipedia.org/wiki/Code_golf">&#8220;code golf&#8221;</a>, where programmers attempt to solve problems in the minimum number of characters possible. There are even dedicated languages for code golf, which do fun things like define an empty source file to print &#8220;hello world&#8221;. At the opposite extreme, there is a notion of a <a href="https://en.wikipedia.org/wiki/Turing_tarpit">&#8220;Turing Tarpit&#8221;</a>; a system which is technically Turing-complete, but that is hopelessly impractical and inefficient to use. Many cellular automata can be argued to fall into this category, for example.</p><p>Expressivity is also a matter of the skill of the user. Writing was invented many thousands of years ago &#8211; any words that can be dreamt up can be written down. Theoretically, the solutions to all the world&#8217;s problems are mere words away, if only they can be elucidated. The solutions to all the problems faced in the year 1,000,000 AD could have been pressed into clay tablets 5,000 years ago, if only someone had thought to do so. The tightest bottleneck of all, by a profoundly enormous margin, is not in the pen or the paper or the ink, or the stylus or the clay or the hand, but rather in the brain behind it all.</p><p>Humans engineer things based on what we understand. People have been trying to solve image classification problems for decades, and there is a vast array of &#8220;feature engineering&#8221; methods for hand-writing algorithms to recognizing shapes, objects, faces, and gestures. Then in 2011 a convolutional network called <a href="https://en.wikipedia.org/wiki/AlexNet">AlexNet</a> was trained on a couple GPUs and began thoroughly obliterating all previous methods in benchmarks. There is some family of tricks that the neural network has learned to do that is more powerful than all the techniques we spent decades working on, and after 15 years we still don&#8217;t know what they all are. Of course, there are also many problems which AI tools have not yet delivered despite stubborn and persistent effort &#8211; the elusive &#8220;AGI&#8221; being the most obvious one.</p><p>The fact that a programming language is &#8220;Turing-complete&#8221; and &#8220;universal&#8221; means that in theory it can be used to build anything, but there is absolutely no obligation for this to have any truth in practice. If we want to solve problems that we do not know how to engineer with conventional programming constructs, it may take many orders of magnitude fewer keystrokes and decades of research to simply assemble a training set and pump it into a neural network than to implement everything by scratch.</p><p><strong>Thus I propose the concept of a Software Machine Tool.</strong> There are more ways to build software than conventional programming languages, and neural networks are a clear example. The asymptotic capabilities may all be universal as we approach infinite effort and skill, but different tools can have vastly different capabilities in practice. No one has time to write a trillion lines of code to reimplement Claude or Sora, and training a neural network to correctly and efficiently replicate a browser or terminal or operating system is similarly insane.</p><p>The implication, of course, is that there are presumably many more that we have not yet discovered. Consider the immense value that programming languages have provided for the world in the nearly 70 years since FORTRAN was invented. Consider the immense impact being generated by AI now. Consider what would happen if we found a third class of software machine tools orthogonal in capabilities to either of these, and what that may unlock.</p><p>To some extent, the current wave of AI coding agents is arguably a third category of software machine tool, albeit one with aspects of the other two. Exactly what can be efficiently built is still very heavily constrained by the limitations of conventional programming languages, and the training set of code that has been written with them. There are undoubtedly many world-changing algorithms that have yet to be discovered that have not been added to this training set, and cannot be synthesized on-demand by an LLM. Asking an LLM to write out a table of embeddings with strange properties may be off the table, even if that table would be a relatively small amount of code. On the other hand, the sheer volume of code that can be produced, the iteration speed, and the expressiveness of natural language is a difference in quantity that can perhaps create at least a slight difference in kind.</p><p>There are other options as well. I actually was not someone who was terribly surprised by AI coding tools when they first appeared, as I had been keeping an eye on <a href="https://www.youtube.com/watch?v=Q-3tcbUyF34">code synthesis research</a> which had been going on for many years before. The format and scale was unexpected; I expected something smaller scale and more constraint-based; &#8220;generate code that provably satisfies this strange and difficult set of properties&#8221;. Done well, this kind of approach is still likely very viable and would be able to generate some very strange things that may be well outside the domain of LLM training sets. My guess is it&#8217;s more limited by the imagination of what kinds of useful problems can be productively framed in such a way.</p><p><a href="https://theory.stanford.edu/~aiken/publications/papers/oopsla15a.pdf">Superoptimizers</a> are another interesting approach; rather than writing tens of millions of lines of hand-crafted compiler optimization and analysis passes, simply write a relatively small tool for verifying program equivalence (in general undecidable, but there are decidable subsets of this that can cover the majority of real-world cases pretty easily, as well as ways of covering all cases with conservative-but-safe assumptions), and a search algorithm, such as MCMC or a genetic algorithm. This lets you frame code optimization as a matter of &#8220;find the fastest possible sequence of instructions I can pump into the CPU that is provably equivalent to this code.&#8221; The main thing that has held this back historically is that it&#8217;s &#8220;too slow&#8221; to be practical. However, it&#8217;s very amenable to caching (optimize your code overnight, pull from the cache during the day, only recent changes run slow), and the standard for &#8220;too much compute&#8221; from a few years ago is basically &#8220;less compute than Claude spends generating a single token&#8221;.</p><p>Superoptimizers also are notorious for generating code that is very fast; they can exploit tricks that no human would ever have imagined, that no human would have programmed into a compiler, but they also can generate code that no human can easily understand. Imagine something like the notorious <a href="https://en.wikipedia.org/wiki/Fast_inverse_square_root">fast inverse square root algorithm</a>, but for every line of code.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rnZv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feabb26b6-6015-4ca2-b853-9b2e52177cf6_960x373.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rnZv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feabb26b6-6015-4ca2-b853-9b2e52177cf6_960x373.png 424w, https://substackcdn.com/image/fetch/$s_!rnZv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feabb26b6-6015-4ca2-b853-9b2e52177cf6_960x373.png 848w, https://substackcdn.com/image/fetch/$s_!rnZv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feabb26b6-6015-4ca2-b853-9b2e52177cf6_960x373.png 1272w, https://substackcdn.com/image/fetch/$s_!rnZv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feabb26b6-6015-4ca2-b853-9b2e52177cf6_960x373.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rnZv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feabb26b6-6015-4ca2-b853-9b2e52177cf6_960x373.png" width="960" height="373" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eabb26b6-6015-4ca2-b853-9b2e52177cf6_960x373.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:373,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:52059,&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://bzolang.blog/i/189628048?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feabb26b6-6015-4ca2-b853-9b2e52177cf6_960x373.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_!rnZv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feabb26b6-6015-4ca2-b853-9b2e52177cf6_960x373.png 424w, https://substackcdn.com/image/fetch/$s_!rnZv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feabb26b6-6015-4ca2-b853-9b2e52177cf6_960x373.png 848w, https://substackcdn.com/image/fetch/$s_!rnZv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feabb26b6-6015-4ca2-b853-9b2e52177cf6_960x373.png 1272w, https://substackcdn.com/image/fetch/$s_!rnZv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feabb26b6-6015-4ca2-b853-9b2e52177cf6_960x373.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 fast inverse square root algorithm that was famously used to render lighting at acceptable framerates in Quake. It involves Newton&#8217;s method, bit hacking, and a crazy magic constant.</figcaption></figure></div><p>If we&#8217;re considering general code synthesis, we could even generalize this. Perhaps you need code that has a particular set of properties, properties so difficult or unusual that you don&#8217;t even know how to write the code. As long as you have a tool that can verify whether or not a function has these properties, and perhaps define a gradient or error function to help navigate the search, a superoptimizer should be able to help. You wouldn&#8217;t be limited to just matrix multiplication like machine learning, you could have code with control flow, data structures, loops, etc.</p><p>There&#8217;s another very interesting option. Rather than focusing as much on the specific operations a function performs, why not instead put effort into the particular subspace of input/output pairs and how we map meaning onto them? This is fundamentally what neural networks operate on with embeddings of various kinds, and to a weaker extent it&#8217;s what we do with things like C-style enums and simple formats like ASCII. Another notable example to illustrate my broader point would be <a href="https://en.wikipedia.org/wiki/Binary_Golay_code">linear codes in error correction;</a> if you simply choose the correct table of magic constants with special properties, you can solve difficult error-correction problems with very simple and efficient algorithms.</p><p>There are perhaps a lot more problems than we realize that can be addressed this way, but the question of how you generate the table of magic numbers, as well as the corresponding function that operates over them, is a difficult problem. We have some methods of addressing this with machine learning, but these neural networks are often very large and expensive, not the kind of thing that you can casually operate on in your code. Linear codes are extremely tiny and cheap. There&#8217;s a very large amount of unmapped territory in the middle.</p><p>More generally, there&#8217;s a sense in which RAM isn&#8217;t a very <em>natural</em> form of memory, at least compared to plain bit vectors inside of a circuit. If we look to more emerging and exotic forms of computing &#8211; neural networks, but also quantum and reversible computing &#8211; these often require memory to be a small vector of bits or variables that we apply gates to individually. We take RAM for granted in conventional computing, but it actually requires very large amounts of routing and addressing circuitry to implement. AI algorithms evidently have some way of representing hierarchically structured information even without pointers and random access as we would recognize it, instead just embedded in the matrix operations. If you just have a big vector of a few hundred or thousand bytes sitting in a CPU register, and you can apply some large, complex operations to it, what kinds of data structures and representations can you embed in that? And what kinds of unconventional properties might you be able to get out of it?</p><p><strong>Code Analysis</strong></p><p>While not strictly something for constructing code, there&#8217;s certainly a very large amount of room for better static analysis in programming languages. Modern optimizing compilers are full of extensive static analysis, and a great deal of this is directly relevant to the same kinds of properties that matter for the correctness of your code, there&#8217;s just no language-level interface for interacting with this at all, and the tools the compiler offers often are not really designed for casual use. Even something as stupidly basic as asking &#8220;what assembly does this function compile to?&#8221; is hard enough that there&#8217;s a <a href="https://godbolt.org/">popular web tool</a> designed to do a task that should really be a standard CLI command in every serious compiler.</p><p>Debugging ultimately is the process of determining the difference between the code that you think that you wrote and the code that you actually wrote. This will only get dramatically more important as more code is written by AI. It&#8217;s hard to improve things that you can&#8217;t measure, and it&#8217;s not always easy to be aware that they even exist if you&#8217;ve never even seen them. Visibility into code today is pretty poor in general.</p><p>Further, a tremendous amount of innovation simply comes from viewing old problems from new perspectives. I&#8217;ve written before about how much geometric structure there is underneath the symbolic surface of code; if we can bring in tools to make this more obvious, and help people better understand this structure in their code, it may inspire thinking of new degrees of freedom to poke at. That may expand what people write with conventional code, but text is often a poor format for strictly geometric structure. There&#8217;s nothing stopping you from writing down a table of coordinates and shapes, but translating back and forth between shapes and coordinates in your head is surely difficult and error-prone. Many simple transformations would require precisely shifting things around, requiring rewriting all of the coordinates and constraints. It&#8217;s easier to just handle this with a graphical tool and automate it all.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;acdffb3a-024e-40a1-8076-71986521572b&quot;,&quot;caption&quot;:&quot;Locality and Decidability&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Decidability and Geometry&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Philosopher and engineer building the future of computing at The American Compute Corporation, editor at Possibilia Magazine, and writing the Bzogramming substack.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-06-01T00:16:26.524Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!3PeO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e7be9f-adc0-480f-9311-868a6460ee19_402x301.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/decidability-and-geometry&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:164905753,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:6,&quot;comment_count&quot;:2,&quot;publication_id&quot;:248933,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;41f2d5fa-404f-4e7d-b842-74774a46b8e2&quot;,&quot;caption&quot;:&quot;I've talked before about the potential for making theoretical computer science more closely resemble geometry. Here, I'd like to deliver on that with some actual motivating examples.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Lattice-Topology Correspondence&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Philosopher and engineer building the future of computing at The American Compute Corporation, editor at Possibilia Magazine, and writing the Bzogramming substack.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2022-10-03T04:53:27.443Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/h_600,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fe71a7a26-39e1-401d-ab6e-1adc994022c7_4032x3024.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/the-lattice-topology-correspondence&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:69946245,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:8,&quot;comment_count&quot;:0,&quot;publication_id&quot;:248933,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><p><em>I&#8217;ve been hard at work the past couple months on my chip startup, but some momentum is starting to build and interesting work is getting done.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/software-machine-tools?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/p/software-machine-tools?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p><p></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[New Algorithms, Not New Particles]]></title><description><![CDATA[There is a common idea passed around in tech circles that technological innovation of the 20th century was driven primarily by theoretical physics, and after this began to stagnate &#8211; usually blamed on a plethora of boogeymen from a vague time period around the 70s or 80s &#8211; all technology beyond computing also began to stagnate.]]></description><link>https://bzolang.blog/p/new-algorithms-not-new-particles</link><guid isPermaLink="false">https://bzolang.blog/p/new-algorithms-not-new-particles</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Wed, 31 Dec 2025 22:22:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jPK1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa12eb991-a51b-4cec-bfae-2c2b77dd19a9_3888x2592.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There is a common idea passed around in tech circles that technological innovation of the 20<sup>th</sup> century was driven primarily by theoretical physics, and after this began to stagnate &#8211; usually blamed on a plethora of boogeymen from a vague time period around the 70s or 80s &#8211; all technology beyond computing also began to stagnate. Very often, people insist that we can&#8217;t have real innovation again until we start discovering new particles and forces again, and lament that we perhaps have very few particles left to discover.</p><p>However, when we dig a little closer and start asking some very basic physics-oriented questions, this narrative falls apart completely.</p><p>The vast majority of technology today is based on manipulating atoms, electrons, and photons. We get a fraction of our energy from splitting atoms with neutrons, though far less than we reasonably should for a technology we&#8217;ve used since the 1940s, and on very rare occasions we&#8217;ll use <a href="https://www.phoenixneutronimaging.com/">neutrons for imaging</a> and some other niche uses. Even more rarely we will make use of exotic particles like muons and positrons, mostly for other types of imaging. Muons (heavy electrons) are sometimes used for imaging the 3D structure of rock formations or pyramids, though they are sufficiently difficult to produce that we rely almost entirely on the tiny quantity that the sun generates naturally rather than using more reliable engineered muon sources. Positrons (anti-electrons) are also occasionally used in medical scanners, and are mostly a byproduct of the decay of specific nuclear isotopes, one of the other applications of neutrons.</p><p>We may have discovered photons, six different types of quarks, eight different types of gluons, three types of electrons, three types of neutrinos, the W+, W-, and Z0 bosons, a wide variety of antiparticles, as well as the Higgs boson, but the vast majority of this is profoundly useless to us. Will discovering more particles make any difference? If we look at what makes atoms, electrons, and photons so practically useful, it&#8217;s that they are abundant and easy to build things with. Humans have been able to manipulate all of these things, at least indirectly, since the dawn of time. Everything else is difficult to interact with, and many of these things can only just barely be clumsily poked at with giga-electronvolt particle accelerators. We&#8217;ve understood quarks for 60 years, but there are still no &#8220;quark-gluon engineers&#8221; and it&#8217;s extremely unlikely that such a title will be meaningful even in another 600 years. Even if we can poke at such systems, it takes such vast amounts of energy to have such tiny and unpredictable effects that any useful engineering is unfathomable with any technology we can reasonably conceive of.</p><p>Muons were discovered in 1936, positrons in 1932, and neutrons in 1920. The fact that neutrons could trigger nuclear fission wasn&#8217;t discovered until 1938, a discovery which promptly kicked off the Manhattan Project. It would not at all be inaccurate to say that &#8220;discovering new particles&#8221; stopped being a driver of new technological progress after the 1930s, rather than the 70s or 80s.</p><p>We know that there are likely additional particles that we have yet to discover &#8211; dark matter, gravitons maybe, <a href="https://en.wikipedia.org/wiki/X17_particle">X17</a>, <a href="https://en.wikipedia.org/wiki/Sterile_neutrino">sterile neutrinos</a>, and perhaps something driving dark energy. However, the reason we haven&#8217;t discovered these is because they interact absurdly weakly with anything that we do know how to build &#8211; so weakly that for most of these we have never measured any obvious interaction with anything that we&#8217;ve ever built. We can only measure their very indirect effects by observing places where astronomical measurements don&#8217;t line up with our mathematical models, or spotting a few other very minor discrepancies at absurdly high energies. If your goal is to engineer useful things with these as your building blocks, this is the last property you&#8217;d ever want to have!</p><p>Our technology is overwhelmingly built with atoms, electrons, and photons. We have largely the same building blocks that our ancestors thousands of years ago had. Chemistry (or alchemy) is just mixing atoms in ways that rearranges their electrons to bond them together differently. &#8220;Discovering new particles&#8221; is a blatantly false description of what drove the past couple centuries of progress. Upon closer inspection, much of what drove material innovation was downstream from math &#8211; Newton building a much more powerful toolbox to model dynamical systems and geometry, followed by more detailed models of the tiniest components of the universe.</p><p>Humans have been aware of electricity in some form since we first glimpsed a thunderstorm or gotten a static shock. Occasional magnetic properties of meteorites were known in ancient times, and medieval monks like <a href="https://en.wikipedia.org/wiki/Petrus_Peregrinus_de_Maricourt">Petrus Peregrinus de Maricourt</a> even were studying magnets intensely at least as far back as the 1200s. Benjamin Franklin famously experimented with electricity in the 1700s, but it wasn&#8217;t until the mathematical work of Faraday and Maxwell that electromagnetism really became something usable for serious engineering. Once a mathematical theory was in place however, it rapidly exploded into telegraphs, motors, radio, light bulbs, tesla coils, a plethora of vacuum tubes, cameras, the television, and more. It wasn&#8217;t until 1897, a couple decades into this technological revolution, that a particle called the electron was even confirmed to exist.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NCnh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c3b93-9165-486a-8bb0-2b087c6898c5_497x248.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NCnh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c3b93-9165-486a-8bb0-2b087c6898c5_497x248.png 424w, https://substackcdn.com/image/fetch/$s_!NCnh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c3b93-9165-486a-8bb0-2b087c6898c5_497x248.png 848w, https://substackcdn.com/image/fetch/$s_!NCnh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c3b93-9165-486a-8bb0-2b087c6898c5_497x248.png 1272w, https://substackcdn.com/image/fetch/$s_!NCnh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c3b93-9165-486a-8bb0-2b087c6898c5_497x248.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NCnh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c3b93-9165-486a-8bb0-2b087c6898c5_497x248.png" width="497" height="248" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f51c3b93-9165-486a-8bb0-2b087c6898c5_497x248.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:248,&quot;width&quot;:497,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:139085,&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;:&quot;https://bzolang.blog/i/182998124?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c3b93-9165-486a-8bb0-2b087c6898c5_497x248.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_!NCnh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c3b93-9165-486a-8bb0-2b087c6898c5_497x248.png 424w, https://substackcdn.com/image/fetch/$s_!NCnh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c3b93-9165-486a-8bb0-2b087c6898c5_497x248.png 848w, https://substackcdn.com/image/fetch/$s_!NCnh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c3b93-9165-486a-8bb0-2b087c6898c5_497x248.png 1272w, https://substackcdn.com/image/fetch/$s_!NCnh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c3b93-9165-486a-8bb0-2b087c6898c5_497x248.png 1456w" sizes="100vw" fetchpriority="high"></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">Visualizations of Maxwell&#8217;s Equations, electrical fields on the left, magnetic fields on the right</figcaption></figure></div><p>The existence of atoms and the theory of chemistry were increasingly fleshed out throughout the 1700s and 1800s, and many practical heuristics and principles were understood decades before any of their component particles were discovered. What enabled advanced chemistry wasn&#8217;t so much the discovery of protons and electrons, but the quantum theory that allowed us to accurately model their behavior. Even then, there is a lot of talk today about &#8220;quantum chemistry&#8221;; even though we have the equations to describe everything, we&#8217;re mostly confined to chemistry where interactions are simple and easy to compute. The vast majority of chemistry is much more complex, and the computations required to apply our equations to answer even the most basic of questions are so complex that people are concerned that we may only be able to answer them with quantum computers.</p><p>The ancient, classical world saw a substantial degree of technological progress too, and while today we may be hesitant to compare its magnitude to the industrial revolution, they did understand the principle of steam engines, were capable of manufacturing billions of standardized glass and clay pots, and even made use of water wheels, screw pumps, and complex bronze gearboxes. <a href="https://en.wikipedia.org/wiki/De_architectura#Aqueducts_and_mills">Vetruvius&#8217; &#8220;De Architectura&#8221;,</a> written in the first century BC, laments how underutilized water wheels were. This book appears to have had an impact, as archaeology suggests that water wheels became much more common in Rome over the following few centuries. We do not have any textual references to the extremely elaborate <a href="https://en.wikipedia.org/wiki/Antikythera_mechanism">Antikythera mechanism</a>, though surviving texts make casual references to enough bronze gearbox mechanisms like wagon odometers in the later Roman empire that, provided a time machine, the couple centuries after Christ may have looked to modern people as slightly steampunk. This is an impressive degree of technological progress to be made without discovering any new particles! Much of this progress is most likely the product of advances in geometry and mechanics, as well as the collection and centralization of knowledge from across the ancient world in vast libraries like the one in Alexandria.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jPK1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa12eb991-a51b-4cec-bfae-2c2b77dd19a9_3888x2592.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jPK1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa12eb991-a51b-4cec-bfae-2c2b77dd19a9_3888x2592.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jPK1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa12eb991-a51b-4cec-bfae-2c2b77dd19a9_3888x2592.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jPK1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa12eb991-a51b-4cec-bfae-2c2b77dd19a9_3888x2592.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jPK1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa12eb991-a51b-4cec-bfae-2c2b77dd19a9_3888x2592.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jPK1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa12eb991-a51b-4cec-bfae-2c2b77dd19a9_3888x2592.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a12eb991-a51b-4cec-bfae-2c2b77dd19a9_3888x2592.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Antikythera Mechanism (Illustration) - World History Encyclopedia&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="Antikythera Mechanism (Illustration) - World History Encyclopedia" title="Antikythera Mechanism (Illustration) - World History Encyclopedia" srcset="https://substackcdn.com/image/fetch/$s_!jPK1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa12eb991-a51b-4cec-bfae-2c2b77dd19a9_3888x2592.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jPK1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa12eb991-a51b-4cec-bfae-2c2b77dd19a9_3888x2592.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jPK1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa12eb991-a51b-4cec-bfae-2c2b77dd19a9_3888x2592.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jPK1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa12eb991-a51b-4cec-bfae-2c2b77dd19a9_3888x2592.jpeg 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 Antikythera Mechanism, found in a Greek shipwreck and believed to date to the 2nd century BC. It included many complex gear mechanisms, including a <a href="https://en.wikipedia.org/wiki/Differential_(mechanical_device)">differential</a>, and was used to compute the motion of the planets.</figcaption></figure></div><p><strong>Semiconductors and Condensed Matter Physics</strong></p><p>Semiconductors are not exotic magic. Conductors are materials where the uppermost filled (valence) electron orbitals are very close or overlapping with additional, empty (conductance) orbitals where they can move more freely. Insulators generally have a very large &#8220;band gap&#8221; separating these orbitals, requiring a large amount of energy to be pumped into electrons to get them to jump from the valence to the conductance band. Other factors such as heat, light, and electrical fields can also affect the size of the band gap or how much energy electrons have available to try jumping it. If you simply ask &#8220;what happens if I have a material with a band gap large enough that it&#8217;s an insulator by default, but small enough that these other factors can temporarily change that?&#8221; the medium-sized-band-gap materials you end up with are semiconductors.</p><p>Semiconductors are also all around you. Most optical properties of objects are a combination of band-gap-like electron-photon interactions and scattering effects. What makes glass transparent is its band gap of 9eV; no photon of visible light (1.8-3.1eV) is capable of exciting its electrons to the conductance band, so they simply pass right through. Silicon has a band gap of 1.1eV; visible photons interact with it and can be absorbed and re-emitted making it opaque and shiny, while it is transparent to infrared light below 1.1eV. Band gaps within the visible range can create a variety of colors. Organic molecules often have more complicated electron structures, and so talking of band gaps and semiconductors there is more of an analogy, but it&#8217;s still just molecule-scale photon-electron interactions driving macroscopic coloring.</p><p>Band gaps and their more complicated organic cousins have been the underlying mechanism behind many manmade pigments for thousands of years. One such organic cousin is porphyrin, a core component of both hemoglobin and chlorophyll, and some of its behavior can be understood as a kind of semiconductor. It becomes chlorophyll when doped with magnesium, and heme when doped with iron.</p><p>Silicon isn&#8217;t some rare, special material. It&#8217;s just abundant, easy to work with, and has other reasonably nice properties, but there are many other semiconducting materials out there. I recall a conversation once with a semiconductor engineer who remarked that he considered the luckiest bit of any of this to be that silicon and silicon dioxide (glass) happen to bond together very nicely, making it very easy to engineer circuits with silicon while having good insulation between the wiring without huge engineering headaches from getting the different crystal lattices to stick to each other.</p><p>Semiconductors are not some exotic &#8220;top of the tech tree&#8221; material; they&#8217;re actually one of the first unexpected things you&#8217;d expect a civilization to discover once there is a basic understanding of quantum mechanics and conductivity, only to discover that it has actually been ubiquitous for eons. A wide variety of materials all around us have wonderful properties we never before dreamed of! We should actually expect many other bizarre materials with strange, emergent quantum properties to be found further along the tech tree, should we go looking for them. Known examples include <a href="https://en.wikipedia.org/wiki/Superconductivity">superconductors</a> and <a href="https://en.wikipedia.org/wiki/Scintillator">scintillators</a>. The field exploring emergent quantum properties of materials is Condensed Matter Physics (the name is misleading, and really just refers to the study of emergent properties in large numbers of atoms), and it is still one of the newer branches of physics and rarely wins serious attention or Nobel Prizes despite its practical value. It however also seems to have a relatively limited toolbox for understanding the materials it studies, very often resorting to describing emergent quasiparticles and reasoning about their behavior with little more than fluid dynamics analogies.</p><p><strong>Bits Hiding in the Atoms</strong></p><p>There certainly are many problems which boil down to producing large quantities of some physical thing &#8211; specific chemicals and materials, heat, light, energy, etc. &#8211; and accomplishing each of these requires some ability to harness certain degrees of freedom in physics. The vast majority of problems however, as well as the implementations of methods for producing these physical things, are better understood as composing a small variety of these interactions in very elaborate ways rather than the simple prodding of a large variety of orthogonal fundamental forces.</p><p>We can consider new particles and forces of nature to perhaps give us new degrees of freedom for interacting with the world, but there is almost never any genuine need to use anything other than atoms, electrons, and photons. On rare occasions we will work up the courage to make some cheap energy using neutrons, and on far rarer occasions we will do some exotic metrology with muons and positrons, which are really no more than fancy cousins of the electron with different masses and charges. Everything else is a billion-dollar science experiment.</p><p>The problem of arranging some very complicated system which can coordinate a small number of physics interactions is fundamentally a matter of building something with the right behavior, that performs a correct and specific function, and this is fundamentally a computational problem no matter how many layers of indirection and denial we pile on top.</p><p>The actual future of technological innovation is not in finding new degrees of freedom, but in finding more powerful and useful systems which we can build from these primitives. Atoms, electrons, and photons are already Turing-complete and can send signals back and forth at the speed of light. Beyond nuclear power and a few rare, niche applications of exotic particles, what else do we genuinely need? We don&#8217;t need to dig deeper and break things into smaller pieces &#8211; the path forward is to take these component pieces and build bigger and stranger things with them than we ever dreamed of before.</p><p>The Library of Babel is infinite, and though most of it is gibberish it still hides unfathomable quantities of valuable things. The number of possible 32-byte programs is greater than the number of atoms in the observable universe. The number of 1000-line-of-code programs is for most practical purposes infinite, and we should expect that there will still be a steady stream of breakthroughs from novel ~1000-loc programs, algorithms, and theorems creating breakthroughs a million years from now. The most revolutionary technologies that the future holds are to be found among the unknown unknowns. We only bring these things closer to the known by expanding our imagination, by finding new organizing principles, new mathematical tools, new patterns in the world, new ways of thinking, new possibilities. The fact that so much of our science fiction and futurist art is retrofuturist, or that the most inspiring vision of the future of computing people can point to is <a href="https://en.wikipedia.org/wiki/Snow_Crash">Snow Crash</a> or <a href="https://en.wikipedia.org/wiki/The_Sovereign_Individual">The Sovereign Individual</a>, with the past 30 years of surprises that the internet has wrought failing to inspire compelling alternatives, are strong signals that it is our imagination that is failing us, not our ingenuity.</p><p>We have some leads. Machine learning has made a substantial and growing impact over the past 15 years. Faced with many problems which we do not know how to engineer directly, we now have a tool which can synthesize solutions using methods that large teams of interpretability researchers are only beginning to scratch the surface of. This works as long as we can craft a sufficient dataset, a viable neural net architecture, and provide a sufficiently vast amount of raw compute. Many things that we did not previously know how to build can now be built &#8211; and it would be of far greater value if we better understood how these things worked, were able to engineer them with more control, and better understood their capabilities and limitations.</p><p>The array of equillibrium states of a physical system is NP-complete. Nondeterministic (NP) computations are very useful for many constraint and optimization problems which are ubiquitous across science, physics, and engineering, but they are also difficult and expensive to compute. They do however contain a great deal of structure, which for a wide array of problems makes them easier to solve in practice. Much of the field of cryptography is focused on building systems with these kinds of properties which are not accidentally easier to break than we intend them to be. However, if we carefully construct a physical system structured in the right way, and we allow it to settle to a stable point, we can expect its final configuration to encode a solution to our problem.</p><p>On one hand we can lament that this makes physical systems hard to predict and model, but on the other hand we can celebrate that the universe gives us a physical substrate for computing many very useful problems which would otherwise be prohibitively difficult to compute. Sometimes a problem is just too difficult though, and we may run out of energy or time before the solution we want is reached, that Avogadro&#8217;s number of atoms is an insufficient number of FLOPS, and a better understanding of how nondeterministic computation behaves would enable us to optimize this, as well as potentially better understand when a proper solution is and is not attainable.</p><p>This also includes the chemical systems inside of cells. A point I&#8217;ve been trying to make to biology people (and that I&#8217;d like to figure out how to express more clearly) is that many of the problems biology constantly needs to solve are NP-complete, and that this simple fact about equilibria implies that DNA can simply encode a shockingly tiny number genes defining a few constraints, and that allowing the resulting biochemicals to react and settle would be able to solve a wide range of arbitrary constraint or optimization problems defined by these chemical constraints. If natural selection is just fumbling around design space randomly, and these systems are so absurdly useful and simple, we should be absolutely astonished if biology isn&#8217;t making use of them for nearly everything. The difficulty of computing these problems however means that programmers and researchers often avoid them like the plague and neglect studying them &#8211; however if every single chemical reaction counts as a computation, and a single cell may include billions or trillions of reactions per second, then we should expect biology to have extremely easy access to a shockingly powerful and useful set of computational primitives. A single cell would have comparable computing power to an entire laptop.</p><p>There additionally are many very nice properties of how these constraint systems compose that suggest very compelling answers to difficult questions of how extremely complex systems can evolve incrementally! This may also make them easier to engineer, if we simply understand the principles and build the right tools. I fully expect that if we had a few more polymaths crossing these domains, and if we managed to get more people to develop tools for reasoning about Nondeterministic computation, that we&#8217;d build out a mathematical toolbox that would at a bare minimum do for biology what calculus did for physics. Even if you can&#8217;t measure every variable within a physical system, the principles behind calculus and classical mechanics are enough to place constraints on what is and isn&#8217;t possible that otherwise would not be obvious.</p><p>And of course, this is to say nothing of applications beyond biology; this nondeterministic computation arises in all physical systems, and we should expect that many physical systems which we struggle to understand today will yield to a better toolbox. And even then, this is merely a known unknown.</p><p>As we push harder toward the physical limits of computation, computer science will necessarily need to account for the physical embedding of computation in space and time, its use of energy, its reversibility, and more. Ideas from physics will increasingly make their way into computing. Likewise, ideas will work their way back, and it will increasingly be possible to describe properties of physical systems as decision functions within certain complexity classes, or perhaps some richer descendant of this classification. It&#8217;s worth remembering that Big-O notation is really just a kind of Taylor Series.</p><div><hr></div><p><em>The past six months I&#8217;ve been living in San Francisco trying to get my startup off the ground. Something about this has diminished my ability to write, but I am working my way back into the habit of writing and have several more essays in the pipeline. I wish everyone a Happy New Year!</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/new-algorithms-not-new-particles?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/p/new-algorithms-not-new-particles?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Problems of Unbounded Scope]]></title><description><![CDATA[Very frequently, engineers will set their sights on some large, abstract, grand problem.]]></description><link>https://bzolang.blog/p/problems-of-unbounded-scope</link><guid isPermaLink="false">https://bzolang.blog/p/problems-of-unbounded-scope</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Tue, 24 Jun 2025 08:25:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-O1Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3dc7238-fa66-4357-8cc7-38491323dd99_1124x911.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Very frequently, engineers will set their sights on some large, abstract, grand problem. They will then convince themselves that some far simpler approximation of the problem is in fact equivalent to the vast problem. They produce a solution, proclaim the vast problem &#8220;solved&#8221;, and begin congratulating themselves.</p><p>Google created search engines, where information could be retrieved via a collection of keywords. They &#8220;solved&#8221; &#8220;search&#8221;. It is however a serious mistake to take this too literally.</p><p>More recently, we have gained LLMs, which often can be rather useful as a search engine. The kinds of questions that can be asked, and the detail of the responses, is much greater. Nevertheless, while LLMs can answer more complex and nuanced questions than Google, I find that they generally seem to be comparable to someone with an encyclopedic memory but who doesn&#8217;t think deeply about what any of this knowledge means or how it may be connected.</p><p>Of course, &#8220;search&#8221; can be defined even more broadly and abstractly.</p><p>For example, if we are seeking knowledge and answers, a text query of any kind will often be a rather poor and limited tool for finding unknown unknowns. How do you write a query for something you don&#8217;t know you&#8217;re looking for? Random discovery is often a better tool for at least this problem even if it is not particularly efficient.</p><p>How does one approach random discovery? Wikipedia seems somewhat better at this than Google or LLMs, in that one can very easily wander through links and rather quickly discover unexpected knowledge only distantly related to their original subject of interest. There is also no real &#8220;algorithm&#8221; filtering this discovery based on your typical habits, only your natural curiosity and the proximity of unexpected details to the things you were looking for.</p><p>A conventional print encyclopedia may have its own advantages that have been lost in the digital age, in that its volumes or table of contents may be organized by category, forming an atlas for the high-level arrangement of knowledge. Wikipedia is a vast iceberg, its true depths are not obvious from the surface, and it&#8217;s hard to comprehend or anticipate what it does and does not contain. An encyclopedia, a shelf of books in comparison, may be organized by subject in a way that categorizes all contained knowledge and gives some impression of roughly how much is there. There may be many surprises on a small scale, but for the most part a reader can quickly grasp the range of knowledge represented and their own knowledge or ignorance of it.</p><p>Of course, a simple list of categories may not reveal much structure, and some graph-based atlas may be an even more fine-grained tool.</p><p>We must also keep in mind that the sum of human knowledge is not and never will be complete. There are things we don&#8217;t understand, questions we have not answered, and no amount of searching the archives will locate such answers. You may instead be forced to search the world, something that Google and LLMs are not well-optimized for.</p><p>Most people spend at least some part of their lives &#8211; the unlucky ones perhaps a very long time &#8211; lost and in search of meaning, purpose, or inspiration. A text query isn&#8217;t very effective at resolving this. Some combination of religious experiences and life struggles will often prove a much better tool, though even this is only so effective. Religions and the meaning they offer have been subject to change, adaptation, and innovation over time, and presumably further innovation in the frameworks we use to guide people toward meaning should be possible. I personally suspect however that the generator functions &#8211; the ideas that motivated and produced these religious texts &#8211; have largely been lost, and that much of the decline of religion is the result of no longer understanding why people for so long placed such immense value in these ideas and frameworks, or how why some died out and others successfully spread to billions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-O1Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3dc7238-fa66-4357-8cc7-38491323dd99_1124x911.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-O1Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3dc7238-fa66-4357-8cc7-38491323dd99_1124x911.png 424w, https://substackcdn.com/image/fetch/$s_!-O1Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3dc7238-fa66-4357-8cc7-38491323dd99_1124x911.png 848w, https://substackcdn.com/image/fetch/$s_!-O1Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3dc7238-fa66-4357-8cc7-38491323dd99_1124x911.png 1272w, https://substackcdn.com/image/fetch/$s_!-O1Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3dc7238-fa66-4357-8cc7-38491323dd99_1124x911.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-O1Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3dc7238-fa66-4357-8cc7-38491323dd99_1124x911.png" width="1124" height="911" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c3dc7238-fa66-4357-8cc7-38491323dd99_1124x911.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:911,&quot;width&quot;:1124,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;undefined&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="undefined" title="undefined" srcset="https://substackcdn.com/image/fetch/$s_!-O1Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3dc7238-fa66-4357-8cc7-38491323dd99_1124x911.png 424w, https://substackcdn.com/image/fetch/$s_!-O1Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3dc7238-fa66-4357-8cc7-38491323dd99_1124x911.png 848w, https://substackcdn.com/image/fetch/$s_!-O1Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3dc7238-fa66-4357-8cc7-38491323dd99_1124x911.png 1272w, https://substackcdn.com/image/fetch/$s_!-O1Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3dc7238-fa66-4357-8cc7-38491323dd99_1124x911.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">In the story from which the Abrahamic religions derive their name, God directs Abraham to count the stars in the sky. He promises Abraham that by following natural law, humanity will someday be as numerous as the stars. This is of course a vast promise which will take a very, very, very long time.</figcaption></figure></div><p>Some questions are reducible to math and are computable. Some may be in principle computable, but require mathematics that has not been developed yet, perhaps only in some distant or indefinite future. Others may require knowledge of the world that may or may not be possible to gather, or facts of history that have been lost to time. Some questions &#8211; whether they can be formalized or not &#8211; may simply be intractable or incomputable.</p><p>Not everything that is computable is something we presently know how to compute, and not everything we know how to compute is something we know how to productively apply. There is an infinite tower of complexity classes called the <a href="https://en.wikipedia.org/wiki/Polynomial_hierarchy">Polynomial Hierarchy</a>, of which nearly all algorithms humans write fall into just the bottom couple levels, overwhelmingly only the first. Presumably the higher levels are increasingly more powerful and theoretically more useful, but we today have very little idea of what any of it is good for. Even then, the Polynomial Hierarchy is only a small part of the wide array of known complexity classes, which presumably are only a tiny part of all possible classes.</p><p></p><p>Ultimately, ambition is a skill. The actual range of possible achievement is for all intents and purposes infinite &#8211; both unfathomably vast in scale and even more vast in variety. Finding things that are bold enough to be worth doing while still remaining achievable in the present day is not a trivial problem. It&#8217;s best not to harden your goals in life too early, as with more time and experience you can often see even greater and more worthy goals. Of course, we stand on the shoulders of giants &#8211; we are able to catch rockets out of the sky not because we have bigger brains than people of the past (brain sizes actually declined after the introduction of agriculture), but because we have the advantage of centuries and millennia of accumulated knowledge. Our map of what is possible and how to get there is ever-expanding.</p><p>Ultimately, we should recognize that the problems we are working with today will seem but mere toys to people centuries or millennia from now, who will work with vastly more general and powerful tools than anything we can imagine today. On one hand there&#8217;s a humility in that, in knowing that we can only achieve things that are in a certain sense rather small and nearby. On the other hand, it also tells us that beliefs that a given hard problem is &#8220;solved&#8221; should not be taken too seriously, as most important and general problems in fact have effectively infinite scope.</p><p>Human imagination is actually a very limited thing, much more limited than we often assume, and something we should aim to expand and improve. Telling ourselves that hard problems are &#8220;solved&#8221; when they are not only serves to halt imagination of anything greater.</p><p>The hard problems are never truly over.</p><div><hr></div><p><em>This has been a more philosophical article today. I&#8217;m hoping to have some more technical articles out soon, including another Bzo Dev Log once I can get a few more things done.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/problems-of-unbounded-scope?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/p/problems-of-unbounded-scope?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Decidability and Geometry]]></title><description><![CDATA[Locality and Decidability]]></description><link>https://bzolang.blog/p/decidability-and-geometry</link><guid isPermaLink="false">https://bzolang.blog/p/decidability-and-geometry</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Sun, 01 Jun 2025 00:16:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!3PeO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e7be9f-adc0-480f-9311-868a6460ee19_402x301.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Locality and Decidability</strong></p><p>The Cerebral Cortex in the brain is composed of hundreds of thousands of cortical columns. This is a form of general-purpose learning circuit, and there are minimal differences between the columns found in the visual cortex, the auditory cortex, the motor cortex, the prefrontal cortex, or any other part of the cortex. With very few and largely insignificant exceptions, the six layers and the circuit they form is universally applied to all functions of the cortex. If something like the grid cells that the brain uses as a coordinate system can arise in the motor cortex for example, that implies that every part of the cortex regardless of function has circuitry that is capable of computing coordinates under the right conditions.</p><p>The most biologically plausible and detailed model of how this circuit works is the one being developed by Jeff Hawkins and his team at <a href="https://thousandbrains.org/">Numenta</a>. The model is far too complex and nuanced to describe in detail here, but one of the foundational ideas is that the cortex is fundamentally built around prediction. A basic observation that drives this is that surprising events, even as simple as the ground being unexpectedly uneven while walking, are often extremely noticeable. If something unexpected is so noticeable, that implies that the brain must be at least implicitly computing a range of what is expected.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3PeO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e7be9f-adc0-480f-9311-868a6460ee19_402x301.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3PeO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e7be9f-adc0-480f-9311-868a6460ee19_402x301.png 424w, https://substackcdn.com/image/fetch/$s_!3PeO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e7be9f-adc0-480f-9311-868a6460ee19_402x301.png 848w, https://substackcdn.com/image/fetch/$s_!3PeO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e7be9f-adc0-480f-9311-868a6460ee19_402x301.png 1272w, https://substackcdn.com/image/fetch/$s_!3PeO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e7be9f-adc0-480f-9311-868a6460ee19_402x301.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3PeO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e7be9f-adc0-480f-9311-868a6460ee19_402x301.png" width="402" height="301" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93e7be9f-adc0-480f-9311-868a6460ee19_402x301.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:301,&quot;width&quot;:402,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:107347,&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;:&quot;https://bzolang.blog/i/164905753?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e7be9f-adc0-480f-9311-868a6460ee19_402x301.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_!3PeO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e7be9f-adc0-480f-9311-868a6460ee19_402x301.png 424w, https://substackcdn.com/image/fetch/$s_!3PeO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e7be9f-adc0-480f-9311-868a6460ee19_402x301.png 848w, https://substackcdn.com/image/fetch/$s_!3PeO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e7be9f-adc0-480f-9311-868a6460ee19_402x301.png 1272w, https://substackcdn.com/image/fetch/$s_!3PeO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e7be9f-adc0-480f-9311-868a6460ee19_402x301.png 1456w" sizes="100vw" fetchpriority="high"></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 rough map of a subset of the standard circuit of a cortical column, <a href="https://www.youtube.com/watch?v=mGSG7I9VKDU">from this talk</a>.</figcaption></figure></div><p>However, if we start asking what information is required to generate certain kinds of predictions, this begins to imply many other forms of data that the cortex must be tracking. Say you have a mug. There is a handle, there is an embossed image on the side, there is a rough, unglazed ring around the bottom. If you place your fingers on the mug and feel around, your cortex must know where each finger is relative to the mug, as well as the mug&#8217;s position and orientation in order to predict where each particular feature is. If your knowledge of the mug is wrong, if something feels off or out of place, you&#8217;ll notice quickly.</p><p>The current iteration of Numenta&#8217;s theory suggests that the location and orientation of various object and sensor reference frames must be encoded in each cortical column, and specifically layer 6 seems by far to be the most plausible candidate for where this occurs. For every patch of your somatosensory cortex that receives tactile information from a patch of skin, there is a layer of neurons tracking the coordinates of that sensor, relative to the body and relative to objects in its vicinity. The same goes for other sensory domains as well, patches of the visual cortex presumably track the 3D location in space of the object they&#8217;re observing.</p><p>Column structure is very consistent across the cortex, but many are not connected to sensors. Yet these brain regions also include the same circuitry that others use to track location. While perhaps it is currently difficult to reason about how abstract thought may make use of reference frames and coordinate spaces, the extremely consistent structure of cortical columns implies that effectively all cortical functions make use of some notion of locality and space.</p><p>Even when faced by a seemingly alien form of computer such as the brain, we should assume that the ultimate limits are generally the same even if the building blocks are different. If our mathematics leads us to conclude that computing a particular algorithm has certain fundamental limits, or should scale in accordance with a particular function, we should expect this to hold regardless of if the computation is implemented with proteins, neurons, transistors, or something dug out of a UFO wreckage.</p><p>Nevertheless, we don&#8217;t seem to ask many such questions, often dismissing such systems as largely impossible to understand. The brain clearly is not operating at full capacity at all times, but it&#8217;s rare for anyone to ask a question like what the brain&#8217;s equivalents of, say, malloc() and free() are.<br></p><p><strong>Locality in Conventional Computing</strong></p><p>Any computation can be unrolled into a computation graph. Each instruction is a node, which receives data from previous nodes and performs a transformation on them to produce a new value, which can be used by other nodes downstream.</p><p>If a loop has a hard upper bound on the number of iterations, the unrolled loop forms a finite compute graph. If there is no upper bound, the loop forms an infinite graph. Unless it is a genuine infinite loop for all possible inputs, you can expect at least one, often multiple possible exit points that spill out into other parts of the program, or perhaps even to the program&#8217;s final endpoint.</p><p>All computation can be encoded as such a vast and potentially infinite graph. Encoding the graph explicitly in full detail is infeasible for nontrivial programs, but these graphs generally contain so much repetitive structure (for example, in loops) that they are highly compressible. Many constructs of programming languages, as well as the concrete computations that they compile down into, amount to methods of compressing and decompressing these graphs.</p><p>The linear sequence of instructions that a CPU performs is a serialization of this graph. Functions may consist of fragments of this graph, and the CPU&#8217;s instruction pointer encodes a coordinate for which part of which fragment of this graph the computer is currently executing. Of course, this graph is usually far too large to encode with a single 64-bit pointer, and so we employ call stacks and nested functions to extend this address space to arbitrarily large spaces, with code fragments embedded inside code fragments, embedded inside other code fragments.</p><p>If we have a for loop, this loop will generally include a variable that tracks which iteration we are currently executing. If we have nested for loops, our position in this computation graph will be two-dimensional, which makes sense as such nested loops are often used to iterate over things like two-dimensional arrays. Trees are effectively just a discrete form of hyperbolic space; stacks and similar data structures often serve as coordinates for computations embedded in hyperbolic and tree-like spaces.</p><p>All of this ultimately is a way of procedurally generating this vast compute graph, determining which instruction exists at each coordinate point, and which point to land on next to perform the next computation. Many of the instructions the CPU performs don&#8217;t even directly perform the real computations, but rather serve to navigate this scaffolding.</p><p>Even in parallel computing &#8211; if we wish to perform some computation for every element of an array, we&#8217;ll generally assign each thread a coordinate or range of coordinates to iterate over. CUDA, the software framework for computing on Nvidia GPUs, is built around generating large multidimensional arrays of threads.</p><p>Conventional computation is littered with tools whose sole purpose is to encode positions which track our location on computation graphs, however there are some places where their presence is less obvious. The primary exception can be found in constructs like while loops and recursive functions, which also happen to be the primary places where undecidable and otherwise ill-behaved, infinitely-looping program behavior often arises. This isn&#8217;t to say that such constructs always lack such coordinates; a while loop can certainly emulate a for loop with an iteration variable, it just doesn&#8217;t have to, or can encode another more exotic coordinate space. A recursive function which performs a binary search encodes a range of possible locations for the result it&#8217;s searching for, which it progressively narrows with each iteration in a way that is guaranteed to terminate quickly.</p><p>Such language constructs are in a sense an admission that the various coordinate systems we have built many of our computing tools are not an exhaustive list and that there is sometimes a need to break free from them and build something bespoke or exotic. We can certainly fail in this of course, and build something which simply wanders aimlessly through some vast abstract space, with no obvious force driving it toward any exit point in any reasonable amount of time.<br></p><p><strong>Decideability and Geometry</strong></p><p>A powerful tool often used in static code analysis is the abstract domain, a mathematical object used to place bounds on the space of possible values that a variable or collection of variables can encode. Abstract domains are based on lattices, which as I&#8217;ve discussed before are very closely related to topological spaces. Fundamentally, our best tools for modeling and bounding the behavior of complex programs are geometric in nature.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;b0694f26-f5eb-4726-a904-c3b9adb6f617&quot;,&quot;caption&quot;:&quot;I've talked before about the potential for making theoretical computer science more closely resemble geometry. Here, I'd like to deliver on that with some actual motivating examples.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Lattice-Topology Correspondence&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Philosopher and engineer building the future of computing at The American Compute Corporation, editor at Possibilia Magazine, and writing the Bzogramming substack.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2022-10-03T04:53:27.443Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/h_600,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fe71a7a26-39e1-401d-ab6e-1adc994022c7_4032x3024.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/the-lattice-topology-correspondence&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:69946245,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:6,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>One of the most universally used tools for understanding the behavior of algorithms and data structures is Big-O notation, where we represent our computation with a polynomial and then by convention drop all constants and everything but the most significant term. This practice of dropping terms has motivations, but is merely a convention and if we choose to ignore it we are left reasoning about computations in terms of polynomial expressions, which closely resemble <a href="https://en.wikipedia.org/wiki/Taylor_series">Taylor Series</a> and similar sums which are incredibly commonly used in physics. The presence of Taylor Series also implies that we can perform calculus on the properties of our compute graphs, which further implies the potential for geometric tools.</p><p>Physics, and its vast and chaotic swarms of particles, has absolutely no obligation whatsoever to be legible to humans, and yet once again our best tools for understanding it are consistently geometric in nature. The invention of calculus revolutionized physics, allowing us to better understand complex curves geometries, and revealing their presence not only in the static shapes of objects but in their complex and chaotic dynamics.</p><p>I&#8217;ll make a conjecture here &#8211; if all of our tools for making computation predictable and well-behaved can be interpreted as operating on geometric coordinate spaces, if our static analysis tools for automating the understanding of programs are based on geometric tools, if our most powerful tools for understanding even the most chaotic systems we can understand in the world around us are consistently geometric in nature, if the most obvious ways in which programs end up losing decideability properties involve removing obvious coordinate spaces, and if even billions of years of evolution seems to have converged on computation that tracks coordinate spaces for everything, then this suggests that there may in fact be a deep connection between what is and isn&#8217;t decideable about a dynamic program or other complex system and the extent to which its behavior can be mapped to some geometric structure.</p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/decidability-and-geometry?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/p/decidability-and-geometry?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[We are in the Very Early Days of Computing]]></title><description><![CDATA[Proto-writing traces back over 20,000 years. Logographic writing is at least 5,000 years old, but alphabetic writing took another 2,000 years to become widespread. Even then, many forms of punctuation and even things as basic as placing spaces between words are far more recent innovations. If reading text without spacing between words sounds difficult &#8211; the advice historically given was that reading the text aloud made this process easier, and up until only a few centuries ago]]></description><link>https://bzolang.blog/p/we-are-in-the-very-early-days-of</link><guid isPermaLink="false">https://bzolang.blog/p/we-are-in-the-very-early-days-of</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Sat, 10 May 2025 01:01:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fJvp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a4fb81-8516-426e-8617-5a49880cc9d3_907x912.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Proto-writing traces back <a href="https://www.bbc.com/news/uk-england-london-64162799">over 20,000 years</a>. Logographic writing is at least 5,000 years old, but alphabetic writing took another 2,000 years to become widespread. Even then, many forms of punctuation and even things as basic as placing spaces between words are far more recent innovations. If reading text without spacing between words sounds difficult &#8211; the advice historically given was that reading the text aloud made this process easier, and up until only a few centuries ago <a href="https://en.wikipedia.org/wiki/Silent_reading">the act of reading silently</a> was generally seen as either a difficult talent or as an antisocial activity reserved for those who wish to hide the ideas they consume.</p><p>Business investment is always risky, but tech VC is notorious for its extreme tolerance of risk, far beyond that of most other types of investors. Very often this is simply accepted as the price paid for innovation, without any deeper thought. Often the exact same people who insist that extremely high risk is purely a matter of innovation will, in a different conversation, preach about how every field outside of computing had stagnated since the 70s, an era when Silicon Valley VC spray-and-pray strategies would have been seen as insane.</p><p>Founding a business is fundamentally an assertion of contrarian truth about the world, that there is some opportunity that you can take advantage of that everyone else has missed. There is always a serious chance that you&#8217;re wrong about this, or at the very least wrong about how to reach this opportunity. There is always risk. However, this axiom of risk asserts that risk must exist, but it tells us absolutely nothing about how much risk &#8211; is there a 10% chance of failure? 50%? 90%? 99%? Fundamentally, the risk involved is the inverse of how much certainty there is.</p><p>If you decide to open a new Starbucks, there is a tremendous amount of data about the last 10,000 Starbucks locations, and so deciding the right location to maximize profit is a science more than it is an art. People have been digging up rocks from the Earth for a very long time, the risks of opening a mine can be greatly mitigated by some surveying. If you decide to start a software business, there&#8217;s far less risk if you&#8217;re building some dime-a-dozen SaaS product for which a standard playbook has been built. The risks are far greater if you&#8217;re venturing off into something far more experimental.</p><p>There is risk of opening a new Starbucks location and there is risk in starting a wild new startup. This is not a fundamental difference in kind, only in magnitude.</p><p>Certainly, some of the risk of tech investment is probably downstream from the fact that software businesses often produce very high returns; it&#8217;s far more common to 100x an investment in a software company than it is in a company with physical products or other conventional constraints. Investors may be engaging in a form of <a href="https://en.wikipedia.org/wiki/Risk_compensation#Risk_homeostasis">risk homeostasis</a>.</p><p>Tech bubbles pretty universally fail to live up to their hype and expectations. Each new technology will absolutely reshape the world in unimaginable ways, if you buy into the hype.</p><p>I recall watching the Internet of Things bubble in 2017, when the near future was apparently full of smart toasters and smart juice presses that would collect so much data that we&#8217;d invent a dozen new SI prefixes to describe how many bytes we&#8217;d need to store it all. Buzzwords like &#8220;Brontobytes&#8221; and &#8220;Geopbytes&#8221; were thrown around, describing the scale of datacenters supposedly a couple years away. It turns out that very few of these smart devices provided any meaningful value and the data they collected was mostly worthless while creating a myriad new security concerns. This somehow dovetailed into the 2017/2018 crypto bubble, and soon everyone was raving about how your toaster would be uploading the data it gathered from you onto a public blockchain.</p><p>There is a certain mythology to how technology is understood which shapes how people imagine the future and where they invest their time and money into building it. This mythology may be widely believed but can easily turn out to be wrong. I remember when the 2017/2018 crypto bubble was flooded with millions of people who asserted with absolute certainty that Bitcoin was a slow and primitive prototype, and by some immutable laws of technology that it would soon be slain by a new and more innovative cryptocurrency. This never happened, and the contrarian Bitcoin maximalist narrative that Bitcoin would become a store-of-value reserve currency, <a href="https://en.wikipedia.org/wiki/Bitcoin_in_El_Salvador">trusted by nation states</a>, where transaction speed didn&#8217;t matter much seems to be far more plausible today.</p><p>On the other hand, I also recall a great deal of fuss about cryptocurrencies like EOS and Solana, which abandoned the core ideology of decentralization that motivated other crypto projects in favor of maximizing performance. Scaling blockchains while maintaining all the properties people wanted never succeeded. The wild optimism about using arcane mathematics and protocols to reshape the world that I saw in 2017 seems long dead, and the <a href="https://www.cnet.com/culture/memes-are-serious-business-with-their-own-stock-exchange/">Nasdanq</a> meme gambling thesis seems to have won out against all odds. Solana is now extremely popular as a host of meme coins, presumably because decentralization is of zero importance if you&#8217;re simply running a casino.</p><p>Facebook has repeatedly chosen to make gigantic bets on these tech bubbles. After its ambitions to <a href="https://en.wikipedia.org/wiki/Diem_(digital_currency)">create a cryptocurrency</a> faced political challenges, it renamed its company to Meta, hired game development legend John Carmack, and dumped $40 billion into building &#8220;the Metaverse&#8221;. Carmack eventually quit and the company faced enormous difficulties getting its own employees to even enjoy using the technology they were building. Apple also chased this trend, building their own AR/VR headset. My perspective was that while it may perhaps be a success eventually there is currently no real killer app for AR/VR, and that escapism into gaming is a dystopian vision that normies won&#8217;t adopt as easily as tech people expect. I debated many friends at the time, who insisted that Apple was a magical company whose products could never fail, that the billions being spent were a guarantee of success, and that we&#8217;d all be wearing their VR headsets in a matter of months. I recall a friend who would respond to every criticism with &#8220;Siri, show me that girl naked&#8221;, and how all progress in the internet was driven by porn. These friends have since all long forgotten that they ever made such claims and have since started AI companies.</p><p>As for the present AI bubble, I consider it a mixed bag, and a long discussion for another time.</p><p><strong>Venturing into the Fog</strong></p><p>Computing is a very strange, new, and unprecedented field. We are venturing into the fog, and the tools we&#8217;ve built for understanding the world over thousands of years are not very enlightening. The family of visions of the future of computing that you will find in San Francisco and its derivative tech hubs, that guide us in building the future, that tell us where the fruit worth picking can be found, are perhaps only 5% correct. This implies enormous potential in building alternative tech hubs with wildly different visions of the future of computing, provided some contrarian truths can be found and deeply mined. Perhaps they will prove equally blind and misguided, but getting even a different 5% correct could be profoundly valuable.</p><p>Given a mere 32 bytes of data, there are more possible configurations than there are atoms in the observable universe. Moore&#8217;s Law could have ended decades ago and we&#8217;d still be able to mine the Software <a href="https://en.wikipedia.org/wiki/The_Library_of_Babel">Library of Babel</a> for new algorithms and ideas until the end of time. Even then, we still wouldn&#8217;t have made the slightest dent, we would have simply exhausted all of the resources provided by the entire universe first, which is unfathomably tiny in comparison.</p><p>We are in the very, very, very early days of computing, and there is a strange future that stretches out far ahead of us, vastly longer and vastly stranger than any of us can possibly imagine.</p><p>There are many path dependencies in the modern computing industry. There are many decisions made decades ago that have heavily shaped modern computing, where a different outcome could easily have led us down a wildly divergent path.</p><p>The modern range of popular operating systems were designed decades before the internet, on the assumption that the user was an expert who wasn&#8217;t stupid enough to run untrusted software on such expensive business equipment. The failure of operating systems to provide acceptable sandboxing of applications littered the early internet with security landmines. Browsers on the other hand provide sandboxing by default, and web apps began growing in popularity as soon as Google made Javascript run fast with V8. If the operating systems of the 90s and 00s had better security models, the domination of browsers as a de facto operating system may not have occurred.</p><p>If CPUs had supported efficient context switches directly between userspace programs, the performance bottlenecks that pushed the 1990&#8217;s growth in driver code into the operating system may never have happened. In 1995, Linux was a mere 15,000 lines of assembly, and began growing rapidly once it bolted the bloated USB drivers into the kernel. We could easily have taken an alternate path where operating systems stayed small, and where hobbyists or startups could compete with Microsoft.</p><p>If digital payments had been more quickly adopted and trusted, it&#8217;s possible that advertising wouldn&#8217;t be such a common monetization model for software. The extreme focus on attention maximization has undoubtedly shaped much of modern computing, and many of the widespread complaints about the internet and its impact are likely downstream from this. Our interactions with computers favor quantity and volume over the quality of interactions, whereas if people had to more often open their wallets to use software we may have instead seen a bias toward quality over quantity.</p><p>Complexity Theory has a number of very misleading theorems and conjectures, where &#8220;real world problems&#8221; frequently end up landing in weird corner cases where harsh laws turn out to be less harsh. There certainly exist programs whose behavior is undecideable, but there are also infinitely many programs which are perfectly decideable, and these are the building blocks that humans prefer to build things from. There are many problems which are very useful to be able to solve which happen to lie in complexity classes like NP and are therefore exponentially difficult &#8211; but O(1.0001^N) is no less of an exponential than O(2^N), and real-world problems frequently lie closer to the former than the latter. We have likely stunted progress substantially by spending decades wrongfully teaching millions of CS students that good static analysis is mathematically impossible and that broad classes of useful algorithms are &#8220;intractable&#8221;.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;2540e670-9b41-430a-9dda-91e48b66fe0a&quot;,&quot;caption&quot;:&quot;Undecidable problems in computing are generally considered impossible to solve, and many lament that this means that many of the wonderful code analysis tools that we might wish for to automatically detect all the bugs in our code simply cannot be built, even in theory. In reality however, this is not entirely true, and really just boils down to a misun&#8230;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Undecidability Isn't So Bad&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Engineer building advanced CPUs and exotic compilers, lead editor and researcher at Possibilia Magazine, and writing the Bzogramming substack.\n\n~hilmec-difpes&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-12-07T08:38:39.947Z&quot;,&quot;cover_image&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%2F2228e67b-3ffc-422f-96f6-42cb130397f9_2048x1536.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/undecidability-isnt-so-bad&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:152687548,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;e3131ee4-4f22-441c-b07c-2b363fcd47cc&quot;,&quot;caption&quot;:&quot;About 2300 years ago, the Greek mathematician Euclid published his book The Elements, which has since become one of the most influential books in all of mathematics, if not the world. It is estimated to be second to only the Bible in terms of the number of printed editions since the invention of the printing press.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Most Profound Problem in Mathematics&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Engineer building advanced CPUs and exotic compilers, lead editor and researcher at Possibilia Magazine, and writing the Bzogramming substack.\n\n~hilmec-difpes&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2022-11-15T15:30:02.057Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/h_600,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F50e02f3c-2cf0-4b9e-b661-90646284c814_614x599.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/the-most-profound-problem-in-mathematics&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:84077564,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:8,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>If we take such harsh laws at face value and consider information-theoretic limits on Kolmogorov complexity, we would be forced to conclude that the entire field of data compression should be laughably impossible, something that is empirically very untrue.</p><p>Where else may the future take us? Where can we look for new threads to pull, new orchards to search for unexpected fruit?</p><p>Computing is a rather odd field, though I expect that over the next century we will increasingly realize that an enormous amount of geometric structure can be found from the right perspectives. Lattices, one of the fundamental tools used in the static analysis of code, are almost exactly mathematically identical to topological spaces. A great number of difficult problems for reasoning about the properties of code boil down to reasoning about the shapes of the trajectories that programs take.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;94001e13-3015-4855-9c7c-1ef4ecfd1fbf&quot;,&quot;caption&quot;:&quot;I've talked before about the potential for making theoretical computer science more closely resemble geometry. Here, I'd like to deliver on that with some actual motivating examples.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Lattice-Topology Correspondence&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Engineer building advanced CPUs and exotic compilers, lead editor and researcher at Possibilia Magazine, and writing the Bzogramming substack.\n\n~hilmec-difpes&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2022-10-03T04:53:27.443Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/h_600,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fe71a7a26-39e1-401d-ab6e-1adc994022c7_4032x3024.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/the-lattice-topology-correspondence&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:69946245,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:6,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>In many ways, computing is vastly simpler than physics. We&#8217;ve engineered computers to be understood, but the universe has no obligation to be legible to us. Nevertheless, much of the progress of the past few centuries of physics has come directly from applying geometry to better understand physics. The ancient Greek thesis that geometry is the foundation of all of mathematics will likely prove to have a great deal of truth to it, and I expect any disbelief that computation and logic may have sewn will gradually fade in time.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;2a69c090-1a18-40b8-9b23-7141e8cb2974&quot;,&quot;caption&quot;:&quot;The original foundation of modern physics is Newtonian mechanics; given a collection of objects and their positions, velocities, and some knowledge of the forces between them, you can compute their trajectories by playing time forward one small step at a time. There is a tremendous amount of useful work that can be done with simply this tool, but modern&#8230;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Non-Newtonian Computing?&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Engineer building advanced CPUs and exotic compilers, lead editor and researcher at Possibilia Magazine, and writing the Bzogramming substack.\n\n~hilmec-difpes&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-01-07T23:28:40.601Z&quot;,&quot;cover_image&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%2F3f7786ce-69ee-4bba-9a9a-826a36f0ea06_1200x1276.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/non-newtonian-computing&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:140457730,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:4,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>It&#8217;s notable that we already describe the complexity of algorithms with polynomial expressions. The convention with Big-O notation is to drop all constants and all but the most significant terms, but if choose to ignore this convention we are left describing our algorithms with mathematical tools that often closely resemble the Taylor Series approximations that are widespread in physics. We could even very easily employ tools like calculus for studying these algorithms.</p><p>There are also other very interesting ideas I&#8217;ve been thinking about lately that seem to imply a connection between decideability and geometry, though I&#8217;ll save that for a future article.</p><p>Human engineering is constrained by that which we understand. The word &#8220;ape&#8221; refer to both the branch of primates humans descend from, but also can refer to a clumsy mimic or mime. Humans are fundamentally a species which acts through mimicry, by learning to replicate patterns in the world, and then extrapolate and compose them to reach goals, even if we march past countless simpler solutions in the process.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;d0f93330-8e8c-44cb-a304-074a23ad176d&quot;,&quot;caption&quot;:&quot;There are a great many instincts and behaviors that are claimed to be &#8220;programmed&#8221; or &#8220;hardwired&#8221; into the brain. In fact, seeing as the human genome only contains a mere 20,000 genes, and only a small fraction of those are dedicated to the nervous system, the number of behaviors that people insist are so deeply baked in probably outnumbers the number o&#8230;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Origin of Mimicry&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Engineer building advanced CPUs and exotic compilers, lead editor and researcher at Possibilia Magazine, and writing the Bzogramming substack.\n\n~hilmec-difpes&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-04-04T22:51:28.064Z&quot;,&quot;cover_image&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%2Fb9d4d334-1803-4824-afdf-2d1b2e0c9c79_1232x928.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/the-origin-of-mimicry&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:143025146,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:10,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Much of the value of machine learning is that it can synthesize algorithms for many kinds of difficult problems without the biases and blind spots of human engineering, or at least very different biases. The incomprehensibility of the weights inside machine learning models are a glimpse of algorithms that humans may not fully comprehend and master for a very long time. You may stare into these arrays of numbers like ancient people stared into the chaos of ocean waves and storm clouds, seeing powerful, unknowable gods in what their descendants would describe with a few Navier-Stokes equations.</p><p>There is still abundant chaos, but we&#8217;ve at least made progress, and we can even harness this understanding to build fantastical things like flying machines.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;6ac43d39-ba37-429d-aa45-834651072df2&quot;,&quot;caption&quot;:&quot;There is a UFO craze going on right now. The Pentagon is even establishing a new department just for investigating sightings.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Alien Technology in Plain Sight&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Engineer building advanced CPUs and exotic compilers, lead editor and researcher at Possibilia Magazine, and writing the Bzogramming substack.\n\n~hilmec-difpes&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2022-08-10T04:42:26.280Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08e593f-6696-4760-b1c6-be0f36fcf4db_900x550.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/the-alien-technology-in-plain-sight&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:67963904,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:11,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Complexity Theory describes a vast menagerie of classes of computation. The P class contains the vast majority of algorithms that humans use, and even then we mostly confine ourselves to a very tiny, quasi-linear subset of it. While NP problems often contain an exponential factor that can limit scaling, it contains many useful problems which are vastly tamer than people expect. Furthermore, P and NP are only a tiny part of a much larger family of classes called the <a href="https://en.wikipedia.org/wiki/Polynomial_hierarchy">Polynomial Hierarchy (PH)</a>. Most classes here are generalizations of NP which tend to be exponential-time problems (which may be tamer than they look) with an additional polynomial slowdown. All of PH is contained within PSPACE, the class of problems which can be solved with polynomial space and at most exponential time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fJvp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a4fb81-8516-426e-8617-5a49880cc9d3_907x912.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fJvp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a4fb81-8516-426e-8617-5a49880cc9d3_907x912.png 424w, https://substackcdn.com/image/fetch/$s_!fJvp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a4fb81-8516-426e-8617-5a49880cc9d3_907x912.png 848w, https://substackcdn.com/image/fetch/$s_!fJvp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a4fb81-8516-426e-8617-5a49880cc9d3_907x912.png 1272w, https://substackcdn.com/image/fetch/$s_!fJvp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a4fb81-8516-426e-8617-5a49880cc9d3_907x912.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fJvp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a4fb81-8516-426e-8617-5a49880cc9d3_907x912.png" width="907" height="912" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93a4fb81-8516-426e-8617-5a49880cc9d3_907x912.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:912,&quot;width&quot;:907,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:52119,&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://bzolang.blog/i/163248283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a4fb81-8516-426e-8617-5a49880cc9d3_907x912.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_!fJvp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a4fb81-8516-426e-8617-5a49880cc9d3_907x912.png 424w, https://substackcdn.com/image/fetch/$s_!fJvp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a4fb81-8516-426e-8617-5a49880cc9d3_907x912.png 848w, https://substackcdn.com/image/fetch/$s_!fJvp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a4fb81-8516-426e-8617-5a49880cc9d3_907x912.png 1272w, https://substackcdn.com/image/fetch/$s_!fJvp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93a4fb81-8516-426e-8617-5a49880cc9d3_907x912.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>There are also many other problems which technically don&#8217;t fall into PH such as counting problems and interactive proof systems, which are not always infeasible to solve either. This generally is the result of PH being defined in a very constrained way to limit their scope and make mathematical progress easier, and there are many kinds of algorithms which break these constraints without necessarily becoming impractically hard; they just play by slightly different rules.</p><p>Optimally solving chess is technically in EXPTIME, which is more difficult than PSPACE and by extension all of PH. Exhausting the entire chess search space is pretty infeasible, but approximating this well enough to outperform human chess grandmasters <a href="https://en.wikipedia.org/wiki/Deep_Blue_(chess_computer)">was done in 1997</a>.</p><p>Yet the vast majority of the tools we&#8217;ve chosen to use remain in the very tiny quasi-linear subset of P. We&#8217;ve mapped out a vast wilderness, but we&#8217;ve so far chosen not to explore much of it.</p><p>We&#8217;ve seen Moore&#8217;s Law drive over half a century of exponential growth in computing power. Even if it ends soon and computing power stagnates, the range of things we could do with the hardware that we have is far greater than anything we can possibly imagine.</p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/we-are-in-the-very-early-days-of?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/p/we-are-in-the-very-early-days-of?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[The Unsustainability of Moore’s Law]]></title><description><![CDATA[Roughly every two years, the density of transistors that can be fit onto a silicon chip doubles.]]></description><link>https://bzolang.blog/p/the-unsustainability-of-moores-law</link><guid isPermaLink="false">https://bzolang.blog/p/the-unsustainability-of-moores-law</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Tue, 22 Apr 2025 12:02:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!V2SM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0664a533-9470-4af2-b9a8-2b19d0c1c3f7_640x668.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Roughly every two years, the density of transistors that can be fit onto a silicon chip doubles. This is Moore&#8217;s Law. Roughly every five years, the cost to build a factory for making such chips doubles, and the number of companies that can do it halves. 25 years ago, there were about 40 such companies and the cost to build a fab was about $2-4 billion. Today, there are either two or three such companies left (depending on your optimism toward Intel) and the cost to build a fab is in excess of $100 billion. Project these trends forward another ten years and you can expect a single factory to cost nearly half a trillion dollars, and the number of companies that can do it should drop to <em>less than one</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_!V2SM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0664a533-9470-4af2-b9a8-2b19d0c1c3f7_640x668.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V2SM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0664a533-9470-4af2-b9a8-2b19d0c1c3f7_640x668.png 424w, https://substackcdn.com/image/fetch/$s_!V2SM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0664a533-9470-4af2-b9a8-2b19d0c1c3f7_640x668.png 848w, https://substackcdn.com/image/fetch/$s_!V2SM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0664a533-9470-4af2-b9a8-2b19d0c1c3f7_640x668.png 1272w, https://substackcdn.com/image/fetch/$s_!V2SM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0664a533-9470-4af2-b9a8-2b19d0c1c3f7_640x668.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V2SM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0664a533-9470-4af2-b9a8-2b19d0c1c3f7_640x668.png" width="640" height="668" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0664a533-9470-4af2-b9a8-2b19d0c1c3f7_640x668.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:668,&quot;width&quot;:640,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:199649,&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;:&quot;https://bzolang.blog/i/161865168?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0664a533-9470-4af2-b9a8-2b19d0c1c3f7_640x668.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_!V2SM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0664a533-9470-4af2-b9a8-2b19d0c1c3f7_640x668.png 424w, https://substackcdn.com/image/fetch/$s_!V2SM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0664a533-9470-4af2-b9a8-2b19d0c1c3f7_640x668.png 848w, https://substackcdn.com/image/fetch/$s_!V2SM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0664a533-9470-4af2-b9a8-2b19d0c1c3f7_640x668.png 1272w, https://substackcdn.com/image/fetch/$s_!V2SM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0664a533-9470-4af2-b9a8-2b19d0c1c3f7_640x668.png 1456w" sizes="100vw" fetchpriority="high"></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 plot from Gordon Moore&#8217;s original paper</figcaption></figure></div><h3>Nanometer Numbers</h3><p>The cutting edge of transistors are &#8220;2 nanometer&#8221;. Intel has abandoned nanometers as a metric and have begun using terms like 20A, 18A, and 14A, measuring in angstroms (1/10 of a nanometer, or the approximate width of a typical atom). However, these nanometer numbers are entirely fake today. This used to be an objective measure of the width of the gate on a planar transistor, but planar transistors stopped working 15 years ago. Their current substitute, FinFET transistors, have no equivalent feature to measure. The physical feature these numbers once measured no longer exists, but some naming scheme is still needed.</p><p>The advertised transistor density of modern 2nm nodes is somewhere around 200-250 million transistors per square mm. There are one trillion square nanometers in a square millimeter, and dividing this out this gives us a footprint of 4000-5000 square nanometers per transistor, or roughly a square 60nm on each side. The gate pitch, or minimum distance between transistors, is generally in the range of 30-40nm, and the 60x60nm footprint is a result of geometric constraints on how densely irregular circuits can be packed, leaving unavoidable empty space.</p><p>The extremely tiny features on a chip are produced via photolithography &#8211; a light is flashed through a photomask to project an image onto a wafer coated in a light-sensitive photoresist, which hardens or liquifies depending on its exposure to light. The tinier the image can be made while retaining focus and detail, the smaller components can be made.</p><p>The hype over the past few years around EUV (Extreme UltraViolet) lithography is mostly in its extremely fine resolution. Previous generations of lithography equipment relied on wavelengths of ultraviolet light measured in hundreds of nanometers, which puts limits on just how small of patterns can be created on a chip. This was cheated somewhat using multipatterning &#8211; if your &#8220;pixels&#8221; are 200nm across, you can shift the image by 100nm and project a new image, giving you some extra resolution in how the two images overlap. You can even do this multiple times, and employ a number of other tricks to cheat out much finer details than should be theoretically possible, at the expense of much more complicated and defect-prone manufacturing. EUV uses light with a wavelength of only 13.5nm, which lands in the overlap between &#8220;extreme UV&#8221; and &#8220;soft X-rays&#8221;. Being technically a form of X-ray (prone to passing through things), optical manipulation of this light is difficult &#8211; magnification requires atomically-precise curved mirrors relying on the Bragg effect to diffract the X-rays backward, as traditional materials are very ineffective at conventionally reflecting X-rays. X-ray lenses are effectively off the table.</p><p>EUV gives us &#8220;pixels&#8221; of about 13.5nm to build our chip from. ASML is now rolling out its &#8220;High-NA EUV&#8221; machines, which exploit some optical tricks to get this resolution down to about 6 or 7nm.</p><p>These &#8220;pixels&#8221; are still dozens of atoms across. We could theoretically scale down further &#8211; a 6x6x6nm cube has about a quarter million atoms. I suspect that if someone were simply willing to bite the bullet and attempt a 1:1 scale between wafers and photomasks, all this complicated optics could be eliminated and soft X-rays with 1-2nm wavelengths or less could be used. A typical medical X-ray tube is orders of magnitude more energy efficient at turning electricity into photons than the method of lasering molten tin droplets that&#8217;s currently used to produce EUV light. An X-ray tube is a simple vacuum tube with an electron beam between a cathode and anode, and the specific wavelength produced is a function of the atomic number of whatever material that the anode is made from.</p><p>The next problem however is not the wavelength of the photons, but rather the chemistry of the photoresist. Conventional photoresists are based on polymers &#8211; long chains of molecules that link or unlink when struck with photons. Linking them together forms a spaghetti-like knot on top of the silicon. However, the links of these chains are not infinitely small &#8211; they are made from atoms just like everything else, and they only work when forming long enough chains. Conventional photoresists stop working below 7-10nm, and most unconventional resists stop working below 5. I&#8217;m not aware of any clear plan for scaling past this fast-approaching point.</p><h3>Transistor Geometry</h3><p>In a transistor, the voltage of the gate lying on top of the channel controls the conductivity of the channel beneath it, either creating an insulator or &#8220;depletion region&#8221;, or leaving the silicon naturally conductive. Of course, the effect is localized, and the further away from the gate the effect weaker it is. About 15 years ago, the gates got small enough that the insulating region no longer could reach very deep into the silicon. This shallow depletion region is hardly a barrier to electrons at all &#8211; the electrons began to merely travel underneath.</p><p>Planar transistors, which had served as the workhorse of Moore&#8217;s Law for nearly 50 years, had to be abandoned in favor of FinFET transistors &#8211; rather than the gate lying flat across the channel, the channel is now a thin, vertical fin, and the gate wraps around three of the four sides. This increases the surface area between the gate and the channel, and means that this shallow depletion region needs only to reach toward the center of this thin fin to block off the flow of electrons.</p><p>FinFETs created a dramatic increase in manufacturing complexity, and forced several big players like Global Foundries to abandon chasing Moore&#8217;s Law. They have been the new workhorse, but will not be nearly as long-lived as planar transistors. Instead, after a mere 15 years they have already reached their limits and are being phased out in favor of GAAFETs &#8211; Gate-All-Around Field Effect Transistors. Intel calls them RibbonFETs. Rather than a vertical fin with a gate wire on three sides, GAAFET has the gate wrap around all four sides of the channel, and then stacks several channels on top of each other for extra reliability.</p><p>GAAFET is a dramatic increase in complexity on top of FinFETs &#8211; the layering is particularly hard, especially as there must be a thin insulating layer between the channel and the gate, and this layer must now wrap around all sides of a stack of channels. This alone multiplies the number of manufacturing steps, and thus multiplies the number of opportunities for defects, which eat into the bottom line of running a chip fab.</p><p>Even GAAFET is only expected to last a couple generations before it too runs out of steam. The end of the road seems like it may be CFET. Transistors naturally come in two flavors &#8211; PMOS and NMOS, and the CMOS logic that serves as the foundation of nearly all digital logic involves using the two together. CFET is simply GAAFET, but stacking the NMOS transistors on top of the PMOS transistors without much attempt to scale them.</p><h3>Other Limitations</h3><p>AMD launched the first 1 GHz processor in 2000, and Intel was soon boasting that they&#8217;d have 10 GHz processors by 2010. It is now 2025, and the CPU in my laptop maxes out with a mere 4 GHz boost speed. Where&#8217;s my other 6 GHz? Where&#8217;s all the further gains Intel was supposed to deliver in the past 15 years?</p><p>What had enabled this clock speed growth for decades was Dennard scaling, the observation that as transistors are scaled down the power density of the silicon (watts / sq mm) should stay the same. However, leakage currents and other factors do not scale with size. At large scales these are negligible, but on small scales they are not. Dennard scaling died around 2006, and clock speeds have largely stagnated ever since. The rising power density of the silicon has several other effects &#8211; rising power consumption, more extreme cooling systems, and an increasing need to disable large portions of the chip at a time to reduce power consumption.</p><p>Currently, one of the big technologies that Intel is betting hard on is backside power delivery. There are two types of wiring on a chip &#8211; power and logic. The logic wiring tends to consist of many small, thin wires that switch quickly and have low capacitance. The power wiring consists of a smaller number of large, thick wires with a consistent voltage and high capacitance meant to absorb the combined voltage swings of all the circuits attached. For a variety of engineering reasons it is not ideal to have these two near each other, and so Intel has begun fabricating chips with the bulk of the power wiring engraved on the back, with millions of tiny wires passing through the silicon.</p><p>This is a very difficult technology &#8211; a challenge that TSMC is not nearly as daring in bringing to market. If Intel can solve their presently high defect rates, corporate warfare, and stave off bankruptcy and buyouts, this technology may serve as a valuable advantage. On the other hand, this is an optimization that could have been introduced decades ago. Why now? Because it is a high-risk and relatively low-reward, one-time optimization. You cannot repeat this multiple times for greater gains. The gains, while meaningful, are certainly not enormous. This is not the kind of optimization that you make when the future looks optimistic &#8211; this is the kind of thing you do when you&#8217;re running out of ideas and have to start scraping the bottom of the barrel.</p><p>The trend toward chiplets and die stacking over the past decade, while not completely new, is also perhaps another modest optimization that&#8217;s becoming increasingly attractive as alternatives dry up.</p><p><a href="https://semianalysis.com/2022/07/24/the-dark-side-of-the-semiconductor/?utm_source=publication-search">Photomask prices have begun to skyrocket in cost</a>. Photomasks serve as a fixed cost for the production of chips &#8211; you need to pay for a set of masks whether you intend to manufacture a thousand chips or a billion. Masks used to cost a few hundred thousand dollars, but with 28nm hit $1M, at 7nm hit $10M, and are somewhere around $40M at 3nm.</p><p>If you&#8217;re manufacturing 10,000 chips at 3nm, the masks alone will add $4,000 to the price of each chip, which may otherwise be &lt;$100. If you&#8217;re at Nvidia&#8217;s scale and are manufacturing hundreds of millions of chips, then masks may only add a few dimes to the price of each chip. This essentially kills small players at advanced nodes, and perhaps risks undermining foundry business models like those of TSMC, which assume a large number of small and medium-sized customers. With rising photomask prices, all but TSMC&#8217;s biggest customers may simply be unable to afford to make their chips at these advanced nodes. As fabs continue to get more expensive to build, at some point it may no longer be possible to find any way to fund building them &#8211; or worse, investments are raised and a factory is built on the false assumption that customers will materialize as they always do, but this time with unrealistically deep pockets.</p><p>If you&#8217;re paying $40M or more for masks alone (not counting all the silicon, manufacturing, packaging, testing, etc.), perhaps a $150M EUV machine doesn&#8217;t look so pricey anymore. Or perhaps the machines start looking a bit overengineered and overpriced and you start reading up on X-ray physics and photolithography.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!l4Do!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d28e014-14b1-4cdd-99c6-c02fc9860453_767x714.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!l4Do!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d28e014-14b1-4cdd-99c6-c02fc9860453_767x714.png 424w, https://substackcdn.com/image/fetch/$s_!l4Do!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d28e014-14b1-4cdd-99c6-c02fc9860453_767x714.png 848w, https://substackcdn.com/image/fetch/$s_!l4Do!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d28e014-14b1-4cdd-99c6-c02fc9860453_767x714.png 1272w, https://substackcdn.com/image/fetch/$s_!l4Do!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d28e014-14b1-4cdd-99c6-c02fc9860453_767x714.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!l4Do!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d28e014-14b1-4cdd-99c6-c02fc9860453_767x714.png" width="767" height="714" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d28e014-14b1-4cdd-99c6-c02fc9860453_767x714.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:714,&quot;width&quot;:767,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:477681,&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://bzolang.blog/i/161865168?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d28e014-14b1-4cdd-99c6-c02fc9860453_767x714.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_!l4Do!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d28e014-14b1-4cdd-99c6-c02fc9860453_767x714.png 424w, https://substackcdn.com/image/fetch/$s_!l4Do!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d28e014-14b1-4cdd-99c6-c02fc9860453_767x714.png 848w, https://substackcdn.com/image/fetch/$s_!l4Do!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d28e014-14b1-4cdd-99c6-c02fc9860453_767x714.png 1272w, https://substackcdn.com/image/fetch/$s_!l4Do!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d28e014-14b1-4cdd-99c6-c02fc9860453_767x714.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">My buddy Matt&#8217;s viral tweet that made it into an Asianometry video</figcaption></figure></div><h3>Future</h3><p>Gordon Moore always emphasized that his &#8220;law&#8221; was fundamentally rooted in economics, not physics. How small or fast or efficient a transistor can be made in a lab is of absolutely no relevance if they can&#8217;t be mass-manufactured at a price anyone is willing to pay. The death of Moore&#8217;s Law has been predicted for many decades, and progress has continued to march on far longer than anyone expected. It outlived even its namesake.</p><p>Nevertheless, nothing here looks good. This is not some single technical obstacle, but many hard technical and financial walls fast approaching all at once. If there is any way forward, it will require a serious departure from the past few decades of work. If it is not competitive on day one with manufacturing processes that have been optimized and perfected over more than six decades, it stands no chance in the mass market.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;8e0da895-e8d9-44a3-aeee-051c9f3fd144&quot;,&quot;caption&quot;:&quot;One assumption that engineers have been able to make for most of the past few decades has been Dennard scaling; that making transistors smaller means they also use proportionally less energy. This assumption however stopped being true around 2005, and modern chips now include increasingly large amounts of &#8220;dark silicon&#8221; - circuitry used only sparingly t&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Moore's Wall&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Engineer building advanced CPUs and exotic compilers, lead editor and researcher at Possibilia Magazine, and writing the Bzogramming substack.\n\n~hilmec-difpes&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-01-23T15:35:27.664Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/h_600,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d9417ee-b750-48aa-a38e-5fc66e121976_578x316.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/moores-wall&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:95297089,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:7,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Invention often favors the easiest solutions to find over those that are the most efficient. Estimates for the size of the codebase of ASML&#8217;s lithography machines border on the billions of lines of code. This seems to be less a result of necessity, and more of a culture of copy-pasting code out of paranoia and the extreme pressure to ship on a tight schedule. There are tricky things that such a machine does, but a billion lines of code is pretty implausible for a company of this scale to even write without heavy automation or copy and paste. Some of this is essential complexity, the rest is likely one of the world&#8217;s largest mountains of technical debt.</p><p>Once it is no longer feasible to simply build a bigger fab, the only way forward is to go back and simplify things. If costs can be reduced substantially, then what would have been a half-trillion-dollar next-gen fab could be a bit more affordable, or a current-gen fab could be built on a much smaller budget. It may take a lot longer than two years to simplify things enough though.</p><p>This isn&#8217;t even particularly unreasonable &#8211; there are already <a href="https://www.youtube.com/@SamZeloof">multiple</a> <a href="https://www.youtube.com/watch?v=RuVS7MsQk4Y">examples</a> of people doing lithography in their garage that&#8217;s on par with the state of the art from the early 1990s. Once a viable path has been found, speedrunning it is often far easier and cheaper than the original stumbling in the dark. Technology also improves over time in many dimensions, and what may have been an absurdly difficult technical problem 10 or 20 or 30 years ago may be easily solved with a more recent innovation. If a literal teenager can build a 1990-level chip fab in his parents&#8217; garage today, then what can be achieved with some startup capital?</p><p>By far the largest factor driving high costs in semiconductors is the demand for extremely low defect rates. Chips are often assumed to be near-perfect. Highly parallel processors and memory chips can often tolerate higher defect rates through redundancy. Highly parallel chips designed from the ground up for extremely high defect tolerance could perhaps be manufactured with a vastly lower-quality, and by extension vastly cheaper chip fab. Memory chips have even been using complex 3D structures for decades that logic chips shy away from &#8211; high defect tolerance may not only lower costs but may also open the door for extremely advantageous manufacturing techniques that a defect-sensitive fab like TSMC may be too afraid to touch.</p><p>This is an industry where dozens of equipment suppliers must heavily coordinate to build tools for three major companies. This is an industry that likely should have embraced vertical integration at least a decade ago. Technological progress very rarely follows a smooth curve, and often follows more of an uneven stair-stepped trajectory. Moore&#8217;s Law is perhaps a self-fulfilling prophecy, and perhaps served as a powerful solution to the difficult problem of coordinating such a large and complex supply chain to innovate in sync. However, it&#8217;s very unlikely that this was the most efficient possible path, free of any wasteful diversions. I wouldn&#8217;t be surprised if huge efforts for short-lived technologies like <a href="https://en.wikipedia.org/wiki/Strained_silicon">strained silicon</a> could have been completely skipped.</p><h3>Used Car Markets</h3><p>Another possibility that has long been on my personal list of &#8220;future articles to write&#8221; is that the future of computing may look more like used cars. If there is little meaningful difference between a chip manufactured in 2035 and a chip from 2065, then buying a still-functional 30-year-old computer may be a much better deal than it is today. If there is less of a need to buy a new computer every few years, then investing a larger amount upfront may make sense &#8211; buying a $10,000 computer rather than a $1,000 computer, and just keeping it for much longer or reselling it later for an upgraded model.</p><p>Most cars aren&#8217;t purchased new, but are glorified hand-me-downs. People with deep pockets (or perhaps poor financial sense) purchase new cars for tens or hundreds of thousands of dollars, and several years later sell them at an enormous discount and go buy a new one. This makes a valuable asset that would otherwise be prohibitively expensive affordable to a much larger portion of the population.</p><div><hr></div><p><em>As of late, I&#8217;ve been busy working on startup stuff with <a href="https://uscompco.com/">The American Compute Corporation</a>. My priorities and ambitions have shifted somewhat and I&#8217;m not as stubborn about bootstrapping as I used to be. I&#8217;m currently raising some pre-seed funds, aiming to build high-performance, high-efficiency, general-purpose CPUs designed from first principles. I&#8217;m also increasingly convinced that, with the right compromises and specialization, a startup-scale fab may be viable and is at least well-worth the experiment.</em></p><p><em>A new chip architecture is also as much a software problem as it is a hardware problem. The Bzo compiler project went on the backburner for a while, but I&#8217;ve picked it up again recently and will hopefully have a dev log with new things to share soon. I have big ideas for the software for these chips. There&#8217;s an immense opportunity to rethink many different aspects of computing.</em></p><p><em>We&#8217;re entering the post-Moore era, I&#8217;m busy designing chips (and maybe a fab) for this new world. I&#8217;d be happy to talk to investors.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/the-unsustainability-of-moores-law?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/p/the-unsustainability-of-moores-law?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Solving Difficult Problems as a Filter]]></title><description><![CDATA[With some thoughts on simplicity and finding people]]></description><link>https://bzolang.blog/p/solving-difficult-problems-as-a-filter</link><guid isPermaLink="false">https://bzolang.blog/p/solving-difficult-problems-as-a-filter</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Sat, 15 Feb 2025 04:19:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!WTN4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe610ee-0a59-4a76-8b79-7e413359b203_439x759.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I recently had a conversation with an artist friend, discussing her creative process. She described how one of the tools she often starts with is to start asking questions about what she&#8217;s looking for. &#8220;Is it a fish?&#8221; is a humorous question she often starts with &#8211; it&#8217;s easy to answer (almost always no) and it&#8217;s at least a place to start in narrowing things down. The hard part of this method &#8211; as we both acknowledged &#8211; is in finding good and relevant questions that are effective at narrowing down possibilities, and especially questions that are uncorrelated from each other &#8211; &#8220;is it a fish?&#8221; and &#8220;does it swim?&#8221; might technically be different questions that sometimes give different answers, but answering one almost answers the other.</p><p>Each successive question narrows the range of possibilities. This is also a matter of information gain, which operates on a logarithmic scale. Uncorrelated questions can narrow possibilities exponentially, though can sometimes be hard to find. An idealistic case might be a binary question where half the solutions answer yes and the other half answer no. Assuming a sequence of such ideal questions, the game &#8220;20 Questions&#8221; should be able to narrow down to one of a million possibilities.</p><p>There are many different systems &#8211; information, design, art, engineering, software, literature, and so on &#8211; where possibility spaces are exponential in size. These kinds of questions can be asked a tremendous number of times while still leaving a tremendous number of options available.</p><p>32 bytes of information has more configurations than there are atoms in the universe. Every additional byte added multiplies that number by a factor of 256. This sentence, encoded in ASCII, takes 48 bytes. The numbers here get unfathomably vast extremely quickly, calling such numbers &#8220;astronomically large&#8221; is giving way too much credit to astronomy.</p><p>Questions are also constraints. A problem will impose constraints on what constitutes a valid solution. This limits possibilities in the same way that these questions do. Adding more degrees of freedom grows the state space exponentially, and adding constraints shrinks it exponentially.</p><h3>Tendency Toward Complexity</h3><p>There is a tendency to engineer very complicated solutions to problems. Simplicity is usually preferable, but complexity often is unavoidable and creeps in anyway.</p><p>If we place an upper bound on the complexity of a solution, it limits the total space of solutions. If there are a trillion solutions, but we ask a mere 40 binary questions, then we&#8217;ve narrowed the space down by about a factor of about a trillion and it&#8217;s likely that only a single solution satisfies all of our constraints. In practice, this tends to be more probabilistic &#8211; as mentioned, perfectly binary constraints/questions are an ideal case, and avoiding correlations between constraints can be difficult, and some constraints are a bit more lopsided where answering one way narrows things down by much more than half. Narrowing down the space like this, there may be many more than one left, or it may be none at all, depending on the exact interactions and correlations of the constraints. But it should on average be about one.</p><p>This explains complexity &#8211; as we apply more constraints to a finite possibility space, solutions get exponentially less abundant until none remain at all. If we add more complexity, we can buy some possibilities back.</p><p></p><p>Of course, we also need our constraints to lead us to solutions well. We can simply assert a list of constraints, and there may truly be solutions that satisfy them all, but finding these solutions can nonetheless be like finding needles in a haystack.</p><p>Finding solutions that satisfy a single constraint can often be easy, and constraints with a similar structure can often be compatible with each other in a way that makes finding solutions easy. In general however, finding solutions that satisfy many constraints can often be almost as hard as randomly searching for them, and when you&#8217;ve narrowed possibilities by a gigantic amount, this can make finding solutions similarly difficult. One simplified way of looking at this is through the perspective of <a href="https://en.wikipedia.org/wiki/Abstract_interpretation#Examples_of_abstract_domains">Abstract Domains</a> and <a href="https://en.wikipedia.org/wiki/Galois_connection">Galois Connections</a>, though that&#8217;s a complicated subject for another time.</p><p></p><h3>Finite, Real-World Cases</h3><p>Sometimes you have a problem that is less of a design problem and more of a search problem, in the sense that the options you&#8217;re sorting through already exist in the real world. There are undoubtedly some magnificent lost ancient texts preserved in the <a href="https://en.wikipedia.org/wiki/Herculaneum_papyri">Herculaneum scrolls</a>, but we can also be certain that there will be no shortage of significant works that are lost for good. We could perhaps place a few simple constraints, and by a numbers game &#8211; there are likely a couple thousand scrolls total in the ruins &#8211; find many different ancient texts that fit a short list of random constraints. However, if we get too specific, if we add too many constraints, the odds that a particular thing that we hope to find there quickly becomes very unlikely.</p><p>There are also background and sampling biases - in this case, the ancient library was owned by an Epicurean philosopher, and many of the texts that have already been read are on specifically this branch of philosophy. Texts on unrelated subjects almost certainly exist in the library, but may be in the minory. Good initial, near-binary questions for narrowing down texts in the library may be less like &#8220;are you looking for philosophy, science, or history?&#8220; and more like variants of &#8220;what branch of Epicurean philosophy are you looking for?&#8221;</p><p>32 bytes, a mere 256 bits, has more configurations than atoms in the universe. Anything made from atoms will necessarily exist in a quantity far fewer than this. If you have a couple hundred binary constraints, you likely could search the entire universe for the item you seek and come up empty-handed.</p><p></p><h3>Shaping Rocks and People</h3><p>Rocks of different shapes may be suited for different uses as tools. While rocks may be extremely abundant on Earth, they are in finite supply, and of course vastly smaller than the number of atoms on Earth, which itself is vastly smaller than the number of atoms in the universe. A few dozen binary constraints on the shape of a rock that decide its use as a tool could easily exhaust the entire Earth&#8217;s supply. If you are looking only at rocks within walking distance and close to the surface, expect to be able to place fewer constraints. And if your constraints are tight enough, good luck searching all that area for just the right rock, and good luck finding a new one should you ever need one again. Early humans who wanted better tools could thus not rely on simply seeking out a rock of the right shape, they were forced to shape the rocks themselves.</p><p>If anything, the deeply human trait of &#8220;tool use&#8221; has much less to do with applying nature as we find it to solve our problems, and much more to do with engineering and shaping what nature provides us to better solve our problems. Primates are occasionally seen using sticks and stones as tools, but shaping the sticks and stones to create better tools is certainly a much more meaningful step that is less often observed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WTN4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe610ee-0a59-4a76-8b79-7e413359b203_439x759.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WTN4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe610ee-0a59-4a76-8b79-7e413359b203_439x759.png 424w, https://substackcdn.com/image/fetch/$s_!WTN4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe610ee-0a59-4a76-8b79-7e413359b203_439x759.png 848w, https://substackcdn.com/image/fetch/$s_!WTN4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe610ee-0a59-4a76-8b79-7e413359b203_439x759.png 1272w, https://substackcdn.com/image/fetch/$s_!WTN4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe610ee-0a59-4a76-8b79-7e413359b203_439x759.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WTN4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe610ee-0a59-4a76-8b79-7e413359b203_439x759.png" width="439" height="759" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5fe610ee-0a59-4a76-8b79-7e413359b203_439x759.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:759,&quot;width&quot;:439,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:760892,&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_!WTN4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe610ee-0a59-4a76-8b79-7e413359b203_439x759.png 424w, https://substackcdn.com/image/fetch/$s_!WTN4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe610ee-0a59-4a76-8b79-7e413359b203_439x759.png 848w, https://substackcdn.com/image/fetch/$s_!WTN4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe610ee-0a59-4a76-8b79-7e413359b203_439x759.png 1272w, https://substackcdn.com/image/fetch/$s_!WTN4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe610ee-0a59-4a76-8b79-7e413359b203_439x759.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 stone tool, carved by Neanderthals in France between 200,000 and 500,000 BC. Photo from my visit to the MET in NYC last year.</figcaption></figure></div><p>There are many different changes that can be made to an object. The range of things that object has the potential to be transformed into with the right sequence of modifications is vastly larger than the single object it is at the present moment, and this buys a far greater constraint budget.</p><p></p><p>8 billion people may sound like a lot, but it only takes a mere 33 binary questions to narrow a search to a single person. If you have a few constraints that are uncommon, if you&#8217;re looking for someone who&#8217;s a one-in-a-hundred person in a few different ways, it might only take four or five such constraints before not a single person is left assuming the constraints aren&#8217;t correlated.</p><p>Dating apps that have framed modern dating as merely filtering for a perfect person are probably less effective than old-fashioned approaches where two people in the same town simply paired up and made things work. Big cities might provide the illusion of high optionality, but certainly cannot provide exponentially higher optionality. Despite the vast majority of human history lacking birth control, dense urban centers historically have almost always had much lower fertility than more rural areas.</p><p>Computational sorting may improve options and reduce incompatibilities, but there&#8217;s a very hard limit on how picky people can be, and unless your standards are particularly low you can expect it to be difficult to find someone without any need for adaptation. People also change over time. Eventually if your standards are high enough, your only option is to find someone close enough and make things work. It&#8217;s probably best to find someone who&#8217;s as close as you can to what you&#8217;re looking for and fix whatever incompatibilities that remain.</p><p></p><p>There is also great interest today in reshoring a lot of manufacturing. This fundamentally requires creating many new industries and businesses that require skillsets that are currently not in great abundance. Not even an AI-accelerated job board website with a billion dollars in VC funds would make a dent in this problem - a company that requires very niche skills may quickly exhaust the world&#8217;s entire supply of experts. At some point a training program is the only solution.</p><p></p><p>If you&#8217;re picky, you can only lean on the outside world to solve your problems for you for so long. Solving problems by shaping the world yourself is the most human way forward.</p><div><hr></div><p><em>A lighter and less technical article today for Valentine&#8217;s Day I guess. </em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/solving-difficult-problems-as-a-filter?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/p/solving-difficult-problems-as-a-filter?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p>]]></content:encoded></item><item><title><![CDATA[Bicycles for the Mind and Software-Augmented Mentats]]></title><description><![CDATA[A look through the history of augmenting the human mind and some thoughts on the future]]></description><link>https://bzolang.blog/p/bicycles-for-the-mind-and-software</link><guid isPermaLink="false">https://bzolang.blog/p/bicycles-for-the-mind-and-software</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Mon, 06 Jan 2025 05:50:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zqAi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96691e33-ee50-4fe6-93ed-ede97a7a3d41_1014x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zqAi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96691e33-ee50-4fe6-93ed-ede97a7a3d41_1014x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zqAi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96691e33-ee50-4fe6-93ed-ede97a7a3d41_1014x720.png 424w, https://substackcdn.com/image/fetch/$s_!zqAi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96691e33-ee50-4fe6-93ed-ede97a7a3d41_1014x720.png 848w, https://substackcdn.com/image/fetch/$s_!zqAi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96691e33-ee50-4fe6-93ed-ede97a7a3d41_1014x720.png 1272w, https://substackcdn.com/image/fetch/$s_!zqAi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96691e33-ee50-4fe6-93ed-ede97a7a3d41_1014x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zqAi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96691e33-ee50-4fe6-93ed-ede97a7a3d41_1014x720.png" width="1014" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96691e33-ee50-4fe6-93ed-ede97a7a3d41_1014x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1014,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:810744,&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_!zqAi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96691e33-ee50-4fe6-93ed-ede97a7a3d41_1014x720.png 424w, https://substackcdn.com/image/fetch/$s_!zqAi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96691e33-ee50-4fe6-93ed-ede97a7a3d41_1014x720.png 848w, https://substackcdn.com/image/fetch/$s_!zqAi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96691e33-ee50-4fe6-93ed-ede97a7a3d41_1014x720.png 1272w, https://substackcdn.com/image/fetch/$s_!zqAi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96691e33-ee50-4fe6-93ed-ede97a7a3d41_1014x720.png 1456w" sizes="100vw" fetchpriority="high"></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 least bad piece of AI art I could generate for this article</figcaption></figure></div><h2>Human Software</h2><p>Rituals and routines are human software, memes that spread because they are [perceived as] useful.</p><p>I generally think of the mind not as a single program running on some hardware, but rather as many little pieces of software. They are downloaded and synthesized via mimesis and observation, and they interact in various ways, sometimes positively and sometimes negatively. They compose surprisingly well and seem to rely a lot on semantic/associative links.</p><p>Clearly the brain stores a lot more knowledge than it can properly index. &#8220;List every fact you know&#8221; is a laughably impossible task, but clearly all that information is in there somewhere and retrievable somehow. Any fact that you have learned and have not yet forgotten can be summoned with the right stimulus. Sometimes things are very deeply buried. There are things deep in your memory that may be there for the rest of your life, but that you may never think of again for lack of the proper stimuli.</p><p>Replicating human intelligence very likely is not merely a matter of copying the software, but also copying the architecture by which this software can be composed, as well as the ability to rapidly acquire new software. Existing neural networks are far too data-intensive, requiring many thousands of examples to learn what humans can learn with only a couple examples.</p><p>Digital software allows us to automate many previously cognitive tasks. There is great merit to the computer analogy for the brain, though the brain is by all means a very alien form of computer. Nevertheless, the ultimate limits of computing will apply just the same to both, and the two should be expected to converge in many ways as pushed toward their limits, as they in many ways can be expected to have similar limits.</p><p>But human software can rely on a great deal of common sense, general knowledge, and likely a great deal of deeply buried cognitive infrastructure. While all running on very similar neural hardware, people of wildly different cultures can see the world very differently, and certainly people from merely a few centuries ago would struggle in the modern world, let alone prehistoric people. Even notions like progress and linear time are historically abnormal and relatively recent developments. Human and animal sacrifice was for a very long time a near-universal human practice, understood by all to be critically necessary in a way that modern people clearly fail to recognize.</p><p>Digital software may formally encode a great deal of what&#8217;s necessary to accomplish a task, but there&#8217;s also a great deal that it doesn&#8217;t encode. The entire problem of human-computer interaction is of course the interaction between digital software and human software, and the human side will continue to lack formal specification. Whatever drives a person to use a piece of software, whatever method they use to gather information from their mind and from the world and funnel it into the machine, is all human software that is completely independent of that which is stored in the machine. It is just as critical if not moreso, it cannot be abstracted away or removed, and it can vary enormously, even from person to person.</p><p>I remember a conversation with my mother, a nurse, about medical record-keeping software. There is standard, near-monopolized software, and there are major efforts to standardize things further, but to a large extent every hospital will use the same software in different and idiosyncratic ways.</p><p>As we better understand software, the brain, and the harmonized interaction between the two, we'll be able to push even greater limits of what each can do.</p><p></p><p></p><h2>Computers as a Bicycle for the Mind</h2><p>We&#8217;ve had writing for about 54 centuries, with proto-writing systems dating back at least 200.</p><p>We&#8217;ve had sculpture and other sophisticated visual arts (cave painting, etc.) for at least 430 centuries, with more primitive abstract art dating back perhaps a thousand centuries or more.</p><p>Modern computing is less than one century old. I don&#8217;t think we&#8217;ve achieved Steve Jobs&#8217; goal of a &#8220;bicycle for the mind&#8221; &#8211; a tool for greatly augmenting human thought, analogous to how a bicycle dramatically increases the efficiency of human locomotion. As impactful as the smartphone and personal computer have been, the idea that we have it all figured out and that deeper and more valuable use of computers is not possible is an obvious failure of imagination.</p><p>Perhaps falling short of such an ambitious goal is a failure on Jobs&#8217; part, but I expect it is more likely that this project is not merely a simple project that can be shipped in a few years but a great human project that will take centuries. He himself argued that computing a century from now would be vastly better than today while explaining the bicycle analogy.</p><div id="youtube2-NjIhmzU0Y8Y" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;NjIhmzU0Y8Y&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/NjIhmzU0Y8Y?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>To a large extent, human excellence is not a matter of nature but of environment and routine. Your habits and behaviors contribute enormously to shaping your mind and body. While perhaps raw genetically-influenced brainpower is a significant factor, often the most remarkable people have undergone great and unusual hardships, or come from strange and unique environments, or are simply very mentally ill. Great and influential people are often otherwise ordinary people who have some internal contradiction or conflict intensely motivated to change the world around them to resolve it.</p><p>There is only so much information about who someone is that can be encoded in and influenced by genes, much of the rest will be environment. Likewise, the behavior of a computer can vary extremely wildly based on how it is programmed. There are more tiny programs that fit into a mere 32 bytes than there are atoms in the universe, more than could ever be explored. There are short snippets of code that could in principle be typed into a computer that could achieve remarkable things that no civilization &#8211; human or alien or otherwise &#8211; will ever live long enough to see. The <a href="https://en.wikipedia.org/wiki/The_Library_of_Babel">Library of Babel</a> is vast.</p><p>A person who can train eight hours a day for years in a sport has a much better shot at being a world-class athlete than someone who spends their time differently. A bright person prone to deep thought may form a recognizably different style of intelligence from someone who reads voraciously while spending relatively little time reflecting deeply on or synthesizing the disparate things they have read. Someone who spends their time debating others will cultivate another very different skillset, as will someone who negotiates business deals all day.</p><p>Someone who spends their time thinking over things purely in their head may have a more entangled web of knowledge while someone who spends their time writing may perhaps become better at serializing their thoughts. Someone who does calculations by hand may gain a very different intuition for numbers than someone who types their calculations into a computer. If we bring a wider range of software into people&#8217;s lives, the way our tools for thought shape how we think may continue to shape new styles of thought that we have yet to see.</p><p>I would not be surprised if the Greek&#8217;s approaches to axiomatic mathematics and formal logic were downstream from their early adoption of alphabetic writing, which reduced writing systems which were previously extremely complex and logographic down to a relatively small set of general symbols. More ancient mathematics and reasoning was often more intuitive, arithmetic algorithms taught through repetition but lacking any notion of formal proof. Students would often be told a procedure, told to go through hundreds of examples pressing numbers into clay or writing on papyrus, and then eventually just intuit the patterns and understanding as to why the magical procedure worked.</p><p>Humans may have common interfaces such as language and culture, but this hides an enormous amount of underlying diversity and complexity. Different people, even with a tremendous amount of shared understanding, can nonetheless have wildly different ways of thinking. There are billions of bits of information flashing around the human brain every second, and many tens or hundreds of trillions of synapses. Meanwhile, human speech maxes out at only a few dozen bits per second. There is certainly much more data embedded in body language &#8211; every part of the cortex talks to and influences every other, and the brain does a great deal of thinking through action &#8211; but this is not well-understood or very consciously acted out, and mapping billions of neuron spikes to a couple hundred muscles still is necessarily an extremely lossy process.</p><p></p><h2>Historical Human Augmentation</h2><p>Early Greek mathematics often was more appropriation than invention, with many Greeks sailing to far-off lands in search of ancient geometric wisdom. They would then return to Greece and share what they had learned. As mathematics became more axiomatic with Euclid, the ability to rigorously build upon existing knowledge in new directions was made easier, and complicated concepts that could not be easily intuited from a few examples became much more viable. What had previously been superhuman mathematical reasoning suddenly became relatively common.</p><p>And this is far from the only example of information technology expanding human abilities, even in ancient times. Before the obvious example of literacy, preliterate oral cultures have made near-universal use of song and poetry &#8211; the additional regular, repetitive structure makes memorization of large volumes of text much easier. At the very least, these additional constraints can aid in error correction, narrowing the options of which words could come next in case that one&#8217;s memory grows hazy.</p><p>Poetry allowed the pre-literate Greeks to memorize their immense epics like the Iliad and Odyssey, whose combined length is about half that of the Bible. Chapter 2 of the Iliad even contains the &#8220;ship list&#8221;, in which Homer autistically lists off detailed statistics for every ship in the entire Greek navy. This is sometimes argued to have functioned as a way for ancient bards to show off their impressive memorization skills even more.</p><p>Aboriginal Australians are known to have used songs for navigation, called <a href="https://en.wikipedia.org/wiki/Songline">Songlines</a>. These were songs that contained sequences of directions and landmarks as directions to points of interest, often interwoven with mythology. These could also serve as a form of passport &#8211; travelers who could accurately sing native languages and follow the directions were better respected and faced fewer threats in uncommon territory than those who could not. Many Aboriginal languages augment this with absolute direction &#8211; you do not have a left foot and a right foot, but an east foot and a west foot, and if you turn 90 degrees you now have a north foot and a south foot. Being so deeply baked into language, one cannot communicate without learning an extremely accurate sense of direction. </p><p>Memorization augmentation is not limited to only rhyme and meter, of course. The Method of Loci, or memory palace, has been known for thousands of years. Imagining yourself wandering through a vast palace, and using imagined objects in each room as hints can shift semantic information to spatial memory, where it may face less congestion.</p><p>Furthermore, mathematical notation and the manipulation of written symbols developed for algebra and subsequent mathematics was an enormous advance over ancient mathematics &#8211; what would have previously required a lengthy paragraph analogizing things to lines, squares, and cubes of various interrelated constructions can instead be replaced by a concise collection of symbols. Transforming those symbols into related equations which may reveal different insights is often a matter of mechanistically following some simple rules and applying some basic pattern matching and reasoning. This is a powerful aid to mathematical thought and for abstracting to difficult problems whose geometric meaning may be difficult to immediately intuit. Difficult leaps in logic can sometimes be replaced by manipulating symbols with simple rules.</p><p></p><h2>Future Human Augmentation</h2><p>The cerebral cortex is made up of modular brain circuits called cortical columns. Regardless of if one looks at the visual cortex (vision), auditory cortex (hearing), prefrontal cortex (abstract thought and planning), motor cortex (muscle movement), gustatory cortex (taste), or any other cortical region, and regardless of if one looks at humans, rats, cats, dogs, raccoons, or most other mammals, the structure of cortical columns remains shockingly consistent with the same 6-12 layers (depending on how one decides to count them), with consistent cell types and connected to each other in a consistent circuit. There is some variation &#8211; aquatic mammals often only have 3 layers and the human visual cortex divides layer IV into a couple extra sublayers &#8211; but these are rare exceptions.</p><p>This strongly implies that despite there being many patches of the brain with accepted functions, there is in fact very little specialization in the cortex &#8211; what makes the visual cortex is not that millions of years of evolution have pre-trained or optimized it for vision, but simply that it gets information from the retina. <a href="https://www.jneurosci.org/content/jneuro/12/9/3651.full.pdf">Experiments have been performed swapping the optical and auditory nerves in fetal ferrets</a>, sending visual information to their auditory cortex and auditory information to their visual cortex, and they learn to see and hear just the same.</p><p>The visual cortex that evolved for hunting and navigation can be repurposed for drawing art, for reading, or for operating a computer or smartphone. No natural selection is required at all to rewire it. The human brain is incredibly general-purpose, and will certainly be capable of learning no shortage of future inventions and augmentations. As I have discussed many times before, sensory substitution and sensory augmentation are surprisingly underexplored technologies for their potential &#8211; the brain will simply learn to recognize patterns in whatever data you give it, no matter the sensory domain. Writing and data visualization are extremely successful examples of this. There are also many niche examples, such as <a href="https://en.wikipedia.org/wiki/Human_echolocation">blind people teaching themselves echolocation</a>.</p><p>It is sometimes said that you remember 10% of what you read, 30% of what you hear, 70% of what you do, 90% of what you teach. Other numbers and orderings are thrown around, but the general principle &#8211; that passive absorption of information engages memory less than active engagement &#8211; is fairly consistent. One observation here is that more active engagement here would also involve a larger number of brain regions.</p><p>Whatever it is that you are seeing, hearing, feeling, or thinking, your brain needs some way to encode and represent it. If it lacks the neural coding to currently do so, it will repurpose existing neurons to learn a representation for this new information. Engage more with an idea and your brain will form a deeper representation of it. If that representation is stored entirely in your visual cortex because you only engage by sight, it must compete for space with everything else you engage with visually. If you instead begin engaging other senses, then we can argue from first principles that this model will be spread across other brain regions, potentially regions that are much less congested.</p><p>It is also worth noting that literacy has the effect of shifting a very wide range of functions over to the left hemisphere of the brain where the language circuit is, <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC3704307/pdf/cer-07-13.pdf">and reorganizing the visual cortex substantially to optimize the recognition of lines and corners.</a> Another piece of personal speculation &#8211; since the right hemisphere often takes on more social reasoning roles, the religious tendency to anthropomorphize forces of nature may in fact move related reasoning to the less-congested right hemisphere, which may have enabled more complex reasoning on these subjects. It&#8217;s worth noting that one of the greatest cultural influences on early Christianity was Hellenistic Judaism, <a href="https://en.wikipedia.org/wiki/Philo">led by thinkers such as Philo</a> who argued that Jewish theology, if read allegorically, had come to very similar and compatible conclusions on many subjects to the Greeks.</p><p>The human cerebral cortex has somewhere on the order of 20 billion neurons and 10-100 trillion synapses. Neurons fire at around 500 Hz and activity is generally rather sparse &#8211; only a couple percent of neurons may be firing at a time, though the exact amount can vary substantially over time. Assuming 2% sparsity, we can estimate that the cortex performs somewhere around 1-10 quadrillion operations per second. Each synapse may only store a few bits in terms of its weight, though there is also evidence suggesting that neuronal pattern recognition is timing-sensitive, and that synapses physically migrate up and down dendrites to adjust the timing, suggesting even more degrees of freedom (this may also increase computational power). Nevertheless, the synapse count is high enough that the brain&#8217;s storage capacity is well into the tens if not hundreds of terabytes.</p><p>This is a very large amount of computational power, and the large numbers involved are perhaps an indicator that in many domains we may not actually be pushing the computational or storage limits of the brain very hard. After all, as previously discussed ancient people found many ways of pushing limits well beyond what we would today expect to be possible. With future techniques, greater assistance from technology, and deeper neuroscience and psychology understanding, it may be possible to push the limits well beyond what we currently understand.</p><p>The vast majority of software we run on our computers is laughably poorly written and inefficient. Even code that makes attempts at optimization may often be implemented in languages that are fundamentally sloppy or wasteful with resources. A difference in quantity often results in a difference in kind &#8211; while greater computing power enables existing applications to be scaled further, it also enables new applications which were not possible before. Additionally, the most optimized version of a problem is almost never the first to be found, and so something that is just barely possible with a new generation of computers may, in time, be <a href="https://www.tomshardware.com/tech-industry/quantum-computing/commodore-64-outperforms-ibms-quantum-systems-1-mhz-computer-said-to-be-faster-more-efficient-and-decently-accurate">optimized to run on much weaker machines</a>. A modern GPU may be comparable in performance to a supercomputer from 15-20 years ago, but the GPU is certainly far more useful than the supercomputer. There has been more time to figure out what exactly can be done with that much compute, there has been more effort into optimization to make costly tasks more tractable, and new ideas on what to use computers for in general will have been developed. The timescales may be longer, but there is no reason why this cannot apply to the brain just as well. With developments such as writing and advanced mathematics, it largely has occurred.</p><p>My personal critique of the Mentats in Dune &#8211; humans trained in mental computation to replace banished comptuers &#8211; is that the feats of such Mentats are often unimpressive compared to what may actually be possible based on the numbers. The people of Dune apparently understood intelligence well enough to replicate it in a machine, try the technology out for thousands of years, turn against it and banish the technology, and then spend ten thousand years using this deep understanding of the mind to optimize human thought, and still don&#8217;t seem capable of operating on more than a few thousand numbers at a time.</p><p>Regardless of the imagination of 1960s science fiction, I expect that the next few centuries of human-computer interaction will enable us to not only automate many of the things we use our minds for today as is often assumed, but to further push the limits of what humans can do. I do not however expect any unified such effort, but rather immense fragmentation &#8211; humans doing fantastical yet diverse things by pushing their minds very far in very different directions. Perhaps we will be most constrained by our need to interact and interface with each other, requiring that people&#8217;s minds don&#8217;t become too distant from each other.</p><p>We may see mathematics Mentats, engineering Mentats, historical Mentats, even Creative Mentats, and perhaps a wide range of other things well beyond our current conception. This will not only require more deeply understanding the mind and how to push its limits, but also understanding the types of neural computations required to accomplish these tasks, how to shape these through the diverse array of tools humans have historically augmented their minds with, and what new forms computers now enable for both offloading work and for shaping thought.</p><p>The early adopters of proper Mentat software may find themselves seemingly superhuman by historical standards. Intellectuals and creatives with seemingly impossible powers, in much the same way that memorizing the entirety of the Iliad may seem superhuman today, but was completely achievable with Bronze age cognitive technology.</p><p>And to answer the obligatory question these days - while &#8220;AI&#8221; technology is neat, I think it&#8217;s fundamentally very different from what I&#8217;m talking about here. There&#8217;s perhaps a role for AI methods to be applied, and there likely are many cases where the ultimate limits of the brain and the limits of other extreme computing systems share some resemblance, but I expect the tech tree for deepening human-computer interaction to be a very different tech tree entirely, and that there are no simple answers to this problem no matter how much AI is involved.</p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/bicycles-for-the-mind-and-software?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/p/bicycles-for-the-mind-and-software?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Undecidability Isn't So Bad]]></title><description><![CDATA[Solving "Impossible" Problems]]></description><link>https://bzolang.blog/p/undecidability-isnt-so-bad</link><guid isPermaLink="false">https://bzolang.blog/p/undecidability-isnt-so-bad</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Sat, 07 Dec 2024 08:38:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2228e67b-3ffc-422f-96f6-42cb130397f9_2048x1536.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Undecidable problems in computing are generally considered impossible to solve, and many lament that this means that many of the wonderful code analysis tools that we might wish for to automatically detect all the bugs in our code simply cannot be built, even in theory. In reality however, this is not entirely true, and really just boils down to a misunderstanding.</p><p>For example, Alan Turing&#8217;s original proof on undecidability shows that if we had a computer that could, for any given program and any input to that program, produce a perfectly accurate prediction of whether that program loops forever or if it eventually halts, that this machine would create a mathematical contradiction. Therefore, it cannot exist. This is often assumed to mean that answering such a problem is entirely impossible, but there is no reason at all why this would apply any less to the human brain than it would a computer algorithm. With that in mind, ask yourself, does the following loop halt?</p><p><code>while(true){<br>    // twiddle our thumbs<br>}</code></p><p>This isn&#8217;t a trick question or anything. To anyone with a basic understanding of code, this is an obvious example of an infinite loop. Has your brain just violated mathematical law? Have you just proven that the human brain is not a computer but instead something magical? Nope, absolutely nothing of the sort, you&#8217;ve simply shown that the common narrative around what undecidability means isn&#8217;t very accurate.</p><p>If you dig into the details of Turing&#8217;s paper, you find at its core a diagonalization argument, which is just a method for showing that one set must be bigger than another. His argument really just boils down to a proof that the set of all possible program states which encode proofs of properties of other program states is smaller than the set of all possible states.</p><p>You actually can attempt to build a program that tries to answer undecidable problems. One trivial method would be to simply run the input program until it halts, and then report it as having halted. Another method might be to track all of the states that an input program can reach, and to look for loops or repeats. Plenty of other creative tricks can be devised as well, but inspecting the failure cases is interesting. Ignoring the fact that many of these algorithms could easily be hopelessly intractible to actually run because of how vast even very small program state spaces are, what we find is that any program we think of must either sometimes give a wrong answer, or the loop-detecting program itself will ironically get into an infinite loop.</p><p>We can in fact build a correct, approximate undecidability solver if rather than insisting that our loop-detecting program always return YES or NO, it can also sometimes return IDK. Technically speaking, returning &#8220;I don&#8217;t know&#8221; for every possible input is correct, albeit not very useful. Reducing the number of IDK cases to zero is impossible, but correctly answering in at least a subset of cases is certainly not.</p><p>And of course, halting is only the classic example of an undecidable problem - really detecting any nontrivial property of a program&#8217;s behavior is undecidable, per <a href="https://en.wikipedia.org/wiki/Rice's_theorem">Rice&#8217;s Theorem</a>.</p><p>Humans generally design software that is meant to be understood. If our programs truly contain a lot of properties that are impossible to verify, that&#8217;s often a good indicator that there is a bug in the code somewhere.</p><p></p><h4>&#8220;Here Be Dragons&#8221; Analysis</h4><p>There&#8217;s a method I like to apply to studying difficult problems which I call &#8220;here be dragons&#8221; analysis. The basic idea is to divide things up into a number of distinct cases which you may or may not be able to say useful things about. If you can show that many of these cases are well-behaved, you can show that the badly behaved ones must have or lack certain properties related to how you divided things up.</p><p>Let&#8217;s say we know something about our program, namely that it fits into a finite amount of memory. Finite memory implies a finite statespace, and therefore at least in theory the entire state space can be enumerated (even if this is too costly in practice). Therefore, this situation is actually decidable. If we have a powerful enough computer and enough time, we can trace out any path through the state space and look for cycles and guarantee when a program does or does not loop forever. Therefore, the truly undecidable problems cannot be programs that fit neatly into a finite amount of memory. They must in fact grow forever!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hi5o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0877dc-62e6-4c1c-a81c-38bd4653c3fa_2048x991.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hi5o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0877dc-62e6-4c1c-a81c-38bd4653c3fa_2048x991.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hi5o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0877dc-62e6-4c1c-a81c-38bd4653c3fa_2048x991.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hi5o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0877dc-62e6-4c1c-a81c-38bd4653c3fa_2048x991.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hi5o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0877dc-62e6-4c1c-a81c-38bd4653c3fa_2048x991.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hi5o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0877dc-62e6-4c1c-a81c-38bd4653c3fa_2048x991.jpeg" width="1456" height="705" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed0877dc-62e6-4c1c-a81c-38bd4653c3fa_2048x991.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:705,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:165204,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&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_!hi5o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0877dc-62e6-4c1c-a81c-38bd4653c3fa_2048x991.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hi5o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0877dc-62e6-4c1c-a81c-38bd4653c3fa_2048x991.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hi5o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0877dc-62e6-4c1c-a81c-38bd4653c3fa_2048x991.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hi5o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0877dc-62e6-4c1c-a81c-38bd4653c3fa_2048x991.jpeg 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>Then we can look at the unbounded cases. If we have a program that simply expands in a simple way, we might be able to figure out some clever analysis that determines the rule that it follows and show that it grows without bound. This is another case where the program fails to halt, albeit one where the program doesn&#8217;t so much get caught in a loop, but where it simply grows forever.</p><p>Then there&#8217;s another case - one where the program jumps around through some statespace without much of a pattern, but gradually expanding to larger and larger memory requirements without an obvious limit. If we cannot devise some analysis to detect a pattern here, then how can we tell if the program is spiraling off into chaos or if it eventually repeats without simply waiting a potentially infinite period of time for it to retrace its steps?</p><p>This unbounded chaotic expansion case is therefore the one case where we cannot show that the program eventually halts, and therefore every program which is truly undecidable must behave like this - jumping around without an obvious pattern while slowly (or rapidly) expanding its memory footprint. Granted, as mentioned before, there are a great number of cases that may be theoretically decidable which in practice are too expensive to verify.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UYLy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2228e67b-3ffc-422f-96f6-42cb130397f9_2048x1536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UYLy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2228e67b-3ffc-422f-96f6-42cb130397f9_2048x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!UYLy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2228e67b-3ffc-422f-96f6-42cb130397f9_2048x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!UYLy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2228e67b-3ffc-422f-96f6-42cb130397f9_2048x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!UYLy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2228e67b-3ffc-422f-96f6-42cb130397f9_2048x1536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UYLy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2228e67b-3ffc-422f-96f6-42cb130397f9_2048x1536.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2228e67b-3ffc-422f-96f6-42cb130397f9_2048x1536.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:243222,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&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_!UYLy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2228e67b-3ffc-422f-96f6-42cb130397f9_2048x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!UYLy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2228e67b-3ffc-422f-96f6-42cb130397f9_2048x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!UYLy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2228e67b-3ffc-422f-96f6-42cb130397f9_2048x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!UYLy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2228e67b-3ffc-422f-96f6-42cb130397f9_2048x1536.jpeg 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>One particular implication of this, albeit one that may not be appreciated by mathematics enthusiasts, is that in many respects the famous Collatz Conjecture is a good example of a problem which seems to fall into this potentially-undecidable case. Its inputs jump around chaotically, sometimes shooting up very high before dropping back down. Despite being a shockingly simple problem, it stubbornly refuses to yield to any kind of mathematical analysis.</p><p>In fact, at one point John Conway even proposed <a href="https://en.wikipedia.org/wiki/FRACTRAN">FRACTRAN</a> - an esoteric programming language designed around a generalization of the Collatz Conjecture that is Turing-complete. So we know that it&#8217;s not hard to generalize Collatz into something that is provably undecidable in at least some cases.</p><p></p><h4>Hierarchy Theorems</h4><p>Beyond simply doing some trickery with diagonalization, Turing&#8217;s original proof of the undecidability of the halting problem relied on another interesting detail; self-referentiality. The specific example case that was shown to be undecidable is when a halt-detection program is asked to answer questions about a slightly modified version of itself, augmented to return the opposite of its. The specific way in which this is done results in a variation of the liar&#8217;s paradox, where the program is caught lying no matter what it answers.</p><blockquote><p><em><a href="https://en.wikipedia.org/wiki/Pinocchio_paradox">Pinocchio Paradox</a> : Pinocchio proclaims &#8220;my nose grows now&#8221;</em></p></blockquote><p>The consequence of this is that many provably undecidable problems boil down to computers attempting to prove things about themselves. These are not the only cases which are undecidable, but just some of the simpler cases to prove.</p><p></p><p>However, we can actually get some valuable intuition for what&#8217;s going on here by looking at the Time Hierarchy Theorems, which are in effect a finite version of Turing&#8217;s proof.</p><p>The THTs look at what happens when we restrict computers to be able to run only for a finite amount of time. The analogue of the halting problem here is asking whether or not a program finishes running before a certain time limit. If we have any question we wish to ask about the behavior of a program beyond simply what it outputs when we run it, then doing so requires adding some amount of additional work that must be performed. This work is not free, and increases the runtime of our program. As a result, many possible programs that could run on a time-limited computer and finish close to the limit will, given some additional overhead, fail to finish before the limit. If we wish to answer our question for every possible program that can be run on our time-limited computer, we cannot do so unless we are given a computer with an even longer time limit, enough to account for the full time limit of the first computer plus the overhead for our specific question about it.</p><p>Put in simple terms - to be able to answer questions about every possible way in which a computer could behave, we need a computer that is fundamentally even more powerful.</p><p>The way I like to intuitively frame this is that the Time Hierarchy Theorems are the actual rule about how undecidability works, and that Turing simply proved a few decades earlier that the THTs don&#8217;t stop applying even when we have an infinitely powerful computer. Answering questions about an infinitely powerful computer, where programs could run for an infinite amount of time, requires more than an infinite amount of computing power, which is why the diagonalization argument involves both countable and uncountable infinities.</p><p></p><h4>Implications</h4><p>So if undecidability in fact is not actually so bad, then perhaps we should stop using mathematical impossibility as an excuse for why we don&#8217;t have better development tooling.</p><p>The truth is that actually a great deal of sophisticated static analysis is already done inside the guts of many modern optimizing compilers in order to determine which optimizations are and are not safe to apply. Those decisions require some sophisticated understanding of how code behaves. The methods outlined in this article are very general-purpose, but not very practical or efficient, whereas plenty of static analysis work has been done to find methods that are more useful, at least for the kinds of programs humans tend to write.</p><p>The problem is that this is largely designed to be some invisible black box applied during compilation, largely invisible to the programming language or the human. Perhaps that&#8217;s something we should be rethinking.</p><div><hr></div><p><em>This has been a relatively short article tonight, on a subject that I&#8217;ve referenced a number of times but had been meaning to get around to addressing directly. I&#8217;m trying to write a bit more often, and honestly I have a backlog of interesting articles that I&#8217;ve been meaning to write for a while that I should just get out.</em></p><p><em>I have also been busy with <a href="https://uscompco.com/">other work</a>, and that usually takes priority.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/undecidability-isnt-so-bad?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/p/undecidability-isnt-so-bad?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Some Speculation on Future Computational Physics]]></title><description><![CDATA[There are two broad approaches to physics today.]]></description><link>https://bzolang.blog/p/some-speculation-on-future-computational</link><guid isPermaLink="false">https://bzolang.blog/p/some-speculation-on-future-computational</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Wed, 27 Nov 2024 09:32:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!hTtK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e575ab-4f97-47dc-aa6f-e222e4b9a82e_400x612.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There are two broad approaches to physics today. One of these is symbolic &#8211; manipulating symbols, often by hand, to extract some hidden structure in a problem that can result in a computationally cheap solution, and often a great deal of deeper understanding. The other is numerical &#8211; applying large volumes of often much simpler computations. The numerical approach is generally fairly agnostic to the structure of the problem and may work in places where symbolic pattern matching fails or is just difficult, but can often scale very poorly.</p><p>Directly computing quantum mechanical problems is generally exponentially hard, and even the cheaper approximate algorithms often still have nasty time complexities, such as O(n^7) or O(n^11). These are much better than exponential time, but still very impractical even at fairly small scales and may not be sufficiently accurate on account of being approximations. This is not merely a problem of &#8220;not enough compute&#8221; &#8211; these problems scale fast enough that Moore&#8217;s Law couldn&#8217;t compete even if it were plausible that it could last another few decades without major hurdles. The compute requirements are so high that some Kardashev 12 civilization that can tile the observable universe with thermodynamically-optimal super-GPUs would still find a great deal of hilariously tiny problems that they would struggle to simulate.</p><p>However, we are in the very early days of computing. Modern computing as a field has existed for only a little less than a century, and we can be guaranteed that an enormous range of groundbreaking discoveries in computing will remain undiscovered for many centuries or longer.</p><p>The symbolic approach to physics is interesting, in that it has yielded centuries of enormous progress, and there are no obvious signs that it is slowing down. The Hamiltonian mechanics formulation of physics has been around for nearly two centuries, and has in recent decades been augmented by significant progress in the field of <a href="https://en.wikipedia.org/wiki/Symplectic_geometry">symplectic geometry</a>, a branch of geometry that studies spaces where transforms preserve the area of shapes. The primary problem with symbolic physics is simply that it was built for a world where compute was expensive.</p><p>So allow me to speculate where things may go in the future and where the next orchards of fruit may lie based on some hints we can find today if we know where to look.</p><p></p><p></p><h4>Computer Algebra Systems and Scaling Symbolic Physics</h4><p>Sussman&#8217;s classic programming textbook &#8220;Structure and Interpretation of Computer Programs&#8221; (SICP) is very famous, but far less well-known is the sequel &#8220;Structure and Interpretation of Classical Mechanics&#8221;, a physics textbook where the equations are replaced by Scheme code. The book also argues that physics traditionally doesn&#8217;t &#8220;typecheck&#8221; and that translating seemingly unambiguous equations into computer code is actually not a trivial task because of the amount of approximations and contextual information that is often left out.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hTtK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e575ab-4f97-47dc-aa6f-e222e4b9a82e_400x612.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hTtK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e575ab-4f97-47dc-aa6f-e222e4b9a82e_400x612.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hTtK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e575ab-4f97-47dc-aa6f-e222e4b9a82e_400x612.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hTtK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e575ab-4f97-47dc-aa6f-e222e4b9a82e_400x612.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hTtK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e575ab-4f97-47dc-aa6f-e222e4b9a82e_400x612.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hTtK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e575ab-4f97-47dc-aa6f-e222e4b9a82e_400x612.jpeg" width="400" height="612" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/83e575ab-4f97-47dc-aa6f-e222e4b9a82e_400x612.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:612,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Structure and Interpretation of Classical Mechanics, second edition by ...&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="Structure and Interpretation of Classical Mechanics, second edition by ..." title="Structure and Interpretation of Classical Mechanics, second edition by ..." srcset="https://substackcdn.com/image/fetch/$s_!hTtK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e575ab-4f97-47dc-aa6f-e222e4b9a82e_400x612.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hTtK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e575ab-4f97-47dc-aa6f-e222e4b9a82e_400x612.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hTtK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e575ab-4f97-47dc-aa6f-e222e4b9a82e_400x612.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hTtK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e575ab-4f97-47dc-aa6f-e222e4b9a82e_400x612.jpeg 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>The book centers around a Computer Algebra System that Sussman built himself, which can take physics equations written in Scheme and apply a variety of transformations on them that are useful for physics work. It can of course handle some very complex symbol manipulation simply because of how fast computers are.</p><p>It seems to me as though there is a great extent to which computers could automate at least some amount of symbolic physics work in a way that symbolic problems that would be impractically large for humans could be done by machines. Furthermore, we can start asking questions about the nature of this automation. Writing a mass of symbols on a page is one thing, but once it&#8217;s represented in a computer you have a more explicitly structured object &#8211; a tree or graph or something else of this sort. If the system of equations is viewed as a tree or graph, what might its structure imply? At the very least are there interesting implications for visualization that might not be obvious from historical approaches?</p><p>In general, what I expect we will find in the coming decades, if people choose to investigate this further as opposed to shutting their brains off and letting their AI algos go brrr, is that there is a middle ground between symbolic and numerical physics. Or perhaps simply an extrapolation of symbolic physics &#8211; rather than focusing on small, simple structures that humans can parse out manually, what kinds of dramatically more complex structures can we extract and operate on if we can throw a few teraflops or petaflops of compute at it?</p><p>Certainly, there seems to be some evidence that &#8220;AI&#8221; bears fruit when applied to physics, but if anything this is evidence for my point &#8211; there is structure in physics that computers can extract that is simply too complex for humans to do manually. However, the matrix multiplication that is the foundation of modern machine learning algorithms may be very versatile but it is often not the most efficient method of computing things. With a bit more cleverness, we likely will in time find more conventional mathematics and algorithms that can answer many of the problems that machine learning is starting to answer, but more efficiently and while yielding deeper understanding.</p><p>The math behind quantum mechanics is just linear algebra with very large matrices. These matrices also have additional constraints, generally that they are square and that they only encode rotations. Other more specific constraints may exist in more specific scenarios.</p><p>At least in the case of quantum computing, which granted is constrained to be easier for humans to reason about than mere random assemblies of particles and forces, the matrices that encode various quantum logic gates are often very sparse, and very symmetric. The operations on them generally include matrix multiplication and <a href="https://en.wikipedia.org/wiki/Kronecker_product">kronecker products</a>, both of which lend themselves well to being reduced to simple operations on block matrices, or essentially matrices of matrices.</p><p>There are plenty of techniques that can make use of block structures in matrices. As someone who used to be very interested in game development, <a href="https://en.wikipedia.org/wiki/Quadtree">quadtrees</a> look like a very applicable tool for mapping the various regularities in quantum computing matrices, both for tracking large zero blocks in matrices, as well as tracking when two blocks of a matrix may be identical to or simple transforms of each other, which may yield itself to symbolic simplifications of these giant matrix operations.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KR7q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd788605e-82ab-4b65-a443-34db416d0575_300x300.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KR7q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd788605e-82ab-4b65-a443-34db416d0575_300x300.png 424w, https://substackcdn.com/image/fetch/$s_!KR7q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd788605e-82ab-4b65-a443-34db416d0575_300x300.png 848w, https://substackcdn.com/image/fetch/$s_!KR7q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd788605e-82ab-4b65-a443-34db416d0575_300x300.png 1272w, https://substackcdn.com/image/fetch/$s_!KR7q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd788605e-82ab-4b65-a443-34db416d0575_300x300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KR7q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd788605e-82ab-4b65-a443-34db416d0575_300x300.png" width="300" height="300" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d788605e-82ab-4b65-a443-34db416d0575_300x300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:300,&quot;width&quot;:300,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&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_!KR7q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd788605e-82ab-4b65-a443-34db416d0575_300x300.png 424w, https://substackcdn.com/image/fetch/$s_!KR7q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd788605e-82ab-4b65-a443-34db416d0575_300x300.png 848w, https://substackcdn.com/image/fetch/$s_!KR7q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd788605e-82ab-4b65-a443-34db416d0575_300x300.png 1272w, https://substackcdn.com/image/fetch/$s_!KR7q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd788605e-82ab-4b65-a443-34db416d0575_300x300.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">Quadtrees are a type of space partitioning data structure that recursively divides a 2-dimensional space into quadrants, and representing the space as a tree where each node has up to four children. Areas with few important details often prune the tree early, while deeper parts of the tree correspond to regions with more fine details.</figcaption></figure></div><p>To a large extent, this kind of approach would simply be transforming operations on gigantic arrays of numbers into more complex but ultimately cheaper operations on trees that store compressed representations of these arrays. If handed a truly random problem perhaps this may not be much of an advantage, but if there is really so much structure in physics that we can spend centuries making progress through manual symbolic manipulation, then there likely is a great deal of structure that can be exploited in such problems.</p><p></p><p>Additionally, we should look to tools like SAT solvers and Abstract Interpreters.</p><p></p><h4>SAT</h4><p>SAT, or the <a href="https://en.wikipedia.org/wiki/Boolean_satisfiability_problem">Boolean Satisfiability Problem</a>, as I have discussed many times before, is the classical example of an NP-complete problem. It is in the NP complexity class, which makes it in the worst case a fairly difficult problem, but it is also expressive enough to be able to emulate any other problem in NP, which covers a truly gigantic range of common problems. An algorithm that can efficiently solve SAT problems is in a sense a general-purpose problem-solving algorithm.</p><p>Such algorithms have been developed. While SAT was once dismissed as exponentially hard and fundamentally intractable, methods like <a href="https://en.wikipedia.org/wiki/DPLL_algorithm">DPLL</a> and <a href="https://en.wikipedia.org/wiki/Conflict-driven_clause_learning">CDCL</a> have shown that reality is far more complex. There are fairly small problems with only a few hundred variables that seem to be intractable, and others with millions of variables which should be unimaginably impossible and yet can be solved in under an hour by a single CPU core. Asking the complexity of a SAT problem is like asking the complexity of an interpreter &#8211; it depends entirely on the problem you give it, which can vary extremely wildly. You can hand an interpreter a tiny, infinitely-looping program which takes an infinite time to run, you can hand it a gigantic but well-behaved program that runs fairly quickly, or you can give it anything from a gigantic zoo of other program behaviors. SAT is no different, and real-world problems are very often surprisingly tractable.</p><p>In the case of SAT, the original DPLL algorithm worked okay for a long time, but it wasn&#8217;t until the development of CDCL in the late 90s that things really kicked off, and today there is a whole zoo of different heuristics and other features bolted onto SAT solvers to assist in solving problems. Much like the aforementioned quantum problems, we can view DPLL as operating on a tree that compresses an impractically large flat array of values for cheaper computation, but the more advanced techniques that developed later and built on top of DPLL were eventually what made these solvers dramatically more practical and useful.</p><p>There is actually a surprising amount in common between SAT and quantum mechanics &#8211; the former can be viewed as equivalent to simple operations on exponentially-large arrays of boolean possibility values, while the latter is simple operations on exponentially-large arrays of complex probability amplitudes. There certainly are differences, but the general organization of the arrays and the operations on each value are shockingly similar. SAT solving algorithms increasingly pay attention not only to the tree structure that DPLL generates, but also the graph structure of the SAT problem encoded in the interactions of constraints, which is something that should be just as applicable to quantum circuits.</p><p>I wouldn&#8217;t be surprised if deeper research into this in the coming decades can start to transfer ideas back and forth, and many of these quantum problems become much more tractable with classical methods. And by the time that happens, perhaps we&#8217;ll have a few more decades of SAT solver breakthroughs to apply as well.</p><p></p><h4>Abstract Interpretation</h4><p><a href="https://en.wikipedia.org/wiki/Abstract_interpretation">Abstract Interpretation</a> is another very interesting case that approaches even less tractable problems. Predicting the behavior of a program statically &#8211; as in, without running it &#8211; is generally considered undecidable, effectively mathematically impossible. However, this is really only the case sometimes, and there are a great deal of programs in practice that are relatively well-behaved and can be reasoned about. Turing&#8217;s original proof about the undecidability of the Halting Problem is, contrary to popular belief, not at all a proof that the halting problem can never be solved, but merely that the total number of states that a computer can be in is greater than the number of states that just happen to encode proofs about whether or not other program states eventually lead to an infinite loop.</p><p>Abstract Interpreters approach this problem by attempting to track abstract statespaces of a program. They check whether or not there is some possible input to a program that can result in the program reaching a known bad state, such as a crash. However, rather than running every possible input of the program (which may be practically infinite for many programs), they instead assign each variable some kind of lower-resolution model, such as an interval that encodes known largest possible and lowest possible values. If the program adds two numbers, their minimum and maximum values can be used to easily compute the minimum and maximum of their sum. Other &#8220;abstract domains&#8221; beyond simple interval arithmetic can track other approximations of state spaces, with the main constraint being that the set of states tracked by the domain should always be a superset of the actual statespace of a variable &#8211; if it says that X is between 0 and 10, it should be impossible for X to equal 11 or -23 or 8015, but it is not strictly necessary that X must be capable of equaling 8. There are additionally methods for sound approximations of loops, control flow, memory, and more.</p><p>Abstract Interpreters get around the problem of undecidability by occasionally answering &#8220;I don&#8217;t know&#8221; rather than exclusively &#8220;yes&#8221;or &#8220;no&#8221;. Their models of variables are sound approximations, but they are still merely approximations. They will occasionally insist that the program may have a bug even when it doesn&#8217;t, but they won&#8217;t tell you it&#8217;s safe when it&#8217;s not.</p><p>The reason why Abstract Interpreters are interesting for physics is that, like SAT solvers, they provide a library of practical computational methods for attacking incredibly general and practically useful problems that many would dismiss as fundamentally unsolvable. Furthermore, their focus on intervals and other structures seems very useful for physics, and not terribly far off from tools that are already occasionally used. Interval arithmetic is occasionally used in physics, and tools in chaos theory such as <a href="https://en.wikipedia.org/wiki/Lyapunov_exponent">Lyapunov exponents</a> share a lot in common with them, but Abstract Interpretation also contains many ideas for taking these methods and doing far more complex things with them that help to give good answers in cases where naive interval arithmetic may simply explode and insist that the result is &#8220;somewhere&#8221; between negative and positive infinity.</p><p>I expect that it will not be trivial to translate these ideas into physics, and frankly there should be a much greater effort to translate these ideas into practical software development tools rather than mere academic projects or niche industrial tools for verifying that planes won&#8217;t fall out of the sky.</p><p></p><p></p><p>Overall though, computing is still in its infancy, and efforts to adapt the past few centuries of physics work to the capabilities of modern computers are still very primitive and surface-level. Furthermore, it&#8217;s worth remembering that much of physics work historically has not been in applying new mathematics to physics problems, but rather using physics problems to inspire the development of new mathematical tools, which can then be applied elsewhere. We should not be surprised if the deeper investigation of computational physics also leads to serious breakthroughs in the broader field of computer science as well.</p><div><hr></div><p><em>This is a relatively short article I threw together in a few hours late at night, with a bunch of rough ideas I&#8217;ve had on my mind for a while. I hope you found it interesting, and maybe a few readers might be inspired to start investigating this themselves, it certainly would be helpful and I expect there&#8217;s a lot of valuable work waiting to be done.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/some-speculation-on-future-computational?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/p/some-speculation-on-future-computational?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Poorly-Behaved Kolmogorov Complexity]]></title><description><![CDATA[With some speculation on biology]]></description><link>https://bzolang.blog/p/poorly-behaved-kolmogorov-complexity</link><guid isPermaLink="false">https://bzolang.blog/p/poorly-behaved-kolmogorov-complexity</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Mon, 21 Oct 2024 07:08:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!0piP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F830f6a6f-0227-4361-84cc-20624bebf5bd_2048x1315.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I have a much longer article I&#8217;ve been working on lately on the very fascinating subject of Kolmogorov Complexity and some observations I&#8217;ve made about its relationships with language and art, though that article is getting long and I&#8217;ve been busy with <a href="https://uscompco.com/">other work</a>. I actually have some ideas for several different articles on KC and its relationship to a variety of more familiar subjects.</p><p>So I have here a much shorter article on some odd properties it has that seem to get less attention and some speculation on how they may be explanatory in biology.</p><p></p><h4>Kolmogorov Complexity</h4><p>Kolmogorov Complexity is ultimately a measure of how compressible information is. The KC of a given string of bits is equal to the shortest possible computer program whose output is that bit sequence.</p><p>There are several factors that complicate things here. For one, the precise complexity of a given string is extremely dependent on the language used to write the program, and thus this measure of complexity is always relative to a specified language.</p><p>There is a type of recreational programming called &#8220;<a href="https://en.wikipedia.org/wiki/Code_golf">code golf</a>&#8221; that illustrates this dependency well, where people compete to write the shortest program to solve a particular problem. Some languages are more expressive than others, some are better tuned to specific problems than others. Various &#8220;code golf languages&#8221; have been developed, which often turn popular code golf challenges into single-character operations. There are many such languages where a &#8220;hello world&#8221; program is simply an empty source file, thus having zero length.</p><p></p><p>There are also information-theoretic limits. N bits of information can only encode a maximum of 2^N possible strings, and no amount of fancy language trickery changes this. As a result, if you pick completely random strings of N bits, only a very tiny proportion of them can possibly be encoded with very short programs, some may turn out longer than N bits because of overhead of the language (a program that simply prints a very long string needs some way to encode the print statement itself, or at least to differentiate between a string to be printed and a string literal to be used as an input for further computation), and on average the KC of such strings must always be N or greater.</p><p></p><p>Then there is the problem of the generality of the language itself. For maximally optimal data compression, a Turing-complete language is theoretically desirable. However, this is also where things get tricky. Determining whether a Turing-complete program has a particular kind of behavior, even as simple as determining if it ever stops running, is in general undecidable. Searching over the space of undecidable programs to find one that is in some sense optimal makes the problem harder, and therefore computing the true Kolmogorov Complexity of a string given a Turing-complete language is not merely undecidable, but actually turns out to be unimaginably worse - <em>fundamentally incomputable</em>.</p><p>In general practice however, understanding the behavior of programs is not nearly as bad as it is in theory, mostly because only a subset of programs are <em>actually impossible</em> to understand, and humans tend to build things that have convenient properties and are meant to be understood. If your program has behavior that is actually impossible to verify, that&#8217;s a very good indicator that you have a bug somewhere and it is doing something it is not meant to do.</p><p>However, in the case of KC we don&#8217;t care about engineering a program to be understood, we care about minimizing code size at absolutely all costs, and therefore all the bizarre, random, badly-behaved programs that no human in their right mind would ever write remain as options, unable to be dismissed. <strong>Kolmogorov complexity in its true form is not something that can be measured or studied directly, but instead is always a mere approximation of some deeper, inaccessible form of complexity.</strong></p><p>One way around this is that we can give up on Turing-completeness. This means there will be certain types of structure in strings that will now be inexpressible, but we may at least be able to constrain our search to programs that we can make certain practical guarantees about. This sacrifices optimality but makes the problem much more tractable. If we assume that most of our data probably has a fair bit of random noise anyway, for example in the case of compressing images or other media files that sample the real world, such bizarre structures may be exceedingly rare and well worth compromising on.</p><p>A problem I haven&#8217;t mentioned yet is that, if we wish to compress a string, we must have some algorithm for converting the string into a program that actually generates it. Constrained languages can make this problem far more tractable than it would be in practice.</p><p>Technically speaking, all the classical methods of encoding compressed data - <a href="https://en.wikipedia.org/wiki/Huffman_coding">Huffman coding</a> and the like - are languages, just highly constrained ones that are often very far from being Turing-complete. Methods like <a href="https://en.wikipedia.org/wiki/Run-length_encoding">run-length encoding</a> which encode simple looping constructs, and <a href="https://en.wikipedia.org/wiki/Dictionary_coder">dictionary coders</a> which can vaguely resemble function calls if you squint hard enough, are perhaps more obvious examples of this.</p><p></p><h4>The Poorly Behaved Stuff</h4><p>For many problems that have interested humans for the past century or so of computing, compression based on relatively well-behaved languages has been a common workhorse. But Kolmogorov Complexity promises that even greater treasures lie in the less well-behaved languages. Perhaps the problems we have chosen to focus on so far haven&#8217;t found a need for them, but as far as human endeavors go a century is a blink of an eye. <strong>The deep, distant future of computing will contain great wonders that the most observant of us can only see the faintest hints of today.</strong></p><p>If we consider the inverse of compression and ask about &#8220;inflation algorithms&#8221;, it&#8217;s pretty easy to write very short programs that produce very long, complicated strings. Running <a href="https://mathworld.wolfram.com/Rule30.html">certain cellular automata</a> for very long, but finite periods of time, for example. An unimaginably more extreme example may simply be evaluating the <a href="https://en.wikipedia.org/wiki/Ackermann_function">Ackermann function</a> on inputs greater than four.</p><p>In much the same way that a gigantic tree can grow from a very tiny seed, a very large, complex structure can unfold from a very small and simple seed program.</p><p></p><p>Kolmogorov Complexity is in a certain sense not only a measure of compressibility, but a measure of the amount of structure in a problem.</p><p>Assuming P!=NP, then the solutions to most optimization and constraint problems are fundamentally exponentially difficult to compute. However, these problems are in a certain sense highly optimal with respect to problem definitions that are exponentially simpler than the process required to resolve them.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;83d1c88d-aa4c-42fd-91cc-3cfcf6dd4eba&quot;,&quot;caption&quot;:&quot;About 2300 years ago, the Greek mathematician Euclid published his book The Elements, which has since become one of the most influential books in all of mathematics, if not the world. It is estimated to be second to only the Bible in terms of the number of printed editions since the invention of the printing press.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Most Profound Problem in Mathematics&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Engineer building advanced CPUs and exotic compilers, lead editor and researcher at Possibilia Magazine, and writing the Bzogramming substack.\n\n~hilmec-difpes&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2022-11-15T15:30:02.057Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/h_600,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F50e02f3c-2cf0-4b9e-b661-90646284c814_614x599.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/the-most-profound-problem-in-mathematics&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:84077564,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:8,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>This is a place where Kolmogorov Complexity and other forms of computational complexity diverge somewhat; KC <em>doesn&#8217;t care</em> about how long it takes to compute something, only what gets computed. Such solutions are effectively both highly random and highly structured simultaneously.</p><p></p><p>Computing even a locally optimal solution to many of these hard problems can require only a fairly small amount of code - just the parameters to define the function to optimize over, and some function that navigates the solution space and converges on a solution eventually.</p><p>If your problem is continuous, simple gradient descent can work pretty well. For discrete problems, something as simple and stupid as a brute force iteration over the state space until a valid solution is found is very simple and <em>technically works</em>, though you may be waiting a long time. There are a number of much <a href="https://en.wikipedia.org/wiki/Cutting-plane_method">more sophisticated</a> methods that can <a href="https://en.wikipedia.org/wiki/DPLL_algorithm">search spaces</a> much <a href="https://en.wikipedia.org/wiki/Conflict-driven_clause_learning">more intelligently</a> that don&#8217;t obviously involve any gradients. Of course, none of these methods - gradient descent included - make any real guarantees about how long it takes to converge onto a solution. There can be problems that are well-behaved and converge quickly, and there can be others that take an extraordinary long time.</p><p></p><h4>A Simple Example</h4><p>Say we define some space that has a number of local maxima. If we throw a simple gradient ascent algorithm at it, then just about any initial condition - all zeros, something random, whatever is most convenient to define - it will guide us to one of these peaks.</p><p>However, perhaps this is a problem where it is easy to accidentally end up in a very suboptimal local maxima. We don&#8217;t want to just climb to the top of just any old hill in this space, we want the tallest, or at least one of the tallest.</p><p>Around each peak there is some space of points that will naturally guide a gradient-following algorithm to that peak. We can slice the space into these subspaces. Some of these spaces may be bigger than others, some may have very simple shapes and others much more complex ones. If we wish to use our gradient-following algorithm to locate a very specific peak, we only need to have the algorithm start <em>somewhere</em> in the space around that peak.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0piP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F830f6a6f-0227-4361-84cc-20624bebf5bd_2048x1315.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0piP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F830f6a6f-0227-4361-84cc-20624bebf5bd_2048x1315.png 424w, https://substackcdn.com/image/fetch/$s_!0piP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F830f6a6f-0227-4361-84cc-20624bebf5bd_2048x1315.png 848w, https://substackcdn.com/image/fetch/$s_!0piP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F830f6a6f-0227-4361-84cc-20624bebf5bd_2048x1315.png 1272w, https://substackcdn.com/image/fetch/$s_!0piP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F830f6a6f-0227-4361-84cc-20624bebf5bd_2048x1315.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0piP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F830f6a6f-0227-4361-84cc-20624bebf5bd_2048x1315.png" width="1456" height="935" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/830f6a6f-0227-4361-84cc-20624bebf5bd_2048x1315.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:935,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3020685,&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_!0piP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F830f6a6f-0227-4361-84cc-20624bebf5bd_2048x1315.png 424w, https://substackcdn.com/image/fetch/$s_!0piP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F830f6a6f-0227-4361-84cc-20624bebf5bd_2048x1315.png 848w, https://substackcdn.com/image/fetch/$s_!0piP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F830f6a6f-0227-4361-84cc-20624bebf5bd_2048x1315.png 1272w, https://substackcdn.com/image/fetch/$s_!0piP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F830f6a6f-0227-4361-84cc-20624bebf5bd_2048x1315.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 space with many peaks, divided into regions based on which peak each initial position guides a gradient-following algorithm to.</figcaption></figure></div><p>More precision in the location requires more information. Every additional bit allows us to narrow things to a window half the size. Perhaps the rest of the coordinates are all zeros, perhaps something random, but to get more specific, all else being equal, necessarily requires more bits.</p><p>However, overall, unless there is a gigantic range in the sizes of these separate regions and the one we aim to hit happens to be exceptionally small, the total amount of information required to specify which peak we aim to reach has far more to do with the total number of local maxima than it does the actual scale of the solution space. <strong>Once we have defined the structure of the space, the amount of information required to specify which optimal solution we wish to land on may be very tiny, perhaps only a small handful of bits.</strong></p><p>Granted, with how long it may take to converge to a solution - perhaps we have a very large and complex space and gradient descent takes a very long and winding path to the top - then we may want more precision in our starting point to start a bit closer to the final solution. Kolmogorov Complexity at the end of the day is simply a theoretical ideal, with an infinite difficulty curve, and practical concerns always win in practice.</p><p></p><h4>Some Wild Speculation on Biology</h4><p>A chemical system will naturally trend toward equilibrium, and biological systems are ultimately just a digital language (DNA) that specifies and controls a very complex chemical system. Many of the problems that biological systems require to survive and compete for resources take the form of optimization or constraint-solving problems, and like the code golf languages that encode popular challenges with single characters (or even none at all), the chemical language underlying biology has optimization as its most primitive and fundamental tools.</p><p>Of course, biology is not completely without its concerns about the &#8220;computational&#8221; efficiency of reaching equilibria - it does care how long and how much energy it takes to find optimal solutions. It spends no shortage of resources <a href="https://en.wikipedia.org/wiki/Enzyme">catalyzing reactions with enzymes</a>, <a href="https://en.wikipedia.org/wiki/Chaperone_(protein)">accelerating protein folding with chaperones</a>, and specifying solutions fairly directly with <a href="https://en.wikipedia.org/wiki/Hox_gene">body plans</a> and the like. But the point is that, given the tools biology has to work with, it appears that a tremendous amount of optimization should come for free as well.</p><p>This suggests that, while some things are relatively hardcoded, it is very plausible that a large amount of biology may simply be a set of evolved specifications of constraints, evolved specifications of tools for solving them, and a chemical system that naturally finds a very efficient way to solve the given constraints with the given tools. Of course, some problems may be particularly open-ended, with gigantic search spaces (optimal body plans for example), and in such cases it would be much faster to hardcode at least part of the solution to speed things up rather than waiting for some pink or green goo to <em>search through absolutely every possibility</em>.</p><p>The human body is incredibly complex, but is specified by only approximately 750 MB of DNA. Even then, that DNA also contains many very repetitive segments, and may be well over 90% &#8220;junk&#8221; DNA, with questionable contributions. There are only about 20,000 genes. Such enormous complexity will occasionally baffle people, with how much seems to be packed in there. The number of different behaviors that people claim are hardcoded into our biology and our brains probably exceeds the number of actual nervous system genes by a very wide margin, perhaps even eclipsing the number of total genes altogether. It seems to produce a very large number of diverse behaviors from a surprisingly small amount of code.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;435824d2-84b3-4d2a-aa7b-1a59ccfb3952&quot;,&quot;caption&quot;:&quot;There is a UFO craze going on right now. The Pentagon is even establishing a new department just for investigating sightings.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Alien Technology in Plain Sight&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Engineer building advanced CPUs and exotic compilers, lead editor and researcher at Possibilia Magazine, and writing the Bzogramming substack.\n\n~hilmec-difpes&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2022-08-10T04:42:26.280Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08e593f-6696-4760-b1c6-be0f36fcf4db_900x550.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/the-alien-technology-in-plain-sight&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:67963904,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:11,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Biology, viewed as a chemical computer, certainly does have many recognizable parts. <a href="https://en.wikipedia.org/wiki/Transcription_(biology)">DNA transcription</a> closely resembles function calls, and there are a variety of proteins that act as <a href="https://en.wikipedia.org/wiki/Repressor">repressors</a> and <a href="https://en.wikipedia.org/wiki/Promoter_(genetics)">promoters</a> that allow genes to be switched on and off by other genes and other chemical signals. On the other hand, biology is in many respects a very alien form of computing, one unconstrained by human understanding and that has been around far longer than us. <strong>We should be very surprised if it is not exploiting very strange phenomena that require a much deeper understanding of computing to appreciate.</strong> Why would it not be exploiting very strange properties of Kolmogorov Complexity to squeeze more expressive power from its code? And by extension, a small mutation in DNA may as a result explode into a much more impactful change in function than it would in familiar, human-written code, while also being almost guaranteed to land in some kind of local optima, once the chemistry plays out.</p><p>Inputs from the environment would also count as part of the specification, and stochastic properties of the system would need to be factored in as well. In KC terms, this is like having a large portion of the input program be missing, absent from the DNA, and simply gathered as an input from the environment. The DNA is not the sum total of all the data required to construct this specific creature, but only the part that is not collected from the environment.</p><p>This also reminds me a bit of Richard Dawkins&#8217; concept of the <a href="https://en.wikipedia.org/wiki/The_Extended_Phenotype">extended phenotype</a>.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;3349c6b0-cb28-4545-97ba-935b3dc3504a&quot;,&quot;caption&quot;:&quot;There are a great many instincts and behaviors that are claimed to be &#8220;programmed&#8221; or &#8220;hardwired&#8221; into the brain. In fact, seeing as the human genome only contains a mere 20,000 genes, and only a small fraction of those are dedicated to the nervous system, the number of behaviors that people insist are so deeply baked in probably outnumbers the number o&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Origin of Mimicry&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Engineer building advanced CPUs and exotic compilers, lead editor and researcher at Possibilia Magazine, and writing the Bzogramming substack.\n\n~hilmec-difpes&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-04-04T22:51:28.064Z&quot;,&quot;cover_image&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%2Fb9d4d334-1803-4824-afdf-2d1b2e0c9c79_1232x928.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/the-origin-of-mimicry&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:143025146,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:10,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>If you read books from Dawkins&#8217; crowd of evolutionary biologists, a common discussion is around how game theory equilibria may influence gene distributions in a population. There is a great deal of discussion around how natural selection is capable, after enough generations, of converging onto optimal solutions to tricky game theory problems. However, computing Nash Equilibria of finite games is NP-complete, and therefore is within the computational power of a sufficiently expressive chemical system.</p><p>There are occasionally signs that evolution seems to work much faster than these models of natural selection suggest. However, from the perspective I&#8217;ve outlined here, all of this computation spread across countless generations could, with a small handful of genes, simply describe the problem and allow the chemistry within a cell to solve it automatically. Natural selection would still play a very important role in learning which problems are most productive to solve, but a great deal of the difficulty would be offloaded onto the chemistry within an organism.</p><p></p><p>It&#8217;s also worth pointing out that constraint systems, which are expressive enough to describe any NP problem, have the property that additional constraint that do not add new degrees of freedom only narrow possibilities. If you have some genes that describe only some of the constraints necessary to solve such a problem, you may still converge on a valid solution by luck. You&#8217;ll at least end up with something that is locally optimal. Additional constraints, additional genes, simply narrow exploration of the search space to improve the reliability of landing somewhere good.</p><p>So not only should such a chemical constraint-solving system be extremely natural to express given the tools biology has, and not only does it explain why it can generate such a wide variety of effective behaviors well-adapted to its environment (input) from a relatively small amount of code, and not only should it be able to solve problems within a single generation that would otherwise take many generations to converge on purely by natural selection, <strong>but it also should in theory be very easy to learn all of this bit-by-bit, with something that resembles a fairly straightforward, if somewhat stochastic gradient</strong>.</p><p></p><p>So it appears that every cell in your body is likely a constraint-solving algorithm searching for the most optimal path forward with the tools and resources that natural selection has found it, and the exponential costs of this optimization problem are dealt with by each of the billions of chemical reactions per second per cell second contributing a calculation, occasionally with a hint from a chaperone or enzyme.</p><p><strong>All of this is of course my own speculation, I&#8217;m no biologist, but it lines up with a lot of observations and explains quite a lot of things.</strong></p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/poorly-behaved-kolmogorov-complexity?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/p/poorly-behaved-kolmogorov-complexity?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Finding a Place for Humans in an AI Future]]></title><description><![CDATA[Also, launching some stuff]]></description><link>https://bzolang.blog/p/finding-a-place-for-humans-in-an</link><guid isPermaLink="false">https://bzolang.blog/p/finding-a-place-for-humans-in-an</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Tue, 24 Sep 2024 23:54:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198970a-169d-4165-b718-4ba872987e59_693x687.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>One critique I have of LLMs as a tool is that we don't understand how they work. There is a surface-level complaint here that many people working in this space seem to dismiss, but there is also a deeper and less obvious problem that results from this.</p><p>Let&#8217;s say we want to build software that augments the human ability to understand complex things.</p><p>If we want to understand a problem like "understandability", we can take the simple, brute force approach of "just use an LLM bro", or we alternatively can try to actually develop a theory of how understanding itself works, which would likely give us more powerful and less obvious tools, allowing us to do an even better job. If we set our standards at simply having an LLM explain something to us in plain English, we might miss some deeper and more powerful possibilities.</p><p>Human imagination is far more limited than we often pretend it is. The world outside your skull is infinitely more complex than the model of it inside your skull. If you aren&#8217;t mining the world for newer, deeper inspiration, you will fail to imagine cars, planes, and rockets as opposed to simply faster horses.</p><p>If people are going to worry about LLMs replacing humans, then perhaps our response should be to start thinking more deeply about how to push humans to their limits.</p><p></p><p>If we make the classical comparison and claim that the human brain is a type of computer, one natural direction to go in is asking about the software it runs. There certainly are some substantial differences between ordinary code and things like culture and memes, but there are also substantial differences between a C program and the weights of a deep neural network, and we really don&#8217;t seem to have a difference accepting that they&#8217;re both software. There are different, alien modes of software out there that have yet to be discovered, computer science is less than a century old and the <a href="https://en.wikipedia.org/wiki/The_Library_of_Babel">Library of Babel</a> of code is unfathomably vast, even if we limit ourselves to fairly short program lengths.</p><p>Neural software seems to rely a lot more on mimicry - the way humans and animals download and share it is by observing others and copying their behaviors. Humans have the additional method of language, where we can associate abstract symbols and sounds with objects, actions, and other things in the world. We can describe causality chains through stories and explanations, and we can transfer knowledge to others, including abstract and internal states that would otherwise not be apparent purely from the visible behavior alone.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;50b05a4f-a89e-4365-b33d-2aa3eedf68ed&quot;,&quot;caption&quot;:&quot;There are a great many instincts and behaviors that are claimed to be &#8220;programmed&#8221; or &#8220;hardwired&#8221; into the brain. In fact, seeing as the human genome only contains a mere 20,000 genes, and only a small fraction of those are dedicated to the nervous system, the number of behaviors that people insist are so deeply baked in probably outnumbers the number o&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Origin of Mimicry&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Engineer building advanced CPUs and exotic compilers, lead editor and researcher at Possibilia Magazine, and writing the Bzogramming substack.\n\n~hilmec-difpes&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-04-04T22:51:28.064Z&quot;,&quot;cover_image&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%2Fb9d4d334-1803-4824-afdf-2d1b2e0c9c79_1232x928.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/the-origin-of-mimicry&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:143025146,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:10,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>The format of &#8220;human software&#8221; also changes substantially over time. One notable example is that pre-literate societies often placed an enormous focus on memorization. Music and poetry were often far larger parts of daily life, as a bit of rhythm and rhyme introduce a lot of repetitive and redundant structure that make things easier to memorize perfectly.</p><p>It&#8217;s worth remembering that Homer&#8217;s Iliad and Odyssey were composed in the 700s BC, during the Greek Dark Age, some three or four centuries before Greece regained writing. These are absolutely gargantuan texts (the two combined are almost half the length of the Bible), and were passed down entirely by memory for centuries. They also include a number of details about the Trojan War and the Bronze Age Collapse, albeit heavily fictionalized.</p><p>The Iliad also notoriously includes the <a href="https://en.wikipedia.org/wiki/Catalogue_of_Ships">Catalogue of Ships</a>, a chapter which autistically lists off a ton of statistics about the entire Trojan-War-era Greek Navy, and perhaps was partially a way of allowing bards to show off their impressive memorization abilities. The Method of Loci, a memorization technique based on constructing a mental space to navigate full of meaningful reminders, also traces back to ancient times.</p><p>Things that were completely mundane and ordinary to such pre-literate societies may seem like unbelievable superhuman mental feats today. It&#8217;s worth considering what other feats the brain is capable of if pushed in the right direction.</p><p>There are a variety of numbers that people throw around about the computing power of the human brain, though they often heavily simplify the neuroscience and most probably underestimate the brain by a fair bit. Nevertheless, the numbers are usually enormous - usually peta- or exa-scale compute, and tens or hundreds of petabytes of storage. Given the "human software&#8221; angle we&#8217;ve been taking, there are many different ways of writing programs to get the same job done, but some are vastly more efficient than others. Is the code we&#8217;re running on our brains closer to heavily-optimized &#8220;Neural C&#8221;, or is it a really poor Python implementation? Various divisions of cognition (rational versus intuitive thinking, for example) may be analogous to wildly different programming paradigms, though perhaps we should be skeptical that these are all that is possible. As we understand the brain better, we can likely push things in a more optimized direction.</p><p></p><p>So if we want to push humans closer to their true limits, perhaps as a way of maintaining relevance against AI for longer, perhaps as a way of better understanding our own minds, perhaps as a way of exploring what brains are truly and unexpectedly capable of, perhaps in pursuit of a form of &#8220;cognitive innovation&#8221;, we need some place to start. A good place to start may be in finding some cognitive thing that we have some basic intuitive sense of, and digging a bit more deeply into it, with the eventual goal being to build tools to augment and accelerate it.</p><p>Back to understandability. This is a fairly abstract problem, but I&#8217;d like to highlight a few observations about it:</p><ul><li><p>Understanding is rooted in familiarity. Humans have certain motifs they follow for building stuff, and the inverse of that (pattern matching) is a key part of how we interpret new things.</p></li><li><p>More components, especially redundant components, can often increase the "surface area" of something. If you can see the same thing from multiple perspectives, the odds that you'll recognize a familiar fragment to latch onto to help you "get it" improve. Understanding of one component can often narrow possibilities enough to help understand connected components.</p></li><li><p>This works in the opposite direction too; heavily optimized code (<a href="https://www.youtube.com/watch?v=aD9mZDJzb58">superoptimized code especially</a>) often will prioritize unfamiliar shortcuts over staying within a more limited toolset of familiar patterns. Human familiarity is a constraint that limits options, and if you optimize for something unrelated, you'll end up with something difficult to understand.</p></li><li><p>If you can see a large number of moving parts and the order behind the chaos (visualization often does this), that often can help too, though some perspectives will make relevant order more or less legible.</p></li><li><p>Many things like code and theorems have large equivalence classes; there are a large number of ways to rephrase them that are all equivalent, but where the precise details of how they work may be very different. There are dozens of known ways of proving the Pythagorean theorem, there are dozens of ways of reframing <a href="https://en.wikipedia.org/wiki/Parallel_postulate#Equivalent_properties">Euclid's Parallel Postulate</a>. There is nothing special about these particular theorems that give them so many equivalent perspectives; they are simply problems that have gotten a lot of attention for a very long time, and so many alternative perspectives on them have been found. If we threw enough mathematicians at the problem, we could in time have a hundred very different proofs of a much harder problem such as Fermat's Last Theorem, each of which may provide a completely different perspective on why it is true that may highlight new connections in mathematics, and may make more or less sense to different people.</p></li></ul><p>Of course, we also want to expand human familiarity. What is and isn't a familiar technique may vary substantially from person to person, especially when dealing with more niche methods. There also needs to be effort put into not merely reframing things into familiar terms, but in making the unfamiliar familiar whenever it makes sense to.</p><p></p><p></p><div><hr></div><h3>Astrolabe and The American Compute Company</h3><p></p><p>I&#8217;ve been thinking for many years at this point about how to improve the efficiency of modern CPUs. The way we design modern CPUs generally says a lot more about historical accidents, half-century-old technical constraints, and primitive early human concepts of computing than it does anything more fundamental or physically constrained. Modern CPUs spend enormous amounts of resources attempting to extract miniscule amounts of parallelism from sequential chains of instructions and waste huge amounts of energy throwing very crude heuristics at managing the physical layout of data.</p><p>A few months ago I got around to incorporating this project as <a href="https://uscompco.com/">The American Compute Company</a>. Designing a completely new ISA from scratch with a number of unique ideas around data layout and semi-static scheduling is an ambitious problem. This necessarily throws away a great deal of software compatibility, and in a way that efficient emulation may be tricky. I&#8217;ve seen other companies build very impressive hardware and then fail because of poor programmability and a lack of software support, and I am not interested in making the same mistake.</p><p>My approach in developing this chip is to put a large focus on software. I need usable and useful software to ship with the hardware on Day 1. It makes sense to build the software and hardware in tandem. The final hardware may be very alien compared to traditional CPUs, but it&#8217;s necessary to also make sure it does not become so alien as to be unusable. Good and innovative development tooling can help make up for some of this, but software should absolutely not be an afterthought. Furthermore, with the aim of pushing the efficiency of hardware, it makes sense to have real software to optimize the hardware around to make sure that features in the hardware, especially experimental features, properly reflect behavior of actual code.</p><p>This software-heavy focus also has some other advantages. It lets me try out some experimental ideas (I have a number of ideas around development tooling), and some of this code can also be run on existing hardware in the meantime and can be sold to bring in some revenue to fund chip development.</p><p></p><p>A few days ago I released Astrolabe, an interactive codebase visualization and mapping tool that I built. It&#8217;s fairly experimental at the moment and there are plenty of additional features and polish I&#8217;d like to add in the future to make it more useful, but at the moment it&#8217;s fun to mess around with, generates some eye-catching visualizations, and get some basic intuition for big codebases.</p><p>In the age of AI, we should be aiming to build tools that advance human intuition and understanding of complex systems.</p><div id="youtube2-eU27d6_U6rQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;eU27d6_U6rQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/eU27d6_U6rQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>It&#8217;s currently fairly language agnostic and isn&#8217;t extremely sensitive to code structure beyond the identifiers it parses out, but it supports a decent number of languages. I have some ideas on text embeddings and approximate parsing methods I&#8217;d like to try out in future versions to hopefully make it a bit more useful. It supports a couple dozen common languages, so it should work with anything from Haskell to Javascript to C to Verilog.</p><p>Astrolabe is currently priced at $25 and can be found on the <a href="https://uscompco.com/software.html">American Compute Company website</a> for those who want to support the project and mess around with something a bit more fun than piping grep and awk together to locate stuff. I have some other software projects in the pipeline as well, which will be announced as I make progress on them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mj9d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198970a-169d-4165-b718-4ba872987e59_693x687.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mj9d!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198970a-169d-4165-b718-4ba872987e59_693x687.png 424w, https://substackcdn.com/image/fetch/$s_!Mj9d!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198970a-169d-4165-b718-4ba872987e59_693x687.png 848w, https://substackcdn.com/image/fetch/$s_!Mj9d!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198970a-169d-4165-b718-4ba872987e59_693x687.png 1272w, https://substackcdn.com/image/fetch/$s_!Mj9d!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198970a-169d-4165-b718-4ba872987e59_693x687.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mj9d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198970a-169d-4165-b718-4ba872987e59_693x687.png" width="693" height="687" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d198970a-169d-4165-b718-4ba872987e59_693x687.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:687,&quot;width&quot;:693,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:22465,&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_!Mj9d!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198970a-169d-4165-b718-4ba872987e59_693x687.png 424w, https://substackcdn.com/image/fetch/$s_!Mj9d!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198970a-169d-4165-b718-4ba872987e59_693x687.png 848w, https://substackcdn.com/image/fetch/$s_!Mj9d!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198970a-169d-4165-b718-4ba872987e59_693x687.png 1272w, https://substackcdn.com/image/fetch/$s_!Mj9d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd198970a-169d-4165-b718-4ba872987e59_693x687.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">TempleOS in Astrolabe</figcaption></figure></div><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_!vQ9U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54717113-27a3-40c8-9b5c-c09fb61506c9_506x516.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vQ9U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54717113-27a3-40c8-9b5c-c09fb61506c9_506x516.png 424w, https://substackcdn.com/image/fetch/$s_!vQ9U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54717113-27a3-40c8-9b5c-c09fb61506c9_506x516.png 848w, https://substackcdn.com/image/fetch/$s_!vQ9U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54717113-27a3-40c8-9b5c-c09fb61506c9_506x516.png 1272w, https://substackcdn.com/image/fetch/$s_!vQ9U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54717113-27a3-40c8-9b5c-c09fb61506c9_506x516.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vQ9U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54717113-27a3-40c8-9b5c-c09fb61506c9_506x516.png" width="506" height="516" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54717113-27a3-40c8-9b5c-c09fb61506c9_506x516.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:516,&quot;width&quot;:506,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19047,&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_!vQ9U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54717113-27a3-40c8-9b5c-c09fb61506c9_506x516.png 424w, https://substackcdn.com/image/fetch/$s_!vQ9U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54717113-27a3-40c8-9b5c-c09fb61506c9_506x516.png 848w, https://substackcdn.com/image/fetch/$s_!vQ9U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54717113-27a3-40c8-9b5c-c09fb61506c9_506x516.png 1272w, https://substackcdn.com/image/fetch/$s_!vQ9U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54717113-27a3-40c8-9b5c-c09fb61506c9_506x516.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">Urbit codebase in Astrolabe, which mostly consists of Hoon and Typescript</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GzK6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd33b2a-9195-4527-8929-b0e05583543c_478x476.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GzK6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd33b2a-9195-4527-8929-b0e05583543c_478x476.png 424w, https://substackcdn.com/image/fetch/$s_!GzK6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd33b2a-9195-4527-8929-b0e05583543c_478x476.png 848w, https://substackcdn.com/image/fetch/$s_!GzK6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd33b2a-9195-4527-8929-b0e05583543c_478x476.png 1272w, https://substackcdn.com/image/fetch/$s_!GzK6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd33b2a-9195-4527-8929-b0e05583543c_478x476.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GzK6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd33b2a-9195-4527-8929-b0e05583543c_478x476.png" width="478" height="476" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2dd33b2a-9195-4527-8929-b0e05583543c_478x476.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:476,&quot;width&quot;:478,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24425,&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_!GzK6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd33b2a-9195-4527-8929-b0e05583543c_478x476.png 424w, https://substackcdn.com/image/fetch/$s_!GzK6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd33b2a-9195-4527-8929-b0e05583543c_478x476.png 848w, https://substackcdn.com/image/fetch/$s_!GzK6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd33b2a-9195-4527-8929-b0e05583543c_478x476.png 1272w, https://substackcdn.com/image/fetch/$s_!GzK6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd33b2a-9195-4527-8929-b0e05583543c_478x476.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">Clang in Astrolabe, which is mostly C/C++ and some asm/bytecode files</figcaption></figure></div><div><hr></div><p><em>It&#8217;s been a few months since the last article, I&#8217;ve spent a lot of time coding lately, though I&#8217;d like to get back to writing frequently and have a number of vert intersting articles in the works.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/finding-a-place-for-humans-in-an?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/p/finding-a-place-for-humans-in-an?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[The Origin of Mimicry]]></title><description><![CDATA[There are a great many instincts and behaviors that are claimed to be &#8220;programmed&#8221; or &#8220;hardwired&#8221; into the brain.]]></description><link>https://bzolang.blog/p/the-origin-of-mimicry</link><guid isPermaLink="false">https://bzolang.blog/p/the-origin-of-mimicry</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Thu, 04 Apr 2024 22:51:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ofOz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d4d334-1803-4824-afdf-2d1b2e0c9c79_1232x928.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><p>There are a great many instincts and behaviors that are claimed to be &#8220;programmed&#8221; or &#8220;hardwired&#8221; into the brain. In fact, seeing as the human genome only contains a mere 20,000 genes, and only a small fraction of those are dedicated to the nervous system, the number of behaviors that people insist are so deeply baked in probably outnumbers the number of genes that could conceivably do it.</p><p>The much more likely explanation is that a great many of these instincts and behaviors are either emergent or are actually learned, but on some very deep and subconscious level.</p><p>Human engineering is generally built around a kind of explicit engineering - we pick some set of desired features and behaviors of the end product, we design individual mechanisms for each one, and we link them together. If there is a more abstract and less obvious way in which we could produce this same functionality through a more emergent system, this is beyond the scope of human understanding.</p><p>Human engineering is fundamentally limited by our understanding. Engineering is a form of mimicry, we observe some phenomena in the natural world, we learn how to replicate it, and we then extrapolate the consequences to apply it as a tool. This often involves a great deal of tinkering, we cannot simply sit in our armchairs and project forward all the infinite implications of a new technique with perfect accuracy, we must instead confront the chaos of the world by tinkering and experimenting. Nature is far more creative than we are, and will throw curveballs at us that contradict our intuition. Any decision tree of how to interact with a sufficiently complex tool will inevitably result in an exponential explosion in the number of branches, and exploring them all one by one in our minds is far too costly a task to do in any reasonable time without missing the vast majority of interesting things.</p><p>The human mind is a library, and when we build things we pull ideas from it. If that library is missing a technique no matter how simple or powerful, humans will overlook it until it is discovered through tinkering, understood, and added to the corpus of human knowledge. And there always will be a tremendous amount that is missing, the human mind may have a tremendous capacity, but it is nothing compared to the <a href="https://en.wikipedia.org/wiki/The_Library_of_Babel">Library of Babel</a>.</p><p>The endless tinkering of the blind watchmaker of evolution meanwhile is untethered to such limitations, and is thus free to master far more bizarre modes of engineering that neither it nor humans can comprehend. The forces that designed the human brain are free from the constraints by which we work. It may perhaps innovate more slowly, but it quite reliably produces things that we would otherwise have no idea how to replicate without <a href="https://en.wikipedia.org/wiki/Biomimetics">our own mimicry work</a>.</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_!ofOz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d4d334-1803-4824-afdf-2d1b2e0c9c79_1232x928.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ofOz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d4d334-1803-4824-afdf-2d1b2e0c9c79_1232x928.png 424w, https://substackcdn.com/image/fetch/$s_!ofOz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d4d334-1803-4824-afdf-2d1b2e0c9c79_1232x928.png 848w, https://substackcdn.com/image/fetch/$s_!ofOz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d4d334-1803-4824-afdf-2d1b2e0c9c79_1232x928.png 1272w, https://substackcdn.com/image/fetch/$s_!ofOz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d4d334-1803-4824-afdf-2d1b2e0c9c79_1232x928.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ofOz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d4d334-1803-4824-afdf-2d1b2e0c9c79_1232x928.png" width="1232" height="928" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b9d4d334-1803-4824-afdf-2d1b2e0c9c79_1232x928.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:928,&quot;width&quot;:1232,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1839968,&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_!ofOz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d4d334-1803-4824-afdf-2d1b2e0c9c79_1232x928.png 424w, https://substackcdn.com/image/fetch/$s_!ofOz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d4d334-1803-4824-afdf-2d1b2e0c9c79_1232x928.png 848w, https://substackcdn.com/image/fetch/$s_!ofOz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d4d334-1803-4824-afdf-2d1b2e0c9c79_1232x928.png 1272w, https://substackcdn.com/image/fetch/$s_!ofOz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9d4d334-1803-4824-afdf-2d1b2e0c9c79_1232x928.png 1456w" sizes="100vw" fetchpriority="high"></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">Thanks to my good friend Olli Payne for her Midjourney skills</figcaption></figure></div><h3>Mimicry as an Emergent Behavior</h3><p>Many human and animal behaviors that are assumed to be innate and &#8220;hardwired&#8221; are more likely to be either learned or are emergent. One I&#8217;d like to pay particular attention to is mimicry, and I&#8217;d like to propose an emergent mechanism.</p><p>Navigating the world is fundamentally difficult, and I think the extent to which it is difficult is greatly underappreciated solely because we have collected such a tremendous corpus of knowledge with which to navigate it. Life today is in most ways much easier than it was a few centuries ago, let alone a few thousand or longer.</p><p></p><p></p><p>If we assume that the brain, by observing the world around it, attempts to learn to <a href="https://en.wikipedia.org/wiki/Memory-prediction_framework">make predictions</a> about it, and if we assume a basic ability to <a href="https://en.wikipedia.org/wiki/Basal_ganglia">perform</a> <a href="https://en.wikipedia.org/wiki/Grid_cell">pathfinding</a> and <a href="https://en.wikipedia.org/wiki/Path_integration">path integration</a>, I argue that these basic components alone are sufficient for mimicry to emerge.</p><p>Much of the cortex appears to consist of circuitry that evolved originally for navigating physical spaces that was then adapted to navigate conceptual spaces. If we have the ability to understand our current position, understand the position of our desired destination, and have some map of the obstacles along our way to getting there, then some simple pathfinding algorithms can guide us there.</p><p>The brain navigates with a combination of grid cells, place cells, and head direction cells; grid cells which encode our coordinates using a hierarchy of hexagonal grids, place cells which activate when we are near known landmarks, and head direction cells which encode the direction in which we are facing. It really doesn&#8217;t take much to combine these basic tools and get a pathfinding algorithm that approximately resembles something like <a href="https://en.wikipedia.org/wiki/A*_search_algorithm">A*</a>.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;6f2788bb-1a12-4b98-ac4c-788826cce662&quot;,&quot;caption&quot;:&quot;What can neuroscience tell us about engineering? This might seem like an odd question, whose answer is perhaps &#8220;not much&#8221;, but it&#8217;s worth highlighting the strong human component to engineering. It&#8217;s humans that do the engineering after all. When watching a video on a poor connection, often not enough data can get to your screen to display the video correc&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Holy Grails and Head Direction Cells&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Engineer building advanced CPUs and exotic compilers, lead editor and researcher at Possibilia Magazine, and writing the Bzogramming substack.\n\n~hilmec-difpes&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2022-10-17T08:38:18.903Z&quot;,&quot;cover_image&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/2fb69900-b2d6-4231-813b-75d1c5d8090b_474x714.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/holy-grails-and-head-direction-cells&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:74953133,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Granted, A* works best if the landscape is relatively sparse of major obstacles, and it doesn&#8217;t work at all if the destination itself isn&#8217;t known. Navigating 3-dimensional euclidean space is relatively tractable, but navigating the much higher-dimensional, hyperbolic spaces in which conceptual decision trees and complex interactions in the world are encoded is a vastly more difficult problem. In terms of complexity, the majority of problems there turn out to be in the <a href="https://en.wikipedia.org/wiki/NP_(complexity)">NP</a> or <a href="https://en.wikipedia.org/wiki/NP-hardness">NP-Hard</a> complexity classes. Such problems are exponentially difficult if you do not know the solution, but are comparatively trivial as soon as you do.</p><p>If you don&#8217;t know how to get somewhere, it will be exceptionally difficult to find. If someone gives you the directions, it becomes easy.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;ad8204d2-d304-4aa3-a160-1b01ef9e69d3&quot;,&quot;caption&quot;:&quot;About 2300 years ago, the Greek mathematician Euclid published his book The Elements, which has since become one of the most influential books in all of mathematics, if not the world. It is estimated to be second to only the Bible in terms of the number of printed editions since the invention of the printing press.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Most Profound Problem in Mathematics&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Engineer building advanced CPUs and exotic compilers, lead editor and researcher at Possibilia Magazine, and writing the Bzogramming substack.\n\n~hilmec-difpes&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2022-11-15T15:30:02.057Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/h_600,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F50e02f3c-2cf0-4b9e-b661-90646284c814_614x599.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/the-most-profound-problem-in-mathematics&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:84077564,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:8,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><p>Suppose you observe someone perform actions A, B, and C and get result D. If you had no understanding of how to accomplish D before, you now have some awareness of the mechanisms by which D can occur, and are free to repeat the formula yourself. Even if you are missing some important details, understanding part of the process can guide your exploration of these vast search trees and help you find a working solution vastly more quickly than some kind of blind brute force would likely permit.</p><p>This mechanism requires no dedicated, hardwired instinct for mimicry, but rather emerges from simply watching the world, learning to predict it, and then attempting to navigate to desired goals. It also fits extremely well with complexity theory, in that the existence of a known solution to a problem <em>instantly</em> makes otherwise intractable problems exponentially simpler. In fact, even partial solutions can narrow the search space dramatically; transmission can be lossy, the environment can be noisy, and exponential improvements in tractability can still occur.</p><p>Mimicry may be less of a preprogrammed instinct and more a phenomena that emerges from the fundamental laws governing the ways in which information about even partial solutions make complex problems exponentially more tractable.</p><p></p><h3>Memetic and Genetic Lineages</h3><p>The human genome is 3 billion base pairs, each of which is equivalent to two bits of information. This in total is 750 MB of data, though the vast majority is &#8220;junk DNA&#8221;, which does not appear to directly store useful genes, though may serve other purposes. Even if such junk DNA is much more functional than we expect, 750MB is the hard limit on information storage.</p><p>The human brain however contains many tens to hundreds of trillions of synapses, equivalent to many terabytes of storage. Even if we insist that only a tiny percentage of this can be information capable of being propagated across generations, and even if we assume that the vast majority of animals have brains far smaller than ours, it still does not take much for the information being propagated memetically to greatly exceed that being propagated genetically.</p><p>It&#8217;s not uncommon for people to observe pets raised around other animals taking on traits from other species. I recently had a conversation with someone who remarked about their cat having the habit of &#8220;barking&#8221; on account of spending so much time around their pet dogs. It&#8217;s not uncommon for people to share photos and videos online of pets with stunningly human-like behaviors. It may be that all animals are in fact mimicry machines.</p><p>A great deal of an animal&#8217;s <a href="https://en.wikipedia.org/wiki/The_Extended_Phenotype">extended phenotype</a> may in fact not be genetic at all, perhaps much less than expected. Evolution may even optimize animal body plans over time to better conform to the kinds of common behaviors that they are learning and transmitting down generations. I also would not be surprised if this works in the opposite direction as well; that these changes made to animal body plans make such common behaviors more convenient and therefore make them more likely to be tried again even if the memetic lineage is broken.</p><div><hr></div><p><em>Thank you for reading today&#8217;s article. I&#8217;ve been very busy lately but am hoping to publish a bit more regularly here.</em></p><p><em>For those who have not heard, some friends and I have launched a magazine for optimistic, realistic science fiction called Possibilia. Our goal is to provide alternatives to the overwhelming dystopian doom-and-gloom that takes up so many conversations about what the future will look like. It&#8217;s currently hosted on substack as well, and we are hoping to launch a print magazine later this year.</em></p><p><em>We just published our second story last week, with a nonfiction companion piece for it dropping tomorrow (Friday, April 5th). We&#8217;re currently aiming for a weekly publishing schedule over there, though with a mix of content, not just stories and companion pieces.</em></p><div class="embedded-publication-wrap" data-attrs="{&quot;id&quot;:1478017,&quot;name&quot;:&quot;Possibilia Magazine&quot;,&quot;logo_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%2F9c706936-3d7b-45fd-8978-b1e459eaabed_1280x1280.png&quot;,&quot;base_url&quot;:&quot;https://www.possibiliamag.com&quot;,&quot;hero_text&quot;:&quot;Possibilia is a literary magazine for optimistic, realistic science fiction.\n\nWe're working on bringing you positive visions of the future, in both digital and print magazine formats - through short stories, nonfiction companion pieces, and illustration.&quot;,&quot;author_name&quot;:&quot;Possibilia Magazine&quot;,&quot;show_subscribe&quot;:true,&quot;logo_bg_color&quot;:&quot;#ffffff&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPublicationToDOMWithSubscribe"><div class="embedded-publication show-subscribe"><a class="embedded-publication-link-part" native="true" href="https://www.possibiliamag.com?utm_source=substack&amp;utm_campaign=publication_embed&amp;utm_medium=web"><img class="embedded-publication-logo" src="https://substackcdn.com/image/fetch/$s_!G1vh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c706936-3d7b-45fd-8978-b1e459eaabed_1280x1280.png" width="56" height="56" style="background-color: rgb(255, 255, 255);"><span class="embedded-publication-name">Possibilia Magazine</span><div class="embedded-publication-hero-text">Possibilia is a literary magazine for optimistic, realistic science fiction.

We're working on bringing you positive visions of the future, in both digital and print magazine formats - through short stories, nonfiction companion pieces, and illustration.</div></a><form class="embedded-publication-subscribe" method="GET" action="https://www.possibiliamag.com/subscribe?"><input type="hidden" name="source" value="publication-embed"><input type="hidden" name="autoSubmit" value="true"><input type="email" class="email-input" name="email" placeholder="Type your email..."><input type="submit" class="button primary" value="Subscribe"></form></div></div><p><em>I&#8217;m hoping to publish more content here too of course, so feel free to share and subscribe for more.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/the-origin-of-mimicry?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/p/the-origin-of-mimicry?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/the-origin-of-mimicry/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://bzolang.blog/p/the-origin-of-mimicry/comments"><span>Leave a comment</span></a></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Geometric Constraints on Computing]]></title><description><![CDATA[It&#8217;s convenient to think of computing as operating in some ethereal realm, disconnected from physical reality.]]></description><link>https://bzolang.blog/p/geometric-constraints-on-computing</link><guid isPermaLink="false">https://bzolang.blog/p/geometric-constraints-on-computing</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Mon, 29 Jan 2024 16:00:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf3682cd-104d-41c1-81e0-edf6538ddbc9_1800x1500.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It&#8217;s convenient to think of computing as operating in some ethereal realm, disconnected from physical reality. Cyberspace maybe. This of course is false, and the physical reality underlying computing plays a significant role in constraining computation.</p><p>I&#8217;d like to highlight a few physical constraints that apply to computation. Modern microprocessors - CPUs especially - are hilariously wasteful when it comes to how they use transistors, and as a result contain many other features that limit performance long before many of these limits become relevant to their full extent. As Moore&#8217;s Law grinds to a halt and further performance gains become dependent on squeezing out these inefficiencies, these constraints will become increasingly more relevant and more visible.</p><p></p><h4>Distance is Latency</h4><p>To state perhaps the most obvious, the speed of light is finite. It may seem very fast, but is much slower when you're operating <a href="https://www.youtube.com/watch?v=oE2uls6iIEU&amp;t=254s">at gigahertz speeds</a>. Sending signals a few millimeters across a chip can easily take several clock cycles and sending signals across a CPU motherboard to RAM can easily take hundreds. Modern CPUs attempt to execute many instructions at a time, even on a single core, and so waiting on a piece of data that's inconveniently far away will regularly waste thousands of instructions worth of work, forcing the CPU to stall and patiently twiddle its thumbs.</p><p>How far data must travel and how many possible locations it can be tansported to also impacts power consumption. In some cases such as fiber optic communication this may be negligible, but optical communication within a microprocessor has extremely limited practicality and passing electrons through wires with capacitance and resistance depedendent on their size is the regular way in which on-chip communication is done. If a piece of data is being routed between locations, and there are two possible destinations, some amount of computation must also be performed to send it along the correct path, and larger numbers of possible destinations increases this cost further. Extremely flexible circuits that can shuffle data to an extremely wide variety of locations will generally be much less efficient than circuits with more limited and hard-coded paths.</p><p></p><h4>Volume and Entropy</h4><p>Also obvious, storing information takes up space. This goes for memory cells, but also goes for logic. A circuit, to perform some computation, must store some number of inputs, some number of outputs, and the states of some number of intermediate gates and wires that usually add up to something much larger than the inputs and outputs combined. Plug your inputs into a circuit and the gates and wires collectively navigate a large state space, gradually walking their way toward a stable equillibrium state from which the output can be easily derived. All of this entropy must be embedded in physical space.</p><p>To combine this point with the previous one, this happens to mean that there is a physical limit to how much memory and compute can be accessed within a certain amount of time; only so many memory cells and circuits that can be reached by light or electrons within a certain time limit. If you wish to push the physical limits of computing, you may have to consider tradeoffs between memory and compute resources and the time it takes to evaluate. Accessing more memory or greater compute resources necessarily requires more circuit volume, and will necessarily take greater amounts of time to propagate signals to every destination they must go to to compute a solution.</p><p>Having a greater deal of certainty about what you're looking for can narrow this; this is what caches do. By relocating frequently-used data to be physically closer, or on a larger scale physically sorting data based on the expected likelihood it will be used, average latency and travel distances can be greatly reduced. How well this works is of course highly dependent on how good you are at judging future usage patterns, which can be extremely dependent on the program. A program that pulls random items from a large hash table is going to have very different limits from a program that relies heavily on a few small data structures or consistently takes well-worn and predictable walks through its data.</p><p>Caches are also fundamentally driven by heuristics, and what heuristic is best is often dependent on the particular application. More complex heuristics also of course require more compute and memory, and therefore are working against you when pushing limits. Modern CPU caches try to aim for heuristics with the widest applicability, but certainly would be inferior to something that at least has the option to include a bit more information that may be provided by the compiler or programmer. Tracking usage of individual cache lines like modern caches do creates overhead in the form of additional entropy that must be stored, lowering memory density. Locating memory based on its "address" rather than its physical location also creates additional indirection; the cache must not only account for every possible arrangement of bits we wish to store in it, but also must simultaneously handle every possible physical arrangement of that data that the cache supports, and all the entropy required to encode that.</p><p>All in all, the physical layout of data in space matters tremendously.</p><p></p><h4>Geometry of Parallelism</h4><p>A small and unimpressive circuit that is sufficiently flexible can perform computations as elaborate as a much larger circuit, simply given more time. Given N bits that exist over T time steps, there are 2^(N*T) possible states. Doubling the core count expands the state space just as much as running the same cores for twice as long. Encoding a larger circuit to be emulated requires additional entropy in the form of CPU instructions and instruction memory, which must also be stored and regularly fetched.</p><p>However, suppose we have two tasks we can run in parallel. If task A takes N time steps to evaluate and task B takes M time steps, running the two tasks on a single core should ideally take N+M time steps (ignoring aforementioned factors like memory latency). If we have two cores, we know that these both take up physical space and cannot occupy the same location. Sending a message from one to the other takes time, dependent on how far they are apart. If we decide to send task B to another core, the round trip of communicating with that core should be less than N time steps or else it will take longer to send B off to run in parallel and wait for the result to come back than it would be to simply evaluate A and B sequentially.</p><p>If we have many different tasks with complex dependencies, perhaps we have some flexibility in latency with regards to N and M; how quickly these two specific tasks are evaluated may depend less than the sum total time it takes to evaluate some thousand other tasks as well. On the other hand, it's also perfectly possible that there are bottlenecks in the dataflow of our program and some critical path between N and M does matter. Different programs behave differently.</p><p>Programs also often consist of many different abstractions, with big functions calling smaller functions, and those functions calling yet smaller functions. Any of these functions, all of them, or perhaps none of them, may contain some opportunities for parallelism. There is potential for parallelism at all scales of a program; zooming into functions and the functions they call, and the functions those functions call, etc. leads to you to smaller and smaller tasks and sub-tasks that may be shuffled to different cores or execution units. Parallelism fundamentally has a fractal structure, and how much parallelism is available at each scale impacts how far tasks can be sent across a chip or a data center before latency costs defeat any benefits.</p><p>Memory locality also matters; it may in fact be much better to send a task to another core if that core is located closer to relevant memory. How much this matters depends on the volume of memory that must be moved around and how far it must be moved.</p><p></p><h4>Curvature of Computation</h4><p>Not all spaces are flat, some spaces have curvature. The three main types of curvature are <a href="https://en.wikipedia.org/wiki/Elliptic_geometry">positive (elliptic/spherical) curvature</a>, zero (euclidean/flat) curvature, and <a href="https://en.wikipedia.org/wiki/Hyperbolic_geometry">negative (hyperbolic) curvature</a>. One important property of these spaces is that the volume within a certain radius is dependent on their curvature. In flat, euclidean space, the volume of a circle or sphere is dependent on the radius to the power of the number of dimensions; r^2 for 2D, r^3 for 3D, etc.</p><p>Pick a point on the surface of a sphere however and ask how much surface area is within a certain distance from that point. It increases up until the distance is equal to a quarter of the sphere's circumference. Past that point, its rate of growth slows until the distance is equal to half the sphere's circumference, in which case every point on the sphere is within the distance. Hyperbolic space, even stranger than the other two, sees volume increase exponentially as the radius is increased.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mT8u!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb08198a-f1c4-4c3e-80af-97c003fd47d8_2048x763.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mT8u!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb08198a-f1c4-4c3e-80af-97c003fd47d8_2048x763.png 424w, https://substackcdn.com/image/fetch/$s_!mT8u!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb08198a-f1c4-4c3e-80af-97c003fd47d8_2048x763.png 848w, https://substackcdn.com/image/fetch/$s_!mT8u!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb08198a-f1c4-4c3e-80af-97c003fd47d8_2048x763.png 1272w, https://substackcdn.com/image/fetch/$s_!mT8u!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb08198a-f1c4-4c3e-80af-97c003fd47d8_2048x763.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mT8u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb08198a-f1c4-4c3e-80af-97c003fd47d8_2048x763.png" width="1456" height="542" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db08198a-f1c4-4c3e-80af-97c003fd47d8_2048x763.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:542,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2155863,&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_!mT8u!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb08198a-f1c4-4c3e-80af-97c003fd47d8_2048x763.png 424w, https://substackcdn.com/image/fetch/$s_!mT8u!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb08198a-f1c4-4c3e-80af-97c003fd47d8_2048x763.png 848w, https://substackcdn.com/image/fetch/$s_!mT8u!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb08198a-f1c4-4c3e-80af-97c003fd47d8_2048x763.png 1272w, https://substackcdn.com/image/fetch/$s_!mT8u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb08198a-f1c4-4c3e-80af-97c003fd47d8_2048x763.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 area on the surface of a sphere within a certain radius, highlighted blue here, eventually converges to a finite quantity.</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VVPQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf3682cd-104d-41c1-81e0-edf6538ddbc9_1800x1500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VVPQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf3682cd-104d-41c1-81e0-edf6538ddbc9_1800x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VVPQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf3682cd-104d-41c1-81e0-edf6538ddbc9_1800x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VVPQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf3682cd-104d-41c1-81e0-edf6538ddbc9_1800x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VVPQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf3682cd-104d-41c1-81e0-edf6538ddbc9_1800x1500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VVPQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf3682cd-104d-41c1-81e0-edf6538ddbc9_1800x1500.jpeg" width="420" height="349.90384615384613" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf3682cd-104d-41c1-81e0-edf6538ddbc9_1800x1500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1213,&quot;width&quot;:1456,&quot;resizeWidth&quot;:420,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Coral Hyperbolic geometry | Geometry in Nature I Photography ...&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="Coral Hyperbolic geometry | Geometry in Nature I Photography ..." title="Coral Hyperbolic geometry | Geometry in Nature I Photography ..." srcset="https://substackcdn.com/image/fetch/$s_!VVPQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf3682cd-104d-41c1-81e0-edf6538ddbc9_1800x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VVPQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf3682cd-104d-41c1-81e0-edf6538ddbc9_1800x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VVPQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf3682cd-104d-41c1-81e0-edf6538ddbc9_1800x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VVPQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf3682cd-104d-41c1-81e0-edf6538ddbc9_1800x1500.jpeg 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">Some types of corals have negatively-curved (hyperbolic) surfaces. This can be embedded in regular euclidean space, but quickly reaches limits and cannot maintain this curvature past a certain scale.</figcaption></figure></div><p>Why this matters is that it affects the relationship between volume and distance on a chip. I don't expect we'll be getting real spherical or hyperbolic computers any time soon, but many computations we perform on the chips that we do and will have are in a certain sense curved. A tree data structure is in many respects a discrete form of a hyperbolic space, with an exponentially large number of nodes accessible within a given number of hops. While it might be convenient to think of a tree as always requiring logarithmic time to locate a node, a large enough tree will become bottlenecked on the physical scaling limits of memory in euclidean space, and eventually converge to the same scaling rates; a processor with 2D memory forced to store a large enough tree will eventually converge to ~O(&#8730;n) time to locate nodes.</p><p>Many other algorithms and data structures scale in similar ways, and the dynamics by which the amount of computation and intermediate data grows and shrinks throughout evaluation is a complex geometric object that must be embedded in and confined to the limits of the lattice of memory cells and logic circuits that make up a computer.</p><p></p><h4>Square-Cube Law, Heat, and Bandwidth</h4><p>Take any object and scale it up. Make it twice as tall, twice as long, twice as wide. Its volume has increased by a factor of 2^3, or 8. Its surface area however has increased by only a factor of 2^2, or 4. The ratio of volume to surface area has doubled, and this has a profound impact on many properties and processes involving this object.</p><p>The amount of heat that can be stored within an object is proportional to its volume, but the rate at which it can expel this heat to the outside world is proportional to its surface area. If you have a 3D circuit and decide to scale it up, you eventually hit limits where the chip must be limited in how much work it can do (and therefore how much heat it can generate), or face building up heat too fast and melting.</p><p>Heat is of course just waste entropy, and the rate at which we can move useful entropy (information) in and out of the processor is bound by the same constraints. A sphere of <a href="https://en.wikipedia.org/wiki/Computronium">computronium</a> has bandwidth with the outside world that is ultimately bounded by its surface area. This decides how much information and heat can go in and can go out.</p><p>Manufacturing 3D circuits is difficult, error-prone, and expensive. <a href="https://www.youtube.com/watch?v=uPualBNf1nM">3D</a> <a href="https://en.wikipedia.org/wiki/Flash_memory#3D_integrated_circuit_technology">memory</a> has been around for a while now, and the beginning of <a href="https://www.tomshardware.com/news/ibm-samsung-develop-vtfet-semiconductor-design-for-the-future">3D stacked logic</a> will likely be reaching consumer devices by the end of this decade. However, chips already generate large amounts of heat and are finding it <a href="https://en.wikipedia.org/wiki/Dark_silicon">increasingly</a> <a href="https://en.wikipedia.org/wiki/Dennard_scaling#Breakdown_of_Dennard_scaling_around_2006">difficult</a> to operate without producing too much. Some efficiency gains can be made from the reduced distances between gates possible by moving from 2D to 3D, but this is a small reduction compared to the large increase in heat from more densely packing gates. While memory circuits can keep heat output low thanks to how infrequently most memory is accessed, logic circuits will likely be forced to stay close to 2D to keep the scaling of computing and cooling as closely coupled as possible.</p><p></p><h4>Conclusion</h4><p>While perhaps our usual chips are not well-suited for these concerns with computing, the future will likely rely more heavily on tiled architectures, such as <a href="https://www.adapteva.com/announcements/epiphany-v-a-1024-core-64-bit-risc-processor/">Adapteva&#8217;s Epiphany architecture</a>, or <a href="https://www.cerebras.net/product-chip/">Cerebras&#8217; gargantuan wafer-scale chips</a>. These offer massive core counts and massive amounts of performance. They also offer very precise control over the physical layout of data and compute across the chip, offering huge efficiency gains over the standard approaches of large, purely heuristic-driven caches.</p><p>The tricky part is that I&#8217;m not sure we&#8217;re ready to program these things yet, at least not for anything beyond simple operations on large, flat arrays. As I&#8217;ve described above, there&#8217;s a lot going on and a lot of complex factors to account for.</p><p>Of course, we&#8217;ll never be ready for a change like this. Once a good, general-compute-oriented tiled architecture makes its way onto the market and gains enough users, new branches of computer science and code optimization will flourish, and likely many decades of experimental work will follow. These architectures will likely age like wine, getting more capable as people gain a much deeper understanding of how to properly optimize them.</p><p>Beyond that, it&#8217;s hard to say what computing will look like far into the future. While tiled architectures seem to offer a close-to-optimal approach for linking cores together, there&#8217;s a great deal about how individual CPU cores are currently designed that I doubt is actually very optimal, and is more of a bunch of fairly contrived and rigid ideas that people have locked themselves into.</p><p>The computers of the distant future may look very different from those of today, but we at least have some guidelines from physics to sketch out very rough ideas about them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AlDt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21778cd-3dbd-4777-a3fd-e086055f256e_1024x569.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AlDt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21778cd-3dbd-4777-a3fd-e086055f256e_1024x569.png 424w, https://substackcdn.com/image/fetch/$s_!AlDt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21778cd-3dbd-4777-a3fd-e086055f256e_1024x569.png 848w, https://substackcdn.com/image/fetch/$s_!AlDt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21778cd-3dbd-4777-a3fd-e086055f256e_1024x569.png 1272w, https://substackcdn.com/image/fetch/$s_!AlDt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21778cd-3dbd-4777-a3fd-e086055f256e_1024x569.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AlDt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21778cd-3dbd-4777-a3fd-e086055f256e_1024x569.png" width="596" height="331.17578125" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f21778cd-3dbd-4777-a3fd-e086055f256e_1024x569.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:569,&quot;width&quot;:1024,&quot;resizeWidth&quot;:596,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Epiphany-V: A 1024-core 64-bit RISC processor - AI&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="Epiphany-V: A 1024-core 64-bit RISC processor - AI" title="Epiphany-V: A 1024-core 64-bit RISC processor - AI" srcset="https://substackcdn.com/image/fetch/$s_!AlDt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21778cd-3dbd-4777-a3fd-e086055f256e_1024x569.png 424w, https://substackcdn.com/image/fetch/$s_!AlDt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21778cd-3dbd-4777-a3fd-e086055f256e_1024x569.png 848w, https://substackcdn.com/image/fetch/$s_!AlDt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21778cd-3dbd-4777-a3fd-e086055f256e_1024x569.png 1272w, https://substackcdn.com/image/fetch/$s_!AlDt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21778cd-3dbd-4777-a3fd-e086055f256e_1024x569.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><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0kia!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b1e5e7c-b16f-4ff7-b5fb-42abd41512c8_1240x930.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0kia!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b1e5e7c-b16f-4ff7-b5fb-42abd41512c8_1240x930.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0kia!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b1e5e7c-b16f-4ff7-b5fb-42abd41512c8_1240x930.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0kia!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b1e5e7c-b16f-4ff7-b5fb-42abd41512c8_1240x930.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0kia!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b1e5e7c-b16f-4ff7-b5fb-42abd41512c8_1240x930.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0kia!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b1e5e7c-b16f-4ff7-b5fb-42abd41512c8_1240x930.jpeg" width="500" height="375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b1e5e7c-b16f-4ff7-b5fb-42abd41512c8_1240x930.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:930,&quot;width&quot;:1240,&quot;resizeWidth&quot;:500,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;https://spectrum.ieee.org/media-library/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpbWFnZSI6Imh0dHBzOi8vYXNzZXRzLnJibC5tcy8yNzE5NDgxNC9vcmlnaW4uanBnIiwiZXhwaXJlc19hdCI6MTY0NzkzODgwMX0.4Tu9gLZw-bo-5Qc0KsMfUgdYGuVUeszjL8qYFFL_SSQ/image.jpg&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="https://spectrum.ieee.org/media-library/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpbWFnZSI6Imh0dHBzOi8vYXNzZXRzLnJibC5tcy8yNzE5NDgxNC9vcmlnaW4uanBnIiwiZXhwaXJlc19hdCI6MTY0NzkzODgwMX0.4Tu9gLZw-bo-5Qc0KsMfUgdYGuVUeszjL8qYFFL_SSQ/image.jpg" title="https://spectrum.ieee.org/media-library/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpbWFnZSI6Imh0dHBzOi8vYXNzZXRzLnJibC5tcy8yNzE5NDgxNC9vcmlnaW4uanBnIiwiZXhwaXJlc19hdCI6MTY0NzkzODgwMX0.4Tu9gLZw-bo-5Qc0KsMfUgdYGuVUeszjL8qYFFL_SSQ/image.jpg" srcset="https://substackcdn.com/image/fetch/$s_!0kia!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b1e5e7c-b16f-4ff7-b5fb-42abd41512c8_1240x930.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0kia!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b1e5e7c-b16f-4ff7-b5fb-42abd41512c8_1240x930.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0kia!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b1e5e7c-b16f-4ff7-b5fb-42abd41512c8_1240x930.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0kia!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b1e5e7c-b16f-4ff7-b5fb-42abd41512c8_1240x930.jpeg 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><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share Bzogramming&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share Bzogramming</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/geometric-constraints-on-computing?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/p/geometric-constraints-on-computing?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Non-Newtonian Computing?]]></title><description><![CDATA[A Physics Analogy]]></description><link>https://bzolang.blog/p/non-newtonian-computing</link><guid isPermaLink="false">https://bzolang.blog/p/non-newtonian-computing</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Sun, 07 Jan 2024 23:28:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!0ME4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7786ce-69ee-4bba-9a9a-826a36f0ea06_1200x1276.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The original foundation of modern physics is Newtonian mechanics; given a collection of objects and their positions, velocities, and some knowledge of the forces between them, you can compute their trajectories by playing time forward one small step at a time. There is a tremendous amount of useful work that can be done with simply this tool, but modern physics would have a fraction of its current utility if we had merely stopped there.</p><p>Physics can be reframed in different ways. Another framing is Lagrangian mechanics, which looks at both the kinetic and potential energy of a system and asks how to convert that potential energy into kinetic energy in the minimal amount of effort. There is also Hamiltonian mechanics, which looks at the sum of kinetic and potential energy and analyzes the consequences of the total energy being conserved. Hamiltonian mechanics in particular lends itself easily to extremely rich mathematical tools such as linear algebra and group theory, as any physical system can be framed as rotations of a high-dimensional sphere (conservation laws are encoded as a constant radius) and is the foundation of a great deal of modern quantum mechanics.</p><p>It's worth asking if a similar analogy can be made in computing - are we currently stuck on "Newtonian computing", with future computing paradigms on the horizon as future developments? What might these things look like? Where should we look? What might we expect to come out of them?</p><p>We probably shouldn&#8217;t stick to this analogy too strictly - though perhaps a creative person could come up with some fairly literal translation of Lagrangian mechanics or something that might actually be useful. That&#8217;s not where I would start though, these examples from physics are just an analogy.</p><p></p><h3>The Idea</h3><p>Specifically what we&#8217;d likely be looking for is an alternative way of viewing computation. Currently much of computing is based on a simple gate-based model; you have some collection of bits, you pass some subset of them in as inputs to a gate, and this performs an operation on the input to generate a collection of new output bits. These outputs can be added to the pile of bits, or perhaps if you have limited memory can overwrite existing bits.</p><p>Whatever alternative frameworks we develop would still need to encode all of this, but might highlight some new relationship or property that wasn&#8217;t obvious from simply staring at a sea of gates.</p><p></p><h4>Reversible Computing</h4><p><a href="https://en.wikipedia.org/wiki/Reversible_computing">Reversible computing</a> may be one interesting perspective that may be deeper than we currently realize. This is a research area that already exists, though has a fairly small number of active researchers. It is concerned with the properties of computation that preserves information. All gates have an identical number of inputs and outputs, and all are bijective; every output has exactly one corresponding input. If you want to encode something like an AND gate, where three of the four possible inputs all map to the exact same output, additional &#8220;ancillary bits&#8221; are required to make these outputs different.</p><p>This is effectively conservation of information; while these ancillary bits may appear to store unnecessary junk information, they happen to encode just the right information required to run the circuit in reverse. Running circuits in reverse is in general NP-complete, and often can take exponential time. This is why breaking cryptography is hard, among many other things. What makes it hard is that there is a tremendous amount of guesswork in reversing a circuit; if you&#8217;re only told that an AND gate outputs a 0, you have no way of knowing if the inputs were 00, 01, or 10. A guess-and-check approach is fundamentally required, and while some amount of inference can be used to narrow the range of guesses, multiple unknowns in a large circuit tends to result in an exponential explosion of possible states to check.</p><p>Reversible computing preserves all of this information; if you have the ancillary bits, no guesswork is required. This is not magic, nor is it some threat to cryptography; the person who computed the cryptographic signature or whatever it is you&#8217;re trying to break would be the only person with those ancillary bits, and handing them over for an attacker to use is an obviously stupid idea.</p><p>Reversible computing will likely become more important in the future anyway. There are fundamental thermodynamic limits on the energy efficiency of computing (<a href="https://en.wikipedia.org/wiki/Landauer's_principle">Landauer&#8217;s Principle</a>), and we are only about 4-7 orders of magnitude away from hitting them (depending on ambient temperature). If we wish to throw away or erase information, this fundamentally takes the form of generating waste heat, which corresponds to a certain amount of energy spent. The only way within known physics of circumventing this is to build physically reversible computers that never generate waste heat because they never throw any information away<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>. This will require changing many deep and fundamental ideas around both software and hardware, and will undoubtedly require us to abandon CMOS transistors in favor of some fundamentally different technology.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;dcaf498c-2ae0-4989-97b1-b4e8977df3fa&quot;,&quot;caption&quot;:&quot;One assumption that engineers have been able to make for most of the past few decades has been Dennard scaling; that making transistors smaller means they also use proportionally less energy. This assumption however stopped being true around 2005, and modern chips now include increasingly large amounts of &#8220;dark silicon&#8221; - circuitry used only sparingly t&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Moore's Wall&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Bzo Programming Language, Neuro, Econ, Complexity Theory, Algorithmic Dark Matter, etc.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-01-23T15:35:27.664Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/h_600,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d9417ee-b750-48aa-a38e-5fc66e121976_578x316.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/moores-wall&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:95297089,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:7,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>If quantum computing ever pans out (I&#8217;m doubtful), it too is reversible, and will force reversible computing principles on any engineers who decide to use it.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;93964942-295a-415f-bfe9-7c9f2f4a6a17&quot;,&quot;caption&quot;:&quot;There has been significant hype around Quantum Computing over the past few years. While there certainly are a lot of interesting ideas in the space, especially in terms of mathematics, enormous engineering hurdles that are not clearly solvable stand in the way of practical quantum computers.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;A Realistic Look at Quantum Computing&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Bzo Programming Language, Neuro, Econ, Complexity Theory, Algorithmic Dark Matter, etc.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-03-06T15:31:08.354Z&quot;,&quot;cover_image&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%2F028932fb-2fdd-49bd-a773-a866c09b92ee_2048x1312.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/a-realistic-look-at-quantum-computing&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:84073302,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>With all this said, there is something very interesting in this idea of conservation of information that echoes conservation laws in physics; in fact, the extreme dependence on Hamiltonian mechanics found in quantum math and the inherently reversible nature of quantum computing are deeply related. It is likely that, with the right approaches, much of the rich mathematical toolbox that modern physics uses in Hamiltonian mechanics could likely be imported into studying computing, provided we choose to conserve information.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;c610e5eb-f999-4842-97e1-4a4eea7ddcd2&quot;,&quot;caption&quot;:&quot;I've talked before about the potential for making theoretical computer science more closely resemble geometry. Here, I'd like to deliver on that with some actual motivating examples. I&#8217;d like to start by pointing out an odd mathematical coincidence, then move into sketching out an intuition for the two different sides of this coincedence. This won&#8217;t be&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Lattice-Topology Correspondence&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Bzo Programming Language, Neuro, Econ, Complexity Theory, Algorithmic Dark Matter, etc.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2022-10-03T04:53:27.443Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/h_600,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fe71a7a26-39e1-401d-ab6e-1adc994022c7_4032x3024.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/the-lattice-topology-correspondence&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:69946245,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0ME4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7786ce-69ee-4bba-9a9a-826a36f0ea06_1200x1276.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0ME4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7786ce-69ee-4bba-9a9a-826a36f0ea06_1200x1276.png 424w, https://substackcdn.com/image/fetch/$s_!0ME4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7786ce-69ee-4bba-9a9a-826a36f0ea06_1200x1276.png 848w, https://substackcdn.com/image/fetch/$s_!0ME4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7786ce-69ee-4bba-9a9a-826a36f0ea06_1200x1276.png 1272w, https://substackcdn.com/image/fetch/$s_!0ME4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7786ce-69ee-4bba-9a9a-826a36f0ea06_1200x1276.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0ME4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7786ce-69ee-4bba-9a9a-826a36f0ea06_1200x1276.png" width="384" height="408.32" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f7786ce-69ee-4bba-9a9a-826a36f0ea06_1200x1276.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1276,&quot;width&quot;:1200,&quot;resizeWidth&quot;:384,&quot;bytes&quot;:111790,&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_!0ME4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7786ce-69ee-4bba-9a9a-826a36f0ea06_1200x1276.png 424w, https://substackcdn.com/image/fetch/$s_!0ME4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7786ce-69ee-4bba-9a9a-826a36f0ea06_1200x1276.png 848w, https://substackcdn.com/image/fetch/$s_!0ME4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7786ce-69ee-4bba-9a9a-826a36f0ea06_1200x1276.png 1272w, https://substackcdn.com/image/fetch/$s_!0ME4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7786ce-69ee-4bba-9a9a-826a36f0ea06_1200x1276.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 Bloch sphere from quantum computing. In classical computing, an N-bit state space can be modeled as the vertices of an N-dimensional hypercube. In quantum computing, the analogous framing is a bloch sphere, though this turns out to be much more mathematically insightful thanks to Hamiltonian mechanics.</figcaption></figure></div><h4>Constraint Solvers and NP</h4><p>As stated above, reversing circuits is a problem that is exponentially hard, and fundamentally boils down to a great deal of guesswork. It is also NP-complete; complete in the sense that this problem is expressive and powerful enough to be able to emulate any other problem in NP, which is a truly vast range of problems including both almost all the problems we solve with computers daily as well as many more that most programmers are often too afraid to approach.</p><p>I also mentioned that there are inferences that can be made to reduce the amount of guesswork. If you are given an AND gate and a XOR gate that both receive the same inputs, and the AND gate returns a 0 while the XOR gate returns a 1, you can infer that at least one of the inputs must be a 1, which narrows the range of possible inputs to the AND gate from 3 to 2. The input must either be 01 or 10, as if it were 00 the XOR gate would have returned a 0. This is a simple example, much more complex inferences are possible too.</p><p>Overall, this approach to computing can be seen as looking at the entire state space of a problem (or at least looking at a collection of smaller and more manageable subspaces) and crossing out possibilities that don&#8217;t make logical sense, which in turn often can propagate information and cross out other possibilities. The overall problem is actually fairly simple, and most of the complexity comes from trying to do it with tractable amounts of computing power and memory, as the state spaces are exponentially large.</p><p>These inferences can dramatically reduce the amount of work required to solve these types of problems, though exactly how much work can be saved can be very difficult to answer. These systems can easily play by strange rules and approaches to the P-vs-NP and related problems have really only demonstrated that we will likely need to develop fundamentally new mathematical tools to see serious theoretical progress on the big, open questions.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;c078dc20-8afd-483e-99d2-e1ab0563dc91&quot;,&quot;caption&quot;:&quot;About 2300 years ago, the Greek mathematician Euclid published his book The Elements, which has since become one of the most influential books in all of mathematics, if not the world. It is estimated to be second to only the Bible in terms of the number of printed editions since the invention of the printing press.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Most Profound Problem in Mathematics&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Bzo Programming Language, Neuro, Econ, Complexity Theory, Algorithmic Dark Matter, etc.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2022-11-15T15:30:02.057Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/h_600,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F50e02f3c-2cf0-4b9e-b661-90646284c814_614x599.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/the-most-profound-problem-in-mathematics&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:84077564,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:8,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>While these problems can be very tricky to work with in theory in in the general case (they can be a bit easier to reason about if you focus on special cases), in practice they seem much more promising.</p><p>While there can be many situations where there are exponential explosions in difficulty, the past few decades of research into <a href="https://en.wikipedia.org/wiki/SAT_solver">SAT solvers</a> and <a href="https://www.youtube.com/watch?v=ue4ZEXwLwaM">similar algorithms</a> have shown that there are a shockingly large number of cases - especially when dealing with "real world problems" where things turn out to be much more manageable. There are many very useful situations where the power of logical inference overwhelms exponentially exploding guesswork.</p><p>I would not be surprised at all if there are insights we can gain from studying these types of problems more carefully. If you encode a polynomial-time problem as a SAT instance or similar NP-complete problem, you tend to do so by building a circuit of gates using <a href="https://en.wikipedia.org/wiki/Tseytin_transformation">Tseytin transform</a>s, and the way these gates are wired together creates a kind of information cascade where there is never any ambiguity or guesswork as long as gates are evaluated in the right order. Work on SAT solvers seems to suggest that there are more complex cases that involve only modest amounts of ambiguity that is easily resolved, and it&#8217;s worth asking if there are new types of algorithms that we could build that exploit this.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;85fa6de1-378b-4e56-8901-85b2685c70ca&quot;,&quot;caption&quot;:&quot;In physics, Dark Matter is a mysterious gravitational influence in the universe - perhaps a particle, perhaps some anomalous property of gravity. We cannot currently measure these particles or forces directly, but we can infer their existence indirectly through the effects they have on the matter in the universe that can be measured.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Algorithmic Dark Matter&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Bzo Programming Language, Neuro, Econ, Complexity Theory, Algorithmic Dark Matter, etc.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-02-13T15:31:11.367Z&quot;,&quot;cover_image&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%2Fed0dc984-8c37-4bd2-9b6c-6a8c4547665a_1920x1080.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzolang.blog/p/algorithmic-dark-matter&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:102323445,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>I personally find that a large chunk of modern &#8220;AI&#8221; hype is actually just using good-old-fashioned search/optimization algorithms, perhaps with a neural network bolted on. The notion that hard search algorithms can be accelerated substantially with the addition of a learning algorithm is <a href="https://en.wikipedia.org/wiki/Conflict-driven_clause_learning">nothing new</a>, and caused a revolution in SAT solving before I was even born. The AI people are late to the party.</p><p>I also suspect (motivated by some personal research and projects of mine) that current research into backtracking algorithms (like the ones that SAT solvers use) is merely the tip of the iceberg, and that a tremendous amount of new innovation could be made with more serious effort into this space. I expect that such algorithms would likely prove much faster than these neural networks, though might be <em>slightly</em> more difficult to build than simply shutting your brain off and letting the GPUs go brrr.</p><div><hr></div><p><em>Been a bit busy lately, though I&#8217;ve been thinking over some plans on where to take this blog in the future. I have some projects I&#8217;m working on that I&#8217;ll likely share here in the coming months. I&#8217;d also like to do an in-depth series on NP-complete problems and continue my neuroscience series, though we&#8217;ll see when I get around to that.</em></p><p><em>I should probably do a Bzo devlog soon.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share Bzogramming&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share Bzogramming</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p><p></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>Technically you&#8217;d actually want some kind of quasi-reversible computer that does throw information away, but only when told to. Reversible computers, like any computer, have a finite amount of memory, and so generating bits that cannot be discarded is not something that can be continued indefinitely. In many cases, work can be &#8220;uncomputed&#8221; to clear up more memory, though in some cases it might be cheaper or faster to simply spend some energy turning it into waste heat.</p><p>Reversible computers also will never use zero energy, but at the very least can be made more efficient until <a href="https://en.wikipedia.org/wiki/Bremermann%27s_limit">other bounds</a> are reached.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[AI Demos are Monster Movies]]></title><description><![CDATA[Every week or so there&#8217;s some new AI demo and a bunch of people on Twitter and in my group chats working themselves up into a frenzy about AGI being right around the corner.]]></description><link>https://bzolang.blog/p/ai-demos-are-monster-movies</link><guid isPermaLink="false">https://bzolang.blog/p/ai-demos-are-monster-movies</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Wed, 06 Dec 2023 21:31:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9Twu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F793b7b25-72d0-4975-9619-c7a5c19b21f1_700x505.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every week or so there&#8217;s some new AI demo and a bunch of people on Twitter and in my group chats working themselves up into a frenzy about AGI being right around the corner.</p><p>My response is usually along the lines of &#8220;Oh neat, it&#8217;s another chatbot with some new quirks and a couple new gimmicks bolted on.&#8221; Such statements do not make me popular.</p><p></p><p>AI demos are like monster movies. Really, modern AI hype in general is a big monster movie. You never get to look at the whole monster in plain daylight, you only ever see brief glimpses of tiny parts of it in poor lighting. Everything else is implied, your imagination filling in the rest. These films would be vastly more tame if it wasn&#8217;t for the fact that the monster in your imagination is always far scarier than any silicone prop could ever be.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Twu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F793b7b25-72d0-4975-9619-c7a5c19b21f1_700x505.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Twu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F793b7b25-72d0-4975-9619-c7a5c19b21f1_700x505.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9Twu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F793b7b25-72d0-4975-9619-c7a5c19b21f1_700x505.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9Twu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F793b7b25-72d0-4975-9619-c7a5c19b21f1_700x505.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9Twu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F793b7b25-72d0-4975-9619-c7a5c19b21f1_700x505.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Twu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F793b7b25-72d0-4975-9619-c7a5c19b21f1_700x505.jpeg" width="646" height="466.04285714285714" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/793b7b25-72d0-4975-9619-c7a5c19b21f1_700x505.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:505,&quot;width&quot;:700,&quot;resizeWidth&quot;:646,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Behind The Scenes Photos From Classic Horror Movies&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="Behind The Scenes Photos From Classic Horror Movies" title="Behind The Scenes Photos From Classic Horror Movies" srcset="https://substackcdn.com/image/fetch/$s_!9Twu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F793b7b25-72d0-4975-9619-c7a5c19b21f1_700x505.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9Twu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F793b7b25-72d0-4975-9619-c7a5c19b21f1_700x505.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9Twu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F793b7b25-72d0-4975-9619-c7a5c19b21f1_700x505.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9Twu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F793b7b25-72d0-4975-9619-c7a5c19b21f1_700x505.jpeg 1456w" sizes="100vw" fetchpriority="high"></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>The big difference between AI and a monster movie is that in a monster movie, the people making the film know that the monster isn&#8217;t real and aren&#8217;t trying to warn the public about the immense danger posed by the thing they caught on film. This is less of the case in AI. Machine learning models are described and treated as black boxes, and little effort is spent trying to understand what it is they're doing. The AI is a neural network, so no one knows how it works, and so people proceed to let their imagination run wild with what it could be doing and avoid learning anything about what the network is <em>actually</em> doing that might kill the magic.</p><p></p><p>There certainly is some effort going into fields like Mechanistic Interpretability to approach this problem, but progress is fairly slow and the problems I've heard people trying to tackle in that space sound less like pragmatic day-to-day tools and more like extremely ambitious pipe dreams that try to solve everything all at once. There's likely a lot of low-hanging fruit that's being ignored here, and I suspect that there is also an <strong>immense financial incentive</strong> to not invest in these tools for the sake of maintaining the magic and continuing to hype up investors and frighten the general public.</p><p></p><p>None of these AI tools have taken over the world yet, and I have yet to see one that has really lived up to the hype. I remember talking with tech friends during the early days of GPT-4 where they all were claiming that this new high-quality natural language interface would suddenly make it extremely easy for anyone to get an AI to do whatever they pleased. Google would soon be bankrupt because of how much better GPT-4 is at answering questions. A week later the conversation had shifted to the difficulty of getting good answers and how much of a skilled profession prompt engineering will soon be, and a few of them are now building AI search startups and complaining frequently about how extremely difficult it is to keep the AI from hallucinating fake answers to your questions.</p><p>These AI models would appear far more mundane if we actually had good tools for peering into these neural networks. If every new AI model is <em>&#8220;going to be AGI this time, trust me guys!&#8221;</em> and none of them is yet, maybe our ideas about how this progression toward better and better AI isn&#8217;t very accurate, and maybe peeking under the hood might inform us as to why we haven&#8217;t gotten there yet. It&#8217;s worth remembering that many of these LLMs are consuming many millions of times more text than any human could consume in a lifetime and yet they still aren&#8217;t obviously AGI. Something is very obviously wrong regardless of how people try to rationalize it.</p><p>Even if we build tools that aren&#8217;t sufficient to give us a perfect picture, we could probably still piece together a great deal of what is going on. The ancient Egyptians had a pretty decent idea of what most organs in the body do (with perhaps some misunderstandings about the heart and brain) without any of the modern scientific knowledge or tools we have today.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wT5o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbab4083-8d86-4827-8978-b3478eb23834_900x719.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wT5o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbab4083-8d86-4827-8978-b3478eb23834_900x719.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wT5o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbab4083-8d86-4827-8978-b3478eb23834_900x719.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wT5o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbab4083-8d86-4827-8978-b3478eb23834_900x719.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wT5o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbab4083-8d86-4827-8978-b3478eb23834_900x719.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wT5o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbab4083-8d86-4827-8978-b3478eb23834_900x719.jpeg" width="530" height="423.4111111111111" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bbab4083-8d86-4827-8978-b3478eb23834_900x719.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:719,&quot;width&quot;:900,&quot;resizeWidth&quot;:530,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Edwin Smith Papyrus Photograph by National Library Of Medicine - Fine ...&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="Edwin Smith Papyrus Photograph by National Library Of Medicine - Fine ..." title="Edwin Smith Papyrus Photograph by National Library Of Medicine - Fine ..." srcset="https://substackcdn.com/image/fetch/$s_!wT5o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbab4083-8d86-4827-8978-b3478eb23834_900x719.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wT5o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbab4083-8d86-4827-8978-b3478eb23834_900x719.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wT5o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbab4083-8d86-4827-8978-b3478eb23834_900x719.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wT5o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbab4083-8d86-4827-8978-b3478eb23834_900x719.jpeg 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 href="https://en.wikipedia.org/wiki/Edwin_Smith_Papyrus">The Edwin Smith Papyrus</a>, one of the oldest surviving medical and surgical texts.</figcaption></figure></div><p>Frankly, this pessimistic approach to the interpretabilty of neural networks really isn&#8217;t even that unique in computer science. A very similar thing is going on with popular misunderstandings of undecideability. Turing&#8217;s original proof stated that the set of program states that encode proofs about the properties of other program states is a subset of all possible program states, and that therefore there exist some states that a computer can be in for which no corresponding proof exists. The conclusion is that a program that can correctly answer questions about properties of general code with 100% accuracy cannot exist, and that a program that can answer such questions perfectly can be used to create logical paradoxes and contradictions.</p><p>This is often misinterpreted as meaning that such questions are completely unanswerable in all cases, which is false. Look at these two pieces of code here. Can you answer whether each one will halt? If so, is your brain actually solving a logically impossible problem, or is it merely that this problem is not as impossible as it is often claimed?</p><pre><code>i = 99;
while(i &gt; 0){
    println(i, " bottles of beer on the wall");
    println(i, " bottles of beer");
    println("take one down, pass it around");
    i--;
    println(i, " bottles of beer on the wall");
}</code></pre><pre><code>// underage version
i = 99;
while(i &gt; 0){
    println(i, " bottles of beer on the wall");
    println(i, " bottles of beer");
    println("take one down, put it back up");
    println(i, " bottles of beer on the wall");
}</code></pre><p>The reality is that even if there are some programs that cannot be reasoned about, there still are many programs that can, and that problems that are actually useful to humans are often easy to model with fairly well-behaved programs. The harder ones often just spit out near-random noise, and are usually not worth paying attention to unless your name is <a href="https://writings.stephenwolfram.com/">Stephen Wolfram</a>. You can build tools that can look for certain types of common structure that is easy to reason about - <a href="https://en.wikipedia.org/wiki/Abstract_interpretation">Abstract Interpretation</a> is one such tool. Not all valid programs will have that structure, but most that you care about will! If you have a program that proves hard to analyze, that might be a better indication that you have a bug than it is that you&#8217;re doing something tricky.</p><p>If static analysis tools got as much attention as other development tools do, if we had as many hobbyist programmers building abstract interpreters as we do building their own languages, and if some of them actually gained adoption the way that hobby languages sometimes do, we&#8217;d likely be living in a completely unrecognizeable world with an extremely different outlook on what is and isn&#8217;t possible and feasible in software development. Very likely a <em>much more desirable world</em> than ours.</p><p></p><p>Perhaps machine learning is in some ways a trickier problem. These models are not directly designed by humans and likely use many weird tricks that we don&#8217;t yet understand, let alone know how to build tools to thoroughly reason about for us. In other ways though, it&#8217;s provably easier; these models are finite, they have a finite running time, there are no infinite loops or unbounded tapes that introduce impossible problems into the math. There are some interesting ideas around <a href="https://geometricdeeplearning.com/">viewing AI models geometrically</a> that I suspect will prove to have a lot of merit, though perhaps will need some time to develop. At the very least, it&#8217;s something that is fairly general-purpose and well-connected to already rich and mature mathematical tools.</p><p></p><p>I&#8217;m really not afraid of some scary AI monster. Maybe there will be things worth worrying about someday, but it seems much more likely to me that everyone is just lost and scared and seeing things. If we open the black box, if we turn on the lights, if we take off this monster&#8217;s mask, I think we&#8217;ll find it&#8217;s a lot less scary than we imagined.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vAId!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc2cd68-4bba-414a-a3c0-f9c14717f6e1_1438x1079.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vAId!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc2cd68-4bba-414a-a3c0-f9c14717f6e1_1438x1079.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vAId!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc2cd68-4bba-414a-a3c0-f9c14717f6e1_1438x1079.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vAId!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc2cd68-4bba-414a-a3c0-f9c14717f6e1_1438x1079.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vAId!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc2cd68-4bba-414a-a3c0-f9c14717f6e1_1438x1079.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vAId!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc2cd68-4bba-414a-a3c0-f9c14717f6e1_1438x1079.jpeg" width="462" height="346.6606397774687" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4fc2cd68-4bba-414a-a3c0-f9c14717f6e1_1438x1079.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1079,&quot;width&quot;:1438,&quot;resizeWidth&quot;:462,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;scooby-doo-unmasking-ghosts&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="scooby-doo-unmasking-ghosts" title="scooby-doo-unmasking-ghosts" srcset="https://substackcdn.com/image/fetch/$s_!vAId!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc2cd68-4bba-414a-a3c0-f9c14717f6e1_1438x1079.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vAId!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc2cd68-4bba-414a-a3c0-f9c14717f6e1_1438x1079.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vAId!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc2cd68-4bba-414a-a3c0-f9c14717f6e1_1438x1079.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vAId!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fc2cd68-4bba-414a-a3c0-f9c14717f6e1_1438x1079.jpeg 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><div><hr></div><p><em>I&#8217;m trying to put out more regular articles now, even if they&#8217;re a bit shorter. I have another article mostly finished that should hopefully be out this weekend, and a couple more in the pipeline for next week. Thanks for reading, and stay tuned!</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share Bzogramming&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share Bzogramming</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p><p></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Infrastructure and General-Purpose Tools]]></title><description><![CDATA[What "Ubiquitous Computing" got wrong]]></description><link>https://bzolang.blog/p/infrastructure-and-general-purpose</link><guid isPermaLink="false">https://bzolang.blog/p/infrastructure-and-general-purpose</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Thu, 05 Oct 2023 14:30:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CsJo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9fa4b2-064c-46db-bbab-41c949ba1b18_474x628.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Xerox PARC was a very influential source of innovation throughout the 1970s, 80s, and 90s. They pioneered a large number of ideas around human-computer interactions, and often were better at developing ideas than turning them into products before their competitors. In 1987, they hired Mark Weiser, who quickly became head of his own research lab internally, developing his ideas of &#8220;Ubiquitous Computing&#8221;. He was eventually promoted to CTO in 1996 before his untimely death in 1999.</p><p>Ubiquitous Computing was a philosophy of computer interface design that imagined computers fading into the background, becoming almost invisible. As Weiser saw it, people don&#8217;t set out to interact with a computer, people set out to solve a problem. The computer is merely a means to an end, and much of computer design just gets in the way. Weiser also often made analogies to written language - we barely notice the thousands of objects all around us covered in written text, nor do we think much about how we interact with these things, we do so intuitively. The goal was to design computing systems that would behave similarly.</p><p>Weiser&#8217;s vision was that this would be accomplished by having a spectrum of different kinds of computers - &#8220;computing by the inch, the foot, and the yard&#8221; as he put it. More specifically, this involved computers called tabs, pads, and boards.</p><p>Tabs were imagined like digital post-it notes, and could function as ID badges for employees or objects, PDAs, common functional items such as calculators, or controllers for appliances such as smart thermostats. There was also an idea of tabs being embedded into a wide array of household items, perhaps with beepers in order to help locate lost items.</p><p>Pads were imagined like a sheet of scrap paper, or a magazine or book. They were meant to serve as devices for individual work, somewhat like tablets of today.</p><p>Boards were imagined like chalkboards or whiteboards, meant to fascilitate group work and interactions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CsJo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9fa4b2-064c-46db-bbab-41c949ba1b18_474x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CsJo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9fa4b2-064c-46db-bbab-41c949ba1b18_474x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CsJo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9fa4b2-064c-46db-bbab-41c949ba1b18_474x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CsJo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9fa4b2-064c-46db-bbab-41c949ba1b18_474x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CsJo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9fa4b2-064c-46db-bbab-41c949ba1b18_474x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CsJo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9fa4b2-064c-46db-bbab-41c949ba1b18_474x628.jpeg" width="474" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb9fa4b2-064c-46db-bbab-41c949ba1b18_474x628.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:628,&quot;width&quot;:474,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&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_!CsJo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9fa4b2-064c-46db-bbab-41c949ba1b18_474x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CsJo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9fa4b2-064c-46db-bbab-41c949ba1b18_474x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CsJo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9fa4b2-064c-46db-bbab-41c949ba1b18_474x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CsJo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9fa4b2-064c-46db-bbab-41c949ba1b18_474x628.jpeg 1456w" sizes="100vw" fetchpriority="high"></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">Some people at PARC in the 80s or 90s experimenting with tabs, pads, and boards</figcaption></figure></div><p>Another core idea was that these devices would all talk to each other across the internet, and that devices would largely understand who you are (perhaps by scanning your ID badge tab), and that any device would be able to grant you access to all your files based on your identity. You wouldn&#8217;t have much of a personal collection of tabs, pads, and boards, but rather you could walk up to any such device and start using it as though it were your own.</p><p>This of course would be an incredible security nightmare, but these were idealistic people in idealistic times. Some attention seems to have been given to security with talk of encrypting files over the internet, though it&#8217;s hard to imagine how this would have really made much of a difference without making the rather poor assumption that every device is completely trustworthy.</p><p></p><p>Ubiquitous computing was also made explicitly opposed to two popular ideas in computing at the time - Virtual Reality and Personal Computing.</p><p>VR was opposed on the grounds that it attempted to have the computer replace the outside world entirely rather than augmenting people&#8217;s interactions with the world. Spending all day in a digital fantasy world doesn&#8217;t put food on the table. I think this is a fair critique of VR and likely a major contributor to why it still to this day has yet to really take off.</p><p>Personal computing was seen as an arcane and unintuitive form of computing, compared to how &#8220;scribes once had to know as much about making ink or baking clay as they did writing.&#8221; Weiser saw it as merely a primitive transitional step, one that isolated people in their own little worlds, and that no one in the future would use for the same reason that no one has a single, extremely important book they carry around everywhere for all their paper-based needs.</p><p></p><h3>The Limits of Simplicity</h3><p>Every object you interact with has a sort of language embedded into it. You can enumerate some set of possible interactions, which can be thought of as symbols, and sequences of interactions or symbols behave like statements or conversations which result in particular outcomes. At least in the abstract, this applies just as well to interacting with humans and computers as it does with, say, a hammer, or a pen, or a piece of clay. Our minds are filled with many bits of knowledge of the form &#8220;do W, X, and Y, and then Z will happen&#8221; that guide our interactions with the objects around us. The space of all of these objects can be imagined as akin to a finite state automata, a big flow chart, or a descision tree, which our minds navigate as a series of actions meant to arrive at a planned outcome.</p><p>I suspect that the human brain models its interactions with tools in much the same way it models conversations, through this kind of linguistic model. The low-level circuitry in the brain&#8217;s cortical columns show no apparent difference between humans and nonhumans or linguistic and non-linguistic brain regions. It&#8217;s the same general-purpose thinking algorithm, just applied to a new 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_!ySdh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca11080-9085-4f6b-acbb-7f34b5987f05_522x522.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ySdh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca11080-9085-4f6b-acbb-7f34b5987f05_522x522.png 424w, https://substackcdn.com/image/fetch/$s_!ySdh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca11080-9085-4f6b-acbb-7f34b5987f05_522x522.png 848w, https://substackcdn.com/image/fetch/$s_!ySdh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca11080-9085-4f6b-acbb-7f34b5987f05_522x522.png 1272w, https://substackcdn.com/image/fetch/$s_!ySdh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca11080-9085-4f6b-acbb-7f34b5987f05_522x522.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ySdh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca11080-9085-4f6b-acbb-7f34b5987f05_522x522.png" width="356" height="356" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ca11080-9085-4f6b-acbb-7f34b5987f05_522x522.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:522,&quot;width&quot;:522,&quot;resizeWidth&quot;:356,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;undefined&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="undefined" title="undefined" srcset="https://substackcdn.com/image/fetch/$s_!ySdh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca11080-9085-4f6b-acbb-7f34b5987f05_522x522.png 424w, https://substackcdn.com/image/fetch/$s_!ySdh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca11080-9085-4f6b-acbb-7f34b5987f05_522x522.png 848w, https://substackcdn.com/image/fetch/$s_!ySdh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca11080-9085-4f6b-acbb-7f34b5987f05_522x522.png 1272w, https://substackcdn.com/image/fetch/$s_!ySdh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ca11080-9085-4f6b-acbb-7f34b5987f05_522x522.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 idea of modeling spaces with sequences of symbols really isn&#8217;t that unique either - &#8220;Geometric Group Theory&#8221; is a branch of mathematics that expands the toolbox of Group Theory (the study of symmetry) and heavily relies on a very similar approach.</figcaption></figure></div><p>If we assume a practically finite number of potential interactions with an object, and perhaps assume some locality and other factors that make some interactions more convenient than others, we can imagine some enumerable space of interactions. We can augment it with a cost model - longer sequences of actions tend to be more expensive, complex, and/or time consuming to perform than shorter sequences. There are also information-theoretic constraints. If there are two possible actions we can take with a given tool, and we want a million distinct outcomes, then it is not possible to create a language where there are not at least some outcomes which require log2(1,000,000) or ~20 actions to reach. In practice, many sequences of actions may produce identical or useless results, and so accounting for this redundancy will often increase the number of actions required to reach the average desired outcome.</p><p>A little redundancy can of course be useful, as having multiple ways to accomplish a task can enable personal style and flexibility in learning, as well as creating flexibility for forgiving the occasional mistake.</p><p>Perhaps some cases involve continuous systems where the state space may be technically infinite, though in practice a combination of the finite resolution of the human mind, the tendency of continuous systems to map miniscule changes in input to miniscule changes in output, and the fact that the exceptions to these cases can be modelled as merely having a random element beyond human precision to control, all together make such technicalities a non-issue.</p><p></p><p>Using this information-theoretic constraint, we can see that with any given tool the complexity of the average interaction or task is directly limited by the number of distinct outcomes that are possible. We can fiddle with the design of our tools to shift what is and isn&#8217;t convenient to accomplish, squeezing out redundancies and inefficiencies where they exist, <a href="https://en.wikipedia.org/wiki/Kolmogorov_complexity">but there is always a fundamental limit on how expressive we can really be for a given amount of brevity</a>.</p><p></p><h3>The Case of General-Purpose Tools</h3><p>If we have a constrained problem with a manageable and finite number of possible outcomes, defining a simple and efficient interface isn&#8217;t too hard. However, as we increase ambition and utility, interactions get far more complex.</p><p>Computers are general-purpose machines, that&#8217;s their whole point. There is a vast and effectively infinite range of behaviors and functions we could achieve with a given computer, and to start pruning these options in any meaningful way would eliminate much of the point of the computer.</p><p>If we wanted to create a &#8220;language&#8221; to optimize our interactions with computers, to reduce the average number of actions required to get a computer to perform a task, where do we even start?</p><p>There is a &#8220;sport&#8221; among programmers called <a href="https://en.wikipedia.org/wiki/Code_golf">code golf</a>, in which the goal is to write a specific program using the absolute least amount of characters possible, no matter how unreadable or bizarre the output. Seeing as some languages tend to be more verbose than others, there has tended to be a metagame to it around language choice. Eventually, &#8220;code golf languages&#8221; were developed primarily for the sake of exploiting this. Such languages tend to do funny things such as defining single-character functions for solving common code golf challenges, or defining an empty source file to be equivalent to a hello world program, making the most common code golf challenge require literally zero characters (something a little hard to beat). Other design choices are often made around minimizing the file size of other common code golf challenges with zero regard made for readability. In a narrow sense, these languages are theoretically highly optimized and concise, but in practice they are optimized for a game with little practical value.</p><p>As mentioned before, a little redundancy can often be a good thing.</p><p>If the point of a computer is to be general-purpose, to be capable of a very wide variety of things, to be capable of <em>nearly anything</em>, then there really is no one central goal to optimize around. The most fair thing to do would be to pick some basis that is not too inconvenient to implement many common things with while optimizing for something practical and fundamental such as energy efficiency.</p><p>Instead, the real game is not in finding <em>the one weird trick</em> that enables us to speak single sentences into our computers and have the precise, often complex outcome we want to land at our feet with close to zero effort. This limits detail in specification, and often leaves us with <a href="https://en.wikipedia.org/wiki/The_Monkey%27s_Paw">undesireable results</a> on any underspecified dimension.</p><p>This line of reasoning can of course also be used to pour cold water on the many pipe dreams around things like declarative programming and prompt-based AI, but for now I&#8217;ll leave that as an exercise for the reader to contemplate.</p><p></p><p>So the game of finding <em>the one weird trick</em> that makes all our interactions with computers extremely terse and efficient is largely a fool&#8217;s errand if we take it too seriously - undoubtedly there are useful innovations that can and have been found, but it will never give us the kind of magic that so many dream of. Rather, the real game is the one we&#8217;ve been playing all along - infrastructure and customization. Tooling. Personalization.</p><p>Everyone has a different set of tasks they need to use their computer for, and just as people organize and customize their house and possessions to help them better accomplish their work and chores, they do the same with their computers. The way to build something that is both general-purpose and that is convenient to use is to build something that conforms to whatever the particular user needs to use it for.</p><p>The software you have locally installed on your machine doesn&#8217;t just reduce how much you need to download on the fly, but also reflects the kinds of problems you spend your time working on. Any convenience that comes from using something already on your machine rather than something that must be installed before use is something that optimizes for your use and makes you more productive. The machine conforms to your personal needs, and thus becomes more convenient for you to use than some standardized, one-size-fits-all solution. It may be less convenient for someone else to use, but who cares? It&#8217;s yours.</p><p>If you&#8217;re building software, you&#8217;re doing so with a vast stack of development tools and code libraries that make things more convenient with the assumption that they represent a solution to a problem that you&#8217;re likely to reuse. If you have a package manager or other cache of libraries that you specifically have downloaded for your coding needs, you&#8217;ve optimized this system around your personal convenience. Someone else will likely have a very different personal code collection.</p><p>The way people use internet browsers, with tens or sometimes hundreds of open tabs reflects a similar kind of use. If your browser crashes and you lose all those tabs, it may be awfully inconvenient to reconstruct all you had built for yourself for the problems you were working on. You had a mental map of what kinds of tabs you had open and how to get to them all, though some of that knowledge was probably still stored by the browser. Much of that map becomes second-nature and intuitive as you build and maintain it, at least for you.</p><p>Perhaps there&#8217;s some inconvenience from browsers not being designed with the goal of juggling so many tabs, but that&#8217;s a different problem that&#8217;s solvable with <a href="https://www.theverge.com/23462235/arc-web-browser-review">better browser design</a>.</p><p></p><p>If you have a general-purpose tool, where little can be made convenient by default because of the infinite breadth of potential functionality, the way you make it convenient to use is to build structures within it that compress the paths you most frequently take so that it is convenient for your personal purposes.</p><p></p><h3>Back to Ubiquitous Computing</h3><p>There are some interesting and nice ideas to be found in Mark Weiser&#8217;s work. His ideas have been influential in some corners of design around IoT and cloud computing. I wouldn&#8217;t be surprised if there are a few remaining gems in his work that have yet to be given wide adoption in the right context.</p><p>I imagine however that the balancing act needed to maintain computers with the level of personalization necessary to be meaningfully and maximally useful while also opposing ideas from Personal Computing would have proven difficult if Weiser would have lived long enough to continue his work that far. The analogies with paper and similar items only can go so far - paper is useful for writing and drawing, but its uses are also vastly more limited than computers. If it were not, we would just keep using paper for everything.</p><p>Effortless simplicity of the kind that Weiser dreamed of is incompatible with generality. You must pick one or the other, and the only obvious compromise is with a system that gradually conforms to personal needs, which brings us right back to personal computing. Perhaps there were some ideas around using ID badge tabs and personal file access that could have made that work, but isn&#8217;t that just personal computing with extra steps?</p><p></p><p>Sometimes people get too attached to an idea because of how nice it seems that they become blind to its flaws. Oftentimes grand, simplifying ideas don&#8217;t actually pan out that well - the world is far too complex and any structure requires assumptions to be made, assumptions that will not hold across all situations in the world. Any broad vision that &#8220;<em>everything</em> must be done in <em>this</em> way&#8221; is going to eventually run into friction and contradictions in some cases.</p><p>Excessive standardization in the face of a very complex problem is <a href="https://en.wikipedia.org/wiki/Tower_of_Babel">doomed to fail</a>.</p><p>If there were a constrained, limited range of usecases that covered 80% of what people use their computers for - social media, Youtube/Netflix, word processing, spreadsheets, maybe a few others - perhaps some approximation of this vision could be achieved while still letting the hardcore users use their laptops, desktops, and supercomputers for the rest. Perhaps that would also be limiting what computers could evolve into though, limiting our imagination of what computers could be to mere office supplies, crystalizing things too early.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MEP4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e381f4c-72ba-47ad-8a07-31e5542dacc7_610x663.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MEP4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e381f4c-72ba-47ad-8a07-31e5542dacc7_610x663.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MEP4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e381f4c-72ba-47ad-8a07-31e5542dacc7_610x663.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MEP4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e381f4c-72ba-47ad-8a07-31e5542dacc7_610x663.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MEP4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e381f4c-72ba-47ad-8a07-31e5542dacc7_610x663.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MEP4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e381f4c-72ba-47ad-8a07-31e5542dacc7_610x663.jpeg" width="380" height="413.0163934426229" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e381f4c-72ba-47ad-8a07-31e5542dacc7_610x663.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:663,&quot;width&quot;:610,&quot;resizeWidth&quot;:380,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Amateur Treasure Hunter Hit the Jackpot with The Ringlemere Cup Find ...&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="Amateur Treasure Hunter Hit the Jackpot with The Ringlemere Cup Find ..." title="Amateur Treasure Hunter Hit the Jackpot with The Ringlemere Cup Find ..." srcset="https://substackcdn.com/image/fetch/$s_!MEP4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e381f4c-72ba-47ad-8a07-31e5542dacc7_610x663.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MEP4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e381f4c-72ba-47ad-8a07-31e5542dacc7_610x663.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MEP4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e381f4c-72ba-47ad-8a07-31e5542dacc7_610x663.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MEP4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e381f4c-72ba-47ad-8a07-31e5542dacc7_610x663.jpeg 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">Corded ware pottery - the &#8220;<a href="https://en.wikipedia.org/wiki/Corded_Ware_culture">corded ware culture</a>&#8221; was an ancient European culture from ~5000-4300 years ago, notable for their pottery that archaeologists dig up. It appears that when they transitioned from woven baskets to pottery, they chose to put considerable effort into decorating their pottery to closely resemble the woven baskets they were meant to replace.</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qpb2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8ab878-cdee-4aca-8b50-7e3ae56c00ce_474x296.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qpb2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8ab878-cdee-4aca-8b50-7e3ae56c00ce_474x296.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Qpb2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8ab878-cdee-4aca-8b50-7e3ae56c00ce_474x296.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Qpb2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8ab878-cdee-4aca-8b50-7e3ae56c00ce_474x296.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Qpb2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8ab878-cdee-4aca-8b50-7e3ae56c00ce_474x296.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qpb2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8ab878-cdee-4aca-8b50-7e3ae56c00ce_474x296.jpeg" width="474" height="296" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce8ab878-cdee-4aca-8b50-7e3ae56c00ce_474x296.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:296,&quot;width&quot;:474,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&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_!Qpb2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8ab878-cdee-4aca-8b50-7e3ae56c00ce_474x296.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Qpb2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8ab878-cdee-4aca-8b50-7e3ae56c00ce_474x296.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Qpb2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8ab878-cdee-4aca-8b50-7e3ae56c00ce_474x296.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Qpb2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce8ab878-cdee-4aca-8b50-7e3ae56c00ce_474x296.jpeg 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">One notable and common difference between classical architecture and the more modern neoclassical that tries to imitate it is the use of triglyphs - the Greeks built their stone temples to imitate the appearance of the temples that they previously had built from wood. The beams used to support the roof each consisted of sets of three wooden planks bound together, and stone imitations of these patterns of beams were abundant despite the stone temples needing no such details in practice.</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IsSb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa950e778-3431-45d7-ac02-0fd270a83a86_700x619.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IsSb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa950e778-3431-45d7-ac02-0fd270a83a86_700x619.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IsSb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa950e778-3431-45d7-ac02-0fd270a83a86_700x619.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IsSb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa950e778-3431-45d7-ac02-0fd270a83a86_700x619.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IsSb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa950e778-3431-45d7-ac02-0fd270a83a86_700x619.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IsSb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa950e778-3431-45d7-ac02-0fd270a83a86_700x619.jpeg" width="360" height="318.34285714285716" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a950e778-3431-45d7-ac02-0fd270a83a86_700x619.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:619,&quot;width&quot;:700,&quot;resizeWidth&quot;:360,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A 3d printed save icon! | Floppy disk, Computer history, Best funny ...&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="A 3d printed save icon! | Floppy disk, Computer history, Best funny ..." title="A 3d printed save icon! | Floppy disk, Computer history, Best funny ..." srcset="https://substackcdn.com/image/fetch/$s_!IsSb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa950e778-3431-45d7-ac02-0fd270a83a86_700x619.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IsSb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa950e778-3431-45d7-ac02-0fd270a83a86_700x619.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IsSb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa950e778-3431-45d7-ac02-0fd270a83a86_700x619.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IsSb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa950e778-3431-45d7-ac02-0fd270a83a86_700x619.jpeg 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><div><hr></div><p><em>For those who do not follow my <a href="https://twitter.com/bzogrammer">Twitter</a>, I recently <a href="https://twitter.com/possibiliamag/status/1704996131141521600">announced</a> that a few friends and I are launching <a href="https://www.futureaesthetics.foundation/possibiliamag">Possibilia Magazine</a>, a literary magazine for optimistic, realistic, near-term science fiction. The overall goal is to offer brighter alternatives to the abundant, bleak depictions of the future that are so often presented in media, while also being able to showcase esoteric and new technologies and ideas that we feel get far too little attention. If you&#8217;re interested, you can join the mailing list <a href="https://possibiliamag.com/">here</a> to be alerted of updates. We also have opportunities for writers and artists for those interested.</em></p><p><em>This is a crazy idea I had in the summer of last year that has unexpectedly snowballed into something that&#8217;s been gaining a lot of traction and getting a lot of amazing people involved. I honestly never expected things to move this quickly or get this much attention, and the result is shaping into something far more ambitious than what I originally dreamt up last year.</em></p><p><em>It&#8217;s also been keeping me a bit busy lately, which explains why my substack posts have been so sporadic. I do have a few articles in the pipeline though, and I&#8217;m still spending a significant amount of time on coding projects, so you can expect more frequent content here in the near future.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/infrastructure-and-general-purpose?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/p/infrastructure-and-general-purpose?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Superconductors and Such]]></title><description><![CDATA[Some thoughts on atoms, bits, and the future of engineering]]></description><link>https://bzolang.blog/p/superconductors-and-such</link><guid isPermaLink="false">https://bzolang.blog/p/superconductors-and-such</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Tue, 01 Aug 2023 05:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!EhYy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8485b9d-9e49-4114-8183-4de715b07161_1200x800.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EhYy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8485b9d-9e49-4114-8183-4de715b07161_1200x800.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EhYy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8485b9d-9e49-4114-8183-4de715b07161_1200x800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!EhYy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8485b9d-9e49-4114-8183-4de715b07161_1200x800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!EhYy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8485b9d-9e49-4114-8183-4de715b07161_1200x800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!EhYy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8485b9d-9e49-4114-8183-4de715b07161_1200x800.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EhYy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8485b9d-9e49-4114-8183-4de715b07161_1200x800.jpeg" width="588" height="392" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c8485b9d-9e49-4114-8183-4de715b07161_1200x800.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:1200,&quot;resizeWidth&quot;:588,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;LK-99 partially levitating&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="LK-99 partially levitating" title="LK-99 partially levitating" srcset="https://substackcdn.com/image/fetch/$s_!EhYy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8485b9d-9e49-4114-8183-4de715b07161_1200x800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!EhYy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8485b9d-9e49-4114-8183-4de715b07161_1200x800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!EhYy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8485b9d-9e49-4114-8183-4de715b07161_1200x800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!EhYy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8485b9d-9e49-4114-8183-4de715b07161_1200x800.jpeg 1456w" sizes="100vw" fetchpriority="high"></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>There&#8217;s been some hype over the past week or so around a supposed <a href="https://arxiv.org/abs/2307.12037">room-temperature, ambient-temperature superconductor</a>. There are plenty of reasons to be skeptical of it, but if it&#8217;s real it&#8217;ll be a very big deal. So far though, there have been some independent replications that have shown that it may at least be an exceptionally strongly diamagnetic material, so at the very least the material has some interesting and potentially useful properties even if it isn't a full superconductor.</p><p>[Note: as I was editing this, <a href="https://arxiv.org/abs/2307.16892">an independent paper backing up its superconducting properties has dropped</a>.]</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/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">Bzogramming is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><p></p><p>One interesting property of the claimed material however is that it&#8217;s actually fairly simple - just lead, phosphate, and doped with a bit of copper. Compare that to the common approach to superconducting materials, which often are full of exotic and expensive elements. We will very likely know whether or not it&#8217;s actually legit within a week or two. <a href="https://eirifu.wordpress.com/2023/07/30/lk-99-superconductor-summary/#sbtable">There&#8217;s already a decent number of people trying to replicate it independently, including a few of private individuals</a>. If we ever get a room-temperature, ambient-pressure superconductor that sees widespread adoption, it will have to be something simple and overlooked like this lead compound; anything too exotic will simply be impossible to produce at scale.</p><p>There&#8217;s certainly a lot of potential such a material could have, and I&#8217;ve seen a number of people claim that it could bring about &#8220;another industrial revolution.&#8221; That&#8217;s a bit of an exaggeration in my opinion, but not too big of one. Much cheaper MRIs would certainly be nice to have, and there's a good chance that the diamagnetic properties that it seems much more likely to have may at least be useful for building maglev trains. With that said, the idea that we *need* an innovation like this before we can start doing big things again sounds a lot like a coping mechanism to me.</p><p>America needs to start building stuff again. Stuff made from atoms, not just bits. Software certainly has its place, but it shouldn&#8217;t take priority over absolutely everything else to the extent that it has. "Tech companies" used to refer to all kinds of technologies, whereas today the term seems to primarily refer to software companies. Innovation outside of computing seems to have slowed to a crawl over the past few decades. We need to build rockets, factories, robots, planes, trains, automobiles, nuclear reactors, ships, tractors, machine tools, houses, skyscrapers, titanium foundries, and more. Much more. We need to push innovation and boundaries again that involve things other than merely moving electrons around.</p><p>The one person who of course can be pointed to who is doing something about this, cliche as he is, is Elon Musk. While there certainly things he does very well with his businesses, I&#8217;m inclined to say that any business or engineering brilliance isn't actually the biggest factor to his success.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;2abb3e64-6cc7-4059-a439-efda98589cb4&quot;,&quot;caption&quot;:&quot;I&#8217;ve been meaning to write an article closely inspecting Neuralink and its technology for a while. After their new presentation (video embed below if you have a couple hours to spare) a few weeks ago, this seems like a good time for a detailed essay.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Some Thoughts on Neuralink&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Bzo Programming Language, Neuro, Econ, Complexity Theory, Algorithmic Dark Matter, etc.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2022-12-26T16:31:36.521Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/h_600,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1b359b4-8276-427d-9d2a-bf5b1ea06550_770x370.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzogrammer.substack.com/p/some-thoughts-on-neuralink&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:89528965,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>I know a number of people who entered university intent on getting a degree in a field like biochemistry or geology, and left with a CS degree instead. I&#8217;ve heard biologists lament how bad their software tools are, because any biologist who can write even mediocre Javascript or Python code leaves to get a much higher-paying job as a developer, leaving the biology software to be written by the people left over. I&#8217;ve personally come across <a href="https://github.com/khipulab/open-khipu-repository">archaeology databases</a> implemented as complicated and ugly SQL databases not because that was the best tool for the job (far from it), but because it was the only tool that the elderly archaeologist who decided a database was needed could figure out.</p><p>I&#8217;m fairly convinced that the real secret to Elon&#8217;s success is not his brilliance in engineering or business - though that likely is a partial factor<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> - but rather that software (and perhaps also finance) has overwhelmingly brain-drained every other industry. The people who used to build rockets and airplanes, optimize industrial processes, design complex machines and appliances, and more, are currently all writing code instead. If you simply transfer the top software engineers into other fields, or at least make rockets and electric cars sexy enough to convince young people to pursue those fields instead so they can work at your company, you quickly gain a gigantic talent advantage over everyone else and can rapidly make progress that otherwise wouldn't have materialized for decades if ever at all.</p><p>At the end of the day, materials science matters a lot. New materials give us new building blocks to work with and opens up new technologies that weren&#8217;t available before. The space of possible materials is vast, but also seemingly rather underexplored. It somehow took until the 1980s for anyone to get the idea to make an alloy by mixing five or more metals in equal quantities, and only in the past decade has this really gotten serious academic attention, in the form of <a href="https://en.wikipedia.org/wiki/High-entropy_alloy">High-Entropy Alloy research</a>. This sounds like the first thing a child would suggest to do upon learning what metal alloys are (just mix them all together!), and it&#8217;s now a promising and fairly new field for finding new materials with unique properties. The fact that this wasn&#8217;t uncovered through basic experimentation a very long time ago is something that I find shocking.</p><p>A lot of the intelligent effort into materials science today seems to go into things like quantum chemistry simulations, I would assume because all the smartest people even adjacent to the field write code all day and when all you have is a hammer everything looks like a nail. This is somewhat promising, but from listening to enough lectures and talks and reading up on the math involved, it seems to me like a poor approach. All the algorithms are at best something absurd like O(n^11), and at worst exponential time. I certainly will be the first person to say that exponential problems are often much less scary than they're made out to be, and that there are a plethora of tactics for making them more tractable, but nevertheless there are some cases where it's just not practical. Maybe I haven't dug enough into the field myself yet, but from what I've seen it seems like there must be better approaches.</p><p>There&#8217;s certainly value in computational tools; you can visualize and measure properties that would otherwise be invisible in the physical system. Depending on how you architect the system, you might even be able to rewind, fast-forward, or fork and iterate upon the system in ways that just wouldn't be possible in reality. However, you'll always be resorting to approximations - often approximations of approximations of approximations of theories of physics we know aren't actually completely correct. You also have to deal with the fact that reality will always be able to compute precise results faster than our computers ever will. If you lower the resolution of your simulation with weak enough approximations, sometimes you can get something that can run pretty fast, but you'll be losing a lot of detail, and when it comes to material science that detail is often what matters most, hence why all the computational approaches are trying to face these exponential complexity walls.</p><p>There is the argument that we can utilize advanced models to better understand and study the principles behind these systems, that if we can build a good enough model in a computer we can use such models to get a deeper understanding of how these systems work to accelerate innovations in general. This has some merit to it, but any system that is fundamentally irreducible below exponential time (as is the case with most quantum systems) will necessarily be impossible to reduce to the kinds of simple explanations we often want. We can simplify some parts, but this will never give us the full picture, and simple trial and error and real-world experimentation will likely always play an important and irreplaceable role.</p><p>I can certainly imagine a hypothetical business that simply pays a bunch of people to mix random metals and minerals together all day and test their properties. If done on a large enough scale, it could be very lucrative at creating novel and valuable materials in ways that a company with access to a giant supercomputer and the best quantum chemistry algorithms would likely struggle with. If there is any part of such a business that could benefit from computing, I expect the greatest value would actually be in leveraging some basic Monte-Carlo-style algorithms and statistical tools for more efficiently navigating chemical possibility spaces toward interesting materials.</p><p>There certainly may be flaws in such an idea, but we at least need more people thinking about such issues and we should be questioning if the current approaches are actually ideal. Many of the existing areas of material science seem to love focusing on exotic crystals made with rare earth metals and other exotic things that would never work at scale. Either that, or organic chemistry labs that try and almost always fail to overcome biology's 4-billion-year headstart and copy biology with little to no understanding of how such biological systems actually work. A lab focused on high-throughput experimentation would likely be one biased toward materials that are cheap and easy to produce, which is not a bad bias to have!</p><p></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;ee418ae2-85ce-463f-bb00-fb61c4f7560a&quot;,&quot;caption&quot;:&quot;There is a UFO craze going on right now. The Pentagon is even establishing a new department just for investigating sightings. There&#8217;s also a common idea proposed by people like Eric Weinstein and Deep Prasad that if we could just get our hands on some UFO materials, or at least enough declassified military footage of them, we could reverse-engineer whate&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Alien Technology in Plain Sight&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;bio&quot;:&quot;Bzo Programming Language, Neuro, Econ, Complexity Theory, Algorithmic Dark Matter, etc.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2022-08-10T04:42:26.280Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08e593f-6696-4760-b1c6-be0f36fcf4db_900x550.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://bzogrammer.substack.com/p/the-alien-technology-in-plain-sight&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:67963904,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:10,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><h3>Tech Turmoil</h3><p>This brain-drain situation with software is something that I expect isn&#8217;t going to last forever. In fact, I expect things will start to seriously change by the end of the decade.</p><p>While perhaps many tech companies are happy to tell you that business is going great, their actions seem to tell a different story. Facebook/Meta, which has all its eggs in just one basket with 98% of its revenue coming solely from advertising, has been seemingly desperate to jump ship to something else for a few years. <a href="https://en.wikipedia.org/wiki/Diem_(digital_currency)">First they tried to start their own cryptocurrency with Libra/Diem</a>, and more recently they burned $40 billion trying to build a &#8220;metaverse&#8221; that not even their own employees wanted anything to do with, while much of the public considers the <a href="https://www.youtube.com/watch?v=C8yE3FnLdyc">technology</a> an <a href="https://www.youtube.com/watch?v=7j66b2yXISA">abomination</a>.</p><p>Twitter/X is now trying to diversify away from ads and pivot toward more of a subscription model while its new owner is heralding it as a future WeChat-style superapp and financial giant.</p><p>Google/Alphabet is meanwhile <a href="https://adalytics.io/blog/invalid-google-video-partner-trueview-ads">commiting fraud</a>, taking actions to <a href="https://www.bleepingcomputer.com/news/technology/youtube-tests-blocking-videos-unless-you-disable-ad-blockers/">fight ad blockers</a>, and taking other unpopular tactics such as threatening to <a href="https://www.bleepingcomputer.com/news/google/google-warns-again-it-will-start-deleting-inactive-accounts-in-december/">delete old gmail accounts</a> and then walking back after public outcry and claiming that old Youtube videos won&#8217;t be deleted - yet. Meanwhile with the most recent quarter being an exception, Youtube (which has never been profitable to begin with) <a href="https://variety.com/2023/digital/news/youtube-alphabet-q2-2023-earnings-ad-sales-1235679737/#!">has been seeing multiple consecutive quarters of declining ad revenue</a>. Keep in mind that out of the plethora of new video streaming services that have popped up in the past few years, not a single one of these new players has done anything but hemmorage money, and that&#8217;s without having to maintain what is likely a multi-exabyte video library that never shrinks.</p><p>While perhaps it&#8217;s difficult to say for certain that advertizing isn&#8217;t as sustainable of a business model as it seems, and that a twenty-year adtech bubble may be about to burst, following the old idiom that "actions speak louder than words" provides a strong hint that things aren&#8217;t as good as they appear.</p><p>I&#8217;ve personally begun backing up terabytes of Youtube videos as a side project.</p><p>It&#8217;s not just an adtech crisis that could cause a problem in the next few years. With Moore&#8217;s Law rapidly grinding to a halt, companies will no longer get exponentially growing subsidies from hardware improvements. If throwing 3x more compute at a problem can get your company 1.5x more revenue, growing this way is really only sustainable if you can somehow double your compute/$ in the time it takes to build out that compute. This works today, but will very soon stop working. I expect AI companies to be hit especially hard by this.</p><p>This is also true to some extent for storage costs, of course. Most of our storage technologies are starting to run out of steam; the NAND flash in your SSD scales the same as your CPU and will level off around the same time, RAM stopped scaling a decade ago and the <a href="https://en.wikipedia.org/wiki/3D_XPoint">only viable technology to replace it failed in the market</a>, and mechanical harddrives are closing in on theoretical limits of how much data can be stored per square inch of magnetic material. The only storage technology that isn't yet close to its theoretical limits would be tape drives, but unless companies decide to tell their customers to deal with 4-hour waiting times to access data not in a cache, or perhaps switch to a <a href="https://en.wikipedia.org/wiki/Blockbuster_(retailer)">crazy business model such as renting out tape drives</a>, the exponentially growing storage capacities of datacenters will soon become prohibitively expensive to maintain.</p><p>Chip companies also are going to have a hard time with Moore's Law slowing down, though I expect that to be a slower process. The past few decades has created an environment where real innovation has been discouraged by the market; any time you spend making a CPU with a more efficient architecture is time that you're not spending porting last year's architecture to run on smaller transistors. Throw in compilers that up until recently struggled to translate code to unusual architectures, as well as the fact that our modern notion of "large volumes of open source software freely available on the internet" is a relatively recent phenomena, and you have a strong incentive to stick to the status quo as opposed to innovate. Remove these factors and suddenly innovation into exotic architectures is incentivized again, and backwards-compatibility matters a lot less. We're alrady seeing this to a large extent with GPUs and AI accelerators, but I expect it will come for CPUs soon. There are ways of <a href="https://en.wikipedia.org/wiki/Very_long_instruction_word">making CPUs</a> <a href="https://www.adapteva.com/announcements/epiphany-v-a-1024-core-64-bit-risc-processor/">orders of magnitude more efficient</a>, even with tiny engineering teams.</p><p>Someone soon is going to build a CPU dramatically more powerful and more efficient than those that Intel, AMD or ARM produce. The biggest opportunities for this will involve exotic things like tiled architectures, which are still general-purpose but will necessitate rewriting a lot of code to optimally use the physical layout of data and compute on the chip. There are also other technical reasons why tiled architectures may completely change the way that context switches work, which could eliminate the factors that have caused operating systems to accumulate millions of lines of driver code, and making it possible again for even hobbyists to build new and competitive operating systems from scratch again. As these incompatible architectures grow in popularity, it's possible that many companies with large codebases designed around obsolete hardware will need to be at the very least heavily adapted, turning many large codebases from massive assets to massive liabilities.</p><p>Software certainly isn't going to collapse entirely, but I expect that the next decade or two will involve a lot of turmoil, downscaling, bursting bubbles, major bankruptcies, and new players. Many business models and even entire products and services that seem viable today may turn out to be unsustainable long-term, especially the companies that provide massive, resource-intensive services for free. Companies will likely have to get a lot more lean, and the exceptionally high wages for relatively little work will likely go pretty quick.</p><p></p><h3>Return to Atoms</h3><p>Earlier, I called the excessive focus on superconductors a coping mechanism. My reasoning behind this statement is that there are many promising technologies, including many at the intersection of computing and other forms of engineering, that may be very valuable. The real bottleneck preventing innovation outside of computing likely has very little to do with a lack of breakthroughs, but a lack of sufficient talent.</p><p>I&#8217;ll list a couple examples of technologies I expect have a lot of potential, though I expect there&#8217;s a lot more out there than I know of.</p><p></p><h4>Hyperspectral Imaging</h4><p>One technology I expect is going to play a major role in the future is hyperspectral imaging. The basic premise is that, by passing light through a prism or similar optical system, you can separate out the individual component frequencies that make up that light and get significantly higher color resolution. Rather than simply having red, green, and blue color channels, you instead distinguish between hundreds of different, narrower color channels.</p><p>You are effectively getting a full spectrogram for every pixel, which communicates a tremendous amount of information about the materials and chemistry going on in that pixel. Two different materials may look like identical shades of red to the human eye, but a hyperspectral camera may inform you that they are reflecting or emitting slightly different frequencies of red light, with these spectral acting like fingerprints that can identify these materials.</p><p>If there is any technology that could funnel some of the past few decades of innovation in bits into innovation in atoms again, this is something I&#8217;d consider a good candidate.</p><p>A lot of the existing work that is going into hyperspectral cameras often involves attaching them to drones. Flying the drone over a field of crops can tell you detailed information about the health of each plant (e.g., &#8220;these plants here have spots in this narrow frequency band that the human eye can&#8217;t tell apart from any other green light, that suggests they have a magnesium deficiency&#8221;), and flying them over earth can tell you of the minerals in the ground, enabling easier surveying for mining.</p><p>The technology is also used in the food industry to rapidly discern healthy from unhealthy produce; there may be color differences indistinguishable to the human eye that can indicate mold or insect infestations, allowing for machines to automatically filter out bad produce with high accuracy.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XhtJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f6ec71-cd73-4220-8e53-6e45c0913699_1024x819.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XhtJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f6ec71-cd73-4220-8e53-6e45c0913699_1024x819.png 424w, https://substackcdn.com/image/fetch/$s_!XhtJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f6ec71-cd73-4220-8e53-6e45c0913699_1024x819.png 848w, https://substackcdn.com/image/fetch/$s_!XhtJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f6ec71-cd73-4220-8e53-6e45c0913699_1024x819.png 1272w, https://substackcdn.com/image/fetch/$s_!XhtJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f6ec71-cd73-4220-8e53-6e45c0913699_1024x819.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XhtJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f6ec71-cd73-4220-8e53-6e45c0913699_1024x819.png" width="532" height="425.49609375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b5f6ec71-cd73-4220-8e53-6e45c0913699_1024x819.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1024,&quot;resizeWidth&quot;:532,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Hyperspectral - Robynne Heymans - Medium&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="Hyperspectral - Robynne Heymans - Medium" title="Hyperspectral - Robynne Heymans - Medium" srcset="https://substackcdn.com/image/fetch/$s_!XhtJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f6ec71-cd73-4220-8e53-6e45c0913699_1024x819.png 424w, https://substackcdn.com/image/fetch/$s_!XhtJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f6ec71-cd73-4220-8e53-6e45c0913699_1024x819.png 848w, https://substackcdn.com/image/fetch/$s_!XhtJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f6ec71-cd73-4220-8e53-6e45c0913699_1024x819.png 1272w, https://substackcdn.com/image/fetch/$s_!XhtJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f6ec71-cd73-4220-8e53-6e45c0913699_1024x819.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>Right now the biggest things that seem to be holding the technology back are software and cost. Software tools for analysis and compression of hyperspectral images are widely considered to be poor in quality, and it&#8217;s likely that some small teams of clever software engineers could push the field much further along.</p><p>In terms of cost, hyperspectral cameras are often tens of thousands of dollars. I have no idea why they are much more expensive than a phone camera; they&#8217;re little more than an ordinary camera behind a glass prism and some other simple optics. My best guess is that the market right now is too small to support companies without making large sums of money from individual sales. With a good marketing campaign to make people aware that the technology exists and what it&#8217;s capable of, I could definitely see a &#8220;Raspberry Pi of hyperspectral cameras&#8221; company being enormous and sparking a lot of innovation.</p><p></p><h4>Geometric Folding Algorithms</h4><p>The mathematics behind origami and similar folding-based techniques has seen a lot of attention and innovation in the past few decades. <a href="https://www.youtube.com/watch?v=MDcAOTaCXHs&amp;list=PLUl4u3cNGP62xuxL4CQpy8uo2MeM4a3YD">Algorithms for designing</a> and engineering complex machines based on such approaches have been developed, and these mechanisms seem to have a <a href="https://www.youtube.com/watch?v=Q6nQ0tbsVvw">lot of advantages</a>.</p><p>This is a space that sees a lot of research attention, and occasionally some attention from pop science, but hasn&#8217;t quite broken out into many applications yet.</p><p></p><h4>Auto Industry Business Models</h4><p>This is less of a material technology and more of a <a href="https://samoburja.com/social-technology/">social technology</a>, a matter of the people and ideas that surround and support a technology as opposed the physical gadget itself.</p><p>Software today seems to largely circle around a small range of business strategies that work well for internet and app companies, but work less well for others. There are a lot of VCs who are very familiar with such business strategies and likely more money available for your company if you use them compared to if you don&#8217;t, but that doesn&#8217;t mean that they&#8217;re a good fit everywhere.</p><p>For example, the strategy of &#8220;acquire lots of customers at a loss and figure out profitability later&#8220; can easily fail with physical products, especially if your &#8220;daily active users&#8221; <a href="https://www.youtube.com/watch?v=WcNbIm0fRxk">only make one purchase every few years</a>.</p><p></p><p>I find that the early car industry seemed full of creative business models and business tactics that seem well outside of the toolbox of modern entrepreneurs. After all, cars are a very difficult sell when road networks are minor and poorly maintained, streets are full of horseshoe nails that pop your tires, and where everything is built around the assumption that no one can travel very far in a day, and so there is no reason to travel far often.</p><p>Many early auto companies were vertically integrated to a degree not seen today. Valvoline did (and still does) everything from producing the various fluids that go into cars to running the service centers that actually put them in your car. Michelin famously created the entire modern restaurant industry just to sell tires, and even then that&#8217;s just the very tip of the icerberg when it comes to their tactics. <a href="https://www.amazon.com/Marketing-Michelin-Advertising-Cultural-Twentieth-Century/dp/0801866510/ref=sr_1_1?keywords=marketing+michelin&amp;qid=1690864659&amp;sprefix=marketing+michelin%2Caps%2C156&amp;sr=8-1">Entire books have been written about their tactics</a>, which involved everything from printing educational magazines to teach people how to properly install tires to funding and marketing pro-natalism organizations to prevent a long-term decline in the French economy.</p><p></p><p>If we want innovation outside of software again, we&#8217;re going to need to relearn how to run successful businesses that aren&#8217;t merely software companies, and that is a much deeper and more complex problem than most people realize.</p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/superconductors-and-such?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/p/superconductors-and-such?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p><p><em>Hey, it&#8217;s been a while since the last article. This was my primary income source for a few months between jobs, but early this year I started a new job doing some really exciting work. It&#8217;s not quite ready so I&#8217;ll refrain from making major announcements here yet, but I&#8217;m excited and things are going well.</em></p><p><em>The work I&#8217;m doing there is also generating some very fascinating new ideas that are likely to make it into some really great articles here.</em></p><p><em>That did start to take up an increasing amount of my time, and eventually the weekly publishing schedule here became unsustainable. I broke out of my regular rhythm of staying up later and later every Sunday night / Monday morning. I&#8217;ve had a number of articles I&#8217;ve been working on since then, but nothing I&#8217;ve gotten around to publishing.</em></p><p><em>I definitely plan on writing more here soon, though perhaps at a slower or less regular rate.</em></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>The holy grail of rocket engine design for decades has been the <a href="https://www.youtube.com/watch?v=LbH1ZDImaI8">full-flow staged combustion engine</a>; NASA attempted to build it and eventually gave up because it was too difficult. The Soviets built one, but never flew it. SpaceX has not only successfully built this impressive engine, but is mass-producing such engines now, with every one of the <a href="https://www.youtube.com/watch?v=_krgcofiM6M">39 engines on their Starship rocket</a> being this near-impossible holy grail design.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Some Thoughts on Future Programming Tools]]></title><description><![CDATA[Or, The Lure of Graphical Languages pt 2]]></description><link>https://bzolang.blog/p/some-thoughts-on-future-programming</link><guid isPermaLink="false">https://bzolang.blog/p/some-thoughts-on-future-programming</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Mon, 20 Mar 2023 14:30:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011297ee-a282-46ab-9645-b778f4987fbd_857x439.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>After my previous article, I received messages and emails from multiple people giving their responses and perspectives, so I think it&#8217;s worth elaborating a bit more, and going into a little more depth on the more positive and interesting ideas around the future of programming that I have.</p><p>This certainly won&#8217;t be an exhaustive list, mostly just elaborations on ideas adjacent to last week&#8217;s article on graphical programming. I won&#8217;t be covering AI tools here for example, that will be a separate article in the future.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:102193831,&quot;url&quot;:&quot;https://bzogrammer.substack.com/p/the-lure-of-graphical-programming&quot;,&quot;publication_id&quot;:248933,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;The Lure of Graphical Programming&quot;,&quot;truncated_body_text&quot;:&quot;Every so often some programmer somewhere enters a strange mood and begins working on what they perceive to be an utterly brilliant and perhaps even original idea - a programming language unconstrained by the oppressive limits of readable text, that instead takes on a more graphical form, usually with a bunch of colored boxes connected by lines, paired w&#8230;&quot;,&quot;date&quot;:&quot;2023-03-13T14:30:11.956Z&quot;,&quot;like_count&quot;:0,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;bio&quot;:&quot;Bzo Programming Language, Neuro, Econ, Complexity Theory, Algorithmic Dark Matter, etc.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-03-06T01:14:05.509Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:211506,&quot;user_id&quot;:17122116,&quot;publication_id&quot;:248933,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:248933,&quot;name&quot;:&quot;Bzogramming&quot;,&quot;subdomain&quot;:&quot;bzogrammer&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Applied, Theoretical Programming Language Design, with some neuroscience, complexity theory, and other influences. Sometimes other stuff.&quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:17122116,&quot;theme_var_background_pop&quot;:&quot;#6b26ff&quot;,&quot;created_at&quot;:&quot;2020-12-29T15:33:04.277Z&quot;,&quot;rss_website_url&quot;:null,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Charles Rosenbauer&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;}},{&quot;id&quot;:1444078,&quot;user_id&quot;:17122116,&quot;publication_id&quot;:1478017,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:1478017,&quot;name&quot;:&quot;Possibilia: memetic infrastructure for the future&quot;,&quot;subdomain&quot;:&quot;possibilia&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8944e88a-acb9-47bb-ba97-c977bd79aa0b_1280x1280.png&quot;,&quot;author_id&quot;:133450068,&quot;theme_var_background_pop&quot;:&quot;#786CFF&quot;,&quot;created_at&quot;:&quot;2023-03-08T21:33:09.904Z&quot;,&quot;rss_website_url&quot;:null,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Possibilia&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;}}],&quot;twitter_screen_name&quot;:&quot;bzogrammer&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;inviteAccepted&quot;:true}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:false,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://bzogrammer.substack.com/p/the-lure-of-graphical-programming?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Bzogramming</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">The Lure of Graphical Programming</div></div><div class="embedded-post-body">Every so often some programmer somewhere enters a strange mood and begins working on what they perceive to be an utterly brilliant and perhaps even original idea - a programming language unconstrained by the oppressive limits of readable text, that instead takes on a more graphical form, usually with a bunch of colored boxes connected by lines, paired w&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">3 years ago &#183; Charles Rosenbauer</div></a></div><p></p><h3>Some Legitimate Wins for Graphical Programming</h3><p>Graphical programming has seen some success in education. Part of that benefit seems to be from reducing the intimidation factor that text-based programming seems to have on non-programmers. I don&#8217;t find this advantage particularly interesting from a technical perspective, as it&#8217;s more of a cultural issue.</p><p>A more interesting case that graphical programming sometimes can handle well, especially as an educational tool, is short feedback loops and interactivity. If the visual aspect of the program is primarily focused more on the output rather than the code itself, that can be more useful.</p><p>One reader who reached out mentioned their fondness for the Logo language, though granted - Logo is a text-based language focused on generating graphics rather than a purely graphical language.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!P0YZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf29d13-1cdb-412a-9605-e33a06bcbec2_451x451.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P0YZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf29d13-1cdb-412a-9605-e33a06bcbec2_451x451.png 424w, https://substackcdn.com/image/fetch/$s_!P0YZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf29d13-1cdb-412a-9605-e33a06bcbec2_451x451.png 848w, https://substackcdn.com/image/fetch/$s_!P0YZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf29d13-1cdb-412a-9605-e33a06bcbec2_451x451.png 1272w, https://substackcdn.com/image/fetch/$s_!P0YZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf29d13-1cdb-412a-9605-e33a06bcbec2_451x451.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P0YZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf29d13-1cdb-412a-9605-e33a06bcbec2_451x451.png" width="451" height="451" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0bf29d13-1cdb-412a-9605-e33a06bcbec2_451x451.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:451,&quot;width&quot;:451,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;undefined&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="undefined" title="undefined" srcset="https://substackcdn.com/image/fetch/$s_!P0YZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf29d13-1cdb-412a-9605-e33a06bcbec2_451x451.png 424w, https://substackcdn.com/image/fetch/$s_!P0YZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf29d13-1cdb-412a-9605-e33a06bcbec2_451x451.png 848w, https://substackcdn.com/image/fetch/$s_!P0YZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf29d13-1cdb-412a-9605-e33a06bcbec2_451x451.png 1272w, https://substackcdn.com/image/fetch/$s_!P0YZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf29d13-1cdb-412a-9605-e33a06bcbec2_451x451.png 1456w" sizes="100vw" fetchpriority="high"></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">an image generated in Logo</figcaption></figure></div><p></p><p>Some game engines have also been using graphical scripting and shader languages. These also seem to be reasonably successful, though note that they are a much more constrained situation than normal programming languages.</p><p>Making your programming language a bunch of boxes and lines works better for simple shader functions meant to be written primarily by artists rather than a full programming language. The limited size prevents such graphical code from becoming an incomprehensible hairball.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1NrB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F652ae91d-8cf3-4ff7-bdd9-95c14b5ad7ce_1918x1079.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1NrB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F652ae91d-8cf3-4ff7-bdd9-95c14b5ad7ce_1918x1079.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1NrB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F652ae91d-8cf3-4ff7-bdd9-95c14b5ad7ce_1918x1079.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1NrB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F652ae91d-8cf3-4ff7-bdd9-95c14b5ad7ce_1918x1079.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1NrB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F652ae91d-8cf3-4ff7-bdd9-95c14b5ad7ce_1918x1079.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1NrB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F652ae91d-8cf3-4ff7-bdd9-95c14b5ad7ce_1918x1079.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/652ae91d-8cf3-4ff7-bdd9-95c14b5ad7ce_1918x1079.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;How to Make a Game App - Create a smartphone game today!&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="How to Make a Game App - Create a smartphone game today!" title="How to Make a Game App - Create a smartphone game today!" srcset="https://substackcdn.com/image/fetch/$s_!1NrB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F652ae91d-8cf3-4ff7-bdd9-95c14b5ad7ce_1918x1079.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1NrB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F652ae91d-8cf3-4ff7-bdd9-95c14b5ad7ce_1918x1079.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1NrB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F652ae91d-8cf3-4ff7-bdd9-95c14b5ad7ce_1918x1079.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1NrB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F652ae91d-8cf3-4ff7-bdd9-95c14b5ad7ce_1918x1079.jpeg 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;Blueprints&#8221; from the Unreal game engine</figcaption></figure></div><p></p><p></p><h3>Interactivity</h3><p>Logo and perhaps some similar languages clearly get the interactivity part correct - getting more feedback from programs is definitely something that deserves a lot more engineering attention.</p><p>Some interactivity already exists in programming languages, and has for a long time. REPLs have been a common feature in many functional languages for decades, though unfortunately they don&#8217;t scale well to large programs.</p><p>There has been some discussion in the past few years, popularized by people like Bret Victor, of more advanced alternatives to REPLs. Victor&#8217;s specific idea is print out the contents of variables while code is being written in a special interactive window.</p><div id="youtube2-8QiPFmIMxFc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;8QiPFmIMxFc&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/8QiPFmIMxFc?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>This definitely seems like it would be useful for some simple applications. Bret&#8217;s demo here shows it detecting a lot of low-hanging fruit while he writes his demo code.</p><p>One critique I&#8217;ll give of this idea is that it doesn&#8217;t clearly scale well beyond printing numbers and small strings, and the mechanisms Victor shows for dealing with loops probably won&#8217;t scale well past a few iterations.</p><p>Granted, similar ideas to this are used pretty regularly in notebook systems like Mathematica and <a href="https://en.wikipedia.org/wiki/Project_Jupyter">Jupyter</a>. Those systems are clearly much more successful and have been around much longer than Victor&#8217;s version - the meaningful difference is that notebooks only print the data you specifically request to be printed, and offer proper visualization tools for many common types of data (though probably are trickier to use if you have your own custom data structures). Victor&#8217;s version, which tries to print everything, is trying to cover many hard cases that notebooks choose not to cover, and doesn&#8217;t have many clear ideas about how to scale to the needs of these harder cases.</p><p>Victor also has some other ideas with flashier visualizations and interactive tools, though I&#8217;m not convinced any of them really generalize well. Maybe you can have a nice tool for visualizing circuit properties or animating simple videos like he shows in that demo. I haven&#8217;t seen any ideas from him however that seem all that useful for more general code.</p><p></p><h3>Galois Emulation?</h3><p>All of these interactive emulation systems share a common limitation; while they&#8217;re great for rapidly debugging the behavior of a program on typical inputs, many bugs are the result of rare inputs that break code in unexpected ways. These rare inputs can be exceptionally difficult to find - mathematically speaking, doing so is NP-complete (or even undecideable when loops are involved).</p><p>For reference, NP-complete means it&#8217;s at least as hard as breaking cryptography in the worst case. In fact, if you write code designed to break when the correct key is passed into a cryptographic function and then ask when it breaks, by definition you have a debugging problem that is as hard as breaking that cryptographic algorithm.</p><p>If there are loops involved, <a href="https://en.wikipedia.org/wiki/Collatz_conjecture#Undecidable_generalizations">especially particularly tricky ones</a>, then it&#8217;s of course much harder than cryptography and may in fact be impossible to solve.</p><p></p><p>While this all may seem like very good reasons why such limitations must exist in our tools, the reality is of course that NP problems are some of the most bizarre things in modern mathematics, with behavior in practice that is extremely different from their behavior in theory.</p><p>Most code is meant to actually be understood by humans, and that property results alone in a lot of seemingly insurmountable problems actually being easy in practice with the right approach.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:84077564,&quot;url&quot;:&quot;https://bzogrammer.substack.com/p/the-most-profound-problem-in-mathematics&quot;,&quot;publication_id&quot;:248933,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;The Most Profound Problem in Mathematics&quot;,&quot;truncated_body_text&quot;:&quot;About 2300 years ago, the Greek mathematician Euclid published his book The Elements, which has since become one of the most influential books in all of mathematics, if not the world. It is estimated to be second to only the Bible in terms of the number of printed editions since the invention of the printing press.&quot;,&quot;date&quot;:&quot;2022-11-15T15:30:02.057Z&quot;,&quot;like_count&quot;:7,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;bio&quot;:&quot;Bzo Programming Language, Neuro, Econ, Complexity Theory, Algorithmic Dark Matter, etc.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-03-06T01:14:05.509Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:211506,&quot;user_id&quot;:17122116,&quot;publication_id&quot;:248933,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:248933,&quot;name&quot;:&quot;Bzogramming&quot;,&quot;subdomain&quot;:&quot;bzogrammer&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Applied, Theoretical Programming Language Design, with some neuroscience, complexity theory, and other influences. Sometimes other stuff.&quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:17122116,&quot;theme_var_background_pop&quot;:&quot;#6b26ff&quot;,&quot;created_at&quot;:&quot;2020-12-29T15:33:04.277Z&quot;,&quot;rss_website_url&quot;:null,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Charles Rosenbauer&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;}},{&quot;id&quot;:1444078,&quot;user_id&quot;:17122116,&quot;publication_id&quot;:1478017,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:1478017,&quot;name&quot;:&quot;Possibilia: memetic infrastructure for the future&quot;,&quot;subdomain&quot;:&quot;possibilia&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8944e88a-acb9-47bb-ba97-c977bd79aa0b_1280x1280.png&quot;,&quot;author_id&quot;:133450068,&quot;theme_var_background_pop&quot;:&quot;#786CFF&quot;,&quot;created_at&quot;:&quot;2023-03-08T21:33:09.904Z&quot;,&quot;rss_website_url&quot;:null,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Possibilia&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;}}],&quot;twitter_screen_name&quot;:&quot;bzogrammer&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;inviteAccepted&quot;:true}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://bzogrammer.substack.com/p/the-most-profound-problem-in-mathematics?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Bzogramming</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">The Most Profound Problem in Mathematics</div></div><div class="embedded-post-body">About 2300 years ago, the Greek mathematician Euclid published his book The Elements, which has since become one of the most influential books in all of mathematics, if not the world. It is estimated to be second to only the Bible in terms of the number of printed editions since the invention of the printing press&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">3 years ago &#183; 7 likes &#183; Charles Rosenbauer</div></a></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2EdH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011297ee-a282-46ab-9645-b778f4987fbd_857x439.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2EdH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011297ee-a282-46ab-9645-b778f4987fbd_857x439.png 424w, https://substackcdn.com/image/fetch/$s_!2EdH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011297ee-a282-46ab-9645-b778f4987fbd_857x439.png 848w, https://substackcdn.com/image/fetch/$s_!2EdH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011297ee-a282-46ab-9645-b778f4987fbd_857x439.png 1272w, https://substackcdn.com/image/fetch/$s_!2EdH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011297ee-a282-46ab-9645-b778f4987fbd_857x439.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2EdH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011297ee-a282-46ab-9645-b778f4987fbd_857x439.png" width="857" height="439" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/011297ee-a282-46ab-9645-b778f4987fbd_857x439.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:439,&quot;width&quot;:857,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:22199,&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_!2EdH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011297ee-a282-46ab-9645-b778f4987fbd_857x439.png 424w, https://substackcdn.com/image/fetch/$s_!2EdH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011297ee-a282-46ab-9645-b778f4987fbd_857x439.png 848w, https://substackcdn.com/image/fetch/$s_!2EdH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011297ee-a282-46ab-9645-b778f4987fbd_857x439.png 1272w, https://substackcdn.com/image/fetch/$s_!2EdH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F011297ee-a282-46ab-9645-b778f4987fbd_857x439.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">My SAT solver also makes nice visualizations - this is a graph of how much time it spends guessing on specific variables within a 64-bit random SAT problem with 233 clauses.</figcaption></figure></div><p>I actually just wrote a SAT solver a couple weeks ago, SAT solvers being one of the kinds of tools available for solving these kinds of hard problems. It&#8217;s not even a very efficient solver (there&#8217;s no unit propagation or <a href="https://en.wikipedia.org/wiki/Conflict-driven_clause_learning">CDCL</a>, though I have some plans for more novel optimizations), and yet it&#8217;s able to solve many 64-bit random SAT problems within a few seconds while running on a single core on my laptop.</p><p>Put another way, it&#8217;s sifting through a search space with 1.84*10^19 values and reliably finding a needle-in-a-haystack solution in only a few billion (10^9) CPU instructions. This is somewhere on the order of <em>10 billion times faster</em> than brute force, while still technically being a &#8220;random guessing&#8221; algorithm. Making SAT solvers faster is just about learning about the problem as you go to make smarter guesses.</p><p>I&#8217;m specifically running this on random SAT instances with a clause count chosen specifically to maximize difficulty. Random SAT tends to be much more difficult than many &#8220;real-world&#8221; SAT problems.</p><p></p><p>SAT solvers (and other exponential-time algorithms in general) are one of those fun cases where you can make claims like &#8220;<em>this optimization made my code a billion times faster</em>&#8221; and not be exaggerating.</p><p></p><p>In practice, SAT solvers can be a bit too precise for many common code correctness problems. Converting code into something they can reason about usually encoding every individual logic gate and wire necessary to implement the function in circuitry, and they focus on every minute, low-level detail.</p><p><a href="https://en.wikipedia.org/wiki/Satisfiability_modulo_theories">SMT solvers</a> are another tool available, which basically amount to a toolbox of higher-level logic tools that can more efficiently solve many problems, with the option to fall back on a standard SAT solver in the case they aren&#8217;t sufficient.</p><p>Another tool, particularly well-suited for looping code, is <a href="https://en.wikipedia.org/wiki/Abstract_interpretation">Abstract Interpretation</a>.</p><p>In both SMT solvers and Abstract Interpreters, there is a common tool used to approximate large possibility spaces called a <a href="https://en.wikipedia.org/wiki/Galois_connection">Galois Connection</a>. Galois connections can be thought of as a tool for translating between a high-resolution and a low-resolution model of a problem, or even between different low-resolution models that invest their resolution differently. They are an extremely powerful tool for making many hard problems tractable.</p><p></p><p>They also however are based on a type of mathematical structure called a lattice, which as I&#8217;ve pointed out before are actually mathematically almost identical to topological spaces, strongly implying there might be a way of meaningfully visualizing them.</p><p>So imagine if instead of the Bret Victor approach of visualizing a single set of inputs flowing through your function, you could visualize a representation of all possible paths at once? This seems like it should be possible, and most of these Galois connections are not as complex as they may sound from my description here.</p><p>I&#8217;m not quite sure what this looks like yet, but the math at least looks promising.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:69946245,&quot;url&quot;:&quot;https://bzogrammer.substack.com/p/the-lattice-topology-correspondence&quot;,&quot;publication_id&quot;:248933,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;The Lattice-Topology Correspondence&quot;,&quot;truncated_body_text&quot;:&quot;I've talked before about the potential for making theoretical computer science more closely resemble geometry. Here, I'd like to deliver on that with some actual motivating examples. I&#8217;d like to start by pointing out an odd mathematical coincidence, then move into sketching out an intuition for the two different sides of this coincedence. This won&#8217;t be&quot;,&quot;date&quot;:&quot;2022-10-03T04:53:27.443Z&quot;,&quot;like_count&quot;:3,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;bio&quot;:&quot;Bzo Programming Language, Neuro, Econ, Complexity Theory, Algorithmic Dark Matter, etc.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-03-06T01:14:05.509Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:211506,&quot;user_id&quot;:17122116,&quot;publication_id&quot;:248933,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:248933,&quot;name&quot;:&quot;Bzogramming&quot;,&quot;subdomain&quot;:&quot;bzogrammer&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Applied, Theoretical Programming Language Design, with some neuroscience, complexity theory, and other influences. Sometimes other stuff.&quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:17122116,&quot;theme_var_background_pop&quot;:&quot;#6b26ff&quot;,&quot;created_at&quot;:&quot;2020-12-29T15:33:04.277Z&quot;,&quot;rss_website_url&quot;:null,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Charles Rosenbauer&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;}},{&quot;id&quot;:1444078,&quot;user_id&quot;:17122116,&quot;publication_id&quot;:1478017,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:1478017,&quot;name&quot;:&quot;Possibilia: memetic infrastructure for the future&quot;,&quot;subdomain&quot;:&quot;possibilia&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8944e88a-acb9-47bb-ba97-c977bd79aa0b_1280x1280.png&quot;,&quot;author_id&quot;:133450068,&quot;theme_var_background_pop&quot;:&quot;#786CFF&quot;,&quot;created_at&quot;:&quot;2023-03-08T21:33:09.904Z&quot;,&quot;rss_website_url&quot;:null,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Possibilia&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;}}],&quot;twitter_screen_name&quot;:&quot;bzogrammer&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;inviteAccepted&quot;:true}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://bzogrammer.substack.com/p/the-lattice-topology-correspondence?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Bzogramming</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">The Lattice-Topology Correspondence</div></div><div class="embedded-post-body">I've talked before about the potential for making theoretical computer science more closely resemble geometry. Here, I'd like to deliver on that with some actual motivating examples. I&#8217;d like to start by pointing out an odd mathematical coincidence, then move into sketching out an intuition for the two different sides of this coincedence. This won&#8217;t be&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">4 years ago &#183; 3 likes &#183; Charles Rosenbauer</div></a></div><p>I do plan to write an article on Galois connections at some point - luckily some of my work on <a href="https://bzogrammer.substack.com/p/the-bzo-programming-language">Bzo</a> right now involves writing my own SMT solver, and while it&#8217;s still pretty early in development I think I&#8217;ll have a lot of interesting stuff to say in a couple months.</p><p>Searching &#8220;How to write an SMT solver&#8221; tends to give few helpful results beyond &#8220;you should never write your own SMT solver, it&#8217;s too hard, just use Z3&#8221;, so I figure I might be able to write a few authoritative articles on the subject.</p><p></p><h3>Non-Textual Programming Paradigms</h3><p></p><p>I&#8217;ve written before about non-textual programming, mostly in the context of exploring approaches to programming that are not well-suited for a text-based medium in the first place.</p><p>If you want to edit an image, you open it up in a program like photoshop, not a text editor. Not that it&#8217;s not possible to edit images in a text editor, but images are very poorly-suited for human-legible text representations.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:89321870,&quot;url&quot;:&quot;https://bzogrammer.substack.com/p/the-limitations-of-textual-programming&quot;,&quot;publication_id&quot;:248933,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;The Limitations of Textual Programming&quot;,&quot;truncated_body_text&quot;:&quot;Good books often don&#8217;t translate well into good films, and vice-versa. When a good book is made into a good film, it&#8217;s often the result of radical adaptations. Each artistic media is itself a language, and the concepts that are most natural to communicate in text don&#8217;t line up well with those that are most natural to convey with moving images.&quot;,&quot;date&quot;:&quot;2022-12-19T15:30:13.434Z&quot;,&quot;like_count&quot;:2,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;bio&quot;:&quot;Bzo Programming Language, Neuro, Econ, Complexity Theory, Algorithmic Dark Matter, etc.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-03-06T01:14:05.509Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:211506,&quot;user_id&quot;:17122116,&quot;publication_id&quot;:248933,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:248933,&quot;name&quot;:&quot;Bzogramming&quot;,&quot;subdomain&quot;:&quot;bzogrammer&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Applied, Theoretical Programming Language Design, with some neuroscience, complexity theory, and other influences. Sometimes other stuff.&quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:17122116,&quot;theme_var_background_pop&quot;:&quot;#6b26ff&quot;,&quot;created_at&quot;:&quot;2020-12-29T15:33:04.277Z&quot;,&quot;rss_website_url&quot;:null,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Charles Rosenbauer&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;}},{&quot;id&quot;:1444078,&quot;user_id&quot;:17122116,&quot;publication_id&quot;:1478017,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:1478017,&quot;name&quot;:&quot;Possibilia: memetic infrastructure for the future&quot;,&quot;subdomain&quot;:&quot;possibilia&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8944e88a-acb9-47bb-ba97-c977bd79aa0b_1280x1280.png&quot;,&quot;author_id&quot;:133450068,&quot;theme_var_background_pop&quot;:&quot;#786CFF&quot;,&quot;created_at&quot;:&quot;2023-03-08T21:33:09.904Z&quot;,&quot;rss_website_url&quot;:null,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Possibilia&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;}}],&quot;twitter_screen_name&quot;:&quot;bzogrammer&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;inviteAccepted&quot;:true}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://bzogrammer.substack.com/p/the-limitations-of-textual-programming?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Bzogramming</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">The Limitations of Textual Programming</div></div><div class="embedded-post-body">Good books often don&#8217;t translate well into good films, and vice-versa. When a good book is made into a good film, it&#8217;s often the result of radical adaptations. Each artistic media is itself a language, and the concepts that are most natural to communicate in text don&#8217;t line up well with those that are most natural to convey with moving images&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">3 years ago &#183; 2 likes &#183; Charles Rosenbauer</div></a></div><p>There are a lot of cool ideas in theoretical neuroscience, with plenty of unique and desirable properties that effectively come for free with the paradigm. It would be great to be able to engineer such systems, but that's a paradigm where the primitives are basically overlapping spheres in 1000+ dimensional sparse bitvector spaces. It's hard to imagine how to make that legible in a text format, but it's at least easier to imagine a more graphical approach being viable, albeit with the need for some creative ideas first.</p><p>Machine learning is arguably in a similar situation, where most of what actually defines an ML model is a giant collection of data files and only a tiny amount of text-based code. Under the hood, neural networks are <a href="https://distill.pub/">incredibly geometric systems</a>. In the long term, engineering with them (especially if we want to do so in a way that makes safety guarantees about their behavior) might require some more geometric interfaces.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:86735931,&quot;url&quot;:&quot;https://bzogrammer.substack.com/p/neural-computing-pt-2-sparse-bit&quot;,&quot;publication_id&quot;:248933,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;Neural Computing pt 2: Sparse Distributed Representations&quot;,&quot;truncated_body_text&quot;:&quot;Hierarchical Temporal Memory (HTM) is a theory of the brain that I find fascinating. Other attempts to model or explain the brain often lack detail, or attempt to force square pegs like well-understood mechanisms (backpropagation, etc.) into the round holes of biology, making ridiculous claims about undiscovered and completely implausible mechanisms whil&#8230;&quot;,&quot;date&quot;:&quot;2022-12-06T15:34:57.891Z&quot;,&quot;like_count&quot;:4,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;bio&quot;:&quot;Bzo Programming Language, Neuro, Econ, Complexity Theory, Algorithmic Dark Matter, etc.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-03-06T01:14:05.509Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:211506,&quot;user_id&quot;:17122116,&quot;publication_id&quot;:248933,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:248933,&quot;name&quot;:&quot;Bzogramming&quot;,&quot;subdomain&quot;:&quot;bzogrammer&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Applied, Theoretical Programming Language Design, with some neuroscience, complexity theory, and other influences. Sometimes other stuff.&quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:17122116,&quot;theme_var_background_pop&quot;:&quot;#6b26ff&quot;,&quot;created_at&quot;:&quot;2020-12-29T15:33:04.277Z&quot;,&quot;rss_website_url&quot;:null,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Charles Rosenbauer&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;}},{&quot;id&quot;:1444078,&quot;user_id&quot;:17122116,&quot;publication_id&quot;:1478017,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:1478017,&quot;name&quot;:&quot;Possibilia: memetic infrastructure for the future&quot;,&quot;subdomain&quot;:&quot;possibilia&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8944e88a-acb9-47bb-ba97-c977bd79aa0b_1280x1280.png&quot;,&quot;author_id&quot;:133450068,&quot;theme_var_background_pop&quot;:&quot;#786CFF&quot;,&quot;created_at&quot;:&quot;2023-03-08T21:33:09.904Z&quot;,&quot;rss_website_url&quot;:null,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Possibilia&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;}}],&quot;twitter_screen_name&quot;:&quot;bzogrammer&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;inviteAccepted&quot;:true}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://bzogrammer.substack.com/p/neural-computing-pt-2-sparse-bit?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Bzogramming</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Neural Computing pt 2: Sparse Distributed Representations</div></div><div class="embedded-post-body">Hierarchical Temporal Memory (HTM) is a theory of the brain that I find fascinating. Other attempts to model or explain the brain often lack detail, or attempt to force square pegs like well-understood mechanisms (backpropagation, etc.) into the round holes of biology, making ridiculous claims about undiscovered and completely implausible mechanisms whil&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">3 years ago &#183; 4 likes &#183; Charles Rosenbauer</div></a></div><p></p><h3>Foveal Optimization</h3><p>I often find that my most interesting ideas in my articles are not always explained as well as I&#8217;d like, and I usually find much better ways of explaining things in the days after I publish an article.</p><p>In my <a href="https://bzogrammer.substack.com/p/the-lure-of-graphical-programming">last article</a>, I tried to discuss an idea about how our modern understanding of software interfaces seems deeply ignorant of how the human visual system works and how to interface with it effectively, as well as that things like syntax highlighting and code indentation are in fact a few of the kinds of things we should be doing more of that have somehow made their way into common practice. I had a friend reach out with some questions, not fully getting my point.</p><p>I&#8217;ll end tonight&#8217;s article with a quote from the conversation that seemed to clarify it pretty well for him:</p><blockquote><p>Maybe another way of putting my point about graphical programming is that part of the problem is that you're trying to optimize for how quickly the eye can access the information it needs. The only part of your eye that can read text on your screen (assuming you don't have a gigantic font) is the <a href="https://en.wikipedia.org/wiki/Fovea_centralis">fovea</a>, which only can look at a tiny portion of it at a time. So the real problem isn't just dumping a bunch of text to the screen, but making the data legible to the low-resolution peripheral vision to minimize the amount of <a href="https://en.wikipedia.org/wiki/Saccade">saccades</a> to locate important information.<br><br>If you could blur the screen so that the text is all unreadable and still be able to quickly and reliably guess what's a loop, what's an if/else or switch statement, where each block of code starts/ends, where the loop header/branch condition is, etc., you're going to have much more readable code than if you don't have that.<br><br>That's what indentation and syntax highlighting are ACTUALLY doing.<br><br>And part of my point is that we could probably push things much further in that direction, using other tricks like leading lines to make it even more efficient to navigate code, as well as finding ways to recognize structure on even larger and more zoomed-out scales.</p></blockquote><div><hr></div><p><em>I definitely appreciate feedback on my articles, though don&#8217;t always get much, so getting multiple people reaching out after this last one with lengthy responses really caught me off guard. Thanks. I think I&#8217;ll remove the paid-subscribers-only requirement for the comments on my articles. That means more feedback for me, and makes it easier for me to clarify anything I don&#8217;t fully get across the first time.</em></p><p><em>Thank you for reading!</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzogrammer.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Bzogramming&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzogrammer.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Bzogramming</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/some-thoughts-on-future-programming/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://bzolang.blog/p/some-thoughts-on-future-programming/comments"><span>Leave a comment</span></a></p>]]></content:encoded></item><item><title><![CDATA[The Lure of Graphical Programming]]></title><description><![CDATA[Every so often some programmer somewhere enters a strange mood and begins working on what they perceive to be an utterly brilliant and perhaps even original idea - a programming language unconstrained by the oppressive limits of readable text, that instead takes on a more graphical form, usually with a bunch of colored boxes connected by lines, paired with a drag-n-drop UI.]]></description><link>https://bzolang.blog/p/the-lure-of-graphical-programming</link><guid isPermaLink="false">https://bzolang.blog/p/the-lure-of-graphical-programming</guid><dc:creator><![CDATA[Charles Rosenbauer]]></dc:creator><pubDate>Mon, 13 Mar 2023 14:30:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1VAJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9682a7f1-7080-4b0d-a210-e1c1b6984f0d_855x477.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every so often some programmer somewhere enters a <a href="https://dwarffortresswiki.org/index.php/Strange_mood">strange mood</a> and begins working on what they perceive to be an utterly brilliant and perhaps even <em>original</em> idea - a programming language unconstrained by the oppressive limits of readable text, that instead takes on a more graphical form, usually with a bunch of colored boxes connected by lines, paired with a drag-n-drop UI.</p><p>Usually it is claimed or at least implied that this will make code much easier to understand, perhaps to amateurs and non-programmers who might be intimidated by text-based coding, but anyone who tries to use these inevitably just develops a giant, messy hairball of a program that is the exact opposite of &#8220;easier to understand&#8221;.</p><p>Of course, one often-toted &#8220;definition of stupidity&#8221; is &#8220;doing the same thing repeatedly and expecting different results&#8221;. This, and similar ideas, have been tried <a href="https://en.wikipedia.org/wiki/Visual_programming_language">many</a> times, and have yet to catch on as any serious, common engineering tool.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1VAJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9682a7f1-7080-4b0d-a210-e1c1b6984f0d_855x477.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1VAJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9682a7f1-7080-4b0d-a210-e1c1b6984f0d_855x477.png 424w, https://substackcdn.com/image/fetch/$s_!1VAJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9682a7f1-7080-4b0d-a210-e1c1b6984f0d_855x477.png 848w, https://substackcdn.com/image/fetch/$s_!1VAJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9682a7f1-7080-4b0d-a210-e1c1b6984f0d_855x477.png 1272w, https://substackcdn.com/image/fetch/$s_!1VAJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9682a7f1-7080-4b0d-a210-e1c1b6984f0d_855x477.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1VAJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9682a7f1-7080-4b0d-a210-e1c1b6984f0d_855x477.png" width="855" height="477" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9682a7f1-7080-4b0d-a210-e1c1b6984f0d_855x477.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:477,&quot;width&quot;:855,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:346515,&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_!1VAJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9682a7f1-7080-4b0d-a210-e1c1b6984f0d_855x477.png 424w, https://substackcdn.com/image/fetch/$s_!1VAJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9682a7f1-7080-4b0d-a210-e1c1b6984f0d_855x477.png 848w, https://substackcdn.com/image/fetch/$s_!1VAJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9682a7f1-7080-4b0d-a210-e1c1b6984f0d_855x477.png 1272w, https://substackcdn.com/image/fetch/$s_!1VAJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9682a7f1-7080-4b0d-a210-e1c1b6984f0d_855x477.png 1456w" sizes="100vw" fetchpriority="high"></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">LabVIEW, an example of a graphical programming language. I remember in high school when our rookie FIRST robotics team was encouraged to use it. Everyone who used it hated it and the team switched to using Java the following year.</figcaption></figure></div><p>Are there some that have found niche success? Sure. But if they were really all that revolutionary or superior to text-based programming they would have become dominant a long time ago - LabVIEW is only a year younger than C++.</p><p></p><h3>Composition, Programming the Visual Cortex</h3><p>There is a certain allure to the idea of graphical programming. At the very least, there seems to be an intuitive sense among people that it&#8217;s better in some way, even if it&#8217;s difficult to elucidate why.</p><p></p><p>Contrary to how many programmers often seem to think of it, the human visual system is not merely a camera with a grid of pixels. The majority of the eye&#8217;s &#8220;pixels&#8221; are focused in a tiny, very-high-resolution region called the fovea at the center of the visual field. This is sorrounded by low-resolution peripheral vision filling the rest of the visual field.</p><p>Human vision works very differently from how, say, deep neural networks accomplish similar tasks. The visual cortex invests most of its resources into categorizing little pieces of images at a time, and uses the peripheral vision as a mix of low-resolution categorization and as a tool for guiding saccades, which are tiny, rapid eye movements to scan the fovea to different points of interest.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:89528965,&quot;url&quot;:&quot;https://bzogrammer.substack.com/p/some-thoughts-on-neuralink&quot;,&quot;publication_id&quot;:248933,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;Some Thoughts on Neuralink&quot;,&quot;truncated_body_text&quot;:&quot;I&#8217;ve been meaning to write an article closely inspecting Neuralink and its technology for a while. After their new presentation (video embed below if you have a couple hours to spare) a few weeks ago, this seems like a good time for a detailed essay.&quot;,&quot;date&quot;:&quot;2022-12-26T16:31:36.521Z&quot;,&quot;like_count&quot;:3,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;bio&quot;:&quot;Bzo Programming Language, Neuro, Econ, Complexity Theory, Algorithmic Dark Matter, etc.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-03-06T01:14:05.509Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:211506,&quot;user_id&quot;:17122116,&quot;publication_id&quot;:248933,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:248933,&quot;name&quot;:&quot;Bzogramming&quot;,&quot;subdomain&quot;:&quot;bzogrammer&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Applied, Theoretical Programming Language Design, with some neuroscience, complexity theory, and other influences. Sometimes other stuff.&quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:17122116,&quot;theme_var_background_pop&quot;:&quot;#6b26ff&quot;,&quot;created_at&quot;:&quot;2020-12-29T15:33:04.277Z&quot;,&quot;rss_website_url&quot;:null,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Charles Rosenbauer&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;}},{&quot;id&quot;:1444078,&quot;user_id&quot;:17122116,&quot;publication_id&quot;:1478017,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:1478017,&quot;name&quot;:&quot;Possibilia: memetic infrastructure for the future&quot;,&quot;subdomain&quot;:&quot;possibilia&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8944e88a-acb9-47bb-ba97-c977bd79aa0b_1280x1280.png&quot;,&quot;author_id&quot;:133450068,&quot;theme_var_background_pop&quot;:&quot;#786CFF&quot;,&quot;created_at&quot;:&quot;2023-03-08T21:33:09.904Z&quot;,&quot;rss_website_url&quot;:null,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Possibilia&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;}}],&quot;twitter_screen_name&quot;:&quot;bzogrammer&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;inviteAccepted&quot;:true}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://bzogrammer.substack.com/p/some-thoughts-on-neuralink?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Bzogramming</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Some Thoughts on Neuralink</div></div><div class="embedded-post-body">I&#8217;ve been meaning to write an article closely inspecting Neuralink and its technology for a while. After their new presentation (video embed below if you have a couple hours to spare) a few weeks ago, this seems like a good time for a detailed essay&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">3 years ago &#183; 3 likes &#183; Charles Rosenbauer</div></a></div><p>The effect is that vision is not about big grids of pixels, symbols, and details, but rather many little grids arranged in space, read as they are demanded.</p><p>This actually makes human vision an incredibly interactive system - the eye focuses on what it needs to, and can locate and scan different parts of objects based on what is currently relevant or reduces the most ambiguity.</p><p></p><p>There are many ways to convey meaning in the <a href="https://en.wikipedia.org/wiki/Composition_(visual_arts)">composition</a> or arrangement of details across space within an image. The visual arts have been exploring these ideas for a very long time. Things like the &#8220;rule of thirds&#8221;, various methods of arranging shapes, textures, empty space, and colors, and the introduction of leading lines have been well-understood for centuries.</p><p>I find leading lines particularly interesting, as the eye will often latch onto and follow them, settling wherever they lead - putting the most important details of an image in locations where many lines or curves converge is very effective in conveying meaning and making an image easy to intuitively understand.</p><p></p><p>I like to think of it as the visual system having a certain kind of algorithm for navigating scenes, and tools like composition are essentially a visual tool for &#8220;programming&#8221; it to produce meaning.</p><p>These are powerful, thoroughly-tested tools for conveying meaning to the human visual system. Unfortunately, modern programming makes extremely little use of them.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:73805157,&quot;url&quot;:&quot;https://bzogrammer.substack.com/p/cursive-in-the-digital-age&quot;,&quot;publication_id&quot;:248933,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;Cursive in the Digital Age&quot;,&quot;truncated_body_text&quot;:&quot;I've had multiple conversations in recent months where people across generations (including zoomers) have lamented the fact that cursive is no longer taught in schools. That cursive is a valuable part of our culture that we're losing. They repeatedly cited stylistic analysis for forgery detection as a laudable use, as well as the authority of a signature&#8230;&quot;,&quot;date&quot;:&quot;2022-09-18T09:50:42.875Z&quot;,&quot;like_count&quot;:5,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;bio&quot;:&quot;Bzo Programming Language, Neuro, Econ, Complexity Theory, Algorithmic Dark Matter, etc.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-03-06T01:14:05.509Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:211506,&quot;user_id&quot;:17122116,&quot;publication_id&quot;:248933,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:248933,&quot;name&quot;:&quot;Bzogramming&quot;,&quot;subdomain&quot;:&quot;bzogrammer&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Applied, Theoretical Programming Language Design, with some neuroscience, complexity theory, and other influences. Sometimes other stuff.&quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:17122116,&quot;theme_var_background_pop&quot;:&quot;#6b26ff&quot;,&quot;created_at&quot;:&quot;2020-12-29T15:33:04.277Z&quot;,&quot;rss_website_url&quot;:null,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Charles Rosenbauer&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;}},{&quot;id&quot;:1444078,&quot;user_id&quot;:17122116,&quot;publication_id&quot;:1478017,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:1478017,&quot;name&quot;:&quot;Possibilia: memetic infrastructure for the future&quot;,&quot;subdomain&quot;:&quot;possibilia&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8944e88a-acb9-47bb-ba97-c977bd79aa0b_1280x1280.png&quot;,&quot;author_id&quot;:133450068,&quot;theme_var_background_pop&quot;:&quot;#786CFF&quot;,&quot;created_at&quot;:&quot;2023-03-08T21:33:09.904Z&quot;,&quot;rss_website_url&quot;:null,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Possibilia&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;}}],&quot;twitter_screen_name&quot;:&quot;bzogrammer&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;inviteAccepted&quot;:true}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://bzogrammer.substack.com/p/cursive-in-the-digital-age?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Bzogramming</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Cursive in the Digital Age</div></div><div class="embedded-post-body">I've had multiple conversations in recent months where people across generations (including zoomers) have lamented the fact that cursive is no longer taught in schools. That cursive is a valuable part of our culture that we're losing. They repeatedly cited stylistic analysis for forgery detection as a laudable use, as well as the authority of a signature&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">4 years ago &#183; 5 likes &#183; Charles Rosenbauer</div></a></div><h3>Indentation</h3><p>We should keep in mind that text-based programming already has at least successfully conveys a little meaning spatially however - that being indentation. Granted, it&#8217;s really only used to denote scope and nesting, but I find it shocking how nearly every language makes use of it, often in almost exactly the same ways, while programming language theory seems to have paid it little to no deep attention.</p><p>If anything, indentation is an anomaly - something based in rules completely foreign to formal programming language theory, but that persists more stubbornly than almost any other feature because it just works so extremely well. It&#8217;s worth taking a deeper look at this anomaly and considering if there&#8217;s more to learn.</p><p></p><p>Syntax highlighting is another slightly interesting thing, leaning slightly on some color theory. It&#8217;s definitely an improvement over monochrome, probably by letting the low-resolution peripheral vision more easily narrow down on points of interest for upcoming saccades. I&#8217;m not convinced we&#8217;re anywhere close to using it optimally though.</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_!iCjE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c731652-5d88-4f74-9974-b8721e2357be_584x531.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iCjE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c731652-5d88-4f74-9974-b8721e2357be_584x531.png 424w, https://substackcdn.com/image/fetch/$s_!iCjE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c731652-5d88-4f74-9974-b8721e2357be_584x531.png 848w, https://substackcdn.com/image/fetch/$s_!iCjE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c731652-5d88-4f74-9974-b8721e2357be_584x531.png 1272w, https://substackcdn.com/image/fetch/$s_!iCjE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c731652-5d88-4f74-9974-b8721e2357be_584x531.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iCjE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c731652-5d88-4f74-9974-b8721e2357be_584x531.png" width="584" height="531" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c731652-5d88-4f74-9974-b8721e2357be_584x531.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:531,&quot;width&quot;:584,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:51533,&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_!iCjE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c731652-5d88-4f74-9974-b8721e2357be_584x531.png 424w, https://substackcdn.com/image/fetch/$s_!iCjE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c731652-5d88-4f74-9974-b8721e2357be_584x531.png 848w, https://substackcdn.com/image/fetch/$s_!iCjE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c731652-5d88-4f74-9974-b8721e2357be_584x531.png 1272w, https://substackcdn.com/image/fetch/$s_!iCjE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c731652-5d88-4f74-9974-b8721e2357be_584x531.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">Some code in AsciiDots, an esoteric/art language. Unlike many graphical languages, this is not meant to be taken seriously and is just trying to be a neat art project.</figcaption></figure></div><p>I think that a few esoteric languages like <a href="https://github.com/aaronjanse/asciidots">AsciiDots</a> and <a href="https://en.wikipedia.org/wiki/Befunge">Befunge</a> present an interesting idea, giving syntactic meaning to long chains of line symbols, turning code into a form of ASCII art filled with meaningful leading lines.</p><p>Do I plan to copy this idea for Bzo and make the language an ASCII art path-based language? Not exactly - AsciiDots suffers from the same hairball problem that other graphical languages have, but with an even more tedious UI than drag-n-drop. However, reasonable ways of introducing leading lines into the syntax to guide the eye to important details is something I at least will be very seriously considering once backend stuff is done and syntax is a more immediate concern.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:47015379,&quot;url&quot;:&quot;https://bzogrammer.substack.com/p/the-bzo-programming-language&quot;,&quot;publication_id&quot;:248933,&quot;publication_name&quot;:&quot;Bzogramming&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;The Bzo Programming Language&quot;,&quot;truncated_body_text&quot;:&quot;I&#8217;ve been working on a programming language, called Bzo, for a while. The precise goals have shifted throughout the years, and I&#8217;ve very been busy with day jobs and other projects keeping me from really giving this project the attention it deserves. I&#8217;ve come to the conclusion that this is something that really deserves full-time attention and resources&#8230;&quot;,&quot;date&quot;:&quot;2022-01-14T16:40:00.125Z&quot;,&quot;like_count&quot;:7,&quot;comment_count&quot;:1,&quot;bylines&quot;:[{&quot;id&quot;:17122116,&quot;name&quot;:&quot;Charles Rosenbauer&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d4a8cc9a-0f40-4526-af65-2dc116bf67d3_268x268.jpeg&quot;,&quot;bio&quot;:&quot;Bzo Programming Language, Neuro, Econ, Complexity Theory, Algorithmic Dark Matter, etc.&quot;,&quot;profile_set_up_at&quot;:&quot;2022-03-06T01:14:05.509Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:211506,&quot;user_id&quot;:17122116,&quot;publication_id&quot;:248933,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:248933,&quot;name&quot;:&quot;Bzogramming&quot;,&quot;subdomain&quot;:&quot;bzogrammer&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Applied, Theoretical Programming Language Design, with some neuroscience, complexity theory, and other influences. Sometimes other stuff.&quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:17122116,&quot;theme_var_background_pop&quot;:&quot;#6b26ff&quot;,&quot;created_at&quot;:&quot;2020-12-29T15:33:04.277Z&quot;,&quot;rss_website_url&quot;:null,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Charles Rosenbauer&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;}},{&quot;id&quot;:1444078,&quot;user_id&quot;:17122116,&quot;publication_id&quot;:1478017,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:1478017,&quot;name&quot;:&quot;Possibilia: memetic infrastructure for the future&quot;,&quot;subdomain&quot;:&quot;possibilia&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8944e88a-acb9-47bb-ba97-c977bd79aa0b_1280x1280.png&quot;,&quot;author_id&quot;:133450068,&quot;theme_var_background_pop&quot;:&quot;#786CFF&quot;,&quot;created_at&quot;:&quot;2023-03-08T21:33:09.904Z&quot;,&quot;rss_website_url&quot;:null,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Possibilia&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;}}],&quot;twitter_screen_name&quot;:&quot;bzogrammer&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;inviteAccepted&quot;:true}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://bzogrammer.substack.com/p/the-bzo-programming-language?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Bzogramming</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">The Bzo Programming Language</div></div><div class="embedded-post-body">I&#8217;ve been working on a programming language, called Bzo, for a while. The precise goals have shifted throughout the years, and I&#8217;ve very been busy with day jobs and other projects keeping me from really giving this project the attention it deserves. I&#8217;ve come to the conclusion that this is something that really deserves full-time attention and resources&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">4 years ago &#183; 7 likes &#183; 1 comment &#183; Charles Rosenbauer</div></a></div><p></p><h3>A Mountain Through a Microscope</h3><p>One other factor that I think people at least subconsciously miss that I suspect might partially drive this allure for graphical programming is the lack of any ability to &#8220;zoom out&#8221; of a codebase.</p><p>The human eye can view anything from the not-quite-microscopic if we look down at something closeby up to cosmic scales if we simply look upward to the sky.</p><p>If we want to view a mountain and get a good idea of its overall structure, the most natural way to do so is to look at it from a distance.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZLdk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c87a2b-4be5-430b-880d-8ab8fc78ad9e_2000x1333.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZLdk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c87a2b-4be5-430b-880d-8ab8fc78ad9e_2000x1333.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZLdk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c87a2b-4be5-430b-880d-8ab8fc78ad9e_2000x1333.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZLdk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c87a2b-4be5-430b-880d-8ab8fc78ad9e_2000x1333.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZLdk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c87a2b-4be5-430b-880d-8ab8fc78ad9e_2000x1333.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZLdk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c87a2b-4be5-430b-880d-8ab8fc78ad9e_2000x1333.jpeg" width="618" height="411.717032967033" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6c87a2b-4be5-430b-880d-8ab8fc78ad9e_2000x1333.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;:618,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Trekking the Aconcagua - Climb the Andes Highest Peak&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="Trekking the Aconcagua - Climb the Andes Highest Peak" title="Trekking the Aconcagua - Climb the Andes Highest Peak" srcset="https://substackcdn.com/image/fetch/$s_!ZLdk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c87a2b-4be5-430b-880d-8ab8fc78ad9e_2000x1333.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZLdk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c87a2b-4be5-430b-880d-8ab8fc78ad9e_2000x1333.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZLdk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c87a2b-4be5-430b-880d-8ab8fc78ad9e_2000x1333.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZLdk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c87a2b-4be5-430b-880d-8ab8fc78ad9e_2000x1333.jpeg 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">Aconcagua, the tallest mountain in South America. I&#8217;m listening to some Andean music while writing this, I felt it was a good mountain to choose.</figcaption></figure></div><p>A remarkably stupid idea would be to walk around the mountain inspecting individual rocks with microscopes and magnifying glasses, <em>inspecting rocks one at a time</em>, and trying to guess at and gradually map the overall structure of the mountain that way.</p><p>Yet, when we are viewing code in a text editor, the individual characters of text correspond to individual bytes of memory. Very little exists that can meaningfully zoom out on a whole codebase at a time.</p><p>Sure, some IDEs have &#8220;minimap&#8221; features, but those tend to be limited to individual files rather than focusing on whole codebases. Congrats, you&#8217;re looking at a few boulders at a time now instead of individual rocks.</p><p></p><h3>A Little Demo</h3><p>I have a tool I&#8217;ve been building a little bit on the side for a couple weeks. Right now it just loads files and displays a couple visualizations of the first 256kB or so, the main visualization being a hilbert curve. Each pixel corresponds to an individual byte, colored based on the byte value and some derived properties of it. The initial goal is to have something useful for visually inspecting the binary structure of arbitrary files with (eventually) many more options than a normal text/hex editor.</p><p>It&#8217;s not a terribly impressive tool yet - I&#8217;m busy with many other things right now - but I think even in the current primitive state it gets my point across.</p><p><a href="https://en.wikipedia.org/wiki/Hilbert_curve">Hilbert curves</a> are a pretty nifty tool, being able to map a 1D space to a 2D space, turning long, pixel-thin lines into easily-recognized blocks. This is great for visualizing large amounts of data in the form of a simple, linear sequence and getting an intuitive sense of contiguous chunks.</p><p>Files are just linear sequences of bytes, and code really isn&#8217;t any different aside from often consisting of several files.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wU8y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc40fe3b5-f130-4f7e-9ff7-4a91dbf29f27_517x516.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wU8y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc40fe3b5-f130-4f7e-9ff7-4a91dbf29f27_517x516.png 424w, https://substackcdn.com/image/fetch/$s_!wU8y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc40fe3b5-f130-4f7e-9ff7-4a91dbf29f27_517x516.png 848w, https://substackcdn.com/image/fetch/$s_!wU8y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc40fe3b5-f130-4f7e-9ff7-4a91dbf29f27_517x516.png 1272w, https://substackcdn.com/image/fetch/$s_!wU8y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc40fe3b5-f130-4f7e-9ff7-4a91dbf29f27_517x516.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wU8y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc40fe3b5-f130-4f7e-9ff7-4a91dbf29f27_517x516.png" width="505" height="504.0232108317215" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c40fe3b5-f130-4f7e-9ff7-4a91dbf29f27_517x516.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:516,&quot;width&quot;:517,&quot;resizeWidth&quot;:505,&quot;bytes&quot;:538570,&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_!wU8y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc40fe3b5-f130-4f7e-9ff7-4a91dbf29f27_517x516.png 424w, https://substackcdn.com/image/fetch/$s_!wU8y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc40fe3b5-f130-4f7e-9ff7-4a91dbf29f27_517x516.png 848w, https://substackcdn.com/image/fetch/$s_!wU8y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc40fe3b5-f130-4f7e-9ff7-4a91dbf29f27_517x516.png 1272w, https://substackcdn.com/image/fetch/$s_!wU8y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc40fe3b5-f130-4f7e-9ff7-4a91dbf29f27_517x516.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>Here is a PDF file drawn with my tool - the green spots seem to be PDF script text. The black spots are all blocks of zeroed bytes, I&#8217;m not sure why they&#8217;re there - perhaps suboptimal packing code? The teal background seems to be all the compressed data that makes up the PDF, and has some interesting structure of its own. Some regions appear to just be high-frequency noise and others, such as the lower-right quadrant, seem to have more low-frequency, longer-range structure. My guess right now is that the more structured teal regions are compressed images.</p><p>If you know what to look for, just staring at this image for long enough tells almost as much of a story as the actual PDF when properly read.</p><p></p><p>With some more work, this could probably be a fairly useful tool. Bigram plots can be really useful for categorizing data based on byte values. The tool already computes bigram-bitvector embeddings for 256-byte segments of the file, and I&#8217;ve started work on a <a href="https://www.youtube.com/watch?v=yR7k19YBqiw">k-means classifier</a>, which should allow for the computer to automatically categorize distinct parts of the file that &#8220;look similar&#8221;.</p><p></p><p>I had a side project a couple years back trying to do this with large codebases - I had a similar hilbert curve plot of the entire Linux codebase, visualizing a whole gigabyte of code in one image. I&#8217;d have to do some digging through some old hard drives sometime to find that project though.</p><p>The nice thing about doing it with code rather than raw binary data is that there&#8217;s a lot of easily parsed structure in text-based code - identifiers, keywords, comments, indentation, parentheses/brackets/braces, operators, literals, and so on. A much wider and richer set of tools for deciding exactly how to color the big array of pixels should be possible that are more specific and useful to understanding code than relatively crude tools like plotting raw byte value, or k-means clustering.</p><p>If you want to zoom out on your code, you don&#8217;t need to limit yourself to just one method of doing so; much like the interactive nature of the human visual system, an interactive approach to zooming in and out and adjusting the color-coding of the map would undoubtedly be very valuable.</p><p>And of course, all of this says nothing of the many other visualization methods beyond hilbert curves.</p><p></p><p></p><p>Overall, I don&#8217;t think what is needed is any more drag-n-drop lines-n-boxes graphical programming languages. Text is a pretty robust medium and it&#8217;s far from its actual limits if we&#8217;re willing to be a little creative (and maybe take some cues from ASCII art).</p><p>Could someone actually make a graphical programming language that works? Sure. I&#8217;ve had a few rough ideas of my own in the past along those lines. For any chance of success though, something actually unique needs to be done.</p><p>The real value however is not in replacing text as a programming medium, but rather augmenting it with more visual tools to produce understandings of code that would be impractical to gain from merely reading the code.</p><div><hr></div><p><em>Thanks for reading my article today. I might have some big announcements soon, so keep an eye out. If any readers are in Austin for SXSW this week, maybe I&#8217;ll see you around town - I don&#8217;t have tickets for anything, but I do have friends who know about some of the after-parties and will likely be at the <a href="https://futo.org/">FUTO</a> event on Friday.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://bzolang.blog/p/the-lure-of-graphical-programming?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://bzolang.blog/p/the-lure-of-graphical-programming?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p><p></p>]]></content:encoded></item></channel></rss>