<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Logan M. Dixon</title>
    <description>The latest articles on DEV Community by Logan M. Dixon (@lmdixon23).</description>
    <link>https://dev.to/lmdixon23</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4073715%2F93717d58-6797-413f-8767-7cc4b2767644.jpg</url>
      <title>DEV Community: Logan M. Dixon</title>
      <link>https://dev.to/lmdixon23</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lmdixon23"/>
    <language>en</language>
    <item>
      <title>Why I Built 12 AI Interactives as Plain, Offline HTML</title>
      <dc:creator>Logan M. Dixon</dc:creator>
      <pubDate>Tue, 11 Aug 2026 20:29:43 +0000</pubDate>
      <link>https://dev.to/lmdixon23/why-i-built-12-ai-interactives-as-plain-offline-html-3c2o</link>
      <guid>https://dev.to/lmdixon23/why-i-built-12-ai-interactives-as-plain-offline-html-3c2o</guid>
      <description>&lt;p&gt;When I started teaching an introductory artificial intelligence course, I kept running into a gap between two common ways of presenting AI.&lt;/p&gt;

&lt;p&gt;At one end, students could read about an algorithm: a diagram of A* search, an equation for Bayesian updating, or a description of how k-nearest neighbors classifies a point.&lt;/p&gt;

&lt;p&gt;At the other end, they could implement the algorithm in code.&lt;/p&gt;

&lt;p&gt;Both are useful. But there is a useful middle layer between them: changing the variables yourself and watching the mechanism respond.&lt;/p&gt;

&lt;p&gt;That is what I built &lt;strong&gt;AI Playgrounds&lt;/strong&gt; for.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lmdixon23.github.io/ai-playgrounds/media/AI_Playgrounds_Demo_15s.mp4" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb7taej7jue86nhi6o6rn.gif" alt="Short demonstration of AI Playgrounds showing learners manipulating interactive AI visualizations" width="560" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lmdixon23.github.io/ai-playgrounds/media/AI_Playgrounds_Demo_15s.mp4" rel="noopener noreferrer"&gt;Open the full-resolution 15-second demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is a collection of 12 browser-based interactives covering foundational AI concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;search and pathfinding&lt;/li&gt;
&lt;li&gt;hill climbing and simulated annealing&lt;/li&gt;
&lt;li&gt;Wumpus World&lt;/li&gt;
&lt;li&gt;CNF and SAT solving&lt;/li&gt;
&lt;li&gt;naïve Bayes&lt;/li&gt;
&lt;li&gt;Bayesian networks&lt;/li&gt;
&lt;li&gt;k-nearest neighbors&lt;/li&gt;
&lt;li&gt;overfitting&lt;/li&gt;
&lt;li&gt;neural networks&lt;/li&gt;
&lt;li&gt;k-means clustering&lt;/li&gt;
&lt;li&gt;convolution&lt;/li&gt;
&lt;li&gt;Q-learning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project is open source and available here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lmdixon23.github.io/ai-playgrounds/?ap_src=dev" rel="noopener noreferrer"&gt;AI Playgrounds&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The basic interaction is deliberately simple
&lt;/h2&gt;

&lt;p&gt;The recurring pattern is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;predict → manipulate → observe → explain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of beginning with implementation, a learner can first ask what they expect an algorithm to do.&lt;/p&gt;

&lt;p&gt;Then they change something.&lt;/p&gt;

&lt;p&gt;Move a point. Change a probability. Adjust a parameter. Add an obstacle. Alter a learning rate.&lt;/p&gt;

&lt;p&gt;Then they inspect what actually changes.&lt;/p&gt;

&lt;p&gt;The goal is not to replace mathematics or programming. It is to make the behavior underneath them easier to interrogate.&lt;/p&gt;

&lt;p&gt;For example, k-nearest neighbors is straightforward to define:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;measure the distance from a query point to the existing examples,&lt;/li&gt;
&lt;li&gt;choose the nearest &lt;code&gt;k&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;classify according to those neighbors.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But several questions become much more concrete when the data can be moved directly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What happens near a decision boundary?&lt;/li&gt;
&lt;li&gt;Why can changing &lt;code&gt;k&lt;/code&gt; change the prediction?&lt;/li&gt;
&lt;li&gt;What happens when classes overlap?&lt;/li&gt;
&lt;li&gt;How much does one unusual training point matter?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The visualization creates a small environment where those questions can be tested rather than merely described.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why plain HTML?
&lt;/h2&gt;

&lt;p&gt;I deliberately kept the deployment model unusually simple.&lt;/p&gt;

&lt;p&gt;Each playground can run as a self-contained HTML file.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no installation,&lt;/li&gt;
&lt;li&gt;no account,&lt;/li&gt;
&lt;li&gt;no backend,&lt;/li&gt;
&lt;li&gt;no student data sent to a server,&lt;/li&gt;
&lt;li&gt;and no development environment required just to explore the concept.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A teacher can download a playground, put it on a local machine, LMS, USB drive, or shared folder, and open it in a browser.&lt;/p&gt;

&lt;p&gt;That constraint matters more in classrooms than it might in a normal software project.&lt;/p&gt;

&lt;p&gt;Every dependency added to an educational tool creates another possible failure point: school filtering, authentication, package installation, unreliable internet, browser restrictions, or simply the time required to get thirty students into the same environment.&lt;/p&gt;

&lt;p&gt;Reducing that friction became part of the design.&lt;/p&gt;

&lt;h2&gt;
  
  
  Offline capability changes the architecture
&lt;/h2&gt;

&lt;p&gt;It would have been easier to build the project around a framework, package manager, API, database, and hosted service.&lt;/p&gt;

&lt;p&gt;Instead, portability became a design constraint.&lt;/p&gt;

&lt;p&gt;Most of the computation therefore happens directly in the browser.&lt;/p&gt;

&lt;p&gt;The algorithms are not screenshots or prerecorded animations. They execute as the learner interacts with them.&lt;/p&gt;

&lt;p&gt;That also makes the implementation inspectable. Someone interested in how a playground works can open the source rather than treating the visualization as a black box.&lt;/p&gt;

&lt;p&gt;For an educational project about artificial intelligence, that seemed important.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bilingual interfaces were another constraint
&lt;/h2&gt;

&lt;p&gt;The original classroom context was multilingual, so the playgrounds support both English and Simplified Chinese.&lt;/p&gt;

&lt;p&gt;This introduced a less obvious software-design problem.&lt;/p&gt;

&lt;p&gt;Translation cannot just be added to a handful of buttons at the end. Dynamic text, explanations, status messages, examples, teaching notes, and generated output all need to remain synchronized with the language state.&lt;/p&gt;

&lt;p&gt;Building bilingual behavior into the interface from the beginning produced a cleaner system than treating localization as decoration.&lt;/p&gt;

&lt;p&gt;It also reinforced another design principle: the visualization should carry as much explanatory weight as possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  A visualization can also mislead
&lt;/h2&gt;

&lt;p&gt;Interactive demonstrations have their own failure mode.&lt;/p&gt;

&lt;p&gt;A clean visualization may make an algorithm look more universal, deterministic, or simple than it really is.&lt;/p&gt;

&lt;p&gt;So each playground includes teacher-facing information about the abstraction being presented and what has been simplified.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;

&lt;p&gt;A small neural-network playground is not TensorFlow.&lt;/p&gt;

&lt;p&gt;A gridworld is not the full reinforcement-learning problem.&lt;/p&gt;

&lt;p&gt;A two-dimensional classifier is not representative of every classification task.&lt;/p&gt;

&lt;p&gt;The point is to isolate a mechanism without pretending that the isolated mechanism is the whole field.&lt;/p&gt;

&lt;h2&gt;
  
  
  The teacher layer became as important as the visualization
&lt;/h2&gt;

&lt;p&gt;As the project developed, I added classroom-oriented material around the interactives:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;teacher guidance,&lt;/li&gt;
&lt;li&gt;student lab structures,&lt;/li&gt;
&lt;li&gt;classroom activity sequences,&lt;/li&gt;
&lt;li&gt;a curriculum map,&lt;/li&gt;
&lt;li&gt;predict–run–explain prompts,&lt;/li&gt;
&lt;li&gt;accessibility/state descriptions,&lt;/li&gt;
&lt;li&gt;and explicit notes about common misconceptions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is therefore closer to a small open educational resource than a gallery of demos.&lt;/p&gt;

&lt;p&gt;A visualization by itself answers:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happens when I change this?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A classroom resource also needs to help answer:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What should the learner notice?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;and:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What should they be able to explain afterward?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing the software is not the same as testing the pedagogy
&lt;/h2&gt;

&lt;p&gt;This distinction has been important throughout the project.&lt;/p&gt;

&lt;p&gt;The repository includes automated checks and browser-level verification intended to catch software regressions and confirm deterministic behavior.&lt;/p&gt;

&lt;p&gt;Those tests can tell me whether the implementation behaves as specified.&lt;/p&gt;

&lt;p&gt;They cannot tell me whether students learn better because they used it.&lt;/p&gt;

&lt;p&gt;Those are different claims requiring different evidence.&lt;/p&gt;

&lt;p&gt;So I treat the verification suite as software-quality evidence, not educational-efficacy evidence.&lt;/p&gt;

&lt;p&gt;The project is currently offered as an open design and teaching resource. Questions about learning effects require a different study.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why build all 12 instead of one?
&lt;/h2&gt;

&lt;p&gt;One playground could easily become an isolated demo.&lt;/p&gt;

&lt;p&gt;A suite makes it possible to test whether the same interaction philosophy survives across very different AI paradigms.&lt;/p&gt;

&lt;p&gt;Search behaves differently from probability.&lt;/p&gt;

&lt;p&gt;Probability behaves differently from clustering.&lt;/p&gt;

&lt;p&gt;Clustering behaves differently from reinforcement learning.&lt;/p&gt;

&lt;p&gt;Yet the same basic design pattern can still work:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;isolate one mechanism,&lt;/li&gt;
&lt;li&gt;expose a small number of meaningful variables,&lt;/li&gt;
&lt;li&gt;let the learner predict,&lt;/li&gt;
&lt;li&gt;let them change something,&lt;/li&gt;
&lt;li&gt;make the resulting state visible,&lt;/li&gt;
&lt;li&gt;ask them to explain what happened,&lt;/li&gt;
&lt;li&gt;disclose what the model simplifies.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That pattern is probably the part of the project I find most reusable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;AI Playgrounds is MIT-licensed and currently contains 12 interactives, teacher resources, classroom materials, and English/Simplified Chinese interfaces.&lt;/p&gt;

&lt;p&gt;Live project: &lt;a href="https://lmdixon23.github.io/ai-playgrounds/?ap_src=dev" rel="noopener noreferrer"&gt;AI Playgrounds&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://github.com/lmdixon23/ai-playgrounds" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lmdixon23.github.io/ai-playgrounds/media/AI_Playgrounds_Demo_15s.mp4" rel="noopener noreferrer"&gt;Watch the full-resolution 15-second demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you teach AI, computer science, mathematics, or related subjects, I would be particularly interested in which abstractions you think work well visually, and which ones you think should remain primarily mathematical or code-based.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>education</category>
      <category>webdev</category>
      <category>resources</category>
    </item>
  </channel>
</rss>
