Press "Enter" to skip to content

Posts published in November 2009

My Name is Gabby

centaur 1
gabby the cat
Once we were traveling the neighborhood late and found a small and collarless cat alone by the sidewalk. Near him, on the lawn, half crouched another cat lay, who froze then turned tail, disappearing in the cold night. Know that the stray cat well our passions read; it yet survives, became not some lifeless thing, but found hands that pet him and hearts that fed. And upon this doorstep these thoughts we hear:
My name is Gabby, Cat of Cats. Listen to my purrs, ye mighty tall people, and despair of anything but bringing me home and giving me can food and vaccinations!
Nothing else remains of that stray cat, all ribcage and scared, but a full belly and warm and level purrs that stretch far away.

-the Centaur, after Shelley.
gabby the cat

Five Days Behind

centaur 0
Between the new cat, work, finishing up Blood Rock, and business with Frost Moon, I've gotten far behind on Nanowrimo this month. But now I'm back on track, have finished a more detailed outline which solves some of my plot problems and gives me some fun crunchy stuff to work with ... and have finally caught up to my first day's target word count, ~1700 words (you need to do at least 1666 words a day to complete Nano). Hopefully things will speed up from this point ... need to do ~1933 words a day to finish successfully.

Data Mining for Satisfying the Finicky

centaur 1
graycatSo we have cats. Three, currently - Caesar, a rescue cat, Lenora, a shelter cat and Gabby, a stray cat - out of a lifetime population of five, including Nero, the brother of the rescue cat, who disappeared (probably eaten by coyotes), and Graycat, another stray cat, pictured, who we unfortunately had to have executed by the state (because only I could handle him, using gloves, and we were afraid he was going to come knife us in our sleep).

So the three remaining cats are somewhat finicky. There are foods they will love, foods they will grudgingly eat, food they will eat but puke up, and food they will (quite literally) try to bury as if it is crap. So I've been meaning for a long time to keep up a diary of the food choices and their reactions to find out what we can feed them.

Data mining researchers claim that getting high-quality input data is the hardest part of a machine learning problem, so I started off with some exploratory data collection in Excel. After letting (thoroughly washed!) cans pile up for a week in two bins, I entered these into a spreadsheet and started to figure out how the data should be represented. I ended up with these columns:
  • Brand: Fancy Feast, Nutro, etc.
  • Type: Regular, Max Cat Gourmet Classics, etc.
  • Flavor: Savory Salmon Feast, White Meat Chicken Florentine with Garden Greens, etc.
  • Consistency: Flaked, Pate, Grilled, etc.
  • Target: Adult or Kitten
  • Package: Can, Tray or Packet
  • Ratings: +1 or -1
This may seem overkill, but the goal would be to learn which brands, flavors and consistencies the cats like (hint: they do not like anything Grilled or Chunked) so I didn't want to leave anything out.

After collecting this data, I started to analyze it. First I sorted the data. Then I eliminated duplicates and added a Servings, AggregateRating and Average column, summing up the Ratings into the Aggregate so that if something got two +1 and one -1 rating it would get 3 Servings and a AggregateRating of 2. This I used to compute an Average, which I used to resort the table to see which brands worked best.

The problem is, this Average wasn't that meaningful. One vote for a flavor isn't as meaningful as three, because the cats aren't consistent. This is the inverse of the Law of Large Numbers: you need many ratings to generate a meaningful result in the presence of noise.

I decided to set the number of ratings I cared about at 3, based on anecdotal comments by Roger Schank, my thesis advisor's thesis advisor - who reportedly said you need to visit a restaurant three times to give it a fair rating, because a restaurant could have one off day or great day and you needed at least 3 ratings to get an idea of their consistency.

At first I decided to track this using a smoothed average, AggregateRatings / (Servings + 3), but this depressed the all-positive and all-negative scores more than I liked - that kind of smoothing function works only well if you have very large ranges of values. So I chose a simpler max-based approach of AggregateRatings / Max(Servings, 3), so that one serving would get a 33% positive or negative rating but three or more could max it out to 100% if they were consistent.

That enabled me to make some findings, but then I realized I'm an idiot. I'd picked up the smoothed average idea from Empirical Methods for Artificial Intelligence, a book any serious computer scientist should read. And I'd edited my data in the spreadsheet so I could compute that average. But what I should have been thinking about was The Pragmatic Programmer, specifically the tips Keep Knowledge In Plain Text and Use Source Control.

Why Keep Knowledge In Plain Text? The cats aren't just finicky; their tastes change, especially if you overfeed them one thing. So the date at which a cat turns on food is important. By entering it into Excel, I first had to have a computer on hand, which encouraged to let the cans pile up; so I lost both the date information and some of the rating information - a coarse grained +1/-1 rather than "Ate Instantly"/"Ate Completely"/"Left Unfinished"/"Refused or Puked Up"/"Tried to Bury". A superior strategy would have been a pen-and-paper notebook where I recorded the cans a few hours after they were eaten. This could be entered into a text file a few days later, and if it is tab or comma separated Excel could easily import it. Then, with that data, I could even have applied other techniques from Empirical Methods for Artificial Intelligence, like using a sliding time-series window to ensure I'm analyzing the cat's current tastes.

And why Use Source Control? Because I edited my Excel file, dummy, not even versioned with v1 v2 v3 like I do with documents. So I actually entered this data in two phases and some of the temporal information I could have recovered has been lost.

So I'm going to improve my procedures going forward. Nevertheless, I did get some nice preliminary data, which jibes well with the observations Sandi and I had made informally. I'm going to hold judgment until I have more data, but so far Fancy Feast is the best brand, and Cod, Sole and Shrimp Feast and Savory Salmon Feast are the winningest flavors. Newman's Own Organics and Halo Spot's Stew were the worst brands - the cats refused to even touch them - which is odd, because Newman's Own makes great human food (try Newman O's) and Halo makes great dry food the cats love.

More results as the votes continue to trickle in...
-the Centaur

Let’s Give This Thing a Shot

centaur 0
The only way to make something happen for certain is to prioritize it. Normally when Nanowrimo rolls around I become a submarine and don't blog so much, but if the inhuman writing machine that is Warren Ellis can blog multiple times per day in between writing comic book epics, then so can I, dag nab it.

So, for the month of November, when I'm supposed to be writing 50,000 words of Liquid Fire ... I will blog once a day. So far, so good ... 3 days, 3 posts. Here's to committment - meh.

-the Centaur

National Novel Writing Month 2009 Entry: Liquid Fire

centaur 0
Well, it is that time of year again: November, and National Novel Writing Month. This year I'm working on Book 3 of the Dakota Frost series, Liquid Fire, which features Dakota, firespinning, and dragons:
What is life? No scientist can tell you. Oh, the pocket-protector variety will say that living things move, eat and grow, wrapped up in ten-dollar words like ‘locomotion’ and ‘intake’ and ‘self-organization’. But these by themselves are not life: a waterfall moves more vibrantly than any animal, a fire eats more efficiently, a crystal is more organized.

A worldly scientist, aware of the dance of the sexes, will mention the heat of metabolism, the fire of reproduction. But a fire eats to live just like we do, but faster: and where we breed in a slow dance of desire, a fire lives in a hot orgy of giving, casting off its own substance, flying sparks, glowing seeds, drifting through the air to start the cycle again. If metabolizing and reproducing were all there were to life, would not fire be alive?

But life is not any one of these things: life is all of them together. It is the combination of moving and eating and organizing, of metabolism and reproduction, of a thousand things more. Put them all together, and you get more than you started with: a holistic — holy — combination that is more than the sum of its parts. Life is magic.

Or more precisely, magic is life.
As usual, I have a theme, plot, and know almost exactly how it will end. But more than the previous two books in the series, I feel like I'm stepping off into a great void, even though the magic of this book - firespinning - is an art I myself perform, unlike the tattoos featured in Frost Moon (of which I have none) and the graffiti featured in Blood Rock (of which I have done none). All I have to go on this one are love, fire ... and the nightmares from the Hadean.

Wish me luck.
-the Centaur

Best. Dongle. Evah.

centaur 0
Sierra Wireless Dongle

Recently, work was getting more hectic and family matters required more travel, and I was getting frustrated going out to coffeehouses and delis just to get wireless Internet. So, signed up for an AT&T; wireless data plan, complete with a little dongle by Sierra Wireless that actually does the job of connecting to the Internet.

I refused to get the two year contract just so I could get the dongle for free, because I was burned this time last year getting a two year contract just so I could get a cheap smartphone ... right before the Search Engine That Starts With A G bought all of its employees Android smartphones.

SO I opted to instead to pay month to month, and as a consequence I had to pony up two hundred dollars for that little dongle. Because of the monthly fee, and how the math worked out, I stupidly did not spend the extra $5 bucks a month insuring the damn thing.

I say stupidly, because I left it in my pocket and put my pants in the wash.

My heart fell when I saw the cap of the dongle tumble out as I was emptying the clotheswasher. Sure enough, I found the dongle in the pocket of a pair of pants. Sadly, I took it to my Mac and plugged it in. The lights flickered for a moment, but did not come on. Just to be sure, since the Mac's two USB ports are not equivalent, I switched it to the other side.

The lights flickered ... and then the power light turned blue, while the connection light turned red. Hoping against hope, I hit "Connect" on the Sierra Wireless Watcher control panel. The connection light began flashing ... and a minute later, it connected.

Since I knew that liquid in electronic devices can sometimes cause problems down the road, I disconnected it, unplugged it, and put it front of a spaceheater to dry out more thoroughly, then a fan to cool it off. One day later, I'm writing this blog entry using this same dongle, and it's doing fine.

Go Sierra, and go AT&T; for picking a quality parts supplier.

-the Centaur