Musings on software development, technology, and other stuff

  • Published on

    Cloudflare announced EmDash today, a brand-new content management system positioned as a modern alternative to WordPress. It's rough around the edges in places, but it's a strong start, and as of this writing, it's already pulled in 8.9k GitHub stars in a single day. That tells me there's a lot of pent-up demand for something better.

    I've been critical of WordPress for a long time. It's still written in old-school PHP, it's perpetually plagued by security vulnerabilities (the Cloudflare team points out that 96% of WordPress security issues originate in plugins), and the architecture could use a serious modernization. None of that has stopped it from being wildly popular, of course, and for good reason. The community is massive, the ecosystem is mature, and despite its quirks, WordPress is "good enough" for an enormous swath of the web. But "good enough" doesn't mean it shouldn't be challenged.

    EmDash takes some genuinely interesting swings at the problems WordPress has never solved well:

    • Plugins run sandboxed in their own isolated Workers, and each plugin's manifest declares exactly which capabilities it's allowed to use. WordPress, by contrast, runs plugins with effectively full access, which is why so many security issues trace back to them.
    • It's built on Astro and TypeScript, MIT-licensed, with passkey auth by default. No PHP or MySQL anywhere in the stack.
    • It runs on Cloudflare Workers, scales to zero, and bills only for CPU time. You can also run it on any Node.js server if you prefer. (Can you even host a remotely popular WordPress site for less than $30/month these days??)
    • A WXR importer and a dedicated exporter plugin handle migrating existing WordPress sites over.
    • x402 is built in for monetization, so creators can charge for individual pieces of content without setting up a subscription system.

    Is it polished? Not yet. Neither was WordPress in its early days, and neither were the JAMstack tools I moved to back in 2020. The authoring experience for less-technical users is the part I'd watch most closely. AI has made it dramatically easier for developers to scaffold, design, and even maintain websites, but content authors still want (and need) a visual admin to write, edit, and publish without thinking about the underlying machinery. Maybe that calculus changes as AI tooling improves, but for now, the CMS that wins is the one that nails the authoring experience for non-developers. WordPress still has the edge there. EmDash has work to do.

    The bigger deal is that there's competition at all. WordPress has been the default for so long that nobody's had much reason to fundamentally rethink how a CMS should work, and a serious alternative will push both projects forward. There's plenty of room for both to coexist.

    It probably won't hurt Cloudflare's bottom line either. The most natural place to host EmDash is Cloudflare itself, even if Vercel, Netlify, and others add first-class support before long. Building a popular open source project that happens to run best on your own platform is a pretty good business move.

    I'm not planning to migrate this site. The Next.js + MDX setup is working well for me, and I'm already running it on Cloudflare Workers! But I'll be keeping an eye on EmDash. If you've been putting off launching a site because WordPress feels like too much baggage and the JAMstack tools feel too developer-centric, EmDash is worth a look.

  • Published on

    My package—shipped via FedEx and already one day late—was "out for delivery" today.

    It's now almost tomorrow and it's still not here.

    This happens all the time.

  • Published on

    For the past few days, I've been evaluating Mighty, a Chromium-based web browser that runs in the cloud and streams the actual content back to your computer. Traditionally, we'd call this a "thin client"--in other words, it doesn't do any of the processing locally.

    For me, the allure of Mighty was the ability to shut down Chrome and regain gigabytes worth of RAM. My machine only has 16GB of memory and Chrome can consume just about all of it depending on the number of open tabs and how long they've been left that way. That's not to mention the other RAM-hungry apps I use for work on a daily basis, all fighting over the same few available gigabytes. Mighty solved this, using only about 1GB of RAM in total even with dozens of open tabs.

    In general, Mighty is a cool concept and works pretty well. Upon launching it for the first time, it prompted me to import my existing Chrome profiles, carrying over all of my account data, cookies, passwords, and so on, which made for a seamless transition. I was up and running in minutes.

    As I browsed the web, pages rendered flawlessly and usually quicker than before. I chalk that up to the lightning-fast broadband connections that Mighty employs behind the scenes. They can load everything in the cloud and stream a highly optimized bundle to your screen. Text remains selectable so you can copy and paste, videos play normally, and you can't really tell that you're using a browser that's running on a computer hundreds of miles away. I even ran a speed test, which yielded jaw-dropping results of almost 5gbps download and around 4gbps upload. What Mighty pulled off is pretty amazing.

    There are a couple of downsides, though. The first thing I noticed is that pinch-to-zoom doesn't work on many web pages, at least on macOS. It does work on sites like Google Maps, where you'd expect it to, but if you're just trying to make text or images larger, you'll have to resort to zooming the page using the browser's hotkeys (e.g., Ctrl++ and Ctrl+-).

    Casting your screen or a tab to a Chromecast is also broken. The option is there, but no devices ever appear. I'm assuming this is because the actual browser is running on a remote network, so it can't find any of the local streaming devices on your own network. As far as I could find, there's no workaround for that one other than launching your local copy of Chrome.

    But my biggest complaint is the price. At 35/mo,Mightyisratherexpensive.Multiplythattimestwelve,andyoureat35/mo, Mighty is rather expensive. Multiply that times twelve, and you're at 420/yr, which is the price of the 32GB RAM upgrade for a 2021 M1 MacBook Pro. No doubt, Mighty has steep salaries and a pricey hosting bill to pay, so they have to price their product accordingly. But a lot of the problems they purport to solve can also be alleviated by just throwing more RAM at your computer (or by selling your current model and buying the next one higher).

    Maybe I'm just not their target customer, though it feels like I am: someone who can't or doesn't want to shell out the extra bucks for a better computer, but needs the performance benefits Mighty brings to the table. But at the end of the day, the cost/benefit analysis just doesn't hold water for me. It will be interesting to see what happens as time progresses.

  • Published on

    Amazon's Echo ecosystem is a pretty nifty thing to have around the house. From today's weather, sunrise/sunset info, and Amazon Music, it's a tool that both adults and kids use daily.

    One skill in particular that we've grown attached to is Sleep Jar. For the uninitiated, Sleep Jar is a set of audio loops designed to help you fall and stay asleep. They range from ocean waves to a ticking clock (that would drive me nuts) to a box fan, and so much more. Our favorite is called "rain sounds," which provides a soothing backdrop of a rain shower droning outside. It just puts you right to sleep.

    All of that is great, but for one fatal flaw--using it with the Amazon Kids parental controls.

    In our day and age of ever-increasing technological connectivity, it's vitally important that our children have a balanced diet when it comes to their use of technology. It's everywhere they look in the form of TVs, game systems, smartphones, tablets, and even fitness devices! In our home, we do our best to expose our children to technology in a limited manner, ensuring that they're not overdosing on screen time. When the kids reach their teen years, we don't want them to be internet/gaming/social media-addicted monsters, but rather to be well on their way to becoming stable, beneficial contributors to society at large, as God allows.

    One way we do that is by leveraging Amazon's Kids+ services to set limits on when and how various Amazon devices (like Fire tablets and Echo smart speakers) can be used. Amazon's tooling in this area is better than some, but ultimately leaves a lot to be desired. Companies honestly don't put nearly enough investment into ensuring children can safely use their devices with appropriate, granular limits.

    In the case of the Amazon Echo and its assistant, Alexa, the Amazon Kids parental control dashboard allows setting time-based limits on when it can be used. Recently, we set the "bedtime" hours on the Fire tablets to span from 8:30 PM to 8:00 AM. When we later went to ask Alexa to "play rain sounds" in time for bed, we were met with the response "Sorry, I can't play right now. Ask again later."

    At first, I didn't make the connection to the parental controls we'd set for the tablets. I tried rebooting the Echo, using my phone's Alexa app to turn off "do not disturb" mode, and so on, but to no avail. Once I finally recalled that we'd recently set up bedtime hours, I hopped into the parent dashboard for Amazon Kids and adjusted the time window accordingly. Within a minute or so, Alexa was back to responding normally.

    The lack of granularity on these parental controls is incredibly disappointing. It's perfectly reasonable to expect that certain Alexa skills should be available even after the bedtime period begins. Things like setting alarms, playing sleep sounds, or even playing music for a bit could all be legitimate uses of the Echo "post-bedtime."

    Amazon should allow parents to further customize what's available outside of "normal usage" hours. Unfortunately, I haven't seen much change or innovation occurring in this space in quite a while. I'm sure there are plenty of other parents out there who feel the same way. Having excellent parental controls for this type of tech could be a great competitive differentiator. Will anyone step up to the plate?

  • Published on

    As more and more software moves into "the cloud," a differentiation needs to be made between things that are deployed in a datacenter managed by Amazon or Google and those deployed within an organization's own data center, behind its own firewalls and network appliances.

    The most common verbiage for referring to a company's data centers is "on-premises."

    Except that it isn't.

    You'd think that the experts working in the technology industry would use the correct terminology, but by and large, they don't. Day after day I hear developers, managers, and executives alike butcher the English language by claiming that software is running on-premise.

    Let me grab the dictionary for you. A premise is "a previous statement or proposition from which another is inferred or follows as a conclusion." Do you see the problem? I find it highly improbable that you can run anything on a premise.

    The term you're actually looking for is on-premises (notice the extra "s" on the end). Again, referencing our dictionary, the word "premises" is "a house or building, together with its land and outbuildings, occupied by a business or considered in an official context." Ah, that sounds more like it!

    Your company might have a premises for its headquarters, or for a datacenter, and so on. On the other hand, your company is probably founded on a premise, which is why you exist.

    So, next time you're thinking about your data centers, remember--they're on the premises and should be referred to as "on-premises**"** or "on-prem" (the shorter version works too!). Using the wrong word might just make you look poorly educated. ;-)

    I and your grammar-loving colleagues will thank you.

Subscribe to the newsletter