Press "Enter" to skip to content

Posts published in “Computing”

The art and science of mechanized thought.

i hate heisenbugs …

centaur 0

... so, whatever was causing images not to upload on the NEW website has just stopped happening, without me ever quite being to nail down what it was.

charming.

no, well, actually, frustrating, but, i suspect we will be back in business soon.

-the centaur

pictured: the old library, posted on the new library blog

am i alive?

centaur 0

wtf bro, what be the problem

test test

centaur 0

yes just a test

am i alive?

centaur 0

Strange ... I finally upgraded the blog, but the first post after fixing the blog seems to have disappeared ... and we're back on an older version of WordPress. What's up?

test test.

-the Centaur

still not dead, but blog updates must wait …

centaur 0

Okay, so some people are worried about me since I haven't posted in a while, so I thought I'd weigh in on what's going on - and explain why this will be the last update of the blog for a while, but hopefully, not forever.

As I mentioned earlier, I unexpectedly ran out of space to upload images to the blog - my reported quota was 35 gigabytes, but in practice the system craps out at 25. (And believe you me, it took a lot of debugging to figure that out).

This charming discovery happened right around the time that I spilled water on my laptop, which was a one-and-a-half week fix; that itself came in the middle of June, where I took 5 trips (Con Carolinas, the Nebulas, a Logical Robotics trip, CVPR/EAI, and Seattle) and was followed by July, where my wife and I, after almost five months of being mostly apart, had just two short weeks to catch up before her trip to go help her mother deal with the death of her stepfather. Not to mention the Unsolved Problems in Social Navigation Workshop, and The Neurodiversiverse copyedits and sensitivity edits. And Camp Nano, of course, far behind.

Good times, good times.

So, during all that, I didn't have time to update the blog's backend. Sorry.

Now, I've got a little free time, and I've started to do that - but it involves moving to a new provider, and that, itself, comes with a wrinkle. I'm going to have to copy all the data from the old provider, which is a painstaking process, since ~25GB and +25K files is far too large a file system for any normal FTP client to download without crashing. (And believe me, I've tried). So I have done the bulk of this copy now, but still have to verify that the files have correctly downloaded, which will actually involve writing a program to compare the trees, as I haven't found anything yet that will do that on a file tree this size over a connection this flaky.

Presuming success on that ... the next step is downloading the Library of Dresan database and migrating to the new provider.

So, if I blog any more here, I'm going to have to download that again. I already need to re-download this blogpost's image, as it wasn't in my first capture; but I wanted to test whether deleting the log files would have given me space to upload more images (it did). But downloading the database multiple times just because I can't stop blogging is a bridge too far.

SO! Until the migration is complete, I'm going to blog very sparingly, if at all. Sorry about that.

Hopefully it won't take too long.

-the Centaur

Pictured: A (mostly) vegan breakfast sandwich (except for the honey bread, since my favorite vegan bread was out at the store) - toasted bread, Just Egg, black salt and pepper, and two vegan patties from a new company whose name I can't remember; the ensemble of which always looks to me like a scream. Does that sandwich look right to you?

Unsolved Problems in Social Robot Navigation at RSS 2024

centaur 0

Hey folks! I am proud to announce the Workshop on Unsolved Problems in Social Robot Navigation, held at the Robotics, Science and Systems Conference in the Netherlands (roboticsconference.org). We are scheduled for 130 pm and will have several talks, spotlight papers, a poster session and discussion.

I'm an organizer for this one, but I'll only be able to attend virtually due to my manager (me) telling me I'm already going to enough conferences this year, which I am. So I will be managing the virtual Zoom, which you can sign up for at our website: https://unsolvedsocialnav.org/

After that, hopefully the next things on my plate will only be Dragon Con, Milford and 24 Hour Comics Day!

-the Centaur

Pictured: Again, from the archives, until I fix the website backend.

Not Dead

centaur 0
Tangled connections ...

CVPR and EAI took a lot out of me, and some unexpected stuff came up. Regular blogging will resume next week, once I return to sanity land.

-the Centaur

[twenty twenty-four day one six oh]: zero inbox

centaur 0

Okay, the Nebulas are over, and I should blog about that, and I'm a day or two ahead on drawing, which I should post when I get the website backend fixed, and I'm a day behind on blogging, so I should get caught up on all that.

But I just spent about two hours pursuing, and achieving, zero inbox across all three of my major email accounts, so I am VERY tired, and I am going to crash shortly.

Zero inbox is the discipline of clearing ALL the messages from your inbox - either by handling them, or categorizing them into folders for further action. This means what comes into the inbox in the future can be more quickly dealt with (or more easily unsubscribed from).

Now, I have a LOT of email in the folders I filed - probably hundreds of messages. But I had at least twenty thousand messages built up across all three accounts, most of which were spam, promotions, social media notifications, forum posts, or other notifications which were functionally worthless.

Now, even though there are hundreds of messages to process ... they're just in the hundreds.

And that feels way more doable.

Okay I go crash now.

-the Centaur

Pictured: A blast from the past in the Atlanta Airport (while blog images are still down).

[twenty twenty-four day one five nine]: fight the molasses

centaur 0

So! I made it. I'm at the hotel where the Nebulas will be happening, and by the time you read this (according to my records this should be post 159, and according to this day-of-the-year calendar that should be Friday, but as I type it's a hair before midnight Wednesday night) I should have already done the first of my events.

But I also have a day job, and since I was "drawing, on average, every day" and reading Neal Asher's Shadow of the Scorpion on the flight out, I took advantage of my oops-you-checked-in-in-advance-but-we-didn't-reserve-your-actual-room drink voucher and got an Old Fashioned at the soon-to-close hotel bar.

(Apologies to the hotel bar staff: I came in 30 minutes before close, just as they were cleaning up and switching over to sidework, but me plopping myself down at the bar apparently opened the floodgates, for something like half a dozen people then showed up right after I did).

At the bar, I cracked open Visual Studio Code, ChatGPT and Stack Overflow in an attempt to find a more parsimonious dataset representation for one of my clients. I'd built a horribly data-inefficient version of a machine learning dataset for them on the principle "get the fucker running so we can see whether it works" but the fucker worked, so we need now to make it at least marginally more efficient as we now turn our attention to "let's see whether this fucker can fucking scale up."

It looks like a data representation called HDF5 is worth a first shot (not that it's the best or the only, but it has C++ and Python bindings and appears simple to integrate into both our custom data set writer and into our custom PyTorch data loader). So, I did a little digging via Bing/Google to verify the best way to install HDF5 for Python (h5py for Conda, in this case) and set down to try out ChatGPT's recommended test case.

But ... the installation locked up.

Restarted the install. No dice. Then I thought it was the janky hotel Wi-Fi. Switched to my own personal hotspot. No dice. Tried a bunch of StackOverflow recommendations to fix the problem. No dice. Fifteen, then thirty, then forty-five minutes stretched by, as I tried to get a simple darn package to load.

This is, as I've said before, the problem of "molasses" in computer programming: the gummy gook which makes it impossible to do simple tasks. Another colleague called it "the novice penalty, and it's real": people who work in a domain all the time learn the tricks to make it work, but novices don't know these tricks, and struggle to do things that "experts" think are easy because they've forgotten they are difficult.

I almost gave up. But molasses needs to be fought. As I often say, oftentimes, you need to work a little bit harder than you think you need to, and when you do, you'll find that you're greatly rewarded by a breakthrough. Molasses can gum us up, but if we push through, we may find that it becomes smooth sailing.

In this case, the solution was actually to use ChatGPT's suggestion for installing the HDF5 package: 'pip install h5py', rather than ' conda install anaconda:h5py'. The benefit of doing it the 'conda' way is that the installation is in a 'Python environment' that corrals the installed software so it doesn't break anything else; but, for whatever reason, my conda environment was having trouble with that, so pip - which installs the program globally on the computer, across 'environments' - was the way to go,

From there I was able to start making progress on my dataset loader problem, and have a clear direction for the project to take tomorrow. Had I accepted the slowdown imposed by the molasses, I would have returned to this problem tomorrow with no real clue of the next steps to take, other than remembering that I had tried a bunch of stuff, got exhausted, and decided to start fresh in the morning.

Sometimes that's the right thing to do, of course. But if we can push through the molasses through to the other side, we often will be doubly rewarded: not only will we solve the immediate problem we were facing, but also will have a solid foundation to move forward on our next task.

So don't let the molasses bog you down. Push on through, and leave it behind if you can.

-the Centaur

Pictured: One from the archives - some Mathematica analysis of a problem - while the blog images are down.

[twenty twenty-four day one four eight]: red herrings

centaur 0

Okay, it's not a red herring, it's a grapefruit, but I am able to upload images to the site again. It appears that when my hosting provider said I had "15 gigabytes free" what they actually meant was "0 bytes free". So I spent an inordinate amount of time trying to fix permissions on the directories when the real problem was that I was out of disk space (which causes the same error).

I already knew I needed to change hosting providers. I guess it's time.

-the Centaur

Pictured: Not a red herring, which I don't eat for breakfast anyway.

[twenty twenty-four day one three two]: what?!

centaur 0

There's an ongoing debate over whether human emotions are universal: I, like many researchers, think that there was solid work done by Ekman back in the day that demonstrated this pretty conclusively with tribes with little Western contact, but some people seem determined to try to pretend that evidence can be made not to exist once it's been collected, if you just argue loudly enough about how you think it's wrong.

(The evidence is wrong?)

Yet my cat can look surprised, or scared, or angry, or alarmed, or content, or curious. It's fairly well established that some emotions, like the self-conscious ones of shame or pride, have highly variable, culturally-determined expressions (if they have consistent expressions at all). But when animals very different from us can still communicate emotions, it's hard to believe none of it is universal.

(The evidence is wrong? What's wrong with you people?)

-the Centaur

P.S. If you subscribe to the anthropic fallacy fallacy, please do not bother to tell me that I'm falling into the anthropic fallacy, because you're the one trapped in a fallacy - sometimes surprise is just surprise, just like a heart is still a heart when that heart is found an animal, and not a "deceptively heart-like blood pump."

Pictured: Loki, saying, "What, you expect me to do something? I'm a cat. I was busy, sleeping!"

[twenty twenty four day one two five]: this is it

centaur 0

This is it. Today, the 4th, is the last day to submit papers to the Embodied AI Workshop 2024, and we are not going to extend this deadline because we've gotten enough submissions so far that we, um, don't need to.

One more last time, the CFP:

Call for Papers

We invite high-quality 2-page extended abstracts on embodied AI, especially in areas relevant to the themes of this year's workshop:

  • Open-World AI for Embodied AI
  • Generative AI for Embodied AI
  • Embodied Mobile Manipulation
  • Language Model Planning

as well as themes related to embodied AI in general:

  • Simulation Environments
  • Visual Navigation
  • Rearrangement
  • Embodied Question Answering
  • Embodied Vision & Language

Accepted papers will be presented as posters or spotlight talks at the workshop. https://embodied-ai.org/#call-for-papers

Papers are due TODAY "anywhere on Earth" (as long as it is still today, your time).

Please send us what you've got!

-the Centaur

[twenty twenty-four day one two four]: last call for embodied ai papers!

centaur 0

Hey folks! Today (Saturday May 4th) is the last day to submit papers to the Embodied AI Workshop 2024!

Call for Papers

We invite high-quality 2-page extended abstracts on embodied AI, especially in areas relevant to the themes of this year's workshop:

  • Open-World AI for Embodied AI
  • Generative AI for Embodied AI
  • Embodied Mobile Manipulation
  • Language Model Planning

as well as themes related to embodied AI in general:

  • Simulation Environments
  • Visual Navigation
  • Rearrangement
  • Embodied Question Answering
  • Embodied Vision & Language

Accepted papers will be presented as posters or spotlight talks at the workshop. 

https://embodied-ai.org/#call-for-papers

Please send us what you've got! Just between you and me and the fencepost, if we get about 7+/-2 more submissions, we'll have enough to call it done for the year and won't need to extend the CFP, so we can get on with reviewing the papers and preparing for the workshop. So please submit!

-the Centaur

Pictured: the very nice logo for the Embodied AI Workshop, a joint effort of me, my co-organizer Claudia, and I think one of Midjourney or DALL-E. Yes, there's generative AI in there, but it took a good bit of prompting to get the core art, and lot of work in Photoshop after that to make it usable.

Embodied AI Workshop Call for Papers Still Open!

centaur 0

Our call for papers is still open at https://embodied-ai.org/#call-for-papers through May 4th! We're particularly interested in two-page abstracts on the theme of the workshop:

  • Open-World AI for Embodied AI
  • Generative AI for Embodied AI
  • Embodied Mobile Manipulation
  • Language Model Planning

Submissions are accepted through May 4th AOE (Anywhere on Earth) at https://openreview.net/group?id=thecvf.com/CVPR/2024/Workshop/EAI#tab-recent-activity ...

-the Centaur

[twenty twenty-four day ninety-six]: (eq (miss-p ‘lisp) t)

centaur 0

You know, Lisp was by no means a perfect language, but there are times where I miss the simplicity and power of the S-expression format (Lots of Irritating Silly Parentheses) which made everything easy to construct and parse (as long as you didn't have to do anything funny with special characters).

Each language has its own foibles - I'm working heavily in C++ again and, hey, buddy, does it have foibles - but I always thought Lisp got a bad rap just for its format.

-the Centaur

Pictured: a Lisp function definition (with the -p suffix to indicate it is a predicate) with the side effect of printing some nostalgia, and executing that statement at the Steel Bank Common Lisp command line.

[twenty twenty-four day eighty-two]: your abstractions are leaking

centaur 0

SO! My Facebook AND my credit card were both hacked within the last few months, so I was understandably freaked when I logged into the Library the other day and got a security warning. This SSL warning sometimes shows up when your network configuration changes - or when someone is trying to hack you - so I got off the conference network and used my phone's mobile hotspot. Unfortunately both the Library's WordPress control panel AND the main page showed the error, and I got a sinking feeling. Credit card got hacked a few months back, remember? And when I checked the certificate ... it had just expired.

Assuming that whatever service I use for SSL had expired due to that credit card issue, I tried to track it down in the WordPress control panel, but pretty quickly decided that digging through notes, credit cards and passwords in a public conference hall was one lapse in opsec too far. Later that night, I tried resolving the SSL issue, but found that something was wrong with the configuration and it couldn't update itself. Exhausted after a long day at the convention, I decided to get up early and attack the problem fresh.

The next morning, I found I had apparently set up WordPress to use an SSL tool which didn't play nice with my hosting provider. (I'm being deliberately vague as y'all don't need to know all the details of how my website is set up). Working through the tool's wizard didn't help, but their documentation suggested that I probably needed to go straight to the provider, which I did. After digging through those control panels, I finally found the SSL configuration ... which was properly set up, and paid through 2025.

WAT?

I re-logged into the control panel. No SSL warning. I re-opened the website. No SSL warning. I doublechecked on both another browser and another device. Both listed the site as secure.

As best as I can figure, yesterday afternoon, I hit the website in the tiny sliver of time between the old certificate expiring and the new one being installed. If I was running such a system, I'd have installed it an hour early to prevent such overlaps, but perhaps there's a technical or business reason not to do that.

Regardless, the implementation details of the "website is secure" abstraction had leaked. This is a pervasive but deceptively uncommon problem in all software development. Outside the laws of physics proper, there are no true abstractions in reality - and our notions of those laws are themselves approximations, as we found out with Einstein's tweaks to Newton's gravity - so even those laws leak.

Even a supposedly universal law, like the second law of thermodynamics that Isaac Asimov was fond of going on about, is actually far subtler than it first looks, and actually it's even subtler than that, and no wait, it's even subtler than that. Perhaps the only truly universal law is Murphy's - or mathematical ones.

Which brings us to the abstractions we have in software. In one sense, they're an attempt to overcome the universal growth of entropy, in which case they're doomed to ultimately fail; and they create that order with a set of rules which must be either incomplete or incorrect according to Godel's Incompleteness Theorem, which means they'll ultimately either fall short or get it wrong.

When developing and maintaining software - or deploying it and managing it in production - we always need to be on the lookout for leaky abstractions. We may think the system we're working with is actually obeying a set of rules, but at any time those rules may fail us - sometimes spectacularly, as in when my backup hard drive and internet gateway were struck by lightning, and sometimes almost invisibly, as in when a computer gets in a cruftly state with never-before-seen symptoms that cannot be debugged and can only be dismissed by a restart.

So my whole debugging of the SSL certificate today and yesterday was an attempt to plug a leak in an abstraction, a leak of errors that created the APPEARANCE of a long-term failure, but which was ACTUALLY a transient blip as an expired certificate was swapped out for its valid replacement.

What's particularly hard about leaky abstractions, transient failures and heisenbugs is that they train us into expecting that voodoo will work - and consciously trying to avoid the voodoo doesn't work either. On almost every Macintosh laptop I've used that has had wireless networking, it can take anywhere from a few seconds to a minute for a laptop to join a network - but once, I had the unpleasant experience of watching a senior Google leader flail for several minutes trying to get onto the network when I had to loan him my laptop to present in a meeting, as he kept switching from network to network because he was convinced that "if the network we're trying to join is working, it should immediately connect." Well, no, that would be nice, but you're sending bits over the fucking air like it was a wire, and connection failures are common. This was a decade and a half ago, but as I recall I eventually convinced him - or he got frustrated enough - to stop for a moment, after which the laptop finally had a chance to authenticate and join the network.

Debugging software problems requires patience, perseverance - but also impatience, and a willingess to give up. You need to dig into systems to find the root cause, or just try things two or three times, or turn the damn thing off and on again - or, sometimes, to come back tomorrow, when it's mysteriously fixed.

-the Centaur

Pictured: a blurry shot of downtown San Francisco, where the abstraction of taking a photo is leaking because of camera movement, and the same intersection, with less leakage from motion.

[twenty twenty-four day eighty-one]: a quick thought on the game awards

centaur 0

The awards ceremony for the Independent Games Festival (IGF) and the Game Developers Choice Awards (GDCA) are held back to back on Wednesday nights at GDC, and I tend to think of them as "the Game Awards" (not to be confused with the other award ceremony of the same title).

The awards are always a mixture of the carefully scripted and the edgy and political, with plenty of participants calling out the industry layoffs, the war in Gaza, and discrimination in the industry and beyond. But one of those speakers said something very telling - and inspiring.

See that pillar on the right? Few people sit behind it willingly; you can't see the main stage, and can only watch the monitors. But this year's winner of the Ambassador award told the story of his first time in this hall, watching the awards from behind the pillar, wondering if he'd become a "real" game developer.

Well, he did. And won one of the highest awards in his industry.

Who knows, maybe you can too.

-the Centaur

Pictured: Top, the IGF awards. Bottom, the GDCA awards. I don't have a picture of the Ambassador Award winner because I was, like, listening to his speech and stuff.