Keith Wagner

Notes

Here you'll find short blurbs about interesting articles or blogs from others I've read and wanted to note.

Legacy Code

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?

Sometimes our work is fleeting.

It's funny that, as developers, we often talk about "legacy code". For us though, the word "legacy" isn't used in terms of something to preserve the past. More often than not, "legacy code" 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.

On being a "JavaScript framework developer"...

A dev knowing the web platform will produce great websites regardless of the tech stack. At the end, there's "just" web stuff below all the framework magic, right?

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've seen this exact problem plenty of times.

Web Components are Okay

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!

Nolan makes some good points talking about where web components work well, and where they fall short. "It depends" 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.

C# Compiler and Language Design at Microsoft with Jared Parsons

In terms of the language, which is where I'm more centered up, breaking changes is a very big deal. One of the things I drive home for the compiler team that's very much on my mottos is the number one feature of C# is compatibility. It's like, we very much want the experience of you are not afraid to move to new version of .NET. You'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's just going to work. That is indeed our number one feature.

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.

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.

The Neverending Story

Applets. ActiveX. Flash. Flex. Silverlight. Angular. React.

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.

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.

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.

Libraries come and go. HTML standards roll out slowly but better stand the test of time.

Web Components are not Framework Components — and That’s Okay

Web platform features operate under a whole different set of requirements and constraints:

  • They need to last decades, not just until the next major release.
  • They need to not only cater to the current version of the web platform, but anticipate its future evolution and be compatible with it.
  • They need to be backwards compatible with the web as it was 20 years ago.
  • They need to be compatible with a slew of accessibility and internationalization needs that userland libraries often ignore at first.
  • They are developed in a distributed way, by people across many different organizations, with different needs and priorities.

Usually, the result is more robust, but takes a lot longer. That’s why I’ve often said that web standards are “product work on hard mode” — 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.

Someone Put Facial Recognition Tech onto Meta's Smart Glasses to Instantly Dox Strangers

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.

Oh boy. Having read Your Face Belongs to Us by Kashmir Hill last year, this doesn't surprise me. The genie is out of the bottle and I'm not quite sure how best to go about protecting ourselves from stuff like this.

I feel like a federal privacy law is a definite need, but I'm not sure how much that would go about stopping the dangers associated with this.

Personal Websites Are As Vulnerable As Us

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.”

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.”

I'm not a design wizard. I can often tell good design from bad, but I'm always wishing I could do better, and try to.

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.

It’s a torturous affair, to be sure.

And yet, people still publish those personal sites, those redesigns, those half-baked ideas.

I love this. Personal sites are awesome and I'm always trying to better mine. I love seeing others do the same.

Cox Sues Rhode Island Because It Dared To Use Infrastructure Bill Money To Fund Broadband Competition

On the Infrastructure bill allotting funding for broadband internet:

Unfortunately, a ton of that money is going to be given to giant telecom monopolies with a long history of empty promises and half-completed networks. But an impressive chunk will also wind up in the hands of smaller broadband ISPs, cooperatives, city-owned electrical utilities, and municipal broadband networks, allowing them to build fiber access out into areas that would have never seen service otherwise.

High speed internet is no longer a luxury. It powers today’s world and everyone deserves to have access to affordable, fast internet.

Monopolistic corporations have other ideas:

Cox is very upset that not all of the state’s share of infrastructure bill broadband money is going to Cox, so they’re trying to pretend the process was somehow flawed

You wonder how much they’re just going to pocket and say the did something anyway.

I’m for anything that will open up even a modicum of competition and give people access to the Internet.

There are two kinds of advertising

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 “yes, this is fine.” button.

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 might not even be all that effective.

Let's Bring Back Browsing

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.

I love getting lost on Wikipedia, going from one weird fact to another.

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.

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.

Can You Live Without GPS?

It’s a scary thought that with some of the escalating conflict in the world, the GPS system we and the economy as a whole relies upon is vulnerable and a backup unavailable.

And because of course Congress is Congress, here’s an excerpt from the podcast.

GOWARD: Russia and China both have terrestrial systems that can give them GPS-like information in the event that signals from space are not available. Unfortunately, in the U.S., we shut ours off in 2010, and we have no sign of starting up something like that again.

WONG: Before GPS, the United States had a system called LORAN. That's an acronym for Long Range Navigation. It was a relic of World War II - a couple dozen 700-foot ground towers spread across the country that transmitted powerful radio signals - not as accurate as GPS, but it got the job done. In 2004, the Bush administration not only wanted to keep LORAN as a backup to GPS. It wanted to upgrade it to make it more precise.

GOWARD: The money for that was taken away in the various budget processes, and the old system was shut down without new replacement.

HEGYI: That shutdown happened during the Obama administration. They had a completely different view than the Bush administration and called LORAN obsolete in the era of satellite navigation. But then, a few years later, they said, oops, our bad.

GOWARD: We shouldn't have shut down that old system. We should have upgraded. We're going to do that. But again, nothing happened.

WONG: So in 2018, Congress passed a law requiring the Department of Transportation to build a backup to GPS by the year 2020, but then they didn't appropriate enough cash to do that.

Sigh...

The Hidden Cost of Speed

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: “Is our developer losing his touch? Why is this taking so long when it used to take minutes?”

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.

Tech debt is real, and eventually comes for us all.

Code Isn’t Magical, It’s Just a Series of Commands

If you need to change a line of code, simply ask yourself two questions:

  • Where did I get the inputs?
  • Who relies on the outputs?

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.

Capability Makes Your Life Simpler

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.

Some lack capability through no fault of their own, but anyone can increase their capability. It’s an investment that pays dividends every day.

An iPod and no recommendations are all I have wanted for my listening habits in 2024

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's no algorithm that pauses or unpauses my music. I can't ask Siri about a song.

This is calm.

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.

Misfire

This is why "give us your email address for 30% discount" 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.

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?

After the Rupture

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 fuck it and what’s possible now? 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.

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.

Just a thought about tough times...

Some thoughts on the YubiKey EUCLEAK Vulnerability

It looks like everyone's favourite FIDO token provider might have an unpatchable vulnerability! Much Sturm und Drang 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.

It also looks like the attacker will need:

  • Physical access to key
  • Username & password tied to account protected by key
  • $11,000 worth of equipment

So yes, it doesn’t seem to be an “easy” attack, but geez…it’s always something.

Cars Are Rolling Computers Now. So What Happens When They Stop Getting Updates?

Samsung and Google provide Android OS updates and security updates for seven years. Apple halts servicing products seven years after they stop selling them.

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.

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.

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.

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”?

Older Notes →