A picture of me with my dog Tess next to me looking at me

Notes

The Web Runs On Tolerance

You can be crap at coding and the web still works. Yes, it takes an awful lot of effort from browser manufacturers to make "do what I mean, not what I say" a reality. But the world is better for it.

It amazes me how much the browser can figure out and handle.

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?

The ARM processor which powers the modern world was co-designed by a trans woman. When you throw slurs and denigrate people's pronouns, your ignorance and hatred does a disservice to history and drives away the next generation of talent.

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

Amen.


A Comic on the Modern World and Conservatism

And this is why it doesn't help to simply tell people you can keep doing the thing you were doing. No one's stopping you from drinking your coffee because it's not about the coffee. It's the fear that if everybody else stops drinking coffee the way I drink it, then I will become an outcast. And that is scary to someone who suddenly is remembering how they have always treated outcasts.


Apple's Assault on Standards

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.

Worse, Apple'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.

Sometimes apps are nice, but I'd still much rather see all the functionality browsers allow into iOS/iPadOS. Safari is holding it back.

Developers are forced into the App Store by missing web capabilities, ensuring an advantage for Apple's proprietary ecosystem. This induces wealthy and influential users to default to the App Store for software, further damping the competitiveness of open platforms.

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.

So long as competing vendors are forced into the App Store and required to use Apple'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: parity with browser features on other Operating Systems is the minimum bar.

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.

Just open up iOS to different browser engines already...sigh.


Dear Mozilla, I don't want an “Al kill switch”, I want a more responsible approach for all

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 more of that, it's the reason I and many others choose Mozilla products.

I hope Mozilla succeeds in their aim to do AI “right”, adhering to the manifesto, and inspires others to do the same. It'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.

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.


Vibe Engineering

One of the lesser spoken truths of working productively with LLMs as a software engineer on non-toy-projects is that it’s difficult. 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.

It can be so easy to see code and think hey! this works! 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're building to help you with something, maybe none of that matters. But for anything more extensive than that, you bet it does.

If you’re going to really exploit the capabilities of these new tools, you need to be operating at the top of your game. 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 so much time on code review.

Almost all of these are characteristics of senior software engineers already!


50 Reasons to Build a Website

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.

Keep building, this is an awesome list. I love seeing what people create.


The World is Something that We Make

This consistent misread is that no positive change is worth making unless you make it in a pristine, completely consistent, platonic final form.

Over the last several years I've been re-thinking some of my uses and interactions with various companies and whatnot. This sums it up perfectly. You don't have to take the leap right away. Small steps can get you where you want to go over time.


Vibe Coding is Boring

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

There really is something about building things from the ground up and seeing them come alive. There's real joy in solving a tough problem or fixing a troublesome bug. AI will never take that away.


A Cartoonist's Review of AI Art

A thoughtful piece from someone who does art and cartoons for a living.


Big O

This is a great write-up going over the basics of Big O notation.


Power Companies Are Using AI To Build Nuclear Power Plants

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

File this under "what could possibly go wrong?"


Vibe Coding is Creating a Generation of Unemployable Developers

But it’s a trap. Vibe coding doesn’t create developers; it creates fragile intermediaries. People who can generate code but cannot read, debug, or maintain it.

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.

There'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.

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 outsourcing your own understanding.


Older Notes →