The Ship Who Sang

Share

This book is good science fiction, in the sense that it explores something which we are not ready to address as a society — in this case, would profoundly disabled people prefer that we could replace their disabled bodies? What if the replacement wasn’t humanoid? The book is pretty old though, and that shows in some of the elements of the story. I don’t feel it detracts though. The book is also composed of a series of independantish by related short stories, which was a common publishing technique for science fiction in the 1960s.

One story — “Dramatic Mission” — did throw me a little. Its just too out there conceptually, and actually kind of dull until about the last three pages, where the controller poses some interesting questions of Helva. I feel that perhaps the lead up could have been better though.

[isbn: 0345297687]
[award: nominee nebula 1969]

Share

Bolo Rising

Share

In the distant future after the Melconians have done their thing, there is a small pocket of humans and they’re having a bad day. One of things I like about the Bolo books is that their consistent in their overall direction for future human history, and that future is reasonably plausible — its a bit like Asimov’s extended Foundation Series, but written by a bunch of different authors. There must have been a huge coordination effort while producing these books.

This book is pretty standard Bolo fair, which is well written and entertaining. It wont make you a better person, but its a fun read and makes you think.

[isbn: 0671577794]

Share

The Forever War

Share

I read this book mainly because multiple sites recommended it as a response to Starship Troopers. I’d actually read the start of this book already in the form of the short story “Hero”, which is included in Battlefields Beyond Tomorrow. At the time, I would have described it as an ok short story, but not the best in the book. That’s interesting, because the extended version in the novel is amazing. Its one of those books I had trouble putting down, and its gripping to the end. The book has a very different perspective on war from Starship Troopers and is more like some of David Drake‘s writing (they’re both Vietnam veterans). There is also a little bit of Bill the Galactic Hero mixed in as well, without being so over the top. I strongly recommend this book.

[isbn: 9780312536633; 0312536631]
[award: winner hugo 1976; winner nebula 1975]

Share

On Cars

Share

Jeremy Clarkson isn’t one of those people you can read hundreds of pages of at once. That’s probably why he writes articles instead of books. This book is a collection of these articles, and it is an interesting and entertaining read. However, I couldn’t read it front to back. Instead I read it over a series of take offs and landings during a trip, and that worked well. Apart from Jeremy’s sense of humour, and the fact that he’s mostly right, the other interesting aspect of this book is that you get to see his writing style develop over time. It helps explain how we ended up with Top Gear.

[isbn: 9781856131001]

Share

Python effective TLD library update

Share

The effective TLD library is now being used for a couple of projects of mine, but I’ve had some troubles with it being almost unusable slow. I ended up waking up this morning with the revelation that the problem is that I use regexps to match domain names, but the failure of a match occurs at the end of a string. That means that the FSA has to scan the entire string before it gets to decide that it isn’t a match. That’s expensive.

I ran some tests on tweaks to try and fix this. Without any changes, scanning 1,000 semi-random domain names took 6.941666 seconds. I then tweaked the implementation to reverse the strings it was scanning, and that halved the run time of the test to 3.212203 seconds. That’s a big improvement, but still way too slow. The next thing I tried was then adding buckets of rules on top of those reverse matches…. In other words, the code now assumes that anything after the last dot is some for of TLD approximation, and only executes rules which also have that string after the last dot. This was a massive improvement, with 1,000 domains taking only 0.026120 seconds.

I’ve updated the code at http://www.stillhq.com/python/etld/etld.py.

Share