Press "Enter" to skip to content

Posts published in “Computing”

The art and science of mechanized thought.

Test Post, Please Ignore

centaur 0
Nothing here to see. This is a test. This is another test. Again, nothing here to see. This paragraph is also a test. Test. Test. Test. And finally, this is one more paragraph. Test. Test. Test test test. -the Centaur P.S. This is to see whether the Classic Editor is still broken in WordPress. UPDATE: Yes, it still is! Leaving this here for now.

[eighty-seven] minus one-two-one: can i help? i think i can help

centaur 0

So, in case you don't own this cat, the little brow-furrowed face Loki is currently making is his "I really want your food but you're not letting me eat it, so I'm going to sit just at arms length and fume" face. He thinks if he waits long enough, he'll be able to sneak in and try some. My long arm thinks otherwise.

Anyhoo, while I said I wanted to put blogging at the first of the day to make sure it got done, it turns out that I was way more interested in making sure that I didn't fall grievously behind on my Camp Nano project, Dakota Frost #7, SPIRAL NEEDLE, nor miss any of my other responsibilities.

I'm mostly caught up now, so I'm trying to put blogging back on the queue. Interestingly enough, after my rant about blocks, the WordPress folks have reached out to talk to me about blocks. Talk about customer service! So I'm also blogging trying to replicate the bugs I observed the other day that set me off.

So far, I cannot replicate the cut-and-paste error, where trying to select all the text only copied part of it - it is entirely possible that the system had just gotten into a cruftly state, which can happen to any program of sufficient complexity.

I can, however, replicate the cut-and-paste problem I had, where trying to re-order sentences introduced new paragraph breaks in a way that's not standard for Word, Google Docs, or TextEdit. This is probably most directly attributable to the text being in blocks, but it might be fixable.

I also reproduced the "Where's Waldo" interface issue where I could not easily inject new blocks - though now I see that can be fixed with a carriage return followed by a slash, which is documented in the interface, it is also possible that at the time something was just wrong with my editor.

I also debugged the problem I had with the interface. In TextEdit, Word and Google Docs, the first line of your document is the first line of your document. In WordPress, it is invisibly a title, as opposed to the Classic Editor which distinguishes this with a different text entry box. This is also probably fixable.

But there are other strange errors. Like, the sidebar that let you change the properties of the post are normally present when I blog, but had disappeared when I started this post. Weirdly, not even the button to show them was present - I had to toggle several other buttons and then it appeared, just where I remembered it. Not sure what's going on there. Since I restarted my computer recently and re-logged into WordPress, perhaps this is a "sticky" setting that went away when I cycled my browser. Still investigating.

-the Centaur

Pictured: Loki, trying to help me study generative AI.

[eighty-nine] minus one-oh-six: i don’t know they’re literally incompetent …

centaur 0

This is your daily reminder that the Gutenberg editor of WordPress is a dumpster fire. I don't know that the people who made it are literally incompetent as far as technical coding goes: the bones of the program seem to be a well-functioning machine that rarely breaks down.

But Gutenberg is incompetent as a text editor, and whoever designed it was literally incompetent in terms of the "blocks" based design that they chose to push on all of us, because the "blocks" editor literally does not work as a text editor: basic things like selecting text, cutting it, and pasting in into a new place don't work, because the "blocks" break up your text selections and prevent you from maneuvering in the document.

Microsoft Word doesn't have this problem. Google Docs doesn't have this problem. Overleaf doesn't have this problem. Dropbox Paper does, a little, and it shares the incorrect (and I will fight you on that) "Where's Waldo" style interface which hides the text editor controls when you're not hovering over them, making them undiscoverable - perhaps Dropbox was also infected by "user experience."

But most damningly, the Classic Wordpress editor didn't have this problem. They had something that wasn't broke, and they didn't fix it with the incompetent thing they replaced it with, but they were so committed to forcing everyone to use their new thing, they broke the old one. (This is your daily reminder that using Classic Editor in modern WordPress destroys the formatting of the posts).

And I want to point out: the person who did this, Matt Mullenweg, did this to us on purpose:

We Called it Gutenberg for a Reason

It moves the WordPress ecosystem forward, but it also moves the whole web forward. Which is scary! Because change always is, and this is a big one. But a scary thing is usually a thing that leads to growth, if you can push through it. ... apathy would worry me a lot more than disagreement or controversy. Creating great software will never make every person happy. 

So, in case you have trouble parsing this ... Matt and his team wanted to push a technical change which benefited their "ecosystem" - likely, just some internals of their system that they wanted to clean up, which would make it easier to implement features no-one wanted - and they started with a mindset that interpreted their failures as user unhappiness and software problems as complaints, which people needed to just power through so they could get to their new world order.

Matt, you took something that worked and broke it, and replaced it with something which will literally never work. Text editing is not block editing, and it's never going to be. It's a serial string of tokens that encodes a proxy of speech, and if you try to impose blocks on it, your editor will fail, as yours failed me today.

I was working on a post. One not much more complicated than this one. But simply cutting and pasting text was something that the Gutenberg editor failed miserably at, and I was not able to successful edit my text. Even copying it out to Word took several tries, because not only did Gutenberg make it hard to select all the blocks, it did not even copy the text out of all the blocks, so I had to do it piecemeal.

I don't actually want to give up on Gutenberg becoming better. But I strongly feel the only way to successfully fix the interface it is to thow away the key metaphor behind it - the block. That's fine as a backbone behind the text which WordPress uses for rendering - but a text editor should manipulate text.

-the Centaur

Pictured: some nice flowers which the previous owners planted near a corner.

[eighty-six] minus one oh four: the nonsense continues

centaur 0

Above you can see the latest nonsense: today this is what the "new" Gutenberg editor on WordPress started showing me when I start trying to write a post. There are no text controls, the place to write is tiny, and most of the page is taken up by a "Featured Video" section that I have never seen before and never use.

I haven't updated WordPress recently. I've never, that I can recall, used the Featured Videos feature, and certainly haven't done so in the past ten or so posts. Yet the editor appears in this mode, even if I refresh the page to get a clean view. I just want to edit a document! Why is this interface doing everything but that?!

For clarity, below you can see the normal view I get when creating a post: a place to type text, along with text controls, with the video editor present only as collapsed bar (not visible in the normal view, but it's still there, way down on the bottom of the page).

Back in the old days, the industry promoted standards for keyboard shortcuts in menus so they would be easy and consistent to use - but early in the history of the Macintosh, Apple failed to deliver these in a point update, and started pushing the idea that we didn't need keyboard shortcuts, just the mouse. It's now even hard to find information on these standards, much less the articles that documented how they disintegrated - it's like these articles got scrubbed from the web, but it's more likely the original sites are gone, and any few that remain are now lost in a deluge of helpdesk articles on keyboard shortcuts.

Back in the old days, the industry promoted borders for windows to resize them, visible scrollbars to do things, and buttons with tooltips - but then a flood of print design people flooded software development after the introduction of the web, and the so-called "clean" look of print began to be applied to our tools. Nowadays, to resize a window you have to aim for its literally zero-pixel-wide edge, you need to dig in the settings to make toolbars appear, and finding the controls in an interface is a game of Where's Waldo, except Waldo is invisible most of the time, and sometimes moves around the screen to avoid your mouse.

These things aren't happening because software creators are trying to make their software usable: they're happening because they want to feel good about how it looks. Let's stop trying to make "user experience" happen: it's the wrong direction for software tools that people use, which requires a focus on usability.

The first test of your software is whether people can use it.

Usability is king, and only usability is usability.

-the Centaur

Pictured: The Gutenberg editor, which decided to start today in a mode I've never seen before. :-/

[eighty-five] minus one-oh-four: what even IS that?

centaur 0

Recently on Twitter I said everything's going to hell in a handbasket on the Web. Let me show you ...

Oh, wait, I can't show you, because WordPress's Gutenberg is not letting me paste a link. More properly, it's turning the link into a Twitter embedding. Now, that looks nice, and it seems like a nice feature, but I didn't want that, because Twitter is increasingly erratic, and I am afraid the Twitter embedding feature will go away when Elon Muskhead gets tired of suing people over his own stupid mistakes and starts mucking with the code again. So I just wanted to paste a link, and then the text, myself.

But I had to "hack" the interface to do it, first posting a different link, which I then edited to point to Twitter. Does that seem right to you? That's one thing that inspired my post. Let's try again to see it:

Anthony Francis @xenotaur
The Web feels like it is disintegrating. Popup ads everywhere, train wrecks at Twitter and Reddit, Threads is just mobile, sponsored results on Google, fake reviews on Amazon.

And here I am watching my 1,000 curated RSS feeds slowly vanishing, going "This is fine…" #ThisIsFine


Part of the problem is what Cory Doctorow calls the "enshittification" of the Web: first companies are nice to users and attract them; when they have users they screw them over for their business customers; and then they screw business users overs as they start to chase advertisers, eventually driving the users away.

I think that's right, but it's more than that: people lose sight of what the Web actually is. Web 1.0 is a place to share documents; Web 2.0 is a place where you can create them online. We've had ads and subscriptions in this place since their earliest days, and I don't mind them - I put "banner ads" on my early website to advertise people whose blogs and books I liked, for free, just to publicize them.

But losing sight of the purpose - turning editors into viewers, or documents into ads streams - means the reason people were here, to consume and create content, can no longer be accomplished. And that's going to ultimately kill the great grift that is modern Web advertising - but let's not kill the Web too!

As an on-point example, I offer the Gutenberg editor, which constantly hides from you the widgets needed to transform a piece of text into, say, a pull quote, because it is incorrectly (and I will fight you on this) trying to make the page look like a piece of paper, instead of a craftsman's tool for producing text, with all the bells, whistles and knobs needed to make it format right, much less look good. Want something simpler? Fine, try Notepad. Don't inject your bad UI design into my editor, which, as I remind you, I am forced to use on my platform, which I never wanted to, because they broke the Classic Editor to push this idiocy.

It's not that the features aren't useful. It's that the entire philosophy of "UX" - user experience - is wrongheaded, and we need to go back to the more basic principles of software usability. Usability is not "modern", usability is not "clean", usability is not "design" - only usability is usability.

And so, if you take a tool that is designed to produce text ... and try to make it look like a view of text ... you will inevitably end up with something that is not usable. And if your philosophy tricks you into thinking that that is OK, your philosophy will drive you to make decisions which make the interface less and less usable.

And that would be the end of rant ... except I have a counterexample at the top of the page.

This is a page that recently appeared in my reading. I will take the clean, modern, well-designed Gutenberg editor any day over what modern web pages have become. Look at that above! What even IS that? What is it supposed to be? Where did my article go? What are these different blocks supposed to be advertising? They're so layered over each other you can't completely see any of them. "Choose great value" sounds like a line from a badly translated JRPG.

As best as I can determine, somehow I scrolled down to read the rest of the article, and it jumped to a join between articles on an "infinite scrolling" page. While some infinite scrolling pages are OK, most simply aren't. Especially a page for an article: you can't read the article anymore with infinite scroll. It doesn't stop, and if the next article has a similar topic, it can even seem like a new heading, making you wonder what the connection is, but giving an opportunity to sell ads - leading to what I think happened here.

So, while trying to read, and thus, scroll through this content - an article which claimed that Doctor Who's time travel was surprisingly accurate, which is more true than most people know - the page jumped to a join between articles in the infinite scroll. Because the page "jumped", all of this just popped into view; it wasn't clear that I scrolled, or that scrolling would get me out of it). The layout completely hides the articles above and below, and the jumble of popups fall over each other, leaving me no context of what to click on.

If you try to turn a document reader into an ads stream, you will fail at doing both.

I fear for the future. Because I love the Web ... and it's killing itself.

-the Centaur

Pictured: a screen shot of, of a broken article on the science of Doctor Who, correctly recommended to me by Google News, and completely garbled by ScreenRant's infinite scroll and jumbled ad presentation, leaving me unsure of what, if anything, to do other than ... just close the page.

(Actually, I reloaded it from scratch, selected the text of the article, and printed it for later reading. I don't care if there's an ad on the page or not; that's fine. I just demand to be able to read the darn thing.)

[seventy-two] minus sixty: a long, long time ago …

centaur 0

I saw some people blogging about their 20th blogging anniversaries, so I decided to check how long my blog has been up. And .. So! I apparently missed the blog's 20th birthday, as it started in November 2001 ...

... unless I blogged it and forgot about it. And I also missed my first (recorded) web page's 25th birthday ...

... as I started my website sometime in 1996.

So no birthday post for you. I guess I'll have to wait to the blog's 25th (or web page's 30th) birthday in 2026.

-the Centaur

[fifty-three] minus twenty-five: momentum is real

centaur 0

Now, see, this is what I was talking about last time. At the Game Developer's Conference today, after a long and informative series of talks, I ended up having an impromptu roundtable about language model planning, followed by a dinner with a friend talking about the history of the conference from a behind-the-scenes perspective.

The discussions were fascinating, and there are potentials for integrating these new language model technologies with older techniques like logic programming to very good results.

But, by the time the dinner was done, I was exhausted, and crashed back at my room, trying to sleep off some of the effects of two nights of rich dinners, no sleep, and hard-core information overload.

But I still had more work to do, creating my slides for the upcoming HRI in Academia and Industry Workshop at the AAAI Spring Symposium Series, not to mention my document updates on the main social navigation benchmarking paper itself. And, of course, all of that could not get finished in one night, not if I want to get up early enough to attend what are sure to be packed talks tomorrow morning.

But my point, and I did have one, is that if I had relied on myself to blog at the end of the day "when everything was done", I wouldn't have blogged at all, because everything is NOT done. But, since I had momentum from earlier in the day, it was easy to pull up the window and put together a quick post.

This post.

So, momentum is real. Once you start doing something, it's easier to keep doing it.

-the Centaur

Pictured: Various lines and slides from today's GDC, and a nice dessert from Amber India.

[fifty-two] minus twenty-six: oh yeah, gdc

centaur 0

Oh yeah, I only offhandedly mentioned - back at the Game Developer's Conference!

Hi Mom! Oh wait, she's gone. That ... went dark fast, Francis. Well, hopefully she's watching up there and is not too mad that I'm still wasting my time on such frivolous things. But, I got my job at Google through the AI Programmers' Roundtable in ... 2005, I think it would have been, so this is not frivolous to me. And it's a great place to find out what's going on in the field ...

... and I must say, the first talk out of the gate got dense, fast!

Just how I like it.

Back into the fray!

-the Centaur

I’m scared of Homebrew’s installation procedure, but I still love Homebrew

centaur 0

This is a followup to my Making Computers Useful series, started all the way back in 2014. (Funnily enough, the 2013-era iMac featured in that series is now pretty damn useless as it has fallen out of update range, and locks up if you run Dropbox and Google Drive at the same time).

But, the overall goal here is to document some of the stuff that I need to do to make computers work for me. Typically, there’s a lot of friction in software, and it takes a good bit of work to make that all function on a new machine. Sometimes that becomes a deep dive.

This is one of those stories.

So today, while updating the Embodied AI Workshop’s website prior to the launch of the 2023 version, I wanted to run the tree command. Tree is great because it can help you understand the structure of a directory tree, like so:

I felt I needed this because the Embodied AI website is built on yarn and gatsby, and it turned a relatively simple site into 1.6 gigabytes of generated junk (which I noticed when one of my older computers started literally wheezing as it tried to mirror all those unexpected files):

As it turns out, you can get tree via Homebrew. Homebrew is a “package manager,” kind of like an “app store for the command line,” and Homebrew helps you get standard Linux tools, like tree, onto your Mac so you can take advantage of all the hidden Unix goodness in your Macintosh. 

However … I’m a bit leery of Homebrew because this is how it installs itself: 

I mean, WHAT? curl a file and run it with bash? Seriously. Now, look, I’m not saying Homebrew isn’t safe - every indication is that it is - but that this METHOD of installation is a recipe for disaster. 

Why? Well, in case you’re not in the know, what this installation instruction is suggesting is to DOWNLOAD RANDOM CODE FROM SOMEWHERE ON THE INTERNET and RUN IT ON YOUR COMPUTER WITHOUT CHECKING IT AT ALL!

Nothing can go wrong with this plan.

Now, I’m no expert, but I’m familiar enough with this stuff to know what I’m doing. SO, first I checked with a few quick searches to see [is homebrew for mac safe] and it appeared to be.

SO I downloaded the software with JUST the CURL part, like so:

curl -fsSL >

... so I could examine it more closely.

Folks, seriously, never do this on a site you do not trust.

After I had the code, I then inspected this file to find out whether it was safe. I didn't see any obvious malware, but when I ran it, it wanted me to TYPE MY PASSWORD.


Please, I’m asking you, do not hot-pipe random software straight off the internet and run it straight from the command line and give it your password when it asks. If someone intercepts the website, and gets your password, they can do anything.

(SERIOUSLY. Once I was working with a legitimate Google representative about a Google ads program and when I went to log in to Google ads to check something, a hacker injected a fake Google ads site between me and Google, and damn near got my password. Only two-factor authentication saved me, as it broke some key link in the chain.)

BUT … it is the PATTERN I’m talking about here, not the specifics. Everything I’ve seen about Homebrew says that it is safe. I’ve even used it before, on other machines. SO, after some more research, and a little more code analysis, I confirmed this password-asking was safe, and gingerly went ahead.

And it went fine. 

I had to pay thirty million bitcoin to a Russian spammer, but I wasn’t using it anyway, and I’m sure at least they got to buy a cup of coffee or something with it. :-D

Seriously. It went fine. And I love Homebrew. I just go through this every time I need to “bash” run a piece of “curl”-ed software straight off the Internet and then it asks for my password.

Still, tree worked like a charm. (Screenshots of its use were above). There are more pieces of Homebrew software I need to install, but as one test, I tried to install “banner”, a program to create oversized pieces of text, which I use in scripts to alert me that a big task is done.

But, it seems like Mac already has a version of banner, which works differently on Mac than Linux, printing VERY large ASCII banners that are vertical rather than horizontal. That’s useful, but not for my case, so I dug around for an equivalent tool.  brew install figlet is the way to go:

All great! 

It didn’t help me with my work on the Embodied AI website, as I had already moved on to fixing other problems on that website, and was only “brewing” things in the background while I did other tasks (like remote-attend the church vestry retreat).

But removing this friction will help me in the future. The next time I need to examine the tree structure of a directory, it's one command away. I can put banners in my scripts. And I can easily add new software with 'brew' the next time it comes up.

AND, as a bonus, I discovered a site which is doing something very much like what I want to do with the Making Computers Useful series, Sourabh Bajaj’s Mac OS Setup Guide, which “... covers the basics of setting up a development environment on a new Mac.” I have an internal document called “Mac OS X New System Tasks” which documents for myself the travails I go through every time I get a new Mac, and Sourabh’s guide seems like it provides a public version of what I want to do. Which is great! Less work for me. ;-D

On to the next task!

-the Centaur

P.S. As another added bonus, I composed this in Google Docs, and pasted it straight into Gutenberg, the new Wordpress block editor. It worked like a charm ... EVEN DOWN TO PASTING IN THE IMAGES! If this is a feature of Gutenberg, I will have to consider saying my favorite three words about it ... "I was wrong."

P.P.S. Don't hold your breath on that, though, I'm waiting for the other shoe to drop.

[forty-three] minus twenty-two: it gets stale

centaur 0

Recently I went to do something in Mathematica - a program I've used hundreds if not thousands of times - and found myself stumped on a simple issue related to defining functions. I've written large, complicated Mathematica notebooks, yet this thing I done hundreds of times was stymieing me.

But - yes - I'd done it hundreds of times; but not regularly in the past year or so.

My knowledge had gone stale.

Programming, it appears, is not like riding a bike.

What about other languages? I can remember LISP defun's, mostly, but would I get a C++ class definition right? I used to do that professionally, eight years ago, and have published articles on programming C++ ... but I've been writing almost exclusively Python and related scripting languages for the past 7 years.

Surprisingly, my wife and I had this happen in real life. We went to cook dinner, and surprisingly found some of the stuff in the pantry had gone stale. During the pandemic, you see, we bought ahead, since you couldn't always find things, but we consumed enough of our staples that they didn't go stale.

Not so once the rate of consumption dropped just slightly - eating out 2-3 times a week, eating out for lunch 2-3 times a week - with a slight drop in variety. Which meant the very most common staples were consumed, but some of the harder-to-find, less-frequently-used stuff went bad.

We suspect some of it may have had near-expired dates we hadn't paid attention to, but now that we're looking, we're carefully looking everywhere to make sure our staples are fresh.

Maybe, if there are skills we want to rely on, we should work to keep those skills fresh too.

Maybe we need to do more than just "sharpen the saw" (the old adage that work goes faster if you take the time to maintain your tools). Perhaps the saw needs to be pulled out once a while and honed even if you aren't sawing things regularly, or you might find that it's gone rusty while it's been stored away.

-the Centaur

Pictured: The bottom layers of detritus of the Languages Nook of the Library of Dresan, with an ancient cast-off office chair brought home from the family business by my father, over 30 years ago.