English PSA

To whom it may concern:

“Up to” takes a finite argument and no modifiers. It is a limiting operator, instilling an upper maximum on the number that follows. If you can save “up to $100,” it means that savings cannot exceed $100.

“Save up to $500 or more” is illogical, because you state a maximum and then state it can be exceeded. It would be like “Speed Limit: 65+” It’s not a limit.

Vague quantities don’t make sense, either. This means you, AARP commercial. “Save up to thousands of dollars.” What does that mean?!

I see this written up to a lot of times a day, or more. It literally makes smoke come out of my ears, irregardless. Please, don’t do it.

nginx and mod_rails

While wrestling to get Rails back up and running on my laptop after upgrading to Snow Leopard, I noticed something interesting on the Phusion Passenger (mod_rails) site: it supports nginx. If I ever have free time (a laughable proposition), I’d like to give that a whirl. Something tells me that Passenger on nginx may outperform Mongrel clusters by a long shot. Especially if you mix in Phusion’s Ruby Enterprise Edition.

(If you’re playing with fun configurations, I’d like to throw varnish and haproxy into the mix, too.)

Snow Leopard Review

I suspect that Apple’s in a bind with Snow Leopard. In what has to be an unprecedented move for a software company, Apple announced that Snow Leopard, Mac OS X 10.6, would focus primarily on speed and stability improvements, not on new features. There were plenty of new features, but most of them were extremely minor. So if there are bugs, they’ll be complained about much more loudly than the minor under-the-hood improvements.

Snow Leopard

And, unfortunately, there are bugs, so I’m going to complain. But first, the good news:

  • The install process is nice and easy. Pop the disk in and it’ll prompt you to install. It took nearly an hour, and the install process seizes control. (This is why I have many photos of the Snow Leopard box against various backdrops with various lighting. There wasn’t much else to do at the time.) Protip: hit “Customize” during the install process and deselect the languages (“Translations”) you don’t plan on using, e.g. most or all of them, unless you’re fluent in a dozen languages.
  • They weren’t kidding about saving space. I reclaimed 10GB after doing the install. Much of it was apparently legacy junk and old drivers. Snow Leopard supports only Intel-based Macs, so the new code no longer needs to support older architectures. And apparently, print drivers used to take up many gigabytes, since someone at Apple thought it was a good idea to install drivers for every printer known to man.
  • It does feel faster, though I haven’t done any tests. At the end of the day, though, it’s feel and not tests that matter.

Now, for the bad things:

  • Ruby is upgraded to 1.8.7. Upgrades are nice, except when they’re unwanted. I was at 1.8.6 on purpose. This also breaks all sorts of things like Passenger. Greg Benedict has a post here on fixing the damage Snow Leopard may do.
  • My top menu has gone fubar. My clock and Spotlight are missing. I use those things a lot. This may (or may not?) be caused by the fact that iStat Menus, still installed on my machine, does not work on Snow Leopard yet, and that the Preferences Pane for it crashes. I’m finding that I used Spotlight and the clock quite a bit.
  • Apple advertised Exchange 2007 support. I presume this much is true, but it turns out there’s a reason they always said “Exchange 2007” and not “Exchange.” Snow Leopard brought me no improvements connecting to my employer’s Exchange 2003 server, so I’m stuck on IMAP and Lightning until our IT guys decide to use Exchange 2007. People don’t upgrade those things the second they come out, though, so I’m not holding my breath.
  • iPhoto stopped seeing my USB CompactFlash card reader. This, too, has been a big deal, because I’ve come to love the importer that it uses. (In the past, I copied folders to my desktop. Now, it will copy only what’s changed into an album, so I don’t have ten copies of the photos at the front of card, in folders like 100_CANON and 100_CANON_take2 and 100_CANON_again and then 100_CANON_tuesday….) But then, about a dozen posts into having people suggest things in vain on the Apple forums, it just started working again, literally as I was typing out a reply.

The box also advertises OpenCL, their CUDA technology, as well as Grand Central, which is supposed to make multi-core support much more versatile. I’m on a crappy dual-core “Core Duo” (not “Core 2 Duo”) box with a who-knows-what video card, so I’m not holding my breath for any big improvements.

I’d call it a mixed bag. But as I mentioned at the top, the things that I like are minor improvements, while the things that annoy me are big impositions.

Camera News

I’ve been on the fence for a while about upgrading my camera setup. The Canon T1i has sat perfectly in that in-between zone that I always approach traffic lights in. (If I stop, I’ll have to stop really quick. If I go, it’ll turn red as I go under it.) If the camera were any more affordable, I’d be reviewing it and selling my old one. If it were any more expensive, I’d have written it off as unreasonably expensive.

I eventually decided to go for a Strobist-style lighting setup instead, and to postpone any camera upgrades. And as soon as I set that in motion, I noticed an interesting deal at Costco. (And, apparently, everywhere else.) If you buy the T1i with the $300 MP980 printer, there’s a $300 rebate. This appears to be run by Canon and not Costco, so it’s possible to shop around and see if there are even better deals. I don’t need a $300 printer, but assuming I could unload it on eBay for close to what it goes for new, that brings the camera down to the $500 range, at which point it’s very competitive with their existing digital SLR lineup. (In fact, it undercuts many of them.) The downside is that you have to put up $1,100 cash to get in.

There have been a lot of rumors about a Canon 7D coming out. In the past, there was the 1D line, which was Canon’s flagship line, often in the $5,000-$8,000 range. The 5D line was a more affordable version, but Canon’s 5D Mark II came out with a lot of features that the 1D line didn’t have. So there has been a lot of speculation around the 7D and what it might entail. This Canon Rumors thread is being quoted as fact, suggesting some nice improvements that probably won’t cannibalize 1D sales too much.

This post suggests that the release date is very soon, and that the T1i might give rise to a T1 released at the same time (next week?) as the 7D. Traditionally, the XTi and the XSi have spawned the more affordable XT and XS lines, which are more affordable versions of their bigger siblings. The description of the T1 is too vague for me, though. The movie mode on the Ti1 was very exciting, but so was the greatly-improved LCD and the greatly-improved ISO sensitivity. Rumors of a Canon 1D Mark IV and a Canon 60D are out, too, but with a release of next year. Also on the rumor mill: an updated version of Canon’s beloved 70-200mm f/2.8 IS lens.

My Venture into Advertising

Thanks to an exceedingly generous offer from Google, I wound up with a very modest advertising budget in Google AdWords. Since the blogs don’t make money (I don’t show ads or charge fees), I decided to treat it as an experiment as opposed to any focused, strategic ad blitz.

First, a primer: two common terms in advertising are CPM and CPC. CPM is the cost per thousand impressions (showings of your ad), and CPC is the Cost per Click. In general, CPM is low (arbitrarily, a penny), and CPC is high (arbitrarily, $1.50). Google AdWords has some really nifty tools to focus your advertising, and to give granular reporting. You buy ads for specific keywords. On the blogs, I bought keywords for certain blog posts that were already getting high traffic, like my post on T60 disassembly, and Kyle’s Lenovo X200 review. I also ran a small campaign for a family friends’ site, which I targeted solely to New Hampshire. (A very neat functionality!)

I set a max CPC of $2, and tended to stay slightly under it. It seems to me that setting a higher CPC will help your ads be shown higher (which will help get more clicks!), but I really didn’t want to pay Google $5 for every person that came and read Kyle’s X200 review, since it earned us $0.00.

I did find some interesting things, though:

  • Placement is important. If you ad is shown above the others, it seems to get many more clicks. This costs more money. This is the same thing with SEO: we’re on the first page of Google results for some juicy keywords, yet we get very few clicks since we’re down at the bottom. I suspect traffic would grow an order of magnitude or more if we were #2, and possibly two orders of magnitude if we were #1. (Except we’d be competing against CNet for that spot…)
  • Generic keywords aren’t necessarily better. I put “lenovo x200 review” as a keyword, but also left “lenovo x200” in. That was a mistake, but it turned out to be a very good mistake to make. It was responsible for more than 90% of impressions, which I thought of as a bad thing — I’m paying money to show an ad that’s probably irrelevant. But it’s not. Some of the very targeted keywords got a handful of impressions but no clicks. “lenovo x200” was shown thousands of times and got a handful of clicks. There’s an argument to be made about percents, but I’d counter that it’s a moot point since 0 clicks out of 17 impressions, versus 1 out of 10,000, still tilts the scale in favor of 1 in 10,000.
  • Click-through rates are very low. The exact figures vary greatly, and probably vary even more depending on what you’re advertising, but as a rough estimation, you might have to show an ad 1,000 times before anyone clicks on it.
  • Ads on Google are most effective. Google gives me three choices: ads on Google, ads on “partner search” sites, and ads on general content sites that display AdWords results. The ads shown directly on Google got considerably more clicks every single time, even though ads on content sites got considerably more impressions.
  • Advertising is expensive. I pay a couple dollars every time someone clicks a link. Since I’m running a low-volume campaign, and since I’m just burning through a credit that would have gone to waste, I don’t mind. But I wouldn’t pony up my own money, since I don’t get any benefit from it. Even if I ran an online store, only a fraction of people who clicked my ads would actually “convert” (buy something), so you’d need to be making decent money from each conversion before advertising makes sense.
  • Advertising is cheap. (I love giving contradictory items on bulleted lists.) For about $20, I’ve shown ads to several thousand people and gotten a dozen or more clicks. Some have been to a family friend’s business site, which could actually result in new income for her.
  • Playing with keywords is important. My gut feeling for what keywords would be effective was often wrong. Google has a keywords tool that helps, but even that isn’t too accurate. It shows the most popular search terms, so it will help get your impressions up. But it’s silent on click-through rate. Sometimes they were very different.

Running a Site

The more I do with websites, the more astounded I am by how much there is that can be done in maintaining a site.

For example, things like server maintenance and moving to a better network are things that one might not traditionally think of as the job of a webmaster. I’ve been doing a lot of SEO, ranging from setting meta keywords, watching Google Analytics, to building XML sitemaps. These, too, are things that don’t normally come to mind, but they’re things you can spend a lot of time on. Right now, I’m toying with Google AdWords to place ads, though only because Google offered me a promotion. (I wouldn’t ordinarily spend money to run ads promoting my personal blogs…)

A big thing I keep coming back to is the realization that maintaining a static HTML site is a nightmare. I run a site with three static pages, but got sick of making changes and having to apply them to all three pages, so I started using server-side includes in PHP for headers, footers, and the navigation bar. But now I want to customize the keywords (in meta tags) per-page, so I’m looking to migrate it to a CMS. I don’t think I would ever create a site in pure HTML these days.

Advertising URLs

I don’t know why, but it seems that the people who read URLs in ads are more computer illiterate than the general population. A few things I would like to announce:

  • You cannot “click to” a website.
  • While strictly speaking, you can “click on” a URL, it makes no sense to ask people to click a URL that you read on the radio or show on TV.
  • You can “surf to” a website, but that started being corny after 1999. Why not just ask people to “visit” or “check out” your website?
  • The slashes used in URLs are just “slashes.”
  • Technically, they’re “forward slashes,” but don’t say that unless you’re asking people to enter your Uniform Resource Locator into their web browser and to use the Hypertext Transfer Protocol over their modulator-demodulator.
  • Backslashes are “backwards” of normal:
  • Almost nothing uses backslashes. Saying “backslash” is wrong and misleading.
  • Not only is it wrong, but specifying the type of slash is needless.
  • Do you really need to read slashes in your URL at all?
  • This seems to apply to NPR only: you do not need to spell out “.org”. Ever.

Energy Vampires

One of my professors was big into Eckhart Tolle, and often quoted passages. One of the things he emphasized several times was the concept of “energy vampires,” the type of people who drained you of energy through various means. The point he made is that you should really just cut your losses and leave them.

In an online community I help manage, for example, we ended up kicking out some people who were constantly causing headaches. They didn’t overtly break any rules, but they were perpetual party-poopers, and the rules, if read closely, don’t oblige us to let anyone stay. We got rid of them and the overall tone improved to a community of happy people.

Someone in Canada just left a rude comment on one of my old posts here. I used to be pretty paranoid about not seeming like I deleted comments I didn’t like, but I just deleted his comment.

I hate my eye doctor. Or rather, my former eye doctor. The doctor was excellent, but the rest of the business was horrendous. I called a while ago to see if my prescription was still valid. She told me that it was not valid, and, in not so many words, that I was an idiot for not having booked an appointment as soon as I got a reminder postcard from them a few months ago. I started to explain that I had a six-month supply of contacts then, but then realized that I didn’t need to explain myself to her. I asked how far out they were booking, got a snooty reply about how I could have gotten in sooner if I had booked earlier, and thanked her for her time. I go to meet my new eye doctor in a few weeks.

Same thing with my post about GoDaddy. Eckhart Tolle would have some eloquent, uplifting words, but the way I’d put it is this: I decided not to take their crap, or my eye doctor’s crap, or some random people on the Internet’s crap. And I’ve found it’s quite soothing. Be nice, of course, but if you find yourself spending a lot of time dealing with crap, consider why you can’t just walk away for good.


I think I probably read the news at the time it was actually news, but glossed over it because it seemed boring at the time… CUDA is an Nvidia technology that, in short, allows people to write code to use their video cards for number-crunching, not just drawing pixels. This seemed absurd without knowing too much about video cards, but it seems that GPUs are a fairly different environment from normal CPUs. Namely, they’re meant for massively-parallel workflows.

The people who seem to really be loving this are security folks and distributed cracking teams. This post on Offensive Security (affiliated with the BackTrack Linux distro) describes the configuration they’re using on a normal PC with an Nvidia card, and getting “10-15x” the throughput of a decent CPU in brute-forcing MD5 hashes.

Distributed (over the Internet) cracking of keys is nothing new, but it seems that there’s an interesting field developing in which CUDA+Internet is being leveraged to create what are ultimately among the most powerful “supercomputers” in the world.

I wonder what else this technology could be used for. Folding@Home comes to mind as one… Actually, I would wager that Photoshop would do extremely well using a GPU as a graphics processor, versus a normal video card.