published: Wed, 14-Feb-2007 | updated: Wed, 14-Feb-2007
I haven't done one of these for a while, so here's some link love...
17th Street Photo
I just bought myself a Canon Rebel XTi (the Canon 400D for you readers in the UK and Europe), together with a few accessories (such as the Canon EF 28-135mm f/3.5-5.6 IS USM zoom lens). I bought the body from 17th Street Photo, and let me tell you they are the biz.
First they are pretty much the cheapest. Any cheaper, and the seller is probably disreputable. But not 17th Street Photo. ResellerRatings.com give them one of the best ratings they have.
Second, I ordered online and the next day someone phoned me up to make sure that I'd placed the order, and when I'd verified this, they told me it would be shipping that day. No attempt to try and sell me something I didn't want, or to try and upgrade me to a more expensive body or make. Very professional.
Third, the body was not grey market and hence the reason for it being cheaper; no, it was the real thing for the US market.
So all in all, very recommended. I'll certainly be using them for further accessories and lenses.
My wife bought me a Movado watch a few years ago for my birthday (or was it Christmas?). It's a thin Movado Moderna, gold-plated, black dial, with a black leather strap.
It's a lovely watch, but I'm hell on leather watch straps. After about a year, they've pretty much disintegrated. The official Movado replacement watch straps are a little, er, overpriced, shall we say, so I buy Hadley-Roma replacement straps from JewelryService.com.
They sell a vast range of watch straps, at all different sizes, but I go for an hypoallergenic calfskin one with an alligator skin look to it that complements the watch beautifully. So far, over the years I've ordered three or four of these from JewelryService.com and they've been very efficient at shipping them out to me.
Not only do they send the new strap quickly but they also ship as part of the purchase new posts of the correct size and a little throwaway tool for getting the damn posts clipped in.
Well recommended, especially if you also prefer leather watch straps like I do.
The last time my wife went to visit and stay with a friend of hers, she came back full of wonder and enthusiasm over their towels. They were warm and fluffy, everything you want a towel to be, and our towels are harsh in comparison. Uh, OK, I said.
It turns out that the towels were Christy towels, the Renaissance variety. Christy are a British brand and they make their towels from Egyptian cotton, and let me tell you they are fabulous.
Rather than wait for the next time we were in England to pick up a set, I decided to try out linensource.com and ordered from them. I made sure that I ordered the bath sheets, not the bath towels, twice as expensive certainly, but so much larger. You can really wrap yourself in them. I also took the opportunity to order a new sheet set from them as well, just to try them out. (I just ordered the undersheet and matching pillowcases: we have a goosedown duvet and we buy our duvet covers from England whenever we're there. The US is slowly getting to understand how wonderful duvets are, but they're still rare and expensive here.)
Linensource.com were efficient at sending out the order. Unfortunately the bath sheets were not in stock for the color I chose and had to be backordered, but they arrived just over a week later. The towels are truly wonderful, and I had a great time stuffing the old towels to the back of the linen closet, ready for our guests. I've already ordered another set in another color, to arrive later this week. Yummy.
The sheet set was pretty good too. I opted for 500 thread count sheets, and they are very silky and sheer, if expensive.
Another recommendation, especially if you want Christy towels.
Regular expression engines
Enough of the blatant consumerism; let's move on to some programming topics. Here's a really clear exposition on how to write a basic regular expression pattern matching engine using Thompson's NFA algorithm. This algorithm beats the pants off the exponential run-times exhibited by the standard engines found in Perl, Ruby, Java, and.NET for certain obnoxious patterns.
The only problem is that Thompson's algorithm doesn't support backreferences. Nevertheless, it's a very impressive implementation in less than 400 lines of C.
Cargo Cult Agile
A friend of mine started off his blog with this post. I can hear his voice loud and clear on this one, it comes from the heart. It's all about development shops that say they're agile but in reality they're following a recipe laid down long ago that doesn't fit them any more.
Functional Programming and C#
Dustin Campbell, a DevExpress colleague on our IDE tools team, has been writing a series of posts recently on the functional programming features that are creeping into C#. Well worth a peek. The first one is here.
(Yo, Dustin! How about a link from article to article?)