Tuesday, March 09, 2010
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.
Wednesday, February 03, 2010
2010 - 2 - The Great Emergence (Tickle)
Awful. Historically ignorant, philosophically incoherent, sociologically fanciful.
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
Friday, November 20, 2009
Thursday, November 05, 2009
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
Tuesday, September 29, 2009
Thursday, September 17, 2009
Tuesday, September 08, 2009
Tuesday, August 11, 2009
Friday, July 24, 2009
Tuesday, June 30, 2009
Monday, June 22, 2009
Wednesday, June 03, 2009
Tuesday, May 26, 2009
Friday, May 15, 2009
Tuesday, April 28, 2009
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 13: Inspiration and Incarnation (Enns)
Good discussion of NT use of OT (not grammatico-historical by a long shot)
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 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.
Wednesday, November 26, 2008
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.
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.
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.
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!
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 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
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 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
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
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:
deleting my log file and then doing this:
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
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.
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:
Then, inspired by Reg's "overthought" Ruby version, I did a Scheme version of his implementation:
The design pattern I'm talking about concerns multi-arg Scheme functions like
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?
(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!
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.
Subscribe to:
Posts (Atom)