Press "Enter" to skip to content

Posts published in “Computing”

The art and science of mechanized thought.

[twenty twenty-four day forty-one]: squirrel

centaur 0
der interwebs is kaput

Mt internet has been flakey, so I chatted with an AT-AT Druid online about it and they unexpectedly had a free repair tech slot the next morning. Send them? Yeah baby yeah!

After some kerfuffle with the confirmation, we got it scheduled and they showed up at 830 this morning only to find ...

The internet box half ripped off the house and the beginnings of what looked like a squirrel's nest in it.

Remember, folks, step one of network debugging is to check layer one of the stack: your physical equipment. "Your wires are loose" is the network equivalent of "Ain't got no gas in it" from Sling Blade.

So, hopefully, regular blogging will resume soon. Till then, enjoy this lovely blog post thumb-crafted on my phone.

-the Centaur

[twenty twenty-four day twenty-four]: in foggiest depths

centaur 0

One of the problems with computing is when it just gets ... foggy. Not when you're trying to do something hard, or when two pieces of software are incompatible, no. When things just sort of kind of don't work, and there are no known reasons that it's happening, and no reliable actions you can take to fix it.

Once this happened to me when I was working on a robotics device driver, and I realized the lidar itself was unreliable, so the only way to fix problems was to run each configuration ten times and keep average stats. Broken "worked" around ten percent of the time, whereas "fixed" worked around seventy percent of the time (approaching the rate at which the manufacturer's own software could connect to its own hardware).

Today, I ran into a seemingly simple problem with Anaconda, a Python package / environment management system. Conda lets you corral Python and other software into "environments" with different configurations so that potentially incompatible versions can be used on the same computer (albeit, not at the same time). It even gives you a handy indication about which environment is in use in your command prompt, like so:

There's a seemingly innocent blank line between (ThatEnvironment) and the previous line, yes? Not part of the standard Conda setup, but you can easily add it with a single line of configuration, changing the "env_prompt" to include an extra newline "\n" before printing the environment, like so:

Yeah, that line at the end. "env_prompt: \n({default_env})". In a conda configuration - a .condarc, or "dot condarc" file - which is almost as simple as possible. I don't even think the "channels" bit is needed - I didn't recall writing it, I think it just got added automatically by Conda. So this is almost the simplest possible change that you could make to your Conda configuration, done in almost the simplest possible way.

Except. It. Didn't. Take.

No matter what changes I made to the .condarc file, they didn't affect my Conda configuration. Why? I don't know. No matter what I did, nothing happened. I changed the prompt to all sorts of weird things to try to see if maybe my syntax was wrong, no dice. No amount of searching through manuals or documentation or Stack Overflow helped. I re-ran conda config, re-loaded my shell, rebooted my Ubuntu instance - nothing.

Finally, almost in desperation, I went back to my original version, and tried creating system-wide, then environment-specific configurations - and then the changes to the prompt started working. Thank goodness, I thought, and rebooted one more time, convinced I had solved the problem.

Except. It. Took. The. Wrong. Config.

Remember how I said I created a weird version just to see that it was working? Conda started reverting to that file and using it, even though it was several versions ago. It actively started overwriting my changes - and ignoring the changes in the environment-specific configurations.

So, I blew away all the versions of the file - local, system and environment-specific - and re-created it, in its original location, and then it started to work right. In the end, what was the final solution?

I have no idea.

When I started working on the problem, I wanted Conda to do a thing - print an extra blank line so I could more easily see a command and its result, separate from the next command and result. And so I created a file in the recommended place with a line containing the recommended magic words ... and it didn't work. Then I hacked on it for a while, it sort of started working, and I backed out my changes, creating a file in the same recommended place with a line containing the same recommended magic words ... and it did work.

Why? Who knows! Will it keep working? Who knows! If it breaks again, how do I fix it? Who knows!

This is what I call "the fog". And it's the worst place to be when working on computers.

-the Centaur

Pictured: Sure was foggy today.

Robots!

centaur 0

Still at the Conference on Robot Learning. LOTS of robot dogs were about, lots of diffusion model and transformer work, and lots of language model planning. More later, gotta crash.

-the Centaur

Too much to keep up with

centaur 0

When I was a kid, I read an article by Isaac Asimov complaining that the pace of scientific publication had become so great that he couldn't possibly keep up. When I was an adult, I realized that the end of the article - in which he claimed that if you heard panting behind his office door it was because he was out of breath from trying to read the scientific literature - was a veiled reference to masturbation. Yep, Isaac is the Grand Dirty Old Man of science fiction, and, man, we love you, but, damn, sometimes, you needed a filter.

Well, the future is now, and the story is repeating itself - sans Isaac's ending; my regular fiction is a touch blue so there's no need for my blog to get prurient. I'm a robotics researcher turned consultant, focusing on, among a kazillion other things, language model planning - robots using tools like ChatGPT to write their own programs. As part of this, I'm doing research - market research on AI and robotics, general research on the politics of AI, and technical research on language models in robotics.

A good buddy from grad school is now a professor, and he and I have restarted a project from the 90's on using stories to solve problems (the Captain's Advisory Tool, using Star Trek synopses as a case-base, no joke). And we were discussing this problem: he's complaining that the pace of research has picked up to the point where he can no longer keep up with the literature. So it isn't just me.

But the best story yet on how fast things are changing? Earlier this month, I was going through some articles on large language models my research - and a new announcement came out while I was still reading the articles I had just collected that morning.

Singularity, here we come.

-the Centaur

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:

https://twitter.com/xenotaur/status/1677735989249298441

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

ttps://twitter.com/xenotaur/status/1677735989249298441

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 screenrant.com, 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 https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh > homebrew-install.sh

... 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 homebrew-install.sh 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.

Seriously?

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.

[forty-two!] minus nineteen: well, at least i have a system now

centaur 0

Recently, when digging through old posts, I was reminded that Classic Editor posts are broken in WordPress - all the paragraph breaks are gone, and the content is mashed up into one grey wall of text. Thanks, WordPress, for forcing everyone to switch to a worse editing experience AND breaking all our old content.

[hang on a second, i have to start clicking around at random places on the page to try to find the widget or control that will let me start typing again after inserting an image, because software USABILITY has been replaced by "user experience" folks from a graphic design background who have mistaken making things LOOK GOOD IF THEY HAD BEEN PRINTED for the very different ACTUALLY WORKING WELL AS A TOOL - I'm looking at you, WordPress Gutenberg, Dropbox Paper, and everything like you where you have to hover or click or click and select and hover random parts of the page to make it work. Okay, I can start typing again.]

[[ and yeah it just did it again while i was just fricking typing ]]

Ok we're back.

Ok?

Ok.

Anyhoo, I have like a thousand old posts (1371 published, according to the dashboard), but the block converter for fixing these no longer works. I wish I had discovered this problem earlier, but I just didn't expect to have to do blog archaeology when I moved to Gutenberg.

Regardless, however, I now have a system. I open the All Posts page on the WordPress dashboard, and scroll backwards in time until Classic Editor posts start showing up - nice that they provide that nudge to get us to use the new editor, isn't it. Once I find some Classic Editor posts, if you hover - AAAAARRRRRGH, don't mind me - I say, if you hover, you get the option to open with the Block Editor. FORTUNATELY, this is ACTUALLY a link and not a bizarre Javascript pseudo-button - Good WordPress, Good WordPress, have a cookie - and a right click will allow you to open this in a NEW WINDOW.

SO! I go down one entire page of results, opening them in a new window, until I've hit all the Classic Editor posts on that page. This creates a gazillion tabs, true, but then you can click on each tab in turn, and there's a simple three-click process which will activate the block editor, convert the old text, and - BAM! - update. Optionally, one more click will bring up the updated post so you can doublecheck it before closing the tab.

The process is laborious - but it's easy to get a whole page full of results at a time, and you can't easily lose your place, as you close your tabs as you go. I've gotten through 3 pages of results so far, each with 50 posts, so I've updated probably something north of 150 pages.

There are 25 more pages of posts to go, but it doesn't take more than 30 minutes, so I can do one a day for about a month and rescue all the old pages.

A lot of work ... but at least I now have a system.

-the Centaur

Pictured: The House With The Impressive Tree In The Front Yard, found in a nearby neighborhood, as photographed in Night Mode on my Android phone during a walk with my wife.

Announcing Logical Robotics

centaur 0

So, I'm proud to announce my next venture: Logical Robotics, a robot intelligence firm focused on making learning robots work better for people. My research agenda is to combine the latest advances of deep learning with the rich history of classical artificial intelligence, using human-robot interaction research and my years of experience working on products and benchmarking to help robots make a positive impact.

Recent advances in large language model planning, combined with deep learning of robotic skills, have enabled almost magical developments in explainable artificial intelligence, where it is now possible to ask robots to do things in plain language and for the robots to write their own programs to accomplish those goals, building on deep learned skills but reporting results back in plain language. But applying these technologies to real problems will require a deep understanding of both robot performance benchmarks to refine those skills and human psychological studies to evaluate how these systems benefit human users, particularly in the areas of social robotics where robots work in crowds of people.

Logical Robotics will begin accepting new clients in May, after my obligations to my previous employer have come to a close (and I have taken a break after 17 years of work at the Search Engine That Starts With a G). In the meantime, I am available to answer general questions about what we'll be doing; if you're interested, please feel free to drop me a line at via centaur at logicalrobotics.com or take a look at our website.

-the Centaur

phewww ….

centaur 0

... finally, a chance to catch a break.

It's been a difficult few weeks due to "the Kerfluffle" which I hope to blog about shortly (those on my LinkedIn have seen it already) but equally as much from a Stanford extension class I was taking on Deep Reinforcement Learning (XCS234 - speaking as an expert in this area seeking to keep my skills sharp, I can highly recommend it: I definitely learned some things, and according to the graphs, so did my programs).

Finally, that's over, and I have a moment to breathe.

And maybe start blogging again.

-the Centaur

Pictured: A mocha from Red Rock Cafe, excellent as always, and a learning curve from one of my programs from class (details suppressed since we're not supposed to share the assignments).

finally ….

centaur 0

... a computer with a fast fricking hard drive. I use a backup scheme in which one older computer has all my file mirroring services on it (Dropbox, Google Drive, etc) and then backs that data up to a local Time Machine backup. But the old iMac I had had long ago reached the point where it couldn't back up to local network storage and needed a directly connected USB drive, and eventually that, too, gave up the ghost, with Google Drive and Dropbox essentially strangling each other to death if you tried to load them simultaneously. In other news, unrelated except for the inexorable passage of time, my personal daily driver laptop had reached the point where half the keys skip and the battery life was down to roughly 1 minute.

SO! I bought a refurbished Apple Silicon MacBook Pro. Even though it is a gently used machine, way cheaper than the most recent models, this M1 Max screamer has downloaded most of Dropbox and a large chunk of Drive without breaking a sweat. Apparently, the larger, faster SSD of a 2022 MacBook Pro beats the heck out of the old spinny hard drive of a 2015 (or is it 2013?) iMac. Who knew? And it can serve as a daily driver until such time as I can afford a top of the line machine, if I even need one if Apple Silicon is as fast as they say.

Cross you fingies ...

-the Centaur

Ugh, WordPress updates edition …

centaur 0

... the block editor of Wordpress seems to be making my old non-block-editor posts turn into solid walls of text. See the post "Pascal's Wager and Purchasing Parsley":

Yeah, it's not supposed to be looking like that. Gotta track those down and fix them.

In other news, my Half-Cheetah policy is successfully training to "expected" levels of performance. Yay! I guess that means my code for the assignment is ... sorta correct? Time to clean it up and submit it.

-the Centaur

Once again, I’m running deep learning on a Macbook …

centaur 0

... and the trick to getting it working was, as usual, "working just a little bit harder than you want to". Shortly after my last post, I got REINFORCE, a classic reinforcement learning algorithm, successfully training on my local machine, with apparent learning for all three environments in the assignment (though whether my solution is able to reach the expected final level of performance or not is still an open question).

-the Centaur