Hi, I’m Anthony Francis, and I teach robots to learn, particularly deep reinforcement learning for robot navigation as well as the intersection of memory, emotion, and planning for contextual control. …
SO! I love to write, and four of my novels are published – FROST MOON, BLOOD ROCK, LIQUID FIRE, about magical tattoo artist Dakota Frost, and JEREMIAH WILLSTONE AND THE…
So I read a lot and write a lot and occasionally edit what I write and even more rarely, something gets sent to an editor and turned into a publication.…
“Robots in Montreal,” eh? Sounds like the title of a Steven Moffat Doctor Who episode. But it’s really ICRA 2019 – the IEEE Conference on Robotics and Automation, and, yes,…
So, this happened! Our team’s paper on “PRM-RL” – a way to teach robots to navigate their worlds which combines human-designed algorithms that use roadmaps with deep-learned algorithms to control…
SO! There I was, trying to solve the mysteries of the universe, learn about deep learning, and teach myself enough puzzle logic to create credible puzzles for the Cinnamon Frost…
Wow, it’s already here – my flash fiction short story “One Day Your Strength Will Fail” is about to appear in the very first issue of the Bay Area’s new…
Wow. After nearly 21 years, my first published short story, “Sibling Rivalry”, is returning to print. Originally an experiment to try out an idea I wanted to use for a…
Why yes, I’m running a deep learning system on a MacBook Air. Why?
Yep, that’s Python consuming almost 300% of my CPU – guess what, I guess that means this machine has four processing cores, since I saw it hit over 300% –…
(Self-deprecating note: this blogpost is a rough draft of an essay that I’m later planning to refine for the Write to the End site, but I’ve been asked to share…
Let me completely up front about my motivation for writing this post: recently, I came across a paper which was similar to the work in my PhD thesis, but applied…
In many ways, Howard Philips Lovecraft and Jorge Luis Borges are different. Howard Philips Lovecraft wrote dark, atmospheric American horror at the dawn of the twentieth century. Jorge Luis Borges,…
Almost fifteen years later, with a completely different set of cats who have not had a chance to learn these behaviors from the previous ones, it's somewhat comforting to see that cats do still remain cats.
Although the location of the malefactors has swapped from top to bottom ...
-the Centaur
Pictured: Loki above, being awoken from sleep by harassing kittens below; Gabby above, about to harass the sleeping Caesar below.
Chicken and waffles with a side of bacon at Nose Dive in downtown Greenville. Not healthy or delicious --- but as for that recent research that suggests that increased hunger leads to less healthy food choices, well, I can attest to its validity within the framework of my own personal experience.
One of the things I like about vegan food is that it can be both healthy and delicious. This is a vegetarian burrito from La Parilla - no cheese, no sour cream, extra mushrooms. As far as I know, this was a suffering-free burrito, and the most unhealthy thing about it was the tortilla, which isn't unhealthy per se, but is just one of the foodstuffs that we can easily get too much of in our modern environment.
As for the chips and margarita (not shown)? Well, they're vegan, as far as I know, but healthy, not so much. I'm not sure James Willett would approve, but they are delicious.
This one is kind of a BLT, with the Bacon replaced with vegan cold cuts (I have vegan bacon, but I wanted to finish going through the cold cuts first). The base is an heirloom tomato, cut into two big slices, with the remainder roughly chunked to make an ersatz tomato salad:
The tomato slices are seasoned with garlic salt, dill, Italian seasoning (or parsley, oregano, and basil) and maybe nutritional yeast; the chunks are seasoned with salt, pepper, and Old Bay or Tony Chachere seasoning and maybe some flavored olive oil (this last time, basil and sundried tomato olive oil).
I toast Nature's Own Artisan Multigrain Bread, then add a thin layer of veganaise seasoned with dill, onion powder, garlic powder, and tarragon. Atop this, you layer to taste cold cuts or bacon, cheese, tomato, and lettuce (two layers of tomato when I skip the cold cuts and/or bacon).
The outcome is pretty delicious.
-the Centaur
Pictured: Shots from two different days of making these sandwiches patched awkwardly together, so if you notice the bloody handprint on Kirk's vest moving up and down in these shots, that's why.
So for a while all three of the kittens were a little skittish around me. Not that they didn't want to hang out, but especially when I would take a trip or something they'd get standoffish, hanging out more with my wife.
I do believe they have now "warmed up" to me.
-the Centaur
Pictured: Me taking a much-needed break from projects, and then attracting two (or three?) kittens. On that note, I was going to post this but got swarmed with work, taxes, writing, cleaning, and what have you, but I am not going to give up on posting every day this year, even if I have to backfill to get caught up.
Lily, the collared one, chose to hide when a friend came by today, so they never saw more than three cats at any one time. With apologies to Captain Picard, here is visual proof that there are, indeed, four cats.
One by one, trees and bushes on our property have been dying. The property is large - when we fled the fires in California during the pandemic, we lucked out in finding a large place that had been on the market for quite a while - so at first we thought that was simply par for the course. But they kept dying.
Eventually, what we discovered is that many of the trees on the property were planted without the removal of their transport cages. This can cause the roots to get choked, to turn back on themselves, and as the tree grows, the increasingly packed root ball topped by the increasingly heavy tree turns into a weighted ball bearing, waiting to tip over in heavy winds, heavy rain, or just from the tree's own starved weight.
But it's easier to not remove it, the problem is practically invisible, and the tree looks good for a while - and by the time the tree falls, it will be almost impossible to identify who made the initial mistake.
This is a beautiful house on beautiful land, but many of the things in this house are like that. Trees are planted with their transport cages still on, so they eventually fall over. Gutter drains were buried without covering them with fabric, so they fill with dirt. Soil pipes are buried without cleanouts. Drywall in access rooms has random holes punched in it.
And, most spectacularly, a door was installed in a storage room which was too small for the safe stored in that room to be removed. I mean, what were they thinking? I guess they weren't - or, perhaps that was a security feature, to prevent it from being stolen? Certainly, you can't sneak it out of the room, but, also, it likely weighs around a ton, so no-one can run off with it - they didn't need to wall it in.
But, regardless, hey! We get a safe.
Now, we were dealing with the problem with our drains, and the foreman told us he'd need to take up the last man standing in a row of bushes near one of the drains. These had been dying, one or two per year, since we arrived, and the last one was literally held together with zipties. So I agreed.
And when he dug it up, he found that it - and all the bushes in that row - had cages on their root barrels. You can see him holding one of these in the banner image from this post. The root system was so tight inside it that he was surprised that it had survived that long.
So my point, and I did have one, is that doing a job that looks right from the outside may not be doing it well enough for the job to be done right. And right, in this case, I define as not failing unexpectedly long before its time because someone simply didn't want to finish the work.
I suspect that the people who managed this properly previously were focused on forcing it, no matter how much money it took. As my wife put it, you put in a lawn, let it grow, then cut that growth and take all the nutrients that it harvested out of the soil away, forcing you to fertilize the lawn with chemicals to keep it alive. You can do that, but it's like driving down a mountain road at too high a speed, constantly riding the wheel, brakes and accelerator to keep yourself on the road. We prefer a healthier approach, where, when possible, things are left to biodegrade where they are, or you create compost out of the clipping.
That doesn't always work, and, in a way, it's a luxury all its own. But regardless of how you run your lawn, if you take the time to cut the root balls off and to properly wrap your drains, you'll find yourself spending less money in the long run fixing problems that should never have happened in the first place.
-the Centaur
Pictured: The cage that our foreman discovered once they dug up the bush, and the gutter downspout drain that our foreman replaced for us once we all figured out what drains needed to be replaced.
So, yes, it's late and i'm tired, but i couldn't just leave it at that, because the above quote is so good. I ran across this from George Bernard Shaw in a book on mentoring (which I can't access now, due to cat wrangling) and snapped that picture to send to my wife. In case it's hard to read, the quote goes:
The single biggest problem with communication is the illusion that it has taken place.
This was a great quote to send to my wife because our first vow is communication, yet we have observed problems with communication a lot. Often, when the two of us think we are on the same page, frequently we have each communicated to each other something different using similar-sounding language.
I was struck by how hard it is to get this right, even conceptually, when I was skimming The Geometry of Meaning, a book I recently acquired at a used bookstore, which talks about something called something like a "semantic transfer function" (again, I can't look up the precise wording right now as I am cat wrangling). But the basic idea presented is that you can define a function describing how the meaning that is said by one person is transformed into the meaning that is heard by another.
If you pay attention to how communication fails, it becomes clear how idealized - how ultimately wrongheaded - it is. Because you may have some idea in your head, but you had some reason to communicate it as a speech act, and something you wanted to accomplish inside the hearer's head - but there's no guaranteed that what you said is what you meant, and much less whether what was heard was what was said, or whether the interpretation matched what was heard, much less said or meant.
But even if they took your meaning - even if the semantic transfer function worked perfectly to deliver a message, there is no guarantee that that the information that is delivered will cause the appropriate cognitive move in the hearer's brain. Perhaps we're all familiar with the frustration of trying to communicate an inconveniently true fact to someone who stubbornly won't absorb it because it's politically inconvenient for them, but the matter is worse if your speech was designed to prompt some action - as Loki and one of the kittens just found out, when he tried to communicate "stop messing with me, you're half my size, you little putz" as a speech act to get the kitten to leave him alone. It had the opposite effect, and the kitten knocked itself onto the floor when it tried to engage a sixteen-pound ball of fur and muscle.
So what does that have to do with drainage?
My wife and I have had a number of miscommunications about the cats recently, ones where we realized that we were using the same words to talk about different things, and didn't end up doing things the way each other wanted. But it isn't just us. The cats stayed indoors mostly today, because workmen came by to work on a drainage project. I went out to sync up with the foreman about adding a bit to the next phase of work, and he offhandedly said, "sure, now that we're finished with the front."
"But wait," I said. "What about the drains in the front?"
"What drains in the front?" he asked.
We stared at each other blankly for a moment, then walked around the house. It rapidly became clear that even though we had used the same words to talk about the same job related to the same problem - excess water tearing through the mulch - we had meant two completely different things by it: I had meant fixing the clogged drains of the downspout of the gutter that were the source of the water, and he had took that to mean fixing the clogged drains where that water flowed out into the rest of the yard. A rainstorm soon started, and we were able to both look at the problem directly and agree what needed to be fixed. (The below picture was from later in the night, from another drain that was clogged and in need of repair).
It turns out the things that I wanted fixed - the things that had prompted me to get the job done in the first place - were so trivial that he threw them into the job at no extra cost. And the things that the foreman had focused on fixing, which also needed to be fixed but didn't seem that important from the outside, were actually huge jobs indicative of a major mis-step on the original installation of the drainage system.
We resolved it, but it took us repeatedly syncing up, listening for issues as we spoke, and checking back with each other - in both directions - when things didn't sound quite right for us to first notice and then resolve the problem. Which is why I found it so apropos to come across that Shaw quote (which I can look up now that the cats have settled down, it's in The Coaching Habit) as it illustrated everything me and my wife had been noticing about this very problem.
Just because you've said the words doesn't mean they were heard. And just because they're said back to you correctly doesn't mean that the hearer actually heard you. If you spoke to prompt action, then it's important to check back in with the actor and make sure that they're doing what you wanted them to - and even if they're not, it's important to figure out whether the difference is their problem - or is on your end, because you haven't actually understood what was involved in what you asked them to do.
So, yeah. The biggest problem with communication is the illusion that it has taken place - so rather than trust the illusion in your mind, take some time to verify the facts on the ground.
-the Centaur
Pictured: "Shaw!", obstreperous cats, and a malfunctioning drain.
It's late and I've been up cleaning house, cat wrangling, working on Camp Nano for April, and trying to finish taxes, so I has the tired. Please enjoy the following "Mezcalita" from La Parrilla.
Robots navigating through uncontrolled human spaces face many challenges due to the uncertainty of human behavior and the unstructured nature of environmental context and social rules. Social robot navigation combines planning with human-robot interaction and communication strategies to provide acceptable, context-dependent robot behavior.
With recent rapid transformations in AI, social robot navigation is changing, and the proposed Advances in Social Robot Navigation workshop explores these innovations in areas including planning, human-robot interaction, and beyond. This proposed, full-day workshop brings together experts in these fields for invited talks, panel discussions, and participant presentations on advances in social robot navigation. The proposed workshop will also host the Arena 4.0 challenge on benchmarking social robot navigation strategies through a set of AI-enabled open-source tools.
Building on our successful series of workshops at ICRA'22, IROS'23, and RSS'24, this proposed workshop aims to investigate key aspects that make robot navigation more acceptable, legible, and social. This includes motion-task planning techniques, foundation models, human robot interaction, communication strategies, and human understanding ranging from individual behavior to pedestrian and crowd dynamics. We invite researchers from these fields to submit short papers and participate in our benchmark challenge, and to join us for a workshop designed to encourage discussion.
... and I was supposed to do a new one. I futzed around a good bit with sketches and DALL-E/Midjourney ...
... but didn't get anything quite close enough to use as a base with generative AI. So I sketched and instead came up with the design above. But when I went back to render my design ...
... I found that liked the temp one better because it incorporated the colors and logo for ICRA 2025:
However, I didn't want to just give up; I wanted to do the work to help the team make a concrete decision. My wife vetoed the hands holding the peach as being too suggestive, so I did a partial render of this version:
At a meeting, I presented my various designs and recommended NOT doing further work to render one as I thought the existing logo was working just fine and was already in the right color scheme, etc. The team agreed with me, so we put a stake in this one and I moved on. It left me more convinced that once I move past the drawing portion of this exercise that I want to dig in to both Adobe Illustrator and color theory.
But, it was Drawing Every Day 95, and today, April 4th, is Day 95, so I'm posting it. Note that it was drawn on February 16th, almost a month and a half in advance. That means, even though I was not able to blog per se during GDC, I was nevertheless able to build up a huge drawing buffer and have managed to stay ahead of the game - (30(m+1) + d + 7) - a month and a week ahead, as of today.
So I habitually bite off more than I can chew: at any given time I have 200 to 250 projects running, and no reasonable human being can keep on top of more than seven plus or minus two things at once.
Now, I know, I know, I know, I'm likely autistic, and am prompted to be WAY more explicit than most people about the projects that I'm ACTUALLY doing, whereas most people just fool themselves into thinking they're doing a few things when in reality they're relying on their well-trained autonomic adulting skills to keep on top of the dozens upon dozens of things they need to do to keep on top of just living. But, beyond, that, I have hundreds of creative projects that I want to tackle, so many that I often feel like I'm thrashing.
But if you focus - again, I know, I know, I know, I say I hate focus, and that focus is the enemy, but bear with me for a bit - I say, if you allow yourself to be creative, and imagine ALL the things you might be doing ... BUT then focus on a few of them at once, trying to make sure you make progress on just those, you can, step by step, move your way through those projects, get them done, and move on to the next ones.
I've been "reading and eating" for decades now as my way of consuming material, but only recently have I started using the "ten page rule," in which I break each chapter into ten page sections, and try to make sure I get through at least 5 pages of a section in each reading session (the whole ten, or to end of chapter, if the material is easy, or the book's pages are small, or the chapters are short; the five page grace period if it's a big fat textbook filled with details with which I am unfamiliar). But I've augmented that now - by focusing on the most important books first, promising myself I can read the others if I get through them. I'm almost done with Large Language Models: A Deep Dive, which has been very illuminating.
And now I've built on that, so at the end of the day, after reading my "chunk of the hard book at night with milk and pound cake" - which is usually a big fat textbook that requires reading and re-reading of sections over and over again until I get it - I say, after that, I pick up a by-the-bedstand novel and read a chapter. Just one chapter (again, less if it is big long fat chapters or something esoteric). I've gotten through The Cthulhu Casebook: Sherlock Holmes and the Shadwell Shadows and Cthulhu Passant that way and am now digging deeper into my novel backlog, promising myself I can by more books as I finish them.
The same thing has been going on with various of my research projects: I have been building out various pieces of software, sometimes with a lot of thrashing. But I stuck with a project I had been tempted to abandon, and today got it mostly working, all unit tests passing, all code checked in and pushed to Github. I still have more features I want to add before release ... but it felt good.
While I don't believe in "focus" for focus's sake, I do believe focus is a tool you can use effectively. And if you prioritize your highest-value, lowest-remaining-work projects, and focus on getting done the next thing you have to do, you can, over time, walk that path that starts with a single step, and find yourself a thousand miles later standing atop your mountain.
So! Earlier I said I wanted to build up a buffer for "Drawing Every Day", but that complicated formula "30(m + 1) + d + 2" - a month and a couple of days ahead, computed by adding 1 to the month, multiplying by 30, adding the days, and adding 2 - neither "felt right" nor left me feeling secure in my "aheadness".
I had planned to work on my backlog from 2024 when additional 2025 drawings would have taken me over the magic number "30(m + 1) + d + 2", but it didn't feel right, and the work I had to do to catch up when I missed a day bothered me.
Then I realized I shouldn't be shooting for a month and a couple days ahead ... it should be more like a week. "30(m +1) + d + 7" (or "+ w") would give me a whole week to catch up. In fact, if I pushed it a bit further - getting a month, a week, and a day ahead - then even if I missed a day, I'd be a week ahead. Even if I missed a WEEK, I'd be a MONTH ahead. And if I missed a month ... I'd still have a week and a day.
If you get behind with that much buffer, it's all on you, baby.
I like this. A month, a week, and a day is easy to remember - and easy to compute, even though "30(m +1) + d + 7 +1" looks just as complicated as it was before, it's cognitively easier to process because it's all broken up into a sequence of simple operations that are easy to remember.
Now, next up ... blogging ahead! Let's start with just +1 ... this one.
-the Centaur
Pictured: Welp, I wanted a picture of my drawing context, but, hey, here's me reading at the great Green Lettuce restaurant, which has a nice high-topped counter and awesome decor, food and staff.
So I had all sorts of plans about what to cover this Lent - and I still plan to cover those topics when I get time - but I got disrupted by two urgent things: the start of Lent itself, where I successfully dragged myself out of the house to make an Ash Wednesday service at Saint Peter's in Greenville, pictured above, and then the preparations for a pre-planned discernment process the day after Ash Wednesday, for Saint Stephens in-the-Field in California, where I'm a Vestry member helping them work through a transition.
I had all sorts of stuff I wanted to discuss - such as the Seven Pillars of Christianity - but in truth I've been rapidly expanding and refining those ideas as I work, so perhaps it's good that I waited. For a refresher, the Seven Pillars of Christianity is a mnemonic I came up with:
Jesus Christ was a real historical person.
His miracles actually happened.
They give us confidence in his resurrection.
He sacrificed himself to save us from our sins.
He had the authority to do so because he is God.
He left us his Spirit to guide us.
He calls us to be a part of his Church.
But this is light on the actual content of the Christian religion, which we might call the Seven Principles of Christianity:
There is one God.
Jesus is his Son.
His Spirit completes the Trinity that is how we perceive the one God.
The Gospel of Jesus is that God gave his only Son to die for our sins so that we might have eternal life.
Jesus calls us to believe in him.
Belief should prompt us to repent from our sins.
And it should prompt us to act in ways that emulate Jesus.
And we might also talk about the Seven Sources of Christianity:
Scripture
Tradition
Reason
Experience
Authority
Community
Spirit
Each of those is something I want to unpack in this series, BUT, Ash Wednesday was Wednesday, and I unexpectedly had time to devote to it, and the Vestry meeting to help start discerning the future of Saint Stephen's in-the-Field was Thursday, and I had to prepare ... which was more important than blogging.
I operate by the Law of Prior Commitment: all other things being equal, I honor earlier commitments over later ones. Obviously, emergencies override that; if your wife goes into labor and you need to run her to the hospital, you can put other things aside, to deal with more important questions, such as, "I thought you went through menopause a decade ago" and "when were you planning on telling me you were pregnant?" and "you claim to be spiritual but not religious but I would say your commitment to your cosplay of Sarah from the Bible exceeds that of the most devoted believer" but I digress into pure hypotheticals.
But Jesus suggests that we shouldn't plan too far ahead: "Whenever you are arrested and brought to trial, do not worry beforehand about what to say. Just say whatever is given you at the time, for it is not you speaking, but the Holy Spirit." Now, I wouldn't compare a vestry meeting to being put on trial, but there is a sense in which our obligations "arrest" us, stop what we would otherwise be doing, and call us to testify.
So! All of that is a very long-winded way of saying I don't have an outline for this two-day-late blogpost ... but I decided to follow Jesus's instructions and just to step out into the Spirit and say what came to me. I hope you enjoyed it, nay, I hope that something about it spoke to you in some way.
Lent twenty twenty-five, day one, posted two days behind.
-the Centaur
Pictured: Saint Peter's, and Saint Stephen's in-the-Field.
Normally Loki hates eating around the kittens, or they're so interested in his food that they ignore their own and cause him to stalk off in a huff - "Ruuude, duuude!"
But they're getting over it - I had to move a kitten, but after I did, the system remained stable for the remainder of the meal.
Baby steps are short, but they can carry you down a long road, if you just keep going.