<?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[Soup to Software]]></title><description><![CDATA[A monthly newsletter sharing the process of designing, developing, and distributing software as a solo practice. Free to read, written in a singular voice, and focused on the full arc—from concept to code.]]></description><link>https://jonofyi.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!dk-X!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6058d174-9eca-419b-9523-6c36acf15e68_256x256.png</url><title>Soup to Software</title><link>https://jonofyi.substack.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 16 Oct 2026 20:08:08 GMT</lastBuildDate><atom:link href="https://jonofyi.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Jono, LLC]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[inquiries+substack@jono.fyi]]></webMaster><itunes:owner><itunes:email><![CDATA[inquiries+substack@jono.fyi]]></itunes:email><itunes:name><![CDATA[Jono Brandel]]></itunes:name></itunes:owner><itunes:author><![CDATA[Jono Brandel]]></itunes:author><googleplay:owner><![CDATA[inquiries+substack@jono.fyi]]></googleplay:owner><googleplay:email><![CDATA[inquiries+substack@jono.fyi]]></googleplay:email><googleplay:author><![CDATA[Jono Brandel]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Github’s Secure Open Source Fund: A Year Later]]></title><description><![CDATA[Last year I participated in a series of workshops for Open Source developers guided by Github. Allow me to share how my processes have changed.]]></description><link>https://jonofyi.substack.com/p/githubs-secure-open-source-fund-a</link><guid isPermaLink="false">https://jonofyi.substack.com/p/githubs-secure-open-source-fund-a</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Fri, 25 Sep 2026 15:02:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_Dnc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a519923-b136-4963-96f1-8c70fc7eef57_5120x2880.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the months I participated in Github&#8217;s Secure Open Source Fund I learned about how to secure an open source project for the long haul. By the way, they are open for new applications for their latest cohort. Check out the homepage for more details.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> One way the workshop revealed how to secure your project: was to integrate Copilot judiciously. Copilot is Github&#8217;s and more largely Microsoft&#8217;s AI product, platform, and initiative. Each module that we participated in we were asked: how did Copilot improve security? For the most part, I thought of Copilot as a more context aware search engine. Among its many forms, Copilot lives as a chat extension within the popular text editor for programming Visual Studio Code.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> I asked it questions about my specific codebase with just a few simple phrases.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> Little did I know that these techniques were laying the ground work to developing a perspective on how and when to rely on an AI agent when programming. I would like to share a bit of that 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_!_Dnc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a519923-b136-4963-96f1-8c70fc7eef57_5120x2880.png" data-component-name="Image2ToDOM"><div class="image2-inset image2-full-screen"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_Dnc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a519923-b136-4963-96f1-8c70fc7eef57_5120x2880.png 424w, https://substackcdn.com/image/fetch/$s_!_Dnc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a519923-b136-4963-96f1-8c70fc7eef57_5120x2880.png 848w, https://substackcdn.com/image/fetch/$s_!_Dnc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a519923-b136-4963-96f1-8c70fc7eef57_5120x2880.png 1272w, https://substackcdn.com/image/fetch/$s_!_Dnc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a519923-b136-4963-96f1-8c70fc7eef57_5120x2880.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_Dnc!,w_5760,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a519923-b136-4963-96f1-8c70fc7eef57_5120x2880.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4a519923-b136-4963-96f1-8c70fc7eef57_5120x2880.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;full&quot;,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:439205,&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://jonofyi.substack.com/i/217303420?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a519923-b136-4963-96f1-8c70fc7eef57_5120x2880.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-fullscreen" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_Dnc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a519923-b136-4963-96f1-8c70fc7eef57_5120x2880.png 424w, https://substackcdn.com/image/fetch/$s_!_Dnc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a519923-b136-4963-96f1-8c70fc7eef57_5120x2880.png 848w, https://substackcdn.com/image/fetch/$s_!_Dnc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a519923-b136-4963-96f1-8c70fc7eef57_5120x2880.png 1272w, https://substackcdn.com/image/fetch/$s_!_Dnc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a519923-b136-4963-96f1-8c70fc7eef57_5120x2880.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Port of Wiremarks project as declarative components in React Two.js. Written by AI. 2026.</figcaption></figure></div><h3>There is more to the code than the code</h3><p>For an open source project the code is obviously important. But, the workshop taught me that the workflows you set up around the code are just as important. Explaining clearly what the expectations and procedures are when incidents occur or when requests come in enable your project to persevere through serious challenges. Over the years Github has added numerous features on top of git, the version control language for collaborating on writing code. These features, like Actions: automated code execution every time you check in code, can help reinforce any procedures you mandate or encourage collaborators to make. Copilot and more generally AI, can help automate these features even further. For instance, this year I started having Copilot review every set of code changes anyone submits to a project. Mostly it catches the little things: unused variables, extra dependencies, and potential risk vectors. It offers a second look at what was written. It also often offers a perspective that is outside what I would be looking at. In short, it is a simple form of accountability.</p><h3>So how important is the code that is written?</h3><p>One of the modules from the workshop, Vulnerability Management &amp; AI Security, explained how using Large Language Models (LLMs) can be an attack vector. The moral I took away from the module was that talking to an LLM should be regarded as speaking in public. During the workshop it meant identifying moments where you may have shared a private access key. If so, there are clear steps to rotate the key and make sure it does not happen again. Fast forward to today, I think about how talking to an LLM is public. Could it be like talking into a megaphone of a shared dream? Like a game of telephone? The reverberations of a shared dream alter the original meaning. This altered meaning is reminiscent of a concept in new media I studied: transcoding.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> In the context of AI, where each day draws closer to recursive self-improvement, the AI trains upon its own code. Will it become an echo chamber? This makes code written prior to AI agents both a hallmark and a relic. As I write code today, it begs the question: is my writing important?</p><p>This musing has led me to not use AI in the generation of code for projects that have predated it. The source code of Two.js remains handwritten for posterity. The wrapper I made for it, React Two.js, however is made with AI. Why? The written code of Two.js is kind of the point. It represents a point in time of learning and understanding. The wrapper, however, is a bridge for that understanding to work in a new setting. It almost does not matter how React Two.js is written. It matters that it exists and it works.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://jonobr1.com/react-two.js&quot;,&quot;text&quot;:&quot;Browse React Two.js&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://jonobr1.com/react-two.js"><span>Browse React Two.js</span></a></p><p>To recap, this Github workshop reframed how I think about AI. While originally discussed in the form of security, the concerns raised in the workshop carried other existential concerns I have about using AI in my work. For now, I land on keeping what feels handwritten just that. For everything else, the value is not in the writing. The value is in the existence, distribution, deployment, or execution of that writing.</p><p>&#8211;Jono</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>Github Secure Open Source Fund. <a href="https://github.com/open-source/github-secure-open-source-fund">https://github.com/open-source/github-secure-open-source-fund</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Github Copilot &#8226; Your AI coding agent. <a href="https://github.com/features/copilot">https://github.com/features/copilot</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;822fffdf-1965-4454-9a90-6c4e0b016b37&quot;,&quot;caption&quot;:&quot;In 2022 I started trying to increase my revenue through Github Sponsors. It is a platform for open source maintainers to receive remuneration for their contributions. It can be a one-time donation or recurring. Since logging sponsorships, it has been a modest. The more support means the more I can focus on Two.js during my workdays. So, when I received &#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Beefing up Two.js Thanks to Session 3 of Github&#8217;s Secure Open Source Fund&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1596155,&quot;name&quot;:&quot;Jono Brandel&quot;,&quot;bio&quot;:&quot;I use graphic design and computer programming to explore the expressive qualities of technology.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82b0072b-95ac-4f10-bd84-6fa81e118ac3_1000x1000.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-02-17T19:04:29.242Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!IcMQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac43037-b08c-409c-8445-6ba3703a623e_3024x1898.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jonofyi.substack.com/p/beefing-up-twojs-thanks-to-session&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:187927855,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1233012,&quot;publication_name&quot;:&quot;Soup to Software&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!dk-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6058d174-9eca-419b-9523-6c36acf15e68_256x256.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>Cultural Transcoding. Lev Manovich. <a href="https://monoskop.org/Cultural_transcoding">https://monoskop.org/Cultural_transcoding</a>.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Hackathons in the Age of Agents]]></title><description><![CDATA[Last week I participated in my first hackathon in about 10 years. But, what do you do if you do not write the code anymore?]]></description><link>https://jonofyi.substack.com/p/hackathons-in-the-age-of-agents</link><guid isPermaLink="false">https://jonofyi.substack.com/p/hackathons-in-the-age-of-agents</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Tue, 01 Sep 2026 15:02:41 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/529fd8b8-5e91-4a71-a4cc-11b8369e2c04_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The first hackathon I can remember participating in was the <a href="https://ghostly.com/">Ghostly</a> Visual Music Collaborative hosted at <a href="https://eyebeam.org/">Eyebeam</a> in New York City.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> It was about a week. It consisted of staying up late, eating pizza, getting to know one another, exploring a huge digital archive of music, learning from pioneers in the space, and pushing ourselves to make applications that could visually represent a song. It was electric. Over the years I participated in a few others. When I left for graduate school in Paris, I also left hackathons. Last week, Refik and his studio invited me to join a hackathon centered around geospatial data. The problematic: How could this data integrate into Dataland&#8217;s current exhibition <a href="https://dataland.art/exhibitions/machine-dreams-rainforest">Machine Dreams: Rainforest</a>. As the two day event transpired, I was struck by something: due to AI the experience of the hackathon had changed. Let me elaborate.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;77857936-6a4e-4e6b-ac32-97cf880cb7b2&quot;,&quot;duration&quot;:null}"></div><h3>Source code as source material</h3><p>Like watching <a href="https://en.wikipedia.org/wiki/Iron_Chef">Iron Chef</a>, hackathons are a race against the clock to achieve a goal. Chefs are given a secret ingredient. They have little time to prepare a menu. Then it comes down to execution and presentation in front of an audience. Similarly, we received access to datasets I never really looked at or knew about. We had little time to decide the direction we were going to go. Then we were off building. Rather than building ourselves, however, we had AI agents do much of the grunt work. We fired off prompts. Because of the speed and collaborative nature of the hackathon, I found myself being more carefree with the code being written than I am day to day. Participants were sharing code snippets and artifacts in fairly undocumented ways. Not a problem, because the AI agent could extrapolate and mock it up. In hackathons of the past, I would prep different project folders to be able to navigate and iterate quickly. For this hackathon, I felt more like I was assembling. I directed the AI agent to mix this code snippet and that code sketch. The result allowed me to converse more with my fellow participants and let the AI worry about the code.</p><h3>More to show</h3><p>In typical hackathons a lot can go wrong. The slightest typo and the whole application errors. Long hours increases mistakes. This is compounded when you use the graphics card or GPU. The errors are hidden. The visuals either do not show up or show up broken. It can take hours or days to remedy. Painful as it was, emergent designs can appear through this process. Personally, this is one of the satisfying moments of programming in pursuit of creating visuals. You get visual proof of a newfound understanding. Today, the AI agent is able to confirm errors and fix them before even presenting anything to you. This saves a lot of time. It also makes a lot more things to look at and review. Instead of spending late hours figuring out how to orient different spheres in some kind of physics relationship, I was sketching wireframes of how to present all the prototypes made.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://archive.jono.fyi/projects/google-earth/r1/index.html&quot;,&quot;text&quot;:&quot;Play with the prototype&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://archive.jono.fyi/projects/google-earth/r1/index.html"><span>Play with the prototype</span></a></p><p>These key differences made the entire experience different from what I was expecting. I had more of a creative director&#8217;s hat on than a technician&#8217;s. So, what did we make? Unfortunately, I cannot show you everything. But, I can share this initial prototype. Play with it directly by hitting the button above or view screen recorded video at the beginning of the post. It is best viewed on a computer, but does run on a phone. It combines a vortex algorithm to push particles around and the tendency for those particles to resolve and resemble the earth. The result is a kind of representation of the earth where displacement and movement of its surface could be attached to real-time storm data. Though that data is not assigned in the prototype. There are a few sliders at the bottom of the page where you can change the amount of vortices and its behaviors. You can also tap and drag to rotate the earth or pinch-and-zoom to get a closer look.</p><p>&#8211;Jono</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>Visual Music Collaborative Results. Creative Applications. 2010. <a href="https://www.creativeapplications.net/event/visual-music-collaborative-events-results/">https://www.creativeapplications.net/event/visual-music-collaborative-events-results/</a></p></div></div>]]></content:encoded></item><item><title><![CDATA[Client Project: Dataland]]></title><description><![CDATA[Four years in the making, Dataland is now open to the public. Here is everything I designed, architected, and built to make it happen.]]></description><link>https://jonofyi.substack.com/p/client-project-dataland</link><guid isPermaLink="false">https://jonofyi.substack.com/p/client-project-dataland</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Thu, 13 Aug 2026 15:02:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!15uT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81acee2-6a7c-4914-8e91-a464dd379e0d_1920x1081.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Dataland opened June 20, 2026. In the intervening six weeks since opening, the interest has been strong. Reviews are many and fairly positive. We have sold over 20,000 tickets. I have posted steadily over the years about my contributions to Dataland.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> It aligns strongly with my background and values. But, I will be honest: there were times when I was not sure if the museum was going to happen. Together with <a href="https://refikanadolstudio.com/">Refik Anadol Studio</a> (the creative force for Dataland) and others, we built a lot of things over the last four years in service of the museum and its vision: <em>can art feel you back?</em><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> Typically, I walk you through a project based on the process I take. For Dataland, I feel like it is better suited to show you as much as possible: the things that we built; that are live; that are working for the museum. Below are a series of videos and images I made. For each one, I will explain a bit of the design and a bit of the technology to give you a survey of this collaboration.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!15uT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81acee2-6a7c-4914-8e91-a464dd379e0d_1920x1081.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset image2-full-screen"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!15uT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81acee2-6a7c-4914-8e91-a464dd379e0d_1920x1081.jpeg 424w, https://substackcdn.com/image/fetch/$s_!15uT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81acee2-6a7c-4914-8e91-a464dd379e0d_1920x1081.jpeg 848w, https://substackcdn.com/image/fetch/$s_!15uT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81acee2-6a7c-4914-8e91-a464dd379e0d_1920x1081.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!15uT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81acee2-6a7c-4914-8e91-a464dd379e0d_1920x1081.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!15uT!,w_5760,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81acee2-6a7c-4914-8e91-a464dd379e0d_1920x1081.jpeg" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e81acee2-6a7c-4914-8e91-a464dd379e0d_1920x1081.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;full&quot;,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:558318,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jonofyi.substack.com/i/210099664?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81acee2-6a7c-4914-8e91-a464dd379e0d_1920x1081.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-fullscreen" alt="" srcset="https://substackcdn.com/image/fetch/$s_!15uT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81acee2-6a7c-4914-8e91-a464dd379e0d_1920x1081.jpeg 424w, https://substackcdn.com/image/fetch/$s_!15uT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81acee2-6a7c-4914-8e91-a464dd379e0d_1920x1081.jpeg 848w, https://substackcdn.com/image/fetch/$s_!15uT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81acee2-6a7c-4914-8e91-a464dd379e0d_1920x1081.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!15uT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81acee2-6a7c-4914-8e91-a464dd379e0d_1920x1081.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Dataland inaugural exhibition announcement poster. June, 2026. Refik Anadol Studio.</figcaption></figure></div><div><hr></div><h4>Website Content Management System</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;70ac2809-a306-47cd-93ab-5805343d412c&quot;,&quot;duration&quot;:null}"></div><p>The main pillar of the website is our content management system (CMS). It allows for Dataland staff members to create pages made up of different styled modules. It drives our homepage, about, exhibitions, and memberships among most pages on the website. In the above video there are two screen captures. On the left is the website from a desktop computer. On the right is roughly the same content viewed from a smartphone. The homepage, about, exhibitions, and memberships pages show off most of the modules that I co-created with <a href="https://www.useallfive.com/">Use All Five</a>. The modules vary from captivating video elements with titles and call to actions to simple text blocks. In all there are 35 custom made modules that create the look and feel of the Dataland website.</p><h4>Blog and Incidentals</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;c4987436-deb1-43aa-aceb-c0c4ddc5dd56&quot;,&quot;duration&quot;:null}"></div><p>The blog and incidentals also run through the CMS. To make the blog distinct from other pages it has two parts: the feed and the post. The feed is a descending chronological three column list: the date of the post, the video thumbnail, and the title. The post is a four column grid where different modules inhabit different columns. Above the fold has the title and thumbnail split in two columns. Post date, author, and share links below it take up 1 by 1 by 2 columns. Blog posts are text heavy. The primary text module sits two of the four columns wide centered on the page. Images, carousels, and other media spread themselves across the 4 columns in ways the author can decide. On mobile the columns collapse into a single column.</p><p>The incidentals, Terms of Service, Privacy Policy, Career pages, etc., all live like individual blog posts: two columns centered on the page. It is a workflow that is easy enough for team members to jump in and make edits to while still evoking the larger grid system and general design ethos of Dataland.</p><h4>Forms Integration</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;704ea08b-21db-4c72-99b0-71fe9be5042a&quot;,&quot;duration&quot;:null}"></div><p>Throughout the last year, the team has often relied on forms for gauging specific interests. We started with a general mailing list module. This was effective in getting our mailing list to over 50,000 subscribers since the website first published in 2023. However, the current forms integration is slightly more sophisticated. Any form that is created in our Customer Relationship Management (CRM) platform is automatically hosted in the official Dataland website. This adds validity to Refik&#8217;s sensitive collectors and investors when we need them to fill out something. It also expands our ability to cater to you and your interests regarding the museum. Above, we have a waiting list form up and running for those interested to know when scents are available to purchase in the Design Archive (Dataland&#8217;s equivalent to the gift shop).</p><h4>Microsite Webpages</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;dd3e2adc-22a7-41f7-afa5-050305dce421&quot;,&quot;duration&quot;:null}"></div><p>Of course the museum that is dedicated to AI arts is interested in hosting AI generated, sometimes referred to as &#8220;vibecoded&#8221;, content. The rest of this paragraph is more technology than design. The Dataland site is a containerized <a href="https://nextjs.org/">Next.js</a> application. One of the strength&#8217;s of Next.js is its routing system. By simply placing files in specific folder architectures, you can write an API endpoint, a server function, or a browser-facing webpage. We customize this routing structure extensively. We run a kind of middleware that allows for single pages to be routed to any URL we want. This functionality allows any team member who generates something with AI to simply upload the contents of that page and put it up on our site. It is completely siloed from the rest of the CMS, content, or server scripts. Above we have the Data Scent page hosted as a microsite its main call-to-action is a button that takes you to the form described in the previous section.</p><h4>Tickets and Orders</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;f312a2cc-1ba5-4566-9714-2b75123b771d&quot;,&quot;duration&quot;:null}"></div><p>Dataland has two ticketing purchase paths. First, there is the naked <code>/tickets</code> route. This is the primary way the general public can purchase tickets. It has an embedded calendar widget provided by <a href="https://tickx.com">TickX</a>. Their widget features a robust user journey to see available time slots, purchase tickets, and add ons to your order. The second route, like the previous Forms Integration section, shows a calendar and available time slots for a specific exhibition or event. At the moment, Dataland only has one exhibition, but it is set up to handle one off events like concerts, lectures (in person or remote), private events, and simultaneous exhibitions. An example one we ran was for members to preview the museum before it was open. The member discounts are also available through this purchase path. If you are a member, you can find that special link on your profile page after signing in. The link is called &#8220;Reserve member tickets&#8221;.</p><p>Once you have purchased a ticket, you will be directed to the order page. This page includes the details of your booking like the exhibition name, date, and time. It also has the tickets. Dataland uses QR codes to handle check in. The QR code is also your key to get biosensing devices in the museum. The QR codes can be downloaded to your Apple or Google Wallet. You can also share each ticket individually with the members of your party. You will notice the QR codes are initially obscured. This is because Dataland requires a waiver to be signed prior to entry and issuance of any devices. It is a UI hook we are still ironing out details for. Lastly, the order page is also the place where you can self rebook your tickets and upgrade ticket types. This page is a workhorse.</p><h4>Web3 Backed Collections</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;6046bfe8-e272-485f-8b96-6260840054bb&quot;,&quot;duration&quot;:null}"></div><p>In addition to the art that you can experience in the museum, Dataland has commissioned two digital collections of art so far. The first, <a href="https://dataland.art/collections/biome-lumina">Biome Lumina</a>, is an edition of 1,000 unique NFTs. They take the form of Flora, Fauna, and Fungi; biomes from the rainforest theme of the first exhibition. They also take different literal forms. Each NFT comes as an image, a source video, an artistic depiction of the source video, an interactive WebGL webpage, and a physical archival print. Anyone can see the image and videos of the NFT on the collections page. But, only an owner who creates a Dataland user account and links their Web3 wallet can experience the interactive version.</p><p><a href="https://dataland.art/collections/qualia">Qualia</a> is the second collection. It is an edition of 300 unique physical paintings. Each painting is made with the collector&#8217;s session data from visiting the museum. A robot arm synthesizes your position, heart-rate, and temperature into pigment colors that it applies to a physical canvas with a real paintbrush. The robot sits in the museum&#8217;s Design Archive and salutes visitors as they leave. For more information on this exclusive collection visit the collection page.</p><p>The website supports each collection by hooking into <a href="https://opensea.io">OpenSea</a>, a platform for viewing, purchasing, and trading NFTs on blockchains. We get the publicly available information of each NFT through OpenSea and then enhance it with specific data that is stored on our site. For instance, you can view all 1,000 Biome Luminas on our webpage and then filter or browse them through the unique attributes and hex colors that make up each image (pictured above).</p><h4>User Profiles or My.Dataland</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;58275462-131e-454e-a210-2ca098f746fd&quot;,&quot;duration&quot;:null}"></div><p>Anyone can sign up for a Dataland account. It houses your subscriptions and memberships if you have any. You can claim the data generated by your visit to the museum with your account. So, it also shows your visits to the museum. It is the jumping off point to access our digital experience: Living Encyclopedia (a website that allows you to interact with the AI model that generates nature content in the museum). You can connect your ethereum backed wallet and interact with Biome Luminas you own. Of all the sections of the website, this is the most nascent. Not because it is the newest section. But, because it holds the most potential. When Refik and I first spoke, his vision was &#8220;to make the digital experience for a museum be more evocative of the actual in person experience&#8221;. This drew me in. My.Dataland is really the main place I tried to make good on that vision. When you see your past visits, there are data visualizations and statistics about what transpired. The Living Encyclopedia is an AI chat experience comparable to ChatGPT or Claude, just focused on the natural world. These are jumping off points for compelling digital experiences.</p><h4>In the Museum</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;bdb7c016-efc7-44b8-8025-c1c2dc9c1df7&quot;,&quot;duration&quot;:null}"></div><p>We all think of a website that we access through our computer or smartphone&#8217;s web browser. The Dataland website is no different in that regard. However, it also functions as a surface for different kiosks in the museum. Right now there are three such kiosks: a ticketing kiosk, a merchandise kiosk, and a print job display. The ticketing kiosks allows staff and soon the public to reserve and print tickets for day of time slots. The merchandise kiosks are the bookend of Dataland. Here you can scan your Data.Token, a physical NFC enabled paper disc given to every visitor when they checkout. You then can review the data you generated during your visit to the museum. The above video shows three different users going through that kiosk experience. Lastly, you can use that data to create custom designs and print them on t-shirts. The print job display, shows the queue for t-shirts ordered on the kiosks. We not only print the t-shirts on demand, but can turnaround a job in about 10 minutes if you are open to waiting. For those in a rush we also offer free shipping within the United States on the custom shirts.</p><p>This portion of the website reminds me of my time at Google. There on the Data Arts Team, I focused on web-based experiences that could jump out of what we typically thought of for a website. It is why a project like Unnumbered Sparks exists: projection mapping art running through Google Chrome during the TED Conference.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> In a way, the promise of being able to leverage websites to do things that are not websites is more attainable than ever. The kiosks in Dataland are proof.</p><h4>Internal Staff Portals</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cOgb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3291ad8e-4703-4c25-a31c-ddb68d2061d4_1512x948.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cOgb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3291ad8e-4703-4c25-a31c-ddb68d2061d4_1512x948.png 424w, https://substackcdn.com/image/fetch/$s_!cOgb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3291ad8e-4703-4c25-a31c-ddb68d2061d4_1512x948.png 848w, https://substackcdn.com/image/fetch/$s_!cOgb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3291ad8e-4703-4c25-a31c-ddb68d2061d4_1512x948.png 1272w, https://substackcdn.com/image/fetch/$s_!cOgb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3291ad8e-4703-4c25-a31c-ddb68d2061d4_1512x948.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cOgb!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3291ad8e-4703-4c25-a31c-ddb68d2061d4_1512x948.png" width="1200" height="752.4725274725274" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3291ad8e-4703-4c25-a31c-ddb68d2061d4_1512x948.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:913,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:384808,&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://jonofyi.substack.com/i/210099664?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3291ad8e-4703-4c25-a31c-ddb68d2061d4_1512x948.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cOgb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3291ad8e-4703-4c25-a31c-ddb68d2061d4_1512x948.png 424w, https://substackcdn.com/image/fetch/$s_!cOgb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3291ad8e-4703-4c25-a31c-ddb68d2061d4_1512x948.png 848w, https://substackcdn.com/image/fetch/$s_!cOgb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3291ad8e-4703-4c25-a31c-ddb68d2061d4_1512x948.png 1272w, https://substackcdn.com/image/fetch/$s_!cOgb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3291ad8e-4703-4c25-a31c-ddb68d2061d4_1512x948.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Back of House Printing Completed Jobs. Left side jobs, right side job detail. 2026.</figcaption></figure></div><p>Finally, there are three different websites for our staff to access: Dataland content pages, Dataland records, and back of house print jobs. These sites are designed only in so much as our staff are able to do what they need to do. There are more staff-only portals that our team needs to access in order to get the information they need. The three I included: drive what you see on the website and I had some hand in building, designing, or customizing them in some way. Dataland content pages are primarily managed through an open source authoring tool called <a href="https://wagtail.org/">Wagtail</a>. The records management is a custom <a href="https://www.djangoproject.com/">Django</a> admin interface. The back of house print jobs is a custom <a href="https://cloud.google.com/appengine">AppEngine</a> dashboard for displaying full resolution imagery and <a href="https://www.shopify.com/">Shopify</a> order status.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HtmZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5e3a00-dfe7-4d96-b1e0-eefce174f11c_1512x948.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HtmZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5e3a00-dfe7-4d96-b1e0-eefce174f11c_1512x948.png 424w, https://substackcdn.com/image/fetch/$s_!HtmZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5e3a00-dfe7-4d96-b1e0-eefce174f11c_1512x948.png 848w, https://substackcdn.com/image/fetch/$s_!HtmZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5e3a00-dfe7-4d96-b1e0-eefce174f11c_1512x948.png 1272w, https://substackcdn.com/image/fetch/$s_!HtmZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5e3a00-dfe7-4d96-b1e0-eefce174f11c_1512x948.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HtmZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5e3a00-dfe7-4d96-b1e0-eefce174f11c_1512x948.png" width="1456" height="913" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b5e3a00-dfe7-4d96-b1e0-eefce174f11c_1512x948.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:913,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:263486,&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://jonofyi.substack.com/i/210099664?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5e3a00-dfe7-4d96-b1e0-eefce174f11c_1512x948.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_!HtmZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5e3a00-dfe7-4d96-b1e0-eefce174f11c_1512x948.png 424w, https://substackcdn.com/image/fetch/$s_!HtmZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5e3a00-dfe7-4d96-b1e0-eefce174f11c_1512x948.png 848w, https://substackcdn.com/image/fetch/$s_!HtmZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5e3a00-dfe7-4d96-b1e0-eefce174f11c_1512x948.png 1272w, https://substackcdn.com/image/fetch/$s_!HtmZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5e3a00-dfe7-4d96-b1e0-eefce174f11c_1512x948.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">List of Cloud Run Services to operate Dataland. 2026.</figcaption></figure></div><p>In addition to the staff portals there are other internal services for cross-function data sharing. The Dataland CMS has 140 private key enabled API endpoints allowing for our AI agent, <a href="https://dataland.art/download">mobile apps</a>, and <a href="https://lnm.dataland.art/">Living Encyclopedia</a> to be treated like third party accessors of data and allowing users to authenticate into these experiences using their Dataland account. We are running about 60 Cloud Run Services and eight unique AppEngine Services. In all, these run off of carbon neutral data centers in Oregon.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://dataland.art/tickets&quot;,&quot;text&quot;:&quot;Reserve tickets to Dataland&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://dataland.art/tickets"><span>Reserve tickets to Dataland</span></a></p><p>Recounting the different pages and features of the Dataland website has brought a lot of joy. Yes, I am happy to be able to share what I have been working on for so long. Yes, I am proud of what the team has been able to accomplish. Yes, I am relieved that the museum is open and functioning. Supporting the build out of a museum where <em>the art feels you back</em>, is an exercise in jumping into unknown territory. Now I can invite you to jump into that unknown too because it really exists: Tuesday through Sunday at 100 South Grand Avenue in Downtown Los Angeles.</p><p>&#8211;Jono</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>All newsletter posts about Dataland. <a href="https://jonofyi.substack.com/t/dataland">https://jonofyi.substack.com/t/dataland</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p><em>At the Ambitious New A.I Museum, You Feel the Art, and It Feels You Right Back</em>. Frank Rose. 2026. New York Times. <a href="https://www.nytimes.com/2026/06/05/arts/design/dataland-ai-museum-los-angeles-art-artificial-intelligence.html">https://www.nytimes.com/2026/06/05/arts/design/dataland-ai-museum-los-angeles-art-artificial-intelligence.html</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Unnumbered Sparks. 2014. Vancouver, Canada. <a href="https://www.jono.fyi/Unnumbered-Sparks">https://www.jono.fyi/Unnumbered-Sparks</a>.</p></div></div>]]></content:encoded></item><item><title><![CDATA[A Shot in the Arm from Open Source]]></title><description><![CDATA[This month&#8217;s newsletter goes over the financials from my sixth year running a single person design and development studio]]></description><link>https://jonofyi.substack.com/p/a-shot-in-the-arm-from-open-source</link><guid isPermaLink="false">https://jonofyi.substack.com/p/a-shot-in-the-arm-from-open-source</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Mon, 29 Jun 2026 15:02:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!N9vv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb939c1-65db-4a4a-bca9-dfc2def271a4_2034x900.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It is June. It is summer. It is hot. And it is time for my annual financial reporting for my sixth year running the company. I ended last year&#8217;s financials post on a determined front: I did not want to have the anxiety of money feeling tight at the end of the year. So, I front loaded the first half of 2025 with more work than usual.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> Let us take a look to see how that played out to end 2025 and into 2026.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N9vv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb939c1-65db-4a4a-bca9-dfc2def271a4_2034x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N9vv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb939c1-65db-4a4a-bca9-dfc2def271a4_2034x900.png 424w, https://substackcdn.com/image/fetch/$s_!N9vv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb939c1-65db-4a4a-bca9-dfc2def271a4_2034x900.png 848w, https://substackcdn.com/image/fetch/$s_!N9vv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb939c1-65db-4a4a-bca9-dfc2def271a4_2034x900.png 1272w, https://substackcdn.com/image/fetch/$s_!N9vv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb939c1-65db-4a4a-bca9-dfc2def271a4_2034x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N9vv!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb939c1-65db-4a4a-bca9-dfc2def271a4_2034x900.png" width="1200" height="530.7692307692307" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3bb939c1-65db-4a4a-bca9-dfc2def271a4_2034x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:644,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:69589,&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://jonofyi.substack.com/i/204065525?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb939c1-65db-4a4a-bca9-dfc2def271a4_2034x900.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N9vv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb939c1-65db-4a4a-bca9-dfc2def271a4_2034x900.png 424w, https://substackcdn.com/image/fetch/$s_!N9vv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb939c1-65db-4a4a-bca9-dfc2def271a4_2034x900.png 848w, https://substackcdn.com/image/fetch/$s_!N9vv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb939c1-65db-4a4a-bca9-dfc2def271a4_2034x900.png 1272w, https://substackcdn.com/image/fetch/$s_!N9vv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb939c1-65db-4a4a-bca9-dfc2def271a4_2034x900.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>From a revenue perspective, there was a steady decline for the rest of 2025. I worked maybe too hard for the first half of 2025. I juggled as many as 4 large client projects at the same time. But, I took an almost three week vacation in July to Europe. I was really able to disconnect during the vacation because I knew my bank account was padded enough for personal expenses. This confidence led me into the end of 2025 where I explored: the Typatone revamp,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> Living Encyclopedia v2 for Dataland,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> and a grant given to me by Github.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> Ironically, I was as busy as ever. Those pursuits did not make as much money, but were enriching in their own rights. You can read more about each of them in the linked posts in the footnotes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7326!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98e6446a-d5e6-41be-bde4-e4fd12f85b5f_2034x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7326!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98e6446a-d5e6-41be-bde4-e4fd12f85b5f_2034x900.png 424w, https://substackcdn.com/image/fetch/$s_!7326!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98e6446a-d5e6-41be-bde4-e4fd12f85b5f_2034x900.png 848w, https://substackcdn.com/image/fetch/$s_!7326!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98e6446a-d5e6-41be-bde4-e4fd12f85b5f_2034x900.png 1272w, https://substackcdn.com/image/fetch/$s_!7326!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98e6446a-d5e6-41be-bde4-e4fd12f85b5f_2034x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7326!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98e6446a-d5e6-41be-bde4-e4fd12f85b5f_2034x900.png" width="1456" height="644" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/98e6446a-d5e6-41be-bde4-e4fd12f85b5f_2034x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:644,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:50624,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jonofyi.substack.com/i/204065525?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98e6446a-d5e6-41be-bde4-e4fd12f85b5f_2034x900.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_!7326!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98e6446a-d5e6-41be-bde4-e4fd12f85b5f_2034x900.png 424w, https://substackcdn.com/image/fetch/$s_!7326!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98e6446a-d5e6-41be-bde4-e4fd12f85b5f_2034x900.png 848w, https://substackcdn.com/image/fetch/$s_!7326!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98e6446a-d5e6-41be-bde4-e4fd12f85b5f_2034x900.png 1272w, https://substackcdn.com/image/fetch/$s_!7326!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98e6446a-d5e6-41be-bde4-e4fd12f85b5f_2034x900.png 1456w" sizes="100vw"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 shift to more personally compelling work is evident in the graphic above. It depicts my personal and commercial output splits as defined by Github commits. The last half of 2025 I was able to squeeze in time to experiment with two new open source libraries: react-two.js<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> and Force Directed Graph.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a> Both of which have ended up in client projects in 2026. I wish I could say there is a healthy synergy between my open source efforts and client work. But, the reality is it continues to be elliptical. Client work dominates my time and attention. And 2026 is no different. The year has been marked by two massive projects: the public launch of Dataland (we recently completed our first week open) and a client project under NDA. The massive increase in revenue in May 2025 is simply stacking months of work into a single invoice.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jOEq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa4cfd26-a612-4530-9bc2-c0529e433081_2416x900.png" data-component-name="Image2ToDOM"><div class="image2-inset image2-full-screen"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jOEq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa4cfd26-a612-4530-9bc2-c0529e433081_2416x900.png 424w, https://substackcdn.com/image/fetch/$s_!jOEq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa4cfd26-a612-4530-9bc2-c0529e433081_2416x900.png 848w, https://substackcdn.com/image/fetch/$s_!jOEq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa4cfd26-a612-4530-9bc2-c0529e433081_2416x900.png 1272w, https://substackcdn.com/image/fetch/$s_!jOEq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa4cfd26-a612-4530-9bc2-c0529e433081_2416x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jOEq!,w_5760,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa4cfd26-a612-4530-9bc2-c0529e433081_2416x900.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa4cfd26-a612-4530-9bc2-c0529e433081_2416x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;full&quot;,&quot;height&quot;:542,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:75125,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jonofyi.substack.com/i/204065525?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa4cfd26-a612-4530-9bc2-c0529e433081_2416x900.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-fullscreen" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jOEq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa4cfd26-a612-4530-9bc2-c0529e433081_2416x900.png 424w, https://substackcdn.com/image/fetch/$s_!jOEq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa4cfd26-a612-4530-9bc2-c0529e433081_2416x900.png 848w, https://substackcdn.com/image/fetch/$s_!jOEq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa4cfd26-a612-4530-9bc2-c0529e433081_2416x900.png 1272w, https://substackcdn.com/image/fetch/$s_!jOEq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa4cfd26-a612-4530-9bc2-c0529e433081_2416x900.png 1456w" sizes="100vw"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>As you can see from our final graphic, the year-over-year trends in revenue streams and commit history, 2026 is on track with 2025 numbers. The revenue comes from client work. This makes my focus client work. The one irregularity is the purple spike in subscription revenue this past year. Github&#8217;s grant was disbursed as a subscription. It made a meaningful impact for a couple of months to shift my priorities. And I would happily do it again.</p><p>One observation I had while assembling these graphics: I expected the general output of commits (commercial or personal) to increase steadily over this year. As I shifted from writing code, to managing AI agents and reviewing the code they made, I assumed my general productivity increased.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a> Hence the expectation of increased commits. To my surprise, it only marginally increased over last year. Perhaps as an individual contributor, there is only so much I can pay attention to even if I am not writing it myself.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://docs.google.com/spreadsheets/d/1zjnvhulDYy1LddwQbn2GIS-2qtVKRxJ5DtU7MKB1pOo/&quot;,&quot;text&quot;:&quot;Review the YoY numbers&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://docs.google.com/spreadsheets/d/1zjnvhulDYy1LddwQbn2GIS-2qtVKRxJ5DtU7MKB1pOo/"><span>Review the YoY numbers</span></a></p><p>In closing, I kept it simple this year. I worked hard. I showed up for my clients. I took a break in the summer. I front loaded the year, but ended up working just as much by the end of it. If you see anything in the numbers, do not hesitate to share your thoughts in the comments.</p><p>&#8211;Jono</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"><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;21084b39-91a7-431b-bf35-3c55f5fbc33f&quot;,&quot;caption&quot;:&quot;Last year&#8217;s self-employment analysis revealed many trends and insights. To recap: I stabilized my income over the first four years. I did not raise my prices. I had difficulty balancing personal and commercial work. While last year gave me the best work-life balance of my 17-year career, it was also my lowest-earning year. Going into this year, I made s&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Leaning into the Trends&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1596155,&quot;name&quot;:&quot;Jono Brandel&quot;,&quot;bio&quot;:&quot;I use graphic design and computer programming to explore the expressive qualities of technology.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/49c543c2-3720-4dfe-ab08-af8d30e94428_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-06-24T15:00:43.278Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!W_Ba!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d29688-e264-4b3c-ac41-b7db0ddfea04_2034x900.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jonofyi.substack.com/p/leaning-in-to-the-trends&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:166698469,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:2,&quot;publication_id&quot;:1233012,&quot;publication_name&quot;:&quot;Soup to Software&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!dk-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6058d174-9eca-419b-9523-6c36acf15e68_256x256.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;6b4c5be1-8cea-41cf-879e-3ddfd75dc535&quot;,&quot;caption&quot;:&quot;In October of 2015, I released Typatone with music duo Lullatone at Ableton&#8217;s Loop Festival. As a follow up to the surprise hit sensation Patatap from the year before, I wanted to use Typatone as a way to respond to how Patatap was received. In today&#8217;s post I cover the feedback I received for Patatap, the way I responded, and the subsequent reception of&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Ten Years of Typing Melodies&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1596155,&quot;name&quot;:&quot;Jono Brandel&quot;,&quot;bio&quot;:&quot;I use graphic design and computer programming to explore the expressive qualities of technology.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/49c543c2-3720-4dfe-ab08-af8d30e94428_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-11-18T16:02:52.631Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ac848b6f-4474-46fc-a845-c8cc352f7e42_5120x2880.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jonofyi.substack.com/p/ten-years-of-typing-melodies&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:179176067,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:4,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1233012,&quot;publication_name&quot;:&quot;Soup to Software&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!dk-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6058d174-9eca-419b-9523-6c36acf15e68_256x256.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;3d3c4417-2f9d-4b30-bd2f-3217aea6ad83&quot;,&quot;caption&quot;:&quot;At the end of last year I announced the Living Encyclopedia. It is an interface into Dataland&#8217;s Large Nature Model, an AI model that is trained exclusively (and, as Refik Anadol Studio puts it, ethically) on nature data. This data is made up of writings, images, audio, and videos. It comes from many different sources; some collected by the studio and so&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;In Review: Dataland at Grand Ave Arts: All Access&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1596155,&quot;name&quot;:&quot;Jono Brandel&quot;,&quot;bio&quot;:&quot;I use graphic design and computer programming to explore the expressive qualities of technology.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/49c543c2-3720-4dfe-ab08-af8d30e94428_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-12-22T13:02:55.978Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!fyIJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cd0d53-36b5-447e-9e84-69d5bc383f4e.heic&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jonofyi.substack.com/p/in-review-dataland-at-grand-ave-arts&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:182269990,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:4,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1233012,&quot;publication_name&quot;:&quot;Soup to Software&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!dk-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6058d174-9eca-419b-9523-6c36acf15e68_256x256.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;1ac0e5da-f47b-4e8b-a3e1-bb5d626779c1&quot;,&quot;caption&quot;:&quot;In 2022 I started trying to increase my revenue through Github Sponsors. It is a platform for open source maintainers to receive remuneration for their contributions. It can be a one-time donation or recurring. Since logging sponsorships, it has been a modest. The more support means the more I can focus on Two.js during my workdays. So, when I received &#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Beefing up Two.js Thanks to Session 3 of Github&#8217;s Secure Open Source Fund&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1596155,&quot;name&quot;:&quot;Jono Brandel&quot;,&quot;bio&quot;:&quot;I use graphic design and computer programming to explore the expressive qualities of technology.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/49c543c2-3720-4dfe-ab08-af8d30e94428_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-02-17T19:04:29.242Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!IcMQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac43037-b08c-409c-8445-6ba3703a623e_3024x1898.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jonofyi.substack.com/p/beefing-up-twojs-thanks-to-session&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:187927855,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1233012,&quot;publication_name&quot;:&quot;Soup to Software&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!dk-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6058d174-9eca-419b-9523-6c36acf15e68_256x256.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;b67f33ab-755e-4781-afe7-b85f80eeeac9&quot;,&quot;caption&quot;:&quot;The long running and fairly popular two-dimensional drawing API for the web, Two.js has received many feature requests over its 13 year lifespan. None has been requested more than adding the ability to declaratively create and manage a scene within React&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;A Better Way to Use Two.js in React&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1596155,&quot;name&quot;:&quot;Jono Brandel&quot;,&quot;bio&quot;:&quot;I use graphic design and computer programming to explore the expressive qualities of technology.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/49c543c2-3720-4dfe-ab08-af8d30e94428_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-10-22T15:02:53.947Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7829a670-accf-43f6-bf46-f0b09af9b8a7_1152x640.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jonofyi.substack.com/p/a-better-way-to-use-twojs-in-react&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:176715081,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:5,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1233012,&quot;publication_name&quot;:&quot;Soup to Software&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!dk-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6058d174-9eca-419b-9523-6c36acf15e68_256x256.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;5f3ec6ff-32d6-4f60-8315-89a565b01b52&quot;,&quot;caption&quot;:&quot;Last year I recounted how I had made developments to an ongoing creative inquiry I call &#8220;Shape of Art&#8221;. In the latest iteration of my now seven year inquiry into trying to grapple with how to give form to the pantheon of arts, I built two key improvements that make navigating the data more interesting. The improvements are to the underlying visualizatio&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Directing the Forces on Artists&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1596155,&quot;name&quot;:&quot;Jono Brandel&quot;,&quot;bio&quot;:&quot;I use graphic design and computer programming to explore the expressive qualities of technology.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/49c543c2-3720-4dfe-ab08-af8d30e94428_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-06-01T06:31:01.180Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!GWp0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92ac2e07-c401-4d1e-809c-9bfe184d810d_3840x2160.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jonofyi.substack.com/p/directing-the-forces-on-artists&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:199231182,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:4,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1233012,&quot;publication_name&quot;:&quot;Soup to Software&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!dk-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6058d174-9eca-419b-9523-6c36acf15e68_256x256.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;9fa16beb-4778-475a-83fd-c005d1e2d186&quot;,&quot;caption&quot;:&quot;When I was an undergraduate student at UCLA&#8217;s Design Media Arts program and a master&#8217;s candidate at Paris College of Art, there were several common ideas that were presented to me. Of the these ideas, one has resurfaced in the wake of the AI wave: materiality. Let me explain. Throughout the creative process, an artist is presented with choices. The tool&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;An Unexpected Goodbye&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1596155,&quot;name&quot;:&quot;Jono Brandel&quot;,&quot;bio&quot;:&quot;I use graphic design and computer programming to explore the expressive qualities of technology.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/49c543c2-3720-4dfe-ab08-af8d30e94428_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-28T16:03:09.845Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/20e5b60a-d5f1-4948-8387-7ccd226cd969_5120x2880.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jonofyi.substack.com/p/an-unexpected-goodbye&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:185984372,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:8,&quot;comment_count&quot;:2,&quot;publication_id&quot;:1233012,&quot;publication_name&quot;:&quot;Soup to Software&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!dk-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6058d174-9eca-419b-9523-6c36acf15e68_256x256.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Directing the Forces on Artists]]></title><description><![CDATA[This month I cover the updates I made to the 3D data visualization library Force Directed Graph.]]></description><link>https://jonofyi.substack.com/p/directing-the-forces-on-artists</link><guid isPermaLink="false">https://jonofyi.substack.com/p/directing-the-forces-on-artists</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Mon, 01 Jun 2026 06:31:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GWp0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92ac2e07-c401-4d1e-809c-9bfe184d810d_3840x2160.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last year I recounted how I had made developments to an ongoing creative inquiry I call &#8220;Shape of Art&#8221;.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> In the latest iteration of my now seven year inquiry into trying to grapple with how to give form to the pantheon of arts, I built two key improvements that make navigating the data more interesting. The improvements are to the underlying visualization library called Force Directed Graph.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> The first improvement is that you can easily control (and subsequently animate) which nodes in the graph are visible or hidden. Second, I wrote a text rendering path to include an optional label over each node. Let me walk you through it.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;4aa112b0-a453-4375-87e4-cbb622d8a10b&quot;,&quot;duration&quot;:null}"></div><h3>Refresher on Force Directed Graph</h3><p>Force Directed Graph is a free and open source JavaScript library. It allows you to feed in a data set of &#8220;nodes&#8221;, essentially an arbitrary object with properties like color, size, position. You then also feed in &#8220;links&#8221; which are references to which node should be connected to another node with a line. Documented node properties are packed into formats that can be read on a device&#8217;s graphics card. Then a physics simulation that disperses the nodes and links on every frame while the application is running. Lastly, the nodes and links are drawn to the screen in an efficient way. There are many graph libraries that display and run this type of layout. However, this library is unique because the physics simulation and the rendering are primarily running on the graphics card. This allows for many calculations to happen in parallel. For example, calculating the position, velocity, and forces between thousands of nodes sixty times a second. The results are that the nodes can be in 2D or 3D space and the drawing of thousands of nodes and links can animate.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GWp0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92ac2e07-c401-4d1e-809c-9bfe184d810d_3840x2160.png" data-component-name="Image2ToDOM"><div class="image2-inset image2-full-screen"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GWp0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92ac2e07-c401-4d1e-809c-9bfe184d810d_3840x2160.png 424w, https://substackcdn.com/image/fetch/$s_!GWp0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92ac2e07-c401-4d1e-809c-9bfe184d810d_3840x2160.png 848w, https://substackcdn.com/image/fetch/$s_!GWp0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92ac2e07-c401-4d1e-809c-9bfe184d810d_3840x2160.png 1272w, https://substackcdn.com/image/fetch/$s_!GWp0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92ac2e07-c401-4d1e-809c-9bfe184d810d_3840x2160.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GWp0!,w_5760,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92ac2e07-c401-4d1e-809c-9bfe184d810d_3840x2160.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92ac2e07-c401-4d1e-809c-9bfe184d810d_3840x2160.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;full&quot;,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1120104,&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://jonofyi.substack.com/i/199231182?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92ac2e07-c401-4d1e-809c-9bfe184d810d_3840x2160.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-fullscreen" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GWp0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92ac2e07-c401-4d1e-809c-9bfe184d810d_3840x2160.png 424w, https://substackcdn.com/image/fetch/$s_!GWp0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92ac2e07-c401-4d1e-809c-9bfe184d810d_3840x2160.png 848w, https://substackcdn.com/image/fetch/$s_!GWp0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92ac2e07-c401-4d1e-809c-9bfe184d810d_3840x2160.png 1272w, https://substackcdn.com/image/fetch/$s_!GWp0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92ac2e07-c401-4d1e-809c-9bfe184d810d_3840x2160.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 constellation of thousands and thousands of connected artists from 970 &#8211; 2023. <em>Shape of Art</em>. 2026.</figcaption></figure></div><h3>Animating Related Artists</h3><p>This Force Directed Graph is really good at animating thousands of nodes efficiently. This feature is something that I felt was lacking in previous versions of my Shape of Art studies. I had spent a lot of time creating the dataset. I was proud that I had a list of about 100,000 artists and a way to link them. Plugging the data in, the graphs move. So, it was impressive that there was a lot of nodes on the screen. But, it was not materially different from what other libraries offered. I became focused on figuring out how to make the animation more dynamic. Partly because of the library I built. Partly due to the texts of Kandinsky that inspire this inquiry in the first place. His writing has a reverence for artists, the dissonance they create for their generation, and how future generations use that as a reference point for style. When I read his text, I get the sense that there is a push-and-pull between artists that are aware of each other. This latest feature attempts to address this by revealing nodes over time. At the bottom of the latest prototype, you can drag a slider left-and-right to reveal new artists. The artists date back all the way to 970. This gives historical context, but it also heightens the tug-of-way when a new node or artist is revealed in the graph.</p><h3>Labeling Artists like a Point of Interest on a Map</h3><p>The second aspect of previous studies I made was that visitors had to hover their mouse over a node in order to see the name of the artist that node represented. I imagine Edward Tufte would describe this as a poor visualization. In <em>The Visual Display of Quantitative Information</em> he said, &#8220;Above all else, show the data&#8221;.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> My studies had lots of nodes, but not a lot of data. You could tell the nodes are connected, but to who? And why? So, I went down a path to add labels to all nodes. The first attempt I made, it was all black. There are so many nodes that adding labels that were in a font size large enough to read made visual cacophony. One night driving I was looking for directions and zoomed out of my map. Eureka! This was how I should display the labels. In maps apps, labels are only rendered at specific zoom levels. You do not need the name of all streets if you can see an entire state. The logic that I imparted to Force Directed Graph was a priority system. It prioritizes labeling nodes that are in view. In the 3D environment we render to, this means a few things. First, there is a near and a far clip space. Basically, the camera does not need to worry about seeing anything that is too close or too far. Second, it prioritizes labeling nodes who have a lot of connections. Third, it discourages labeling nodes whose neighbors are already present. Fourth, the developer can always override this in a couple of ways: either force the priority on a specific node or alter a library level property called &#8220;obscurity&#8221;. The obscurity basically loosens or tightens these priorities as a zero-to-one slider. At an obscurity level of zero, you can see all the labels. The cacophony I started with. At an obscurity of one, you cannot see any labels. And at an obscurity of 0.5, 50% of labels can be visible. This four tiered system at an obscurity level of 0.9 is what you see in the current prototype (recorded in the video above). It is fairly simple compared to a Map application, but its behavior is reminiscent of the inspiration.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://archive.jono.fyi/projects/shape-of-art/r27/index.html&quot;,&quot;text&quot;:&quot;Try the latest prototype&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://archive.jono.fyi/projects/shape-of-art/r27/index.html"><span>Try the latest prototype</span></a></p><p>These two features have been months in the making. You can tell because the visual aesthetic of this prototype is pretty barebones. Personally, this version speaks to me more than the previous ones. It has more data. It is more alive. While not visible, I have also baked in color coding based on output formats defined in Artsy&#8217;s Art Genome Project.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> I am excited to add color to the next version. If you give this latest version a try, I would love to hear your thoughts.</p><p>&#8211;Jono</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"><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;add10d29-aad7-421f-8f73-92be6cd010db&quot;,&quot;caption&quot;:&quot;In 2023, I shared a prototype of about 1,000 pollinating white dots on a gray background. It was meant to graph the related artists and their related artists of Ren&#233; Magritte as prescribed by a k-means clustering algorithm brought to us by Artsy&#8217;s Art Genome Project&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Now Thousands of Connections&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1596155,&quot;name&quot;:&quot;Jono Brandel&quot;,&quot;bio&quot;:&quot;I use graphic design and computer programming to explore the expressive qualities of technology.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/49c543c2-3720-4dfe-ab08-af8d30e94428_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-09-23T15:02:42.797Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b99dcd2-a188-4aa6-a345-5717f3d02e44_5120x2880.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jonofyi.substack.com/p/now-thousands-of-connections&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:174288215,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1233012,&quot;publication_name&quot;:&quot;Soup to Software&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!dk-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6058d174-9eca-419b-9523-6c36acf15e68_256x256.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Force Directed Graph. 2026. <a href="https://jonobr1.com/force-directed-graph/">https://jonobr1.com/force-directed-graph/</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p><em>The Visual Display of Quantitative Information.</em> Edward R. Tufte. 1983 and 2001. <a href="https://www.edwardtufte.com/book/the-visual-display-of-quantitative-information/">https://www.edwardtufte.com/book/the-visual-display-of-quantitative-information/</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p><em>The Art Genome Project</em>. Artsy. 2010s &#8211; Present. <a href="https://www.artsy.net/categories">https://www.artsy.net/categories</a></p></div></div>]]></content:encoded></item><item><title><![CDATA[Client Project: Dataland Arrives]]></title><description><![CDATA[The museum dedicated to AI and data-visualization arts is announcing that its doors will open in to the public soon.]]></description><link>https://jonofyi.substack.com/p/client-project-dataland-arrives-in</link><guid isPermaLink="false">https://jonofyi.substack.com/p/client-project-dataland-arrives-in</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Thu, 23 Apr 2026 18:01:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!eQyv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ec14294-3aab-46bf-ad4a-863dd1172bcc_1693x934.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It is finally coming. Three and a half years after joining forces with Refik Anadol Studio,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> the pieces are in place to welcome the general public to experience Dataland.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> The first museum dedicated to AI and data-visualization arts. For the inaugural exhibition <em>Machine Dreams: Rainforest</em>, &#8220;visitors open up a dialog between human presence and the memories of Earth.&#8221; Powered by the studio&#8217;s <em>Large Nature Model</em>, a custom AI model trained on one of the largest collections of data from the natural world.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> The <em>Large Nature Model</em> powers the art. And Dataland&#8217;s members will power the museum. Today I am going to talk about the memberships for Dataland and a little of what went into the process.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eQyv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ec14294-3aab-46bf-ad4a-863dd1172bcc_1693x934.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eQyv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ec14294-3aab-46bf-ad4a-863dd1172bcc_1693x934.png 424w, https://substackcdn.com/image/fetch/$s_!eQyv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ec14294-3aab-46bf-ad4a-863dd1172bcc_1693x934.png 848w, https://substackcdn.com/image/fetch/$s_!eQyv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ec14294-3aab-46bf-ad4a-863dd1172bcc_1693x934.png 1272w, https://substackcdn.com/image/fetch/$s_!eQyv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ec14294-3aab-46bf-ad4a-863dd1172bcc_1693x934.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eQyv!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ec14294-3aab-46bf-ad4a-863dd1172bcc_1693x934.png" width="1200" height="661.8131868131868" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4ec14294-3aab-46bf-ad4a-863dd1172bcc_1693x934.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:803,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:703419,&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://jonofyi.substack.com/i/195200870?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ec14294-3aab-46bf-ad4a-863dd1172bcc_1693x934.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eQyv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ec14294-3aab-46bf-ad4a-863dd1172bcc_1693x934.png 424w, https://substackcdn.com/image/fetch/$s_!eQyv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ec14294-3aab-46bf-ad4a-863dd1172bcc_1693x934.png 848w, https://substackcdn.com/image/fetch/$s_!eQyv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ec14294-3aab-46bf-ad4a-863dd1172bcc_1693x934.png 1272w, https://substackcdn.com/image/fetch/$s_!eQyv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ec14294-3aab-46bf-ad4a-863dd1172bcc_1693x934.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Membership Tiers Call to Action. Dataland. 2026.</figcaption></figure></div><h3>What goes into a museum membership?</h3><p>Hopefully when you look at the tiers above, it is easy to discern the tiers. It is a sliding scale in price and in benefits. But, how did we come to this specifically? During my time at NEW INC, I learned a bit from meeting museum operators.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> Working on Dataland opened up my eyes further. My colleagues at Constellation Immersive started by putting together a survey of what types of benefits currently exist.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> This ranged from membership offerings of established museum to more avant-garde ticketed experiences. Numerous meetings over the years were held to discuss, at a high level or put another way: from the consumer&#8217;s perspective, what &#8220;felt right&#8221;. A natural compliment emerged of different motivations: maximize memberships and offer a truly unique experience. </p><p>To maximize memberships may sound terse, but the reality for a new, and particularly small, institution like Dataland is that memberships are vital. Operationally, memberships account for a majority of stable revenue. Beyond monetary incentives, having a strong membership group establishes a clear value proposition. And a museum&#8217;s members can guide what that value proposition ultimately becomes. How it operates and what should be on display. The museum serves the community and a clear membership group clarifies this.</p><p>To offer a truly unique experience starts with the exhibition, right? It can. But, it does not always. The presentation of tickets and memberships convey expectations for a visitor. By presenting benefits, a museum frames what kind of experience lies ahead. Everything from the price, through the member benefits, to the names frame the experience. Is this a high brow or casual experience? Is there one gallery or many and how many exhibitions are there? The membership can begin to communicate this. From the meetings I was in, it was clear that the founders appreciate an agency from their audience. They encourage participation and imagine that memberships with a bit of whimsy can foster this.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dug5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff726bfb6-0fdd-4866-bf70-55f96155af82_1922x1082.png" data-component-name="Image2ToDOM"><div class="image2-inset image2-full-screen"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dug5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff726bfb6-0fdd-4866-bf70-55f96155af82_1922x1082.png 424w, https://substackcdn.com/image/fetch/$s_!dug5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff726bfb6-0fdd-4866-bf70-55f96155af82_1922x1082.png 848w, https://substackcdn.com/image/fetch/$s_!dug5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff726bfb6-0fdd-4866-bf70-55f96155af82_1922x1082.png 1272w, https://substackcdn.com/image/fetch/$s_!dug5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff726bfb6-0fdd-4866-bf70-55f96155af82_1922x1082.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dug5!,w_5760,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff726bfb6-0fdd-4866-bf70-55f96155af82_1922x1082.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f726bfb6-0fdd-4866-bf70-55f96155af82_1922x1082.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;full&quot;,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:160618,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jonofyi.substack.com/i/195200870?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff726bfb6-0fdd-4866-bf70-55f96155af82_1922x1082.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-fullscreen" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dug5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff726bfb6-0fdd-4866-bf70-55f96155af82_1922x1082.png 424w, https://substackcdn.com/image/fetch/$s_!dug5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff726bfb6-0fdd-4866-bf70-55f96155af82_1922x1082.png 848w, https://substackcdn.com/image/fetch/$s_!dug5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff726bfb6-0fdd-4866-bf70-55f96155af82_1922x1082.png 1272w, https://substackcdn.com/image/fetch/$s_!dug5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff726bfb6-0fdd-4866-bf70-55f96155af82_1922x1082.png 1456w" sizes="100vw"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Membership Comparison Chart: Explorer, Dreamer, Pioneer. Dataland. 2026.</figcaption></figure></div><p>Balancing these two competing motivations brought us to: Explorer, Dreamer, and Pioneer memberships. Practically speaking, Explorer is your typical individual annual museum membership. Dreamer has perks that make it a good value for a household. Lastly, Pioneer is a uniquely exclusive tier for collectors, offering both access and art objects. That is the vision behind the memberships. To fill out each tiers&#8217; offerings, however, required more back-and-forth. This time that dialog occurred with our ticketing vendor. The team had to come together to balance how we could make good on each benefit. The discounts and Member Access, for instance, are conveyed and managed by the ticketing vendor. We worked with them to define what was possible. For other items, like Priority Gallery Entry, we defined commonsense solutions like marking tickets different colors for employees to easily verify a visitor&#8217;s priority. Each benefit requires an accord among the systems we employ and operate. We had the vision and over time we chiseled away at potential benefits. The chart above is the result.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://dataland.art/memberships&quot;,&quot;text&quot;:&quot;Learn more about Dataland Memberships&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://dataland.art/memberships"><span>Learn more about Dataland Memberships</span></a></p><p>It took almost the entire three and a half years to come up with the tiers and benefits. The implementation, on the other hand, took a couple of months. While the chart may look straightforward, the systems in place to convey the chart are more complex. We rely on numerous vendors in order to achieve the membership experience. A lot of my job in the context of memberships, has been to make sure that these systems are sharing just enough. What does &#8220;just enough&#8221; mean? It comes from Principle of Least Privilege or PoLP.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a> In cybersecurity circles, PoLP is a methodology of sharing that reduces a potential attack surfaces. This is done by granting a service the minimum permissions necessary to perform a job. In the case of Dataland, we give the minimum information necessary for a vendor to perform its job. It is in part for security reasons, but it is also in part for modularity. If we can reduce the inputs necessary for a module to work, then we can change that module down the road with minimal impact to the system as a whole. My hope is that this &#8220;just enough&#8221; method serves the museum well as it matures, like supporting languages other than English.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mQNP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7950d4d5-c81a-4095-8190-1733c8ac4a6d_1707x932.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mQNP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7950d4d5-c81a-4095-8190-1733c8ac4a6d_1707x932.png 424w, https://substackcdn.com/image/fetch/$s_!mQNP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7950d4d5-c81a-4095-8190-1733c8ac4a6d_1707x932.png 848w, https://substackcdn.com/image/fetch/$s_!mQNP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7950d4d5-c81a-4095-8190-1733c8ac4a6d_1707x932.png 1272w, https://substackcdn.com/image/fetch/$s_!mQNP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7950d4d5-c81a-4095-8190-1733c8ac4a6d_1707x932.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mQNP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7950d4d5-c81a-4095-8190-1733c8ac4a6d_1707x932.png" width="1456" height="795" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7950d4d5-c81a-4095-8190-1733c8ac4a6d_1707x932.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:795,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:198125,&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://jonofyi.substack.com/i/195200870?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7950d4d5-c81a-4095-8190-1733c8ac4a6d_1707x932.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_!mQNP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7950d4d5-c81a-4095-8190-1733c8ac4a6d_1707x932.png 424w, https://substackcdn.com/image/fetch/$s_!mQNP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7950d4d5-c81a-4095-8190-1733c8ac4a6d_1707x932.png 848w, https://substackcdn.com/image/fetch/$s_!mQNP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7950d4d5-c81a-4095-8190-1733c8ac4a6d_1707x932.png 1272w, https://substackcdn.com/image/fetch/$s_!mQNP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7950d4d5-c81a-4095-8190-1733c8ac4a6d_1707x932.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">N8N workflow to ensure the Dataland CRM knows who is an active members. 2026.</figcaption></figure></div><p>So, that is a look on how we landed on memberships for Dataland. I hope it has piqued your interest in Dataland or its memberships. It certainly has been a challenging puzzle to work on over the years. As always, feedback is greatly appreciated.</p><p>&#8212;Jono</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>Refik Anadol Studio. 2026. <a href="https://refikanadolstudio.com/">https://refikanadolstudio.com/</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Dataland. 2026. <a href="https://dataland.art/">https://dataland.art/</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Large Nature Model. 2024. <a href="https://dataland.art/about/large-nature-model">https://dataland.art/about/large-nature-model</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;1b4dc302-7c6f-49b5-960f-365932bdc934&quot;,&quot;caption&quot;:&quot;As part of my foray into the domain of museums, I spent two weeks in November attending Museum Computer Network's virtual conference courtesy of my incubator, NEW INC. The conference covered a wide range of topics from digital asset management, ethics, social justice within the workforce, and the effects of the pande&#8230;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Digging into Cultural Futures&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1596155,&quot;name&quot;:&quot;Jono Brandel&quot;,&quot;bio&quot;:&quot;I use graphic design and computer programming to explore the expressive qualities of technology.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/49c543c2-3720-4dfe-ab08-af8d30e94428_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2020-11-22T16:00:00.000Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!2iUt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1b16719a-268d-4658-82e8-1106d20f4b57_960x540.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jonofyi.substack.com/p/digging-into-cultural-futures&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:89495138,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1233012,&quot;publication_name&quot;:&quot;Soup to Software&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!dk-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6058d174-9eca-419b-9523-6c36acf15e68_256x256.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>Constellation Immersive. 2026. <a href="https://constellationimmersive.com/">https://constellationimmersive.com/</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>Principle of Least Privilege. Wikipedia. <a href="https://en.wikipedia.org/wiki/Principle_of_least_privilege">https://en.wikipedia.org/wiki/Principle_of_least_privilege</a></p></div></div>]]></content:encoded></item><item><title><![CDATA[Creative Growth Strategy: A Different Kind of Digital Playbook]]></title><description><![CDATA[At the beginning of the year I joined a handful of other solo business owners in creative industries to work on growing our businesses led by Matilda Lucy.]]></description><link>https://jonofyi.substack.com/p/creative-growth-strategy-a-different</link><guid isPermaLink="false">https://jonofyi.substack.com/p/creative-growth-strategy-a-different</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Tue, 24 Mar 2026 15:02:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!i88r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a73c549-699c-473c-8e8c-4f46f73e99ee_1262x1155.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The beginning of the year always goes by quickly; I cannot believe it is almost April. Those first few weeks when everyone still says &#8220;Happy New Year&#8221; to each other at all levels of correspondence is a time filled with optimism and gumption. There are so many possibilities of how the year will play out. I want to tackle all my problems at once. And, as night falls early (at least in the northern hemisphere), I anticipate how productive I will be. I dream big. But, I am not always productive with my time. The year can be a grind. External developments can take you places you did not expect throughout the year. So, when I saw that digital strategist for startups Matilda Lucy was holding a sprint for solo business owners to channel this energy over six weeks, I immediately signed up.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> I have been following Matilda for awhile. I appreciate her Substack, <a href="https://matildalucy.substack.com/">Broken Growth</a>, because she tackles marketing in a more meditative, holistic, and dare I say individual way. It is the kind of way I like to think I run my own business. In today&#8217;s newsletter, I will walk you through what the Creative Growth Strategy was, what I learned in the process, and what I got out of it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!i88r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a73c549-699c-473c-8e8c-4f46f73e99ee_1262x1155.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i88r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a73c549-699c-473c-8e8c-4f46f73e99ee_1262x1155.png 424w, https://substackcdn.com/image/fetch/$s_!i88r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a73c549-699c-473c-8e8c-4f46f73e99ee_1262x1155.png 848w, https://substackcdn.com/image/fetch/$s_!i88r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a73c549-699c-473c-8e8c-4f46f73e99ee_1262x1155.png 1272w, https://substackcdn.com/image/fetch/$s_!i88r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a73c549-699c-473c-8e8c-4f46f73e99ee_1262x1155.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i88r!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a73c549-699c-473c-8e8c-4f46f73e99ee_1262x1155.png" width="1200" height="1098.256735340729" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4a73c549-699c-473c-8e8c-4f46f73e99ee_1262x1155.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:1155,&quot;width&quot;:1262,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:173944,&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://jonofyi.substack.com/i/191921341?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a73c549-699c-473c-8e8c-4f46f73e99ee_1262x1155.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!i88r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a73c549-699c-473c-8e8c-4f46f73e99ee_1262x1155.png 424w, https://substackcdn.com/image/fetch/$s_!i88r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a73c549-699c-473c-8e8c-4f46f73e99ee_1262x1155.png 848w, https://substackcdn.com/image/fetch/$s_!i88r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a73c549-699c-473c-8e8c-4f46f73e99ee_1262x1155.png 1272w, https://substackcdn.com/image/fetch/$s_!i88r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a73c549-699c-473c-8e8c-4f46f73e99ee_1262x1155.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 screenshot from our working document highlighting my Growth Donut, 2026.</figcaption></figure></div><p>Officially titled the <em>Creative Growth Strategy Sprint</em>, it was six 90 minute sessions filled with digestible activities to cultivate your business as a lifestyle.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> It started the first week of January and was held on Wednesdays. The cohort consisted of solo business owners and freelancers from Europe, the UK, and the east coast of the US. Matilda laid out terms like Type 2 Growth.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> An alternative growth structure to the up-and-to-the-right hockey stick of positivism. She also gave us building blocks to make a Growth Donut (pictured above), a way to quantitatively look at our time and put boundaries around what activities we engage with. This was used to great effect to reveal the activities that I did not like or want to do. Each 90 minute session included: some personal time for reflection and jotting ideas down, small breakout groups to talk freely and get to know your cohort, listening time to hear about the theme or concept of the week from Matilda, and reflection time to ask questions and recap what we went over. As Matilda is based in London and I am in Los Angeles, these sessions were first thing in the morning for me. It was a great albeit sometimes challenging way to start a hump day. Despite the time difference, I always felt energized by the time the session was over at 7:30 in the morning with the sun barely even rising.</p><p>I came in holding a couple of thoughts from the buzz of the New Year. First, Dataland is opening this spring.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> As excited as I am about the launch of the museum&#8217;s in-person experience, as a business owner I see this as a crucial moment to evolve my business. The launch of Dataland presents case studies in how I would <em>like </em>to work with future clients. I want to capture that to make the next five years of my business as full of growth as the first five have been. Second, I wanted to create a better pipeline to produce social media content. Ever since the pandemic, I have withdrawn from trying to grab the potential five second spotlight of social media virality. Recently, I miss structuring my own visual work in a way that I can share it online. I wanted to use Matlida&#8217;s sprint as a way to refocus and make good on these motivations. The sessions were eye-opening. As each week passed, it was more obvious that social media as a format for producing content just did not match with the type of experiences I want to produce; nor does social media offer the value I truly seek for my business. The sessions also gave me better insight into how I should go about putting together case studies for landing that next big client through smaller actionable steps: create client personas, send out feedback questionnaires to current and former clients, see the landscape of who my competitors are. Do these smaller steps represent opportunities to collaborate with others? If so, that could be the spark that starts a bigger relationship.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://jonofyi.notion.site/Creative-Growth-Strategy-2026-2e1349ab4b0181ba8b21f3f16e60be9c&quot;,&quot;text&quot;:&quot;See my Growth Strategy document&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://jonofyi.notion.site/Creative-Growth-Strategy-2026-2e1349ab4b0181ba8b21f3f16e60be9c"><span>See my Growth Strategy document</span></a></p><p>In all, the six sessions built on top of each other. They also presented different analogies and games or lenses to understand what you are doing. Each week we filled out a notion template that Matilda created for the sprint. At the end of the six sessions we had a robust Growth Strategy document (click the button above to see mine). It has the Growth Donut, brand taglines, keyword diagrams of what makes work important to me, a competitive landscape of other inspiring creatives in my space, and activities that I can do to make meaningful progress toward my longterm goals. Or as Matilda describes when landscaping our garden, our Big Ol&#8217; Tree. The document is my personal output and accountability to stay focused and channel all that good intention from the beginning of the year. But, I will remember the Creative Growth Strategy sprint for the journey and colleagues I met along the way.</p><p>If you read my Growth Strategy document, I would love to hear your reactions to it. And, if you run your own business, I highly recommend considering Matilda for brand strategy needs.</p><p>&#8212;Jono</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><em>Creative Strategy and Momentum for Small Brands</em>. Matilda Lucy. https://www.matildalucy.com/</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:190628236,&quot;url&quot;:&quot;https://matildalucy.substack.com/p/grow-your-solo-business-this-spring&quot;,&quot;publication_id&quot;:2107816,&quot;embedding_publication_id&quot;:null,&quot;publication_name&quot;:&quot;Broken Growth&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!uhAU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F850e4eec-25d5-41dc-9752-6c29d2122da6_1080x1080.png&quot;,&quot;title&quot;:&quot;Grow your solo business this spring &#127799;Save your spot&quot;,&quot;truncated_body_text&quot;:null,&quot;date&quot;:&quot;2026-03-11T16:16:42.194Z&quot;,&quot;like_count&quot;:13,&quot;comment_count&quot;:2,&quot;bylines&quot;:[{&quot;id&quot;:16811243,&quot;name&quot;:&quot;Matilda Lucy&quot;,&quot;handle&quot;:&quot;matildalucy&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18652b6-d080-46bb-87d5-52bbd1b6a4a2_778x776.png&quot;,&quot;bio&quot;:&quot;London-based strategist. Writing Broken Growth. Supporting one person businesses to grow creative ecosystems.&quot;,&quot;profile_set_up_at&quot;:&quot;2023-10-08T11:43:15.348Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-10-08T11:39:15.302Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:2112330,&quot;user_id&quot;:16811243,&quot;publication_id&quot;:2107816,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:2107816,&quot;name&quot;:&quot;Broken Growth&quot;,&quot;subdomain&quot;:&quot;matildalucy&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Reimagining growth for weird and wonderful one person businesses. From big picture thinking to practical strategies.&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/850e4eec-25d5-41dc-9752-6c29d2122da6_1080x1080.png&quot;,&quot;author_id&quot;:16811243,&quot;primary_user_id&quot;:16811243,&quot;theme_var_background_pop&quot;:&quot;#D10000&quot;,&quot;created_at&quot;:&quot;2023-11-15T16:24:59.602Z&quot;,&quot;email_from_name&quot;:&quot;Matilda from Broken Growth&quot;,&quot;copyright&quot;:&quot;Matilda Lucy&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;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;magaziney&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7609cee1-9e9a-4710-8580-33e5ebb49001_1080x300.png&quot;}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:null,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:null,&quot;paidPublicationIds&quot;:[],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://matildalucy.substack.com/p/grow-your-solo-business-this-spring?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!uhAU!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F850e4eec-25d5-41dc-9752-6c29d2122da6_1080x1080.png" loading="lazy"><span class="embedded-post-publication-name">Broken Growth</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Grow your solo business this spring &#127799;Save your spot</div></div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">7 months ago &#183; 13 likes &#183; 2 comments &#183; Matilda Lucy</div></a></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p><em>Type 2 Growth</em>. The Technium. 2024. https://kk.org/thetechnium/type-2-growth/</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p><em>Check out first look images of L.A.&#8217;s trippy museum of AI arts &#8212; and its new opening plan</em>. Jessica Gelt. Los Angeles Times. 2025. https://www.latimes.com/entertainment-arts/story/2025-10-23/dataland-museum-of-ai-arts-los-angeles-opening-date</p></div></div>]]></content:encoded></item><item><title><![CDATA[Beefing up Two.js Thanks to Session 3 of Github’s Secure Open Source Fund]]></title><description><![CDATA[Last fall I joined Github and dozens of other maintainers for a month of security workshops, milestones, and learnings preparing our open source libraries for worst-case scenarios.]]></description><link>https://jonofyi.substack.com/p/beefing-up-twojs-thanks-to-session</link><guid isPermaLink="false">https://jonofyi.substack.com/p/beefing-up-twojs-thanks-to-session</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Tue, 17 Feb 2026 19:04:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!IcMQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac43037-b08c-409c-8445-6ba3703a623e_3024x1898.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In 2022 I started trying to increase my revenue through Github Sponsors.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> It is a platform for open source maintainers to receive remuneration for their contributions. It can be a one-time donation or recurring. Since logging sponsorships, it has been a modest. The more support means the more I can focus on Two.js during my workdays. So, when I received an email from Gregg and Kevin from Github last year, I was ecstatic. They were looking for maintainers and contributors for Github&#8217;s third session to secure open source: a month&#8217;s long series of virtual talks, workshops, and milestones for the cohort of around 100 maintainers to challenge themselves and their projects in service of strengthening open source and its community. I applied and luckily got in. Below you can find my application &#8220;interview&#8221;, a short video explaining why I want to join. The session kicked off a couple weeks later in September. Having never taken a traditional computer science course, I did not have a lot of expectations. It was challenging, but extremely rewarding. I was often the beginner in the room, but a few times was ahead of the pack. Here are my thoughts on the experience as whole.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;2affa895-7fd3-42e1-89af-40dcf20abb99&quot;,&quot;duration&quot;:null}"></div><h3>What does security have to do with drawing on the web?</h3><p>Two.js runs entirely in the browser, so I had not historically framed it as high risk software. But during the workshop <em>Licensing and Security Compliance</em>, I learned that your audience can also be an attack surface. Many developers who use Two.js are newer to programming, and security issues often arise not from direct attacks but from misunderstandings between a developer and an API. In reviewing the codebase with automated scanning tools introduced in the session, I revisited Two.js&#8217;s SVG interpreter, which renders markup into the DOM using <code>innerHTML</code> so the browser can parse it. It is practical, but it is also a dangerous parsing pattern if misused.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> There has not been an incident to my knowledge, but the possibility itself is instructive. I am not interested in restricting expression simply because misuse is possible. What matters, however, is transparency. If something carries risk, that risk should be visible and documented. This way the developer using the library can decide for themselves and make informed decisions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IcMQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac43037-b08c-409c-8445-6ba3703a623e_3024x1898.png" data-component-name="Image2ToDOM"><div class="image2-inset image2-full-screen"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IcMQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac43037-b08c-409c-8445-6ba3703a623e_3024x1898.png 424w, https://substackcdn.com/image/fetch/$s_!IcMQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac43037-b08c-409c-8445-6ba3703a623e_3024x1898.png 848w, https://substackcdn.com/image/fetch/$s_!IcMQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac43037-b08c-409c-8445-6ba3703a623e_3024x1898.png 1272w, https://substackcdn.com/image/fetch/$s_!IcMQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac43037-b08c-409c-8445-6ba3703a623e_3024x1898.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IcMQ!,w_5760,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac43037-b08c-409c-8445-6ba3703a623e_3024x1898.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ac43037-b08c-409c-8445-6ba3703a623e_3024x1898.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;full&quot;,&quot;height&quot;:914,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:500897,&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://jonofyi.substack.com/i/187927855?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac43037-b08c-409c-8445-6ba3703a623e_3024x1898.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-fullscreen" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IcMQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac43037-b08c-409c-8445-6ba3703a623e_3024x1898.png 424w, https://substackcdn.com/image/fetch/$s_!IcMQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac43037-b08c-409c-8445-6ba3703a623e_3024x1898.png 848w, https://substackcdn.com/image/fetch/$s_!IcMQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac43037-b08c-409c-8445-6ba3703a623e_3024x1898.png 1272w, https://substackcdn.com/image/fetch/$s_!IcMQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac43037-b08c-409c-8445-6ba3703a623e_3024x1898.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 inspiring and also intimidating spreadsheet to track all participants progress. Github Secure Open Source Fund, 2025.</figcaption></figure></div><h3>You can never be too prepared</h3><p>Another workshop focused on responding to security incidents, and the takeaway was less about fear and more about preparedness. When expectations are documented and a disclosure process is clear, project maintainers can operate with more ease because responsibility has been framed in advance. Before this session, Two.js did not have a formal security policy. Now it does. There is a <code>SECURITY.md</code> in the repository and on the website outlining how vulnerabilities can be reported and addressed.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> Nothing dramatic prompted it. But preparedness is a tool to use in an emergency and a tool to build trust with your community.</p><h3>Here is how Two.js grew</h3><p>Over the month I updated dependencies so the development environment reflects current standards, enabled automated vulnerability and dependency monitoring, formalized publishing workflows so releases are signed and traceable, and updated documentation to make potential attack surfaces explicit in public issues. None of these changes alter how you draw a shape or animate a scene, but they strengthen the scaffolding around the library. Looking at the project through a security lens also made me more aware of how durable early design decisions become. Like law in a democratic society, once a precedent is set, there is very little momentum to change it, and that durability carries responsibility.</p><h3>Two.js can continue leveling up with your help</h3><p>The cohort of maintainers in the program was generous and humbling, reinforcing how much modern software depends on open source and how much trust is embedded in that dependency. Two.js is sustained primarily through client work, and sponsorship represents only a small portion of its support. If it were better funded, I would focus on expanding its portability so the API can be used across a variety of environments and contexts; in mobile apps for instance. For now, the most meaningful contribution is participation. If you have thoughts on the new security policy or how risks are documented, I welcome that conversation on Github.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> That month I was reminded that maintaining open source is not primarily about bugs, but about community, trust, and leading by example.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.blog/open-source/maintainers/securing-the-ai-software-supply-chain-security-results-across-67-open-source-projects/&quot;,&quot;text&quot;:&quot;See the other participating projects&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.blog/open-source/maintainers/securing-the-ai-software-supply-chain-security-results-across-67-open-source-projects/"><span>See the other participating projects</span></a></p><p>I want to take the final moments of this reflection to thank Github and the dozens of people and partner organizations that make Github&#8217;s Secure Open Source Fund possible. I also want to thank the other maintainers and projects. It was so inspiring to see so many projects (many of which I have used in my own projects) and pull the curtain back in their own journeys in the breakout rooms. It was a truly global presence. My last thought on all this: security gets a bad rap. In my experience, security is an unspoken term that slows the velocity of building. I tried to avoid it or at least only engage at towards the end of a project&#8217;s lifecycle. The Session opened my eyes to how security can be a mindset. One that does not only protect the work you make, but challenge it to make it better.</p><p>&#8212;Jono </p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p><a href="https://github.com/sponsors/jonobr1">https://github.com/sponsors/jonobr1</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p><a href="https://github.com/jonobr1/two.js/issues/797">https://github.com/jonobr1/two.js/issues/797</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p><a href="https://two.js.org/security/">https://two.js.org/security/</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p><a href="https://github.com/jonobr1/two.js/issues/new?template=question.md">https://github.com/jonobr1/two.js/issues/new?template=question.md</a></p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[An Unexpected Goodbye]]></title><description><![CDATA[Over the holidays I felt sad realizing I had likely made my last project without the help of AI.]]></description><link>https://jonofyi.substack.com/p/an-unexpected-goodbye</link><guid isPermaLink="false">https://jonofyi.substack.com/p/an-unexpected-goodbye</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Wed, 28 Jan 2026 16:03:09 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/20e5b60a-d5f1-4948-8387-7ccd226cd969_5120x2880.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When I was an undergraduate student at UCLA&#8217;s Design Media Arts program and a master&#8217;s candidate at Paris College of Art, there were several common ideas that were presented to me. Of the these ideas, one has resurfaced in the wake of the AI wave: materiality. Let me explain. Throughout the creative process, an artist is presented with choices. The tools and materials you choose to realize the work can support or damage your concept for the piece. In the realm of software, these choices can be aesthetic. For instance, in <em>Patatap</em> everything drawn on screen is made with vector graphics.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> This provides a smooth and crisp look. The choices can also be about efficiency. In the VR music video <em>What You Don&#8217;t Know</em>, I needed to ground the user in three-dimensional space.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> I chose to do this with a particle system (seen in the video below as the little white specs in the center of the interface). The system ended up being a custom component that leveraged on-device graphics cards to render thousands of snow flakes in a single draw call making it possible to run the music video on low-powered but cheaper and more accessible devices like Oculus Go.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> Lastly, the choices can be about process. When I was learning Processing under Casey Reas, I made a software sketch about a recurring dream I had where I was falling from the sky.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> In it, I held a stick in each hand to direct where I was falling towards. This was something extremely personal. As such, I decided to hand draw all the assets myself. The do-it-yourself process, reinforced the authenticity of just how personal the sketch was. These are just a few examples of choices I made. Every project has a lot of choices, different kinds of choices. Projects demand you make sound decisions. What is all too easy with agentic workflows in AI is to offload choices. Let the AI choose. Today I will share how agentic workflows have seeped into my process.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;efdcad86-4971-4bc7-be7b-45c6e0f54bd6&quot;,&quot;duration&quot;:null}"></div><p>About this time last year, I started using Large Language Models (LLMs) like ChatGPT and Claude regularly for work. As a freelance type of collaborator, I found myself often in scenarios where I needed to get something done that was outside of my zone of expertise. I remember I used LLMs to build out header authentication for the microservices that support the Living Encyclopedia';<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> definitely outside of my zone. This kind of need is too small to hire another person to help me out. In spring, I started using LLMs to help game plan projects: both client and personal ones. At the time, it felt like a kind of smart notebook. I could keep a tally of all my creative inquiries and have the LLM follow up on preliminary research for it. In the summer, I integrated LLMs into some of my source code repositories. This allowed me to asynchronously delegate tasks (particularly code related issues) to an LLM to do that I could then review. See the screenshot below. In autumn, I had LLMs build out end-to-end product roadmaps and then execute them. Again, the Living Encyclopedia became a testbed to develop a custom chat interface based on Matrix Chat&#8217;s protocol.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a> Today, I use LLMs to offload a lot of work that I would have otherwise done myself. Tasks that would have taken a long time to do. AI is in my editors, connected to repositories, installed in my terminals, and I have AI apps downloaded to converse, search, and research for me. In all, I have spent north of $1,000 in the last year on various AI services and products. I have subscriptions and pay-per-use token charges by programmatically accessing AI services. They are mostly LLMs, but also educational material on how to prompt, and generative AI or <em>GenAI</em> services to produce images, videos, 3d models, audio, design artifacts, etc.. The landscape moves fast. And based on the initial boost I got last year, I have been motivated to try out services as they come out. I am constantly assessing whether a product or service improves or expands my workflow.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uou8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8945ea74-57ff-4676-91bb-440ab86ef457_2784x3054.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uou8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8945ea74-57ff-4676-91bb-440ab86ef457_2784x3054.png 424w, https://substackcdn.com/image/fetch/$s_!uou8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8945ea74-57ff-4676-91bb-440ab86ef457_2784x3054.png 848w, https://substackcdn.com/image/fetch/$s_!uou8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8945ea74-57ff-4676-91bb-440ab86ef457_2784x3054.png 1272w, https://substackcdn.com/image/fetch/$s_!uou8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8945ea74-57ff-4676-91bb-440ab86ef457_2784x3054.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uou8!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8945ea74-57ff-4676-91bb-440ab86ef457_2784x3054.png" width="1200" height="1316.2087912087911" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8945ea74-57ff-4676-91bb-440ab86ef457_2784x3054.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:1597,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:1570784,&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://jonofyi.substack.com/i/185984372?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8945ea74-57ff-4676-91bb-440ab86ef457_2784x3054.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uou8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8945ea74-57ff-4676-91bb-440ab86ef457_2784x3054.png 424w, https://substackcdn.com/image/fetch/$s_!uou8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8945ea74-57ff-4676-91bb-440ab86ef457_2784x3054.png 848w, https://substackcdn.com/image/fetch/$s_!uou8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8945ea74-57ff-4676-91bb-440ab86ef457_2784x3054.png 1272w, https://substackcdn.com/image/fetch/$s_!uou8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8945ea74-57ff-4676-91bb-440ab86ef457_2784x3054.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Asking Claude Code to patch a feature via mention within an issue. July, 2025</figcaption></figure></div><p>In a way, it is exciting. But, over the holidays it dawned on me. An unreleased client project I completed early last year is probably the last project I will ever write by hand again. It left me feeling nostalgic and sad. The way I had been working for the last twenty years had not changed that drastically. Then all of a sudden, that way of working ended. Without realizing it, I had offloaded a lot of choices. Were they artistic or creative choices? Or were they more minute and mundane than that? Is that even possible? Does it even matter? Ultimately very few people see or even care about the code.</p><p>In the <em>New Dark Age</em>, the author James Bridle describes a term in media studies and philosophy called the <em>hyperobject</em>.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a> It is a system (technological or environmental) that is so complex a human cannot truly understand it or predict it. Think of a social media engagement algorithm or the weather or an electron. AI is one of these hyperobjects. And I have the AI make choices on my behalf. I am not sure it supports or damages my concept. I am not even sure I could explain how it could. It is so complex.</p><p>&#8211;Jono</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><a href="https://jono.fyi/Patatap">https://jono.fyi/Patatap</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p><a href="https://jono.fyi/What-You-Don-t-Know">https://jono.fyi/What-You-Don-t-Know</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p><a href="https://en.wikipedia.org/wiki/Oculus_Go">https://en.wikipedia.org/wiki/Oculus_Go</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p><a href="https://processing.org">https://processing.org</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p><a href="https://dataland.art/about/living-encyclopedia">https://dataland.art/about/living-encyclopedia</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p><a href="https://matrix.org/">https://matrix.org/</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p><a href="https://jamesbridle.com/books/new-dark-age">https://jamesbridle.com/books/new-dark-age</a></p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[In Review: Dataland at Grand Ave Arts: All Access]]></title><description><![CDATA[To close out the year, I share my experience demonstrating the latest version of Living Encyclopedia to the public during Grand Ave Arts: All Access.]]></description><link>https://jonofyi.substack.com/p/in-review-dataland-at-grand-ave-arts</link><guid isPermaLink="false">https://jonofyi.substack.com/p/in-review-dataland-at-grand-ave-arts</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Mon, 22 Dec 2025 13:02:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fyIJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cd0d53-36b5-447e-9e84-69d5bc383f4e.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>At the end of last year I announced the Living Encyclopedia.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> It is an interface into Dataland&#8217;s Large Nature Model, an AI model that is trained exclusively (and, as Refik Anadol Studio puts it, ethically) on nature data. This data is made up of writings, images, audio, and videos. It comes from many different sources; some collected by the studio and some licensed by authorized organizations like <a href="https://www.getty.edu/">The Getty</a> and the <a href="https://www.birds.cornell.edu/">Cornell Lab of Ornithology</a>. The Living Encyclopedia presents three distinct modes that you can explore the Large Nature Model: Research, Create, and Dream. Research Mode is most similar to other Large Language Model interfaces like <a href="https://chatgpt.com/">ChatGPT</a>. Create Mode is similar to generative AI interfaces like <a href="https://www.midjourney.com/">Midjourney</a> or Stable Diffusion&#8217;s <a href="https://dreamstudio.stability.ai/">Dream Studio</a>. Lastly, Dream Mode is an ambient walkabout of the data that trained the model: visually and sonically. In all, these modes represent AI technology and products that come from a place of artistic inquiry. Artistic inquiry, I believe, make Living Encyclopedia unique. In October, Dataland received the opportunity to exhibit during <a href="https://grandavearts.org/">Grand Ave Arts: All Access</a>. Since the museum is not open yet, Refik and the studio decided to show a &#8220;behind-the-scenes&#8221; tools and works in progress to expose the public to the approach we are taking to create Dataland. This opportunity became a great milestone to update Living Encyclopedia based on numerous feedback we received.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fyIJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cd0d53-36b5-447e-9e84-69d5bc383f4e.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fyIJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cd0d53-36b5-447e-9e84-69d5bc383f4e.heic 424w, https://substackcdn.com/image/fetch/$s_!fyIJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cd0d53-36b5-447e-9e84-69d5bc383f4e.heic 848w, https://substackcdn.com/image/fetch/$s_!fyIJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cd0d53-36b5-447e-9e84-69d5bc383f4e.heic 1272w, https://substackcdn.com/image/fetch/$s_!fyIJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cd0d53-36b5-447e-9e84-69d5bc383f4e.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fyIJ!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cd0d53-36b5-447e-9e84-69d5bc383f4e.heic" width="1200" height="900" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10cd0d53-36b5-447e-9e84-69d5bc383f4e.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:2823237,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jonofyi.substack.com/i/182269990?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cd0d53-36b5-447e-9e84-69d5bc383f4e.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fyIJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cd0d53-36b5-447e-9e84-69d5bc383f4e.heic 424w, https://substackcdn.com/image/fetch/$s_!fyIJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cd0d53-36b5-447e-9e84-69d5bc383f4e.heic 848w, https://substackcdn.com/image/fetch/$s_!fyIJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cd0d53-36b5-447e-9e84-69d5bc383f4e.heic 1272w, https://substackcdn.com/image/fetch/$s_!fyIJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10cd0d53-36b5-447e-9e84-69d5bc383f4e.heic 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Work in Progress the day before opening. The Grand, LA. October 24, 2025.</figcaption></figure></div><p>There were numerous improvements that marked the demonstration of the new version of Living Encyclopedia. First, Research Mode was paired down from its previously technical presentation to look and act more like aforementioned LLMs like ChatGPT. Second, Create Mode was enhanced with a history of previous prompts. Dream Mode ushered in performance improvements. And finally, share functionality was added. If you had a conversation that you wanted to share with someone else or you created an image that you wanted to share, there were ways to save aspects of it to your device for later. Now, however, it is a simple click of the share icon and a permanent URL is created for you to share with anyone who has a web browser. Best of all, the recipient does not need an account to enjoy the content. These features comprise a more complete product experience for Living Encyclopedia. And it showed during Grand Ave Arts: All Access!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://lnm.dataland.art/&quot;,&quot;text&quot;:&quot;Try Living Encyclopedia v2&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://lnm.dataland.art/"><span>Try Living Encyclopedia v2</span></a></p><p>I had not shown work in person since the pandemic started. So, I got jitters the night before: part excitement, part worry, part pulling all-nighters in the lead up to the event. The event came and went in a blur. Over 2,000 people came through the Dataland pop-up space and tried the latest version of Living Encyclopedia. This included friends, family, and some familiar faces I had not seen in awhile. Rallying people around a positive and constructive experience, guided by art &#8212;&nbsp;this is what excited me about experiencing art. It is also what motivated me to enroll in graduate school in the arts. Dataland is officially slated to open Spring next year. With the reception we received during Grand Ave Arts: All Access, I could not be more excited to invite you to Dataland next year.</p><p>Wishing you warm holidays and an art-filled new year,</p><p>&#8211;Jono</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"><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;2df09734-a5fa-4295-88df-b309e6fc980e&quot;,&quot;caption&quot;:&quot;Resuming from my previous posts about Dataland, creating physical space for digital art takes time. It has not been easy given the ambition: the world&#8217;s first museum dedicated to AI arts and data visualization. While brick and mortar takes time, digital art is native to the internet; to the surface of a screen. So, the team decided at the beginning of t&#8230;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Client Project: Living Encyclopedia&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1596155,&quot;name&quot;:&quot;Jono Brandel&quot;,&quot;bio&quot;:&quot;I use graphic design and computer programming to explore the expressive qualities of technology.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/49c543c2-3720-4dfe-ab08-af8d30e94428_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-12-17T16:01:18.341Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cae6cb13-4467-4bea-bd51-65f4aea0c333_1920x1080.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jonofyi.substack.com/p/client-project-living-encyclopedia&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:153248505,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:3,&quot;publication_id&quot;:1233012,&quot;publication_name&quot;:&quot;Soup to Software&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!dk-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6058d174-9eca-419b-9523-6c36acf15e68_256x256.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Ten Years of Typing Melodies]]></title><description><![CDATA[For the ten year anniversary of Typatone, I review what happened and look forward to what is to come.]]></description><link>https://jonofyi.substack.com/p/ten-years-of-typing-melodies</link><guid isPermaLink="false">https://jonofyi.substack.com/p/ten-years-of-typing-melodies</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Tue, 18 Nov 2025 16:02:52 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ac848b6f-4474-46fc-a845-c8cc352f7e42_5120x2880.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In October of 2015, I released Typatone with music duo <a href="https://lullatone.com">Lullatone</a> at Ableton&#8217;s Loop Festival<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>. As a follow up to the surprise hit sensation <a href="https://patatap.com/">Patatap</a> from the year before, I wanted to use Typatone as a way to respond to how Patatap was received. In today&#8217;s post I cover the feedback I received for Patatap, the way I responded, and the subsequent reception of Typatone. Then, I go over some refinements that I am publishing today to set Typatone up for the next ten years of operation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-pQF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4fc6cc-3ffa-4b10-b185-163606f71264_1388x1052.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-pQF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4fc6cc-3ffa-4b10-b185-163606f71264_1388x1052.png 424w, https://substackcdn.com/image/fetch/$s_!-pQF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4fc6cc-3ffa-4b10-b185-163606f71264_1388x1052.png 848w, https://substackcdn.com/image/fetch/$s_!-pQF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4fc6cc-3ffa-4b10-b185-163606f71264_1388x1052.png 1272w, https://substackcdn.com/image/fetch/$s_!-pQF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4fc6cc-3ffa-4b10-b185-163606f71264_1388x1052.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-pQF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4fc6cc-3ffa-4b10-b185-163606f71264_1388x1052.png" width="1388" height="1052" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b4fc6cc-3ffa-4b10-b185-163606f71264_1388x1052.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1052,&quot;width&quot;:1388,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:229949,&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://jonofyi.substack.com/i/179176067?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4fc6cc-3ffa-4b10-b185-163606f71264_1388x1052.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_!-pQF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4fc6cc-3ffa-4b10-b185-163606f71264_1388x1052.png 424w, https://substackcdn.com/image/fetch/$s_!-pQF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4fc6cc-3ffa-4b10-b185-163606f71264_1388x1052.png 848w, https://substackcdn.com/image/fetch/$s_!-pQF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4fc6cc-3ffa-4b10-b185-163606f71264_1388x1052.png 1272w, https://substackcdn.com/image/fetch/$s_!-pQF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4fc6cc-3ffa-4b10-b185-163606f71264_1388x1052.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 facebook post after Typatone hit the front page of Reddit.</figcaption></figure></div><h3>Typatone, A Response</h3><p>According to Wikipedia, Patatap was released on March 25, 2014. Thanks to the subreddit <a href="https://www.reddit.com/r/InternetIsBeautiful/">r/InternetIsBeautiful</a> Patatap found its way to audiences I could never have imagined. I traveled to Europe and Asia to share my experience making it. For a lot of people, it resonated in a way that I was trying to communicate.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> It spurred collaboration and custom projects with brands and bands I admire.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> I made new lifelong friends. All great things. However, in making its way into popular culture, there was another theme that marked the reception of Patatap: <em>procrastination</em>.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> Numerous articles and as many email inquiries flooded my inbox to ask how I made something so <em>addictive</em>. Coming from a place of reverence for artistic craft and process, this honestly shocked me. Unfortunately being human, I had a hard time letting go of what felt negative to me. I did not want people to procrastinate. And I did not want people to be addicted to Patatap. So, when Shawn of Lullatone pitched the follow up as an experience to type and make melodies from words, I thought long and hard. I took walks. I rode my fixed gear bike. I went to parties. I tried to gain some perspective. And, in a small room of the Ace Hotel in Midtown Manhattan while on a work trip, I started prototyping what would become Typatone.</p><p>My feeling was that the &#8220;addictive&#8221; element of Patatap were the arresting animations. When you type on the keyboard, you do not expect the screen to flash. I intended to subvert user expectations, but only to make the experience delightful or surprising. If those were themes that marked Patatap, then with Typatone I wanted the themes to be <em>subtle</em> and <em>meditative</em>. &#8220;Could something subtle even be appreciated today?&#8221; was a question that ran through my mind. Remember this was when Vine content was capped at 6 seconds. I asked Shawn if the sounds this time around could align with these desired themes. Could they be more focused, narrow? It is why most of the filters are pretty slow. The animations in Typatone (compared to Patatap at least) are also subtle. There is the sing-along style identity mark that bounces to whatever letter is triggering a note place. There is also the backdrop, a linear gradient representing the filter. But, it is also representing the time of day. Even the keyboard, which is an intentional UI element, shows expectation, but is mostly utilitarian in behavior. Lastly, the sound clip composition is a mix of Lullatone&#8217;s sensibility of melody mapped to <a href="https://letterfrequency.org/">Letter Frequency</a>&#8217;s most common letters in the English language. These decisions were meant to create Typatone as a more purposeful, smaller, yet hopefully equally impactful experience as Patatap.</p><p>The results ended up being similar. After ten years of both apps runnings, it is safe to say the receptions were similar. Typatone, like Patatap, was met with a lot of delight. I get emails every month about how Typatone is used in school settings. Despite this impact, Typatone never received any critical acclaim. In an effort to justify my decisions, a year after Typatone&#8217;s release, I published an article describing the potential academic value of Typatone.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> In all, the disappointing results led me to apply to graduate school; to better understand how my work could fit in with art, games, and design.</p><h3>The Next Ten Years</h3><p>Looking back to my thoughts and my writing from the mid-2010s, I saw a lot of frustration. Today, I see now, that it was that frustration that was stunting me, not how people received it. Over the last four months I spent time updating the codebase and going over what I had created. My assessment today is much more lenient and positive. I am thankful that the app still runs! But, there were numerous changes that needed to be made in order for Typatone to endure for another ten years or more:</p><ol><li><p>The technology stack was about to break. When Typatone was made, I implemented my friend&#8217;s Backend-as-a-Service product called <a href="https://parseplatform.org/">Parse</a>. Parse still works great. But, it interfaces with a lot of services that were once included with Parse&#8217;s for-profit services. So, I moved all the databases and created a unified API that all live in the same Google Cloud project where the application and CDN are hosted from. This reduces cost and complexity. Unfortunately, previously stored messages will not be backwards compatible.</p></li><li><p>This update does not, however, eliminate costs altogether. Like Uber ten years ago, Cloud Compute was practically free. Now, running Patatap and Typatone together runs me about $250 USD a month. Not much, but not nothing. For me to provide these applications &#8220;freely&#8221; (i.e: without advertising) I have always wanted to turn Typatone into a freemium model.</p></li><li><p>In order to present a freemium business model, I want to bring value to the customers who will be spending their money on this. After 5 years piloting the download-your-message-as-an-audio file feature Typatone, I am pleased to announced that this will be permanently supported starting with a price of $1.99 USD per message. I hope you will find this to be a straightforward transaction.</p></li><li><p>This price not only supports the hosting costs, but insures that whatever you purchase can be securely and permanently stored on my CDN. Now, you get an email receipt upon completing your purchase. The email includes a download link that is a permanent part of the project.</p></li><li><p>Despite these additions, I made considerations to keep Typatone anonymous. That means you do not need to login to any Typatone authentication or Jono LLC systems in order to create messages or use the application. This feels like the right balance of freemium for now. (Sidenote: if you are interested to hear me talk about the possible business models I considered, <a href="https://jonofyi.substack.com/p/the-missing-piece-in-my-developers">this post</a> from last year was my thinking on it)</p></li></ol><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://typatone.com&quot;,&quot;text&quot;:&quot;Try the refined Typatone&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://typatone.com"><span>Try the refined Typatone</span></a></p><p>Looking back on the last ten years of Typatone&#8217;s life has been a rewarding experience. The project has positively altered my professional and artistic path. I learned a lot. And I made a lot of friends along the way. I am proud to have had the project run for as long as it has. I am even more excited to keep it going.</p><p>&#8212;Jono</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>In The Process: Inspiration Vs Stealing. Interview from Ableton Loop Summit. Ableton, 2015.</p><div id="youtube2-9bjoDBFzpXw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;9bjoDBFzpXw&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/9bjoDBFzpXw?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></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>https://www.killscreen.com/what-do-flying-lotus-piet-mondrian-and-frank-lloyd-wright-have-common-app/. What do Flying Lotus, Piet Mondrian and Frank Lloyd Wright have in common? This app. Killscreen Magazine. August 6, 2024.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>https://cornelius.patatap.com/. Patatap: Mellow Waves. Custom distribution of Patatap for Cornelius&#8217;s album. 2017.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>https://www.refinery29.com/en-us/2014/03/65375/patatap-turns-keyboard-into-sounds-images. Prepare To Spend Way Too Much Time With Patatap. Colleen Nika for Refinery29. March 30, 2014.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>https://typatone.com/stats. Typatone: Statistical Analysis. July 19, 2016.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[A Better Way to Use Two.js in React]]></title><description><![CDATA[One of the longest running feature requests for Two.js is finally getting the attention it deserves.]]></description><link>https://jonofyi.substack.com/p/a-better-way-to-use-twojs-in-react</link><guid isPermaLink="false">https://jonofyi.substack.com/p/a-better-way-to-use-twojs-in-react</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Wed, 22 Oct 2025 15:02:53 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7829a670-accf-43f6-bf46-f0b09af9b8a7_1152x640.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The long running and fairly popular two-dimensional drawing API for the web, Two.js has received many feature requests over its 13 year lifespan. None has been requested more than adding the ability to declaratively create and manage a scene within <a href="https://react.dev/">React</a>. For those not familiar, React is a pervasive library for web enabled application development. It allows you to manage data, state, interactions, and render it all in a highly opinionated way making it easy to manage complex applications. Two.js is and has always been agnostic to any framework. So, its compatibility with React is possible, but unconventional. Not surprising, the requests continued to come in.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a6gl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26126712-54eb-4566-a83e-dd0891999cfe_846x382.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a6gl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26126712-54eb-4566-a83e-dd0891999cfe_846x382.png 424w, https://substackcdn.com/image/fetch/$s_!a6gl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26126712-54eb-4566-a83e-dd0891999cfe_846x382.png 848w, https://substackcdn.com/image/fetch/$s_!a6gl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26126712-54eb-4566-a83e-dd0891999cfe_846x382.png 1272w, https://substackcdn.com/image/fetch/$s_!a6gl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26126712-54eb-4566-a83e-dd0891999cfe_846x382.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a6gl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26126712-54eb-4566-a83e-dd0891999cfe_846x382.png" width="846" height="382" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/26126712-54eb-4566-a83e-dd0891999cfe_846x382.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:382,&quot;width&quot;:846,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:48913,&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://jonofyi.substack.com/i/176715081?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26126712-54eb-4566-a83e-dd0891999cfe_846x382.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_!a6gl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26126712-54eb-4566-a83e-dd0891999cfe_846x382.png 424w, https://substackcdn.com/image/fetch/$s_!a6gl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26126712-54eb-4566-a83e-dd0891999cfe_846x382.png 848w, https://substackcdn.com/image/fetch/$s_!a6gl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26126712-54eb-4566-a83e-dd0891999cfe_846x382.png 1272w, https://substackcdn.com/image/fetch/$s_!a6gl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26126712-54eb-4566-a83e-dd0891999cfe_846x382.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Early request for React managed rendering of Two.js &#8212; in this case for mobile app development through react-native. gut4 on GitHub, 2015.</figcaption></figure></div><p>I am the kind of developer who does not adopt frameworks, libraries, or plugins at the speed they are released. I am also someone who makes their living out of creating &#8220;unorthodox user-interfaces&#8221; for the web, not building the most common ones. I initially did not see the need to take on building out a React connector. I thought if someone else did, that would be great for the community. In 2021, this perspective changed.</p><p>As I dug into the meat-and-potatoes of running a solo studio, I found myself needing to build a lot of &#8220;orthodox user-interfaces&#8221; for clients. Buttons, drop down menus, sidebars, navigations, toasts, marquees are some of the components I was making over and over again. They were still in service of unorthodox user-interfaces, but I needed more and more of the common stuff in order to frame the unorthodox, the weird, the unexpected. All my clients wanted their work built in React.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> They also, more often than not, wanted me to add that special something that Two.js made my work famous for. A couple projects I published on <em>Soup to Software</em> are attempts to write, manage, and build out Two.js interfaces within React.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> I&#8217;m proud of these projects, but I hit a ceiling. I learned it was complicated and cumbersome to pass around state information of Two.js within a React project. As you can read in the aforementioned posts, both projects I wrote about are single page applications (known as SPAs). They run on a single page without any user authentication in part because of the challenges managing Two.js within React presented. There had to be something I could do about this, right? The needs of applications and application development today continue to lean on complex scenarios of state.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_UdZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebb966b-b47e-4086-8a1d-3a526bdf8b98_1152x640.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_UdZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebb966b-b47e-4086-8a1d-3a526bdf8b98_1152x640.png 424w, https://substackcdn.com/image/fetch/$s_!_UdZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebb966b-b47e-4086-8a1d-3a526bdf8b98_1152x640.png 848w, https://substackcdn.com/image/fetch/$s_!_UdZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebb966b-b47e-4086-8a1d-3a526bdf8b98_1152x640.png 1272w, https://substackcdn.com/image/fetch/$s_!_UdZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebb966b-b47e-4086-8a1d-3a526bdf8b98_1152x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_UdZ!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebb966b-b47e-4086-8a1d-3a526bdf8b98_1152x640.png" width="1200" height="666.6666666666666" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ebb966b-b47e-4086-8a1d-3a526bdf8b98_1152x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:640,&quot;width&quot;:1152,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:57380,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jonofyi.substack.com/i/176715081?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebb966b-b47e-4086-8a1d-3a526bdf8b98_1152x640.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_UdZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebb966b-b47e-4086-8a1d-3a526bdf8b98_1152x640.png 424w, https://substackcdn.com/image/fetch/$s_!_UdZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebb966b-b47e-4086-8a1d-3a526bdf8b98_1152x640.png 848w, https://substackcdn.com/image/fetch/$s_!_UdZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebb966b-b47e-4086-8a1d-3a526bdf8b98_1152x640.png 1272w, https://substackcdn.com/image/fetch/$s_!_UdZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ebb966b-b47e-4086-8a1d-3a526bdf8b98_1152x640.png 1456w" sizes="100vw"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Screenshot of the react-two.js documentation page, 2025.</figcaption></figure></div><p>In order to fully assimilate Two.js into React, there were two major hurdles to overcome. The first hurdle, React is technically a project made in JavaScript, but its true ubiquity lies in its interoperability with TypeScript. TypeScript is a superset of JavaScript. It is more strict and as result it is more predictable. React relies on numerous advancements by the TypeScript community to infer developer intent when building applications. Some of these advanced features are tab completion or module imports and reference listings of properties within code editors. These features make writing compliant code easier. Unfortunately, Two.js takes advantage of many of quirks of JavaScript. This is more expressive and less predictable (for a code compiler). This made it hard to make Two.js conform to TypeScript definitions. Type definitions or signatures are the way a TypeScript interpreter can do code inferencing while a developer is writing their code. To reiterate, my first hurdle was to make Two.js TypeScript compliant. It is still an ongoing project and it has taken me about four years to manually write the type definitions for Two.js.</p><p>You are probably thinking, why not use AI to do this? I tried many times. It always failed. Because Two.js leans on the quirks of JavaScript, it does not cleanly map onto TypeScript even though TypeScript is a superset of JavaScript. I ended up writing it myself manually; 6,000 line treatise of Two.js.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> What I found through hand writing the definitions, while slow, is that I am actually able to bring the quirkiness of Two.js to TypeScript. It is not fully complete, but it is usable for the majority of use cases I see people use Two.js for.</p><p>With the TypeScript definitions in a stable form, it became much easier to write a library that bridges React and Two.js. This is the new library I am announcing today: <a href="https://github.com/jonobr1/react-two.js">react-two.js</a>. It takes the type signatures of Two.js and synthesizes it into artificial React components so that developers can declare Two.js objects as if they were declaring native React components. By bridging the state management between the two distinct systems, react-two.js unlocks the ability to build new kinds of interfaces.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://jonobr1.com/react-two.js&quot;,&quot;text&quot;:&quot;Visit react-two.js site&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://jonobr1.com/react-two.js"><span>Visit react-two.js site</span></a></p><p>Buttons with particles, wireframes with form input fields, animated titles like you would see in a film. Each of these is now possible within a React environment thanks to this new bridge. This first version allows for drawing all the primitives natively in React. You can easily hoist them in a parent component to modify as desired on state change. Lastly, it provides React native ways to define multiple Two.js canvases on the same page. There are still many features missing, but full access to Two.js is always present for more advanced use cases. I have already started using this within client projects and it has sped up my workflow tremendously.</p><p>Like all my open source projects, it is free to use under the MIT License. If you give it a try, I would love to get your feedback,</p><p>&#8211;Jono</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>Not literally all, but since 2021 more than 90% of my client projects are built in React.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;b9e92a38-f89a-4be7-954f-8fc85aae69db&quot;,&quot;caption&quot;:&quot;People in Web3 are enamored with the ability to organize new types of communities, groups, and organizations. For a number of months, I explored visualizing different organizations: how their power and agency flow. Since there is not a central governing entity in these organizations, the relationships become quite complex and interwoven. So, I developed&#8230;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Drawing Structures from Text&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1596155,&quot;name&quot;:&quot;Jono Brandel&quot;,&quot;bio&quot;:&quot;I use graphic design and computer programming to explore the expressive qualities of technology.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/49c543c2-3720-4dfe-ab08-af8d30e94428_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2022-10-22T15:00:00.000Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!DU58!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F3b9a07c5-25bb-4ac1-83c2-fee5c89b8d64_2048x1280.gif&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jonofyi.substack.com/p/drawing-structures-from-text&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:89530208,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1233012,&quot;publication_name&quot;:&quot;Soup to Software&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!dk-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6058d174-9eca-419b-9523-6c36acf15e68_256x256.png&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;aa783168-1a1e-42c8-b66f-e1cfc47efe56&quot;,&quot;caption&quot;:&quot;Early in my design education at UCLA&#8217;s Design Media Arts program, professor Rebeca M&#233;ndez shared insight into her practice. Her art practice fed into her client-based design practice, which then fed into her teaching practice. This cycle pushed her to discover new creative pursuits. For me, this cycle consists of my art practice and my design work. Rece&#8230;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Searching for Function out of Form&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1596155,&quot;name&quot;:&quot;Jono Brandel&quot;,&quot;bio&quot;:&quot;I use graphic design and computer programming to explore the expressive qualities of technology.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/49c543c2-3720-4dfe-ab08-af8d30e94428_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2022-02-22T16:00:00.000Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!xjQF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F3cd54a89-c54f-4dc8-919b-9d7b2543c098_2970x1980.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jonofyi.substack.com/p/searching-for-function-out-of-form&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:89526753,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1233012,&quot;publication_name&quot;:&quot;Soup to Software&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!dk-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6058d174-9eca-419b-9523-6c36acf15e68_256x256.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p><a href="https://github.com/jonobr1/two.js/blob/dev/types.d.ts">https://github.com/jonobr1/two.js/blob/dev/types.d.ts</a>. Ongoing TypeScript definitions of Two.js.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Now Thousands of Connections]]></title><description><![CDATA[Progress on the project I started in graduate school, &#8221;the shape of art&#8221;, a unique look at the relationship between fine artists]]></description><link>https://jonofyi.substack.com/p/now-thousands-of-connections</link><guid isPermaLink="false">https://jonofyi.substack.com/p/now-thousands-of-connections</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Tue, 23 Sep 2025 15:02:42 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9b99dcd2-a188-4aa6-a345-5717f3d02e44_5120x2880.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In 2023, I shared a prototype of about 1,000 pollinating white dots on a gray background.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> It was meant to graph the related artists and their related artists of Ren&#233; Magritte as prescribed by a <a href="https://en.wikipedia.org/wiki/K-means_clustering">k-means clustering</a> algorithm brought to us by <a href="https://www.artsy.net/categories">Artsy&#8217;s Art Genome Project</a>. The Art Genome Project was a fascinating, albeit dated by today&#8217;s standards, way to model relations between artists. It categorizes thousands of different characteristics of an artist in their catalog. It then clusters them or organizes them based on the occurrence of overlapping characteristics. A couple of months ago, Artsy unfortunately discontinued public access to the Art Genome Project. So, I spent time scraping the now defunct API to get the totality of their artists&#8217; relationships. Today, I would like to share the progress visualizing this.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fbgj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07babeab-06e7-4324-8aa3-72dd0d37e8ee_5120x2880.png" data-component-name="Image2ToDOM"><div class="image2-inset image2-full-screen"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fbgj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07babeab-06e7-4324-8aa3-72dd0d37e8ee_5120x2880.png 424w, https://substackcdn.com/image/fetch/$s_!fbgj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07babeab-06e7-4324-8aa3-72dd0d37e8ee_5120x2880.png 848w, https://substackcdn.com/image/fetch/$s_!fbgj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07babeab-06e7-4324-8aa3-72dd0d37e8ee_5120x2880.png 1272w, https://substackcdn.com/image/fetch/$s_!fbgj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07babeab-06e7-4324-8aa3-72dd0d37e8ee_5120x2880.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fbgj!,w_5760,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07babeab-06e7-4324-8aa3-72dd0d37e8ee_5120x2880.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07babeab-06e7-4324-8aa3-72dd0d37e8ee_5120x2880.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;full&quot;,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4255643,&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://jonofyi.substack.com/i/174288215?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07babeab-06e7-4324-8aa3-72dd0d37e8ee_5120x2880.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-fullscreen" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fbgj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07babeab-06e7-4324-8aa3-72dd0d37e8ee_5120x2880.png 424w, https://substackcdn.com/image/fetch/$s_!fbgj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07babeab-06e7-4324-8aa3-72dd0d37e8ee_5120x2880.png 848w, https://substackcdn.com/image/fetch/$s_!fbgj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07babeab-06e7-4324-8aa3-72dd0d37e8ee_5120x2880.png 1272w, https://substackcdn.com/image/fetch/$s_!fbgj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07babeab-06e7-4324-8aa3-72dd0d37e8ee_5120x2880.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">John Beasley Greene selected in black amongst a constellation of white dots each representing a different artist that are varying degrees related to him, 2025</figcaption></figure></div><h3>What Changed?</h3><p>First, the dataset is much larger than the previous one from 2023. Instead of a thousand artists the amount is closer to a hundred thousand. The script I wrote to get this data processed for three days. It pulled all the artists from the Artsy API and then also got their related artists. From these two raw datasets, I created a new single set of data that is compatible with the way I am visualizing the relationships. This new dataset follows the d3 format for force directed graphs, a common industry format for assigning relationships to be displayed in a graph.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> While it is based on this convention, d3 is not able to handle this many points. This is where the next major change is between the previous visualization and the current one. I developed a three-dimensional version of a force directed graph. Basically a way to calculate positions, velocities, and forces of related points on the graphics card. This enables thousands more points to be drawn and connected in real-time over any other publicly available method. The library, called Force Directed Graph<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a>, allows anyone to render 3D graphs by simply supplying the formatted data.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YX7d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe226b980-dc52-4374-aa7d-636f35c904e7_5120x2880.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YX7d!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe226b980-dc52-4374-aa7d-636f35c904e7_5120x2880.png 424w, https://substackcdn.com/image/fetch/$s_!YX7d!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe226b980-dc52-4374-aa7d-636f35c904e7_5120x2880.png 848w, https://substackcdn.com/image/fetch/$s_!YX7d!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe226b980-dc52-4374-aa7d-636f35c904e7_5120x2880.png 1272w, https://substackcdn.com/image/fetch/$s_!YX7d!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe226b980-dc52-4374-aa7d-636f35c904e7_5120x2880.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YX7d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe226b980-dc52-4374-aa7d-636f35c904e7_5120x2880.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e226b980-dc52-4374-aa7d-636f35c904e7_5120x2880.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1866426,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jonofyi.substack.com/i/174288215?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe226b980-dc52-4374-aa7d-636f35c904e7_5120x2880.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_!YX7d!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe226b980-dc52-4374-aa7d-636f35c904e7_5120x2880.png 424w, https://substackcdn.com/image/fetch/$s_!YX7d!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe226b980-dc52-4374-aa7d-636f35c904e7_5120x2880.png 848w, https://substackcdn.com/image/fetch/$s_!YX7d!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe226b980-dc52-4374-aa7d-636f35c904e7_5120x2880.png 1272w, https://substackcdn.com/image/fetch/$s_!YX7d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe226b980-dc52-4374-aa7d-636f35c904e7_5120x2880.png 1456w" sizes="100vw"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Ren&#233; Magritte selected as the black dot in the center, with 4 levels of relationships mapped. This results in about 1,000 artists. 1% of what the current dataset is. 2023.</figcaption></figure></div><h3>The Results So Far</h3><p>Visually it is much more celestial and less like pollen on a flower. There are clear clusters of different artists who all relate to each other. But, there is also a lot more noise. The previous interface, which allowed you to move the camera by dragging your mouse or finger, is now more cumbersome, slow, and inaccurate. Also, the performance on smartphones needs work. While it renders all the points, there is noticeable lag and even hang that spills over to the operating system. This is a big no-no for usability.</p><p>You can try the prototype by hitting the button below. In addition to being able to move the camera by dragging your mouse or finger across the screen, there is a panel you can open in the top right-hand corner. Upon clicking, you can change the parameters of the physics simulation. To me, this is where the power lies: to plot this many points and then change aspects of the entire system is certainly satisfying. It is also where I think the utility, story, and purpose of this prototype will ultimately lead.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://archive.jono.fyi/projects/shape-of-art/r20/&quot;,&quot;text&quot;:&quot;Try the prototype&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://archive.jono.fyi/projects/shape-of-art/r20/"><span>Try the prototype</span></a></p><p>If you find this version interesting, I also made another version that lays out the clusters in a different way (<a href="https://archive.jono.fyi/projects/shape-of-art/r21/">link</a>). It is more performant for mobile devices, but there is even more noise in the distribution. This is because the forces are modified and ultimately reduced by a large factor. In the first prototype every point has three forces: attraction to its related points, repulsion against every point, and a general gravity to the origin of the simulation. With the right settings this motivates the system to resolve its orientation where these competing forces create an equilibrium. It also creates compound associations, which really burn computation for devices. In the second prototype, I make the attraction to each link only go one way. This improves the performance and also creates constant movement. Like a game of tag, there is one point running towards its relatives. But the relatives are still running away!</p><p>I still do not know <em>exactly</em> where this will lead, but am bolstered by the progress nonetheless. The shape of art it continues to be something I think about,</p><p>&#8212;Jono</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"><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;2cbcf024-6314-4061-b15a-416eea6fce23&quot;,&quot;caption&quot;:&quot;Recently, I had a breakthrough in development for a concept I hatched during graduate school. Building off of the thinking of the late abstract painter, Wassily Kandinsky, I wanted to evolve his definition of &#8220;the shape of art&#8221;. A refresher of the context for this project and Kandinsky&#8217;s thinking can be found&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Not Thousands of Connections, But Progress&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1596155,&quot;name&quot;:&quot;Jono Brandel&quot;,&quot;bio&quot;:&quot;I use graphic design and computer programming to explore the expressive qualities of technology.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/49c543c2-3720-4dfe-ab08-af8d30e94428_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-11-29T16:01:04.542Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f972549a-0a61-42b2-a87b-21112756dcda_748x467.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jonofyi.substack.com/p/not-thousands-of-connections-but&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:139257788,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1233012,&quot;publication_name&quot;:&quot;Soup to Software&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!dk-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6058d174-9eca-419b-9523-6c36acf15e68_256x256.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p><a href="https://d3js.org/d3-force">https://d3js.org/d3-force</a>. By the d3 Team and hosted on Observable.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p><a href="http://jonobr1.com/force-directed-graph/">http://jonobr1.com/force-directed-graph/</a>. By Jono Brandel distributed freely under the MIT License.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Client Project: First Harmonic]]></title><description><![CDATA[Audio-visual website for early stage investor group]]></description><link>https://jonofyi.substack.com/p/client-project-first-harmonic</link><guid isPermaLink="false">https://jonofyi.substack.com/p/client-project-first-harmonic</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Wed, 27 Aug 2025 15:02:45 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/021aa30e-8b13-4bd3-a93e-9d8f1fcd4807_1920x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>At the beginning of the year, I was contacted by longtime collaborator <a href="https://therivalry.co/">The Rivalry</a> to jump in and help make a homepage for a client of theirs: First Harmonic. The company is a small team of former operators in the tech sector focused on go to market strategies for early stage startups. As the name implies, the company&#8217;s vision and roots lie in the sonic space &#8212; hoping to work with companies at that first harmonic and giving them a leg up to higher order sounds.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;e74aa015-e1c5-4f28-bd38-9ed665847495&quot;,&quot;duration&quot;:null}"></div><p>This was the vision that was presented to me with a logo mark and some other design explorations about how to visualize this. Despite initially being averse to sound on websites, the client came around when I put together a polyphonic prototype where a note echoed for every vertical line intersection that was passed by the mouse or finger on touch. The rippling visual effect, which is actually just vertical lines connected to springs, resonates with the echo of that specific note. The bottom-left corner represents the lowest order C and the top-right corner is the highest order B. All notes lie on the C major scale giving the sound space cohesive structure. The lines are drawn in SVG using none other than the library I maintain, <a href="https://two.js.org/">Two.js</a> and relies on masking, vertex manipulation, and layering unique to the library to get the final look and feel.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.firstharmonic.com/&quot;,&quot;text&quot;:&quot;Play with the site&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.firstharmonic.com/"><span>Play with the site</span></a></p><p>The end result is a tiny bit of music theory packed into a simple interaction with vector fluid lines and a layered grain. I find it subtle, but compelling to sit with it for a few minutes and explore the space. Hear the space. See the space,</p><p>&#8212;Jono</p>]]></content:encoded></item><item><title><![CDATA[Client Progress: Reconfiguring Songs with Juice]]></title><description><![CDATA[This spring I began working with a new client building a social media platform for music tastemakers. I have focused on VFX that add a dimension found in video games.]]></description><link>https://jonofyi.substack.com/p/client-progress-reconfiguring-songs</link><guid isPermaLink="false">https://jonofyi.substack.com/p/client-progress-reconfiguring-songs</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Thu, 31 Jul 2025 15:02:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!RAT2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3a03997-0a8d-4af3-a010-14413605964f_1512x915.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It is no secret that I have interest and experience in creating audio based tools, instruments, and digital experiences. So, when M&#225;uhan the former head of innovation at Spotify contacted me about building a more active experience to music listening, I was extremely intrigued. He has great ambitions to expand the market for music creators and tastemakers: by breaking apart a song into Lego blocks, we can experience music in a way that is uniquely digital. In order to achieve this, the team at M&#225;uhan&#8217;s company <a href="https://www.shibuyaaa.com/">Shibuya</a> built a versatile sandbox environment that anyone can easily hop in, listen to music, and play around with it. When I joined, there was a level of polish or delight that the team wanted to enhance. I took this on by relying on concepts from the video game industry.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RAT2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3a03997-0a8d-4af3-a010-14413605964f_1512x915.png" data-component-name="Image2ToDOM"><div class="image2-inset image2-full-screen"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RAT2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3a03997-0a8d-4af3-a010-14413605964f_1512x915.png 424w, https://substackcdn.com/image/fetch/$s_!RAT2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3a03997-0a8d-4af3-a010-14413605964f_1512x915.png 848w, https://substackcdn.com/image/fetch/$s_!RAT2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3a03997-0a8d-4af3-a010-14413605964f_1512x915.png 1272w, https://substackcdn.com/image/fetch/$s_!RAT2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3a03997-0a8d-4af3-a010-14413605964f_1512x915.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RAT2!,w_5760,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3a03997-0a8d-4af3-a010-14413605964f_1512x915.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c3a03997-0a8d-4af3-a010-14413605964f_1512x915.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;full&quot;,&quot;height&quot;:881,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:349485,&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://jonofyi.substack.com/i/169644797?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3a03997-0a8d-4af3-a010-14413605964f_1512x915.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-fullscreen" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RAT2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3a03997-0a8d-4af3-a010-14413605964f_1512x915.png 424w, https://substackcdn.com/image/fetch/$s_!RAT2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3a03997-0a8d-4af3-a010-14413605964f_1512x915.png 848w, https://substackcdn.com/image/fetch/$s_!RAT2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3a03997-0a8d-4af3-a010-14413605964f_1512x915.png 1272w, https://substackcdn.com/image/fetch/$s_!RAT2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3a03997-0a8d-4af3-a010-14413605964f_1512x915.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Screen capture of custom shaders built for Shibuya, 2025</figcaption></figure></div><p>The core concept we looked to the video game industry is called <em>juice<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></em>. Essentially, it is the confluence of feedback (visual, audio, etc.) at moments of player interaction to enhance the experience for the player. Many visual effects you see in games aim to serve this purpose. I started with adding particle effects to different parts of the experience. Below is an example of when you change an instrument. As you drag the object into different quadrants of the grid, the model (and audio which is silenced in this video) change. To enhance this moment, I made a particle emitter that creates white sparks in the direction you are moving. It is further highlighted by a one frame shot of a white glow. The visual contrast draws your attention to the boundary reinforcing the moment you change instruments. The team also added haptics so the phone vibrates a bit each time a change happens. The summation of these feedbacks add to the juice of the application.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;8dfdc4f2-9f56-45e4-a69e-637fec4ddf4d&quot;,&quot;duration&quot;:null}"></div><p>Other effects add to the distinct style of the application, which sits somewhere between a traditional mobile application and a video game. Below I created an effect known as a shader that implements a domain warping algorithm. This technical speak means any video can have a textured look without impacting the device&#8217;s processing time too much. These types of effects are powerful because they have a small set of parameters (which I am changing in the video to alter the effect) that the team can use as they like. This effect can make many different videos (live-action, animated, slow, fast, etc.) feel in the style of Shibuya&#8217;s application. The versatility of the parameters and the uniformity the effect brings to different styles present more opportunities for juice. When should this video effect change? Like the previous example, it could change when you change instruments to further accentuate that moment. It could equally be used in a different setting to draw attention to a different interaction. Perhaps when you speed up or slow down the song.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;0f67dc18-c724-4bb6-8ebe-12c09e3a0315&quot;,&quot;duration&quot;:null}"></div><p>Deciding when and how to link different effects to moments of interaction is an interesting rabbit hole for me. While there is not a right answer, the process deeply reminds me of two ideas. The first is the concept of <em>transcoding</em> found in media art practices which I researched extensively in my thesis during graduate school at Paris College of Art.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> The second is the design process for both user experience and branding. The Shibuya team spends a lot of time testing these builds with users to see if the experience is intuitive. Sometimes tweaking small things creates large impact (both positive and negative) with a test group. When users &#8220;get it&#8221; it is rewarding and enhances the feel of the game. But, this juice equally imparts a sense of what the brand or identity of the application is. Because we have decided what rules and moments are linked to interactions, we are offering our vision of what the brand is all about without needing a logo or traditional design element. Does the application feel playful? Serious? Neutral? All of these interactions reinforce an identity.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://testflight.apple.com/join/FPeWsWb3&quot;,&quot;text&quot;:&quot;Try the app on iOS via TestFlight&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://testflight.apple.com/join/FPeWsWb3"><span>Try the app on iOS via TestFlight</span></a></p><p>As this is a progress report and not a completed project, the decision process is fluid. The amount of juice is all a consistent point of debate within the team. Regardless of the state, there is a lot of content on juice: talks, videos, books, articles. There are a few on how it intersects with design<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a>. It is a fascinating concept that has resonant implications for the design process. It has been a joy to tap into the world of juice.</p><p>Here is to more juice.</p><p>&#8212;Jono</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"><div id="youtube2-216_5nu4aVQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;216_5nu4aVQ&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/216_5nu4aVQ?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>Secrets of Game Feel and Juice. Game Maker&#8217;s Toolkit.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p><a href="https://docs.google.com/document/d/1BUTdD1tuJB4h6lYFvYLdpd_UZBpZNQUbyI-X32WCD2Q/edit?tab=t.0">Charting Artistic Rigor</a>. Jono Brandel.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><div id="youtube2-wBnIyD5I8mM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;wBnIyD5I8mM&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/wBnIyD5I8mM?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>Serious play. Andy Allen at Figma&#8217;s Config 2024.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Leaning into the Trends]]></title><description><![CDATA[This month&#8217;s newsletter covers the financials of my fifth year running a single person design and development studio]]></description><link>https://jonofyi.substack.com/p/leaning-in-to-the-trends</link><guid isPermaLink="false">https://jonofyi.substack.com/p/leaning-in-to-the-trends</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Tue, 24 Jun 2025 15:00:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!W_Ba!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d29688-e264-4b3c-ac41-b7db0ddfea04_2034x900.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last year&#8217;s self-employment analysis revealed many trends and insights.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> To recap: I stabilized my income over the first four years. I did not raise my prices. I had difficulty balancing personal and commercial work. While last year gave me the best work-life balance of my 17-year career, it was also my lowest-earning year. Going into this year, I made some conscious decisions. I raised my rates. I front-loaded my work. Here are the results so far.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W_Ba!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d29688-e264-4b3c-ac41-b7db0ddfea04_2034x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W_Ba!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d29688-e264-4b3c-ac41-b7db0ddfea04_2034x900.png 424w, https://substackcdn.com/image/fetch/$s_!W_Ba!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d29688-e264-4b3c-ac41-b7db0ddfea04_2034x900.png 848w, https://substackcdn.com/image/fetch/$s_!W_Ba!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d29688-e264-4b3c-ac41-b7db0ddfea04_2034x900.png 1272w, https://substackcdn.com/image/fetch/$s_!W_Ba!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d29688-e264-4b3c-ac41-b7db0ddfea04_2034x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W_Ba!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d29688-e264-4b3c-ac41-b7db0ddfea04_2034x900.png" width="1200" height="530.7692307692307" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2d29688-e264-4b3c-ac41-b7db0ddfea04_2034x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:644,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:62769,&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://jonofyi.substack.com/i/166698469?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d29688-e264-4b3c-ac41-b7db0ddfea04_2034x900.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!W_Ba!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d29688-e264-4b3c-ac41-b7db0ddfea04_2034x900.png 424w, https://substackcdn.com/image/fetch/$s_!W_Ba!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d29688-e264-4b3c-ac41-b7db0ddfea04_2034x900.png 848w, https://substackcdn.com/image/fetch/$s_!W_Ba!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d29688-e264-4b3c-ac41-b7db0ddfea04_2034x900.png 1272w, https://substackcdn.com/image/fetch/$s_!W_Ba!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d29688-e264-4b3c-ac41-b7db0ddfea04_2034x900.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>Before looking at this year&#8217;s numbers, were there downsides to a more balanced schedule? Yes. In July, I realized I was going to earn much less. This affected both my personal budget and my business. I had savings to use, but it did not feel good. I felt a wave of anxiety toward the end of the year. Money was tight, and I was searching for more work. I accepted some projects that I would not have taken if I was not stressed about income. Was it worth it for a great year of balance? Yes. I have no regrets. Could the end of the year have been less stressful? Yes. That is why I leaned into commercial work this year. If I front-load the income, I may reduce stress later. So far, I have earned much more than in past cycles. I am on track for a record year.</p><p>I got here by raising my prices and taking on more work. I increased my rates to match inflation. I estimate how many hours a project will take. I divide those hours by how many I will work each month. Then I offer clients a monthly retainer. This model is helpful for clients. It gives them a predictable cost and supports a more collaborative process. The price increase helped, but it did not double my income. The extra work did. As I said before, I took on unwanted projects when I was under pressure. To avoid that, I took a new approach this year. With support from my family and therapist, I decided to say yes only to work that interests me. I followed the energy of the moment. I also chose to trust in abundance. I did not expect this side effect: when the work is exciting, it no longer feels like work. This has been a big positive. I do not think I can maintain this pace all year.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0KfZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28b2c5e5-d730-42d0-87a7-864d65fd4c86_2034x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0KfZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28b2c5e5-d730-42d0-87a7-864d65fd4c86_2034x900.png 424w, https://substackcdn.com/image/fetch/$s_!0KfZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28b2c5e5-d730-42d0-87a7-864d65fd4c86_2034x900.png 848w, https://substackcdn.com/image/fetch/$s_!0KfZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28b2c5e5-d730-42d0-87a7-864d65fd4c86_2034x900.png 1272w, https://substackcdn.com/image/fetch/$s_!0KfZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28b2c5e5-d730-42d0-87a7-864d65fd4c86_2034x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0KfZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28b2c5e5-d730-42d0-87a7-864d65fd4c86_2034x900.png" width="1456" height="644" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/28b2c5e5-d730-42d0-87a7-864d65fd4c86_2034x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:644,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:48989,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jonofyi.substack.com/i/166698469?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28b2c5e5-d730-42d0-87a7-864d65fd4c86_2034x900.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_!0KfZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28b2c5e5-d730-42d0-87a7-864d65fd4c86_2034x900.png 424w, https://substackcdn.com/image/fetch/$s_!0KfZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28b2c5e5-d730-42d0-87a7-864d65fd4c86_2034x900.png 848w, https://substackcdn.com/image/fetch/$s_!0KfZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28b2c5e5-d730-42d0-87a7-864d65fd4c86_2034x900.png 1272w, https://substackcdn.com/image/fetch/$s_!0KfZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28b2c5e5-d730-42d0-87a7-864d65fd4c86_2034x900.png 1456w" sizes="100vw"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 graphs and numbers reflect these choices. My personal work dropped from 37 percent to 11 percent. My sales and subscriptions also declined. This is not a surprise. I still maintain a few projects that receive occasional support. However, I have few chances to ask for donations or to charge for access. My website traffic is down. Also, there was a short time when my apps were removed from the App Store. That happened when I switched from an individual account to an organization account. These things explain the decline. I still have a long-term goal to rely less on client work. For now, that goal will wait.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ya3D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3636997-2578-49b5-9c9d-3459aa9c988b_2416x900.png" data-component-name="Image2ToDOM"><div class="image2-inset image2-full-screen"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ya3D!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3636997-2578-49b5-9c9d-3459aa9c988b_2416x900.png 424w, https://substackcdn.com/image/fetch/$s_!Ya3D!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3636997-2578-49b5-9c9d-3459aa9c988b_2416x900.png 848w, https://substackcdn.com/image/fetch/$s_!Ya3D!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3636997-2578-49b5-9c9d-3459aa9c988b_2416x900.png 1272w, https://substackcdn.com/image/fetch/$s_!Ya3D!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3636997-2578-49b5-9c9d-3459aa9c988b_2416x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ya3D!,w_5760,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3636997-2578-49b5-9c9d-3459aa9c988b_2416x900.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f3636997-2578-49b5-9c9d-3459aa9c988b_2416x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;full&quot;,&quot;height&quot;:542,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:66936,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jonofyi.substack.com/i/166698469?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3636997-2578-49b5-9c9d-3459aa9c988b_2416x900.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-fullscreen" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ya3D!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3636997-2578-49b5-9c9d-3459aa9c988b_2416x900.png 424w, https://substackcdn.com/image/fetch/$s_!Ya3D!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3636997-2578-49b5-9c9d-3459aa9c988b_2416x900.png 848w, https://substackcdn.com/image/fetch/$s_!Ya3D!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3636997-2578-49b5-9c9d-3459aa9c988b_2416x900.png 1272w, https://substackcdn.com/image/fetch/$s_!Ya3D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3636997-2578-49b5-9c9d-3459aa9c988b_2416x900.png 1456w" sizes="100vw"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 chart showing Commercial (blue) and Personal (green) work explains two key ideas from the last five years. In 2021, I wanted better balance between personal and client work. I thought that was the reason I ran my own business. This past year, I changed direction. I embraced the client work that came my way. With that shift, I doubled my income. That success brought confidence. That confidence made me more excited to work with my clients. This created a positive loop. At the same time, I feel like I am hitting the limits of what one person can manage. We will have to wait until next year to see how well front-loading income works. Until then, see you next month.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://docs.google.com/spreadsheets/d/1zjnvhulDYy1LddwQbn2GIS-2qtVKRxJ5DtU7MKB1pOo/&quot;,&quot;text&quot;:&quot;Review the YoY numbers&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://docs.google.com/spreadsheets/d/1zjnvhulDYy1LddwQbn2GIS-2qtVKRxJ5DtU7MKB1pOo/"><span>Review the YoY numbers</span></a></p><p>&#8212;Jono</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"><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;ffab03ff-54d1-4a07-8486-183cfa206454&quot;,&quot;caption&quot;:&quot;It is a well known fact that famed designer and showman Stefan Sagmeister takes a year off every seven years. Here is his TED talk on it from 2009. I learned about this when I was an undergraduate studying design. Every once and awhile I think about this cycle and how it applies to me. The idea of cycles makes a lot of sense. However, growing up in the &#8230;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Earning My Self-Employed Degree&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1596155,&quot;name&quot;:&quot;Jono Brandel&quot;,&quot;bio&quot;:&quot;I use graphic design and computer programming to explore the expressive qualities of technology.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/49c543c2-3720-4dfe-ab08-af8d30e94428_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-07-23T15:01:33.898Z&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%2F3e54b736-a44e-46b1-9a80-e96d423c2246_2034x900.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jonofyi.substack.com/p/earning-my-self-employed-degree&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:146904721,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:1,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Soup to Software&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!dk-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6058d174-9eca-419b-9523-6c36acf15e68_256x256.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></div></div>]]></content:encoded></item><item><title><![CDATA[Finding Community in the Business of things]]></title><description><![CDATA[A rewind of vendor options to handle Dataland&#8217;s ticketing needs]]></description><link>https://jonofyi.substack.com/p/finding-community-in-the-business</link><guid isPermaLink="false">https://jonofyi.substack.com/p/finding-community-in-the-business</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Fri, 23 May 2025 14:34:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!MV2y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aee3189-9387-4916-a0b4-5e0d20d291c6_3024x1964.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Earlier this month Efsun Erkilic, one of Dataland&#8217;s founders and the Chief Strategy Officer of the museum, spoke about <em>Data, Storytelling, and the Dynamic Museum</em> to the <a href="https://www.aam-us.org/">American Alliance of Museums</a> here in Los Angeles. The lecture and discussion was supported by <a href="https://acmeticketing.com/">ACME Ticketing</a>, a staple in the museum and cultural institution domain. ACME is the ticketing platform for Dataland. Slight aside: the museum is not yet open, but slated to open this year. While I was not able to attend the talk, the discussion and coordination leading up to the conference, gave me great perspective on this +2 year partnership.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MV2y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aee3189-9387-4916-a0b4-5e0d20d291c6_3024x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset image2-full-screen"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MV2y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aee3189-9387-4916-a0b4-5e0d20d291c6_3024x1964.png 424w, https://substackcdn.com/image/fetch/$s_!MV2y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aee3189-9387-4916-a0b4-5e0d20d291c6_3024x1964.png 848w, https://substackcdn.com/image/fetch/$s_!MV2y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aee3189-9387-4916-a0b4-5e0d20d291c6_3024x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!MV2y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aee3189-9387-4916-a0b4-5e0d20d291c6_3024x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MV2y!,w_5760,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aee3189-9387-4916-a0b4-5e0d20d291c6_3024x1964.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9aee3189-9387-4916-a0b4-5e0d20d291c6_3024x1964.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;full&quot;,&quot;height&quot;:946,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:267986,&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://jonofyi.substack.com/i/164216138?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aee3189-9387-4916-a0b4-5e0d20d291c6_3024x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-fullscreen" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MV2y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aee3189-9387-4916-a0b4-5e0d20d291c6_3024x1964.png 424w, https://substackcdn.com/image/fetch/$s_!MV2y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aee3189-9387-4916-a0b4-5e0d20d291c6_3024x1964.png 848w, https://substackcdn.com/image/fetch/$s_!MV2y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aee3189-9387-4916-a0b4-5e0d20d291c6_3024x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!MV2y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aee3189-9387-4916-a0b4-5e0d20d291c6_3024x1964.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 screenshot of the calendar view to purchase tickets for Dataland, 2025.</figcaption></figure></div><p>Partnerships in the context of business boil down to value based transactions. I present something of value to you. You give me something of value in return. This simplistic view, however, does not reveal the intangible qualities of what a partnership fully entails. The personalities, contact, rapport, and goals of each party play a large part in how smoothly (or not) the transaction occurs. For as long as I have been building websites, I stayed within my expertise: the design of the page, the rendering of the components, the performance of the experience, the browser. So, when I started working on Dataland, I was upfront about saying what my expertise was and more importantly what my expertise was not: how to manage and sell a lot of tickets.</p><p>In early 2023, Refik Anadol, a founder and artistic director of Dataland, asked me to conduct research into ticketing vendors to support my gap in expertise. The team spent about 3 months interviewing and debating who to partner with before choosing. We then did not even start building the ticketing flow on the website until the following year. Below, is the comparison presentation between the two top choices in ticketing vendors I put together:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://docs.google.com/presentation/d/1Rs1sVOFNbxtlPEJkevuDMaBjvaUCQfbX_hkB2oyuLso/edit?usp=sharing&quot;,&quot;text&quot;:&quot;Check out the Ticket Vendors Comparison&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://docs.google.com/presentation/d/1Rs1sVOFNbxtlPEJkevuDMaBjvaUCQfbX_hkB2oyuLso/edit?usp=sharing"><span>Check out the Ticket Vendors Comparison</span></a></p><p>When I made this presentation, I anticipated a three year contract. This is the standard initial engagement length for many of these white label services. But, this was an intellectual expectation, not an emotional one. I focused on the capacity for us to customize and tailor the user&#8217;s experience of purchasing a ticket on Dataland. I thought about the ticket price implications for the customer. I considered how and where the customer could purchase their ticket. To be blunt, I looked at it like I look at a lot of technologies: a logical transaction. Working with ACME has been much more than their API, customization tools, and volume experience. Each week I meet up with someone on their team and present the state of the website. They listen and along the way provide guidance. Yes, most of it pertains to how their product works. No, their product does not work 100% how Dataland would like to use it. As a partner, however, they are invested in the museum&#8217;s success. Their suggestions have as much to do about framing the ticketing experience as distributors as it does about using the ticketing platform. They helped me better imagine the ticketing journey.</p><p>In this way, they have filled many gaps in expertise. Their partnership has provided confidence as much as it has tickets. It has given me a new understanding of where business and arts intersect.</p><p>I am excited for you to use (and hopefully not really notice) the ticketing experience at Dataland,</p><p>&#8212;Jono</p>]]></content:encoded></item><item><title><![CDATA[Soup to Software]]></title><description><![CDATA[Five years in, I am switching up the name of this newsletter to reflect and reestablish what I have been writing about.]]></description><link>https://jonofyi.substack.com/p/soup-to-software</link><guid isPermaLink="false">https://jonofyi.substack.com/p/soup-to-software</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Wed, 30 Apr 2025 15:02:37 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4b351ff6-a59b-4600-bfce-69e45d04183f_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Since I started this newsletter, I have tried to take an even-keeled approach to imagining digital experiences and running a business to make them. My aim is to frame the work that I do in a way where each piece or project&#8217;s character shines. This started as monthly email updates. While the frequency remains, I changed platforms for publishing and archiving these posts. I have also altered my stance with regards to posting on social media. Given these changes, which I will visit in detail below, I felt it right to update the name of my newsletter. <em>Soup to Software</em> feels right. Let me explain.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;6674465c-b716-4087-9339-f1406211dd25&quot;,&quot;duration&quot;:null}"></div><p><em>Soup to Software</em> is a pun on the phrase &#8220;soup to nuts&#8221;. For those unfamiliar with the phrase, it basically means &#8220;from beginning to end&#8221;. Its origins stem from American traditions of multi-course meals where soup was often served first and nuts last. I like this pun because it represents me and my practice in a descriptive way. First, I relish in the tedium of handling each stage of my craft myself. Auteurs like surrealist director Fran&#231;ois Truffaut impacted my thinking about craft at university. I want to approach my work in the same way. Knowing firsthand how things work at each stage of a project is one way to honor the approach of an auteur. Second, I enjoy cooking. So much so, I often wear an apron when I sit down at my desk.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> The ritual of standing in the kitchen, chopping, assembling, and composing a delicious meal exercises many of the same mental muscles as creating a digital experience.</p><p>So that is the name change. But, why change at all? In 2020, I decided to wind-down my social media posts. At the time, I did not want to bolster platforms that were not aligned with my values as an artist. As time passed, it has become a simpler reason: I do not want my value to be contingent on social media. My process is slow. The experiences I make (hopefully) speak for themselves. But, they are not able to be directly experienced on social media platforms. My works are not videos or images. I use videos, images, and other source material to create my work. While the accessibility of social media is enticing and lucrative for some, a recap video or a swipe through of different images does not do me or my work justice. Writing in slightly longer format, however, does tap into the context concerning my work. So, a newsletter made sense to me. For the time being, so does cross-posting it to Substack.</p><p>To celebrate this name change, I made a simple &#8220;interactive soup&#8221; which you can see a video recording of me using the webpage above.</p><p>-Jono</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>Visual Music Code Improvisation: <em>Mallow</em> by Curling. Jono Brandel. </p><div id="youtube2-IPi01HrRFXs" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;IPi01HrRFXs&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/IPi01HrRFXs?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></div></div>]]></content:encoded></item><item><title><![CDATA[Client Project: Human Halfway House]]></title><description><![CDATA[A new website for a friend and former coworker with a massive easter egg]]></description><link>https://jonofyi.substack.com/p/client-project-human-halfway-house</link><guid isPermaLink="false">https://jonofyi.substack.com/p/client-project-human-halfway-house</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Tue, 25 Mar 2025 15:00:47 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0cf4f41f-f599-467c-8392-476b2dfd3022_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Towards the end of last year, my friend and former coworker Leila got in touch with me. She is known in music circles as Naz Hejaz and was putting the finishing touches on her sophomore album: <em>Human Halfway House</em>. It is a fever dream of an album. It explores how the human experience is mediated by the digital&nbsp;&#8212;&nbsp;most recently artificial intelligence systems. She proposed a collaboration to build her website for the album. She wanted something unconventional and participatory while still holding all the traditional material a website marketing an album needs: imagery, about, streaming links, that sort of stuff. This is what we came up with.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sTxk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a197069-c99f-4a83-bfdb-426e3b9be7e5_3413x1600.png" data-component-name="Image2ToDOM"><div class="image2-inset image2-full-screen"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sTxk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a197069-c99f-4a83-bfdb-426e3b9be7e5_3413x1600.png 424w, https://substackcdn.com/image/fetch/$s_!sTxk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a197069-c99f-4a83-bfdb-426e3b9be7e5_3413x1600.png 848w, https://substackcdn.com/image/fetch/$s_!sTxk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a197069-c99f-4a83-bfdb-426e3b9be7e5_3413x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!sTxk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a197069-c99f-4a83-bfdb-426e3b9be7e5_3413x1600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sTxk!,w_5760,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a197069-c99f-4a83-bfdb-426e3b9be7e5_3413x1600.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a197069-c99f-4a83-bfdb-426e3b9be7e5_3413x1600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;full&quot;,&quot;height&quot;:683,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:169178,&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://jonofyi.substack.com/i/159702627?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a197069-c99f-4a83-bfdb-426e3b9be7e5_3413x1600.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-fullscreen" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sTxk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a197069-c99f-4a83-bfdb-426e3b9be7e5_3413x1600.png 424w, https://substackcdn.com/image/fetch/$s_!sTxk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a197069-c99f-4a83-bfdb-426e3b9be7e5_3413x1600.png 848w, https://substackcdn.com/image/fetch/$s_!sTxk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a197069-c99f-4a83-bfdb-426e3b9be7e5_3413x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!sTxk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a197069-c99f-4a83-bfdb-426e3b9be7e5_3413x1600.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">DAW Mini. Naz Hejaz Human Halfway House Website. 2025.</figcaption></figure></div><p>The homepage has all the necessary information mentioned above. In addition to this, for visitors on their desktop and laptop computers, there is an easter egg that reveals what I call a mini Digital Audio Workstation (DAW). Shown above, the DAW Mini allows you to drag clips from Leila&#8217;s single and arrange them into your own eight bar loop. DJs and musicians often cut stems of a single to enable remixes. This interface takes it a step further by allowing anyone to make custom loops and cutdowns of Leila&#8217;s amazing samples from her single <em>Incurable Dreams</em>. The features of the DAW Mini include quantization, start and end delimiters, and mp3 downloading with metadata included.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;http://nazhejaz.com/&quot;,&quot;text&quot;:&quot;Try Naz Hejaz&#8217;s DAW&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="http://nazhejaz.com/"><span>Try Naz Hejaz&#8217;s DAW</span></a></p><p>Leila, a software engineer by day, built an easy-to-use and access Content Management System (CMS) to organize and store the audio samples. I added the interface on top. At the eleventh hour we decided to reveal the DAW Mini as an easter egg instead of as the first thing you see. One challenge making the DAW Mini was determining how many features to include. What has been great working with Leila is that she is a recording artist. She is the composer and performer, so the conversation of what was the simplest set of features opened my eyes to the perspective of a music producer.</p><p>The productive conversations and conclusions we came to make me think there is an opportunity (particularly with the not too long ago Epic Games&#8217; sale of Bandcamp)<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> to provide distribution tools that speak to music creators&#8217; needs. Streaming is one of many things that artists and bands need to juggle when releasing their content.</p><p>Anyway, give it a try. I would love to hear what you make!</p><p>&#8211;Jono</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><em>Epic Games Sells Bandcamp Amid Layoffs</em>. Jazz Monroe. Pitchfork. <a href="https://pitchfork.com/news/epic-games-sells-bandcamp-amid-layoffs/">https://pitchfork.com/news/epic-games-sells-bandcamp-amid-layoffs/</a></p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Living Encyclopedia: Research Mode]]></title><description><![CDATA[To unpack what Dataland&#8217;s Living Encyclopedia means to me, I pull back the curtain on the different modes. This month is Research Mode.]]></description><link>https://jonofyi.substack.com/p/living-encyclopedia-research-mode</link><guid isPermaLink="false">https://jonofyi.substack.com/p/living-encyclopedia-research-mode</guid><dc:creator><![CDATA[Jono Brandel]]></dc:creator><pubDate>Tue, 25 Feb 2025 16:02:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bymJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4782781c-d03e-4162-bd2e-8ca9e15875bc_3456x2160.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last month, I covered Dream Mode<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> in Dataland&#8217;s first experience: an Artificial Intelligence (AI) system trained on nature data conserved by some of the leading institutions in the world and comprising over 180 million datapoints. This month, I want to cover the other end of the cerebral experience spectrum: Research Mode in Dataland&#8217;s <a href="https://lnm.dataland.art/">Living Encyclopedia</a>. While we use our minds to both dream and research, they occupy different ways of thinking. Dreams are present and ephemeral thoughts. Research is a methodical process to organize thoughts. In this post, I will share different ways we present the same data to users in the hopes to solicit these modes of being: Dream and Research.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bymJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4782781c-d03e-4162-bd2e-8ca9e15875bc_3456x2160.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bymJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4782781c-d03e-4162-bd2e-8ca9e15875bc_3456x2160.png 424w, https://substackcdn.com/image/fetch/$s_!bymJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4782781c-d03e-4162-bd2e-8ca9e15875bc_3456x2160.png 848w, https://substackcdn.com/image/fetch/$s_!bymJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4782781c-d03e-4162-bd2e-8ca9e15875bc_3456x2160.png 1272w, https://substackcdn.com/image/fetch/$s_!bymJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4782781c-d03e-4162-bd2e-8ca9e15875bc_3456x2160.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bymJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4782781c-d03e-4162-bd2e-8ca9e15875bc_3456x2160.png" width="1456" height="910" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4782781c-d03e-4162-bd2e-8ca9e15875bc_3456x2160.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5136312,&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://jonofyi.substack.com/i/157767293?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4782781c-d03e-4162-bd2e-8ca9e15875bc_3456x2160.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_!bymJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4782781c-d03e-4162-bd2e-8ca9e15875bc_3456x2160.png 424w, https://substackcdn.com/image/fetch/$s_!bymJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4782781c-d03e-4162-bd2e-8ca9e15875bc_3456x2160.png 848w, https://substackcdn.com/image/fetch/$s_!bymJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4782781c-d03e-4162-bd2e-8ca9e15875bc_3456x2160.png 1272w, https://substackcdn.com/image/fetch/$s_!bymJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4782781c-d03e-4162-bd2e-8ca9e15875bc_3456x2160.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Research Mode, Living Encyclopedia, 2025.</figcaption></figure></div><p>In Dream Mode, we focus on a visualization of the AI&#8217;s mind (seen in the above picture as the celestial body on the right side). It is a way to spatially organize the data Refik Anadol Studio&#8217;s fed to the AI model. The user interface is reduced to a top bar to switch modes. While you can click, tap, or drag to pan around the space yourself, you do not have to. The application wanders through the AI&#8217;s mind highlighting points of interest and revealing different species of flora, fauna, and fungi. Refik has described it as &#8220;meditative&#8221;. Research Mode (seen above in its entirety), on the other hand, confines this visualization to a box. The mode populates many other user interface elements around it for you to explore. It is rigid in its design and generous in its presentation of information. Unlike current AI products out there, the Living Encyclopedia embraces two cultural ways of engaging with and consuming information: European design associated with minimalism and Asian design associated with high-density layouts.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> As much as I enjoy and sometimes identify with Japanese culture, I am not Japanese. So, while we took a high-density approach to laying out Research Mode, I relied on western ways of thinking to connect the boxes together.</p><p>The approach I took, is reminiscent of my 2021 piece <a href="https://curaturae.com/faq">Curaturae: Writing with Open Access</a>. Every element in Research Mode has at least one interaction or reaction to another one. For example, if you click on a biome from the &#8220;Biome Index&#8221; on the left-sidebar it will populate into Large Language Model (LLM) chat box to the right of it. It also prompts the &#8220;Image Generation&#8221; to draw an image based on the biome&#8217;s scientific name. This kind of high-density layout with a tight web of correlated interactions has two academic references: Edward Tufte&#8217;s Supergraphic<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> and Oulipian rules<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a>. The result, I hope, is a kind of choose your own adventure through the data. If the chatting to the LLM resonates with you, then you can do that. If clicking on the weather data captured by Refik&#8217;s studio or server communications piques your interest. You can do that too. There is no right way. AI models are highly complex multi-dimensional systems. By bringing disparate aspects of the means of production to the user, our aim is add meaningful pathways through this complex system. So you can assess it for yourself.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://dataland.art/about/living-encyclopedia/&quot;,&quot;text&quot;:&quot;More on Living Encyclopedia&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://dataland.art/about/living-encyclopedia/"><span>More on Living Encyclopedia</span></a></p><p>Through different modes you have different ways to sift through the massive amounts of data compiled by Refik Anadol Studios. And through referencing different cultural ways of consuming information, we present a truly different take on AI systems. One made by artists, that I hope you will try. And starting today, the Living Encyclopedia is available to anyone. It costs $10 / month or $100 for a year of access. If you sign up for a monthly subscription you receive a 14 day trial. As a small gift to my readers, you can checkout with the promo code <code>JONOFYI</code> and receive the first month free (limited to the first 100 orders). To get started, click the red button above.</p><p>If you give it a try, please tell me what you think! This has been years in the making. These behind-the-scenes posts aim to convince you that this type of digital experience is not only unique to Refik&#8217;s artistic vision, but to mine as well.</p><p>&#8211;Jono</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"><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;eb8bc659-067d-431e-96ec-234618690485&quot;,&quot;caption&quot;:&quot;Last month Dataland announced its first offering for beta testing to the public, the Living Encyclopedia: Large Nature Model. It presents the custom artificial intelligence models that Refik Anadol Studio has developed in an interface that anyone can use to research, create, and, dream their own natural worlds. The reason Dataland, the world&#8217;s first mus&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Living Encyclopedia: Dream Mode&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1596155,&quot;name&quot;:&quot;Jono Brandel&quot;,&quot;bio&quot;:&quot;I use graphic design and computer programming to explore the expressive qualities of technology.&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/49c543c2-3720-4dfe-ab08-af8d30e94428_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-01-22T16:01:42.250Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9fea4694-0ff7-4e76-82a7-03f0d51f5629_1920x1001.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jonofyi.substack.com/p/living-encyclopedia-dream-mode&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:155142843,&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;Jono&#8217;s Monthly Newsletter&quot;,&quot;publication_logo_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%2F6e26ff0a-a284-4cee-a128-57a87da1c1a4_512x512.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><div id="youtube2-vi8pyS076a8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;vi8pyS076a8&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/vi8pyS076a8?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><em>Japanese web design: weird, but it works. Here&#8217;s why</em>. Phoebe Yu. 2024.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>The term <em>Supergraphic</em> is explained in <em>The Visual Display of Quantitative Information</em>. Edward R. Tufte. 1983. <a href="https://www.edwardtufte.com/book/the-visual-display-of-quantitative-information/">https://www.edwardtufte.com/book/the-visual-display-of-quantitative-information/</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>Explanation of Oulipian rules within application user experience in <em>Curaturae FAQ: Why does the application only select nouns and verbs?</em> <a href="https://curaturae.com/faq#why-does-the-application-only-select-nouns-and-verbs">https://curaturae.com/faq#why-does-the-application-only-select-nouns-and-verbs</a>.</p></div></div>]]></content:encoded></item></channel></rss>