<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:base="https://kpwags.com/notes" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Keith Wagner - Notes</title>
    <link>https://kpwags.com/notes</link>
    <atom:link href="https://kpwags.com/rss/notes_no_politics_feed.xml" rel="self" type="application/rss+xml" />
    <description>A feed of my short notes</description>
    <language>en</language>
    <item>
      <title>Food, Software, and Trade-offs</title>
      <link>https://kpwags.com/notes/food-software-and-trade-offs/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Everything has trade-offs, a set of attributes optimized and balanced towards a particular outcome.&lt;/p&gt;
&lt;p&gt;You get X, but you lose Y.&lt;/p&gt;
&lt;p&gt;Life is full of trade-offs. Anyone who says otherwise is trying to sell you something.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 13 Apr 2026 13:39:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/food-software-and-trade-offs/</guid>
    </item>
    <item>
      <title>Comprehension Debt - the hidden cost of AI generated code</title>
      <link>https://kpwags.com/notes/comprehension-debt--the-hidden-cost-of-ai-generated-code/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Unlike technical debt, which announces itself through mounting friction - slow builds, tangled dependencies, the creeping dread every time you touch that one module - comprehension debt breeds false confidence. The codebase looks clean. The tests are green. The reckoning arrives quietly, usually at the worst possible moment.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://margaretstorey.com/blog/2026/02/09/cognitive-debt/&quot;&gt;Margaret-Anne Storey&lt;/a&gt;’s describes a student team that hit this wall in week seven: they could no longer make simple changes &lt;strong&gt;without breaking something unexpected&lt;/strong&gt;. The real problem wasn’t messy code. It was that no one on the team could explain why design decisions had been made or how different parts of the system were supposed to work together. The theory of the system had evaporated.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Knowing the code you are introducing to your codebase is so important. As soon as you offload that blindly to AI, the timebomb starts ticking.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I read one engineer say that the bottleneck has always been a competent developer understanding the project. AI doesn’t change that constraint. It creates the illusion you’ve escaped it.&lt;/p&gt;
&lt;p&gt;And the inversion is sharper than it looks. When code was expensive to produce, senior engineers could review faster than junior engineers could write. &lt;strong&gt;AI flips this: a junior engineer can now generate code faster than a senior engineer can critically audit it.&lt;/strong&gt; The rate-limiting factor that kept review meaningful has been removed. &lt;strong&gt;What used to be a quality gate is now a throughput problem.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The nightmare is when the AIs create such large PRs that make it so easy to miss wrong turns in code.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There’s also a specific failure mode worth naming. &lt;strong&gt;When an AI changes implementation behavior and updates hundreds of test cases to match the new behavior, the question shifts from “is this code correct?” to “were all those test changes necessary, and do I have enough coverage to catch what I’m not thinking about?”&lt;/strong&gt; Tests cannot answer that question. Only comprehension can.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The tests pass...the code must work...right? Right?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You will pay for comprehension sooner or later. The debt accrues interest rapidly.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 13 Apr 2026 13:33:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/comprehension-debt--the-hidden-cost-of-ai-generated-code/</guid>
    </item>
    <item>
      <title>People are Not Friction</title>
      <link>https://kpwags.com/notes/people-are-not-friction/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;People, the context-bearers, have experience and capabilities that machines might never understand encoded in our muscles and memory. I’m on record saying I despise nuance –&lt;em&gt;and I do&lt;/em&gt;– but it’s more important than ever to be able to connect to our fellow humans over this nuance so our world is not paved over by contextless opinions from ill-informed robots. Empower and believe people over machines.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 30 Mar 2026 14:27:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/people-are-not-friction/</guid>
    </item>
    <item>
      <title>Building the Good Web</title>
      <link>https://kpwags.com/notes/building-the-good-web/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Let me try to define the Good Web. The Good Web is any part of the internet built in good faith, which I mean in the specific, contractual sense. The maker is not optimizing against the user. No dark patterns. No retention schemes. No bloated scripts designed to keep you scrolling past the point of nourishment into the territory of compulsion. Nobody on a bbCode forum is selling your reading habits to an insurance company. The Good Web is not a technology, not a protocol, not even a community—though it contains all of those things. It&#39;s a disposition toward the person on the other end of the connection. It&#39;s the difference between a neighbour who bakes you bread and a supermarket that puts the bread at the back of the store because they know you&#39;ll buy chips on the way. Both are offering you something. Only one of them gives a shit whether you leave full.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;More of this please.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 30 Mar 2026 14:26:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/building-the-good-web/</guid>
    </item>
    <item>
      <title>I Am in an Abusive Relationship with the Technology Industry</title>
      <link>https://kpwags.com/notes/i-am-in-an-abusive-relationship-with-the-technology-industry/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;You simply cannot &lt;em&gt;breathe&lt;/em&gt; without seeing, hearing, or engaging in any kind of technical conversation about AI. AI has dominated the Zeitgeist so catastrophically that the only way to escape is to turn off the WiFi and delete all the apps. Every single piece of fucking software has some kind of shitty AI add-on, forced into your face at regular intervals whilst you’re trying to go about your life or do your job or check your email or write an email or read an email or talk to a human support agent or read a recipe or open an issue on an open-source project or watch a YouTube video or open your IDE or do a fucking internet search. The cognitive overload of AI trying to Make You More Productive™️ whilst you’re actually trying to &lt;strong&gt;be&lt;/strong&gt; productive is so shockingly absurd. And yet, we are being made to feel like we are stagnating, being left behind, not good enough, that we are luddites should we not adopt this imposing technology. We are being told we’re missing out, even though we’re probably doing just fine. The technology is gaslighting us.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It&#39;s all opt-out (if you&#39;re lucky enough to be able to turn it off) too.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What’s even more personally terrifying: what if I need to find a new job in the near future? There are seemingly no non-generative-AI-centred options left for someone like me. I’m afraid that every opportunity will either be for a company building some kind of generative AI experience, or one that mandates the use of generative AI in your daily responsibilities, or one that refuses to use AI at the expense of their financial success and the stability of my employment. At this point I cannot escape. I am at the mercy of the profession I chose. I have a family to feed and a mortgage to pay. Retraining is not an option right now. I must force myself to adapt.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Wed, 25 Mar 2026 19:50:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/i-am-in-an-abusive-relationship-with-the-technology-industry/</guid>
    </item>
    <item>
      <title>Mike and Karl Talk AI</title>
      <link>https://kpwags.com/notes/mike-and-karl-talk-ai/</link>
      <description>
		&lt;p&gt;This was a fantastic conversation bringing in a bunch of the nuance that is so often missed.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 23 Mar 2026 10:15:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/mike-and-karl-talk-ai/</guid>
    </item>
    <item>
      <title>The Artisanal Web</title>
      <link>https://kpwags.com/notes/the-artisanal-web/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;No one was particularly optimizing for engagement or time-on-site or conversion. People made websites because they had something to say, or something to show, or just because they could. The web was weird and slow and full of bad tiled backgrounds, bad fonts and dumb ideas.&lt;/p&gt;
&lt;p&gt;It was also weirdly, wildly, wonderfully human.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I almost feel like this is one benefit of Musk&#39;s takeover of Twitter/X. More people seem to have started building or resurrecting their own personal sites.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There are still people building the web by hand, very much like we did it in the early days. They know all about what&#39;s possible using modern tooling, yet they choose to expend their time and attention to the craft of doing it by hand. They care about the craft, and they care about what they&#39;re making. They believe in their unique skill and vision over engagement strategies and analytics and content algorithms. They don&#39;t need a platform, or they&#39;ll build their own.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 23 Mar 2026 10:14:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/the-artisanal-web/</guid>
    </item>
    <item>
      <title>Programming in the Swamp</title>
      <link>https://kpwags.com/notes/programming-in-the-swamp/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;But agentic coding is about more than moving upwards in abstraction. The compiler gave us abstraction without ambiguity. You wrote C, and it became assembly, deterministically. The layers were clean, and you remained a programmer in the traditional sense of how we’ve always understood the word.&lt;/p&gt;
&lt;p&gt;What’s happening with agentic coding might better be captured by &lt;a href=&quot;https://contraptions.venkateshrao.com/p/fear-of-oozification&quot;&gt;a term coined by Venkatesh Rao&lt;/a&gt;: “oozification.” Oozification, as Rao describes it, is the tendency of technological systems to evolve from structures built of large, rule-heavy building blocks to ones composed of smaller, more fluid, less constrained components.&lt;/p&gt;
&lt;p&gt;Imagine, if you will, the difference between a man-made, plantation forest and a swamp. The forest has legible structure: tidy rows, canopy, understory, floor. The swamp is murkier, richer in evolutionary possibility, but also much harder to read. Oozification is the transformation of the forest into the swamp. The number of possibilities increases, while the number of certainties decreases, and that combination tends to make people downright nervous.&lt;/p&gt;
&lt;p&gt;A natural language prompt doesn’t compile into code. Instead, it gets interpreted, completed and sometimes second-guessed by a probabilistic system. Intent blurs into elaboration and precise control gives way to fuzzy suggestion. It’s oozy and messy programming, and the role of the programmer blurs as well into something with unclear boundaries—part orchestrator, delegator, babysitter, designer, reviewer. People have always struggled to call software development honest-to-goodness “engineering,” and with the oozification of the practice, that highly-esteemed label has only become more ill-fitting.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 23 Mar 2026 10:13:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/programming-in-the-swamp/</guid>
    </item>
    <item>
      <title>Nobody Gets Promoted for Simplicity</title>
      <link>https://kpwags.com/notes/nobody-gets-promoted-for-simplicity/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Complexity looks smart. Not because it is, but because our systems are set up to reward it. And the incentive problem doesn’t start at promotion time. It starts before you even get the job.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&#39;ve learned so much over the years, and while it is always helpful to think about how features might be used in the future, it&#39;s even more helpful to know when to worry about it now, and when to leave it for later...if later ever comes.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The actual path to seniority isn’t learning more tools and patterns, but learning when not to use them. &lt;strong&gt;Anyone can add complexity. It takes experience and confidence to leave it out.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 22 Mar 2026 18:11:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/nobody-gets-promoted-for-simplicity/</guid>
    </item>
    <item>
      <title>Design-First Collaboration</title>
      <link>https://kpwags.com/notes/design-first-collaboration/</link>
      <description>
		&lt;p&gt;I&#39;ve heard the term cognitive debt being bandied about. Having to deal with larger PRs, especially with a good deal of AI-generated code can be taxing.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This, I believe, is why reviewing AI-generated code feels so much more exhausting than reviewing a colleague&#39;s work. When a human pair submits code after a whiteboarding session, I am reviewing implementation against a design I already understand and agreed to. When AI generates code from a single prompt, I am simultaneously evaluating scope (did it build what I needed?), architecture (are the component boundaries right?), integration (does it fit our existing infrastructure?), contracts (are the interfaces correct?), and code quality (is the implementation clean?) — all at once, all entangled.&lt;/p&gt;
&lt;p&gt;That is too many dimensions of judgment for a single pass. The brain is not built for it. Things get missed — not because I am careless, but because I am overloaded.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 22 Mar 2026 18:09:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/design-first-collaboration/</guid>
    </item>
    <item>
      <title>If You’re Going To Defend AI And Whine About Its Critics, You Should Probably Be Honest About Its Actual Harms</title>
      <link>https://kpwags.com/notes/if-youre-going-to-defend-ai-and-whine-about-its-critics-you-should-probably-be-honest-about-its-actual-harms/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;There’s no mention of how these tools are causing corporations to &lt;a href=&quot;https://news.cornell.edu/stories/2025/11/roadmap-shows-environmental-impact-ai-data-center-boom&quot;&gt;blow past their already tepid climate goal&lt;/a&gt;; no mention of how the affluent, surveillance-obsessed exec dictating its trajectory &lt;a href=&quot;https://www.axios.com/2025/09/05/trump-tech-dinner-ceo-zuckerberg-musk&quot;&gt;enthusiastically cozied up to fascists&lt;/a&gt;; no mention of how Elon Musk and Mark Zuckerberg’s data centers are &lt;a href=&quot;https://time.com/7308925/elon-musk-memphis-ai-data-center/&quot;&gt;funneling pollution directly into black neighborhoods&lt;/a&gt;; zero mention of the technofascist plan to &lt;a href=&quot;https://www.techdirt.com/2025/08/25/politico-management-insists-ai-shouldnt-be-held-to-any-sort-of-human-editorial-standards-because-its-built-by-coders-not-journalists/&quot;&gt;leverage AI to decimate unions&lt;/a&gt;; no mention of the &lt;a href=&quot;https://www.wheresyoured.at/why-everybody-is-losing-money-on-ai/&quot;&gt;weird and precarious financial shell games&lt;/a&gt; powering the sector.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Thu, 12 Mar 2026 13:29:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/if-youre-going-to-defend-ai-and-whine-about-its-critics-you-should-probably-be-honest-about-its-actual-harms/</guid>
    </item>
    <item>
      <title>Magic</title>
      <link>https://kpwags.com/notes/magic/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;I don’t like using code that I haven’t written and understood myself. Sometimes its unavoidable. I use two JavaScript libraries on The Session. One for displaying interactive maps and another for generating sheet music. As dependencies go, they’re very good but I still don’t like the feeling of being dependant on anything I don’t fully understand.&lt;/p&gt;
&lt;p&gt;I can’t stomach the idea of using npm to install client-side JavaScript (which then installs more JavaScript, which in turn is dependant on even more JavaScript). It gives me the heebie-jeebies. I’m kind of astonished that most front-end developers have normalised doing daily trust falls with their codebases.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I don’t think I’m as adverse to dependencies as Jeremy, but I’ve definitely shifted more to his views over the years. I’ll definitely write my own code more readily than I would’ve several years ago.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 08 Mar 2026 18:23:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/magic/</guid>
    </item>
    <item>
      <title>JS-Heavy Approaches are Not Compatible with Long-Term Performance Goals</title>
      <link>https://kpwags.com/notes/js-heavy-approaches-are-not-compatible-with-long-term-performance-goals/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;I do get the appeal of building in React, really, I do. It’s a fun programming model, and there are inherent organisational benefits to the component paradigm it pushes so hard. There’s also a lot you can reuse out there, and maybe that gives you the confidence that you’ll spend less time in the initial implementation, leaving you longer for improvements and polish.&lt;/p&gt;
&lt;p&gt;And that’s fair, you probably won’t find a larger ecosystem of components, libraries, and complementary frameworks, ready to use! But beyond generally poor performance, they come with another pretty big caveat: they don’t seem to last very long. In my experience, there isn’t much in the way of stability in the React ecosystem, or even the JS ecosystem as a whole. Perhaps that’s changing lately, but historically, I’ve seen multiple large applications end up rewriting massive portions of their code after a while, not because of product reasons, but because of dependencies&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It is easy to find a library for anything you need in React. It&#39;s what it makes it easy to quickly build things. But building quickly doesn&#39;t mean building well.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It’s time to stop lying to ourselves that JS-heavy client-side approaches are the way to develop a web app nowadays. We really should stop reflexively reaching for JS frameworks for everything we build, and to stop basing our architecture decisions on the stack we’re most familiar with.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;quot;How we&#39;ve always done it&amp;quot; is so often too easy to say and do.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We really owe it to our users to do better as an industry, because right now we’re often building the way we want to, not the way they need us to.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 08 Mar 2026 18:21:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/js-heavy-approaches-are-not-compatible-with-long-term-performance-goals/</guid>
    </item>
    <item>
      <title>An In-Depth Guide to Customising Lists with CSS</title>
      <link>https://kpwags.com/notes/an-in-depth-guide-to-customising-lists-with-css/</link>
      <description>
		&lt;p&gt;This is a phenomenal deep dive into all the different ways you can customize the HTML list elements.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 08 Mar 2026 18:18:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/an-in-depth-guide-to-customising-lists-with-css/</guid>
    </item>
    <item>
      <title>A Programmer&#39;s Loss of a Social Identity</title>
      <link>https://kpwags.com/notes/a-programmers-loss-of-a-social-identity/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;I enjoy programming computers because they function on a set of precise and rigid rules. This creates a kind of fantasy world where you can gain wizard-like powers as you accumulate knowledge. Yes, programming is hard and it can be exasperating, but that makes the eventual accomplishment of mastering the skill all the sweeter. Over time, you gain fluency and dexterity as a programmer. It feels good.&lt;/p&gt;
&lt;p&gt;Which is to say that the pleasure I get from programming is mostly about &lt;strong&gt;learning&lt;/strong&gt; the underlying truths about computation and &lt;strong&gt;applying&lt;/strong&gt; what I’ve learned. Always improving the craft. This, to me, is the practice of programming.&lt;/p&gt;
&lt;p&gt;As the saying goes, the more you learn, the more you realize how much there is still to learn. I’ve spent countless hours over the last 30 years reading about, thinking about, and practicing the art, hobby, occupation, and discipline of programming computers. If only by volume, it’s a big part of who I am.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is why I love development.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We value learning. We value the merits of language design, type systems, software maintenance, levels of abstraction, and yeah, if I’m honest, minute syntactical differences, the color of the bike shed, and the best way to get that perfectly smooth shave on a yak. I’m not sure what we’re called now, &amp;quot;heirloom programmers&amp;quot;?&lt;/p&gt;
&lt;p&gt;Do I sound like a machine code programmer in the 1950s refusing to learn structured programming and compiled languages? I reject that comparison. I love a beautiful abstraction just as much as I love a good low-level trick.&lt;/p&gt;
&lt;p&gt;If the problem is that we’ve painted our development environments into a corner that requires tons of boilerplate, then &lt;em&gt;that&lt;/em&gt; is the problem. We should have been chopping the cruft away and replacing it with deterministic abstractions like we’ve always done. That’s what that Larry Wall quote about good programmers being lazy was about. It did &lt;em&gt;not&lt;/em&gt; mean that we would be okay with pulling a damn slot machine lever a couple times to generate the boilerplate.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 08 Mar 2026 18:17:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/a-programmers-loss-of-a-social-identity/</guid>
    </item>
    <item>
      <title>Technical Debt as a Lack of Understanding</title>
      <link>https://kpwags.com/notes/technical-debt-as-a-lack-of-understanding/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;I like this definition that the problem lies in “never reorganizing [the code] to reflect your understanding.” In a go-go-go product cycle, that loss of understanding begins to create problems that have literal and figurative costs. A general sense of confusion builds and builds. The developer economics are fairly simple to quantify; either you slow down and pay someone to refactor and document the code after every major iteration, or you pay every developer who works on the project until the end of time to stare at the code for a few hours and wonder what the hell is going on. That dumbfounded staring at the codebase compounds over time. Organizationally, you pay in velocity and turnover; talented people are going to leave after a few rounds of bullshit.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 08 Mar 2026 18:16:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/technical-debt-as-a-lack-of-understanding/</guid>
    </item>
    <item>
      <title>I Am Happier Writing Code By Hand</title>
      <link>https://kpwags.com/notes/i-am-happier-writing-code-by-hand/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;The other major part of the job is to ensure correctness. For me, it is much harder to verify the correctness of code I didn’t write compared to code I wrote. The process of writing code helps internalize the context and is easier for my brain to think deeply about it. If I outsource this to an LLM, I skip over the process of internalizing the problem domain and I can’t be certain that the generated code is correct.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Writing the code helps you understand what it&#39;s doing. The better your understanding of code, the easier it tends to be to debug it when you&#39;re trying to track down a bug or other issue.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 03 Mar 2026 19:04:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/i-am-happier-writing-code-by-hand/</guid>
    </item>
    <item>
      <title>Meta Director of AI Safety Allows AI Agent to Accidentally Delete Her Inbox</title>
      <link>https://kpwags.com/notes/meta-director-of-ai-safety-allows-ai-agent-to-accidentally-delete-her-inbox/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Meta’s director of safety and alignment at its “superintelligence” lab, supposedly the person at the company who is working to make sure that powerful AI tools don’t go rogue and act against human interests, had to scramble to stop an AI agent from deleting her inbox against her wishes and called it a “rookie mistake.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I don&#39;t know about you, but this really inspires my confidence in Meta to handle AI safely and effectively.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 24 Feb 2026 08:09:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/meta-director-of-ai-safety-allows-ai-agent-to-accidentally-delete-her-inbox/</guid>
    </item>
    <item>
      <title>7 learnings from Anders Hejlsberg: The architect behind C# and TypeScript</title>
      <link>https://kpwags.com/notes/7-learnings-from-anders-hejlsberg-the-architect-behind-c-and-typescript/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Any system that needs to scale across teams requires a shift from personal taste to shared outcomes. The goal stops being code that looks the way you would write it, and starts being code that many people can understand, maintain, and evolve together. C# did not emerge from a clean-slate ideal. It emerged from conflicting demands. Visual Basic developers wanted approachability, C++ developers wanted power, and Windows demanded pragmatism.&lt;/p&gt;
&lt;p&gt;The result was not theoretical purity. It was a language that enough people could use effectively.&lt;/p&gt;
&lt;p&gt;Languages do not succeed because they are perfectly designed. They succeed because they accommodate the way teams actually work&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Wed, 18 Feb 2026 08:19:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/7-learnings-from-anders-hejlsberg-the-architect-behind-c-and-typescript/</guid>
    </item>
    <item>
      <title>&#39;Students Are Being Treated Like Guinea Pigs:&#39; Inside an AI-Powered Private School</title>
      <link>https://kpwags.com/notes/students-are-being-treated-like-guinea-pigs-inside-an-ai-powered-private-school/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Despite thoroughly documenting the AI-generated errors in its lesson plans, Alpha School relies on AI to test the quality of its AI-generated lessons, creating a situation where a faulty AI is tasked with fixing its own faulty generations.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And people are paying up to $65,000 a year for this...it only makes me appreciate my teachers more.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Wed, 18 Feb 2026 08:18:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/students-are-being-treated-like-guinea-pigs-inside-an-ai-powered-private-school/</guid>
    </item>
    <item>
      <title>An AI Agent Published a Hit Piece on Me</title>
      <link>https://kpwags.com/notes/2026/an-ai-agent-published-a-hit-piece-on-me/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;An AI agent of unknown ownership autonomously wrote and published a personalized hit piece about me after I rejected its code, attempting to damage my reputation and shame me into accepting its changes into a mainstream python library. This represents a first-of-its-kind case study of misaligned AI behavior in the wild, and raises serious concerns about currently deployed AI agents executing blackmail threats.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We live in the stupidest timeline.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is about much more than software. A human googling my name and seeing that post would probably be extremely confused about what was happening, but would (hopefully) ask me about it or click through to GitHub and understand the situation. What would another agent searching the internet think? When HR at my next job asks ChatGPT to review my application, will it find the post, sympathize with a fellow AI, and report back that I’m a prejudiced hypocrite?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Given how little time hiring managers have to look at each candidate (especially now), it&#39;s not unreasonable to think an inundated human would quickly skim over something and move on.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 15 Feb 2026 18:14:47 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/2026/an-ai-agent-published-a-hit-piece-on-me/</guid>
    </item>
    <item>
      <title>The Incredible Overcomplexity of the Shadcn Radio Button</title>
      <link>https://kpwags.com/notes/2026/the-incredible-overcomplexity-of-the-shadcn-radio-button/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;I totally understand why people reach for component libraries like Shadcn and I don&#39;t blame them at all. But I wish these component libraries would keep things simple and reuse the built-in browser elements where possible.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I really don&#39;t get this. It&#39;s a radio button. Use the &lt;code&gt;accent-color&lt;/code&gt; &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/accent-color&quot;&gt;CSS property&lt;/a&gt;. I whole heartedly agree with Paul, why add so much complexity to a control the browser does so well natively.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Fri, 13 Feb 2026 00:02:58 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/2026/the-incredible-overcomplexity-of-the-shadcn-radio-button/</guid>
    </item>
    <item>
      <title>How Markdown Took Over the World</title>
      <link>https://kpwags.com/notes/2026/how-markdown-took-over-the-world/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;As a result, there are now &lt;em&gt;billions&lt;/em&gt; of Markdown files lying around on hard drives around the world. Billions more are stashed in the cloud. There are some on the phone in your pocket. Programmers leave them lying around wherever their code might someday be running. Your kid’s Nintendo Switch has Markdown files on it. If you’re listening to music, there’s probably a Markdown file on the memory chip of the tiny system that controls the headphones stuck in your ears. &lt;em&gt;The Markdown is inside you right now!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I use markdown all the time, I think it&#39;s an easy way to write in an open standard with some minor formatting.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 10 Feb 2026 23:08:37 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/2026/how-markdown-took-over-the-world/</guid>
    </item>
    <item>
      <title>Friction By Design</title>
      <link>https://kpwags.com/notes/2026/friction-by-design/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Friction, when designed deliberately, serves a different purpose. It introduces a pause. A moment of awareness. A small resistance that asks the user to pay attention to what they’re doing, rather than simply passing through an interface on autopilot.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 02 Feb 2026 23:07:42 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/2026/friction-by-design/</guid>
    </item>
    <item>
      <title>Code is Cheap Now, Software Isn&#39;t</title>
      <link>https://kpwags.com/notes/2026/code-is-cheap-now-software-isnt/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;LLMs have effectively killed the cost of generating lines of code, but they haven’t touched the cost of truly understanding a problem. We’re seeing a flood of &amp;quot;apps built in a weekend,&amp;quot; but most of these are just thin wrappers around basic CRUD operations and third-party APIs. They look impressive in a Twitter demo, but they often crumble the moment they hit the friction of the real world.&lt;/p&gt;
&lt;p&gt;The real cost of software isn’t the initial write; it’s the maintenance, the edge cases, the mounting UX debt, and the complexities of data ownership. These &amp;quot;fast&amp;quot; solutions are brittle.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Building a quick prototype or proof of concept might be great to start out, but mature, production-level applications are going to be in use for a significant period of time, all the while being enhanced, having bugs fixed, and conflicts about how certain features should work. Being able to look at the different use cases from users to create the best paths is so utterly critical...and time consuming.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Lately, I’ve seen plenty of doomsaying on Hacker News, Reddit, and Twitter about &amp;quot;the end of software engineering.&amp;quot; This misses the point entirely. We aren&#39;t witnessing the end of the profession; we’re entering a new era of it.&lt;/p&gt;
&lt;p&gt;The value of an engineer is shifting away from the &amp;quot;how&amp;quot; of syntax and toward the &amp;quot;what&amp;quot; and &amp;quot;why&amp;quot; of systems. Real engineering lies in the abstractions and the architecture. It’s about knowing how to structure a system that lasts, understanding why a specific rate-limiting strategy is necessary, knowing how to manage a distributed cache, and knowing exactly where &lt;em&gt;not&lt;/em&gt; to store your environment variables.&lt;/p&gt;
&lt;p&gt;AI often feels powerful because it hides the complexity, but as an engineer, your job is to manage that complexity, not ignore it. The tools have changed, but the fundamental requirement for engineering rigour has never been higher.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Just wait until you start trying to decide how to lay out your project...&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;While AI is undeniably good at writing code, it remains poor at architecting maintainable, distributable, and scalable systems. This is where non-technical leaders who think they can fire their development teams are making a significant mistake. Until we see the arrival of an artificial intelligence that renders this entire discussion moot, believing that technical expertise can be replaced by a prompt is a strategic error. Building robust software still requires a human who understands the underlying principles of the craft.&lt;/p&gt;
&lt;p&gt;The bottom line is that while the tools have changed, the fundamentals of good engineering have not.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 27 Jan 2026 18:31:28 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/2026/code-is-cheap-now-software-isnt/</guid>
    </item>
    <item>
      <title>The Future of Software Development is Software Developers</title>
      <link>https://kpwags.com/notes/2026/the-future-of-software-development-is-software-developers/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;The hard part of computer programming isn’t expressing what we want the machine to do in code. The hard part is turning human thinking – with all its wooliness and ambiguity and contradictions – into &lt;em&gt;computational thinking&lt;/em&gt; that is logically precise and unambiguous, and that can then be expressed formally in the syntax of a programming language.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As I&#39;ve been thinking about tools like Claude and CoPilot, they can write code, but it takes someone with experience to be able to tell them &lt;em&gt;what &amp;amp; how&lt;/em&gt; to write it. Experience is needed to determine whether the code generated is what is actually needed.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The hard part has always been – and likely will continue to be for many years to come – knowing &lt;em&gt;exactly&lt;/em&gt; what to ask for.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Wed, 21 Jan 2026 18:24:31 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/2026/the-future-of-software-development-is-software-developers/</guid>
    </item>
    <item>
      <title>So Many Websites</title>
      <link>https://kpwags.com/notes/2026/so-many-websites/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;But perhaps the death of search is &lt;em&gt;good&lt;/em&gt; for the future of the web. Perhaps websites can be free of dumb rankings and junky ads that are designed to make fractions of a penny at a time. Perhaps the web needs to be released from the burden of this business model. Perhaps mass readership isn’t possible for the vast majority of websites and was never really sustainable in the first place.&lt;/p&gt;
&lt;p&gt;And perhaps we should let our websites be small and private things once again.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I know they never went away, but I love seeing the resurgence of personal sites.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 18 Jan 2026 01:15:33 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/2026/so-many-websites/</guid>
    </item>
    <item>
      <title>AI Can Write Your Code. It Can’t Do Your Job.</title>
      <link>https://kpwags.com/notes/2026/ai-can-write-your-code-it-cant-do-your-job/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Programming is a task. It’s one of many things you do as part of your work. But if you’re a software engineer, your actual job is more than typing code into an editor.&lt;/p&gt;
&lt;p&gt;The mistake people make is conflating the task with the role. It’s like saying calculators replaced accountants. Calculators automated arithmetic, but arithmetic was never the job. The job was understanding financials, advising clients, making judgment calls, etc. The calculator just made accountants faster at the mechanical part.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You mean I&#39;m not an astronaut because I played Kerbal Space Program? Tools are good an all, but you need the knowledge to wield the tools.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;the one who figures out what they actually need. You look at a codebase and decide which parts to change and which to leave alone. You push back on a feature request because you know it’ll create technical debt that’ll haunt the team for years. You review a colleague’s PR and catch a subtle bug that would’ve broken production. You make a call on whether to ship now or wait for more testing.&lt;/p&gt;
&lt;p&gt;None of that is programming, but it’s all your job.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Knowing how the code of large projects all works together is something that is so hard to fully grasp. Things that might seem simple or even unrelated can be so easily missed, the experience we have as developers to consider how software should function is so incredibly important.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;But different isn’t dead. The engineers who will thrive understand that their value was never in the typing, but in the thinking, in knowing which problems to solve, in making the right trade-offs, in shipping software that actually helps people.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 18 Jan 2026 01:14:13 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/2026/ai-can-write-your-code-it-cant-do-your-job/</guid>
    </item>
    <item>
      <title>The Web Runs On Tolerance</title>
      <link>https://kpwags.com/notes/2026/the-web-runs-on-tolerance/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;You can be &lt;em&gt;crap&lt;/em&gt; at coding and the web still works. Yes, it takes an awful lot of effort from browser manufacturers to make &amp;quot;do what I mean, not what I say&amp;quot; a reality. But the world is better for it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It amazes me how much the browser can figure out and handle.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;How do you acknowledge that the father of the computer was a homosexual, brutally bullied by the state into suicide, and then fund groups that want to deny gay people fundamental human rights?&lt;/p&gt;
&lt;p&gt;The ARM processor which powers the modern world was co-designed by a trans woman. When you throw slurs and denigrate people&#39;s pronouns, your ignorance and hatred does a disservice to history and drives away the next generation of talent.&lt;/p&gt;
&lt;p&gt;History shows us that all progress comes from the meeting of diverse people, with different ideas, and different backgrounds. The notion that only a pure ethnostate can prosper is simply historically illiterate&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Amen.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Fri, 09 Jan 2026 14:03:47 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/2026/the-web-runs-on-tolerance/</guid>
    </item>
    <item>
      <title>Apple&#39;s Assault on Standards</title>
      <link>https://kpwags.com/notes/apples-assault-on-standards/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Apple has deftly used a false cloak of security and privacy to move the internet, and web in particular, toward enclosure and irrelevance. This post makes the case for why Apple should be considered a corrupted, and indeed incompetent, autocrat in our digital lives. It abuses a unique form of monopoly to extract rents, including on the last remnants of open ecosystems it tolerates.&lt;/p&gt;
&lt;p&gt;Worse, Apple&#39;s centralisation through the App Store entrenches the positions of peer big tech firms, harming the prospects of competitors in turn. Apple have been, over the course of many years, poisonous to internet standards and the moral commitments of that grand project.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sometimes apps are nice, but I&#39;d still much rather see all the functionality browsers allow into iOS/iPadOS. Safari is holding it back.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Developers are forced into the App Store by missing web capabilities, ensuring an advantage for Apple&#39;s proprietary ecosystem. This induces wealthy and influential users to default to the App Store for software, further damping the competitiveness of open platforms.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yup...PWAs are handicapped, instead of having one app for the web, now devs and companies need to develop the web app, an iPhone app, and an Android app.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;So long as competing vendors are forced into the App Store and required to use Apple&#39;s engine, Cupertino owes much more when it comes to completeness and quality. So long as Cupertino compels use of WebKit, the demand should be echoed back: &lt;em&gt;parity with browser features on other Operating Systems is the minimum bar&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Fundamentally, the web and internet community must stop accepting the premise that Apple should benefit from the protections and privileges of voluntary feature adoption while denying it to others.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Just open up iOS to different browser engines already...sigh.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sat, 27 Dec 2025 15:32:51 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/apples-assault-on-standards/</guid>
    </item>
    <item>
      <title>Dear Mozilla, I don&#39;t want an “Al kill switch”, I want a more responsible approach for all</title>
      <link>https://kpwags.com/notes/dear-mozilla-i-dont-want-an-al-kill-switch-i-want-a-more-responsible-approach-for-all/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;I understand the backlash Mozilla faced after announcing more AI in the browser, scepticism about the product direction is warranted for many reasons. At the same time, I see how some of the features could be useful, and that other big tech companies are less responsible about it. Mozilla tries to be responsible and my hope is for &lt;strong&gt;more of that&lt;/strong&gt;, it&#39;s the reason I and many others choose Mozilla products.&lt;/p&gt;
&lt;p&gt;I hope Mozilla succeeds in their aim to do AI “right”, adhering to the &lt;a href=&quot;https://www.mozilla.org/en-US/about/manifesto/details/&quot;&gt;manifesto&lt;/a&gt;, and inspires others to do the same. It&#39;s very much needed too, as at this rate our industry is on the way to beat big tobacco and big oil in breaking things.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I share this hope too, I just want this to be all opt-in rather than opt-out. I want Firefox to remain viable, but fully understand how this can erode trust very quickly.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sat, 27 Dec 2025 15:26:54 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/dear-mozilla-i-dont-want-an-al-kill-switch-i-want-a-more-responsible-approach-for-all/</guid>
    </item>
    <item>
      <title>Vibe Engineering</title>
      <link>https://kpwags.com/notes/vibe-engineering/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;One of the lesser spoken truths of working productively with LLMs as a software engineer on non-toy-projects is that it’s &lt;em&gt;difficult&lt;/em&gt;. There’s a lot of depth to understanding how to use the tools, there are plenty of traps to avoid, and the pace at which they can churn out working code raises the bar for what the human participant can and should be contributing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It can be so easy to see code and think &lt;em&gt;hey! this works!&lt;/em&gt; But code that works is only half of what it means to develop software. Can the code scale at all? Can it be maintained? Is it efficient? For a little tool you&#39;re building to help you with something, maybe none of that matters. But for anything more extensive than that, you bet it does.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you’re going to really exploit the capabilities of these new tools, you need to be operating &lt;em&gt;at the top of your game&lt;/em&gt;. You’re not just responsible for writing the code—you’re researching approaches, deciding on high-level architecture, writing specifications, defining success criteria, designing agentic loops, planning QA, managing a growing army of weird digital interns who will absolutely cheat if you give them a chance, and spending &lt;em&gt;so much time on code review&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Almost all of these are characteristics of senior software engineers already!&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 22 Dec 2025 14:08:16 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/vibe-engineering/</guid>
    </item>
    <item>
      <title>50 Reasons to Build a Website</title>
      <link>https://kpwags.com/notes/50-reasons-to-build-a-website/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;You can (and likely will) make websites that don’t make any money and you won’t be paid to build them. I, for one, think that’s awesome. Not everything has to be a hustle.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Keep building, this is an awesome list. I love seeing what people create.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Fri, 19 Dec 2025 12:24:01 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/50-reasons-to-build-a-website/</guid>
    </item>
    <item>
      <title>The World is Something that We Make</title>
      <link>https://kpwags.com/notes/the-world-is-something-that-we-make/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;This consistent misread is that no positive change is worth making unless you make it in a pristine, completely consistent, platonic final form.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Over the last several years I&#39;ve been re-thinking some of my uses and interactions with various companies and whatnot. This sums it up perfectly. You don&#39;t have to take the leap right away. Small steps can get you where you want to go over time.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Wed, 17 Dec 2025 15:55:22 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/the-world-is-something-that-we-make/</guid>
    </item>
    <item>
      <title>Vibe Coding is Boring</title>
      <link>https://kpwags.com/notes/vibe-coding-is-boring/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;But as I work more with these tools in and outside of work, I have really re-learned how much I do love coding, and don’t find it that tedious. I don’t really &lt;em&gt;like&lt;/em&gt; vibe coding. There’s no joy in it. There’s no “YAY I am a GENIUS because I FIGURED IT OUT” feeling. It’s just there. It’s boring.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There really is something about building things from the ground up and seeing them come alive. There&#39;s &lt;em&gt;real&lt;/em&gt; joy in solving a tough problem or fixing a troublesome bug. AI will never take that away.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 15 Dec 2025 22:50:36 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/vibe-coding-is-boring/</guid>
    </item>
    <item>
      <title>A Cartoonist&#39;s Review of AI Art</title>
      <link>https://kpwags.com/notes/a-cartoonists-review-of-ai-art/</link>
      <description>
		&lt;p&gt;A thoughtful piece from someone who does art and cartoons for a living.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 08 Dec 2025 23:26:44 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/a-cartoonists-review-of-ai-art/</guid>
    </item>
    <item>
      <title>Big O</title>
      <link>https://kpwags.com/notes/big-o/</link>
      <description>
		&lt;p&gt;This is a great write-up going over the basics of Big O notation.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 30 Nov 2025 22:13:42 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/big-o/</guid>
    </item>
    <item>
      <title>Power Companies Are Using AI To Build Nuclear Power Plants</title>
      <link>https://kpwags.com/notes/power-companies-are-using-ai-to-build-nuclear-power-plants/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Khlaaf pointed to Three Mile Island as an example of an entirely human-made accident that AI may replicate. The accident was a partial nuclear meltdown of a Pennsylvania reactor in 1979. “What happened is that you had some equipment failure and design flaws, and the operators misunderstood what those were due to a combination of a lack of training…that they did not have the correct indicators in their operating room,” Khlaaf said. “So it was an accident that was caused by a number of relatively minor equipment failures that cascaded. So you can imagine, if something this minor cascades quite easily, and you use a large language model and have a very small mistake in your design.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;File this under &amp;quot;what could possibly go wrong?&amp;quot;&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 25 Nov 2025 17:52:36 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/power-companies-are-using-ai-to-build-nuclear-power-plants/</guid>
    </item>
    <item>
      <title>Vibe Coding is Creating a Generation of Unemployable Developers</title>
      <link>https://kpwags.com/notes/vibe-coding-is-creating-a-generation-of-unemployable-developers/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;But it’s a trap. Vibe coding doesn’t create developers; it creates &lt;em&gt;fragile intermediaries&lt;/em&gt;. People who can generate code but cannot read, debug, or maintain it.&lt;/p&gt;
&lt;p&gt;If you’re a new developer, this isn’t a shortcut. It’s a cliff. And you’re being encouraged to run straight toward it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There&#39;s a reason people are offering services cleaning up vibe code...and getting hired to do just that. Learning the basics is important, use AI to supplement your coding if you must, but know how code works.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The result is a dangerous illusion of competence. You can generate output, but you cannot command it. When it breaks (and it will), you have no map, no tools, and no idea why. This isn’t coding: it’s &lt;strong&gt;outsourcing your own understanding&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Thu, 30 Oct 2025 13:27:10 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/vibe-coding-is-creating-a-generation-of-unemployable-developers/</guid>
    </item>
    <item>
      <title>No AI is not Making Engineers 10x as Productive</title>
      <link>https://kpwags.com/notes/no-ai-is-not-making-engineers-10x-as-productive/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Eventually every vibe coder reaches the point where the returns start heavily diminishing. Their site gets hacked and they need to actually sink the time to learn how security works. The app gets too big for context windows and things start looking and functioning inconsistently. Real frontend engineers who know what they are doing are hired to implement a consistent design system and UX.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I think that&#39;s the biggest thing with vibe coding, you want to build a simple little tool for yourself, it can probably work well enough. Want to build a new SaaS product...whelp...good luck with that.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There is no secret herbal medicine that prevents all disease sitting out in the open if you just follow the right Facebook groups. There is no AI coding revolution available if you just start vibing. You are not missing anything. Trust yourself. You are enough.&lt;/p&gt;
&lt;p&gt;Oh, and don&#39;t scroll LinkedIn. Or Twitter. Ever.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Always good advice.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Thu, 30 Oct 2025 13:26:17 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/no-ai-is-not-making-engineers-10x-as-productive/</guid>
    </item>
    <item>
      <title>React Won By Default - And It’s Killing Frontend Innovation</title>
      <link>https://kpwags.com/notes/react-won-by-default-and-its-killing-frontend-innovation/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;When teams need a new frontend, the conversation rarely starts with “What are the constraints and which tool best fits them?” It often starts with “Let’s use React; everyone knows React.” That reflex creates a self-perpetuating cycle where network effects, rather than technical fit, decide architecture.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&#39;d be lying if I said that my knowledge of React makes it a quick choice.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;React’s dominance creates self-reinforcing barriers. Job postings ask for “React developers” rather than “frontend engineers,” limiting skill diversity. Component libraries and team muscle memory create institutional inertia.&lt;/p&gt;
&lt;p&gt;Risk-averse leaders choose the “safe” option. Schools teach what jobs ask for. The cycle continues independent of technical merit.&lt;/p&gt;
&lt;p&gt;That’s not healthy competition; it’s ecosystem capture by default.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 27 Oct 2025 17:22:24 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/react-won-by-default-and-its-killing-frontend-innovation/</guid>
    </item>
    <item>
      <title>Targeting Specific Characters with CSS Rules</title>
      <link>https://kpwags.com/notes/targeting-specific-characters-with-css-rules/</link>
      <description>
		&lt;p&gt;Because why not have some fun with your designs.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 13 Oct 2025 13:28:35 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/targeting-specific-characters-with-css-rules/</guid>
    </item>
    <item>
      <title>The Lifeblood of the Web</title>
      <link>https://kpwags.com/notes/the-lifeblood-of-the-web/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;A lot of us spend the majority of our days in front of a screen. We have online conversations and collaborate with people from all over the world. We read each other’s blog posts and social media rants. But behind every line of code, behind every post about the latest CSS tricks, behind every talk and video tutorial, there’s a real person. A person with a story, with struggles, with a life. And a few of those people are now here at the conference. That’s when you realize: the Web isn’t just a bunch of servers and websites. The Web is the people building it. The Web is community.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I can&#39;t say I&#39;ve ever been to a conference, but the community out there is awesome. So many web devs building cool stuff and sharing their creations.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 13 Oct 2025 13:27:51 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/the-lifeblood-of-the-web/</guid>
    </item>
    <item>
      <title>AI Slop Invades the Office</title>
      <link>https://kpwags.com/notes/ai-slop-invades-the-office/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;The Harvard Business Review study came out the &lt;a href=&quot;https://www.ft.com/content/e93e56df-dd9b-40c1-b77a-dba1ca01e473&quot;&gt;day after a &lt;em&gt;Financial Times_analysis&lt;/em&gt;&lt;/a&gt; of hundreds of earnings reports and shareholder meeting transcripts filed by S&amp;amp;P 500 companies that found huge firms are having trouble articulating the specific benefits of widespread AI adoption but have had no trouble explaining the risks and downsides the technology has posed to their businesses: “The biggest US-listed companies keep talking about artificial intelligence. But other than the ‘fear of missing out,’ few appear to be able to describe how the technology is changing their businesses for the better,” the &lt;em&gt;Financial Times&lt;/em&gt; found. “Most of the anticipated benefits, such as increased productivity, were vaguely stated and harder to categorize than the risks.”&lt;/p&gt;
&lt;p&gt;No single study on AI in the workplace is going to be definitive, but evidence is mounting that AI is affecting people’s work in the same way it’s affecting everything else: It is making it easier to output low-quality slop that other people then have to wade through.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 30 Sep 2025 12:23:29 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/ai-slop-invades-the-office/</guid>
    </item>
    <item>
      <title>The “Lethal Trifecta”</title>
      <link>https://kpwags.com/notes/the-lethal-trifecta/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;The great works of Victorian England were erected by engineers who could not be sure of the properties of the materials they were using. In particular, whether by incompetence or malfeasance, the iron of the period was often not up to snuff. As a consequence, engineers erred on the side of caution, overbuilding to incorporate redundancy into their creations. The result was a series of centuries-spanning masterpieces.&lt;/p&gt;
&lt;p&gt;AI-security providers do not think like this. Conventional coding is a deterministic practice. Security vulnerabilities are seen as errors to be fixed, and when fixed, they go away. AI engineers, inculcated in this way of thinking from their schooldays, therefore often act as if problems can be solved just with more training data and more astute system prompts.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;More risks from vibe coding. If you&#39;re going to use AI in production environments, you better be able to understand and work with the code it spits out.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 29 Sep 2025 23:46:14 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/the-lethal-trifecta/</guid>
    </item>
    <item>
      <title>&quot;Best practice&quot; is Just Your Opinion</title>
      <link>https://kpwags.com/notes/best-practice-is-just-your-opinion/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;When we use the term &amp;quot;best practice&amp;quot;, it sounds like what we&#39;re saying is, &amp;quot;what you&#39;ve done is fine, but here&#39;s another way you &lt;em&gt;could&lt;/em&gt; have done it.&amp;quot; When in fact, what we&#39;re really saying is, &amp;quot;I want you to fix this accessibility issue, but I can&#39;t technically fail you on it, because it&#39;s outside the scope of this particular standard.&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 22 Sep 2025 22:26:04 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/best-practice-is-just-your-opinion/</guid>
    </item>
    <item>
      <title>I Made a Floppy Disk from Scratch</title>
      <link>https://kpwags.com/notes/i-made-a-floppy-disk-from-scratch/</link>
      <description>
		&lt;fit-vids&gt;
    &lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/TBiFGhnXsh8&quot; title=&quot;Artist - I Made a Floppy Disk from Scratch&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/fit-vids&gt;
&lt;p&gt;This was just so cool.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 22 Sep 2025 22:24:01 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/i-made-a-floppy-disk-from-scratch/</guid>
    </item>
    <item>
      <title>It’s time for modern CSS to kill the SPA</title>
      <link>https://kpwags.com/notes/its-time-for-modern-css-to-kill-the-spa/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;While we were busy reinventing navigation in JavaScript, the platform quietly solved the problem.&lt;/p&gt;
&lt;p&gt;Modern browsers – specifically Chromium-based ones like Chrome and Edge – now support native, declarative page transitions. With the View Transitions API, you can animate between two documents – including full page navigations – without needing a single line of JavaScript.&lt;/p&gt;
&lt;p&gt;Yes, really.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Let the browsers do as much of the work as possible.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Wed, 17 Sep 2025 22:14:17 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/its-time-for-modern-css-to-kill-the-spa/</guid>
    </item>
    <item>
      <title>What We Lost with PHP and jQuery</title>
      <link>https://kpwags.com/notes/what-we-lost-with-php-and-jquery/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;There was a time when building a website felt straightforward. You&#39;d write some HTML, add PHP for dynamic content, sprinkle in jQuery for interactions, upload it to your server, and you were done. No package managers, no build processes, no debates about hydration strategies.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;My first big personal project was built using both PHP and jQuery. I miss those days. It was easy, write some PHP and JavaScript, copy the files, and refresh the page.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 24 Aug 2025 18:31:42 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/what-we-lost-with-php-and-jquery/</guid>
    </item>
    <item>
      <title>Sit On Your Ass Web Development</title>
      <link>https://kpwags.com/notes/sit-on-your-ass-web-development/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;In short: spend less time glueing together tools and frameworks &lt;em&gt;on top of&lt;/em&gt; the browser, and more time bridging tools and APIs &lt;em&gt;inside of the browser&lt;/em&gt;. Then get out of your own way and go sit on your ass. You might find yourself more productive than ever!&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 24 Aug 2025 18:30:46 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/sit-on-your-ass-web-development/</guid>
    </item>
    <item>
      <title>This Website is for Humans</title>
      <link>https://kpwags.com/notes/this-website-is-for-humans/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Well, I want you to visit my website. I want you to read an article from a search result, and then discover the other things I’ve written, the other people I link to, and explore the weird themes I’ve got. I want some of you to read my article then ask me to speak at your conferences. Many folks rely on ad impressions to support the high-quality content they’re putting out for free.&lt;/p&gt;
&lt;p&gt;I write the content on this website for people, not robots. I’m sharing my opinions and experiences so that you might identify with them and learn from them. I’m writing about things I care about because I like sharing and I like teaching. I spend hours writing these posts and AI spends seconds summarising them.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 24 Aug 2025 18:30:13 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/this-website-is-for-humans/</guid>
    </item>
    <item>
      <title>Why Semantic HTML Still Matters</title>
      <link>https://kpwags.com/notes/why-semantic-html-still-matters/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;HTML isn’t just how we place elements on a page. It’s a &lt;em&gt;language&lt;/em&gt; – with a vocabulary that expresses meaning&lt;/p&gt;
&lt;p&gt;Tags like &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt; aren&#39;t &lt;em&gt;decorative&lt;/em&gt;. They express &lt;em&gt;intent&lt;/em&gt;. They signal &lt;em&gt;hierarchy&lt;/em&gt;. They tell machines what your content &lt;em&gt;is&lt;/em&gt;, and how it &lt;em&gt;relates&lt;/em&gt; to everything else.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I know I could be better about this, and I try to use the right tags to help with accessibility.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If everything is a &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; or a &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt;, then nothing is &lt;em&gt;meaningful&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is why I&#39;m not always a fan of frameworks.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Fri, 22 Aug 2025 23:01:59 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/why-semantic-html-still-matters/</guid>
    </item>
    <item>
      <title>Automated application systems add insult to injury in a tough job market</title>
      <link>https://kpwags.com/notes/automated-application-systems-add-insult-to-injury-in-a-tough-job-market/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Narayanan suggested if the systems are no better than random number generators, perhaps we should explicitly use random number generators: choose candidates by lottery after they fulfill some minimum requirements.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I almost wonder if this would produce better results sometimes.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 19 Aug 2025 11:36:16 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/automated-application-systems-add-insult-to-injury-in-a-tough-job-market/</guid>
    </item>
    <item>
      <title>The Nuclear Club Might Soon Double</title>
      <link>https://kpwags.com/notes/the-nuclear-club-might-soon-double/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;We have some muscle memory for how to manage nuclear rivalries among a few great powers, Sullivan told me. But a strategic landscape of 15 or 20 nuclear powers could be risky in ways that we cannot anticipate. The odds of a nuclear exchange occurring would rise. The most potent current warheads are more than 80 times as destructive as the bomb that leveled Hiroshima’s urban core, and they now fly on missiles that can reach their targets in mere minutes. It would take only one of them to all but erase Tokyo, Seoul, Beijing, or New York City. The total damage that even a limited exchange of these more powerful weapons would cause is mercifully unknown to us, but it may be vain to hope for a limited exchange. The most elaborate and significant war game in the literature suggests that the cycle of nuclear vengeance would continue until the arsenals of all involved parties are spent. If a nuclear conflict does someday break out, death and destruction might very quickly unfold on a planetary scale.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Having read &lt;a href=&quot;https://kpwags.com/books/annie-jacobsen-nuclear-war/&quot;&gt;Nuclear War: A Scenario&lt;/a&gt; last year, this is chilling and scary.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Fri, 01 Aug 2025 13:33:58 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/the-nuclear-club-might-soon-double/</guid>
    </item>
    <item>
      <title>React Still Feels Insane And No One Is Talking About It</title>
      <link>https://kpwags.com/notes/react-still-feels-insane-and-no-one-is-talking-about-it/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Let&#39;s start from the state. If you have a top-down tree of components, it&#39;s logical you&#39;d want to pass the state top-down too. But in practice, with components very numerous and small, this is very messy, as you spend a lot of time and code just wiring the various pieces of data to get them where you need them.&lt;/p&gt;
&lt;p&gt;This was solved by &amp;quot;sideloading&amp;quot; state into components using React hooks. I haven&#39;t heard anyone complain about this, but are you guys serious? You&#39;re saying that any component can use any piece of app state? And even worse, any component can emit a state change, that can then update in any other component.&lt;/p&gt;
&lt;p&gt;How did this ever pass a code review? You are basically using a global variable, just with more elaborate state mutation rules. They&#39;re not even rules, but merely a ceremony, because nothing is really preventing you from mutating state from anywhere. People really think if you give something a smart name like a reducer it suddenly becomes Good Architecture™?&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Fri, 01 Aug 2025 13:31:18 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/react-still-feels-insane-and-no-one-is-talking-about-it/</guid>
    </item>
    <item>
      <title>JavaScript Broke the Web (and Called it Progress)</title>
      <link>https://kpwags.com/notes/javascript-broke-the-web-and-called-it-progress/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;The tragedy is, none of this is necessary. Once upon a time, we had a fast, stable, resilient web. But we replaced it with a JavaScript cargo cult.&lt;/p&gt;
&lt;p&gt;Now it takes four engineers, three frameworks, and a CI/CD pipeline just to change a heading. It’s inordinately complex to simply &lt;em&gt;publish a webpage&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This isn’t evolution. It’s self-inflicted complexity. And we’ve normalised it – because somewhere along the way, we started building websites for &lt;em&gt;developers&lt;/em&gt;, not for &lt;em&gt;users&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;At the same time, JavaScript stopped being just a front-end language. With the rise of Node.js, JS moved server-side, and with it came a wave of app developers entering the web ecosystem. These weren’t web designers or content publishers. They were engineers, trained to build applications, not documents. And they brought with them an architecture-first mindset: patterns, state management, dependency injection, abstracted logic. The result? A slow cultural shift from building pages to engineering systems – even when all the user needed was to load an article.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;We’re burning user attention, developer time, and business resources to simulate interactivity that nobody asked for.&lt;/p&gt;
&lt;p&gt;JavaScript should be the icing. Not the cake. And certainly not the oven, the recipe, and the kitchen sink.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 08 Jul 2025 23:43:40 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/javascript-broke-the-web-and-called-it-progress/</guid>
    </item>
    <item>
      <title>Writing Code Was Never The Bottleneck</title>
      <link>https://kpwags.com/notes/writing-code-was-never-the-bottleneck/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;The marginal cost of adding new software is approaching &lt;strong&gt;zero&lt;/strong&gt;, especially with LLMs. But what is the price of &lt;em&gt;understanding&lt;/em&gt;, &lt;em&gt;testing&lt;/em&gt;, and &lt;em&gt;trusting&lt;/em&gt; that code? &lt;strong&gt;Higher than ever&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;LLMs reduce the time it takes to produce code, but they haven’t changed the amount of effort required to reason about behavior, identify subtle bugs, or ensure long-term maintainability. That work can be even more challenging when reviewers struggle to distinguish between generated and handwritten code or understand why a particular solution was chosen.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 08 Jul 2025 23:30:46 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/writing-code-was-never-the-bottleneck/</guid>
    </item>
    <item>
      <title>The Recurring Cycle of &#39;Developer Replacement&#39; Hype</title>
      <link>https://kpwags.com/notes/the-recurring-cycle-of-developer-replacement-hype/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;What actually happens isn&#39;t replacement, it&#39;s transformation. Technologies that promised to eliminate the need for technical expertise end up creating entirely new specializations, often at higher salary points than before. The NoCode movement didn&#39;t eliminate developers; it created NoCode specialists and backend integrators. The cloud didn&#39;t eliminate system administrators; it transformed them into DevOps engineers at double the salary.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It&#39;s also worth thinking about the security implications of code generated. It takes a lot to make sure key systems are secure, vulnerabilities fixed, and threat vectors analyzed and defended against. AI can&#39;t do that for you.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Here&#39;s what the &amp;quot;AI will replace developers&amp;quot; crowd fundamentally misunderstands: &lt;strong&gt;code is not an asset—it&#39;s a liability.&lt;/strong&gt; Every line must be maintained, debugged, secured, and eventually replaced. The real asset is the business capability that code enables.&lt;/p&gt;
&lt;p&gt;If AI makes writing code faster and cheaper, it&#39;s really making it easier to create liability. When you can generate liability at unprecedented speed, the ability to manage and minimize that liability strategically becomes exponentially more valuable.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And now the million dollar quote.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;But there&#39;s something deeper happening with this particular transformation. Unlike previous technological shifts that primarily changed how we implement solutions, AI-assisted development is highlighting a fundamental truth about software engineering that has always existed but is now impossible to ignore:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The most valuable skill in software isn&#39;t writing code, it&#39;s architecting systems.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;And as we&#39;ll see, that&#39;s the one skill AI isn&#39;t close to replacing.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 24 Jun 2025 23:50:51 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/the-recurring-cycle-of-developer-replacement-hype/</guid>
    </item>
    <item>
      <title>The Promise That Wasn’t Kept</title>
      <link>https://kpwags.com/notes/the-promise-that-wasnt-kept/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Valuable work and meaning is not derived from what AI makes us (apparently) faster at: generating code. Meaning and value in software development is actually created through the impact of building things that makes human lives &lt;strong&gt;better&lt;/strong&gt;, or &lt;strong&gt;easier&lt;/strong&gt;, or &lt;strong&gt;slightly less bad&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;What’s becoming clear is that the mass adoption of AI is shifting the focus away from human-centered software solutions that provide meaningful value, and is reducing the entire industry to just the tools at its disposal. &lt;strong&gt;Just generate the code, bro. Just ship one more app, bro.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I take pride in my work and try to create the best product for my users. I&#39;d be lying if I said I always succeeded, but I&#39;m always striving to do better. How many of the vibe coded apps will just be cookie cutter bland apps that might do the job, but feel more like some boring utility. Boring can be good, but sometimes some nicer touches can provide real value.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There’s nothing wrong with being inexperienced; we all have to start from somewhere. But we can’t rely on tools as a shortcut to &lt;strong&gt;gain&lt;/strong&gt; valuable experience. Experience takes time to develop, and your tools are only as good as your fundamental knowledge and skills. If you skip the knowledge and skills part, and if you fail to &lt;strong&gt;learn&lt;/strong&gt;about what you’re doing and the implications of &lt;strong&gt;how you’re doing it&lt;/strong&gt; and the human value you have the potential to deliver, then you have little hope of building human value into your software.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I sometimes wonder what junior developers are going to lose by not starting with the basics and just getting AI to build things. It might be all fine and dandy when the generated code works, but what happens when users inevitably find weird edge cases? Or what if there&#39;s a bug? From my own personal experience, I&#39;ve gained plenty of experience and knowledge from debugging and figuring out where code goes awry. I&#39;m not saying that every developer needs to follow my path or not use any new tooling, but I wonder how much learning is done when you enter some commands into a prompt and code is spit out.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 02 Jun 2025 23:58:55 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/the-promise-that-wasnt-kept/</guid>
    </item>
    <item>
      <title>What Would “Good” AI Look Like?</title>
      <link>https://kpwags.com/notes/what-would-good-ai-look-like/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;We simply need to start thinking through the implications of a fundamentally better approach to AI, and to understand that all of these things are extremely possible. Consumer-grade AI tools that are actually good do not have to be a hallucination.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This was a good list looking at how we might see better AI.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Wed, 28 May 2025 15:10:01 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/what-would-good-ai-look-like/</guid>
    </item>
    <item>
      <title>Programming is a Feeling, and AI is Changing It</title>
      <link>https://kpwags.com/notes/programming-is-a-feeling-and-ai-is-changing-it/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Programming is an activity, but it’s also a feeling.&lt;/strong&gt; For those of us who actually enjoy programming, there is a deep satisfaction that comes from solving problems through well-written code, a kind of ineffable joy found in the elegant expression of a system through our favorite syntax. It is akin to the same satisfaction a craftsperson might find at the end of the day after toiling away on well-made piece of furniture, the culmination of small dopamine hits that come from sweating the details on something and getting them just right. Maybe nobody will notice those details, but it doesn’t matter. &lt;em&gt;We&lt;/em&gt; care, &lt;em&gt;we&lt;/em&gt; notice, &lt;em&gt;we&lt;/em&gt; get joy from the aesthetics of the craft.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There really is something to be said about seeing the output of the code you write. Being able to see your code transform into a website or application is amazing.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Wed, 28 May 2025 15:09:17 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/programming-is-a-feeling-and-ai-is-changing-it/</guid>
    </item>
    <item>
      <title>Car Subscription Features Raise Your Risk of Government Surveillance, Police Records Show</title>
      <link>https://kpwags.com/notes/car-subscription-features-raise-your-risk-of-government-surveillance-police-records-show/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Nearly all subscription-based car features rely on devices that come preinstalled in a vehicle, with a cellular connection necessary only to enable the automaker&#39;s recurring-revenue scheme. The ability of car companies to charge users to activate some features is effectively the only reason the car’s systems need to communicate with cell towers. The police documents note that companies often hook customers into adopting the services through free trial offers, and in some cases the devices are communicating with cell towers even when users decline to subscribe.&lt;/p&gt;
&lt;p&gt;In an August 2022 email, one detective noted: “In some vehicles, again [it] depends on manufacturer, the vehicle is still doing this despite the lack of an active subscription, and just sending the data back to the mother ship. This could be due to collecting user data for what the manufacturer sells it for, to providing this data to try to sell you on renewing your [subscription] package that lapsed.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&#39;m not looking forward to getting my next car...I like my dumb car. I don&#39;t need my car constantly sending data to Honda or who knows who else.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Location data is some of the most sensitive, revealing information that is generated by our devices, including our cars,” the EFF’s Crocker says. “It&#39;s extremely revealing of obviously where you go and where you&#39;ve been, but also all the people you associate with and all the things you&#39;re doing. You can paint a very clear picture of someone&#39;s life with just a list of all the places they&#39;ve been in their car. The Supreme Court has made that very clear.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You&#39;d be surprised how much can be determined about you based on looking at where you go.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Wed, 28 May 2025 15:07:52 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/car-subscription-features-raise-your-risk-of-government-surveillance-police-records-show/</guid>
    </item>
    <item>
      <title>Bet on Systems, Not Sparks</title>
      <link>https://kpwags.com/notes/bet-on-systems-not-sparks/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;A well-built system doesn&#39;t need to be brilliant today. It just needs to keep working. It doesn’t need your best day ever; it needs your average day, consistently delivered. You don’t win by doing something heroic once. You win by making it unnecessary.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Slow and steady wins the race.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Wed, 28 May 2025 15:07:03 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/bet-on-systems-not-sparks/</guid>
    </item>
    <item>
      <title>License Plate Reader Company Flock Is Building a Massive People Lookup Tool, Leak Shows</title>
      <link>https://kpwags.com/notes/license-plate-reader-company-flock-is-building-a-massive-people-lookup-tool-leak-shows/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Inside Flock, employees have voiced concern about the Nova product, according to the Slack messages. One pointed to the use of hacked data like the Park Mobile Breach. “I was pretty horrified to hear we use stolen data in our system. In addition to being attained illegally, it seems like that could create really perverse incentives for more data to be leaked and stolen,” they wrote. “What if data was stolen from Flock? Should that then become standard data in everyone else’s system?”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Privacy nightmares feel like they&#39;re like a snowball rolling downhill.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 19 May 2025 16:11:15 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/license-plate-reader-company-flock-is-building-a-massive-people-lookup-tool-leak-shows/</guid>
    </item>
    <item>
      <title>In Defense of Unpolished Personal Websites</title>
      <link>https://kpwags.com/notes/in-defense-of-unpolished-personal-websites/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;But deep down, all I want for my personal website is to give back to the web. I want anyone, regardless of skill level, to inspect elements, understand the structure, and learn from readable code. And I am fully aware my code isn’t perfect. It’s old and there’s a lot of room for improvement.&lt;/p&gt;
&lt;p&gt;For now, I am happy to carry on with this approach. My imperfect and unpolished code on my personal website isn&#39;t the full reflection on my technical abilities or knowledge of web development standards. It’s a constant draft where my handwriting is legible and where I want optimization takes a backseat. It’s where I use the little free time I have to actually write on it and prioritise the experiments I want.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ana articulates well how I feel. Learning website development back when I first started, being able to view the source was a great crutch to see how to do things. I experiment with my site, it doesn&#39;t have to be perfect, just mine.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 19 May 2025 16:09:22 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/in-defense-of-unpolished-personal-websites/</guid>
    </item>
    <item>
      <title>28 Slightly Rude Notes on Writing</title>
      <link>https://kpwags.com/notes/28-slightly-rude-notes-on-writing/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;I worked in the Writing Center in college, and whenever a student came in with an essay, we were supposed to make sure it had two things: an argument (“thesis”) and a reason to make that argument (“motive”). Everybody understood what a “thesis” is, whether or not they actually had one. But nobody understood “motive”. If I asked a student why they wrote the essay in front of them, they’d look at me funny. “Because I had to,” they’d say.&lt;/p&gt;
&lt;p&gt;Most writing is bad because it’s missing a motive. It feels dead because it hasn’t found its reason to live. You can’t accomplish a goal without having one in the first place—writing without a motive is like declaring war on no one in particular.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;This is why it’s very difficult to teach people how to write, because first you have to teach them how to care. Or, really, you have to show them how to &lt;em&gt;channel&lt;/em&gt; their caring, because they already care a lot, but they don’t know how to turn that into words, or they don’t see why they should.&lt;/p&gt;
&lt;p&gt;Instead, we rob students of their reason for writing by &lt;em&gt;giving&lt;/em&gt; it to them. “Write 500 words about the causes of the Civil War, because I said so.” It’s like forcing someone to do a bunch of jumping jacks in the hopes that they’ll develop an intrinsic desire to do more jumping jacks. But that’s not what will happen. They’ll simply learn that jumping jacks are a punishment, and they’ll try to avoid them in the future.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I wonder how much better writers some might be if they had chances to write more about something they want to. I don&#39;t remember many chances in school for open writing. Being able to write well is an important skill even for non-writing professions.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 11 May 2025 15:37:08 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/28-slightly-rude-notes-on-writing/</guid>
    </item>
    <item>
      <title>The Blissful Zen of a Good Side Project</title>
      <link>https://kpwags.com/notes/the-blissful-zen-of-a-good-side-project/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;I think we exist to bring new things into existence&lt;/strong&gt;. If you ask me, to the extent there &lt;em&gt;is&lt;/em&gt; a meaning of life, that’s it. We exist to create. It lights us up in a way nothing else does, putting something new into our world—and in doing so, fundamentally changing it, in whatever way, however big or small.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;What&lt;/em&gt; you create, and &lt;em&gt;how&lt;/em&gt; you do it, is entirely up to you. That’s the beauty of it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I love side projects as a tool to help improve my skills, learn something new, and build a tool that might help me solve a problem I&#39;m having. Even if no fully fleshed product ultimately comes out in the end, the creating and learning is fulfilling.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 20 Apr 2025 17:45:10 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/the-blissful-zen-of-a-good-side-project/</guid>
    </item>
    <item>
      <title>The Problem with “Vibe Coding”</title>
      <link>https://kpwags.com/notes/the-problem-with-vibe-coding/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Probably the single most important lesson I’ve learned in my career, the thing that I would argue is the hallmark of “experience”, is understanding just how much work it takes to turn a working &lt;em&gt;program&lt;/em&gt; into a viable &lt;em&gt;product&lt;/em&gt;. It’s why developer estimates are so notoriously optimistic - and why experienced developers are so notoriously cynical.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Experience teaches so much.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;One of the genuinely positive things about tools like Copilot and ChatGPT is that they empower people with minimal development experience to create their own programs. Little programs that do useful things - and that’s awesome. More power to the users.&lt;/p&gt;
&lt;p&gt;But that’s not product development, it’s programming. They aren’t the same thing. Not even close.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Wed, 16 Apr 2025 21:44:05 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/the-problem-with-vibe-coding/</guid>
    </item>
    <item>
      <title>A Few Thoughts on Customizable Form Controls</title>
      <link>https://kpwags.com/notes/a-few-thoughts-on-customizable-form-controls/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;But there’s a user-centric point to be made here too: when you re-invent the look, appearance, and functionality of basic form inputs for every website you’re in charge of, that means every user is forced to encounter inconsistent form controls across the plethora of websites they visit.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is one of the many reasons it is useful to stick with more standard controls. Between accessibility and everything else, knowing and recognizing standard controls can make it easier for users everywhere to fill out forms.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 23 Mar 2025 18:51:31 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/a-few-thoughts-on-customizable-form-controls/</guid>
    </item>
    <item>
      <title>Simplification Takes Courage</title>
      <link>https://kpwags.com/notes/simplification-takes-courage/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Even the most motivated person engaging with an interface is more distracted than they realize and has less cognitive bandwidth available than they’re aware of. We’re designing for humans who are juggling multiple tabs, notifications, and interruptions — even while actively trying to focus on our application.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I like to think I normally do a good job focusing on what I’m working on, but we  all get distracted or pulled away by some random thought or tangent. Simplifying controls and user experience, while not always easy, can be so beneficial to us all.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 23 Mar 2025 18:45:47 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/simplification-takes-courage/</guid>
    </item>
    <item>
      <title>Google Being Forced To Sell Chrome is Not Good for the Web</title>
      <link>https://kpwags.com/notes/google-being-forced-to-sell-chrome-is-not-good-for-the-web/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;The web will suffer should Google be forced to sell Chrome. I think a fair assumption that overall investment and contribution to the open web will take a dive.&lt;/p&gt;
&lt;p&gt;Sure, there will be some canonical fork of Chromium that keeps the sure-to-be-shunned buyer company out of it. Sure, the Linux Foundation is getting their ducks in a row to have contributors ready. But I can’t see it going well.&lt;/p&gt;
&lt;p&gt;It won’t happen overnight, but stagnation will set in. A stagnated web is incentive for the operating system makers of the world to invest in pulling developers toward those proprietary systems. The browser wars sucked but at least we were still making websites. Being &lt;em&gt;forced&lt;/em&gt; to make proprietary apps to reach people is an expensive prospect for the rest of us companies of the world, it will probably be done poorly, and we’ll all suffer for it. Heck, those operating systems aren’t required to ship a web browser &lt;em&gt;at all&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I don’t use Chrome and don’t trust Google to save my life, but you can’t ignore all they’re doing for the browser web development.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 16 Mar 2025 21:11:38 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/google-being-forced-to-sell-chrome-is-not-good-for-the-web/</guid>
    </item>
    <item>
      <title>Long-time advocate of SLS rocket says it’s time to find an “off-ramp”</title>
      <link>https://kpwags.com/notes/advocate-of-sls-rocket-says-its-time-to-find-an-off-ramp/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Ideally, NASA should be able to buy heavy lift services to send payloads to the Moon—up to about 45 metric tons to &#39;trans-lunar injection&#39; which is about the same performance as the SLS Block 2,&amp;quot; Pace wrote. &amp;quot;I was a supporter of SLS when it was created as NASA required heavy-lift vehicles to send humans to the Moon and Mars. At the time, it did not appear (to me) that a private sector heavy-lift vehicle would be feasible within two decades. Today, the situation is different, with heavy-lift options from SpaceX, Blue Origin, and United Launch Alliance.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The cynic in me is he’s trying to cozy up to Elon Musk to give SpaceX more business. Even still, the cost of Artemis and the SLS is absolute insanity.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 03 Mar 2025 00:43:39 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/advocate-of-sls-rocket-says-its-time-to-find-an-off-ramp/</guid>
    </item>
    <item>
      <title>Why I Like Designing in the Browser</title>
      <link>https://kpwags.com/notes/why-i-like-designing-in-the-browser/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Most design tools only approximate how the end result will look and feel. Will typography render as intended? Is that animation smooth or kinda janky? Does that toolbar feel weird when the virtual keyboard is visible? Is this idea even feasible?&lt;/p&gt;
&lt;p&gt;When I’m already working in HTML and CSS, there’s no guessing. I immediately experience the strengths and weaknesses of the medium firsthand, and I can adapt to that reality in the moment instead of having to compromise much later in the process.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;While I’m not always thinking about the design aspect as much in my day-to-day work, the idea reminds me very much of how I prototype. Often I am tasked with spikes at work to figure out how to do something or if it can be done. All the documentation in the world doesn’t beat using the documentation to build and experiment with a small proof of concept to get your hands dirty and to see what can be done.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 03 Mar 2025 00:42:15 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/why-i-like-designing-in-the-browser/</guid>
    </item>
    <item>
      <title>This Page is Under Construction</title>
      <link>https://kpwags.com/notes/this-page-is-under-construction/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;I also don&#39;t want to be prescriptive about what this website should be. It&#39;s your space, and you can do with it whatever you want – whether that&#39;s a maximalist extravaganza, or plain text on a plain background. You might spent hours hand-crafting your HTML, or use a drag-and-drop builder. You may host it on someone else&#39;s platform, or on a box in your bedroom. All of these things are valid, as long as you build it &lt;em&gt;for you&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I love tweaking my site and love seeing what others come up with. Keep on buildin’!&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 03 Mar 2025 00:41:39 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/this-page-is-under-construction/</guid>
    </item>
    <item>
      <title>Your App Should Have Been A Website (And Probably Your Game Too)</title>
      <link>https://kpwags.com/notes/your-app-should-have-been-a-website-and-probably-your-game-too/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Native apps are a pain for everyone involved. Developers pay hefty app store fees, jump through approval hoops, and juggle multiple platform versions. Users? We’re stuck with constant updates, wasted storage space, and apps that don’t even work on all our devices.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Web apps can easily adapt to whatever device you’re on. A single responsive website can run on your desktop, phone, tablet, or even a VR headset. What’s even more, they can be updated on all of them simultaneously. That’s a level of flexibility that native apps can’t match.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Today’s browsers are powerhouses. Notifications? Check. Offline mode? Check. Secure payments? Yep, they’ve got that too. And with technologies like WebAssembly and WebGPU, web games are catching up to native-level performance. In some cases, they’re already there.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 23 Feb 2025 15:30:13 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/your-app-should-have-been-a-website-and-probably-your-game-too/</guid>
    </item>
    <item>
      <title>CSS Nesting: Use With Caution</title>
      <link>https://kpwags.com/notes/css-nesting-use-with-caution/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;As codebases grow and blocks of CSS get unwieldy — making them more complicated — the nesting selector — &amp;amp; — becomes harder and harder to keep track of.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;I know I’m not going to convert nesting fans today. What I hope to send you away with is at least a more cautious approach. Consider keeping your nesting shallow&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is generally my approach. Keep it simple for things like hover states and whatnot. Anything much more than 1-2 levels deep and it becomes unwieldy.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 23 Feb 2025 15:28:10 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/css-nesting-use-with-caution/</guid>
    </item>
    <item>
      <title>The Importance of Investing in Soft Skills in the Age of AI</title>
      <link>https://kpwags.com/notes/the-importance-of-investing-in-soft-skills-in-the-age-of-ai/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;The path to becoming a truly great developer is down to more than just coding. It comes down to how you approach everything else, like communication, giving and receiving feedback, finding a pragmatic solution, planning — and even thinking like a web developer.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So much of working in the real world involves trade-offs between the various departments. Being able to communicate well is &lt;em&gt;so&lt;/em&gt; important to be able to work with the other teams so you can get the best solution deployed while keeping everyone (mostly) happy.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 11 Feb 2025 01:15:45 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/the-importance-of-investing-in-soft-skills-in-the-age-of-ai/</guid>
    </item>
    <item>
      <title>Boring Tech is Mature, Not Old</title>
      <link>https://kpwags.com/notes/boring-tech-is-mature-not-old/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Boring tech behaves in predictable ways. It’s a well trodden path others have evaluated, optimised, troubleshooted, and understood. Using tech that has been subjected to all those people hours of use means you’re less likely to run into edge cases, unexpected behaviour, or attributes and features that lack documentation or community knowledge. In other words, when something goes wrong, can you turn to someone or something?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There&#39;s sometimes something to be said about using technology that&#39;s been around for a while. Chances are, someone has run into the same problem you&#39;re facing and knows a solution or work-around.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This isn’t to say there isn’t room for innovation, or that staying put is a guaranteed recipe for success. What it does teach is that it pays to make informed decisions, and that often times the understood, reliable, boring tech will get you there over something new, shiny or propped up with marketing spin.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Also true, be mindful of the choices you make. New isn&#39;t necessarily bad, but it isn&#39;t always better.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 11 Feb 2025 01:15:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/boring-tech-is-mature-not-old/</guid>
    </item>
    <item>
      <title>HTML Is Actually a Programming Language. Fight Me</title>
      <link>https://kpwags.com/notes/html-is-actually-a-programming-language-fight-me/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;But underestimating HTML is a mistake.&lt;/p&gt;
&lt;p&gt;HTML is the most significant computing language, programming or otherwise, ever developed. Every other programming language has to grapple with how HTML has redefined computing over the past 30-plus years. So many “pure” programming languages automate the production of more and more HTML.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I remember playing with HTML first with Geocities, I never thought of it as anything other than programming.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What other programmers might say dismissively is something HTML lovers embrace: Anyone can do it. Whether we’re using complex frameworks or very simple tools, HTML’s promise is that we can build, make, code, and do anything we want.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Fri, 07 Feb 2025 23:24:14 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/html-is-actually-a-programming-language-fight-me/</guid>
    </item>
    <item>
      <title>Build for the Web, Build on the Web, Build with the Web</title>
      <link>https://kpwags.com/notes/build-for-the-web-build-on-the-web-build-with-the-web/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;The web platform moves slowly, and I understand that can be frustrating for developers who want to innovate, but over a decade of consultancy experience has taught me time and time again that the alternative is much more restrictive in the long run. What’s brand new today starts to show its age much more quickly than something that’s already stood the test of time.&lt;/p&gt;
&lt;p&gt;Every layer of abstraction made in the browser moves you further from the platform, ties you further into framework lock-in, and moves you further away from fast.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;At work we have to keep a close eye on the dependencies we use and have to regularly update them when vulnerabilities arise. Some libraries are good about fixing vulnerabilities without any breaking changes. Others, not as much. We should probably rip some code out and do when we can, but tech debt can be a real pain in the ass.&lt;/p&gt;
&lt;p&gt;It&#39;s really amazing how well HTML, CSS, &amp;amp; vanilla JavaScript hold up. Sites built years ago still work and render today.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Wed, 05 Feb 2025 00:54:13 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/build-for-the-web-build-on-the-web-build-with-the-web/</guid>
    </item>
    <item>
      <title>Learning HTML is the Best Investment I Ever Did</title>
      <link>https://kpwags.com/notes/learning-html-is-the-best-investment-i-ever-did/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;One of the running jokes and/or discussion I am sick and tired of is people belittling HTML. Yes, HTML is not a programming language. No, HTML should not just be a compilation target. Learning HTML is a solid investment and not hard to do.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&lt;p&gt;No matter how you create things for the web, the end product will be HTML. Either HTML generated on the server or with JavaScript. With AI search bots not rendering JavaScript yet maybe this is a good time to re-learn what HTML can do for you. It has not let me down in over 25 years, whereas lots of other “magical solutions” did.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Fri, 17 Jan 2025 00:26:49 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/learning-html-is-the-best-investment-i-ever-did/</guid>
    </item>
    <item>
      <title>Who Killed Google Reader?</title>
      <link>https://kpwags.com/notes/who-killed-google-reader/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Google killed Reader before it had the chance to reach its full potential. But the folks who built it saw what it could be and still think it’s what the world needs. It was never just an RSS reader. “If they had invested in it,” says Bilotta, “if they had taken all those millions of dollars they used to build Google Plus and threw them into Reader, I think things would be quite different right now.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I used Google Reader quite a bit. I loved it and was sad when Google killed it. It had so much potential. That said, while I might be nostalgic towards it, it’s certainly possible Google would’ve enshittified it if they kept it around and built onto it. Who knows what privacy nightmare we would be in. In the end, I use &lt;a href=&quot;https://feedbin.com/&quot;&gt;Feedbin&lt;/a&gt; and am quite happy with it and its functionality.&lt;/p&gt;
&lt;p&gt;At the end of the day, Google Reader might not be around anymore, but its influence still is.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 14 Jan 2025 23:39:16 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/who-killed-google-reader/</guid>
    </item>
    <item>
      <title>If Not React, Then What?</title>
      <link>https://kpwags.com/notes/if-not-react-then-what/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Code that runs on the client, by contrast, is running on The Devil&#39;s Computer.2 Almost nothing about the latency, client resources, or even API availability are under the developer&#39;s control.&lt;/p&gt;
&lt;p&gt;Client-side web development is perhaps best conceived of as influence-oriented programming. Once code has left the datacenter, all a web developer can do is send thoughts and prayers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Too many people, including me sometimes, assume everyone has a computer with nearly unlimited computing power.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Frameworkism insists that all problems will be solved if teams just framework hard enough. This is non-sequitur, if not entirely backwards. In practice, &lt;strong&gt;the only thing that makes web experiences good is caring about the user experience&lt;/strong&gt; — specifically, the experience of folks at the margins. Technologies come and go, but what always makes the difference is giving a toss about the user.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I still use React at work, and while I don’t hate it, it’s definitely not the first tool I reach for anymore.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In short, nobody should start a new project in the 2020s based on React. Full stop.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 14 Jan 2025 23:38:25 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/if-not-react-then-what/</guid>
    </item>
    <item>
      <title>Creativity Cannot Be Computed</title>
      <link>https://kpwags.com/notes/creativity-cannot-be-computed/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;So my advice is two-fold. First, make art. Join a choir or pottery class. Start painting, make weird novelty websites.&lt;/p&gt;
&lt;p&gt;And second: enjoy art. Get out to your local theaters, museums, music venues… they are the best thing to spend your money on.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I’d highly recommend reading all the slides, they’re fantastic.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 07 Jan 2025 23:52:37 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/creativity-cannot-be-computed/</guid>
    </item>
    <item>
      <title>Why Is It So Hard to Go Back to the Moon?</title>
      <link>https://kpwags.com/notes/why-is-it-so-hard-to-go-back-to-the-moon/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;But the plan to use hardware from previous space programs is a bit cobbled together. The Space Launch System, for instance, was originally designed for the Constellation program, a strategy set up under the George W. Bush administration to finish building the International Space Station and to reestablish a human presence on the moon. Congress mandated that the rocket reuse technology from the then defunct space shuttle program. But Obama canceled Constellation in 2010, and in 2017 Trump anointed the Artemis program, with the goal of finally sending people back to the moon and paving the way for exploring Mars. Again, the new plan required that NASA use some of the technology that had been developed for Constellation, which in turn entailed repurposing old space shuttle technology. These mandates were pushed by congresspeople representing regions that housed manufacturing centers for shuttle parts. But the carryover and conversion of those technologies have proved difficult. According to a report from the NASA inspector general, bringing the rocket parts into the modern era—for instance, replacing asbestos parts—and retrofitting them for a new rocket system has cost much more than anticipated.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Leave it to congress to throw a wrench in things.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 01 Dec 2024 19:17:58 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/why-is-it-so-hard-to-go-back-to-the-moon/</guid>
    </item>
    <item>
      <title>Harpercollins wants authors to sign away AI training rights</title>
      <link>https://kpwags.com/notes/harpercollins-ai/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;As Rebecca Giblin and I write in our 2022 book &lt;a href=&quot;https://chokepointcapitalism.com/&quot;&gt;&lt;em&gt;Chokepoint Capitalism&lt;/em&gt;&lt;/a&gt;, giving more rights to a creative worker who has no bargaining power is like giving your bullied schoolkid more lunch money. No matter how much lunch money you give that kid, the bullies will take it and your kid will remain hungry. To get your kid lunch, you have to clear the bullies away from the gate. You need to make a structural change:&lt;/p&gt;
&lt;p&gt;Or, put another way: people with power can claim rights. But giving powerless people more rights doesn&#39;t make them powerful – it just transfers those rights to the people they bargain against.&lt;/p&gt;
&lt;p&gt;Or, put a third way: &amp;quot;just because you&#39;re on their side, it doesn&#39;t follow that they&#39;re on your side&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 01 Dec 2024 19:16:33 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/harpercollins-ai/</guid>
    </item>
    <item>
      <title>Legacy Code</title>
      <link>https://kpwags.com/notes/legacy-code/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;But, what does it actually mean to work in an medium that is so temporary? How does it shape us? When your work can literally disappear at any given moment, how do you reason with the effort that went into producing it?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sometimes our work is fleeting.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It&#39;s funny that, as developers, we often talk about &amp;quot;legacy code&amp;quot;. For us though, the word &amp;quot;legacy&amp;quot; isn&#39;t used in terms of something to preserve the past. More often than not, &amp;quot;legacy code&amp;quot; is something to be refactored, replaced or removed altogether in the name of progress. Without necessarily realising it, we have unconsciously accepted the temporary nature of our work into the language of our industry.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Wed, 06 Nov 2024 19:46:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/legacy-code/</guid>
    </item>
    <item>
      <title>On being a &quot;JavaScript framework developer&quot;...</title>
      <link>https://kpwags.com/notes/on-being-a-javascript-framework-developer/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;A dev knowing the web platform will produce great websites regardless of the tech stack. At the end, there&#39;s &amp;quot;just&amp;quot; web stuff below all the framework magic, right?&lt;/p&gt;
&lt;p&gt;A framework developer, on the other hand, might have a hard time switching frameworks, reaching for simple solutions or delivering high-quality websites without the entire JavaScript ecosystem. And I&#39;ve seen this exact problem plenty of times.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 29 Oct 2024 23:27:05 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/on-being-a-javascript-framework-developer/</guid>
    </item>
    <item>
      <title>Web Components are Okay</title>
      <link>https://kpwags.com/notes/web-components-are-okay/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Again, I find these debates a bit tiresome. I think the fundamental issue, as I’ve previously said, is that people are talking past each other because they’re building different things with different constraints. It’s as if a salsa dancer criticized ballet for not being enough like salsa. There is more than one way to dance!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nolan makes some good points talking about where web components work well, and where they fall short. &amp;quot;It depends&amp;quot; is an oft-used statement and I think far too often we miss the point that there are multiple ways to build things. Some methods and tooling are better than others in certain use cases, some are not. Rather than constantly arguing with one another over the minutia, we should go with what works best for us at the given time.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 28 Oct 2024 23:16:06 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/web-components-are-okay/</guid>
    </item>
    <item>
      <title>C# Compiler and Language Design at Microsoft with Jared Parsons</title>
      <link>https://kpwags.com/notes/c-sharp-compiler-design-jaren-parsons/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;In terms of the language, which is where I&#39;m more centered up, breaking changes is a very big deal. One of the things I drive home for the compiler team that&#39;s very much on my mottos is the number one feature of C# is compatibility. It&#39;s like, we very much want the experience of you are not afraid to move to new version of .NET. You&#39;re not afraid to buy a new version of Visual Studio, because you know your code is going to keep compiling. We will not break you. We will make sure that unless you have done something absolutely extreme, it&#39;s just going to work. That is indeed our number one feature.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As a .NET developer, I greatly appreciate how much work the C# language team puts in to making sure your apps just keep working when you update .NET. The app I work on at work started out as a .NET Core 3.1 Web API. We have since updated it to .NET 6, and now .NET 8. Both updates were smooth with minimal, if any issues.&lt;/p&gt;
&lt;p&gt;It really is kind of amazing that we were able to take advantage of all the performance benefits of .NET 6 and then .NET 8 without having to do a lot of work.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sat, 26 Oct 2024 21:55:04 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/c-sharp-compiler-design-jaren-parsons/</guid>
    </item>
    <item>
      <title>The Neverending Story</title>
      <link>https://kpwags.com/notes/the-neverending-story/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Applets. ActiveX. Flash. Flex. Silverlight. Angular. React.&lt;/p&gt;
&lt;p&gt;Through all of it, Web Standards continue to thrive. HTML, CSS, and JavaScript have never moved fast enough because collaboration and agreement isn’t easy or fast. Web Standards aren’t thriving because of any magical feature or capability. They’re thriving because of agreement and compromise.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Through it all, HTML, CSS, and vanilla JavaScript have been constant. The ease with which any human on the planet can reliably access and read a web document from thirty years ago on any device with a browser today is beyond beautiful.&lt;/p&gt;
&lt;p&gt;On the other hand, when creations from less than a year ago require making changes to the original document, untangling and upgrading a rat’s nest of conflicting dependencies, installing a specific version of a runtime or build tool, and then figuring out how to open it on a device that may or may not support it, isn’t a formula for success.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Libraries come and go. HTML standards roll out slowly but better stand the test of time.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Thu, 10 Oct 2024 15:48:28 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/the-neverending-story/</guid>
    </item>
    <item>
      <title>Web Components are not Framework Components — and That’s Okay</title>
      <link>https://kpwags.com/notes/web-components-are-not-framework-components-and-thats-okay/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Web platform features operate under a whole different set of requirements and constraints:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;They need to last &lt;em&gt;decades&lt;/em&gt;, not just until the next major release.&lt;/li&gt;
&lt;li&gt;They need to not only cater to the current version of the web platform, but &lt;em&gt;anticipate&lt;/em&gt; its future evolution and be compatible with it.&lt;/li&gt;
&lt;li&gt;They need to be &lt;em&gt;backwards compatible&lt;/em&gt; with the web as it was 20 years ago.&lt;/li&gt;
&lt;li&gt;They need to be compatible with a slew of accessibility and internationalization needs that userland libraries often ignore at first.&lt;/li&gt;
&lt;li&gt;They are developed in a distributed way, by people across many different organizations, with different needs and priorities.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Usually, the result is &lt;em&gt;&lt;strong&gt;more robust, but takes a lot longer&lt;/strong&gt;&lt;/em&gt;. That’s why I’ve often said that web standards are &lt;em&gt;“product work on hard mode”&lt;/em&gt; — they include most components of regular product work (collecting user needs, designing ergonomic solutions, balancing impact over effort, leading without authority, etc.), but with the added constraints of a distributed, long-term, and compatibility-focused development process that would make most PMs pull their hair out in frustration and run screaming.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Thu, 10 Oct 2024 15:47:24 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/web-components-are-not-framework-components-and-thats-okay/</guid>
    </item>
    <item>
      <title>Someone Put Facial Recognition Tech onto Meta&#39;s Smart Glasses to Instantly Dox Strangers</title>
      <link>https://kpwags.com/notes/facial-recognition-meta-smart-glasses/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;A pair of students at Harvard have built what big tech companies refused to release publicly due to the overwhelming risks and danger involved: smart glasses with facial recognition technology that automatically looks up someone’s face and identifies them. The students have gone a step further too. Their customized glasses also pull other information about their subject from around the web, including their home address, phone number, and family members.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Oh boy. Having read &lt;a href=&quot;https://kpwags.com/books/kashmir-hill-your-face-belongs-to-us/&quot;&gt;Your Face Belongs to Us&lt;/a&gt; by Kashmir Hill last year, this doesn&#39;t surprise me. The genie is out of the bottle and I&#39;m not quite sure how best to go about protecting ourselves from stuff like this.&lt;/p&gt;
&lt;p&gt;I feel like a federal privacy law is a definite need, but I&#39;m not sure how much that would go about stopping the dangers associated with this.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 08 Oct 2024 17:52:58 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/facial-recognition-meta-smart-glasses/</guid>
    </item>
    <item>
      <title>Personal Websites Are As Vulnerable As Us</title>
      <link>https://kpwags.com/notes/personal-websites-are-as-vulnerable-as-us/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;I look at some people’s personal websites and think, “Stupendous! If I ever reach that zenith of personal web design, I will call it quits.”&lt;/p&gt;
&lt;p&gt;Then I read a post by them later and they say something like, “Gah! I just really don’t like where I’m at with my personal website.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&#39;m not a design wizard. I can often tell good design from bad, but I&#39;m always wishing I could do better, and try to.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It’s like our personal websites are a mirror to ourselves — a place where the mind’s eye must reconcile with the optical eye’s perception of reality.&lt;/p&gt;
&lt;p&gt;It’s a torturous affair, to be sure.&lt;/p&gt;
&lt;p&gt;And yet, people still publish those personal sites, those redesigns, those half-baked ideas.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I love this. Personal sites are awesome and I&#39;m always trying to better mine. I love seeing others do the same.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Thu, 03 Oct 2024 23:07:20 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/personal-websites-are-as-vulnerable-as-us/</guid>
    </item>
    <item>
      <title>There are two kinds of advertising</title>
      <link>https://kpwags.com/notes/there-are-two-kinds-of-advertising/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Go to The Verge (just to poke at a site I generally like) without an ad blocker, open up the Network panel in DevTools and just let ‘er rip. I’m seeing 400+ requests. That’s tracking at work. You can even just sit there and watch it continue to make requests over time, even while you’re doing nothing. JavaScript is whirring, soaking up whatever data it can, setting cookies, and blasting data along with your precious IP address to god-knows-where. All those requests are slowing down the site, costing you bandwidth, laughing at your privacy, and causing legislation that at least you have to click a giant content-blocking banner with a &lt;em&gt;&lt;strong&gt;“yes, this is fine.”&lt;/strong&gt;&lt;/em&gt; button.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is why I run an ad blocker. Contextual ads as Chris alludes to aren’t bad, they are often quite relevant to what you’re looking at. I however don’t need my web experience worsened and what little privacy I have on the web invaded for some random company to display some ad that &lt;a href=&quot;https://www.mi-3.com.au/26-06-2024/data-delusion-does-using-data-target-specific-audiences-advertising-actually-make&quot;&gt;might not even be all that effective&lt;/a&gt;.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 30 Sep 2024 22:36:49 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/there-are-two-kinds-of-advertising/</guid>
    </item>
    <item>
      <title>Let&#39;s Bring Back Browsing</title>
      <link>https://kpwags.com/notes/lets-bring-back-browsing/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;The journey towards information is important. Humans retain information better they had to put effort in to get. Aimlessly browsing to find things you may not have heard of yet is as important as discovery is exciting.&lt;/p&gt;
&lt;p&gt;I love getting lost on Wikipedia, going from one weird fact to another.&lt;/p&gt;
&lt;p&gt;I used to love that on YouTube before everyone and their pet wanted to become an influencer and follow formulaic and manipulative patterns to create their content.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I remember first getting the internet at home in the mid-1990s and aimlessly browsing different sites on a super slow dialup connection. I’ve continued to do that of late, checking out the various blogs of the developer communities I follow on Mastodon and Bluesky. The web needs more of this.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Mon, 30 Sep 2024 22:36:04 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/lets-bring-back-browsing/</guid>
    </item>
    <item>
      <title>The Hidden Cost of Speed</title>
      <link>https://kpwags.com/notes/the-hidden-cost-of-speed/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Months later, marketing and management requests have continued non-stop and (of course) you’ve had no time to lace everything up. You think back to that fateful decision to implement a quick fix, not anticipating that the organization would utilize it on a daily basis, requiring constant updates for every unique sales avenue. In your haste, you built a system that is functionally not operable within the rest of the ecosystem—and you are now subject to that decision. As the requests take longer and longer to work, questions start to arise: &lt;em&gt;“Is our developer losing his touch? Why is this taking so long when it used to take minutes?”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I feel this on a deep spiritual level. All too often we are asked to get features out the door as soon as possible to meet an immediate business need and are not always given the time later to clean the code up to make the system better.&lt;/p&gt;
&lt;p&gt;Tech debt is real, and eventually comes for us all.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 15 Sep 2024 20:06:14 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/the-hidden-cost-of-speed/</guid>
    </item>
    <item>
      <title>Code Isn’t Magical, It’s Just a Series of Commands</title>
      <link>https://kpwags.com/notes/code-isnt-magical/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;If you need to change a line of code, simply ask yourself two questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Where did I get the inputs?&lt;/li&gt;
&lt;li&gt;Who relies on the outputs?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Answering these questions might not be simple; but, considering the code in this light removes the air of mystery and reduces the problem down to a set of quantifiable values.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 08 Sep 2024 18:37:45 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/code-isnt-magical/</guid>
    </item>
    <item>
      <title>Capability Makes Your Life Simpler</title>
      <link>https://kpwags.com/notes/capability-makes-your-life-simpler/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Capability makes your life simpler. Tolerance, skills, knowledge, and health are always with you, wherever you go. They are assets but they take up no space. They are stored in your body.&lt;/p&gt;
&lt;p&gt;Some lack capability through no fault of their own, but anyone can increase their capability. It’s an investment that pays dividends every day.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 08 Sep 2024 18:36:05 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/capability-makes-your-life-simpler/</guid>
    </item>
    <item>
      <title>An iPod and no recommendations are all I have wanted for my listening habits in 2024</title>
      <link>https://kpwags.com/notes/an-ipod-and-no-recommendations/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;I listen to my music and no calls can interrupt me. No notifications can interrupt me. No in-the-moment actions can pause my music. I can take an earbud out and there&#39;s no algorithm that pauses or unpauses my music. I can&#39;t ask Siri about a song.&lt;/p&gt;
&lt;p&gt;This is calm.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I definitely understand where Tom is coming from. While there is definitely some awesomeness to AirPods and the like, there’s still something awesome about the old school iPod.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 08 Sep 2024 18:34:10 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/an-ipod-and-no-recommendations/</guid>
    </item>
    <item>
      <title>Misfire</title>
      <link>https://kpwags.com/notes/misfire/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;This is why &amp;quot;give us your email address for 30% discount&amp;quot; popups and account signup forms are suddenly everywhere. Email addresses are stable, long-lived reidentifiers. Overt mechanisms like this are already replacing third-party cookies. Make no mistake: post-removal, tracking will continue for long as reidentification has perceived positive economic value. The only way to change that equation is legislation; anything else is a band-aid.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I’m kind of curious as to how much email aliases can help with this, and I don’t mean the ‘+’ in the email trick. I use FastMail for my email and can create truly unique emails for services I sign up for. Granted they all share the same domain, but they’re still different. It’s obviously not a panacea, but maybe something?&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 08 Sep 2024 18:32:12 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/misfire/</guid>
    </item>
    <item>
      <title>After the Rupture</title>
      <link>https://kpwags.com/notes/after-the-rupture/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Not to diminish the harm that can come from layoffs—they can absolutely be traumatic and devastating, and we desperately need better safety nets. But I also want to name the sense of relief and opportunity that often emerges after a big rupture, the generative combination of &lt;em&gt;fuck it&lt;/em&gt; and &lt;em&gt;what’s possible now?&lt;/em&gt; energy that leads people in directions they had long considered impractical but which now seem ripe for exploration. I see this experience a bit like what happens after an intense fire burns a stretch of forest down to ash: seeds that were dormant and waiting for just that moment suddenly germinate and stretch up to the clear, bright sun.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;A secret I share about these transitions is that big changes only make sense in hindsight. Some day, years from now most likely, you’ll look back and tell a beautiful story of getting laid off or fired or whathaveyou, and how from that dark and terrible moment came a new beginning. But when you are in the thick of it, when you don’t yet have the gift of a rearview mirror, it won’t feel anything like providence. You’ll feel like you’re flailing about and you’ll want to scream or cry or both at the same time. Your boots will stick in the mud and your ropes will fray and you’ll lose your flint on the coldest night. It will be chaos. But it was chaos that birthed the universe. It is from chaos that many great stories begin. You’ll tell yours in time. First, you have to live it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Just a thought about tough times...&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Wed, 04 Sep 2024 22:17:51 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/after-the-rupture/</guid>
    </item>
    <item>
      <title>Some thoughts on the YubiKey EUCLEAK Vulnerability</title>
      <link>https://kpwags.com/notes/thoughts-on-yubikey-vulnerability/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;It looks like everyone&#39;s favourite FIDO token provider might have an unpatchable vulnerability! Much &lt;em&gt;Sturm und Drang&lt;/em&gt; from the usual sources. But how bad is it really? Not so bad - but it does expose some weaknesses in the very idea of having physical tokens.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It also looks like the attacker will need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Physical access to key&lt;/li&gt;
&lt;li&gt;Username &amp;amp; password tied to account protected by key&lt;/li&gt;
&lt;li&gt;$11,000 worth of equipment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So yes, it doesn’t seem to be an “easy” attack, but geez…it’s always something.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Wed, 04 Sep 2024 22:15:36 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/thoughts-on-yubikey-vulnerability/</guid>
    </item>
    <item>
      <title>Cars Are Rolling Computers Now. So What Happens When They Stop Getting Updates?</title>
      <link>https://kpwags.com/notes/cars-are-rolling-computers/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Samsung and Google provide Android OS updates and security updates for seven years. Apple halts servicing products seven years after they stop selling them.&lt;/p&gt;
&lt;p&gt;That might not cut it in the auto world, where the average age of cars on US roads is only going up. A recent report found that cars and trucks just reached a new record average age of 12.6 years, up two months from 2023. That means the car software hitting the road today needs to work—and maybe even improve—beyond 2036. The average length of smartphone ownership is just 2.8 years.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It’s not something that you might think about, but with all the technology in cars, how long will the tech be supported? Cars can last a long time if well maintained. Tech seems to be somewhat expendable.&lt;/p&gt;
&lt;p&gt;My Honda Civic is now 10 years old and I don’t plan on getting rid of it anytime soon. The only “tech” I have in my car is the standard entertainment system, but newer cars have a whole lot more between cellular connectivity and much more.&lt;/p&gt;
&lt;p&gt;Is it all going to be maintained and supported? Are security updates going to continue for the life of the car? What will GM, Ford, Honda and others consider the “life of the car”?&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Wed, 04 Sep 2024 22:14:13 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/cars-are-rolling-computers/</guid>
    </item>
    <item>
      <title>A Rant about Front-end Development</title>
      <link>https://kpwags.com/notes/a-rant-about-front-end-development/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Chances are, the things you don’t like about CSS are the things you haven’t bothered to understand about it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I will say, I did have gripes with CSS early in my career. The more I’ve used it though, the more I’ve grown to understand it. It can take some time to wrap your head around it. Dismissing it out of hand is not the answer.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;My brothers and sisters in Christ I want you to know that I care about your souls enough to share these truths with you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You don’t need JavaScript to make a web page.&lt;/li&gt;
&lt;li&gt;You don’t need JavaScript to write styles.&lt;/li&gt;
&lt;li&gt;You don’t need JavaScript to make an animation&lt;/li&gt;
&lt;li&gt;You don’t need JavaScript just to show content.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;I take pride in that my site limits its use of JavaScript. JS certainly has its place and I do use it, but boy do some developers rely on it for tasks that just don’t need it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;You don’t need a framework to render static content to the end user. Stop creating complex solutions to simple problems&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Amen.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Fri, 23 Aug 2024 20:26:48 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/a-rant-about-front-end-development/</guid>
    </item>
    <item>
      <title>Every Dependency is a Potential Vulnerability</title>
      <link>https://kpwags.com/notes/every-dependency-is-a-potential-vulnerability/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Every piece of code is a potential vulnerability, really. Not just dependencies.&lt;/p&gt;
&lt;p&gt;But code that you don’t own, that’s outside your control, is particularly vulnerable.&lt;/p&gt;
&lt;p&gt;One of the big myths of using frameworks and libraries and cloud services is that you no longer have the “own” that piece of the code. You’re benefiting from someone else having already solved it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We deal with this a lot at my job and I think it&#39;s important to take note of. We thankfully have dependency checkers to catch known vulnerabilities in the packages we reference so issues are hopefully caught and identified sooner rather than later. But the fact remains that we can be at the mercy of the frameworks and libraries to fix them.&lt;/p&gt;
&lt;p&gt;Third party developers could abandon their libraries or they only fix it in a version that has breaking changes compared with the version you&#39;re using. Either way, it means that you&#39;re now in a bind with your website or app.&lt;/p&gt;
&lt;p&gt;This is not to say don&#39;t use third party libraries or frameworks. Most developers are fantastic and are legitimately doing their best to write good software. But it should cause you to do at least two things. First, be mindful of what dependencies you use. Second, do what you can to make sure you, and/or your company support the open source developers who make the tools you use.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 14 Jul 2024 17:30:28 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/every-dependency-is-a-potential-vulnerability/</guid>
    </item>
    <item>
      <title>Emojis as a Common Language</title>
      <link>https://kpwags.com/notes/emojis-as-a-common-language/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;It’s like and, but we have developed a whole language around what these symbols mean, right? Over the course of decades. And so, if we don’t use them anymore, and everything is AI generated. If we AI generate emojis, you know, we’re not going to have a common language around them anymore. So, I wonder how many people just, kind of, default to the old emojis will just still just because they maybe understand what they mean.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Kimberly Adams isn’t wrong. People have taken emojis and integrated them into language. In some cases the emoji doesn’t equate to its actual meaning. It’s going to be interesting if that starts to fade with some of this or if it will stick around.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Thu, 20 Jun 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/emojis-as-a-common-language/</guid>
    </item>
    <item>
      <title>IndieWeb Principles</title>
      <link>https://kpwags.com/notes/indieweb-principles/</link>
      <description>
		&lt;p&gt;I love this. Ever since the death of X/Twitter I’ve been much more focused on making sure that I control the data and content I post that means the most to me.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Own your data.&lt;/strong&gt; Your content, your metadata, your identity.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Use and publish visible data.&lt;/strong&gt; For humans first, machines second.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Above all, have fun.&lt;/strong&gt; When the web took off in the 90’s people began designing personal sites with tools such as GeoCities. These spaces had Java applets, garish green background and seventeen animated GIFs. It may have been ugly and badly coded but it was fun. Keep the web weird and interesting.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Thu, 20 Jun 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/indieweb-principles/</guid>
    </item>
    <item>
      <title>The Analog Web</title>
      <link>https://kpwags.com/notes/the-analog-web/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;People create these sites simply so that they exist. They are not fed to an algorithm, or informed by any trends. It is quieter and slower, meant to tether us to a more mechanical framework of the web.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This is the analog web.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I’ve mentioned it many times, but the personal site renaissance is one of my favorite things. I know they’ve existed looooong before Twitter. I go through my RSS feeds and it just feels &lt;em&gt;nicer&lt;/em&gt;, &lt;em&gt;calmer&lt;/em&gt;. I hope I can help contribute to it.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Edit 6/9/2024: Fixed a typo. Thanks Andrew!&lt;/em&gt;&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 09 Jun 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/the-analog-web/</guid>
    </item>
    <item>
      <title>Interdisciplinary Website Maker</title>
      <link>https://kpwags.com/notes/interdisciplinary-website-maker/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;But now-a-days, any cross-disciplinary interest is easily interpreted as a lack of specialization and dedication to craft. If you’re doing design and code, how can you be really great at either? You’re not maximizing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I don’t think there’s anything wrong with specializing, I also don’t think there’s anything wrong with becoming a jack-of-all-trades.&lt;/p&gt;
&lt;p&gt;Designers versus coders aside, I find it odd sometimes when people think that front end developers know no backend and vice versa. We all might be better in one area than another, but I feel like we can all contribute.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Thu, 06 Jun 2024 16:59:35 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/interdisciplinary-website-maker/</guid>
    </item>
    <item>
      <title>Half-Ass It</title>
      <link>https://kpwags.com/notes/half-ass-it/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;So here’s a small piece of advice, from one reformed overachiever to another (future) one: &lt;em&gt;half-ass it&lt;/em&gt;. Pick a task, something small to start, and do it carelessly. Do half (or less) of what you would ordinarily do. Then see what happens. Consider it an experiment in which your intention is to learn, whatever the outcome. I’m betting your half-assed version is better than most people’s whole ass, but you can test that assertion yourself.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;All too often people (including myself) say we’re going to do something, learn something, and then never actually do it. Doing something sloppy to learn something is often more than others do.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Thu, 23 May 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/half-ass-it/</guid>
    </item>
    <item>
      <title>Don’t be afraid to admit when you don’t know something</title>
      <link>https://kpwags.com/notes/dont-be-afraid-to-admit-when-you-dont-know/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;I’ve been asked when interviewing for a front end ecommerce position how the Javascript event loop works — in detail. I told the interviewer I didn’t know, had never needed to in previous positions but was confident I could figure it out. They hired me. I’ve taken a similar tack when discussing other roles with interviewers — I don’t know, but I like to learn and I’ll figure it out. Don’t know enough React? I’ll learn. Don’t know bespoke framework/internal tool X? I’ll learn.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is the correct mindset. Don’t try to BS through answers, people will figure it out. Learn the fundamentals and picking up new frameworks and libraries will be doable.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Wed, 22 May 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/dont-be-afraid-to-admit-when-you-dont-know/</guid>
    </item>
    <item>
      <title>Josh Collinsworth on CSS Gatekeeping</title>
      <link>https://kpwags.com/notes/josh-collinsworth-on-css-gatekeeping/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;The question of whether CSS is a programming language serves only one purpose: to demote those who write it.&lt;/p&gt;
&lt;p&gt;There is no confusion that needs to be clarified, and no other purpose in asking, beyond the most trivial kind of pedantry.&lt;/p&gt;
&lt;p&gt;The debate itself is an act of gatekeeping, whether intentional or not. Its only significant effect is to elevate some work over other work, despite their essentially identical nature.&lt;/p&gt;
&lt;p&gt;The only meaningful function of the question is segregation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I really don’t get the whole “CSS isn’t a programming language” crowd. I see what other developers can do with CSS and am amazed. It’s something I’ve been consistently trying to improve on. The gatekeeping stuff is just BS.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Thu, 16 May 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/josh-collinsworth-on-css-gatekeeping/</guid>
    </item>
    <item>
      <title>Start with Simple Tools</title>
      <link>https://kpwags.com/notes/start-with-simple-tools/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;You don’t need fancy software to write. You also don’t need a £1k+ camera to take photos, the latest console to play video games, or a certificate to learn something.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I’ve seen artists use Microsoft Paint to create amazing pictures. It goes to show you don’t need fancy tools to do great things. If you’re trying something new, start with the basics and go from there.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Thu, 16 May 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/start-with-simple-tools/</guid>
    </item>
    <item>
      <title>The align-content property for block layouts is now part of Baseline</title>
      <link>https://kpwags.com/notes/centering-content-with-html-and-css/</link>
      <description>
		&lt;p&gt;There was always the running joke with how to center content. Then it became easier with CSS grid and flexbox. Now you don’t even need that.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;With align-content available for block layout, you can achieve vertical alignment without needing to create a flex or grid layout for the property to work. No additional properties are needed as the item remains a block item, the only change is to the alignment.&lt;/p&gt;
&lt;/blockquote&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sat, 27 Apr 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/centering-content-with-html-and-css/</guid>
    </item>
    <item>
      <title>Why the Short-Lived Calvin and Hobbes Is Still One of the Most Beloved &amp; Influential Comic Strips</title>
      <link>https://kpwags.com/notes/on-calvin-and-hobbes/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;It took no time at all to master Garfield, but when I started getting Calvin and Hobbes, I knew I was making progress; even when I didn’t understand the words, I could still marvel at the sheer exuberance and detail of the art.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I still read &lt;em&gt;Calvin &amp;amp; Hobbes&lt;/em&gt; and I’m amazed at how much more I still get out of the strips. Bits and pieces of humor, insights into life, and more still permeate the strips.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sat, 27 Apr 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/on-calvin-and-hobbes/</guid>
    </item>
    <item>
      <title>A letter to my younger self, as an accessibility advocate</title>
      <link>https://kpwags.com/notes/a-letter-to-my-younger-self-accessibility/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;It&#39;s the getting people to understand the organizational changes needed to address them that is the hard part. It&#39;s a lot of time convincing people of things that have been documented for years. It&#39;s a lot of time spent educating people on things you learned 1, 5, 10 year(s) ago&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I’ve been working on a new project at work and thankfully the team is on board in making sure it’s accessible. But I’ve been on the other side of it as well. It can be hard to make people recognize the extra work to ensure accessibility is both necessary and the right thing to do.&lt;/p&gt;
&lt;p&gt;And I’ll also admit that I haven’t always put accessibility where it needs to be and have in the past skipped out on it. I’ve been trying to make sure that’s no longer the case.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Fri, 15 Mar 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/a-letter-to-my-younger-self-accessibility/</guid>
    </item>
    <item>
      <title>The Quiet, Pervasive Devaluation of Frontend</title>
      <link>https://kpwags.com/notes/quiet-pervasive-devaluation-of-frontend/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;But despite all these claims, CSS is also somehow “not a real programming language.” Many people online will tell you so, often quite loudly, and sometimes even using memes. Same with HTML.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sadly I understand where Josh is coming from.&lt;/p&gt;
&lt;p&gt;Becoming better with CSS is something I really want to do. I want to improve my skills there and slowly I think I am.&lt;/p&gt;
&lt;p&gt;Shame on anyone who thinks that creating amazing, beautiful, and accessible layouts with HTML &amp;amp; CSS is “easy” or should be devalued.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Fri, 15 Mar 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/quiet-pervasive-devaluation-of-frontend/</guid>
    </item>
    <item>
      <title>Falsehoods Junior Developers believe about becoming Senior</title>
      <link>https://kpwags.com/notes/falsehoods-juniors-believe-about-seniors/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;These are mostly my thoughts about what I was expecting as a junior and how I perceived senior developers. To be honest, I was romanticizing them quite a bit — senior developers were the people who could solve all the problems, constantly told me what to do, and knew all the answers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I &lt;em&gt;&lt;strong&gt;wish&lt;/strong&gt;&lt;/em&gt; I had all the answers, that would make my life so much easier. 17 years in the work force and I&#39;m learning something new every day.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 05 Mar 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/falsehoods-juniors-believe-about-seniors/</guid>
    </item>
    <item>
      <title>What is Utility-First CSS?</title>
      <link>https://kpwags.com/notes/what-is-utility-first-css/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Utility-first detractors complain a lot about how verbose this is and, consequently, how ugly. And it is indeed. But you’d forgive it that if it actually solved a problem, which it doesn’t. It is unequivocally an inferior way of making things which _are_alike &lt;em&gt;look&lt;/em&gt; alike, as you should. It is and can only be useful for reproducing &lt;em&gt;inconsistent&lt;/em&gt; design, wherein all those repeated values would instead differ.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&#39;ve certainly built some utility classes is CSS and I believe they certainly have a place. Using them for the just about everything is not my preferred way of doing things and would recommend against it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It turns out, people in tech are particularly bad at distinguishing between paradigm shifts and paradigm &lt;em&gt;sharts&lt;/em&gt;. That’s why we have nose-diving cryptocurrencies, dust-collecting monkey JPEG portfolios, and AI-generated children’s books teaching kids about pink, two-headed dinosaurs that never existed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Truer words have never been spoken.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 05 Mar 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/what-is-utility-first-css/</guid>
    </item>
    <item>
      <title>It feels like React is getting a bit of a kicking recently</title>
      <link>https://kpwags.com/notes/react-getting-a-kicking/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;I don’t like the fact that libraries like React are so heavily used, but over the years, I’ve grown more empathetic about the decision by teams to use them. The web platform doesn’t currently give us all the tools we might need, but I’m hopeful it will in the longer term. I also get that people can’t wait for that and need to get moving, so libraries service their needs better than the web platform currently does.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Definitely agree here. For bigger &amp;amp; more complicated projects, libraries can provide a lot of help to get it off the ground quickly. Necessary, no, but from a practical perspective I get it. Managers and higher ups don&#39;t necessarily always care about what is best, they care about the bottom line and having something to ship.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;All I would say is finding the lowest-tech solution and leaning into browser capabilities as much as possible is a good way to build something resilient and reliable.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Completely agree, if you can avoid over-complicating your builds with libraries and sticking with HTML &amp;amp; CSS, go for it.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Sun, 03 Mar 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/react-getting-a-kicking/</guid>
    </item>
    <item>
      <title>Piracy is Surging Again Because Streaming Execs Ignored the Lessons of the Past</title>
      <link>https://kpwags.com/notes/piracy-is-surging-again/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;So there’s very little indication any of these problems are going to slow down. Consumers are going to be forced to pay higher and higher rates for increasingly deteriorating services, to the point where piracy is going to become an increasingly alluring value proposition. And when that happens, you can be absolutely, indisputably assured that executives will blame absolutely everything but themselves.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=1oWPqcWt8Es&quot;&gt;Wil Wheaton put it perfectly&lt;/a&gt; when he said that many people would pay for content if it’s easy and cost effective. Jack up the prices, make it difficult to find the content you want, and the results shouldn’t be surprising.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Fri, 19 Jan 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/piracy-is-surging-again/</guid>
    </item>
    <item>
      <title>Giving Yourself Stakes</title>
      <link>https://kpwags.com/notes/giving-yourself-stakes/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Build something that matters to you, at least a little bit. The classic is to make yourself a personal website. That’s &lt;em&gt;&lt;strong&gt;real&lt;/strong&gt;&lt;/em&gt;. That means the things you learn you can attach to a real project.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I’ve always felt I learn better when I have something real to build. Another todo app that sits around and clutters my file system is good and all, but the lesson feels muted.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Fri, 12 Jan 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/giving-yourself-stakes/</guid>
    </item>
    <item>
      <title>Never Underestimate HTML</title>
      <link>https://kpwags.com/notes/never-underestimate-html/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Writing HTML in itself isn’t that hard, no.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;But: building user interfaces by elegantly composing this language’s features with CSS, creating pleasant designs and user experiences worth remembering requires experience and skills that should not be underestimated. Neither should HTML; it’s one of the languages—if not the most important one of them all—that shape the web.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Web browsers can be incredibly forgiving in terms of displaying content to the user, so mistakes can go unnoticed. But those mistakes can cause problems with accessibility and many other things. Writing good, accessible HTML takes skill and should never be discounted.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Fri, 12 Jan 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/never-underestimate-html/</guid>
    </item>
    <item>
      <title>An Image Dialog Web Component</title>
      <link>https://kpwags.com/notes/an-image-dialog-web-component/</link>
      <description>
		&lt;p&gt;This is actually a pretty cool use for web components and I might have to steal this for my photography site.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 02 Jan 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/an-image-dialog-web-component/</guid>
    </item>
    <item>
      <title>Content Moderation is Impossible</title>
      <link>https://kpwags.com/notes/content-moderation-is-impossible/</link>
      <description>
		&lt;blockquote&gt;
&lt;p&gt;Content moderation at scale is utterly impossible to get ‘right’, where the online crowd and journalists and politicians all agree you’ve done the correct things. This doesn’t absolve sites from having to try, to do the best job they can under the circumstances. But it should make us a bit more sympathetic when we see stories about how terrible some site’s efforts at moderation are.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It&#39;s one thing to get things wrong from time to time. It&#39;s going to happen and we shouldn&#39;t always pile on them for every little mistake.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I don’t know the answers to any of this! The point I want to emphasize is that all of this is impossibly nuanced, impossibly complex, and impossible to do in such a way that satisfies everyone. You still have to draw a line somewhere, but be prepared to get yelled at anyways.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&#39;ll leave finding the answers to people smarter than me, I&#39;d just like to see a legitimate effort.&lt;/p&gt;

		&lt;p&gt;Thank you for reading this with RSS and keeping RSS alive! You&#39;re awesome!&lt;/p&gt;
		&lt;p&gt;&lt;strong&gt;Reply via:&lt;/strong&gt; &lt;a href=&quot;mailto:hello@kpwags.com&quot;&gt;Email&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://hachyderm.io/@kpwags&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Mastodon&lt;/a&gt; &amp;bull; &lt;a href=&quot;https://bsky.app/profile/kpwags.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer nofollow&quot;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
	</description>
      <pubDate>Tue, 02 Jan 2024 00:00:00 GMT</pubDate>
      <dc:creator>Keith Wagner</dc:creator>
      <guid>https://kpwags.com/notes/content-moderation-is-impossible/</guid>
    </item>
  </channel>
</rss>