A simple instruction-stepped Z80 CPU emulator written in Go, inspired by the cycle-accurate emulation techniques described in floooh’s blog posts. ↫ Zen80 GitHub page It has support for all documented Z80 instructions, supports most games and applications, and much more.
In 2022, Google launched a major push for gaming Chromebooks, including a version of Steam for ChromeOS. Steam for ChromeOS remained in Google’s nebulous “beta” state ever since, however, and today Google is doing a Google by killing Steam for ChromeOS altogether. Entering “Steam” into the ChromeOS Launcher starts the install process like before, but there’s now an intermediary message: “The Steam for Chromebook Beta program will conclude on January 1st, 2026. After this date, games installed as part of the Beta will no longer be available to play on your device. We appreciate your participation in and contribution to learnings from the beta program, which will inform the future of Chromebook gaming.” ↫ Abner Li at 9To5Google Chromebooks are cheap devices for students, and while there are expensive, powerful Chromebooks, I doubt they sell in any meaningful numbers to justify spending any time on maintaining Steam for ChromeOS. Of course, Steam for ChromeOS is just the Linux version of Steam, but Google did maintain a list of “compatible” games, so the company was at least doing something. The list consists of 99 games, by the way. It’s just another example of Google seemingly having no idea what it wants to do with its operating systems, made worse in this case because Google actually had OEMs make and sell Chromebooks with gaming features. Sure, Android games still exist and can be run on ChromeOS, but I doubt that’s what the six people who bought a gaming Chromebook for actual gaming had in mind when they bought one.
Akseli Lahtinen, a KDE developer who works on various components of the KDE Plasma desktop environment, had never actually made his own KDE application from scratch – until now. He created a to-do application, called KomoDo (available on Flathub), that makes use of the todo.txt format, and penned a blog post detailing his experiences. Of course, as a KDE developer, he’s got a head start and access to people who know their stuff, but that doesn’t mean it was a walk in the park. If you’re thinking of developing a KDE application, Lahtinen’s blog post is a great place to start.
Welcome, friends, to my grubby little corner of the internet. A corner so strewn with obscenity that the UK government has decided you must prove you’re a grown-up before you can access certain parts of it. The UK’s new Online Safety Act has come into force, so UK people might have noticed a bunch of websites suddenly demanding you take a selfie, share your credit card details, or jump through another hoop to prove that you’re over 18. Quite a few of my friends have been discussing this in the pub, because for understandable reasons people who aren’t embedded in the world of online pornography or internet law are suddenly curious about why the internet is now so very broken. They’re also often convinced that the government will change its mind and therefore no one really needs to worry. I’ve had this conversation so many times now that I reckon I’ve got the basis for a fairly solid layperson’s guide to age verification: what it is, how it affects you, and why we absolutely, genuinely do need to worry. ↫ Girl on the Net Girl on the Net basically published the definitive guide on why age verification online, as currently implemented in the United Kingdom, and explored by the United States and the European Union, is such a terrible idea. It’s a privacy disaster, a clear onramp for Christian extremists to go after LGBTQ+ content, it doesn’t “protect the children”, it’s easily circumvented, breaks accessibility, casts such a wide net that it even hits sites like Wikipedia, and so, so much more. Whenever anyone online tries to sell you on age verification as a means to “think of the children”, you can just point them to the linked article. If, after reading it, they still believe this is the way to protect children from seeing naked people (while leaving the door to the most brutal forms of violent content wide open, of course, as is tradition), they will have either ulterior motives, or are some form of extremist you can’t argue with anyway. The demonization of sexual content and the sex workers that produce it as a means to introduce strict authoritarian control over the internet is something that will never go away. “Think of the children” is an incredibly powerful rallying cry for authoritarians to scare sheltered boomers into accepting pretty much any draconian measure, regardless of efficacy, and I doubt we will ever definitely win this fight. But we won’t have to sit down and accept it.
Whether you like Microsoft and its products or not, the one thing we can all agree on is that the company is absolutely terrible at naming things. Sometimes I feel like managers at Microsoft get their bonuses based on how many times they can rename products, because I find it hard to accept that they’re really that inept at product naming in Redmond. I mean, just look at my recent article about the most Microsoft support document of all time. Bonkers. While the list of examples of confusing, weird, unclear, and strange Microsoft product names is long, let’s go back to that weird moment in time where Windows updates were suddenly given names like the “Fall Creators Update”. As with every naming scheme Microsoft introduces, this one was short-lived, but for once, we have an explanation. Raymond Chen explains: It was during an all-hands meeting that a senior executive asked if the organization had any unconscious biases. One of my colleagues raised his hand. He grew up in the Southern Hemisphere, where the seasons are opposite from those in the Northern Hemisphere. He pointed out that naming the updates Spring and Fall shows a Northern Hemisphere bias and is not inclusive of our customers in the Southern Hemisphere. The names of the semiannual releases were changed the next day to be hemisphere-neutral. ↫ Raymond Chen If you live in the northern hemisphere – and you can’t live much more north than I do – you don’t often have to think about how the seasons in the southern hemisphere are reversed. We all know it – I assume, at least – but it’s not something that we’re confronted with very often, as our media, movies, books, and so on, all tend to be made in and for consumers in the northern hemisphere. I’m assuming that people in the southern hemisphere are much more acutely aware of this issue, because their media is probably dominated by stories set in the northern hemisphere, too. It’s wild that Microsoft ever went with a seasonal naming scheme to begin with, and that it somehow slipped through the cracks for a while before anyone spoke up.
As promised in the first iteration, we will now explore how GPU drivers work in more detail by exploring an application known as VkCube. As the program name implies, this application uses the Vulkan API to render a rotating cube on the screen. Its simplicity makes it a prime candidate to be used as a learning aid in our journey through GPU drivers. This article will first introduce the concept of User Mode Drivers (UMDs) and Kernel Mode Drivers (KMDs), breaking down the steps needed to actually describe VkCube‘s workload to the GPU. This will be done in a more compact way for brevity as it’s a rather extensive topic that has been detailed in several books. We will wrap up with an overview of the actual API offered by Tyr. As previously stated, this is the same API offered by Panthor, which is the C driver for the same hardware. ↫ Daniel Almeida There isn’t much to add here, except maybe this kitten.
The most popular desktop operating system today is still Windows, with its userbase roughly equally divided between Windows 10 and Windows 11. While we tend to focus on the marketing names used by Microsoft, like Windows XP, Windows 7, or Windows 11, their real name is still, to this day, Windows NT. Underneath all the marketing names, there’s still the Windows NT version number corresponding to the marketing name; Windows XP was Windows NT 5.1 (or 5.2 for the 64bit version), Windows 7 was Windows NT 6.1, and the current latest version, Windows 11, is Windows NT 10.0, a version number that’s been static since 2015. Of course, version numbers don’t really mean anything, but it does highlight that yes, the Windows you’re using is still Windows NT, and thus, the operating system you’re using isn’t a part of the Windows 3.x/9x line, but of the NT line. And probably the first version of Windows NT that set us on this path is Windows NT 4.0 – with Windows 2000 sealing the deal, and Windows XP delivering the obvious knock-out punch. Since Windows NT 4.0 turned 29 years old a few days ago, Dave Farquhar published a retrospective of this release, highlighting many important changes in Windows NT 4.0 that in my mind mark it as the true beginning of the shift from Windows 9x to Windows NT as Microsoft’s consumer operating system. First, Windows NT 4.0 was the first version of Windows NT that shipped with the user interface from Windows 95. It brought over the Start menu, taskbar, and everything else introduced with Windows 95 to the Windows NT line, which up until that point had been using the same user interface as Windows 3.x. A default Windows NT 4.0 desktop basically looks indistinguishable from a Windows 95 desktop, and like the earlier versions of NT, it came in a workstation edition for desktop use. Second, another massive, at the time controversial, change came with the graphics subsystem, as Farquhar notes: And one change, easily forgotten today, regarded graphics drivers. Microsoft moved the video subsystem from user space, ring 3, to kernel space, ring 0. There was a lot of talk about Ring 0 versus ring 3 on July 19, 2024 thanks to the large computer outage on that day. In 1996, this move was controversial, for the same reasons. The fear was that a malfunction in the graphics driver would now be able to take down the entire system. But the trade-off was much improved performance. It meant Windows NT 4.0 could be used for serious graphics work. ↫ Dave Farquhar Windows NT 4.0 delivered more than what’s highlighted by Farquhar, of course. A major new feature in Windows NT 4.0 was DirectX, as it was the first Windows version to come with it preinstalled. DirectX support remained limited in NT 4.0, though, so Windows 9x remained the better option for most people playing video games. Other new features were the System Policy Editor and system policies, Sysprep, and, of course, a whole slew of low-level improvements to both the operating system itself as well as its various server-oriented features. Windows NT 4.0 also happened to be the last version of Windows NT which supported the Alpha, MIPS, and PowerPC architectures, although Windows 2000 retained support for Alpha in its alpha, beta, and release candidate versions. Of course, Windows would later expand its architecture support with first Itanium, and more recently, ARM. As someone who was selling and managing computer systems at the time, Farquhar has some great insights into why NT 4.0 was such a big deal, and why it seemed to fare better in the market than previous versions of Windows NT did. He also highlights on particular oddity from NT 4.0 that’s still lurking around today, an oddity you really don’t want to run into.
There’s a lovely device called a pistorm, an adapter board that glues a Raspberry Pi GPIO bus to a Motorola 68000 bus. The intended use case is that you plug it into a 68000 device and then run an emulator that reads instructions from hardware (ROM or RAM) and emulates them. You’re still limited by the ~7MHz bus that the hardware is running at, but you can run the instructions as fast as you want. These days you’re supposed to run a custom built OS on the Pi that just does 68000 emulation, but initially it ran Linux on the Pi and a userland 68000 emulator process. And, well, that got me thinking. The emulator takes 68000 instructions, emulates them, and then talks to the hardware to implement the effects of those instructions. What if we, well, just don’t? What if we just run all of our code in Linux on an ARM core and then talk to the Amiga hardware? ↫ Matthew Garrett This is so cursed. I love it.
We are observing stealth crawling behavior from Perplexity, an AI-powered answer engine. Although Perplexity initially crawls from their declared user agent, when they are presented with a network block, they appear to obscure their crawling identity in an attempt to circumvent the website’s preferences. We see continued evidence that Perplexity is repeatedly modifying their user agent and changing their source ASNs to hide their crawling activity, as well as ignoring — or sometimes failing to even fetch — robots.txt files. The Internet as we have known it for the past three decades is rapidly changing, but one thing remains constant: it is built on trust. There are clear preferences that crawlers should be transparent, serve a clear purpose, perform a specific activity, and, most importantly, follow website directives and preferences. Based on Perplexity’s observed behavior, which is incompatible with those preferences, we have de-listed them as a verified bot and added heuristics to our managed rules that block this stealth crawling. ↫ The CloudFlare Blog Never forget they destroyed Aaron Swartz’s life – literally – for downloading a few JSTOR articles.
It’s not every day you stumble upon an X11 desktop environment you’ve never hard of, but today’s one of those days. The Orbitiny Desktop Environment is a one-person project, consisting of an entirely custom desktop environment written in Qt. Version 1.0 Pilot 4 was just released. Built from the ground up using Qt and coded in C++, Orbitiny Desktop is a new, 100% portable, innovative and traditional but modern looking desktop environment for Linux. Innovative because it has features not seen in any other desktop environment before while keeping traditional aspects of computing alive (desktop icons, menus etc). Portable because you can run it on any distro and on any live CD and that’s because everything gets saved inside the directory that gets created when the archive is extracted (this can be changed so that the settings go to $HOME/.config/orbitiny). ↫ Orbitiny Desktop Environment Gitea page It’s got all the usual amenities like a desktop, panels, and so on, and a custom file manager. It’s also replete with a ton of small features that you don’t see very often, like full mouse gesture support on the desktop and a device manager that can enable/disable devices without blacklisting kernel modules. When you cut or copy a file, its icon will get a little emblem to indicate it’s on the clipboard, you can append and prepend files using simple drag-and-drop operations, you can set individual desktop directories for each virtual desktop, and much more. Now, it’s technically not a full desktop environment, because it doesn’t have things like a session manager, power manager, various hardware configuration panels, and so on, but it can be run on top of existing desktop environments. While it has basic Wayland support, not all components work there, so X11 is the main focus for now. Considering it’s a one-person project, you can’t expect a bug or issue-free experience, but that doesn’t mean it’s any less damn impressive. I honestly feel like there’s something valuable and interesting here, and I’d love for more people to get involved to see where this can go. There’s clearly a ton of love and dedication here, and the various unique features clearly set it apart from everything else. If you have the skills, consider helping out.
Solène Rapenne, who writes a lot about and contributes to operating systems like OpenBSD and Qubes OS, has published a primer about what, exactly, Qubes OS is. I like to call Qubes OS a meta operating system, because it is not a Linux / BSD / Windows based OS: its core is Xen (some kind of virtualization enabled kernel). Not only it’s Xen based, but by design it is meant to run virtual machines, hence the name “meta operating system” which is an OS meant to run many OSes make sense to me. ↫ Solène Rapenne Rapenne explains the various ways in which isolated virtual machines are used in Qubes OS, and it’s easy to see just how secure Qubes OS’ way of doing things is. At the same time, it seems quite cumbersome to me as a regular user, and I don’t think I’m up for dealing with all of that. If you do security research, handle private or classified data, are a whistleblower or an investigative journalist, thoug, Qubes seems like a natural choice. Interesting to note is that Rapenne used to use OpenBSD for her security work, but moved to Qubes OS because its virtual machine infrastructure is far more robust, and hardware support is better, as well.
In October 1997 you could have bought a PowerBook 3400c running up to a 240MHz PowerPC 603e for $6500 , which was briefly billed as the world’s fastest laptop, or you could have bought this monster new to the market, the RDI PrecisionBook running up to a 160MHz (later 180MHz) PA-7300LC starting at $12,000 . Both provided onboard Ethernet, SCSI and CardBus PCMCIA slots. On the other hand, while the 3400c had an internal media bay for either a floppy or CD-ROM, both external options on the PrecisionBook, the PrecisionBook gave you a 1024×768 LCD (versus 800×600 on the 3400c), a bigger keyboard, at least two 2.5″ hard disk bays and up to 512MB of RAM (versus 144MB) — and HP-UX. And, through the magic of Apple’s official Macintosh Application Environment, you could do anything on it an HP PA-RISC workstation could do and run 68K Mac software on it at the same time. Look at the photograph and see: on our 160MHz unit we’ve got HP-UX 11.00 CDE running simultaneously with a full Macintosh System 7.5.3 desktop. Yes, only a real Power Mac could run PowerPC software back then, but 68K software was still plentiful and functional. Might this have been a viable option to have your expensive cake and eat it too? We’ll find out and run some real apps on it (including that game we must all try running), analyze its performance and technical underpinnings, and uncover an unusual artifact of its history hidden in the executable. ↫ Cameron Kaiser at Old Vintage Computing Research I actually have Apple’s Macintosh Application Environment installed and running on my PA-RISC machines, and it’s incredible just how well-made and complete it really is. You get a full Mac desktop and its applications, excellent integration with the host, file sharing between host and client, and so much more. Running it on newer versions of HP-UX than it was originally intended for does lead to the odd issue here and there, but due to HP-UX’ excellent backwards compatibility, it all just works. It has created this odd situation that my 2004 HP c8000 machine, with two of the fastest dual-core PA-RISC processors ever made, will most likely be the fastest machine I’ll ever officially run classic Mac OS on. Sure, you can use other emulators not created and blessed by Apple and run classic Mac OS on much faster hardware, but if you want to stick to official, supported methods of running the classic Mac OS, it doesn’t get much faster than this.
Guest post by Morgan
2025-08-03
Internet
AWS: Not even once. This prominent Ruby developer lost his entire test environment – which, ironically, was pivotal to AWS’ own infrastructure – because of a rogue team within AWS itself that apparently answers to no one and worked hard to cover up a dumb mistake. On July 23, 2025, AWS deleted my 10-year-old account and every byte of data I had stored with them. No warning. No grace period. No recovery options. Just complete digital annihilation. This is the story of a catastrophic internal mistake at AWS MENA, a 20-day support nightmare where I couldn’t get a straight answer to “Does my data still exist?”, and what it reveals about trusting cloud providers with your data. ↫ Abdelkader Boudih Nightmare scenario doesn’t even begin to describe what happened here.
Security isn’t exactly a strong point of X11, and improving it is one of the main reasons why Wayland is such a vast improvement over X11. Just one of the many examples of X11 being inherently insecure is that keyloggers are entirely trivial on X11, because keylogger functionality is effectively built into it. Of course, this isn’t exactly news, and as Peter Hofmann details, there is an old X11 extension that adds somewhat rudimentary security to X11: the X11 SECURITY extension. This extension is part of every X.org installation, but it hasn’t seen any meaningful work in a long, long time. What it does is allow you to do is set X11 clients as “trusted” and “untrusted”, where untrusted clients cannot interact with tusted ones. This provides some basic security – it actually prevents keylogging! – but only very basic, as Hoffman notes: The thing is that it’s immediately clear that this extension — in its current state — is not the answer to “X11 is insecure”: You only have two classes, trusted and untrusted. That’s not enough. For example: When you run your browser as untrusted, you can’t simultaneously run some sandboxed program (Snap, Flatpak, …) in a meaningful way, because those two clients can spy on each other again. You want a proper per-client isolation instead. Sandboxing plays an important role here. If you run programs “the traditional way” (i.e., full access to the filesystem and network), then an attacker can do all kinds of things and X11 keylogging is just one of a million concerns. ↫ Peter Hofmann but it also happens to break a lot of things, and many applications simply don’t work with it at all. Oddly enough, Firefox has no issues with it, and will happily run in untrusted mode. The biggest problem, however, is that untrusted clients only have access to exactly two other X11 extensions, which leads to a whole host of problems, like no scaling, broken keyboard layouts, no 3D acceleration, and so on. On top of all of that, it breaks clipboard functionality, as anything copied in an untrusted client cannot be pasted anywhere else. As such, Hoffman concludes: In its current state, I’d say the SECURITY extension is “somewhat useful”, but more work would have to be done. Both in X.Org and in the clients. You would have to come up with a new clipboard protocol, for example. And the list goes on. (See where I’m going with this?) It’s not that simple. ↫ Peter Hofmann Since pretty much nobody adopted it when this extension came out in the ’90s, and it hasn’t seen much work since, the amount of work that would be required to bring it up to modern standards would be astronomical, and trying to get clients to adopt it would probably prove fruitless considering Wayland already exists, and offers all of the potential security benefits and then some. People often claim it would be “easy” to modernise X11, but just this one particular issue – security, kind of important – shows just how quickly the X11 house of cards comes crashing down if you try to do anything to drag it out of its ’80s and ’90s mindset.
Claude Code has considerably changed my relationship to writing and maintaining code at scale. I still write code at the same level of quality, but I feel like I have a new freedom of expression which is hard to fully articulate. Claude Code has decoupled myself from writing every line of code, I still consider myself fully responsible for everything I ship to Puzzmo, but the ability to instantly create a whole scene instead of going line by line, word by word is incredibly powerful. ↫ Orta Therox Oh sweet Summer child. As a former translator, I can tell you that’s how it starts. As time goes on, your clients or your manager will demand more and more code from you. You will stop checking every line to meet the deadlines. Maybe you just stop checking the boilerplate at first, but it won’t stay that way. As pressure to be more “productive” mounts, you’ll start checking fewer and fewer lines. Before you know it, your client or manager will just give you entire autogenerated swaths of code, and your job will be to just go over it, making sure it kind of works. Before long, you realise there are fewer and fewer of you. Younger and less-skilled “developers” can quickly go over autogenerated code just as well as you do – but they’re way cheaper. You see the quality of the code you sign off on deteriorate rapidly, but you have no time, and not enough pay, to rewrite the autogenerated code. It works, kind of, and that will have to be enough. The autogenerated codebases you’re supposed to be checking and fixing are so large now, you’re no longer even really checking anything anymore. Quick, cursory glances, that’s all you have time for and can afford. Documentation and commenting code went out the window a long time ago, and every line of code scrolling across your screen is more tech debt you don’t care about, because it’s not your code anyway. And then it hits you. There’s no skill here. There’s no art here. You’re no longer a programmer. There’s no career prospects. Scrolling past shitty autogenerated code day in, day out, without the time or pay to wrangle it into something to be proud of, is the end of the line for you. Speak up about it, and you’ll be replaced by someone cheaper. The first time I was given a massive pile of autotranslated text to revise, without enough time and pay to ensure I was delivering a quality product, I quit and left the translation industry instantly. Like programming, translating is part skill, part art, and I didn’t get two university degrees in language and translation just to deliver barely passable trash. I took pride in my work, and I wasn’t going to let anyone put my name under a garbage product. Programmers, you’re next. Will you have the stones to stand by your art?
Wayback has been barely announced, and the first version 0.1 has barely left git, but it’s already time for version 0.2. It won’t surprise you to find out this isn’t some massive release, and you’d be right. It really only addresses a few very small bugs, while the developers also take the opportunity to highlight Wayback is now available on Gentoo GURU and Nixpkgs.
If there’s one thing Microsoft is good at, it’s creating weird variants of Windows with odd names that tech media talk about for like a day, after which everyone, especially Microsoft, forgets they even exist. Usually, these weird Windows variants are the result of either legal requirements, or, more commonly, of perceived threats to Windows’ dominance on the desktop. An example of the former are the various “N” editions of Windows, while an example of the latter is the one we’re talking about today: Windows 11 SE. I honestly had completely forgotten Windows 11 SE existed, and most likely you did, too. Windows 11 SE was (one of) Microsoft’s response(s) to the growing popularity of Chromebooks in schools, and as such, this Windows variant omitted a bunch of features for performance and distraction reasons, stored files in OneDrive instead of locally, was locked down so only administrators could control which applications could be used, and so on. In fact, unless specifically whitelisted, Windows 11 SE would not run any Win32 or UWP applications – everything had to be either a PWA or a website. Notably, it was only available in combination with a few specific devices. The past tense in the preceding paragraph should be a dead giveaway of what’s happening. Yes, Microsoft just cancelled the whole thing, after being on the market for only a few years. Microsoft will not release a feature update after Windows 11 SE, version 24H2. Support for Windows 11 SE—including software updates, technical assistance, and security fixes—will end in October 2026. While your device will continue to work, we recommend transitioning to a device that supports another edition of Windows 11 to ensure continued support and security. ↫ Windows 11 SE support document In other words, if your school fell for Microsoft’s sales pitch for Windows 11 SE, you’re kind of screwed after October 2026, because Windows 11 SE only shipped on specific, low-cost, low-powered devices. You’d think other variants of Windows 11 will more or less run on those, too, but if not – or far too slowly – your school is now sitting on a pile of e-waste. Anybody want to run a betting pool for the Windows variant Microsoft will cancel next?
Late last year, we talked about Bismuth, a virtual machine being developed by Eniko Fox, one of the developers of the awesome game Kitsune Tails. Part of a operating systems development side project, Bismuth is a VM (think Java Virtual Machine, not VMware) on top of Fox’ custom kernel, designed specifically to run programs in a sandbox. The first article detailed the origins of Bismuth, and the second article delved into memory safety, sandboxing, and more. We’re a few months down the line now, and Fox recently published another article in the series, this time explaining how a hello world-program works in Bismuth. This is the third in a series of posts about a virtual machine I’m developing as a hobby project called Bismuth. I’ve talked a lot about Bismuth, mostly on social media, but I don’t think I’ve done a good job at communicating how you go from some code to a program in this VM. In this post I aim to rectify that by walking you through the entire life cycle of a hello world Bismuth program, from the highest level to the lowest. ↫ Eniko Fox There’s a ton of detail here, and at the end you’ll have a pretty solid grip on how Bismuth works.
Servo is unique for a few other reasons, too. It’s managed by the Linux Foundation Europe with decisions made by a technical steering committee, not a big tech company. One of the main goals is to be an “embeddable web rendering engine,” meaning it’s not just for browsers—it could be a replacement for Electron or the Android WebView. Servo is also the first completely new browser engine in decades, so it’s taking lessons learned from mainstream browsers while building a new foundation. ↫ Corbin Davenport At the moment, as Davenport notes, Servo is far from ready to be a daily driver browser engine. Tons of websites’ rendering is broken and some crash the browser altogether, and performance is nowhere near that of the other browser engines. This makes perfect sense, as Servo is still in heavy development, and there’s no massive corporation with endless money (and ulterior motives) backing it. Still, out of all the various attempts at wrestling control away from Blink and WebKit, I feel like Servo’s the one with the most promise in the long term.
When someone has a plumbing emergency, they’re not flipping through a phone book; they’re Googling for help nearby. That’s why local SEO matters more than ever for plumbing businesses. If your name doesn’t show up in those local searches, you’re missing out on jobs that could’ve been yours. Thankfully, getting found online isn’t as hard as it sounds. With the right strategies in place, you can turn online visibility into real, paying customers. Start with Google Business Profile Optimization One of the first steps in digital marketing for plumbers is claiming and optimizing your Google Business Profile. This is what appears when someone searches for “plumber near me,” and it’s packed with potential. Add your business hours, contact details, services, and plenty of photos. Encourage happy customers to leave reviews, and always reply to them. Reviews help boost your ranking and show potential customers that you’re responsive and trustworthy. Keeping this profile updated is a small task with a big impact. Use Location-Based Keywords Across Your Website People don’t just search for “plumber.” They look up phrases like “drain cleaning in ” or “emergency plumber near .” That’s why location-based keywords are so important. They help your business appear in searches that are specific to your service area. Add these keywords to your homepage, service pages, image alt texts, and meta descriptions. This tells Google exactly where you work and what you offer. It also helps visitors know right away that you serve their area, which builds instant trust. Create Service Pages for Each Location You Cover If you work in multiple towns or neighborhoods, create a separate service page for each one. These pages should mention the area name in the title, headers, and throughout the text. Include unique content for each page to prevent duplication. For example, instead of a single generic service page, create separate pages for “Water Heater Repair in ” and “Toilet Installation in .” This enhances your local reach, making it easier for potential customers to locate you. Plus, it boosts your SEO by showing relevance in each area you serve. Earn Backlinks from Local Websites Backlinks, links from other websites to yours, are like digital referrals. Local backlinks are even more valuable when you’re trying to establish a strong presence in a specific area. You can earn these by sponsoring community events, listing your business in local directories, or being featured in neighborhood blogs. Write guest posts, connect with local bloggers, or ask your suppliers to mention your business online. Each backlink signals to search engines that your site is trustworthy and relevant. And the more relevant the site linking to you, the better your SEO will be. Publish Helpful, Local-Focused Content Regularly One of the best parts of digital marketing for plumbers is using content to their advantage. Writing blog posts about common plumbing problems, seasonal maintenance tips, or FAQs can boost your visibility and show that you know your stuff. Focus on local topics, such as how to protect pipes during your area’s winter or the local water issues people commonly face. Make your content conversational and easy to understand. When people find helpful answers on your site, they’re more likely to remember your name when they need a plumber. Fresh content also keeps your site active, which Google loves. Showing up in local searches doesn’t have to be complicated. It’s about being clear, helpful, and consistent online. Focus on the basics: a solid Google Business Profile, smart keyword use, and content that speaks to the people you serve. Local SEO is one of the most effective ways to ensure your plumbing business appears when and where it matters most.