<?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>Forem: skllzrmy</title>
    <description>The latest articles on Forem by skllzrmy (@skullzarmy).</description>
    <link>https://forem.com/skullzarmy</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1084021%2Fc9fd21a5-9247-4a27-8ca8-a484aed1e87a.gif</url>
      <title>Forem: skllzrmy</title>
      <link>https://forem.com/skullzarmy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/skullzarmy"/>
    <language>en</language>
    <item>
      <title>Are Large Language Models the Steam Engine of My Time? And, if so, am I the John Henry of this tale?</title>
      <dc:creator>skllzrmy</dc:creator>
      <pubDate>Wed, 22 Oct 2025 23:15:17 +0000</pubDate>
      <link>https://forem.com/skullzarmy/are-large-language-models-the-steam-engine-of-my-time-and-if-so-am-i-the-john-henry-of-this-tale-45gi</link>
      <guid>https://forem.com/skullzarmy/are-large-language-models-the-steam-engine-of-my-time-and-if-so-am-i-the-john-henry-of-this-tale-45gi</guid>
      <description>&lt;p&gt;If you've heard the folk tale of John Henry, you know the story: a steel-driving man who raced against a steam-powered hammer to prove human worth and dignity. He won the race but died with his hammer in his hand. It's a powerful allegory about technological change, human pride, and the cost of resistance.&lt;/p&gt;

&lt;p&gt;Today, as AI coding assistants become ubiquitous in software development, many developers feel like they're staring down their own steam-powered hammer. The anxiety is real—will AI replace us? Should we resist? Are we racing toward obsolescence?&lt;/p&gt;

&lt;p&gt;But here's what the John Henry story often obscures: &lt;strong&gt;the steam engine didn't eliminate workers; it transformed work itself&lt;/strong&gt;. The railroad industry exploded after mechanization. More tunnels were built, more tracks laid, more infrastructure created than ever before. The work changed, but the opportunities multiplied.&lt;/p&gt;

&lt;p&gt;AI coding assistants are our steam engine. And just like then, the developers who learn to wield these tools—rather than compete against them—will find themselves with unprecedented leverage to build, create, and solve problems at scales previously unimaginable.&lt;/p&gt;

&lt;h2&gt;
  
  
  The False Binary: Human vs. Machine
&lt;/h2&gt;

&lt;p&gt;The John Henry narrative sets up a false choice: either the human or the machine wins. Either we prove our worth by outperforming AI, or we're rendered obsolete. This framing is emotionally resonant but strategically catastrophic.&lt;/p&gt;

&lt;p&gt;The reality of the steam engine era wasn't "humans vs. machines"—it was &lt;strong&gt;humans with machines vs. humans without machines&lt;/strong&gt;. The workers who learned to operate, maintain, and design steam-powered equipment didn't lose their jobs; they became more valuable. The ones who insisted on racing against the machine? Well, we know how that ended.&lt;/p&gt;

&lt;p&gt;Today's parallel is striking:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Developers who embrace AI assistants&lt;/strong&gt; are shipping features faster, exploring more architectural options, and handling increasingly complex systems&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Developers who refuse to adapt&lt;/strong&gt; are fighting a losing battle, burning energy on repetitive tasks that machines excel at&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;The real competition&lt;/strong&gt; isn't human vs. AI—it's between developers who leverage AI and those who don't&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What the Steam Engine Actually Did
&lt;/h2&gt;

&lt;p&gt;Let's examine what happened after steam power became widespread in the 19th century. Did it eliminate jobs? Let's look at the data:&lt;/p&gt;

&lt;h3&gt;
  
  
  Railroad Employment (United States)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;1840&lt;/strong&gt; (pre-steam dominance): ~7,000 railroad workers&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;1860&lt;/strong&gt; (steam era): ~80,000 railroad workers&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;1890&lt;/strong&gt;: ~750,000 railroad workers&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;1920&lt;/strong&gt;: Over 2 million railroad workers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The steam engine didn't eliminate railroad work—it created an entirely new industry that employed orders of magnitude more people. But the &lt;em&gt;nature&lt;/em&gt; of that work transformed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Old roles that diminished:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Manual track laborers doing purely physical work&lt;/li&gt;
&lt;li&gt;  Animal handlers for horse-drawn freight&lt;/li&gt;
&lt;li&gt;  Local couriers for short-distance transport&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;New roles that emerged:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Steam engine operators and engineers&lt;/li&gt;
&lt;li&gt;  Railway mechanics and maintenance crews&lt;/li&gt;
&lt;li&gt;  Station masters and logistics coordinators&lt;/li&gt;
&lt;li&gt;  Track designers and civil engineers&lt;/li&gt;
&lt;li&gt;  Safety inspectors and regulatory officials&lt;/li&gt;
&lt;li&gt;  Freight managers and supply chain specialists&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The pattern is clear: &lt;strong&gt;automation eliminated specific tasks, not entire domains&lt;/strong&gt;. More importantly, it created massive new opportunity spaces that didn't exist before.&lt;/p&gt;

&lt;h2&gt;
  
  
  The AI Parallel: What's Really Happening
&lt;/h2&gt;

&lt;p&gt;When I use GitHub Copilot, Cursor, or Claude in my development workflow, I'm not being replaced—I'm being &lt;strong&gt;amplified&lt;/strong&gt;. Here's what actually happens:&lt;/p&gt;

&lt;h3&gt;
  
  
  Tasks AI Handles Well (The "Boilerplate Equivalents")
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  Writing repetitive CRUD operations&lt;/li&gt;
&lt;li&gt;  Generating type definitions from API schemas&lt;/li&gt;
&lt;li&gt;  Creating unit test scaffolding&lt;/li&gt;
&lt;li&gt;  Translating designs into initial component structures&lt;/li&gt;
&lt;li&gt;  Documenting existing code&lt;/li&gt;
&lt;li&gt;  Refactoring patterns across files&lt;/li&gt;
&lt;li&gt;  Finding and fixing syntax errors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are the equivalent of manually hammering spikes into railroad ties—tedious, repetitive, and perfect for automation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where Humans Remain Essential (The "Engineering Equivalents")
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Architectural decisions&lt;/strong&gt;: What should we build and why?&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Product intuition&lt;/strong&gt;: What will users actually need six months from now?&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;System design&lt;/strong&gt;: How do these components interact at scale?&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Code review&lt;/strong&gt;: Does this solution introduce technical debt?&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Debugging complex issues&lt;/strong&gt;: Why does this work locally but fail in production?&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Stakeholder communication&lt;/strong&gt;: How do we translate business requirements into technical solutions?&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Ethical considerations&lt;/strong&gt;: What are the implications of this feature?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI can generate code, but it can't understand your company's strategic direction, your users' unspoken needs, or the subtle technical debt accumulating in your architecture. &lt;strong&gt;That's the leverage point.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The New Job Categories Already Emerging
&lt;/h2&gt;

&lt;p&gt;Just as the steam engine created entirely new roles, AI coding assistants are spawning new specializations:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. AI-Assisted Development Specialists
&lt;/h3&gt;

&lt;p&gt;Developers who master "prompt engineering" for code generation aren't just faster—they're building differently. They understand how to decompose problems into AI-friendly chunks and validate AI-generated solutions against architectural principles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Market demand&lt;/strong&gt;: Already seeing job postings for "AI-augmented developers" with 20-30% salary premiums&lt;/p&gt;

&lt;h3&gt;
  
  
  2. AI Tool Integration Engineers
&lt;/h3&gt;

&lt;p&gt;Companies need developers who can integrate AI assistants into existing workflows, customize them for proprietary codebases, and ensure they align with company standards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Emerging role&lt;/strong&gt;: Building internal AI tools, fine-tuning models on company code, and establishing AI-assisted development best practices&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Human-AI Collaboration Architects
&lt;/h3&gt;

&lt;p&gt;As teams adopt AI tools, someone needs to design workflows that optimize the human-AI partnership. This role combines development expertise with process design and change management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skills required&lt;/strong&gt;: Understanding both technical capabilities of AI and the psychology of developer workflows&lt;/p&gt;

&lt;h3&gt;
  
  
  4. AI Code Auditors
&lt;/h3&gt;

&lt;p&gt;With AI generating more code, we need specialists who can rapidly review, validate, and improve AI-generated solutions. This requires deep technical expertise &lt;em&gt;plus&lt;/em&gt; the ability to spot AI-specific pitfalls.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Critical skill&lt;/strong&gt;: Recognizing when AI solutions are superficially correct but architecturally problematic&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Synthetic Data Engineers
&lt;/h3&gt;

&lt;p&gt;Training better coding assistants requires high-quality training data. Developers who understand both code architecture and machine learning are in demand to curate, clean, and structure training datasets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Growth area&lt;/strong&gt;: Companies building proprietary AI tools need developers who can create representative, high-quality code examples&lt;/p&gt;

&lt;h2&gt;
  
  
  The Shift in Developer Value
&lt;/h2&gt;

&lt;p&gt;Here's what changed with the steam engine: &lt;strong&gt;the value shifted from physical strength to technical knowledge&lt;/strong&gt;. A single engineer operating a steam drill could replace a dozen manual laborers, but that engineer needed specialized training, problem-solving skills, and adaptability.&lt;/p&gt;

&lt;p&gt;The parallel in software development is striking:&lt;/p&gt;

&lt;h3&gt;
  
  
  Before AI Assistants (Primarily Valued)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Syntax memorization&lt;/strong&gt;: Knowing exact API signatures&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Typing speed&lt;/strong&gt;: How fast you can physically write code&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Rote implementation&lt;/strong&gt;: Converting specs directly into code&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Framework knowledge&lt;/strong&gt;: Remembering documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  With AI Assistants (Increasingly Valued)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;System thinking&lt;/strong&gt;: Understanding how components interact&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Architectural judgment&lt;/strong&gt;: Choosing the right patterns&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Problem decomposition&lt;/strong&gt;: Breaking complexity into solvable chunks&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Critical evaluation&lt;/strong&gt;: Assessing whether AI solutions are good solutions&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Domain expertise&lt;/strong&gt;: Understanding the business context&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Quality assessment&lt;/strong&gt;: Recognizing subtle bugs and edge cases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The trend is clear&lt;/strong&gt;: We're moving from "code writers" to "code architects." AI handles syntax; humans handle strategy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Is Actually Good News
&lt;/h2&gt;

&lt;p&gt;For developers who embrace this shift, the opportunities are extraordinary.&lt;/p&gt;

&lt;h3&gt;
  
  
  Velocity Without Burnout
&lt;/h3&gt;

&lt;p&gt;Instead of spending 60% of your time on boilerplate and 40% on interesting problems, you can flip that ratio. AI handles the tedious parts; you focus on the challenges that require creativity and judgment. I've seen developers shipping features 2-3x faster while reporting &lt;em&gt;lower&lt;/em&gt; stress levels because they're spending time on engaging work instead of fighting with syntax errors and repetitive implementations.&lt;/p&gt;

&lt;p&gt;The traditional developer burnout pattern often stems from the constant context-switching between interesting architectural challenges and mind-numbing CRUD operations. AI assistants eliminate that whiplash. You stay in the zone—thinking about system design, user experience, and business value—while the assistant handles the mechanical translation of your ideas into code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Learning Becomes Exploratory
&lt;/h3&gt;

&lt;p&gt;AI assistants act as interactive documentation that adapts to your learning style. Stuck on a pattern? Ask for examples tailored to your specific use case. Need to work with an unfamiliar framework? Get instant scaffolding with explanations that make sense in your context. This isn't just faster—it's fundamentally different.&lt;/p&gt;

&lt;p&gt;Developers can now confidently take on projects outside their core expertise, expanding their skill sets at a pace that would have been impossible five years ago. Want to add machine learning to your web app despite being primarily a frontend developer? Your AI assistant can bridge that gap, teaching you the concepts while you build. The result is a generation of more versatile, T-shaped developers who aren't confined to narrow specializations.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Innovation Multiplier
&lt;/h3&gt;

&lt;p&gt;Want to try a different architectural approach? Let AI scaffold both options and compare them in real time. Considering a new framework? Generate a proof-of-concept in minutes instead of hours. This lower cost of experimentation fundamentally changes how we innovate.&lt;/p&gt;

&lt;p&gt;When the cost of trying something new drops from "a full afternoon" to "fifteen minutes," you try more things. More experiments mean more discoveries. More discoveries mean better solutions. The compound effect of this increased iteration speed is profound—teams using AI assistants aren't just moving faster, they're making better decisions because they can actually test their assumptions instead of just debating them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Opening Doors to New Voices
&lt;/h3&gt;

&lt;p&gt;Just as steam power opened opportunities for workers who lacked the physical strength for manual labor, AI assistants lower barriers for developers who struggle with syntax but excel at problem-solving. This matters more than most people realize. How many brilliant product thinkers have we lost to the industry because they couldn't memorize React's useEffect dependency rules? How many creative problem-solvers gave up because semicolons and bracket placement felt like arbitrary gatekeeping?&lt;/p&gt;

&lt;p&gt;AI assistants don't eliminate the need for technical understanding—but they do separate "can you think like a programmer" from "can you remember the exact syntax for a Python list comprehension." The result is more diverse perspectives in software development, including career-changers, self-taught developers, and people whose brains simply work differently. That diversity makes our software better.&lt;/p&gt;

&lt;h3&gt;
  
  
  Thinking Strategically, Not Syntactically
&lt;/h3&gt;

&lt;p&gt;When you're not bogged down in implementation details, you can think about &lt;em&gt;what&lt;/em&gt; to build, not just &lt;em&gt;how&lt;/em&gt; to build it. This elevates developers closer to product and strategy roles—which is where the real value lives. The best developers have always been the ones who understood the business context, not just the technical stack. AI assistants make it possible for more developers to operate at that level.&lt;/p&gt;

&lt;p&gt;Developers become more strategic partners in business decisions when they have the cognitive bandwidth to think beyond the code. You can sit in a product meeting and not just say "yes, that's technically possible"—you can say "here's why approach A serves our users better than approach B, and I can prototype both to prove it." That's a different conversation entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Skills That Matter Now
&lt;/h2&gt;

&lt;p&gt;If you're a developer wondering how to stay relevant (or become more valuable) in the AI era, here's what actually matters.&lt;/p&gt;

&lt;h3&gt;
  
  
  Learn to Speak AI
&lt;/h3&gt;

&lt;p&gt;Prompt engineering for code isn't about memorizing magic phrases—it's about learning to think alongside an AI. The developers who excel at this understand how to decompose problems into clear, contextual requests that the AI can work with effectively. They know when to provide examples, when to specify constraints, and when to let the AI explore.&lt;/p&gt;

&lt;p&gt;Next time you use an AI assistant, pay attention to which prompts produce better results and why. Notice the difference between "make this faster" and "optimize this database query by adding an index on the user_id column and explain the performance implications." The specificity, the context, the explicit request for explanation—these aren't arbitrary. They're how you collaborate effectively with a tool that has vast knowledge but no understanding of your specific situation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Architectural Thinking Becomes Your Superpower
&lt;/h3&gt;

&lt;p&gt;Can you explain &lt;em&gt;why&lt;/em&gt; one solution is better than another? More importantly, can you spot when code is technically correct but architecturally problematic? This is where humans provide value that AI can't replicate. AI can generate a working implementation, but it can't tell you that your microservices architecture is becoming a distributed monolith, or that your clever abstraction is actually making the codebase harder to understand.&lt;/p&gt;

&lt;p&gt;Develop this skill by studying system design, reading architecture decision records (ADRs) from successful projects, and reviewing code with an eye for long-term maintainability. Ask yourself: Will this make sense to someone six months from now? Does this scale? What happens when requirements change? These questions separate code that works from code that endures.&lt;/p&gt;

&lt;h3&gt;
  
  
  Domain Expertise Is Your Moat
&lt;/h3&gt;

&lt;p&gt;AI knows syntax and patterns, but it doesn't know your business. It doesn't understand why your customers churn after 90 days, or why that edge case actually represents 30% of your revenue, or why the sales team keeps asking for features that seem technically straightforward but strategically misguided. The more you understand your users, your industry, and your product, the more valuable you become—because that understanding informs every technical decision you make.&lt;/p&gt;

&lt;p&gt;Invest time with users. Learn the business model inside out. Understand the competitive landscape. Read the customer support tickets. Attend the sales calls. This context is what transforms you from a code generator (which AI can do) into a problem solver (which AI can't).&lt;/p&gt;

&lt;h3&gt;
  
  
  Cultivate Critical Evaluation
&lt;/h3&gt;

&lt;p&gt;AI will confidently generate wrong solutions. Confidently. With perfect syntax and helpful comments. The code will run, the tests might pass, and six months later you'll discover it has a subtle bug that costs your company millions. Can you recognize these issues? Can you articulate why they're wrong?&lt;/p&gt;

&lt;p&gt;Code review everything—AI-generated or human-written—with a critical eye. Ask "What could go wrong?" Ask "What assumptions is this making?" Ask "How does this fail?" The ability to spot the difference between code that works in the demo and code that works in production is increasingly valuable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Become a Force Multiplier
&lt;/h3&gt;

&lt;p&gt;As AI tools proliferate, teams desperately need people who can teach others to use them effectively, establish best practices, and communicate technical concepts clearly. If you can help five other developers level up their AI-assisted workflow, you've just 5x'd your impact on the organization.&lt;/p&gt;

&lt;p&gt;Write documentation about what works and what doesn't. Mentor junior developers in how to collaborate with AI assistants effectively. Explain technical decisions in plain language that non-technical stakeholders can understand. These communication skills have always been valuable, but in an AI-augmented world, they become essential—because the technical gap between "can code" and "can't code" is shrinking, while the gap between "can communicate technical concepts" and "can't" is widening.&lt;/p&gt;

&lt;h2&gt;
  
  
  The John Henry Lesson We Should Actually Learn
&lt;/h2&gt;

&lt;p&gt;Here's the real lesson from John Henry: &lt;strong&gt;the tragedy wasn't the steam engine; it was the refusal to adapt&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;John Henry's choice to race against the machine was understandable—he was defending his dignity, his craft, his very identity. But it was also futile. The steam engine won eventually, not because it was better at &lt;em&gt;every aspect&lt;/em&gt; of the work, but because it could do certain tasks at scale that humans couldn't match.&lt;/p&gt;

&lt;p&gt;The workers who survived and thrived weren't the ones who raced against steam drills. They were the ones who learned to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Operate&lt;/strong&gt; the new machinery&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Maintain&lt;/strong&gt; complex mechanical systems&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Design&lt;/strong&gt; better tools and workflows&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Teach&lt;/strong&gt; others how to work with steam power&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Innovate&lt;/strong&gt; on new applications of the technology&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sound familiar?&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Competitive Advantage: The Human Touch
&lt;/h2&gt;

&lt;p&gt;There's a final, crucial point that often gets lost in AI discussions: &lt;strong&gt;AI coding assistants are tools, not teammates&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They don't have intuition about what users will actually want. They can't sense that the feature request makes perfect sense on paper but will create confusion in practice. They don't have context about your company's strategic goals—whether you're optimizing for growth, profitability, or preparing for acquisition. They can't exercise judgment about when to take shortcuts versus when to invest in quality, because they don't understand the difference between a quick prototype and a mission-critical payment system.&lt;/p&gt;

&lt;p&gt;AI assistants have no empathy for the developers who will maintain this code. They don't care if they're creating a clever abstraction that will make perfect sense today and be utterly baffling in six months. They lack the creativity to invent entirely new solutions to unprecedented problems—they can only remix and recombine patterns they've seen before.&lt;/p&gt;

&lt;p&gt;These distinctly human qualities are what separate mediocre developers from exceptional ones. And here's the fascinating part: AI amplifies this gap. Give both a mediocre developer and an exceptional developer an AI assistant, and the exceptional developer pulls even further ahead—because they know how to direct that power, when to trust it, and when to override it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building Better, Faster, Together
&lt;/h2&gt;

&lt;p&gt;The future isn't human &lt;em&gt;or&lt;/em&gt; AI—it's human &lt;em&gt;and&lt;/em&gt; AI. The developers who recognize this and embrace collaboration with AI tools will find themselves building more ambitious projects, learning faster through fearless experimentation, and focusing their energy on problems that actually matter. They'll reduce burnout by eliminating soul-crushing boilerplate work and increase their impact by delivering exponentially more value to users and businesses. This isn't speculation—it's already happening.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Steam Engine Created Railways; What Will AI Create?
&lt;/h2&gt;

&lt;p&gt;Here's the exciting part: we don't fully know yet. Just as the steam engine didn't just speed up existing work but enabled entirely new industries (transcontinental railways, industrial manufacturing, modern logistics), AI coding assistants won't just make us faster at building websites—they'll enable entirely new categories of software.&lt;/p&gt;

&lt;p&gt;We're already seeing glimmers of this transformation. Hyper-personalized applications that adapt to individual users at scale are becoming feasible for teams that couldn't have built them before. Ideas turn into working prototypes in hours instead of weeks, which fundamentally changes what's worth trying. Complex functionality that required a team of specialists is now accessible to smaller, more agile groups. Experimental architectures that would have been too risky to attempt can now be tested without massive investment.&lt;/p&gt;

&lt;p&gt;What comes next? &lt;strong&gt;That depends on what developers choose to build with their newfound leverage.&lt;/strong&gt; The steam engine created railways, factories, and global supply chains—but only because engineers and entrepreneurs imagined new possibilities and built them. AI coding assistants are handing us similar leverage. The question isn't whether the tool is powerful—it clearly is. The question is: what will you build with it?&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion: Pick Up the Hammer &lt;em&gt;and&lt;/em&gt; the Engine
&lt;/h2&gt;

&lt;p&gt;John Henry is remembered as a hero, but his story is a cautionary tale. Don't be John Henry. Don't race against the machine.&lt;/p&gt;

&lt;p&gt;Instead, be the engineer who learns to operate the steam drill, who figures out how to build better drills, who uses steam power to tunnel through mountains that would have been impossible before.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI coding assistants are your lever. Use them to move the world.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The jobs won't disappear—they'll transform. The developers who disappear will be the ones who insist on racing against AI rather than running with it. The ones who thrive will be those who recognize that AI is not a replacement for human judgment, creativity, and expertise—it's an amplifier.&lt;/p&gt;

&lt;p&gt;So the question isn't "Will AI replace developers?" The question is: &lt;strong&gt;"What will you build now that AI has given you superhuman leverage?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The steam engine didn't eliminate railroad workers; it created an industry that employed millions. AI won't eliminate developers; it will create opportunities we can't yet imagine.&lt;/p&gt;

&lt;p&gt;The future of software development isn't human vs. AI. It's humans equipped with AI vs. problems that once seemed impossible.&lt;/p&gt;

&lt;p&gt;This post was originally published on my blog at &lt;a href="https://joepeterson.work/blog/ai-coding-assistants-modern-steam-engine" rel="noopener noreferrer"&gt;https://joepeterson.work/blog/ai-coding-assistants-modern-steam-engine&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>VibeAlive: Cleaning Up the Code Chaos of AI-Assisted Development</title>
      <dc:creator>skllzrmy</dc:creator>
      <pubDate>Sun, 12 Oct 2025 21:51:28 +0000</pubDate>
      <link>https://forem.com/skullzarmy/vibealive-cleaning-up-the-code-chaos-of-ai-assisted-development-2k5j</link>
      <guid>https://forem.com/skullzarmy/vibealive-cleaning-up-the-code-chaos-of-ai-assisted-development-2k5j</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyq8kp58zrfuwzypwi8gc.jpg" class="article-body-image-wrapper"&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.amazonaws.com%2Fuploads%2Farticles%2Fyq8kp58zrfuwzypwi8gc.jpg" alt="Johnny VibeAlive - the robot mascot of VibeAlive" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Rise of AI Coding Assistants
&lt;/h2&gt;

&lt;p&gt;AI coding assistants have revolutionized the way developers build software. From generating boilerplate code to scaffolding entire components and APIs, these tools offer unprecedented speed and convenience. But with great power comes great mess. The reality is that AI-assisted development often leaves behind a trail of unused files, half-baked components, and forgotten API endpoints. This technical debt accumulates quickly, leading to bloated codebases, performance issues, and architectural drift.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hidden Cost of Vibe Coding
&lt;/h2&gt;

&lt;p&gt;Developers working with AI assistants frequently encounter a new kind of clutter. You ask your assistant to create a login flow—it generates a component that never gets imported. You request an API endpoint—it scaffolds the route, but no one calls it. You refactor your routing structure—the old files remain buried in your repo. This is the unavoidable technical debt of 'vibe coding': fast, iterative development with minimal cleanup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing VibeAlive
&lt;/h2&gt;

&lt;p&gt;VibeAlive is a framework-aware code analysis tool built specifically for Next.js projects. It's designed to help developers—and their AI assistants—identify and eliminate the technical debt that comes with rapid, AI-driven development. VibeAlive doesn't just scan your codebase; it understands your framework, your routing patterns, and your architectural decisions.&lt;/p&gt;

&lt;p&gt;VibeAlive is completely free and open source. You can explore the source code, contribute, or report issues directly on &lt;a href="https://github.com/skullzarmy/vibealive" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. The latest releases are also available on npm, making it easy to integrate VibeAlive into your Next.js projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Features of VibeAlive
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework-Aware Analysis&lt;/strong&gt;: Detects Next.js versions and routing patterns including App Router, Pages Router, and hybrid setups&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unused Code Detection&lt;/strong&gt;: Builds a complete dependency graph to identify orphaned files and dead components&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real Bundle Size Analysis&lt;/strong&gt;: Integrates with Webpack stats to calculate exact bundle size impact and potential savings&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Endpoint Analysis&lt;/strong&gt;: Scans your codebase to find unused API routes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility and SEO Audits&lt;/strong&gt;: Performs WCAG 2.2 accessibility checks and SEO setup validation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiple Report Formats&lt;/strong&gt;: Generates JSON, Markdown, and other formats for easy consumption&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Internationalization&lt;/strong&gt;: Supports multiple locales including Spanish, French, German, and Portuguese&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The MCP Server: Supercharging Your AI Assistant
&lt;/h2&gt;

&lt;p&gt;The real magic of VibeAlive lies in its MCP (Model Context Protocol) server. Built with the official MCP SDK v1.18.1, the server exposes VibeAlive's full analysis capabilities to IDEs, LLMs, and automation tools. This means your AI assistant can query your project's health, check if a file is used, audit SEO and accessibility setups, and even score your project's overall health—all in real time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key MCP Tools
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;analyze-project&lt;/strong&gt;: Start a full, asynchronous Next.js project analysis&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;get-job-status&lt;/strong&gt;: Check analysis progress and status&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;get-analysis-report&lt;/strong&gt;: Retrieve analysis results in summary or full JSON format&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;get-file-details&lt;/strong&gt;: Get detailed analysis for specific files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;check-file&lt;/strong&gt;: Quickly check if a specific file is used&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;analyze-theme-setup&lt;/strong&gt;: Analyze theme configuration and dark mode setup&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;audit-seo-setup&lt;/strong&gt;: Comprehensive SEO audit including metadata and structured data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;scan-performance-issues&lt;/strong&gt;: Identify performance problems and optimization opportunities&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;check-accessibility&lt;/strong&gt;: Full WCAG 2.2 accessibility audit&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;detect-nextjs-patterns&lt;/strong&gt;: Identify advanced Next.js routing patterns&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;validate-project-health&lt;/strong&gt;: Overall project health score with recommendations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Keep Your Vibe Alive
&lt;/h2&gt;

&lt;p&gt;AI-assisted development is here to stay, but so is the technical debt it creates. VibeAlive helps you and your assistant stay ahead of the mess by turning your codebase into a well-lit workspace instead of a cluttered garage. Whether you're a solo developer or part of a large team, VibeAlive offers the tools you need to maintain clean, performant, and accessible Next.js applications.&lt;/p&gt;

&lt;p&gt;Ready to clean up your codebase? Try VibeAlive for free today—check out the source at &lt;a href="https://github.com/skullzarmy/vibealive" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and install it from npm to get started.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>opensource</category>
      <category>cli</category>
    </item>
    <item>
      <title>VibeAlive: Cleaning Up the Code Chaos of AI-Assisted Development</title>
      <dc:creator>skllzrmy</dc:creator>
      <pubDate>Sun, 12 Oct 2025 21:39:00 +0000</pubDate>
      <link>https://forem.com/skullzarmy/vibealive-cleaning-up-the-code-chaos-of-ai-assisted-development-100l</link>
      <guid>https://forem.com/skullzarmy/vibealive-cleaning-up-the-code-chaos-of-ai-assisted-development-100l</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1sen3gz7nei5z1hklyei.jpg" class="article-body-image-wrapper"&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.amazonaws.com%2Fuploads%2Farticles%2F1sen3gz7nei5z1hklyei.jpg" alt="Johnny VibeAlive - the robot mascot of VibeAlive" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Rise of AI Coding Assistants
&lt;/h2&gt;

&lt;p&gt;AI coding assistants have revolutionized the way developers build software. From generating boilerplate code to scaffolding entire components and APIs, these tools offer unprecedented speed and convenience. But with great power comes great mess. The reality is that AI-assisted development often leaves behind a trail of unused files, half-baked components, and forgotten API endpoints. This technical debt accumulates quickly, leading to bloated codebases, performance issues, and architectural drift.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hidden Cost of Vibe Coding
&lt;/h2&gt;

&lt;p&gt;Developers working with AI assistants frequently encounter a new kind of clutter. You ask your assistant to create a login flow—it generates a component that never gets imported. You request an API endpoint—it scaffolds the route, but no one calls it. You refactor your routing structure—the old files remain buried in your repo. This is the unavoidable technical debt of 'vibe coding': fast, iterative development with minimal cleanup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing VibeAlive
&lt;/h2&gt;

&lt;p&gt;VibeAlive is a framework-aware code analysis tool built specifically for Next.js projects. It's designed to help developers—and their AI assistants—identify and eliminate the technical debt that comes with rapid, AI-driven development. VibeAlive doesn't just scan your codebase; it understands your framework, your routing patterns, and your architectural decisions.&lt;/p&gt;

&lt;p&gt;VibeAlive is completely free and open source. You can explore the source code, contribute, or report issues directly on &lt;a href="https://github.com/skullzarmy/vibealive" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. The latest releases are also available on npm, making it easy to integrate VibeAlive into your Next.js projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Features of VibeAlive
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework-Aware Analysis&lt;/strong&gt;: Detects Next.js versions and routing patterns including App Router, Pages Router, and hybrid setups&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unused Code Detection&lt;/strong&gt;: Builds a complete dependency graph to identify orphaned files and dead components&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real Bundle Size Analysis&lt;/strong&gt;: Integrates with Webpack stats to calculate exact bundle size impact and potential savings&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Endpoint Analysis&lt;/strong&gt;: Scans your codebase to find unused API routes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility and SEO Audits&lt;/strong&gt;: Performs WCAG 2.2 accessibility checks and SEO setup validation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiple Report Formats&lt;/strong&gt;: Generates JSON, Markdown, and other formats for easy consumption&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Internationalization&lt;/strong&gt;: Supports multiple locales including Spanish, French, German, and Portuguese&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The MCP Server: Supercharging Your AI Assistant
&lt;/h2&gt;

&lt;p&gt;The real magic of VibeAlive lies in its MCP (Model Context Protocol) server. Built with the official MCP SDK v1.18.1, the server exposes VibeAlive's full analysis capabilities to IDEs, LLMs, and automation tools. This means your AI assistant can query your project's health, check if a file is used, audit SEO and accessibility setups, and even score your project's overall health—all in real time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key MCP Tools
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;analyze-project&lt;/strong&gt;: Start a full, asynchronous Next.js project analysis&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;get-job-status&lt;/strong&gt;: Check analysis progress and status&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;get-analysis-report&lt;/strong&gt;: Retrieve analysis results in summary or full JSON format&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;get-file-details&lt;/strong&gt;: Get detailed analysis for specific files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;check-file&lt;/strong&gt;: Quickly check if a specific file is used&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;analyze-theme-setup&lt;/strong&gt;: Analyze theme configuration and dark mode setup&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;audit-seo-setup&lt;/strong&gt;: Comprehensive SEO audit including metadata and structured data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;scan-performance-issues&lt;/strong&gt;: Identify performance problems and optimization opportunities&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;check-accessibility&lt;/strong&gt;: Full WCAG 2.2 accessibility audit&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;detect-nextjs-patterns&lt;/strong&gt;: Identify advanced Next.js routing patterns&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;validate-project-health&lt;/strong&gt;: Overall project health score with recommendations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Keep Your Vibe Alive
&lt;/h2&gt;

&lt;p&gt;AI-assisted development is here to stay, but so is the technical debt it creates. VibeAlive helps you and your assistant stay ahead of the mess by turning your codebase into a well-lit workspace instead of a cluttered garage. Whether you're a solo developer or part of a large team, VibeAlive offers the tools you need to maintain clean, performant, and accessible Next.js applications.&lt;/p&gt;

&lt;p&gt;Ready to clean up your codebase? Try VibeAlive for free today—check out the source at &lt;a href="https://github.com/skullzarmy/vibealive" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and install it from npm to get started.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>tooling</category>
      <category>testing</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Introducing Rate Keeper: A Compact Utility for Robust Rate Limiting</title>
      <dc:creator>skllzrmy</dc:creator>
      <pubDate>Mon, 04 Nov 2024 06:08:28 +0000</pubDate>
      <link>https://forem.com/skullzarmy/introducing-rate-keeper-a-compact-utility-for-robust-rate-limiting-37ib</link>
      <guid>https://forem.com/skullzarmy/introducing-rate-keeper-a-compact-utility-for-robust-rate-limiting-37ib</guid>
      <description>&lt;p&gt;Tired of handling rate limits with every API? Meet &lt;strong&gt;rate-keeper&lt;/strong&gt; – an elegant, lightweight npm package designed to keep your API interactions within safe bounds with minimal effort. Featuring an intuitive interface and a small footprint, this utility seamlessly integrates into your codebase, ensuring your application remains stable, reliable, and considerate to external services.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Rate Limiting Matters
&lt;/h2&gt;

&lt;p&gt;When interfacing with APIs, it's easy to exceed rate limits when making excessive requests in rapid succession. Rate limiting is essential for preventing your application from overwhelming APIs and for safeguarding external services from misuse. It plays a crucial role in building resilient, production-grade systems reliant on third-party data. However, implementing effective rate limiting can often be tedious, and sometimes present challenges.&lt;/p&gt;

&lt;p&gt;This is where &lt;strong&gt;rate-keeper&lt;/strong&gt; excels.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;rate-keeper&lt;/strong&gt; provides a straightforward solution for adding rate limits to your functions, allowing you to stay within API thresholds effortlessly. Whether you are logging messages, retrieving data, or repeatedly invoking API calls, &lt;strong&gt;rate-keeper&lt;/strong&gt; empowers you to maintain control over the flow of operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features at a Glance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Define Actions with Rate Limits&lt;/strong&gt;: Enforce a minimum delay between function invocations to ensure rate compliance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manage Multiple Queues by ID&lt;/strong&gt;: Segregate function calls into independent or grouped queues for streamlined execution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prevent Overloading&lt;/strong&gt;: Effectively manage API usage to avoid exceeding rate limits and disrupting integration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simple Integration&lt;/strong&gt;: Get up and running quickly with minimal changes to your JavaScript or TypeScript codebase.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At only &lt;strong&gt;15.9 kB&lt;/strong&gt; unpacked, &lt;strong&gt;rate-keeper&lt;/strong&gt; is a small but powerful addition to your toolkit, capable of handling complex rate-limiting needs with ease.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;To install, simply run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;rate-keeper
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's an example of &lt;strong&gt;rate-keeper&lt;/strong&gt; in action:&lt;/p&gt;

&lt;h3&gt;
  
  
  Basic Usage
&lt;/h3&gt;

&lt;p&gt;Need to limit the frequency of log messages?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;RateKeeper&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;rate-keeper&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;safeLogger&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;RateKeeper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;logMessage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Enforces a minimum interval of 500ms between calls.&lt;/span&gt;

&lt;span class="nf"&gt;safeLogger&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Message 1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;safeLogger&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Message 2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;safeLogger&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Message 3&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With &lt;strong&gt;rate-keeper&lt;/strong&gt;, each log call is spaced by 500 milliseconds, ensuring a controlled output rate.&lt;/p&gt;

&lt;h3&gt;
  
  
  Managing Queues
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;rate-keeper&lt;/strong&gt; also supports creating queues, which helps organize and stagger the execution of multiple actions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;RateKeeper&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;rate-keeper&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;queueID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1001&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;logger1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;RateKeeper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;logMessage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;queueID&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;logger2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;RateKeeper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;logMessage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;queueID&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nf"&gt;logger1&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Queue Message 1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;logger2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Queue Message 2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this setup, &lt;strong&gt;rate-keeper&lt;/strong&gt; coordinates multiple loggers using a shared queue, ensuring each action executes sequentially.&lt;/p&gt;

&lt;h2&gt;
  
  
  Asynchronous Handling Made Easy
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;rate-keeper&lt;/strong&gt; also supports asynchronous workflows by wrapping functions and returning a promise, facilitating straightforward use with async/await or promise chaining.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;safeLogger&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello World 1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Handle the result here&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Seamless Integration
&lt;/h2&gt;

&lt;p&gt;Adding rate limiting should be effortless, and with &lt;strong&gt;rate-keeper&lt;/strong&gt;, it is. Forget about cumbersome APIs or bulky dependencies – &lt;strong&gt;rate-keeper&lt;/strong&gt; offers a clean, minimalistic approach that integrates seamlessly into existing projects. Plus, it provides TypeScript support out of the box, offering type safety and an improved development experience.&lt;/p&gt;

&lt;p&gt;By integrating &lt;strong&gt;rate-keeper&lt;/strong&gt; into your workflow, you can significantly streamline the process of handling rate limits. Instead of manually managing delays or writing custom rate-limiting logic for each API interaction, &lt;strong&gt;rate-keeper&lt;/strong&gt; allows you to abstract these details away, enabling a more efficient and organized approach.&lt;/p&gt;

&lt;p&gt;Whether you are developing a microservice that interacts with multiple third-party APIs or a front-end application that needs to stay within usage constraints, &lt;strong&gt;rate-keeper&lt;/strong&gt; seamlessly fits into your setup. Its ease of integration means that developers can quickly adopt it without altering their existing codebase significantly. The ability to create separate queues by ID and control execution flow makes it especially useful in more complex scenarios where multiple services need to operate concurrently but within set limits.&lt;/p&gt;

&lt;p&gt;By automating rate limiting, &lt;strong&gt;rate-keeper&lt;/strong&gt; saves you valuable development time, allowing you to focus on the core logic of your application. Instead of worrying about throttling or dealing with unexpected API errors, you can trust &lt;strong&gt;rate-keeper&lt;/strong&gt; to handle the nuances of rate compliance, ensuring that your application stays resilient and performs optimally even under strict rate constraints.&lt;/p&gt;

&lt;p&gt;Ready to take control of your rate limits? &lt;strong&gt;&lt;a href="https://www.npmjs.com/package/rate-keeper" rel="noopener noreferrer"&gt;npm i rate-keeper&lt;/a&gt;&lt;/strong&gt; – simplify your workflow and let your code flow smoothly.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>api</category>
      <category>ratelimit</category>
    </item>
    <item>
      <title>A Dangerous Power Play: Matt Mullenweg's Latest Move Threatens To Totally Fork Him Over</title>
      <dc:creator>skllzrmy</dc:creator>
      <pubDate>Tue, 15 Oct 2024 21:55:15 +0000</pubDate>
      <link>https://forem.com/skullzarmy/a-dangerous-power-play-matt-mullenwegs-latest-move-threatens-to-totally-fork-him-over-4806</link>
      <guid>https://forem.com/skullzarmy/a-dangerous-power-play-matt-mullenwegs-latest-move-threatens-to-totally-fork-him-over-4806</guid>
      <description>&lt;p&gt;&lt;strong&gt;A Call for Accountability in Open Source&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Open source thrives on trust, transparency, and community collaboration. But recently, Matt Mullenweg, the CEO of Automattic who acquired WordPress, has taken actions that threaten to undermine these core values. By seizing control of the Advanced Custom Fields (ACF) plugin and attempting to stifle WP Engine under the guise of security concerns, Mullenweg has shifted from championing open source to centralizing power. This move doesn’t just endanger the WordPress ecosystem—it endangers the entire open source philosophy of collaboration and innovation.&lt;/p&gt;

&lt;p&gt;The WordPress community, like any other open source ecosystem, depends on shared values: transparency, freedom, and collective progress. These principles have been at the heart of WordPress since Automattic's involvement. However, Mullenweg’s recent power play with the ACF plugin—a community-developed tool trusted by thousands—signals a disturbing deviation from these ideals. By prioritizing control over collaboration, he risks damaging not just WordPress but also the open source community as a whole.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Unique Power of Open Source
&lt;/h3&gt;

&lt;p&gt;Open source is built on freedom, transparency, and collaboration. Unlike proprietary software, where control rests in the hands of a single entity, open source invites anyone to contribute, review, and modify code. This openness drives innovation and growth, and it’s what has allowed projects like WordPress to become dominant forces on the web, powering over 40% of websites globally.&lt;/p&gt;

&lt;p&gt;Mullenweg's recent actions go against these fundamental values. Instead of fostering a space where the community can thrive together, his attempts to centralize control threaten to reverse years of progress. Trust is the backbone of open source, and when that trust is broken, it discourages the very contributions that have made WordPress successful.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lessons from the Past: Power Struggles in Open Source
&lt;/h3&gt;

&lt;p&gt;The battle over control isn’t unique to WordPress. History offers valuable lessons on the dangers of centralized authority in open source.&lt;/p&gt;

&lt;p&gt;In 2010, Oracle's acquisition of Sun Microsystems brought control of OpenOffice under a corporate agenda. The community, fearing a loss of transparency and collaboration, responded by forking OpenOffice to create LibreOffice. Today, LibreOffice thrives as a community-led project, demonstrating the strength of collective action in preserving open ideals.&lt;/p&gt;

&lt;p&gt;Another example is the Node.js/io.js split in 2014. When developers felt restricted by Joyent's control of Node.js, they forked it to create io.js, a version driven by community ideals. Eventually, the projects reunited under a more open and collaborative governance model, showing that decentralization can ultimately lead to a stronger ecosystem.&lt;/p&gt;

&lt;p&gt;The WordPress community should heed these lessons: when authoritarian control threatens open source values, the answer is to act decisively in favor of community-driven solutions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Centralized Power vs. Community Governance
&lt;/h3&gt;

&lt;p&gt;Mullenweg’s appropriation of the ACF plugin marks a clear shift away from community-driven governance. By forcibly taking over a tool that was developed by and for the community, he sets a dangerous precedent—one that disregards the contributions of independent developers in favor of centralized authority.&lt;/p&gt;

&lt;p&gt;Open source software is supposed to be collaborative. If developers fear their contributions might be taken over without their consent, enthusiasm and participation will inevitably wane. Without community involvement, the project’s energy dries up, and what remains is a stagnant shell of its former self.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Social Backlash and Erosion of Trust
&lt;/h3&gt;

&lt;p&gt;The backlash against Mullenweg's actions has been swift and loud. Developers and WordPress users across the web have voiced their frustration over this authoritarian approach, which stands in stark contrast to the community-first origins of WordPress.&lt;/p&gt;

&lt;p&gt;Social media has become the battleground, with some defending Mullenweg's actions as necessary for security, while many others decry them as an overreach of power. This division has deepened the rift within the WordPress community, eroding the trust that is vital to open source projects. Without trust, open source cannot thrive; it cannot grow. The fracture caused by Mullenweg's power grab will take more than words to heal—it will take actions that re-establish community trust.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Moral Issue, Not Just a Legal One
&lt;/h3&gt;

&lt;p&gt;The controversy surrounding WP Engine and the ACF plugin should have been a moral debate about preserving the integrity of open source. Instead, it has devolved into a battle over control and licensing fees. By asserting trademark power and demanding licensing fees, Mullenweg has pushed WordPress towards monopolistic practices—the very kind of behavior open source was built to resist.&lt;/p&gt;

&lt;p&gt;If the community remains passive, we risk allowing open source to become a mere facade—controlled by those whose primary goal is profit, not community enrichment. It is critical that the WordPress community reclaims the narrative and ensures WordPress remains a free and open project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Charting a New Course: Forking WordPress to Protect Its Future
&lt;/h3&gt;

&lt;p&gt;The community now faces a choice: Allow Mullenweg to continue his unchecked control, or take decisive action to preserve the freedom that open source stands for. One of the most powerful responses available to an open source community is to fork the project.&lt;/p&gt;

&lt;p&gt;A hard fork of WordPress—perhaps called OpenPress—could help protect the core values that made WordPress successful while establishing a governance model that is truly decentralized. Forking isn’t an easy decision, nor should it be taken lightly, but it may be the only way to safeguard the project’s future. By creating a new, community-led version of WordPress, developers can ensure that the software remains open, free, and driven by collaboration.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Call to Action: Fork for the Future
&lt;/h3&gt;

&lt;p&gt;Matt Mullenweg’s actions have demonstrated the urgent need for the WordPress community to act. If the largest open source project on the internet can be controlled by one individual without accountability, then the entire model of open source is at risk.&lt;/p&gt;

&lt;p&gt;A fork is the best way to protect WordPress from monopolistic power plays. The time has come for the community to take a stand, to act, and to uphold the promise of open source. The future of WordPress—and the integrity of open source software—depends on our willingness to step up and take action now.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on So Cal Tech Lab - &lt;a href="https://socaltechlab.com/posts/forking-up-wordpress/" rel="noopener noreferrer"&gt;https://socaltechlab.com/posts/forking-up-wordpress/&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>opensource</category>
      <category>development</category>
    </item>
    <item>
      <title>I Built a Shadcn Slot Machine for Hacktoberfest—and I’m Just Getting Started</title>
      <dc:creator>skllzrmy</dc:creator>
      <pubDate>Sun, 06 Oct 2024 07:54:52 +0000</pubDate>
      <link>https://forem.com/skullzarmy/i-built-a-shadcn-slot-machine-for-hacktoberfest-and-im-just-getting-started-211j</link>
      <guid>https://forem.com/skullzarmy/i-built-a-shadcn-slot-machine-for-hacktoberfest-and-im-just-getting-started-211j</guid>
      <description>&lt;h1&gt;
  
  
  I Built a Shadcn Slot Machine for Hacktoberfest—and I’m Just Getting Started
&lt;/h1&gt;

&lt;p&gt;Hacktoberfest 2024 is still in full swing, but I’ve already hit my four pull requests. All of them went into &lt;em&gt;shadcn-extensions&lt;/em&gt;, a project I started to organize the random UI components I’ve been building over the past few months. It’s a lightweight repo where I’m collecting user-submitted components for shadcn UI—nothing too wild, just something practical that I could actually use and share with others.&lt;/p&gt;

&lt;p&gt;The idea came from realizing I had all these one-off UIs generated using v0.dev, and they were just sitting in different projects, scattered. So I figured, why not pull them all into a single repo and make something of it? It’s been fun to see the project come together, and Hacktoberfest gave me the perfect excuse to kick it off.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1842692590124007884-967" src="https://platform.twitter.com/embed/Tweet.html?id=1842692590124007884"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1842692590124007884-967');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1842692590124007884&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h2&gt;
  
  
  The One-File Social Media UI
&lt;/h2&gt;

&lt;p&gt;One of the highlights for me was building an entire social media interface—all in one file. I wanted to see how far I could push shadcn components and Tailwind within a single component file. The process wasn’t super difficult, just a little tricky to keep things organized with so many interactions happening in the same place. It came together without too many headaches, though, and I ended up with a pretty clean, functional UI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Slot Machine Fun
&lt;/h2&gt;

&lt;p&gt;Halfway through the UI, I decided to take a break and do something a little more playful. That’s when I threw in a slot machine UI. It was one of those spur-of-the-moment ideas that ended up being a lot of fun to build. The animations are slick, the reels spin perfectly, and it adds a bit of unexpected flair to the repo. Sometimes, it's those random ideas that make a project memorable, and this was definitely one of them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Next?
&lt;/h2&gt;

&lt;p&gt;Hacktoberfest isn’t over yet, and I’m still looking at where I can contribute next. I’ve been wanting to give something back to &lt;strong&gt;Oh My Zsh&lt;/strong&gt;, a tool I’ve relied on for ages. I’m also eyeing the &lt;strong&gt;Next SEO&lt;/strong&gt; package (&lt;a href="https://github.com/garmeeh/next-seo" rel="noopener noreferrer"&gt;this one&lt;/a&gt;), since it’s been a huge help on several projects and deserves some community love.&lt;/p&gt;

&lt;p&gt;This has been a great way to get my wheels turning, and even though my four PRs are in, I’m definitely not slowing down. There's a lot more to explore, and I’m ready to keep contributing.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hacktoberfest</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
