Tuesday, March 09, 2010

2010 - 9 - The City and the City (Mieville)

Excellent. Police thriller wrapped in weird fantasy.

2010 - 8 - Infidel (Ali)

Good stuff

Friday, February 12, 2010

2010 - 7 - Permanance (Schroeder)

Pretty good SF. Similar universe and ideas to Watts' Blindsight (consciousness rare, though not a disadvantage), but sunny and cheery instead of bleak and hopeless.

2010 - 6 - Zoe's Tale (Scalzi)

Very good SF

Wednesday, February 03, 2010

2010 - 5 - Blindsight (Watts)

Excellent. Philosphically like Scott Bakker, but grimmer.

2010 - 4 - Postwar (Judt)

Excellent. Beyond my competence to comment.

2010 - 3 - Jesus for President (Claiborne, Hay)

Very good. The only acceptable Christianity.

2010 - 2 - The Great Emergence (Tickle)

Awful. Historically ignorant, philosophically incoherent, sociologically fanciful.

2010 - 1 - 2666 (Bolano)

Excellent. Huge and weird.

Thursday, December 31, 2009

Wednesday, December 16, 2009

Book 49: Pushing Ice (Reynolds)

OK SF. Some cool ideas, but protagonists were annoying power-loving heirarchs.

Wednesday, December 02, 2009

Book 48: Half a Crown (Walton)

Very good conclusion to the series.

Book 47: The Prefect (Reynolds)

Very good standard SF. No singularity: no real AI.

Friday, November 20, 2009

Book 46: Swiftly (Roberts)

Pretty good. Weird sex made it icky.

Book 45: The Warrior Who Carried Life (Ryman)

Wow, really strange and cool.

Thursday, November 05, 2009

Book 44: Titans of Chaos (Wright)

Meh. In love with the system.

Book 43: Salt (Roberts)

Very cool SF. Anarchists and fascists.

Tuesday, October 27, 2009

Friday, October 09, 2009

Book 40: Fugitives of Chaos (Wright)

Good fantasy. In the struggle of art v. ideology, art wins, but ideology pokes its nose in occasionally.

Thursday, October 08, 2009

Book 39: Humpty Dumpty (Knight)

Weird. Well-written but very confusing, as probably intended.

Book 38: Twenty-Piece Shuffle (Paul)

Wealth and poverty.

Tuesday, September 29, 2009

Thursday, September 17, 2009

Book 35: Infoquake (Edelman)

Lame SF. The future as seen through the lens of a 90s web-marketer.

Book 34: Undomestic Goddess (Kinsella)

Fluffy.

Tuesday, September 08, 2009

Book 33: Matter (Banks)

Very good SF.

Book 32: Kidnapped (Stevenson)

Classic adventure in Scottish hielands

Book 31: Raymond and Hannah (Marche)

Kinda boring literary stuff.

Tuesday, August 11, 2009

Friday, July 24, 2009

Book 28: The Last Colony (Scalzi)

Also good, funny, semi-military SF

Book 27: The Android's Dream (Scalzi)

Good, funny, semi-military SF

Tuesday, June 30, 2009

Monday, June 22, 2009

Book 25: The Mists of Everness (Wright)

Pretty good. Marred by silly, naive politics.

Book 24: The Last Guardian of Everness (Wright)

Excellent. Alternatively terrifying and goofy.

Wednesday, June 03, 2009

Book 23: The Light Fantastic (Pratchett)

Pretty good Discworld novel.

Book 22: The Armageddon Rag (Martin)

Lame and boring. Maybe his fantasy stuff's better?

Tuesday, May 26, 2009

Book 21: Carpe Jugulum (Pratchett)

Funny and true.

Book 20: The Judging Eye (Bakker)

A little slow to start, but then excellent.

Friday, May 15, 2009

Book 19: Neuropath (Bakker)

Freaky.

Book 18: Gomorrah (Saviano)

Excellent non-fiction on organized crime in Naples. Truly wretched.

Tuesday, April 14, 2009

Book 15: God in a Cup (Weissman)

Fawning and trivial look at third wave "coffee guys" (Intelligentsia, Counter Culture, Stumptown)

Tuesday, April 07, 2009

Book 14: The Darkness That Comes Before (Bakker)

Very good fantasy: bleak but gripping

Book 13: Inspiration and Incarnation (Enns)

Good discussion of NT use of OT (not grammatico-historical by a long shot)

Book 12: Sunshine Sketches (Lewis)

Good somewhat humourous stories about rural Ontario.

Monday, March 09, 2009

Book 11: An Evil Guest (Wolfe)

Good. Lots of action, Lovecraft ending, baffling shout-out to Cory Doctorow. I think there's more to this book than I got, maybe because I've heard people say there's always lots to Wolfe.

Book 10: The Golden Transcendence (Wright)

Excellent finish to the trilogy. High-quality far-future SF.

Friday, February 20, 2009

Thursday, February 19, 2009

Book 8: The Shack (Young)

Poorly written, low-quality theodicy. Protagonist does not have his wits about him, for which I blame the author.

Book 7: The Light Ages (MacLeod)

Average fantasy. Victorian era + Magic + Revolution should have been awesome, like Susanna Clarke meets China Mieville, but it was kind of flat.

Wednesday, February 11, 2009

Book 6: Dream (Selby)

Very good. Introductory comments by Aronofsky are just wrong, but author's preface is interesting ("Living the dream" v "Living the life")

Book 5: Hamlet (Shakespeare)

Canonicity puts it beyond categorization.

Book 4: The Phoenix Exultant (Wright)

Excellent sequel to The Golden Age. Hero's a bit more sympathetic now. And a couple of funny parts.

Book 3: The Golden Age (Wright)

Excellent far-future post-Singularity SF. Good stuff on remaining human (or not). And a kind of cool lost-memory detective story. Cliffhanger ending.

Book 2: Pirate Freedom (Wolfe)

Very good historical novel. Doesn't seem as weird and layered as usual for Wolfe, but maybe it's just going over my head.

Book 1: The Birth House (McKay)

OK historical novel.

Wednesday, November 26, 2008

Book 31: What is the What (Eggers)

Excellent "autobiography" of a Sudanese Lost Boy.

Book 30: The Song of the Silent Snow (Selby)

Good short story collection.

Book 29: The Book of Joby (Ferrari)

Very good fantasy/adventure. First third is spectacular.

Tuesday, September 09, 2008

Book 28: The Elementary Particles (Houellebecq)

Excellent modern fiction. Too much graphic sex, but some excellent philosophy.

Book 27: Ha'penny (Walton)

Very good Farthing sequel. A couple of characters are the same, heroine is of the same type as Farthing's.

Wednesday, July 09, 2008

Book 26: Irresistible Revolution (Claiborne)

Very good activist Christian stuff. "Do small things with great love."

Book 25: Out of the Silent Planet (Lewis)

Surprisingly good. With Lewis you rarely escape the feeling of being preached to, and he seems to be fighting a battle with some old ideas for which Weston's a stand-in (check Wikipedia), but on the whole it was fairly cool.

Book 24: Boone (Hansen)

Wow. Just terrible. Annoying, pathetic people. Maybe that was the point?

Thursday, June 12, 2008

Book 23: The Monsters of St. Helena (Hansen)

Pretty good story about Napoleon in exile. Not as weird as Hansen's other stuff, and not as interesting either.

Book 22: Perlman's Ordeal (Hansen)

Good story about a hypno-therapist in early-20c London. Gets kind of weird.

Monday, May 26, 2008

Book 21: A History of Violence (Wagner)

Good graphic novel. Can now see why Cronenberg did the movie.

Book 20: Surprised by Hope (Wright)

Very good semi-popular theology on the end.

Friday, May 16, 2008

Book 19: Mr B. Gone (Barker)

OK horror. Most books bring you in by putting the protagonist in jeopardy. This one tries to put you in jeopardy, but it's not convincing. Angel/demon negotiations were pretty cool.

Book 18: Little Brother (Doctorow)

Spectacular. Every North American should read it.

Book 17: Mothers and Other Monsters (McHugh)

Short stories. Competent, but not for me.

Friday, May 02, 2008

Book 16: Watch Your Back (Westlake)

Decent Dortmunder novel. Don't know who that support group at the end were, though!

Book 15: Ficciones (Borges)

Excellent short stories. Philosophical, academic, fantastic.

Tuesday, April 29, 2008

Book 14: Disunited States of America (Turtledove)

Pretty good. Alternate-worlds adventure. Kind of juvenile.

Book 13: Aristoi (Williams)

Very irritating. Annoying protagonist and poorly-fleshed-out world. The fork thing was cool, though.

Thursday, April 17, 2008

Book 12: The Ghost Brigades (Scalzi)

Sequel to Old Man's War, in same 'world'. Also good.

Book 11: Butcher Bird (Kadrey)

Grotesque fantasy: piercings, drugs, and Dante. Free download from Tor.

Book 10: Old Man's War (Scalzi)

Good space adventure. Some cool ideas, and an engaging protagonist. Free download from Tor.

Friday, March 28, 2008

Book 9: The Devil in a Forest (Wolfe)

Medieval Wolfe. What is his obsession with boxes of sand? Short Sun books have it too! Seriously, good book. I wouldn't have gotten the twist had he not discussed it at the end. Keep track of everyone's weapons!

Book 8: Slave Nation (Blumrosen)

American revolutionaries endorse slavery to ensure success of their revolution.

Wednesday, March 19, 2008

Book 7: The Golden Ocean (O'Brian)

Nautical story in mid-18th century. All the great things from the Aubrey/Maturin series, condensed. Very very good.

Thursday, March 13, 2008

Book 6: Free Culture (Lessig)

Media want to ban all free media.

Book 5: The Circus of Dr. Lao (Finney)

Little story about a beat-up transcendence in a small town.

Thursday, January 31, 2008

Book 4: Blood Meridian (McCarthy)

Good. Relentlessly violent western. Unsuccessful stabs at philosophy. Imprisoned: leave your people and you may die.

Book 3: House of Leaves

Very meta. Wallace-esque post-modern footnote-filled horror story.

Book 2: The Ladies of Grace Adiue (Clarke)

Very good. Fairy stories in the vein of Jonathan Strange and Mr. Norrell, with mostly happy endings. And a pig.

Monday, January 07, 2008

Book 1: Run (Patchett)

Excellent. I love every one of these characters.

2008 Reading List

I plan to keep track of the books I read in 2008 (like I did in 2006). My goal is, again, to read fifty books this year.

Scheme: Through the List Once

The simplest way to compute the average of the numbers in a list is:
  • compute the sum of the numbers in the list
  • compute the length of the list
  • divide the sum by the length, giving the average
So if we have sum and len defined as
(define (sum l) (foldl 0 + l))
(define (len l) (foldl 0 (lambda (x y) (+ 1 y)) l))
then we can compute the average as:
(define (two-pass-average l)
(cond
((null? l) 0)
(else (/ (sum l) (len l)))
)
)
This solution is correct, but it walks the list twice (once to compute the sum and once to compute the length). If we add a couple of accumulators and a facade function, we can compute the average with one list pass, like this:
(define (one-pass-average len-acc sum-acc l)
(cond
((and (null? l) (= 0 len-acc)) 0)
((null? l) (/ sum-acc len-acc))
(else (one-pass-average (+ 1 len-acc) (+ (car l) sum-acc) (cdr l)))
)
)
(define (average l) (one-pass-average 0 0 l))
The drawback to the one-pass method is that we've lost the nice definition of sum and len in terms of foldl. I wonder if we can restore it?

Thursday, August 30, 2007

Key Changes

The band with the offensive name goes through a lot of key changes. This is just an extreme version of what rock does already. Where does the E-flat in F7 come from when you're playing in C? It sounds to me like they're going into the dominant more (playing the flat-five to imply a major second).

Wednesday, February 21, 2007

Two SQLServer SQL Tips

1) My transaction log file was gigantic (38GB). I fixed it by doing this:
sp_detach_db MyDB,
deleting my log file and then doing this:
exec sp_attach_db 'MyDB', '[pathToMDF]\MyDB.mdf'

2) When I'm writing a script that creates tables, I often want to drop the table if it already exists. Instead of writing out the if exists (select ...) drop table over and over again, I created a little stored procedure to do it:

CREATE PROCEDURE drop_table @tableName varchar(255) AS
if exists (select name from sysobjects where name=@tableName and type='U')
EXEC('DROP TABLE '+@tableName)
GO
Now I can drop a table like this: exec drop_table 'MyOldTable'. I created a similar procedure for dropping stored procedures.

Now that I think about it, I wonder whether T-SQL has the equivalent of Oracle's 'CREATE OR REPLACE'. That's basically what I've re-implemented here.

Friday, January 26, 2007

FizzBuzz Exposes a Scheme Design Pattern?

I wrote a simple FizzBuzz in Scheme:

(define (number-interval f t)
(if (<= f t) (cons f (number-interval (+ f 1) t)) '()))

(define (fb n)
(cond
((eq? (remainder n 15) 0) 'FizzBuzz)
((eq? (remainder n 5) 0) 'Buzz)
((eq? (remainder n 3) 0) 'Fizz)
(else n)
)
)
(define (FizzBuzz m n) (map fb (number-interval m n)))



Then, inspired by Reg's "overthought" Ruby version, I did a Scheme version of his implementation:

(define (carbonate n name)
(lambda (x)
(if (and (number? x) (eq? (remainder x n) 0))
name
x
)
)
)
(define (compose . fns)
(define (compose-list functions)
(if (null? functions)
(lambda (x) x) ; identity function
(lambda (x)
(define (g y) ((compose-list (cdr functions)) y))
(g ((car functions) x))
)
)
)
(compose-list fns)
)
(define (FizzBuzz2 m n)
(map (compose (carbonate 15 'FizzBuzz) (carbonate 5 'Buzz) (carbonate 3 'Fizz)) (number-interval m n))
)



The design pattern I'm talking about concerns multi-arg Scheme functions like compose, above. The composition of a list of functions is the composition of the first with the composition of the rest. But I can't see how Scheme's multi-argument-function syntax is amenable to the natural recursion. So I have to write the compose-list helper function.

I've had to do this a few times writing Scheme functions, so maybe it's a design pattern! Mark Dominus has pointed out that patterns are a sign of weaknesses in programming languages. So, is this a real weakness in Scheme? Is there another way to recurse with a multi-argument function?

Tuesday, November 28, 2006

Book 50: Tatja Grimm's World (Vinge)

Disappointing Vinge. But it was his first novel, so maybe that's why. Some exciting scenes, but none of the "wow" factor of "A Fire Upon the Deep" or "A Deepness in the Sky". And his attempts to avoid "as you know, Bob" setups are kind of clumsy (but I guess at least he tried). And neologistic abbreviations are so annoying ("art'ry" for "artillery" -- yeesh!). Stephenson does this too, with "phant'sy". Stop banging me on the head with etymology, you smug jerk!

So that's fifty books! And before December!

Book 49: H.M.S. Surprise (O'Brian)

Another great Aubrey/Maturin. Very exciting battles and espionage. And Dil was an affecting character, despite her short stay in the story.

Book 48: Darwinia (Wilson)

Reasonably OK. Wilson's books seem to get better in the order he wrote them. Unfortunately, I'm reading them in reverse order! The one standout for me in this book was his establishing Lovecraftian monsters in a hard SF environment.

Tuesday, November 14, 2006

Book 47: Post Captain (O'Brian)

Second Aubrey/Maturin. Crammed with plot and excitement. Maturin's wool suit and bees were hilarious.

Book 46: Going Postal (Pratchett)

Very good. Usual Discworld wackiness, but with a motivating good-versus-evil plot and some character development more believable than Moist von Lipwick's name.