{"id":885,"date":"2026-03-03T23:31:35","date_gmt":"2026-03-03T23:31:35","guid":{"rendered":"https:\/\/dougturnbull.org\/?p=885"},"modified":"2026-03-04T15:15:05","modified_gmt":"2026-03-04T15:15:05","slug":"vibe-coding-a-sugar-speed-soccer","status":"publish","type":"post","link":"https:\/\/dougturnbull.org\/index.php\/2026\/03\/03\/vibe-coding-a-sugar-speed-soccer\/","title":{"rendered":"Vibe Coding a Sugar Speed Soccer"},"content":{"rendered":"\n<p>One of the main goals for my sabbatical was to gain more experience with agentic programming. I&#8217;ve recently listened to a bunch of podcasts (e.g., &#8220;Can AI Already Do Your Job&#8221;\u00a0from the Daily) about how easy it is to build a website from scratch using only natural-language prompts.<\/p>\n\n\n\n<p>For the past month or so, I&#8217;ve been using OpenAI&#8217;s Codex as a collaborator on a big project (more details coming soon&#8230;). It continues to blow my mind every day, whether it&#8217;s generative AI helping me refactor a major database schema, developing a dashboard to monitor and interact with web scrapers, or pulling together five former repos on GitHub into one magical monorepo.<\/p>\n\n\n\n<p><span style=\"box-sizing: border-box; margin: 0px; padding: 0px;\">But the other day I was in the process of switching from OpenAI&#8217;s Codex to Anthropic&#8217;s Claude Code for obvious reasons; see\u00a0<a href=\"https:\/\/www.nytimes.com\/2026\/02\/28\/podcasts\/hardfork-pentagon-anthropic-openai.html\" target=\"_blank\">At the Pentagon, OpenAI is In, and Anthropic is Out\u00a0<\/a>from Hard For<\/span>k. I was looking for a quick warm-up exercise and wanted to spend an hour building and deploying a website fromthe perspective of a non-technical college student. (I will be teaching a freshman-level course on &#8220;Vibe Coding with Gen AI&#8221; in the fall.) My self-imposed rules were that I did not want to write a single line of computer code or draw on much of my knowledge of web programming, <\/p>\n\n\n\n<p>So here is what I built&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"http:\/\/sugarspeedsoccer.dougturnbull.org\/\">Sugar Speed Soccer<\/a><\/h2>\n\n\n\n<p>My kids are pretty good at soccer, but both need to improve their agility and speed. At the same time, I read a terrifying article about &#8220;<a href=\"https:\/\/www.nytimes.com\/2026\/02\/26\/magazine\/acl-tear-women-girl-sports.html\">Why Are So Many Teen Girls Still Tearing Their A.C.L.s?<\/a>&#8221; where something like 1\/6 of female soccer players tear their ACLs before graduating from high school. <br><br>Here was my initial prompt:<br><br><em>&#8220;Can you create me a really simple webpage for my son (11 years old) and daughter (14 years old) who want to get faster at running for soccer. Maybe you could have a series of useful YouTube videos embedded into the page. It should be a single-page app.&#8221;<\/em><br><br>With the help of my wife, we &#8220;collaborated&#8221; with Claude code through a few more interactions (summarized here):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add a warm-up section (hip mobility + hamstrings) and a section on running form.<\/li>\n\n\n\n<li>Add FIFA 11+ ACL prevention exercises + weekly schedule<\/li>\n\n\n\n<li>We have a small 15&#215;11-foot basement with turf. Please add sections for basement training and outdoor training.<\/li>\n\n\n\n<li>Here are a few pictures of our family dog Sugar. Can you incorporate these images into the design?<\/li>\n<\/ul>\n\n\n\n<p>Finally, I asked how to host the page on GitHub and point a subdomain I already own to it. It gave me simple instructions, handled the Git commands (init, commit, push), and walked me through how to create a CNAME record for the new subdomain.<\/p>\n\n\n\n<p>The result can be found at <a href=\"http:\/\/sugarspeedsoccer.dougturnbull.org\/\"><strong>http:\/\/sugarspeedsoccer.dougturnbull.org\/<\/strong><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Result<\/h2>\n\n\n\n<p>This website is amazing both in terms of aesthetics and functionality (UI\/UX design), and the value of the content it pulled together. I did an informal user test with each of my kids and they both loved it. And more importantly, it saved me a ton of time digging through speed training websites and YouTube videos. I&#8217;m sure it is not as good as working with a personalized trainer, but it gives the basics in a user experience that my kids can follow. <br><br>Here are a couple of screenshots. The first is a nicely laid-out section of embedded YouTube videos, with text descriptions of each exercise.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"613\" src=\"https:\/\/dougturnbull.org\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-03-at-6.24.09-PM-1024x613.png\" alt=\"Screenshot of embedded YouTube videos.\" class=\"wp-image-888\" srcset=\"https:\/\/dougturnbull.org\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-03-at-6.24.09-PM-1024x613.png 1024w, https:\/\/dougturnbull.org\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-03-at-6.24.09-PM-300x180.png 300w, https:\/\/dougturnbull.org\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-03-at-6.24.09-PM-768x460.png 768w, https:\/\/dougturnbull.org\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-03-at-6.24.09-PM-1536x919.png 1536w, https:\/\/dougturnbull.org\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-03-at-6.24.09-PM-2048x1226.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Here are a few proposed daily workouts:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"476\" src=\"https:\/\/dougturnbull.org\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-03-at-6.23.56-PM-1024x476.png\" alt=\"\" class=\"wp-image-889\" srcset=\"https:\/\/dougturnbull.org\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-03-at-6.23.56-PM-1024x476.png 1024w, https:\/\/dougturnbull.org\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-03-at-6.23.56-PM-300x140.png 300w, https:\/\/dougturnbull.org\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-03-at-6.23.56-PM-768x357.png 768w, https:\/\/dougturnbull.org\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-03-at-6.23.56-PM-1536x715.png 1536w, https:\/\/dougturnbull.org\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-03-at-6.23.56-PM-2048x953.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>And here is the best part &#8211; a description of our workout mascot, Sugar:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"554\" src=\"https:\/\/dougturnbull.org\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-03-at-6.28.56-PM-1024x554.png\" alt=\"\" class=\"wp-image-890\" srcset=\"https:\/\/dougturnbull.org\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-03-at-6.28.56-PM-1024x554.png 1024w, https:\/\/dougturnbull.org\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-03-at-6.28.56-PM-300x162.png 300w, https:\/\/dougturnbull.org\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-03-at-6.28.56-PM-768x415.png 768w, https:\/\/dougturnbull.org\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-03-at-6.28.56-PM-1536x830.png 1536w, https:\/\/dougturnbull.org\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-03-at-6.28.56-PM.png 1676w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The most amazing thing about these vibe-coded projects is that I did not include any information about these four pictures. That is, Claude Code conducted the image analysis and developed the competitive training narrative for our dog Sugar.<\/p>\n\n\n\n<p>Claude Code is really impressive. It changes how we should teach our web programming courses. This is something that I plan to explore over the next few months.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the main goals for my sabbatical was to gain more experience with agentic programming. I&#8217;ve recently listened to[&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":892,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-885","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-general"],"_links":{"self":[{"href":"https:\/\/dougturnbull.org\/index.php\/wp-json\/wp\/v2\/posts\/885","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dougturnbull.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dougturnbull.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dougturnbull.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dougturnbull.org\/index.php\/wp-json\/wp\/v2\/comments?post=885"}],"version-history":[{"count":4,"href":"https:\/\/dougturnbull.org\/index.php\/wp-json\/wp\/v2\/posts\/885\/revisions"}],"predecessor-version":[{"id":894,"href":"https:\/\/dougturnbull.org\/index.php\/wp-json\/wp\/v2\/posts\/885\/revisions\/894"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dougturnbull.org\/index.php\/wp-json\/wp\/v2\/media\/892"}],"wp:attachment":[{"href":"https:\/\/dougturnbull.org\/index.php\/wp-json\/wp\/v2\/media?parent=885"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dougturnbull.org\/index.php\/wp-json\/wp\/v2\/categories?post=885"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dougturnbull.org\/index.php\/wp-json\/wp\/v2\/tags?post=885"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}