RSSAmplifier

Blog

Unplanned Obsolescence

A blog about trying to write software that doesn't rot

unplannedobsolescence.comRSS feed ↗17 posts

Latest posts

Getting off the Modernization Treadmill

Why are so many government websites unusable for the constituents who need them most ? Civic technologists are building excellent playbooks for how governments can move past broken processes that produce outcomes that don’t serve users. But creating agile, empowered, and accountable delivery teams in the public sector isn’t enough—we also have to make the right technology choices. At Big Sky Dev…

The Difference Between a Button and a Link

Of the three proposals in the Triptych Project , my multi-year odyssey to add a few small-but-powerful features to HTML, the one that generates the most questions is Button Actions . The proposal itself is very straightforward: we want to add the action and method attributes to the button. < button action =" /begin " method =" GET ">Start</ button > Button Actions are such a simple primitive that…

XML is a Cheap DSL

Yesterday, the IRS announced the release of the project I’ve been engineering leading since this summer, its new Tax Withholding Estimator (TWE). Taxpayers enter in their income, expected deductions, and other relevant info to estimate what they’ll owe in taxes at the end of the year, and adjust the withholdings on their paycheck. It’s free, open source, and, in a major first for the IRS, open for…

Prolog Basics Explained with Pokémon

.inline-figure { display: flex; justify-content: space-around; margin: 1rem; } .move { text-transform: lowercase; font-variant-caps: small-caps; } pre[data-name=top-level] { /* * Trust me I'm not proud of this, but Zola, the static-site generator I'm using, * inserts the code block background-color as a "style" attribute on the tag. * I can either break open my Zola syntax highlighting…

What Dynamic Typing Is For

.languages { grid-template-columns: 1fr 1fr fit-content(60%); } Unplanned Obsolescence is a blog is about writing maintainable, long-lasting software. It also frequently touts—or is, at the very least, not inherently hostile to—writing software in dynamically-typed programming languages. These two positions are somewhat at odds. Static typing is better for maintainability Dynamically-typed…

What&#x27;s Left for Frontend Engineers?

iframe { display: block; margin: 10px auto; } I went back to Bozeman! Summary Building webservices with HTML APIs (aka MVC, aka server-side rendering , aka “rails-style”) is gaining traction again, thanks to improvements in web standards and lightweight HTML-driven libraries like htmx . Although there will occasionally be reasons to go beyond what the platform provides, this will always be the…

The Server Doesn&#x27;t Render Anything

When I advise people on how they should structure a web service, I always start from the same place: make a server that responds to HTTP requests with HTML text.

The Mostly True Naming Rule

Naming things properly is very hard to do , so, as programmers, we come up with little rules to help us. These rules are often inconsistent.

Why Insist on a Word

A central concept to HTML, and hypertext theory more generally, is something called Representational State Transfer, a.k.a. REST. Over at htmx, a lot of the writing we do is based on REST theory. REST is a widely misunderstood term , and if you point that out to people, you will be told, repeatedly and sometimes quite irately: who cares? REST has a new meaning now—use words the way people…

Building the Hundred-Year Web Service

iframe { display: block; margin: 10px auto; } My UtahJS talk, “Building the Hundred-Year Web Service” , was put online this week! It’s about how to build software infrastructure that lasts a very long time.

Less htmx is More

It’s been two years since I wrote my first production webservice with htmx . Two years is not a very long time, but early indicators suggest that the software projects I’ve written with htmx are a much better experience for users, and orders of magnitude easier to maintain, than the software projects they replaced. They are likely to remain useful for longer than anything else I’ve ever written…

The Messy Pile

A couple months ago I was sitting next to Ivy Wong and I saw them working on a dropdown menu so cute that I immediately asked how they did it.

Who&#x27;s Afraid of a Hard Page Load?

While I’m not going to settle the Single-Page Web Application (SPA) debate in a blog post, there is one claim about SPAs that routinely goes unchallenged, and it drives me nuts: that users prefer them because of the “modern,” responsive feel.

The Life & Death of htmx

iframe { display: block; margin: 10px auto; } This past weekend, I gave a talk entitled “The Life & Death of htmx” at Big Sky Dev Con .

The Best "Hello World" in Web Development

The Classic Hello World Here’s how you make a webpage that says “Hello World” in PHP: Hello World Name that file index.php and you’re set. Awesome. Version 1 of our website looks like this: Okay, we can do a little better. Let’s add the HTML doctype and <title> element to make it a legal HTML5 page , an <h1> header to give the “Hello World” some heft, and a <p> paragraph to tell our visitor where…

Custom HTML Has Levels To It

The comment I received most frequently on “ Behavior Belongs in the HTML ” was: “don’t Web Components solve this?”

Behavior Belongs in the HTML

When you click the button below, it’s going to show you a little message.