Recently in High Geekery Category

Two Videos Worth Watching

Reading through this Hacker News thread, I came across dozens of great talks to check out in the future. So far I've watched two and I think they're worth sharing:

  1. Wat: it's practically programming standup, poking fun at some of the "quirks" of Ruby and JavaScript. Plus it's four minutes long, shorter than an Ignite talk.
  2. Inventing on Principle: this one's longer at 54 minutes but so incredibly inspiring. It's a talk about life in the guise of a reconception of human-computer interaction. After watching it, I immediately started following him on Twitter and checked out his amazing Web site.

If there are any awesome talks you'd like to share, I'm very interested and my email address is over in the right side bar.

The Right Way

It has come to my attention that some people dispute my way of replying to email threads. I elide all but the minimum necessary to supply the context.

Be brief without being overly terse. When replying to a message, include enough original material to be understood but no more. It is extremely bad form to simply reply to a message by including all the previous message: edit out all the irrelevant material.

That's from RFC 1855, people. You think you're better than an RFC‽ Come on!

My First Aphorism

Code belongs in production.

I have had this as my mantra for as long as I've been developing software professionally. Tonight we released a new version of my product and so I tweeted it in celebration.

That got me to thinking: did I coin that phrase or did I read it somewhere? I often forget some clever tidbit that I've read, so it wouldn't have surprised me to find it in a Google search.

But there were no matches! I therefore claim its origin.

Build Your Own Audiobook

I'm a fan of Instapaper the service and the iPhone app. Lately, though I have accumulated a queue of quite-long articles that I can't seem to decrease. I really want to read the content I save for later; this backlog feels qualitatively different from the substantial RSS backlog I've built up in Google Reader.

I got to thinking that it'd be handy to listen to my Instapaper items. I remembered the developer's blog entry touting his accessibility improvements and that got me to thinking: why not use VoiceOver? This seemed like the ideal use since the Instapaper-stored content is primarily textual and simplified.

Sure enough, it was easy and performed beautifully—enabling me to listen to an article or two while I did the dishes. Here's how to do it:

  1. Set up the triple-tap of the Home button to toggle VoiceOver.
    1. Go to Settings.
    2. Tap on "General."
    3. Scroll down and tap on "Accessibility."
    4. Scroll to bottom and tap on "Triple-click Home."
    5. Tap on "VoiceOver" and save your setting by going back.
  2. Open Instapaper and the article you want.
  3. Triple tap the Home button.
  4. Swipe downward on the screen with two fingers. This starts the actual reading.

The neat thing about this is that Instapaper automatically saves your place and syncs it with all devices, so resuming where you left off is easy.

[UPDATE (12/18/2012): Other options brought to my attention include Instapaper to Podcast, Voice Dream Reader, and Readomator. I still like my way best for the time being because it's free and uncomplicated.]

Postbox AppleScript to Create Message

Every morning at work we have a standup meeting on the phone where we take turns talking about what we did yesterday and what we're going to do today. It's a common type of meeting and takes about 5-10 minutes if no issues come up and 15-30 if some do.

As the meeting coordinator, I type up the meeting minutes and send it out to the group immediately following. Every day I would create a new message, type in the standard format, and randomly list the order for people to participate. After months and months, it dawned on me that this is a case for automation!

(As an aside, my mail client of choice is the cross-platform Postbox. It's built on top of Thunderbird but more native and with better usability. I highly recommend it!)

Here's the AppleScript I came up with—it works like a champ and I have it hooked into Alfred so that I can summon the email with a few keystrokes:

-- Get a randomized list of employees
set employees to {"Michael", "GOB", "Buster", "Kitty", "Lindsay"}
set employeeCount to count of employees
set ordered to {}
repeat
	if (count of ordered) is equal to employeeCount then
		exit repeat
	end if
	set employee to some item of employees
	if ordered does not contain employee then
		set end of ordered to employee
	end if
end repeat

-- Set up message details
set standupSubject to "TEEM Standup Notes (" & (do shell script "date '+%m/%d/%Y'") & ")"
set standupRecipients to "teem@example.com"
set standupEmployeeList to ""
repeat with currentEmployee in ordered
	set standupEmployeeList to standupEmployeeList & currentEmployee & ": " & "

"
end repeat
set standupBody to "Duration: 

" & standupEmployeeList

-- Create standup notes email
tell application "Postbox"
	send message subject standupSubject recipient standupRecipients body standupBody
	activate
end tell

I checked and the AppleScript library for Mail.app is pretty similar. I'll leave that as an exercise for you, the reader.

Times the Times Tables

My nine-year-old daughter is really slow at addition, subtraction, and multiplication—she often needs to use her fingers to do simple calculations. This is very worrisome to me because arithmetic is the foundation of so much mathematics that her inability is going to be a serious problem soon.

My wife and I learned arithmetic using verbalized tables that we had to memorize. That's out of style in American education nowadays, but it's really an effective technique. Rather than have one of us recite them over and over with her, we thought that this was a perfect application for technology.

I surveyed the available options on the App Store and none of them offered audio recitation of the times tables. My wife reminded me that the iTunes Store would probably have something, so I opened the iTunes app. They had times tables, but each number was a separate track and they were very kitschy: one set, in fact, had each number done in the style of a different rapper.

This was ridiculous! I certainly had no intention of paying $9.99 for recordings of dubious utility. Luckily, I'm a geek and this is a very simple problem:

Generate 144 strings and make a recording of a computer voice verbalizing them.

I have a Mac so Python was an obvious choice:

for i in range(2, 13):
    for j in range(1, 13):
    	print(`i` + " times " + `j` + " is " + `(i*j)` + "\r\n\r\n")

Save the file somewhere as times_tables.py and fire up the Terminal.

This is where it gets amazingly easy! There's a say command built in to Mac OS X, which uses any number of voices and outputs in many formats. I chose to make an AAC (iPhone-friendly format) version like so:

python times_table.py | say -v Alex -o times-tables.m4a --data-format=aac

That's it! I tried a bunch of the varieties and "Alex" was the most melodious, human sounding voice I could find.

[UPDATE: Here's a preview (and download) if you want to hear it.]

Gmail Hell

I got my Gmail invitation back in June 2004 and was able to register my preferred username with no trouble. At the time, I was supremely excited to a) get an invitation to the great new service and b) get a username that is easily read out loud. I used it a little bit but soon got my own domain name (this one) and set up my own email address.

The Gmail account mostly just sat idle and I would use it sparingly—mostly on Web forms with terrible validation that wouldn't accept this domain name. In the last three or four years, though, it's seen a terrific increase in activity.

The problem is that my username can easily be used by every Barb, Barry, and Brandon. And they use it! For a while, I dutifully replied to email threads saying that they had the wrong email address. Once that became overwhelming, I just started deleting them en masse and reporting everything as spam.

Then I couldn't keep up with that. I now get about 10K emails a month that Google accurately deemed spam and I manually cull at least another thousand by reporting them as spam. That's irritating but not the most boggling part of this story.

Lately, I've been getting confirmation and "welcome to" emails. People around the country are using my email address for their accounts. In so doing, these people give me full access to their Dish Network, Netflix, Hulu Plus, and Redbox accounts. They are lucky that I'm a fine upstanding citizen, but you can't count on that in this day and age.

Today was the real shocker, which precipitated this blog entry. I got an itinerary confirmation from Priceline for a trip to Portland, Oregon! Who on earth attaches their travel plans to an email address they don't control. I'm flabbergasted!

[UPDATE (4/28/2013): Apparently I'm not the only one this has happened to.]

Disappointment is Not Entitlement

Google acquired Sparrow. People took to their Twitter clients and started whining about how unfair it is. iOS developer Matt Gemmell decided he'd had enough of this entitlement mentality and made his argument.

I agree with him almost completely. People who will pay $4 for a coffee at Starbucks but aren't willing to shell out for a paid version of the app they use everyday mystify me. I buy apps without a second thought if they're 99¢ and didn't blush at paying $19.99 for OmniFocus for the iPhone because I use it every day.

Further, the perpetual free updates on iOS are a continuing delight to me. Bug fixes are nice but new features on an app I already paid for are the gift that keeps on giving. I certainly don't expect such updates but I am eternally grateful when they come. I actually wish there was a mechanism to pay for new features—I know that these things come at a price (the developer's time) and I don't mind paying for that.

But I disagree with Gemmell that I can't complain. I had replaced—such as one may—Apple's Mail app on my iPhone with Sparrow for iOS. I got used to its quirks and idioms. I enjoyed its fresh perspective on email clients and looked forward to its future innovations. In short, I had encompassed it into my workflow.

I'm disappointed that the Sparrow guys sold to Google and will do no further development on Sparrow. They had every right to do what they did and I completely understand why they sold, but that doesn't mean they get a free pass on criticism or are above reproach. I think they will make the Gmail app just as great as Sparrow, or at least much better than it currently is. The problem is that Sparrow didn't just support Gmail: it did IMAP and POP.

This feels just like Tweetie, as others have noticed. That was an innovative, exciting Twitter client for the iPhone and eventually the Mac. I bought both versions (including Tweetie 2 for iPhone) and enjoyed using them. When Twitter bought AteBits and made their changes to the various clients, I consoled myself that Tweetie for Mac kept working. Eventually, though, the API changes that Twitter made outpaced the dormant Tweetie and it became useless.

Conceivably, I can keep using Sparrow as long as I want but it will get long in the tooth eventually. (Luckily, it's working with email which hasn't changed in very meaningful ways in many, many years.) And there's nothing I can do to change that. I can hope for new entrants into the field but they will likely also get snapped up. Apple hasn't shown much innovation in the default email client either. So I'm disappointed. No big deal.

(Others have said that this move invalidates the "support independent developers" viewpoint. I think this new trend of "acqui-hires" is very dispiriting. In the past, one company acquiring another did so for its products. If a product was successful, the acquirer would keep it around and maybe provide better funding for its marketing and development. These acquisitions for talent portend a future of orphaned applications and disappointed users.)

WRT54G Notes

I'm having some trouble with my Linksys WRT-54G router. It's a very old router—I think I bought it at least eight years ago. Basically, my wife is complaining that our Macs suddenly lose the signal and she has to turn Airport off and then on. Sometimes she even has to restart the router itself.

I've searched Apple's support forums thoroughly and tried everything recommended there. Given that this happens on Snow Leopard and Lion, on an iMac and a MacBook, and even on her iPhone, I'm leaning towards the router being the problem.

This is going to be an ongoing blog entry covering my efforts to resolve the issue. I'm going to tweak one setting at a time and see if it has any effect.

  1. Upgraded the firmware version to v4.21.5
  2. Disabled Lazy WDS since I'm not doing any mesh networking.
  3. Increased the beacon interval to 500 from 100 milliseconds. My thinking is that I can live with a longer delay in establishing a connection if it reduces network traffic.

Some of you are probably thinking: a) just buy a new freaking router already and b) why not just throw DD-WRT or Tomato on already and be done with it. Points taken, but home networking isn't my thing. I'm afraid that I won't set it up correctly, resulting in an inability to connect to work's VPN or general hassle with all the connected devices.

I'm not ruling out either of those as the eventual result but for now I'm going to tweak.

[UPDATE (5/26/2012): Argh, still having the same problems. After pondering the issue more, I concluded that it has to be related to OS X Lion. My MacBook Pro is still on Snow Leopard and it can stay hooked up to VPN over wireless for hours and hours. The troubles seem isolated to our MacBook and iMac, which are both on Lion. So I just deleted com.apple.alf.plist as recommended here and removed my network passwords from the system Keychain as recommended by Apple.]

[UPDATE (5/29/2012): Trying this tip after the problem re-surfaced yet again.]

Why I Still Have No Posts in Google+

I belong to a lot of social networks. Pretty much any time I hear about a new one, I sign up for the "bbrown" username. I have learned my lesson about waiting to register for these things: having a common first name and surname, the late bird gets the "bbrown217" or other such contortions. (I almost had bbrown.com, after Burr-Brown was acquired by Texas Instruments in 2000. I checked every day waiting for the expiration hold to come off. Every. Single. Day. Except on my birthday, that is, because I was busy. Guess when the hold came off. I still bristle at that loss.)

But I have to say that I don't have much passion for any of them. I like Twitter a lot—mostly because there's a high signal to noise ratio on the people I follow and the 140-character short form makes it drop-dead easy to write something. But mostly I don't care for them because your content is locked away, subject to the whim of the provider to allow you to export it out of its cage.

I may be biased, but owning your own domain and hosting your own content is the best and safest form of expression. As long as you pay your bills, no one can really silence you and you—mostly—get to decide what the public can see. On the social networks, other people can decide that your views are "hateful" or "spam" or "worthless tripe" and get it taken down.

Over here, though, I get to say whatever I want however I want. This is my soap box.

In my time on the Internet, I've seen many sites come and fade into obscurity. I've seen social networks actively worked and then slide into disuse—fallen prey to passing whims both personal and corporate. This Web site's been active for the better part of 9 years now and there's no reason to suspect that it won't be around for another decade or two.

Number 5 is Alive!

MC Frontalot just released Solved, his fifth album (CD? Set of downloads?), and it's an excellent piece of work. (If you're in Phoenix, you simply must attend his concert on September 10th. I've been to all of his other shows in town over the years and they're wonderful.)

Here's how I'd rank his CDs:

  1. Nerdcore Rising
  2. Solved
  3. Final Boss
  4. Secrets from the Future
  5. Zero Day

Solved is just that good! Now, there's great songs on every one of the previous albums, so this is just a perspective on them as an aggregate. I've listened to it about a dozen times since I got it—like many of Frontalot's works, you have to ease into them.

Here's my rundown of the best of Solved:

  1. I'll Form the Head: I watched Voltron every morning as a child and this song just cracks me up. Money line: "I think it's time that we combine and rip this thing to shreds / but only if you promise me that I can form the head!"
  2. Captains of Industry: I'm also a fan of MC Lars, so this collaboration worked really well for me. I really like when Frontalot begs for his audience to actually compensate him for his work. Money part:
    Try to sell music, they look at you funny.
    Not a transaction that necessitates money,
    not with the true cunning of the kids in the know.
    But you look at them cheering -- notice what? They don't sew.
    Don't go to the print shop and silkscreen their own,
    yet they're always needing something to cover the torso.
  3. Stoop Sale: very catchy tune. Frontalot doesn't often journey into the storytelling genre, but he's a master at it when he does. Money line: "And that's when you have to endure / the regret that accompanies said decision-making: / all the other wishes in the world that you've forsaken."
  4. Just Once: this track is a crackup—could this be a problem he'd like to have? Money line: "Just once, I don't want to hump tonight. / Why can't we hang out and talk?"
  5. Front the Least: a track of modesty. Money line: "And the worst thing about my mistakes is they're all reruns."
  6. Nerd versus Jock: playing to the audience, to be sure. Solid effort. Money line: "Look at now: demand for nerds. Old jocks: stock on clearance."
  7. The Sketches: this is the first album of his where I don't generally skip through the interstitial sketches. They're funny and I'm glad to have been introduced to Wyatt Cenac.

I'd recommend this CD to anyone intrigued by nerdcore hiphop, the genre of rap that MC Frontalot created in 2000. He's an amazing wordsmith and produces some really funky beats as well.

Kindle Keeps Burning It Up

Today's new version of Kindle for iPhone/iPad adds support for page numbering. I was wondering how to cite a "location" of text from a Kindle e-book: this update shows the page numbers from the book edition alongside the "location" numbers.

I'm trying to think of what iBooks gets me over the Kindle app. Useless page-turning animations? Advanced highlighting-edge graphics? Integrated book store? Having to sync up with iTunes to safely store your notes, highlights, and positions? None of these are compelling.

Thoughts on the iPad

As the Mac guy at work, many have asked for my opinion of the new iPad. In a nutshell, I think this is an astonishing device that truly represents a revolution in computing. (Other tablet devices have preceded the iPad, but revolutions aren't defined by failed attempts. Success counts for a lot.)

At home, I have a Dell netbook, an iMac, a MacBook, and an iPhone 3G. The iMac is in an office, the Dell is on a shelf somewhere, the MacBook is propped up next to the couch, and the iPhone 3G is in my pocket. At night after the kids are in bed, my wife and I start our computing tasks. She takes the MacBook and I go with the iPhone. Most of my time is spent in my apps but there is some browsing otherwise. It is an astonishingly capable general computing device: it's comfortable to just sprawl on the couch, holding the phone in one hand, and just tap-tap-tapping away. There's no fan and it never gets hot; it's fairly speedy given what I'm throwing at it; and it has a broad selection of apps that are very well-designed.

The MacBook, on the other hand, is less comfortable. It's requires a particular set of positions to work with, gets hot pretty quickly, and there's an inherent disconnect between the trackpad and the cursor on the screen. While the user interface is much better than any other operating system out there, the iPhone's simplicity and intimacy has made me realize the window/mouse/filesystem paradigm's deficiencies. (I bought the Dell netbook because I thought it would suffice for my needs, which are generally Web-based with a modicum of text entry. It truly is the worst of all the tradeoffs and the Dell's keyboard was designed by someone who clearly hates contractions.)

There is something very intimate and intuitive about using your finger as a pointer. "I want to open that link." "Let's open that app." "Move to the next picture." It's no accident that most user interfaces in the science-fiction future involve access by voice, sight, and touch. These input methods are in-born, always available (barring disease or defect), and natural. The reason why they were science fiction (and the science present was stuck in mice and keyboards) was because current technology just couldn't process the intention behind those methods quick enough to make them practical. Voices are inherently variable and muddled; touch is generally too soft to detect and materials too weak to withstand continual, harder pressing.

Steve Jobs said that the iPad will offer the best browsing experience and I fully believe him. I even expect that I will become a fairly proficient typist using its virtual keypad. At this point, I am faster typing on my iPhone than I was on my old BlackBerry with a physical keyboard. It surprised me when I was able to compose a blog entry using the WordPress app and do a passable job at it. With the keyboard dock, this could easily become my main computing machine.

The most revolutionary aspect of the iPad is the abstraction that it represents. Gone are files, windows, cursors, directories, and installers. The user of the iPad never has a sense of the computer within—this is enormously freeing for developers because they needn't worry about the detritus of computing. All he knows are applications, documents, and content. This is a machine for doing, not the relentless tweaking, customizing, and other time wasters.

If this thing takes off (and I think it will), then it will spread throughout the computing ecosystem as much of Apple's recent work has led by example. Poo poo it all you want today, but five years from now this will be the dominant user interface out there. It is the Microsoft Surface for your hand and the possibilities that that entails are dizzying.

[UPDATE (1/29/2010): Added link about the freeing nature of the iPad. {via}]

[UPDATE 2 (1/29/2010): There's a lot of great commentary along these lines, but I think that Fraser Speirs (he of the great FlickrExport) has nailed what I was driving at.]

[UPDATE (1/30/2010): Fixed a link.]

The Quest for Feed Bliss

I've recently switched to Google Reader for all of my feed reading needs. This is the latest iteration in a long line of trying to find the perfect feed reading experience. Here's what "perfect" means to me in this context:

  • Readily available so that I can polish off a few items whenever I have a spare minute
  • Enables me to clear out a batch of unread items easily
  • Fast
  • Navigable by keyboard for faster reading
  • Native applications for whatever platform I'm on plus a Web application backend
  • Sync between work, home, and phone

I subscribe to 250 feeds presently so the primary consideration is staying on top of them. There is a real cognitive weight to having 1,593 unread items and I strongly dislike declaring "feed bankruptcy." So I have spent the last few years testing different options.

For most of that time, Bloglines was my go-to solution. It was fast and fairly efficient. But I was never satisfied because it was Web-based, lacked decent keyboard navigation, and required an Internet connection to access at all. I tried Google Reader when it first came out but it left me cold. Since I spent my working life on a Windows XP machine, I resigned myself to a Web-based application.

Then I got a Mac at work and suddenly all of the great Mac OS X feed reading applications were available. I again tried all of the ones I had evaluated at home: NetNewsWire, NewsFire, Shrook, and some others that I can't remember now. I settled on NetNewsWire because of the NewsGator syncing, the native iPhone application, and decent keyboard navigation. I still wasn't completely happy with the set up because the NewsGator Web application is terrible: no keyboard navigation, slower than you'd think possible, and hard to mark items as read.

As I said earlier, Google Reader is my current solution and I think it's going to stick this time. The Web application has matured substantially since I looked at it four years ago. It lacks a native Mac OS X application but I found a way around that earlier this week, which I chronicled in this Super User answer:

  1. Download Fluid.app.
  2. Save this PNG image (or this higher-resolution one) to your Desktop.
  3. Open Fluid.app and use the Google Reader URL, name, and newly-saved icon.
  4. Launch the Google Reader application from your Applications folder.
  5. Buy Byline or use the really good mobile version of Google Reader (you can save it to your Home screen to boot).

This setup is very fast, feels native (Fluid.app even displays the unread item count as a badge on the Dock icon), syncs between all environments, has great keyboard navigation, and is always available. I've gotten my total unread item count down to 8 and kept it in double digits for the last week, something I haven't done since I started feed reading.

It's refreshing to have that load off my mind.

Curse You, URL Shortening Services!

I now have a horse in the URL shortening drama. My Meme Obfuscation Machine doesn't work for tweets. Try as I might, I just can't get something by Twitter's automatic URL shortening. Seriously, what's the fun in Rickrolling someone with a carefully-crafted, seductive URL when it gets turned into bit.ly/NauRm.

In the interest of contributing to the wealth of tips on WWDC, I'd like to share what I learned this week about the event itself—I can't talk about the session material since it's under a non-disclosure agreement.

  1. Don't lose your badge. I didn't, thankfully, but the attachment of the badge to the lanyard is very precarious. Everything—everything—revolves around that badge and there's security everywhere. They will balk if they can't see the full badge.
  2. There is no Apple-provided dinner except for the Bash. From the original Web site, it seemed like Apple would provide dinner daily, but that was emphatically not the case. The Bash food, incidentally, was excellent. I was stuffed from the sushi, hot dogs, pizza, Chinese, pasta, cookies, and quiescent confections.
  3. You can leave on Friday. I booked my return flight for Saturday morning thinking that sessions would run as normal on Friday and I didn't want to rush around dealing with luggage and transportation to the airport. Turns out, the last session ended a little past 2 o'clock and they have a luggage holding station at Moscone West. I could have easily left that day. There's a lot to see in San Francisco, of course, but I was ready to go home.
  4. Don't miss Stump the Experts. I didn't learn anything at all from the session but it was hilarious. This was the 20th Stump the Experts event and it made me feel nostalgic even though this was my first time attending.
  5. The labs run concurrently with the sessions. There were many great sessions that conflicted with one another, but most of the good labs also conflicted with those great sessions. The best bet, I found, was to skip a Q&A here and there to make use of the session interstitials. Even still, I missed several opportunities. If the videos came out in a timely manner, I'd say to only go to the sessions for the Q&A (or to ask your Qs at) and focus on the labs. You can watch the video at your leisure but you're never going to get that kind of face time with an Apple engineer otherwise.
  6. The WiFi access was excellent. I consistently got five bars throughout Moscone West during the entire conference. I also was able to connect via VPN at will. I'm not sure why the online accounts I read had WiFi trouble in the past, but Apple appears to have gotten its act together.
  7. Complaining about the lines is an effective icebreaker. WWDC, for me, was a series of lines: lines for the sessions, lines for the labs, lines for the urinals, lines for the sinks, lines for the food. Witty observations about this led to many interesting conversations with line neighbors. Not that you need an icebreaker: I never had any trouble striking up a conversation with anyone and the bonhomie was palpable throughout.
  8. Use the elevator. There's an elevator near the stairs that was almost never being used. If you're on the third floor after a Presidio session and you want to go to a lab, your best bet is to skip the line for the escalators entirely and go straight for the elevators. I generally rode it alone; I have no idea why so few people took it.
  9. Plan on getting in line for the Keynote by 8 o'clock. I waited until 9 AM to mosey down to Moscone and the line had already wrapped around nearly back to the main entrance off Howard. By 9:45, we had barely moved. I ended up getting seated in the overflow room, which had quite a nice view of the Keynote, about 10:20 AM and missed the hardware announcements entirely.
  10. The Interface Design consultation is by appointment and they fill up quickly. I was planning on having an Apple engineer give my iPhone application a once-over, but I didn't realize you had to reserve a spot so they were gone by the time I got down there. If I were doing it again, I would make this action my top priority.

Was WWDC worth it? Big time. It was hard being away from my family—video conferencing via iChat helped considerably—but I learned so much and got direct answers to my questions that I can recommend it without reservation. Plus, I got a developer's preview of Snow Leopard that is wonderful. iPhone OS 3.0 and Snow Leopard are going to be great, people. Make sure you upgrade when they become available.

Redmond, Start Your Pricing Guns

One of the most exciting aspects of the WWDC keynote announcements was the pricing of Snow Leopard at $29 and a five-pack family pricing of $49. I've purchased every version of Mac OS X for $129 since the original 10.0 (except 10.1 obviously), only occasionally catching a break due to buying new Macintoshes.

Every version was worth it, mind you, but it still felt like an ongoing cost of owning a Mac. (I must here disclaim any sense of entitlement: I know that previous versions of Mac OS X continue to work after the new ones come out and I have taken that route for non-essential computers. This feeling arose from my inner cheapskate more than any sense of deserving something for nothing.) Every new version required a careful calculation of benefits and review of features for ancillary machines.

But I don't have to think twice at a $29 (or $49) price point. On this point, David Pogue has it right. But his reasons for the pricing barely scratch the surface. I paraphrase his four listed reasons as follows:

  1. This release doesn't have enough features to justify $129.
  2. They want to get this out to a lot of people.
  3. They want to embarrass Microsoft with this ridiculous value of the release.
  4. The lower the price, the likelihood that people won't even blink at upgrading.

There's a lot more to it than that, though. 10.6 requires an Intel machine. If you've got an Intel machine already, it's likely that you've running 10.5 and that you'd gladly pay $29 to recover 6 GB of space much less for a slew of new features. If you're running Tiger on an Intel machine, you have to shell out $169 for the Mac OS X Box Set. And if you're not using an Intel machine, you cannot upgrade to 10.6 (and presumably any future releases either). So this release cycle effectively communicates to those still on Tiger or the PowerPC platform that their days of being supported by Apple are nearly over.

Finally, if 10.6 is truly laying the groundwork for future plans, then Apple has an interest in having as many developers making use of its new technologies as possible. But historically developers will not migrate to these new systems until a critical mass of users have made the move: supporting two disparate versions of a feature is expensive for small developers and they won't do it unless there's a absolutely compelling reason. Pricing 10.6 at this level will induce a substantial number of consumers to upgrade. On the iPhone, I can imagine that 3.0-only applications will come about soon because the upgrade friction is minimal there.

With a solid base of applications using 10.6 features, Apple can sell future hardware in a way that Microsoft-based vendors cannot. With the gigahertz arms race faded, hardware vendors are competing on multiple cores, multiple CPUs, and RAM. But consumers quickly discover that all of this extra hardware encounters diminishing returns on the software that they use—either the software can't make use of memory above 4GB or these extra cores are mostly idle. 10.6's promise is that it makes using these hardware features seamless to the developer through mechanisms like Grand Central Dispatch, OpenCL, and completing the transition to 64-bit.

These strike me as more substantive reasons for the pricing than Pogue's facile ones. I believe 10.7 will resume the $129 price cycle as people catch up to the Intel/Leopard transition and Apple wants the third-party applications to be there waiting to sell the hardware's value.

Email Fun

In speaking with a co-worker, I mentioned a couple email tips that he hadn't heard. Thinking that others may be in the same boat, I offer them here:

  • Gmail: you can put periods throughout the username and Google will ignore them. So "bbrown" can be "b.brown," "bbr.own," or even "b.b.r.o.w.n." and the emails will come through.
  • Gmail: you can append a plus sign and additional text to the username and Google will also ignore that text. "bbrown+specialdeal," "bbrown+spam," and "bbrown+yahoo" all get to their proper final destination. This and the other tip plus Gmail's filters enable you to create disposable email addresses without preplanning.
  • Mailinator is the king of throwaway email addresses. In a form, enter something@mailinator.com and you can access that username's messages through the mailinator Web site. Anyone else can access the email, so this isn't really useful for anything besides anonymous emailing. Some sites have caught on and check for the mailinator domain name, but there are plenty of aliases available (you can even point your own domain's MX record there).

WebException and the HttpWebResponse

The following code is used to make a request and get the results:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://bbrown.info/");
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
StreamReader reader = new StreamReader(resp.GetResponseStream());
string contents = reader.ReadToEnd();
resp.Close();

contents will contain the HTML of this blog if the server gives a 200 OK response. Anything else will throw a WebException. You can wrap the snippet above in a try-catch to handle a non-200, but the exception is thrown in the GetResponse call so you get nothing from the actual response. 404? May as well be a 500.

Today I discovered that the WebException itself has two properties: Response and Status. This Response is the same as the resp above so you can extract out the server response in the catch.

This whole behavior of HttpWebRequest is counterintuitive in the sense that a non-200 is not an exceptional circumstance; I would have expected the response to be accessible and the status code to be populated.

Ch-Ch-Ch-CheckBot

Yesterday I released my latest project at work. I call it CheckBot and it is a Windows service that pulls down messages from a third-party service, checks them for domain names, and replies with whether those domain names are available. I built it using a plugin architecture, so adding third-party services is a breeze.

The first plugin was Twitter. A Twitter user just has to follow domaincheck and then send that bot account a domain name through the direct messaging system. Within seconds, CheckBot will respond with its availability and include a link to register it on GoDaddy.com if it is available.

I am very proud of this application because I did it fairly quickly and I like the simplicity of the design. There was only one bug that came up during testing and it was both minor and quickly resolved. This sort of thing is exactly the reason why I love my job and the Gadgets Team I lead.

[The views expressed on this website/weblog are mine alone and do not necessarily reflect the views of Go Daddy Software, Inc.]

About this Archive

This page is an archive of recent entries in the High Geekery category.

Grammar is the previous category.

History is the next category.

Find recent content on the main index or look in the archives to find all content.

Feedback to

Monthly Archives