<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Ben Forta's blog — thoughts on education, technology, Adobe, and more"><link rel="canonical" href="https://forta.com/blog"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><title>Blog | Ben Forta</title><!-- Open Graph --><meta property="og:type" content="website"><meta property="og:site_name" content="Ben Forta"><meta property="og:url" content="https://forta.com/blog"><meta property="og:title" content="Blog | Ben Forta"><meta property="og:description" content="Ben Forta's blog — thoughts on education, technology, Adobe, and more"><meta property="og:image" content="https://assets.forta.com/images/about/BenForta_C4.jpg"><!-- Twitter / X --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@benforta"><meta name="twitter:title" content="Blog | Ben Forta"><meta name="twitter:description" content="Ben Forta's blog — thoughts on education, technology, Adobe, and more"><meta name="twitter:image" content="https://assets.forta.com/images/about/BenForta_C4.jpg"><link rel="stylesheet" href="/_astro/Layout.CbIqwOiK.css?dpl=dpl_4ADrZA6joToexyCY8LbbrejuTq4G"></head> <body class="bg-[#F7F4EF] text-[#0F1E35] min-h-screen"> <!-- Preview banner -->  <!-- Header --> <header class="bg-[#0F1E35] text-[#F7F4EF]"> <div class="max-w-6xl mx-auto px-6 py-4 flex items-center justify-between"> <a href="/" class="text-sm font-medium tracking-widest uppercase hover:opacity-80 transition-opacity">
Ben Forta
</a> <nav class="flex gap-8 text-sm"> <a href="/books" class="transition-colors opacity-60 hover:opacity-100">Books</a> <a href="/blog" class="transition-colors text-[#C8922A]">Blog</a> <a href="/about" class="transition-colors opacity-60 hover:opacity-100">About</a> </nav> </div> </header> <!-- Main content --> <main class="max-w-6xl mx-auto px-6 pt-6 pb-12">  <div> <!-- Main content --> <div> <div class="mb-8 flex items-center justify-between"> <h1 class="font-serif text-4xl font-normal pl-3" style="font-family: Georgia, serif; border-left: 3px solid #C8922A;"> Blog </h1>  </div> <!-- Search box --> <form method="get" action="/blog" class="mb-8"> <div class="flex gap-2 items-center flex-wrap"> <input type="text" name="q" value placeholder="Search posts..." class="flex-1 px-4 py-2 text-sm border border-[#d4cfc8] rounded bg-white focus:outline-none focus:border-[#C8922A]"> <button type="submit" class="px-4 py-2 bg-[#0F1E35] text-[#F7F4EF] text-sm rounded hover:bg-[#1a2f4a] transition-colors">
Search
</button> <div class="relative" id="tag-dropdown-wrapper"> <button type="button" id="tag-dropdown-btn" class="px-4 py-2 text-sm rounded border transition-colors whitespace-nowrap border-[#d4cfc8] hover:bg-[#e8e4dc]"> Filter by tag </button> <div id="tag-dropdown" class="hidden absolute right-0 top-10 w-64 bg-white border border-[#d4cfc8] rounded-lg shadow-lg z-20 p-3 max-h-80 overflow-y-auto">  <div class="flex flex-wrap gap-1.5"> <a href="/blog?tag=3d-printing" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> 3D Printing </a><a href="/blog?tag=acrobat" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Acrobat </a><a href="/blog?tag=adobe" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Adobe </a><a href="/blog?tag=adobe-express" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Adobe Express </a><a href="/blog?tag=adobemax" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> AdobeMAX </a><a href="/blog?tag=ai" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> AI </a><a href="/blog?tag=air" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> AIR </a><a href="/blog?tag=appearances" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Appearances </a><a href="/blog?tag=behance" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Behance </a><a href="/blog?tag=books" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Books </a><a href="/blog?tag=cfeclipse" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> CFEclipse </a><a href="/blog?tag=chatgpt" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> ChatGPT </a><a href="/blog?tag=chromebook" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Chromebook </a><a href="/blog?tag=cloud" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Cloud </a><a href="/blog?tag=coding" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Coding </a><a href="/blog?tag=coldfusion" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> ColdFusion </a><a href="/blog?tag=coldfusion-builder" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> ColdFusion Builder </a><a href="/blog?tag=creative-cloud" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Creative Cloud </a><a href="/blog?tag=creativity" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Creativity </a><a href="/blog?tag=edge" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Edge </a><a href="/blog?tag=education" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Education </a><a href="/blog?tag=electronics" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Electronics </a><a href="/blog?tag=fish-tank" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Fish Tank </a><a href="/blog?tag=flash" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Flash </a><a href="/blog?tag=flex" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Flex </a><a href="/blog?tag=gaming" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Gaming </a><a href="/blog?tag=home-automation" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Home Automation </a><a href="/blog?tag=html5" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> HTML5 </a><a href="/blog?tag=javascript" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> JavaScript </a><a href="/blog?tag=jobs" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Jobs </a><a href="/blog?tag=jquery" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> jQuery </a><a href="/blog?tag=jrun" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> JRun </a><a href="/blog?tag=labs" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Labs </a><a href="/blog?tag=max" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> MAX </a><a href="/blog?tag=mobile" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Mobile </a><a href="/blog?tag=phonegap" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> PhoneGap </a><a href="/blog?tag=photoshop" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Photoshop </a><a href="/blog?tag=raspberry-pi" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Raspberry Pi </a><a href="/blog?tag=regular-expressions" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Regular Expressions </a><a href="/blog?tag=ria" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> RIA </a><a href="/blog?tag=socialmedia" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Social Media </a><a href="/blog?tag=spark" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Spark </a><a href="/blog?tag=sql" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> SQL </a><a href="/blog?tag=stem" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> STEM </a><a href="/blog?tag=stuff" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Stuff </a><a href="/blog?tag=using-cf" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Using CF </a><a href="/blog?tag=ux" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> UX </a><a href="/blog?tag=web-development" class="text-xs px-2 py-1 rounded-full transition-colors bg-[#fdf3e3] text-[#C8922A] hover:bg-[#C8922A] hover:text-white"> Web Development </a> </div> </div> </div> <div class="relative group"> <span class="text-xs text-[#C8922A] cursor-help underline decoration-dotted whitespace-nowrap">Search tips</span> <div class="absolute right-0 top-6 w-72 bg-[#0F1E35] text-[#F7F4EF] text-xs rounded-lg p-4 shadow-lg z-10 hidden group-hover:block leading-relaxed"> <p class="font-medium mb-2">Search syntax:</p> <ul class="space-y-1"> <li><code class="bg-white/20 text-amber-400 px-1 rounded">mysql postgres</code> — both words</li> <li><code class="bg-white/20 text-amber-400 px-1 rounded">mysql | postgres</code> — either word</li> <li><code class="bg-white/20 text-amber-400 px-1 rounded">!java</code> — exclude word</li> <li><code class="bg-white/20 text-amber-400 px-1 rounded">"adobe express"</code> — exact phrase</li> <li><code class="bg-white/20 text-amber-400 px-1 rounded">sql:*</code> — prefix match</li> </ul> </div> </div> </div> </form> <div class="space-y-8"> <article class="pb-8 border-b border-[#e8e4dc]"> <div class="text-xs text-[#888] mb-2 flex items-center gap-2"> August 10, 2026  </div> <h2 class="font-serif text-xl font-normal mb-3" style="font-family: Georgia, serif;"> <a href="/blog/struggling-freshmen-have-a-fake-a-and-call-it-a-day" class="text-[#0F1E35] hover:text-[#C8922A] transition-colors"> Struggling Freshmen? Have a Fake A and Call It a Day </a> </h2> <p class="text-sm text-[#5a6a7a] leading-relaxed mb-3">Hiding freshman grades treats the symptom of a student mental health crisis while ignoring what&#39;s actually causing it, and strips away the incentive to push through hard classes in the process.</p> <div class="flex items-center gap-4"> <a href="/blog/struggling-freshmen-have-a-fake-a-and-call-it-a-day" class="text-sm text-[#C8922A] hover:underline">
Read more →
</a>  <div class="flex gap-2 flex-wrap"> <a href="/blog?tag=education" class="text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors"> Education </a> </div> </div> </article><article class="pb-8 border-b border-[#e8e4dc]"> <div class="text-xs text-[#888] mb-2 flex items-center gap-2"> July 29, 2026  </div> <h2 class="font-serif text-xl font-normal mb-3" style="font-family: Georgia, serif;"> <a href="/blog/ai-in-the-classroom-part-3-where-it-actually-earns-its-place" class="text-[#0F1E35] hover:text-[#C8922A] transition-colors"> AI in the Classroom, Part 3: Where It Actually Earns Its Place </a> </h2> <p class="text-sm text-[#5a6a7a] leading-relaxed mb-3">From personalized instruction to removing the blank page for kids who&#39;ve never had a way to show what&#39;s in their heads, this is where AI actually earns its place in the classroom, and why that matters most for the kids with the least.</p> <div class="flex items-center gap-4"> <a href="/blog/ai-in-the-classroom-part-3-where-it-actually-earns-its-place" class="text-sm text-[#C8922A] hover:underline">
Read more →
</a> <a href="/blog/ai-in-the-classroom-part-3-where-it-actually-earns-its-place#comments" class="inline-flex items-center gap-1 text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors" title="1 comment"> <svg xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 24 24" fill="currentColor"><path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z"></path></svg> 1 </a> <div class="flex gap-2 flex-wrap"> <a href="/blog?tag=education" class="text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors"> Education </a><a href="/blog?tag=ai" class="text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors"> AI </a> </div> </div> </article><article class="pb-8 border-b border-[#e8e4dc]"> <div class="text-xs text-[#888] mb-2 flex items-center gap-2"> July 28, 2026  </div> <h2 class="font-serif text-xl font-normal mb-3" style="font-family: Georgia, serif;"> <a href="/blog/ai-in-the-classroom-part-2-the-fears-real-and-imagined" class="text-[#0F1E35] hover:text-[#C8922A] transition-colors"> AI in the Classroom, Part 2: The Fears, Real and Imagined </a> </h2> <p class="text-sm text-[#5a6a7a] leading-relaxed mb-3">Cheating, plagiarism, screen time, equity, privacy: the fears about AI in schools are real, but most of them aren&#39;t new. AI didn&#39;t break education, it just shone a spotlight on problems that were already there.</p> <div class="flex items-center gap-4"> <a href="/blog/ai-in-the-classroom-part-2-the-fears-real-and-imagined" class="text-sm text-[#C8922A] hover:underline">
Read more →
</a> <a href="/blog/ai-in-the-classroom-part-2-the-fears-real-and-imagined#comments" class="inline-flex items-center gap-1 text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors" title="1 comment"> <svg xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 24 24" fill="currentColor"><path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z"></path></svg> 1 </a> <div class="flex gap-2 flex-wrap"> <a href="/blog?tag=education" class="text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors"> Education </a><a href="/blog?tag=ai" class="text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors"> AI </a> </div> </div> </article><article class="pb-8 border-b border-[#e8e4dc]"> <div class="text-xs text-[#888] mb-2 flex items-center gap-2"> July 27, 2026  </div> <h2 class="font-serif text-xl font-normal mb-3" style="font-family: Georgia, serif;"> <a href="/blog/ai-in-the-classroom-part-1-whats-actually-happening-now" class="text-[#0F1E35] hover:text-[#C8922A] transition-colors"> AI in the Classroom, Part 1: What&#39;s Actually Happening Now </a> </h2> <p class="text-sm text-[#5a6a7a] leading-relaxed mb-3">A room full of educators went quiet when I suggested assignments shouldn&#39;t have a word count. That reaction is the real subject of this post: the &quot;well, this is how we&#39;ve always done it&quot; mindset that&#39;s slowing AI adoption in the classroom, and why it&#39;s worth pushing past, carefully.</p> <div class="flex items-center gap-4"> <a href="/blog/ai-in-the-classroom-part-1-whats-actually-happening-now" class="text-sm text-[#C8922A] hover:underline">
Read more →
</a> <a href="/blog/ai-in-the-classroom-part-1-whats-actually-happening-now#comments" class="inline-flex items-center gap-1 text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors" title="1 comment"> <svg xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 24 24" fill="currentColor"><path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z"></path></svg> 1 </a> <div class="flex gap-2 flex-wrap"> <a href="/blog?tag=education" class="text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors"> Education </a><a href="/blog?tag=ai" class="text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors"> AI </a> </div> </div> </article><article class="pb-8 border-b border-[#e8e4dc]"> <div class="text-xs text-[#888] mb-2 flex items-center gap-2"> July 1, 2026  </div> <h2 class="font-serif text-xl font-normal mb-3" style="font-family: Georgia, serif;"> <a href="/blog/the-coldfusion-summit-welcome-video" class="text-[#0F1E35] hover:text-[#C8922A] transition-colors"> The ColdFusion Summit Welcome Video </a> </h2> <p class="text-sm text-[#5a6a7a] leading-relaxed mb-3">Last week I presented a keynote at the Adobe ColdFusion Summit 2026. The team created this (admittedly somewhat over the top) intro video for me.</p> <div class="flex items-center gap-4"> <a href="/blog/the-coldfusion-summit-welcome-video" class="text-sm text-[#C8922A] hover:underline">
Read more →
</a>  <div class="flex gap-2 flex-wrap"> <a href="/blog?tag=coldfusion" class="text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors"> ColdFusion </a> </div> </div> </article><article class="pb-8 border-b border-[#e8e4dc]"> <div class="text-xs text-[#888] mb-2 flex items-center gap-2"> June 25, 2026  </div> <h2 class="font-serif text-xl font-normal mb-3" style="font-family: Georgia, serif;"> <a href="/blog/the-real-reason-college-costs-so-much" class="text-[#0F1E35] hover:text-[#C8922A] transition-colors"> So What&#39;s The Real Reason College Costs So Much? </a> </h2> <p class="text-sm text-[#5a6a7a] leading-relaxed mb-3">What&#39;s behind the spiraling cost of higher education? Administrative bloat? Athletics spending? Fancy dorms? All of those are real. But they&#39;re symptoms, not the cause.</p> <div class="flex items-center gap-4"> <a href="/blog/the-real-reason-college-costs-so-much" class="text-sm text-[#C8922A] hover:underline">
Read more →
</a>  <div class="flex gap-2 flex-wrap"> <a href="/blog?tag=education" class="text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors"> Education </a> </div> </div> </article><article class="pb-8 border-b border-[#e8e4dc]"> <div class="text-xs text-[#888] mb-2 flex items-center gap-2"> June 23, 2026  </div> <h2 class="font-serif text-xl font-normal mb-3" style="font-family: Georgia, serif;"> <a href="/blog/overwhelmed-in-vegas" class="text-[#0F1E35] hover:text-[#C8922A] transition-colors"> Overwhelmed In Vegas </a> </h2> <p class="text-sm text-[#5a6a7a] leading-relaxed mb-3">I am sitting on a flight heading from Las Vegas, and I am feeling utterly overwhelmed.</p> <div class="flex items-center gap-4"> <a href="/blog/overwhelmed-in-vegas" class="text-sm text-[#C8922A] hover:underline">
Read more →
</a> <a href="/blog/overwhelmed-in-vegas#comments" class="inline-flex items-center gap-1 text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors" title="1 comment"> <svg xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 24 24" fill="currentColor"><path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z"></path></svg> 1 </a> <div class="flex gap-2 flex-wrap"> <a href="/blog?tag=coldfusion" class="text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors"> ColdFusion </a><a href="/blog?tag=stuff" class="text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors"> Stuff </a> </div> </div> </article><article class="pb-8 border-b border-[#e8e4dc]"> <div class="text-xs text-[#888] mb-2 flex items-center gap-2"> June 15, 2026  </div> <h2 class="font-serif text-xl font-normal mb-3" style="font-family: Georgia, serif;"> <a href="/blog/the-uks-social-media-ban-necessary-and-bound-to-fail" class="text-[#0F1E35] hover:text-[#C8922A] transition-colors"> The UK&#39;s Social Media Ban: Necessary, and Bound to Fail </a> </h2> <p class="text-sm text-[#5a6a7a] leading-relaxed mb-3">The UK is moving toward banning social media for under-16s and they&#39;re probably right to do it. But if parents think that means the problem is solved, we&#39;re in bigger trouble.</p> <div class="flex items-center gap-4"> <a href="/blog/the-uks-social-media-ban-necessary-and-bound-to-fail" class="text-sm text-[#C8922A] hover:underline">
Read more →
</a>  <div class="flex gap-2 flex-wrap"> <a href="/blog?tag=education" class="text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors"> Education </a><a href="/blog?tag=socialmedia" class="text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors"> Social Media </a> </div> </div> </article><article class="pb-8 border-b border-[#e8e4dc]"> <div class="text-xs text-[#888] mb-2 flex items-center gap-2"> June 10, 2026  </div> <h2 class="font-serif text-xl font-normal mb-3" style="font-family: Georgia, serif;"> <a href="/blog/you-cant-keep-raising-prices-and-then-complain-about-the-debate" class="text-[#0F1E35] hover:text-[#C8922A] transition-colors"> You Can&#39;t Keep Raising Prices and Then Complain About the Debate </a> </h2> <p class="text-sm text-[#5a6a7a] leading-relaxed mb-3">A professor recently wrote an opinion piece pushing back on the trend of evaluating higher education purely through the lens of earning potential. His argument: college is about more than money. That&#39;s a genuinely important point, and I don&#39;t want to dismiss it. But.</p> <div class="flex items-center gap-4"> <a href="/blog/you-cant-keep-raising-prices-and-then-complain-about-the-debate" class="text-sm text-[#C8922A] hover:underline">
Read more →
</a> <a href="/blog/you-cant-keep-raising-prices-and-then-complain-about-the-debate#comments" class="inline-flex items-center gap-1 text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors" title="2 comments"> <svg xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 24 24" fill="currentColor"><path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z"></path></svg> 2 </a> <div class="flex gap-2 flex-wrap"> <a href="/blog?tag=education" class="text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors"> Education </a> </div> </div> </article><article class="pb-8 border-b border-[#e8e4dc]"> <div class="text-xs text-[#888] mb-2 flex items-center gap-2"> May 18, 2026  </div> <h2 class="font-serif text-xl font-normal mb-3" style="font-family: Georgia, serif;"> <a href="/blog/does-vibe-coding-change-my-answer" class="text-[#0F1E35] hover:text-[#C8922A] transition-colors"> Does Vibe Coding Change My Answer? </a> </h2> <p class="text-sm text-[#5a6a7a] leading-relaxed mb-3">A while back I wrote a post titled &quot;Should We Still Teach Kids To Code?&quot;. The answer was yes. A lot has happened since then, and &quot;vibe coding&quot; is now all the rage. So, does that change my recommendation?</p> <div class="flex items-center gap-4"> <a href="/blog/does-vibe-coding-change-my-answer" class="text-sm text-[#C8922A] hover:underline">
Read more →
</a>  <div class="flex gap-2 flex-wrap"> <a href="/blog?tag=education" class="text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors"> Education </a><a href="/blog?tag=coding" class="text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors"> Coding </a><a href="/blog?tag=creativity" class="text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors"> Creativity </a><a href="/blog?tag=ai" class="text-xs px-2 py-0.5 bg-[#fdf3e3] text-[#C8922A] rounded-full hover:bg-[#C8922A] hover:text-white transition-colors"> AI </a> </div> </div> </article> </div> <!-- Pagination --> <div class="flex items-center justify-between mt-8 pt-4 border-t border-[#d4cfc8]"> <div class="text-xs text-[#888]">
Page 1 of 489 (4889 posts)
</div> <div class="flex gap-2">  <a href="/blog?page=2" class="px-3 py-1 text-sm border border-[#d4cfc8] rounded hover:bg-[#e8e4dc] transition-colors">
Next →
</a> </div> </div> </div> </div> <script type="module">const e=document.getElementById("tag-dropdown-btn"),d=document.getElementById("tag-dropdown");e?.addEventListener("click",t=>{t.stopPropagation(),d?.classList.toggle("hidden")});document.addEventListener("click",t=>{document.getElementById("tag-dropdown-wrapper")?.contains(t.target)||d?.classList.add("hidden")});</script>  </main> <!-- Footer --> <footer class="bg-[#0F1E35] text-[#F7F4EF] mt-24" style="border-top: 3px solid #C8922A;"> <div class="max-w-6xl mx-auto px-6 py-10 grid grid-cols-1 md:grid-cols-3 gap-8 items-start"> <!-- Left: identity --> <div> <div class="text-sm font-medium tracking-widest uppercase mb-1">Ben Forta</div> <div class="text-xs opacity-50 leading-relaxed">Educator · Author · Lecturer · Technologist</div> <div class="text-xs opacity-40 mt-4">© 2026 Ben Forta</div> </div> <!-- Center: nav --> <div class="flex flex-col md:items-center"> <div class="text-xs font-medium uppercase tracking-widest opacity-40 mb-2">Navigate</div> <div class="flex gap-5"> <a href="/" class="text-xs opacity-60 hover:opacity-100 hover:text-[#C8922A] transition-colors">Home</a> <a href="/books" class="text-xs opacity-60 hover:opacity-100 hover:text-[#C8922A] transition-colors">Books</a> <a href="/blog" class="text-xs opacity-60 hover:opacity-100 hover:text-[#C8922A] transition-colors">Blog</a> <a href="/about" class="text-xs opacity-60 hover:opacity-100 hover:text-[#C8922A] transition-colors">About</a> <a href="/about/contact" class="text-xs opacity-60 hover:opacity-100 hover:text-[#C8922A] transition-colors">Contact</a> </div> </div> <!-- Right: social --> <div class="flex flex-col gap-2 md:items-end"> <div class="text-xs font-medium uppercase tracking-widest opacity-40 mb-1">Connect</div> <div class="flex gap-4 items-center"> <a href="https://twitter.com/benforta" target="_blank" rel="noopener noreferrer" aria-label="X / Twitter" class="opacity-60 hover:opacity-100 transition-opacity" style="color: inherit;"> <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="currentColor" class="hover:text-[#C8922A] transition-colors"> <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.747l7.73-8.835L1.254 2.25H8.08l4.259 5.63 5.905-5.63zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path> </svg> </a> <a href="https://www.linkedin.com/in/benforta/" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn" class="opacity-60 hover:opacity-100 transition-opacity" style="color: inherit;"> <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="currentColor" class="hover:text-[#C8922A] transition-colors"> <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path> </svg> </a> <a href="https://www.facebook.com/benforta" target="_blank" rel="noopener noreferrer" aria-label="Facebook" class="opacity-60 hover:opacity-100 transition-opacity" style="color: inherit;"> <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="currentColor" class="hover:text-[#C8922A] transition-colors"> <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path> </svg> </a> <a href="https://www.instagram.com/benforta" target="_blank" rel="noopener noreferrer" aria-label="Instagram" class="opacity-60 hover:opacity-100 transition-opacity" style="color: inherit;"> <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="currentColor" class="hover:text-[#C8922A] transition-colors"> <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z"></path> </svg> </a> </div> </div> </div> </footer> <vercel-analytics data-props="{}" data-params="{}" data-pathname="/blog"></vercel-analytics> <script type="module">var v=()=>{window.va||(window.va=function(...i){window.vaq||(window.vaq=[]),window.vaq.push(i)})},w="@vercel/analytics",b="2.0.1";function f(){return typeof window<"u"}function p(){try{const e="production"}catch{}return"production"}function h(e="auto"){if(e==="auto"){window.vam=p();return}window.vam=e}function y(){return(f()?window.vam:p())||"production"}function d(){return y()==="development"}function m(e,i){if(!e||!i)return e;let n=e;try{const t=Object.entries(i);for(const[r,s]of t)if(!Array.isArray(s)){const o=u(s);o.test(n)&&(n=n.replace(o,`/[${r}]`))}for(const[r,s]of t)if(Array.isArray(s)){const o=u(s.join("/"));o.test(n)&&(n=n.replace(o,`/[...${r}]`))}return n}catch{return e}}function u(e){return new RegExp(`/${g(e)}(?=[/?#]|$)`)}function g(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function E(e){return e.scriptSrc?a(e.scriptSrc):d()?"https://va.vercel-scripts.com/v1/script.debug.js":e.basePath?a(`${e.basePath}/insights/script.js`):"/_vercel/insights/script.js"}function S(e,i){var n;let t=e;if(i)try{t={...(n=JSON.parse(i))==null?void 0:n.analytics,...e}}catch{}h(t.mode);const r={sdkn:w+(t.framework?`/${t.framework}`:""),sdkv:b};return t.disableAutoTrack&&(r.disableAutoTrack="1"),t.viewEndpoint&&(r.viewEndpoint=a(t.viewEndpoint)),t.eventEndpoint&&(r.eventEndpoint=a(t.eventEndpoint)),t.sessionEndpoint&&(r.sessionEndpoint=a(t.sessionEndpoint)),d()&&t.debug===!1&&(r.debug="false"),t.dsn&&(r.dsn=t.dsn),t.endpoint?r.endpoint=t.endpoint:t.basePath&&(r.endpoint=a(`${t.basePath}/insights`)),{beforeSend:t.beforeSend,src:E(t),dataset:r}}function a(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:`/${e}`}function k(e={debug:!0},i){var n;if(!f())return;const{beforeSend:t,src:r,dataset:s}=S(e,i);if(v(),t&&((n=window.va)==null||n.call(window,"beforeSend",t)),document.head.querySelector(`script[src*="${r}"]`))return;const o=document.createElement("script");o.src=r;for(const[c,l]of Object.entries(s))o.dataset[c]=l;o.defer=!0,o.onerror=()=>{const c=d()?"Please check if any ad blockers are enabled and try again.":"Be sure to enable Web Analytics for your project and deploy again. See https://vercel.com/docs/analytics/quickstart for more information.";console.log(`[Vercel Web Analytics] Failed to load script from ${r}. ${c}`)},document.head.appendChild(o)}function $({route:e,path:i}){var n;(n=window.va)==null||n.call(window,"pageview",{route:e,path:i})}function A(){try{return}catch{}}function j(){try{return'{"analytics":{"scriptSrc":"0a1a7ab521ecf57b/script.js","viewEndpoint":"0a1a7ab521ecf57b/view","eventEndpoint":"0a1a7ab521ecf57b/event","sessionEndpoint":"0a1a7ab521ecf57b/session"},"speedInsights":{"scriptSrc":"d902694cdbb27a6e/script.js","endpoint":"d902694cdbb27a6e/vitals"}}'}catch{}}customElements.define("vercel-analytics",class extends HTMLElement{constructor(){super();try{const i=JSON.parse(this.dataset.props??"{}"),n=JSON.parse(this.dataset.params??"{}");k({...i,disableAutoTrack:!0,framework:"astro",basePath:A(),beforeSend:window.webAnalyticsBeforeSend},j());const t=this.dataset.pathname;$({route:m(t??"",n),path:t})}catch(i){throw new Error(`Failed to parse WebAnalytics properties: ${i}`)}}});</script> <vercel-speed-insights data-props="{}" data-params="{}" data-pathname="/blog"></vercel-speed-insights> <script type="module">var f=()=>{window.si||(window.si=function(...r){window.siq=window.siq||[],window.siq.push(r)})},l="@vercel/speed-insights",h="2.0.0";function v(){return typeof window<"u"}function b(){try{const e="production"}catch{}return"production"}function u(){return b()==="development"}function g(e,r){if(!e||!r)return e;let s=e;try{const t=Object.entries(r);for(const[n,o]of t)if(!Array.isArray(o)){const i=d(o);i.test(s)&&(s=s.replace(i,`/[${n}]`))}for(const[n,o]of t)if(Array.isArray(o)){const i=d(o.join("/"));i.test(s)&&(s=s.replace(i,`/[...${n}]`))}return s}catch{return e}}function d(e){return new RegExp(`/${w(e)}(?=[/?#]|$)`)}function w(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function m(e){return e.scriptSrc?a(e.scriptSrc):u()?"https://va.vercel-scripts.com/v1/speed-insights/script.debug.js":e.dsn?"https://va.vercel-scripts.com/v1/speed-insights/script.js":e.basePath?a(`${e.basePath}/speed-insights/script.js`):"/_vercel/speed-insights/script.js"}function S(e,r){var s;let t=e;if(r)try{t={...(s=JSON.parse(r))==null?void 0:s.speedInsights,...e}}catch{}const n={sdkn:l+(t.framework?`/${t.framework}`:""),sdkv:h};return t.sampleRate&&(n.sampleRate=t.sampleRate.toString()),t.route&&(n.route=t.route),u()&&t.debug===!1&&(n.debug="false"),t.dsn&&(n.dsn=t.dsn),t.endpoint?n.endpoint=a(t.endpoint):t.basePath&&(n.endpoint=a(`${t.basePath}/speed-insights/vitals`)),{src:m(t),beforeSend:t.beforeSend,dataset:n}}function a(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:`/${e}`}function y(e={},r){var s;if(!v()||e.route===null)return null;f();const{beforeSend:t,src:n,dataset:o}=S(e,r);if(document.head.querySelector(`script[src*="${n}"]`))return null;t&&((s=window.si)==null||s.call(window,"beforeSend",t));const i=document.createElement("script");i.src=n,i.defer=!0;for(const[c,p]of Object.entries(o))i.dataset[c]=p;return i.onerror=()=>{console.log(`[Vercel Speed Insights] Failed to load script from ${n}. Please check if any content blockers are enabled and try again.`)},document.head.appendChild(i),{setRoute:c=>{i.dataset.route=c??void 0}}}function $(){try{return}catch{}}function k(){try{return'{"analytics":{"scriptSrc":"0a1a7ab521ecf57b/script.js","viewEndpoint":"0a1a7ab521ecf57b/view","eventEndpoint":"0a1a7ab521ecf57b/event","sessionEndpoint":"0a1a7ab521ecf57b/session"},"speedInsights":{"scriptSrc":"d902694cdbb27a6e/script.js","endpoint":"d902694cdbb27a6e/vitals"}}'}catch{return}}customElements.define("vercel-speed-insights",class extends HTMLElement{constructor(){super();try{const r=JSON.parse(this.dataset.props??"{}"),s=JSON.parse(this.dataset.params??"{}"),t=g(this.dataset.pathname??"",s);y({route:t,...r,framework:"astro",basePath:$(),beforeSend:window.speedInsightsBeforeSend},k())}catch(r){throw new Error(`Failed to parse SpeedInsights properties: ${r}`)}}});</script> </body></html>