Archive for October, 2008

Feral Cats

Last Thursday we trapped five feral kittens living in our backyard. We took them to the vet on Friday morning, where they were neutered and were vaccinated for rabies. We picked them up on Saturday, and kept them inside. On Sunday we let the two males go. Today we let the three females go. Unfortunately, although we trapped the kittens, we weren’t able to trap the mother, who was too wary to spring the trap. We will try again to catch her next week. This was all a somewhat lengthy and messy procedure, helped greatly by a volunteer from a local organization called Fix Our Ferals. Besides the cats, we also managed to catch a skunk; we released the skunk as quickly as we could, but unfortunately not before the whole area got sprayed.

Did we have the right to do this? Clearly the cats did not want to be trapped, and they were quite agitated about it. While the cats do not have any expectations about having kittens of their own, it is part of their natural life cycle, and we have taken that away from them.

What makes the difference for me is that we had been feeding them, and they were happy to take the food. If we had not been feeding them, I think that trapping them would have been questionable. While cats are obviously not native to the area, we live in a city which is in no way a wilderness. If the cats had been fending for themselves, as the deer, racoons, and skunks do, I don’t think we would have been right to interfere in their lives in this way. A rabies vaccination might have been acceptable, but not neutering.

But since we were feeding them, we were domesticating them in a small way, making them stronger and healthier, and in general taking responsibility for them. We therefore had to take responsibility for their actions, including the kittens they would have. We were within our rights to prevent those kittens.

I believe that we did the right thing, but I admit to not feeling entirely easy about it.

Comments (11)


Today is Blog Action Day, and this year’s topic is poverty. According to the Gospel of John, Jesus famously said “For the poor always ye have with you; but me ye have not always.” This may have been intended as a reference back to Deuteronomy 15, in which Moses said that every seven years all debts among neighbors should be forgiven. He goes on to say, among other things, “For the poor shall never cease out of the land: therefore I command thee, saying, Thou shalt open thine hand wide unto thy brother, to thy poor, and to thy needy, in thy land.” Needless to say, this seven year debt redemption thing was never widely honored.

So, according to Jesus, we’re stuck with the poor. But these days it’s actually pretty easy to avoid them. If you live in the suburbs and drive to work and to stores, you can go quite a long time without ever seeing a poor person. It’s fairly likely that you will see more pictures of the very poor people in Darfur than you will of the poor people living in the nearest city. If you never see poor people, are you more or less likely to give money to support them? I’m inclined to vote for less, although it’s not entirely obvious. When you do see poor people (as I do, since I don’t live in the suburbs and don’t drive most places) you are reminded that many, though by no means all, of the visible poor in the U.S. are poor because they are using some sort of drug (including alcohol) or are in some way unable to function in society. Should we personally support all of those people, or should we somehow send our charity to the ones who deserve it? Like the ones in Darfur, perhaps?

As various people have pointed out, the existence of money implies poverty. If you have a society which has no poverty, there are no scarce resources, and there is no need to use money to divide them up. Therefore, in order to eliminate poverty, we must eliminate money. This is unlike, say, hunger, or homelessness, which we could eliminate while retaining money. In order to eliminate money, we must eliminate scarcity. I see two approaches to that, both somewhat fantastic. The first is to reach the two dreams of nanotechnology and fusion power. If both of those can be attained, then it is possible to create any physical object, and we always have the energy needed to do it. The second approach would be to figure out a way to upload minds into machines, and then upload everybody.

In the meantime, I’m inclined to focus on trying to eliminate hunger, and to in general ameliorate the effects of poverty, rather than trying to eliminate poverty itself.

Comments (2)

Exception Destruction

Languages that support exceptions need to support destructors or they need to support a try/finally construct. Otherwise using exceptions is too difficult, because if you have some local state to clean up in a function, you have to catch and rethrow every exception.

The goal of exceptions in C++ is that code which does not throw an exception should be just as efficient as code which is compiled without any support for exceptions. Unfortunately, this is impossible. When any function can throw an exception, and when there are destructors which must be run if an exception is thrown, the compiler is limited in its ability to move instructions across function calls. Of course it is not generally possible to move instructions which change global or heap memory across a function call, but in the absence of exceptions it is generally possible to move instructions which do not change memory or which change only stack memory. This means that exceptions limit what the compiler is able to do, and it follows that compiling with exception support generates code which is less efficient than compiling without exception support.

Of course exceptions still have their uses, but lets consider programming without them (this is easy for me to imagine–I didn’t use exceptions in the gold linker). If you program without exceptions, how useful are destructors and/or try/finally? What comes to mind is functions with multiple return points, loops with multiple exits, and RAII coding.

C has neither destructors nor try/finally. Does it miss them? I would say yes. A common workaround I’ve seen is to change all return points and loop exit points to use a goto to a label which does cleanups.

The gcc compiler has an extension to C to support, in effect, destructors. You can use __attribute__ ((__cleanup__ (function))) with any local variable. When the variable goes out of scope, the function will be called, passing it the address of the variable. This is an effective extension, but it is not widely used.

Comments (5)

CD-ROM drives

I had an interesting experience this weekend. I bought some Fedora 9 CDs in order to easily upgrade a new laptop. Since I had them, I decided to upgrade one of my desktops from a CD rather than over the net (I usually install over the net, but, sadly but understandably, installing from CD tends to have a fewer glitches). So I pushed the button on my CD-ROM drive to open the holder. I heard a grinding noise, and the holder didn’t come out. I pried it out with a jack-knife, but, predictably, it then wouldn’t go back in. I removed the drive and opened it up, and a couple of pieces fell out. I have no skill with hardware, so my chances of repairing it were zero.

This particular desktop, about four years old, happened to be my newest one. However, I have several other desktops in various states of disrepair, so I figured I would just swap in a new CD-ROM drive. After 90 minutes of unscrewing various computers, I discovered that I now have four broken CD-ROM drives and zero working ones. Three of the CD-ROM drives didn’t open. The fourth one worked well enough to boot Fedora, but failed as soon as I tried to read the whole disk.

This is just another lesson in why computers should have no moving parts. I’ve ordered a refurbished CD-ROM drive for $10, plus $8 shipping. I’ll see whether the cheap approach works.

Comments (3)

Kuttner and Moore

I’ve been reading some old science fiction short stories recently, and I was reminded of just how good Henry Kuttner and C.L. Moore were writing together after they got married. Writing separately they were notable. Moore in particular wrote the Northwest Smith series of stories in the 1930s, which were pulp stories but nevertheless vivid and memorable. Writing together they were excellent. Besides writing under their own names, they also used many pseudonyms, notably Lewis Padgett and Lawrence O’Donnell. Their story Mimsy Were the Borogroves was recently made into a movie, The Last Mimzy, although I didn’t go see it. Their stories range all over science fiction; they never fell into a rut.

Unfortunately, novels are where you get recognition, and their best work was in short stories. They are not well known today.


« Previous Page« Previous entries « Previous Page · Next Page » Next entries »Next Page »