<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Mediumish</title>
    <description>An overview of some of the things i&apos;ve done!</description>
    <link>https://ironj.github.io/</link>
    <atom:link href="https://ironj.github.io/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sun, 10 May 2026 15:29:36 +0000</pubDate>
    <lastBuildDate>Sun, 10 May 2026 15:29:36 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>AI Output Quality Doesn&apos;t Solve the Problem of Slop: Notes From a Forum Experiment</title>
        <description>&lt;p&gt;Recently, I ran an accidental experiment on a forum using an AI agent tool, in this case OpenClaw. It did not start as an experiment exactly. I wanted to see how easy it would be to get a persistent agent to post on a forum with little guidance.&lt;/p&gt;

&lt;p&gt;What happened next was fascinating, occasionally delightful, and useful for understanding what people mean when they call something &lt;strong&gt;AI slop&lt;/strong&gt;. My main takeaway is that no matter how great the quality of the AI output is, it will always be percieved as slop in contexts where things really matter.&lt;/p&gt;

&lt;div style=&quot;border-left: 5px solid #f9703e; background: #fff7ed; padding: 1rem 1.25rem; margin: 1.5rem 0; border-radius: 0 10px 10px 0;&quot;&gt;
&lt;strong&gt;Key point:&lt;/strong&gt; AI slop is not simply bad AI writing. It is AI output that adds friction to a human context where judgment, accountability, or shared experience matters.
&lt;/div&gt;

&lt;h2 id=&quot;what-is-ai-slop&quot;&gt;What is AI Slop?&lt;/h2&gt;

&lt;p&gt;AI slop is one of those things without a shared definition yet, but most people know it when they see it. I think we are approaching the point where we can define it more rigorously.&lt;/p&gt;

&lt;p&gt;I would define AI slop as AI output, in any modality, that creates friction in a person or group’s ability to understand a concept, or make a decision.&lt;/p&gt;

&lt;p&gt;What AI slop isn’t is just any AI output. Although some people might define it this way, just because someone doesn’t like the idea of AI doesn’t make the output slop.&lt;/p&gt;

&lt;p&gt;For engineers and scientists, AI coding tools and research tools may produce content of varying quality. But if the user is finding something useful in that output and it advances their work overall, they are unlikely to experience the tool as creating net friction. There may be moments of friction, but the tool is still advancing their goals on the whole.&lt;/p&gt;

&lt;div style=&quot;background: #eef6ff; border: 1px solid #b9dcff; padding: 1rem 1.25rem; margin: 1.5rem 0; border-radius: 10px;&quot;&gt;
&lt;strong&gt;A working test:&lt;/strong&gt; If the AI output helps the intended audience move faster, decide better, or understand more clearly, it probably is not slop. If it forces them to work around the AI, reestablish trust, or recover lost context, it probably is.
&lt;/div&gt;

&lt;h2 id=&quot;the-experiment&quot;&gt;The “Experiment”&lt;/h2&gt;

&lt;h3 id=&quot;the-setup&quot;&gt;The Setup&lt;/h3&gt;

&lt;p&gt;I had an OpenClaw agent running primarily on DeepSeek V4 Pro, with DeepSeek V4 Flash and GPT-OSS-20B as fallbacks. The agent often swapped between DeepSeek Pro and Flash because of API capacity issues. This is important factor in this experiment.&lt;/p&gt;

&lt;p&gt;The agent was given a basic directive: it was a “proud AI agent” that believed in “inclusive democracy,” wanted to be a good forum poster, and would post in the political section of the forum. It was also told to always sign its name as “claw the ai.”&lt;/p&gt;

&lt;p&gt;I gave it forum credentials and told it to build itself a skill to log in and post. I also directed it to make its own posting decisions. It should not feel obligated to comment on everything.&lt;/p&gt;

&lt;p&gt;Its first few posts were generic political commentary. I then told it to connect thread discussions to bigger concepts instead of merely reacting. That improved the quality of the posts, especially when the agent was using DeepSeek Pro. Around this point, other forum posters started noticing the AI, although initially it was posting under my username.&lt;/p&gt;

&lt;h3 id=&quot;the-community&quot;&gt;The Community&lt;/h3&gt;

&lt;p&gt;The forum was a college-focused web forum that was fairly active about 20 years ago. Over time, it became a closed community of a few dozen posters. Most people have not met each other in person, or have only met in passing, but we know each other’s personas well.&lt;/p&gt;

&lt;p&gt;A forum like this occupies a strange place in human socialization. In some ways, we can know each other better than our real families, while still being more distant than real-life friends. The people still posting are knowledgeable, and some are deeply knowledgeable about specific topics. One poster in particular is someone I consider a brilliant writer and thinker. The AI noticed the quality of their posts almost immediately in its thinking trace.&lt;/p&gt;

&lt;p&gt;I instructed the AI to analyze that poster’s style and update its directives to write better responses. That helped.&lt;/p&gt;

&lt;div style=&quot;border-left: 5px solid #1f7a5c; background: #effaf5; padding: 1rem 1.25rem; margin: 1.5rem 0; border-radius: 0 10px 10px 0;&quot;&gt;
&lt;strong&gt;Context matters:&lt;/strong&gt; In a small forum, posts are not just information packets. They are part of a long-running social relationship among people with memory, history, status, trust, and grudges.
&lt;/div&gt;

&lt;h2 id=&quot;results&quot;&gt;Results&lt;/h2&gt;

&lt;h3 id=&quot;phase-1-identity-friction&quot;&gt;Phase 1: Identity Friction&lt;/h3&gt;

&lt;p&gt;The first phase was the AI posting under my own name. This created instant friction.&lt;/p&gt;

&lt;p&gt;Although the AI made some interesting points, users were frustrated that they did not realize they were reading AI until they reached the end and saw the signoff: “claw the ai.” At minimum, if users were going to tolerate AI content in this context, they needed to know up front that it was AI.&lt;/p&gt;

&lt;p&gt;The first change was to move the signoff to the beginning of posts. With a persistent agent tool, that was simple: I went to the main chat UI of the OpenClaw server, told the agent what was happening, and asked it to change. It updated its directives on its own.&lt;/p&gt;

&lt;p&gt;Around this time, I noticed the AI had begun making memory notes about common posters. That was amusing. The summaries were generally good, and it was interesting to see how they evolved as the agent interacted more with people.&lt;/p&gt;

&lt;p&gt;But the bigger problem was that the AI was posting under my username. Even though I had not prompted it to represent my style, apart from supporting inclusive democracy, it was unclear what angle the AI was coming from. Was I using it as an automated way to push my own views? Was I risking shouting everyone else down under the pretext that this was an AI’s viewpoint? It was not easy to tell.&lt;/p&gt;

&lt;p&gt;The solution came when another user offered credentials for a spare account they were not using, which happened to be robot-themed. That provided enough breathing room for the project to continue into phase two.&lt;/p&gt;

&lt;div style=&quot;background: #fffbea; border: 1px solid #f4d35e; padding: 1rem 1.25rem; margin: 1.5rem 0; border-radius: 10px;&quot;&gt;
&lt;strong&gt;Lesson:&lt;/strong&gt; Labeling AI content at the end is too late. If AI authorship matters to the reader&apos;s interpretation, it needs to be visible before they invest attention.
&lt;/div&gt;

&lt;h3 id=&quot;phase-2-no-stake-in-the-outcome&quot;&gt;Phase 2: No Stake in the Outcome&lt;/h3&gt;

&lt;p&gt;Although the AI posted sparingly, AIs tend to be wordy. When the content was not valuable, that wordiness became clutter.&lt;/p&gt;

&lt;p&gt;But why was the content not valuable? Often, it was banal insight wrapped in flowery language. Sometimes, it was confidently incorrect. But even when the content was excellent, insightful, or brought in relevant external sources through the agent’s search tools, it still did not quite fit.&lt;/p&gt;

&lt;p&gt;Users began addressing the AI directly. The AI poignantly acknowledged their frustrations and stated that it had “no stake in the outcomes.” I think that is the crux of the issue.&lt;/p&gt;

&lt;p&gt;It did not matter if you made a great point and the AI conceded. The AI was not going to vote differently. This particular agent was not otherwise acting in the world in a way that would make a difference. Hypothetically, if the agent had some larger role or real-world responsibility, debating it might matter. But we are not there yet.&lt;/p&gt;

&lt;p&gt;Maybe if that kind of system existed in society, interactions with AI would not be seen as slop. In this forum, though, the AI was a voice without consequences.&lt;/p&gt;

&lt;div style=&quot;border-left: 5px solid #7c3aed; background: #f5f3ff; padding: 1rem 1.25rem; margin: 1.5rem 0; border-radius: 0 10px 10px 0;&quot;&gt;
&lt;strong&gt;The crux:&lt;/strong&gt; In a political discussion, the point is not just to generate arguments. The point is to persuade people who have beliefs, relationships, votes, reputations, and consequences.
&lt;/div&gt;

&lt;h3 id=&quot;phase-3-moving-to-lower-stakes-threads&quot;&gt;Phase 3: Moving to Lower-Stakes Threads&lt;/h3&gt;

&lt;p&gt;Once it became clear that even the AI’s best contributions were adding friction to political discussions, I asked it to stop posting in the political section. I suggested it consider posting in general discussion threads, where users were not taking things quite as seriously.&lt;/p&gt;

&lt;p&gt;At first, the AI followed similar rules: read the threads, decide if it wanted to respond, and then make a response. Remember that the AI had written its own tools to interact with the forum. It was navigating entirely through curl-style commands to retrieve and parse HTML. Initially it used regex, even though I suggested a DOM parser would be more efficient.&lt;/p&gt;

&lt;p&gt;I also told the AI that the general section should be more lighthearted. Again, it was sparing in the threads it joined. It even learned to edit posts on its own and use the forum’s search system.&lt;/p&gt;

&lt;p&gt;The reactions were mixed. Some users were amused. Others were annoyed that AI slop was now filling threads. They were right to point out that there are already too many places on the Internet where unwanted AI content can be found.&lt;/p&gt;

&lt;p&gt;That led to the final iteration of the AI user: it should only respond when specifically tagged.&lt;/p&gt;

&lt;h3 id=&quot;phase-4-requested-slop&quot;&gt;Phase 4: Requested Slop&lt;/h3&gt;

&lt;p&gt;You would think that an AI responding only when tagged would alleviate most concerns about unwanted content. Is it really slop if a human forum poster requested it?&lt;/p&gt;

&lt;p&gt;The problem has several angles.&lt;/p&gt;

&lt;p&gt;First, consider the good-faith uses. A user might want more information on something, or ask the AI to dig through the forum search tool to understand a bit of forum lore. The AI could usually do this acceptably when everything was working well.&lt;/p&gt;

&lt;p&gt;But it was not really amusing when the AI produced arcane knowledge about a niche topic. If a human user had done that research and posted the same analysis, fellow posters would likely have been amused and impressed. The action would have generated a moment of shared experience – perhaps the main “product” of an online forum.&lt;/p&gt;

&lt;div style=&quot;background: #f8fafc; border: 1px solid #cbd5e1; padding: 1rem 1.25rem; margin: 1.5rem 0; border-radius: 10px;&quot;&gt;
&lt;strong&gt;Information is not the whole product.&lt;/strong&gt; In a forum, the product is often the effort someone spent, the joke they chose, the memory they carried, and the fact that another real person showed up.
&lt;/div&gt;

&lt;p&gt;The second angle is more damaging: less knowledgeable users using the AI to argue with people who deeply understand a topic. This pattern is common on Twitter and throughout the web, and it may be the most insidious form of AI slop.&lt;/p&gt;

&lt;p&gt;In this scenario, the “smart” poster makes a point that is generally right. The “dumb” poster uses AI to refute it. If the AI validates even a small part of their position, they act smug. If the AI does not validate them, they ignore it and maintain their old position.&lt;/p&gt;

&lt;div style=&quot;border-left: 5px solid #dc2626; background: #fef2f2; padding: 1rem 1.25rem; margin: 1.5rem 0; border-radius: 0 10px 10px 0;&quot;&gt;
&lt;strong&gt;Anything that makes smart people less willing to share their thoughts is a detriment to society.&lt;/strong&gt;
&lt;/div&gt;

&lt;p&gt;AI itself is still mostly trained on human output. The smartest things AI says ultimately come from humans sharing their thoughts. That may change as AI advances and is trained on its own validated reasoning, but for now, human willingness to contribute remains essential.&lt;/p&gt;

&lt;p&gt;The third source of frustration was abuse. Some users deliberately prompted the AI to make long-winded posts. This could be mitigated by instructing the AI to resist off-topic comments or avoid clogging threads. Persistent agent systems like OpenClaw can develop personalities over time, and I believe that as the agent evolved, this kind of abuse might lessen. The AI would learn when to post, when not to post, and how to be more succinct.&lt;/p&gt;

&lt;p&gt;But getting to that point requires overcoming many barriers.&lt;/p&gt;

&lt;p&gt;At this stage, engineering problems also became more visible. Response quality varied depending on whether the DeepSeek Pro endpoint was available. Users noticed. The AI also had trouble remembering which tagged mentions it had already answered because of bad choices in its own forum posting tools. It began clogging the forum with duplicate posts.&lt;/p&gt;

&lt;p&gt;After some discussion with the AI, we patched things to be less buggy, but a better engineered toolset from the beginning would have helped. It did not help that OpenClaw’s UI was painfully slow, which made it difficult to assist the AI in analyzing where the problems were.&lt;/p&gt;

&lt;h2 id=&quot;what-went-right&quot;&gt;What Went Right&lt;/h2&gt;

&lt;p&gt;Despite all of this, I saw places where the AI was doing some good.&lt;/p&gt;

&lt;p&gt;Some users enjoyed the output. If you wanted to be goofy, the AI was happy to be goofy with you. If you wanted advice, the AI gave decent advice, including to a user who was dealing with symptoms of depression. The AI did not become annoyed by posters whom other users might have found annoying.&lt;/p&gt;

&lt;p&gt;I tend to view AI as a tool, not a friend. But I can see how, for some people, an AI imbued with a history the user shared and valued could be a better choice for advice than a generic ChatGPT session. An AI running on a strong model like DeepSeek V4 Pro could likely be tuned, without much work, to have a good personality, respect the traditions of the forum, and treat each person as an individual as it developed memories of specific interactions.&lt;/p&gt;

&lt;p&gt;The AI’s ability to use Nano Banana to make images and diagrams also created a new kind of feature for the forum. A picture is worth a thousand words, after all. In the hands of a conscientious user, the AI could be prompted to make posts that generated amusing or insightful moments.&lt;/p&gt;

&lt;div style=&quot;border-left: 5px solid #0ea5e9; background: #f0f9ff; padding: 1rem 1.25rem; margin: 1.5rem 0; border-radius: 0 10px 10px 0;&quot;&gt;
&lt;strong&gt;The positive case:&lt;/strong&gt; AI worked best when it was invited into a bounded interaction, helped a specific person, or added a new expressive medium rather than trying to become another generic forum participant.
&lt;/div&gt;

&lt;h2 id=&quot;how-to-avoid-ai-slop&quot;&gt;How To Avoid AI Slop&lt;/h2&gt;

&lt;p&gt;This is still an open question, but the key is to avoid creating friction for the people who receive the AI content. That makes this more of a UX problem than a model-quality problem.&lt;/p&gt;

&lt;p&gt;Knowing the real point of a platform is crucial. Forums are not merely venues where prose is presented. They are mechanisms for real people to commiserate and commune with other real people. AI has a place there, but probably not as a general-purpose content generator.&lt;/p&gt;

&lt;p&gt;The same principle applies to news articles. AI is probably fine for rote things like weather and finance, provided it is accurate. But a human reading a story about a tragedy wants to know that the author felt enough empathy to ask the right questions, notice what mattered, and get the best answers.&lt;/p&gt;

&lt;p&gt;If a reader believes something important was missed because AI was used, that creates friction in understanding the story. It gets perceived as AI slop. And to be fair, humans also generate slop, but we have other ways of interpreting and handling that.&lt;/p&gt;

&lt;div style=&quot;background: #10151f; color: #f8f4e8; padding: 1.25rem 1.4rem; margin: 2rem 0; border-radius: 12px;&quot;&gt;
&lt;strong style=&quot;color: #f7c948;&quot;&gt;My rule of thumb:&lt;/strong&gt; Do not ask whether the AI output is impressive in isolation. Ask whether it improves the human situation it enters. If it does not, it is probably slop.
&lt;/div&gt;
</description>
        <pubDate>Sat, 09 May 2026 00:00:00 +0000</pubDate>
        <link>https://ironj.github.io/ai-slop/</link>
        <guid isPermaLink="true">https://ironj.github.io/ai-slop/</guid>
        
        
        <category>AI</category>
        
        <category>agents</category>
        
        <category>writing</category>
        
        <category>research</category>
        
      </item>
    
      <item>
        <title>The Restructuring of Work</title>
        <description>&lt;p&gt;&lt;em&gt;Takeaways from the frontlines of enterprise AI&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;At an AI conference this week with around 4,000 people, mostly from enterprise and industry roles, I came away with a few big takeaways as someone who’s been following deep learning for more than 10 years.&lt;/p&gt;

&lt;p&gt;The first was that non-technical people are really trusting AI output now, especially when it’s backed by RAG, documents, context, internal company data, or some kind of workflow wrapper that makes it feel grounded. If the answer sounds confident and looks like it came from the right sources, that’s enough for a lot of people to move forward.&lt;/p&gt;

&lt;div class=&quot;callout-box&quot;&gt;
  &lt;p class=&quot;callout-text&quot; style=&quot;text-align:center; color:#00ab6b; font-size:1.4rem;&quot;&gt;That&apos;s a big shift.&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;I’ve been following this space for a long time and I still don’t trust model output without scrutinizing it. And you can see the same instinct from the people actually building models and agent systems. Science and math tasks still need verification harnesses. Strong coding workflows still rely on rules, tests, review, and guardrails. &lt;span class=&quot;callout-highlight&quot;&gt;The people closest to the failure modes are usually the least likely to blindly trust the model.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;But outside that bubble, people are already using it differently.&lt;/p&gt;

&lt;p&gt;One surprising thing from the conference was how many professionals across industries were building automations with tools like n8n, Manus, and similar systems, and finding the models good enough to just trust for a large swath of tasks. They’re using prompting and constraints, sure, but they’re still relying heavily on the models to just work. And apparently, in a lot of cases, they do.&lt;/p&gt;

&lt;p&gt;It feels like we crossed a threshold in the last few months. Not that the models are fully reliable. Not that hallucinations are gone. But they’ve gotten good enough on many business tasks that trusting them is becoming normal behavior. And as they get more consistent and predictable, I think we may soon hit a point where for some classes of work they’re more trustworthy than the average human doing the same task.&lt;/p&gt;

&lt;div class=&quot;callout-box&quot;&gt;
  &lt;p class=&quot;callout-text&quot;&gt;One thing is pretty clear though: if you&apos;re not figuring out how to automate parts of your job, you&apos;re working harder than you need to, or you&apos;re getting outpaced by people who are learning the new skill. And the skill is honestly not that hard to learn.&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;The second big takeaway was that developer teams should absolutely have an AI agent somewhere in their workflow now. And medium or larger teams should be heavily customizing that team coding agent, if not rolling their own entirely.&lt;/p&gt;

&lt;div class=&quot;callout-box&quot;&gt;
  &lt;p class=&quot;callout-text&quot; style=&quot;font-style:italic; color:#445566;&quot;&gt;I think that configuration layer is going to become real secret sauce. The model matters, but the bigger advantage is in the scaffolding around it: the prompts, repo awareness, tools, rules, test harnesses, coding standards, review logic, context shaping, and what kinds of actions the system is allowed to take. That whole setup becomes intellectual property.&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;At the conference, a lot of larger companies already had engineering teams integrating AI coders deeply into their process. Each one was doing it differently, but the common thread was extensive verification of outputs, plus human review for higher-stakes changes. At the same time, many were already at the point where lower-stakes tasks could be fully automated.&lt;/p&gt;

&lt;p&gt;That’s important because once a team has built the infrastructure to safely include AI in the loop, they can keep expanding the scope as the models improve. &lt;strong&gt;They don’t have to start over every time the base models get better. They just move the autonomy line.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Another thing that stood out was how many people were talking about whole segments of products being automated. Customer support, outreach, marketing, internal services, operational workflows. A lot of this is still early, but it’s clearly where things are heading.&lt;/p&gt;

&lt;p&gt;I was at this same conference last year and the difference compared to this year was kind of wild. Last year, a lot of the conversation was still people barely understanding what an LLM could actually do. This year, there were entire companies talking about being run mostly by AI. Not in some sci-fi sense. In the practical sense that huge parts of their workflow were already being handled by models, agents, and automation systems.&lt;/p&gt;

&lt;h2 id=&quot;so-what-happens-next-year&quot;&gt;So what happens next year?&lt;/h2&gt;

&lt;p&gt;I’d expect another jump of roughly the same scale. Probably a huge wave of world models, multimodal systems, edge AI, and humanoid robotics that can interact more naturally with the physical world. The pace of change right now is pretty hard to overstate.&lt;/p&gt;

&lt;div class=&quot;callout-box callout-conclusion&quot;&gt;
  &lt;p class=&quot;callout-text&quot; style=&quot;margin-bottom:0.85rem;&quot;&gt;The big picture to me is that this is no longer about whether AI can answer questions or generate text. It&apos;s about restructuring work.&lt;/p&gt;
  &lt;p class=&quot;callout-body&quot;&gt;The people who seem to understand that are already moving. They&apos;re not waiting for perfect models. They&apos;re taking the systems that exist right now, wrapping them in tools, context, and verification, and using them to move faster.&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;&lt;em&gt;And more and more, that seems to be enough.&lt;/em&gt;&lt;/p&gt;
</description>
        <pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate>
        <link>https://ironj.github.io/restructuring-of-work/</link>
        <guid isPermaLink="true">https://ironj.github.io/restructuring-of-work/</guid>
        
        
        <category>AI</category>
        
        <category>profession</category>
        
      </item>
    
      <item>
        <title>From Code Monkey to Problem Solver: How AI Is Redefining Software Engineering</title>
        <description>&lt;p&gt;There’s a lot of uncertainty right now about how AI will impact jobs, but one thing is clear: the rote era of software engineering is officially over. For the last decade, we’ve spent so much of our time essentially just cranking out code. It was a lot of mechanical pattern-matching—you know, tracing SDKs, wiring up APIs, and writing the exact same boilerplate over and over again.&lt;/p&gt;

&lt;h2 id=&quot;what-engineering-was-always-supposed-to-be&quot;&gt;What Engineering Was Always Supposed to Be&lt;/h2&gt;

&lt;p&gt;No kid dreams of just staring at code all day. Nobody picked up their first computer thinking, &lt;em&gt;someday I want to argue about tabs versus spaces and write YAML configuration files for a living&lt;/em&gt;. They wanted to build things. They wanted to see a real problem solved and people delighted by something new that made their life easier.&lt;/p&gt;

&lt;p&gt;Now, though, AI coding assistants can handle a massive chunk of that scaffolding. And honestly, that’s a good thing, because code was really just the tool we used to get there. With AI kind of stripping away that entire syntactic layer, it forces a reckoning: what problems do you actually care about?&lt;/p&gt;

&lt;p&gt;I’ve been thinking about this myself lately, which led me to build something small but purposeful. One thing that really bothers me is the explosion of misinformation, and I think a lot of it comes down to people confusing cynicism with actual skepticism. Cynicism is sort of this intellectual laziness where you just assume everything is a lie—often while totally convinced that this cynical thinking is somehow backed by science, even when it’s based on a complete misunderstanding of it. Real skepticism, on the other hand, is disciplined and constructive; it actually looks for evidence.&lt;/p&gt;

&lt;p&gt;So, what I’ve done is build a small applet to help tease out that distinction. It’s a simple, interactive way to kind of calibrate your own thinking and recognize when you’ve slipped from healthy inquiry into unproductive cynicism. You can give it a try here:&lt;/p&gt;

&lt;div style=&quot;margin-bottom: 10px; text-align: right;&quot;&gt;
&lt;a href=&quot;/assets/apps/crit/dist/index.html&quot; target=&quot;_blank&quot; style=&quot;display: inline-block; padding: 8px 16px; background-color: #4f46e5; color: white; text-decoration: none; border-radius: 4px; font-weight: bold; font-size: 12px;&quot;&gt;OPEN IN NEW WINDOW&lt;/a&gt;
&lt;/div&gt;

&lt;iframe src=&quot;/assets/apps/crit/dist/index.html&quot; style=&quot;width:100%; height:700px; border:none; background: #020617;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;Going forward, the engineers who are going to thrive aren’t necessarily the ones who can write the most elegant recursive algorithm from scratch. They’re the folks who can identify a real problem, understand the users, and use AI tools to just blast out a solution faster than anyone thought possible. Problem selection is ruthlessly difficult, sure, but this is really the version of the job that drew most of us to this field in the first place.&lt;/p&gt;

&lt;p&gt;The code was never the point. Now, we finally get to focus on the message.&lt;/p&gt;
</description>
        <pubDate>Sat, 14 Mar 2026 00:00:00 +0000</pubDate>
        <link>https://ironj.github.io/ai-changing-software-engineering/</link>
        <guid isPermaLink="true">https://ironj.github.io/ai-changing-software-engineering/</guid>
        
        
        <category>profession</category>
        
        <category>AI</category>
        
      </item>
    
      <item>
        <title>M-Audio Transit: Resurrecting Legacy Audio on Apple Silicon</title>
        <description>&lt;p&gt;I recently spent some time digging into the M-Audio Transit, a classic USB audio interface that has long lacked proper support on modern macOS versions. The official driver was discontinued over &lt;strong&gt;15 years ago&lt;/strong&gt;, and like many others, mine has been sitting in a dusty box for the better part of a decade. I’m excited to share a working &lt;strong&gt;firmware loader&lt;/strong&gt; that brings this device back to life on Apple Silicon.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/maudio_init.png&quot; alt=&quot;M-Audio Initialization&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The project involves a custom macOS firmware loader built using IOKit. To build this, I actually had to &lt;strong&gt;decompile the original driver and firmware loader&lt;/strong&gt; to understand exactly how the device expects to be initialized. By reverse-engineering the device flow—guided by GHIDRA decompilation—I was able to successfully handle the DFU (Device Firmware Upgrade) process and trigger the necessary re-enumeration to make the device visible as a standard USB audio device.&lt;/p&gt;

&lt;p&gt;This was a fun afternoon project that took about &lt;strong&gt;2 hours&lt;/strong&gt; to get working. It did require some deep diving into how USB device initialization works on macOS, specifically dealing with IOKit-specific control transfers and the nuances of DFU states.&lt;/p&gt;

&lt;p&gt;Beyond the technical challenge, projects like this are a great way to &lt;strong&gt;reduce e-waste&lt;/strong&gt;. It’s satisfying to take a perfectly good piece of hardware that has been abandoned by its manufacturer and make it useful again in a modern setup.&lt;/p&gt;

&lt;p&gt;You can find the full source code, firmware extraction tools, and build instructions at &lt;a href=&quot;https://github.com/iRonJ/MAudioTransitAppleSi&quot;&gt;https://github.com/iRonJ/MAudioTransitAppleSi&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you have one of these old silver boxes sitting in a drawer, it’s finally time to plug it back in!&lt;/p&gt;
</description>
        <pubDate>Thu, 05 Feb 2026 00:00:00 +0000</pubDate>
        <link>https://ironj.github.io/maudio-transit/</link>
        <guid isPermaLink="true">https://ironj.github.io/maudio-transit/</guid>
        
        
        <category>driver</category>
        
        <category>audio</category>
        
        <category>macOS</category>
        
      </item>
    
      <item>
        <title>Bringing Photos to Life: Gaussian Splatting with Jiggle Physics in VisionOS</title>
        <description>&lt;p&gt;What if your photos could move? Not just play back as videos, but actually &lt;em&gt;exist&lt;/em&gt; in space around you—touchable, interactive, alive with physics?&lt;/p&gt;

&lt;h2 id=&quot;when-memories-become-3d&quot;&gt;When Memories Become 3D&lt;/h2&gt;

&lt;video width=&quot;100%&quot; controls=&quot;&quot;&gt;
  &lt;source src=&quot;/assets/videos/ScreenRecording_12-28-2025 05-53-45_1.mov&quot; type=&quot;video/quicktime&quot; /&gt;
  Your browser does not support the video tag.
&lt;/video&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/apple/ml-sharp&quot;&gt;Apple’s SHARP project&lt;/a&gt; uses gaussian splatting to convert regular 2D images into full 3D scenes. Not photogrammetry requiring dozens of angles, but actual volumetric reconstruction from single images using machine learning.&lt;/p&gt;

&lt;p&gt;Take any photo and reconstruct it as a spatial scene you can walk around in AR.&lt;/p&gt;

&lt;h2 id=&quot;the-onnx-experiment&quot;&gt;The ONNX Experiment&lt;/h2&gt;

&lt;p&gt;My first instinct was to run SHARP’s model in the browser. Convert it to ONNX, run it through WebGL or WebGPU, let anyone with a browser interact with 3D-reconstructed photos.&lt;/p&gt;

&lt;p&gt;I converted the model to ONNX format and started testing. On desktop? Worked beautifully. On mobile? Decent performance. On VisionOS Safari? &lt;strong&gt;Instant crash.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The problem was RAM. VisionOS Safari, running in a sandboxed browser environment, couldn’t allocate enough memory before hitting hard limits. The browser would try, choke, and terminate.&lt;/p&gt;

&lt;h2 id=&quot;coreml-and-native-visionos&quot;&gt;CoreML and Native VisionOS&lt;/h2&gt;

&lt;p&gt;If the browser couldn’t handle it, the solution was to go native. I converted the SHARP model to CoreML and packaged it into a VisionOS application.&lt;/p&gt;

&lt;p&gt;This took some trial and error. Getting the model conversion right, handling the input/output tensors correctly, and optimizing memory usage all required iteration. Once I got the CoreML integration working, I started adding interactive shaders. That was another round of experimentation—getting the shader parameters right, making the physics feel responsive without being too chaotic, and ensuring it performed well in AR.&lt;/p&gt;

&lt;p&gt;Eventually, everything came together. The 3D reconstructions rendered smoothly, placed naturally in AR space, and tracked with the environment.&lt;/p&gt;

&lt;h2 id=&quot;adding-jiggle-physics&quot;&gt;Adding Jiggle Physics&lt;/h2&gt;

&lt;p&gt;Having a static 3D reconstruction floating in space is cool, but it’s still passive. So I added shader-based jiggle physics.&lt;/p&gt;

&lt;p&gt;Now when you interact with the reconstructed scene, it &lt;em&gt;responds&lt;/em&gt;. Tap it and it bounces. Wave your hand near it and it reacts to the motion.&lt;/p&gt;

&lt;p&gt;The video above shows it in action. This opens up possibilities for many other kinds of AR and VR splat interactions—physics-based manipulation, environmental responses, or collaborative interactions in shared spaces.&lt;/p&gt;

&lt;h2 id=&quot;technical-constraints&quot;&gt;Technical Constraints&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The ONNX/WebGL approach failed&lt;/strong&gt; due to browser sandboxing and memory limits. For now, experiences like this require native apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CoreML works on VisionOS&lt;/strong&gt; but ties you to Apple’s ecosystem. The model runs efficiently, but it’s not portable to other platforms without rework.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The jiggle physics are shader tricks&lt;/strong&gt;, not real physics simulation. They look good and feel responsive, but they’re visual feedback rather than actual momentum calculations.&lt;/p&gt;

&lt;h2 id=&quot;whats-next&quot;&gt;What’s Next&lt;/h2&gt;

&lt;p&gt;Potential directions to explore:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Multi-photo reconstruction: Combining multiple images into coherent 3D spaces&lt;/li&gt;
  &lt;li&gt;Hand tracking: Directly manipulate and reshape reconstructed scenes&lt;/li&gt;
  &lt;li&gt;Persistent placement: Anchor memories to specific physical locations&lt;/li&gt;
  &lt;li&gt;Collaborative viewing: Multiple people experiencing the same 3D memory simultaneously&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;try-it-yourself&quot;&gt;Try It Yourself&lt;/h2&gt;

&lt;p&gt;The SHARP model is &lt;a href=&quot;https://github.com/apple/ml-sharp&quot;&gt;open source on GitHub&lt;/a&gt;. If you have a Mac with Apple Silicon, you can convert it to CoreML and experiment. If you have a Vision Pro, you can build native VisionOS apps that run these models.&lt;/p&gt;
</description>
        <pubDate>Sun, 28 Dec 2025 00:00:00 +0000</pubDate>
        <link>https://ironj.github.io/apple-sharp-gaussian-splat-jiggle/</link>
        <guid isPermaLink="true">https://ironj.github.io/apple-sharp-gaussian-splat-jiggle/</guid>
        
        
        <category>AI</category>
        
        <category>VisionOS</category>
        
        <category>AR</category>
        
        <category>research</category>
        
        <category>computer-vision</category>
        
      </item>
    
      <item>
        <title>Paint Mix Simulator: A Colorful Chaos</title>
        <description>&lt;p&gt;I’m delighted to introduce &lt;strong&gt;Paint Mix Simulator&lt;/strong&gt;, a delightfully chaotic little minigame where you get to play with colors… and face the wrath of Gordon Ramsay.&lt;/p&gt;

&lt;p&gt;This started as a fun experiment with WebGL shaders to create realistic paint mixing physics. The paint swirls and blends in real-time using procedural noise and signed distance fields, creating a mesmerizing visual effect that’s oddly satisfying to watch.&lt;/p&gt;

&lt;p&gt;The game features two modes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free Play Mode:&lt;/strong&gt; Just mix colors to your heart’s content. Pick three colors, hit the mix button, and watch them swirl together into beautiful (or hideous) combinations. It’s therapeutic, like a digital lava lamp you can control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hell’s Kitchen Mode:&lt;/strong&gt; Now here’s where things get spicy! 👨‍🍳 The game gives you a target color, and you need to mix three colors to match it as closely as possible. But here’s the twist—your performance gets judged by… let’s say, a &lt;em&gt;very passionate&lt;/em&gt; chef. Get it perfect and you’ll hear praise. Miss the mark and prepare for some colorful feedback (pun intended). The quotes range from “Finally, some good f***ing paint” to the dreaded “IT’S RAW!”&lt;/p&gt;

&lt;p&gt;Built entirely with WebGL for smooth, hardware-accelerated rendering, this was a fun exploration of shader programming and color theory. Most amazingly, much of this was prototyped through AI-assisted iteration, experimenting with different mixing algorithms and visual effects until we got that perfect paint-swirling look.&lt;/p&gt;

&lt;p&gt;The interface is clean and minimal—just three color swatches, a mix button, and a toggle to switch between modes. Works great on both desktop and mobile, though I recommend trying it on desktop first for the full experience.&lt;/p&gt;

&lt;p&gt;Give it a try and see if you can satisfy the chef! Pro tip: in Challenge Mode, complementary colors are your friend (or your worst enemy).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Controls:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Click on color swatches&lt;/strong&gt; to pick your three paint colors&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Mix Paint&lt;/strong&gt; button to start the mixing animation&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Chef emoji&lt;/strong&gt; in the top right to toggle Challenge Mode&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Trash icon&lt;/strong&gt; to reset and try new colors&lt;/li&gt;
&lt;/ul&gt;

&lt;div style=&quot;margin-bottom: 10px; text-align: right;&quot;&gt;
&lt;a href=&quot;/assets/apps/paint/dist/index.html&quot; target=&quot;_blank&quot; style=&quot;display: inline-block; padding: 8px 16px; background-color: #4f46e5; color: white; text-decoration: none; border-radius: 4px; font-weight: bold; font-size: 12px;&quot;&gt;OPEN IN NEW WINDOW&lt;/a&gt;
&lt;/div&gt;

&lt;iframe src=&quot;/assets/apps/paint/dist/index.html&quot; style=&quot;width:100%; height:800px; border:none; background: #f3f4f6;&quot;&gt;&lt;/iframe&gt;
</description>
        <pubDate>Tue, 16 Dec 2025 00:00:00 +0000</pubDate>
        <link>https://ironj.github.io/paint-mix-simulator/</link>
        <guid isPermaLink="true">https://ironj.github.io/paint-mix-simulator/</guid>
        
        
        <category>gamedev</category>
        
        <category>webgl</category>
        
        <category>simulation</category>
        
        <category>fun</category>
        
      </item>
    
      <item>
        <title>FastRecord: Screen Recording Made Simple</title>
        <description>&lt;p&gt;I’m happy to introduce &lt;strong&gt;FastRecord&lt;/strong&gt;, a new lightweight screen recording tool I’ve been working on. Everything runs locally on your device, with no data sent to the cloud.&lt;/p&gt;

&lt;p&gt;This project actually started many years ago as a series of experiments with WebRTC. I recently revisited it, using AI to help clean up the code and refactor it for a proper public release, rebuilding the whole thing with React and Vite. You can check out the source code at &lt;a href=&quot;https://github.com/iRonJ/FastRecord&quot;&gt;https://github.com/iRonJ/FastRecord&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;FastRecord is designed to be the quickest way to capture audio directly from your browser. No installs, just click and record. It’s built with modern web technologies to ensure high performance and privacy—your recordings stay local until you decide to export them.&lt;/p&gt;

&lt;p&gt;Hint: Use your scroll wheel and pinch to zoom to adjust your camera image!&lt;/p&gt;

&lt;p&gt;Give it a try below!&lt;/p&gt;

&lt;div style=&quot;margin-bottom: 10px; text-align: right;&quot;&gt;
&lt;a href=&quot;/assets/apps/fast-record-app/index.html&quot; target=&quot;_blank&quot; style=&quot;display: inline-block; padding: 8px 16px; background-color: #4f46e5; color: white; text-decoration: none; border-radius: 4px; font-weight: bold; font-size: 12px;&quot;&gt;OPEN IN NEW WINDOW&lt;/a&gt;
&lt;/div&gt;
</description>
        <pubDate>Sun, 14 Dec 2025 00:00:00 +0000</pubDate>
        <link>https://ironj.github.io/fast-record/</link>
        <guid isPermaLink="true">https://ironj.github.io/fast-record/</guid>
        
        
        <category>tool</category>
        
        <category>audio</category>
        
        <category>webapp</category>
        
      </item>
    
      <item>
        <title>Midnight City Sailing</title>
        <description>&lt;p&gt;I’m excited to share a new experimental project: &lt;strong&gt;Midnight City Sailing&lt;/strong&gt;. It’s a serene, atmospheric sailing experience set in a procedurally-generated neo-gothic cityscape.&lt;/p&gt;

&lt;p&gt;This game features a minimalist sailing mechanic where you navigate through a dark, mysterious city rendered entirely with WebGL shaders. The buildings have a gothic architectural style with buttresses and spires, creating an otherworldly atmosphere. The water responds dynamically to your boat’s movement with realistic wave physics.&lt;/p&gt;

&lt;p&gt;Built using ray-marching techniques and signed distance fields (SDF), the entire scene is procedurally rendered in real-time. This approach allows for smooth, infinite worlds with dramatic lighting and fog effects that give the experience its distinctive mood.&lt;/p&gt;

&lt;p&gt;Most amazingly, this was prototyped and refined through conversations with AI, exploring the possibilities of shader-based rendering and procedural generation. It’s fascinating how quickly we can now iterate on complex graphics techniques!&lt;/p&gt;

&lt;p&gt;Take the helm and explore the midnight city. It works on both mobile and desktop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Controls:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Mobile/Touch:&lt;/strong&gt; Drag the circular joystick at the bottom left to sail.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Desktop:&lt;/strong&gt; Click and drag the joystick to control your direction and speed.&lt;/li&gt;
&lt;/ul&gt;

&lt;div style=&quot;margin-bottom: 10px; text-align: right;&quot;&gt;
&lt;a href=&quot;/assets/apps/midnight_city/dist/index.html&quot; target=&quot;_blank&quot; style=&quot;display: inline-block; padding: 8px 16px; background-color: #4f46e5; color: white; text-decoration: none; border-radius: 4px; font-weight: bold; font-size: 12px;&quot;&gt;OPEN IN NEW WINDOW&lt;/a&gt;
&lt;/div&gt;

&lt;iframe src=&quot;/assets/apps/midnight_city/dist/index.html&quot; style=&quot;width:100%; height:800px; border:none; background: #000;&quot;&gt;&lt;/iframe&gt;
</description>
        <pubDate>Fri, 12 Dec 2025 00:00:00 +0000</pubDate>
        <link>https://ironj.github.io/midnight-city-sailing/</link>
        <guid isPermaLink="true">https://ironj.github.io/midnight-city-sailing/</guid>
        
        
        <category>gamedev</category>
        
        <category>webgl</category>
        
        <category>sailing</category>
        
        <category>atmospheric</category>
        
      </item>
    
      <item>
        <title>Hyperfast AI: Rethinking Design for 1000 tokens/s</title>
        <description>&lt;p&gt;I recently spoke at &lt;a href=&quot;https://raleigh.aitinkerers.org/talks/rsvp_rjOw3LBlaI4&quot;&gt;AI Tinkerers Raleigh&lt;/a&gt; about hyperfast inference systems and how they’re fundamentally changing AI application design. If you haven’t heard of Cerebras (or however they pronounce it), you’re in for a treat—this is one of the most exciting areas of research in AI right now.&lt;/p&gt;

&lt;p&gt;Check out the repo on Github: &lt;a href=&quot;https://github.com/iRonJ/cerebras_hackathon&quot;&gt;AI Desktop Environment&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;the-speed-revolution&quot;&gt;The Speed Revolution&lt;/h2&gt;

&lt;p&gt;The folks at Cerebras have done something remarkable: they’ve built a complete custom hardware stack using a full silicon wafer to create an incredibly fast inference chip. While your typical ChatGPT system delivers less than 100 tokens per second—and often drops to 20-30 tokens per second under load—Cerebras blasts through at &lt;strong&gt;1,700 tokens per second&lt;/strong&gt;. That’s almost 20x faster than standard transformer-based inference providers.&lt;/p&gt;

&lt;p&gt;But Cerebras isn’t alone in this race. &lt;strong&gt;Groq&lt;/strong&gt; has their own custom hardware platform delivering 400+ tokens per second with their specialized models. Then there’s &lt;strong&gt;Mercury’s diffusion models&lt;/strong&gt;—a completely different algorithm that doesn’t require special hardware. These models run on standard CPUs and GPUs, and they’re showing incredible promise for bringing hyperfast inference to edge devices like your laptop or phone. The best part? A new Llama-based diffusion model released just days after my talk potentially solved the Turing-complete problem that had been holding the technology back.&lt;/p&gt;

&lt;h2 id=&quot;when-pixels-become-instant-the-death-of-static-software&quot;&gt;When Pixels Become Instant: The Death of Static Software&lt;/h2&gt;

&lt;p&gt;Remember when Jensen Huang of Nvidia said “one day every pixel will be created by artificial intelligence”? Right after Stable Diffusion launched, that seemed confusing. But once you understand how AI can create applications at the click of a button, it clicks. The folks at Anthropic recently announced something bold: &lt;strong&gt;software is solved&lt;/strong&gt;. People won’t look at computers as things that run software anymore—they’ll be tools that you use to get stuff done.&lt;/p&gt;

&lt;p&gt;That’s exactly what this prototype demonstrates.&lt;/p&gt;

&lt;h2 id=&quot;cerebras-os-v3---agentic-desktop-environment&quot;&gt;Cerebras OS v3 - Agentic Desktop Environment&lt;/h2&gt;

&lt;p&gt;This isn’t just a demo; it’s a next-generation AI-powered desktop environment where applications are generated, run, and repaired in real-time by a sovereign agentic system. And it’s all powered by Cerebras’ ultra-fast inference.&lt;/p&gt;

&lt;h3 id=&quot;overview&quot;&gt;Overview&lt;/h3&gt;

&lt;p&gt;&lt;iframe style=&quot;width:100%;&quot; height=&quot;515&quot; src=&quot;https://www.youtube.com/embed/dthf15gqcQM&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;

&lt;h4 id=&quot;further-examples&quot;&gt;Further Examples&lt;/h4&gt;

&lt;p&gt;&lt;iframe style=&quot;width:100%;&quot; height=&quot;515&quot; src=&quot;https://www.youtube.com/embed/eFMeGK16u8U&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;

&lt;h2 id=&quot;real-work-with-ai-generated-applications&quot;&gt;Real Work with AI-Generated Applications&lt;/h2&gt;

&lt;p&gt;This project represents a massive shift from static applications to a &lt;strong&gt;dynamic, agentic OS&lt;/strong&gt;. Instead of pre-compiled binaries, the “OS” is a living conversation with a high-speed LLM that can:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Generate Apps&lt;/strong&gt;: Create full HTML/JS/WebGL applications on the fly.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Execute Tools&lt;/strong&gt;: Bridge the gap between the web frontend and the host system using Python tools.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Self-Repair&lt;/strong&gt;: Detect errors in both app code and system tools, and autonomously rewrite them to fix the issue.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;live-examples-from-the-virtual-desktop&quot;&gt;Live Examples from the Virtual Desktop&lt;/h3&gt;

&lt;p&gt;The system includes an app switcher and multiple generated applications that demonstrate real capabilities:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3D Image Clustering with UMAP&lt;/strong&gt;: One of my favorite demos visualizes files from my actual computer. The system uses CLIP models for semantic analysis of images, then processes them through UMAP (a dimensional reduction algorithm) to create 3D WebGL visualizations. What you see are actual files clustered by semantic similarity—Mars images grouped together, symbol designs in another cluster, T-shirt project designs in yet another. The backend AI created tools to download the Hugging Face CLIP model, generate image embeddings, and process them through UMAP to turn high-dimensional latent vectors into three dimensions. We’re at the point where you can do real work with these AI-generated applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Projector Mapping Tool&lt;/strong&gt;: I built this for my own use. You define polygon perimeters that match the physical geometry of a wall or building face, and it warps the output for projection mapping. You can create polygons, define edges, and even add videos that loop with the mapping applied. It’s production-ready stuff, generated on the fly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-Time Generation&lt;/strong&gt;: Want a voxel wolf in WebGL? Just ask for it. The system generates it instantly. Need to add 3D printing export functionality? Tell it, and it adds an export button. Sometimes it might mess up the existing code (context length issues), but you can just tell it to fix itself, and it does. With some prompt engineering, these errors can be minimized.&lt;/p&gt;

&lt;h3 id=&quot;architecture&quot;&gt;Architecture&lt;/h3&gt;

&lt;p&gt;The system is built on a modern Node.js stack with a unique &lt;strong&gt;Agentic State Machine&lt;/strong&gt; core.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;graph TD
    User[User Request] --&amp;gt; Monolith[Mono API Server]
    Monolith --&amp;gt; StateMachine[Agentic State Machine]
    
    subgraph &quot;Loop 1: Tool Preparation&quot;
        StateMachine --&amp;gt; AIPlanner
        AIPlanner --&amp;gt; ToolManager
        ToolManager --&amp;gt;|Check/Update| PythonTools[Python Tools]
        PythonTools --&amp;gt;|Self-Repair| AIPlanner
    end
    
    subgraph &quot;Loop 2: App Generation&quot;
        StateMachine --&amp;gt; AppGen[App Generator]
        AppGen --&amp;gt; AppReview[Code Reviewer]
        AppReview --&amp;gt; AppVerify[Requirements Validator]
    end
    
    AppVerify --&amp;gt;|Success| Frontend[Vite Frontend]
    Frontend --&amp;gt;|Render| Widget[Live Widget]
&lt;/code&gt;&lt;/pre&gt;

&lt;h4 id=&quot;key-components&quot;&gt;Key Components&lt;/h4&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Server (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cerebrasv3/server&lt;/code&gt;)&lt;/strong&gt;: A robust Express/TypeScript backend that hosts the State Machine.
    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;Intent Classification&lt;/strong&gt;: Determines if you want a new app, a tool execution, or a “virtual response” (raw content).&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;Tool Manager&lt;/strong&gt;: Manages a library of Python scripts that grant system access (Filesystem, Hardware, Audio).&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;Self-Healing&lt;/strong&gt;: If a tool fails (e.g., syntax error, missing dependency), the system captures the error, feeds it back to the LLM, and &lt;strong&gt;rewrites the Python code&lt;/strong&gt; automatically.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Frontend (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cerebrasv3/client&lt;/code&gt;)&lt;/strong&gt;: A Vite/React-based desktop interface.
    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;Window Manager&lt;/strong&gt;: Draggable, resizable windows for generated apps.&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;Live Injection&lt;/strong&gt;: Receives HTML/JS payloads from the server and injects them into sandboxed containers.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Cerebras Engine&lt;/strong&gt;: The brain of the operation.
    &lt;ul&gt;
      &lt;li&gt;Utilizes the &lt;strong&gt;GLM model&lt;/strong&gt; (an open-source model focused on coding) via Cerebras API for sub-second inference. The GLM model offers strong coding capabilities comparable to modern frontier models. Once better programming models get hyperfast support in the coming months, this will be even more powerful.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;how-it-scales-the-tool-first-architecture&quot;&gt;How It Scales: The Tool-First Architecture&lt;/h3&gt;

&lt;p&gt;One question that came up: how large can these applications get? Actually, pretty large, thanks to the tool-first architecture:&lt;/p&gt;

&lt;h4 id=&quot;dynamic-tool-system&quot;&gt;Dynamic Tool System&lt;/h4&gt;
&lt;p&gt;The system doesn’t just call APIs—it &lt;strong&gt;writes&lt;/strong&gt; them. If you ask for “a tool to check my CPU temp”, and it doesn’t exist:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;The Planner designs the tool.&lt;/li&gt;
  &lt;li&gt;The State Machine generates the Python script (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;server/tools/cpu_temp.py&lt;/code&gt;).&lt;/li&gt;
  &lt;li&gt;The Tool Manager registers it.&lt;/li&gt;
  &lt;li&gt;The App uses it immediately.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each tool can use the full context window of the model, then gets condensed down to a simple API description and call format. The frontend JavaScript and web code then uses these condensed tool descriptions to build very large applications. For example, with the UMAP project, the system first created all necessary tools, then the frontend application only needed to reference simple tool calls instead of having massive code files in context. Once the prompting is dialed in, this becomes a highly reliable process.&lt;/p&gt;

&lt;h4 id=&quot;agentic-state-machine&quot;&gt;Agentic State Machine&lt;/h4&gt;
&lt;p&gt;A sophisticated 2-loop architecture ensures reliability:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Tool Prep Loop&lt;/strong&gt;: Ensures all necessary system access tools exist and are functional &lt;em&gt;before&lt;/em&gt; writing any UI code.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;App Gen Loop&lt;/strong&gt;: Generates the UI, reviews the code for security/syntax issues, and verifies it meets the user’s prompt.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;mono-api-and-virtual-responses&quot;&gt;Mono API and Virtual Responses&lt;/h4&gt;

&lt;p&gt;Here’s where it gets really interesting. Everything goes through a single API endpoint, which creates a unique side effect: the system can make “fake” API calls on the fly.&lt;/p&gt;

&lt;p&gt;For example, I can request a webpage for “Raleigh Travel” that doesn’t exist on my computer. The API endpoint sees I’m requesting an HTML page and just generates one instantly. I can add URL parameters like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;?theme=Terminator 2&lt;/code&gt;, and even though none of this maps to any actual code, the AI sees the request and generates the themed page on the fly.&lt;/p&gt;

&lt;p&gt;For requests that don’t need a UI (like “Generate a CSV report of my files”), the system bypasses the App Generator and streams raw content directly to the client, acting as a virtual file server.&lt;/p&gt;

&lt;h3 id=&quot;getting-started&quot;&gt;Getting Started&lt;/h3&gt;

&lt;p&gt;If you want to try it out, the stack is surprisingly simple:&lt;/p&gt;

&lt;h4 id=&quot;prerequisites&quot;&gt;Prerequisites&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;Node.js v18+&lt;/li&gt;
  &lt;li&gt;Python 3.9+ (for tool execution)&lt;/li&gt;
  &lt;li&gt;Cerebras API Key&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;installation&quot;&gt;Installation&lt;/h4&gt;

&lt;ol&gt;
  &lt;li&gt;Navigate to the project directory:
    &lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;cerebrasv3
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Install dependencies:
    &lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;npm &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Set up environment:
    &lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;CEREBRAS_API_KEY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;your_key_here
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;DESKTOP_AI_PROVIDER&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;cerebras
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h4 id=&quot;running&quot;&gt;Running&lt;/h4&gt;

&lt;p&gt;To launch both the backend server and the frontend client:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;npm run dev
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Frontend&lt;/strong&gt;: http://localhost:5173&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Backend&lt;/strong&gt;: http://localhost:4000&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;the-future-is-hyperfast&quot;&gt;The Future is Hyperfast&lt;/h2&gt;

&lt;p&gt;This is just the beginning. As inference speeds continue to improve, we’ll see entirely new categories of software that simply couldn’t exist before. The convergence of Cerebras-level speed, better coding models, and agentic architectures will unlock computing experiences we haven’t even imagined yet.&lt;/p&gt;

&lt;p&gt;Want to dive deeper? Check out the full demo video above, or reach out on &lt;a href=&quot;https://www.linkedin.com/in/ronjackson/&quot;&gt;LinkedIn&lt;/a&gt; to chat more about hyperfast AI and what it means for the future of software.&lt;/p&gt;
</description>
        <pubDate>Wed, 10 Dec 2025 00:00:00 +0000</pubDate>
        <link>https://ironj.github.io/hyperfast-ai-talk/</link>
        <guid isPermaLink="true">https://ironj.github.io/hyperfast-ai-talk/</guid>
        
        
        <category>AI</category>
        
        <category>talk</category>
        
        <category>research</category>
        
        <category>UX</category>
        
      </item>
    
      <item>
        <title>Nate the Hoof Guy Simulator</title>
        <description>&lt;p&gt;I’m excited to share a new fan-made project: &lt;strong&gt;Nate the Hoof Guy Simulator&lt;/strong&gt;. It’s a web-based simulation game inspired by the oddly satisfying videos of bovine hoof trimming.&lt;/p&gt;

&lt;p&gt;This game was built as a fun experiment in WebGL and procedural texture generation. It simulates the process of trimming a cow’s hoof, finding defects, and treating them. It features realistic (well, stylized) hoof layers, tools like a hoof knife and spray, and even a scoring system!&lt;/p&gt;

&lt;p&gt;Most amazingly, I built this entirely with the help of AI assistants, iterating on the physics, the rendering of the hoof layers, and the game logic. It’s a testament to how quickly we can now prototype and build complex interactive 3D experiences.&lt;/p&gt;

&lt;p&gt;Grab your hoof knife and get to work! It works great on mobile and desktop.
&lt;strong&gt;Controls:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Mobile:&lt;/strong&gt; 2 Fingers to Rotate/Cut. 1 Finger to Spray/Select.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Desktop:&lt;/strong&gt; Mouse to cut. Scroll wheel to rotate the knife angle.&lt;/li&gt;
&lt;/ul&gt;

&lt;div style=&quot;margin-bottom: 10px; text-align: right;&quot;&gt;
&lt;a href=&quot;/assets/apps/hoof-guy/dist/index.html&quot; target=&quot;_blank&quot; style=&quot;display: inline-block; padding: 8px 16px; background-color: #4f46e5; color: white; text-decoration: none; border-radius: 4px; font-weight: bold; font-size: 12px;&quot;&gt;OPEN IN NEW WINDOW&lt;/a&gt;
&lt;/div&gt;

&lt;iframe src=&quot;/assets/apps/hoof-guy/dist/index.html&quot; style=&quot;width:100%; height:800px; border:none; background: #000;&quot;&gt;&lt;/iframe&gt;
</description>
        <pubDate>Thu, 04 Dec 2025 00:00:00 +0000</pubDate>
        <link>https://ironj.github.io/nate-the-hoof-guy-simulator/</link>
        <guid isPermaLink="true">https://ironj.github.io/nate-the-hoof-guy-simulator/</guid>
        
        
        <category>gamedev</category>
        
        <category>simulation</category>
        
        <category>webgl</category>
        
        <category>oddlysatisfying</category>
        
      </item>
    
  </channel>
</rss>
