Web

Google Building Maker

Google addresses an incredibly complex task with scale and grace:

(via googleblog.blogspot.com)

CSS Images, Sprites, and iPhone WebKit

A few months ago, I was helping a friend troubleshoot an odd iPhone-related visual error on Hunch. The right side of the buttons weren’t lining up vertically with the top or bottom of the rest of the button. Oddly, the problem only manifested itself when viewing the site at certain zoom levels (non-quantized, to be specific). Pinching in/out or zooming into specific parts of the page made the buttons render correctly.

We’d used a similar technique on Domainr, so were curious to see if there was a way to address it cleanly.

It appeared that WebKit for iPhone uses mipmaps to render minimized background images. This makes sense—it has fast texturemapping hardware, and OS X / Quartz has been using OpenGL to render 2D graphics for some time.

The combination of hardware texture filtering of mipmapped background images with (then) imprecise texture coordinates were causing the artifacts we’d been seeing (recent related changes in WebKit).

Domainr’s buttons are styled using a sliding-door technique with a single CSS sprite background image. By this time we were starting to test against Safari 4.0 and Firefox 3.5, which also demonstrated similar visual errors when using their full-page zoom features.

The solution ended up being simple:

Vertically align the left and right background images for the button in the sprite.

It’s a palliative fix, but works. We were able to keep the single sprite image, and not introduce iPhone-specific CSS or hack WebKit. In the end, there were other benefits to the fix. Despite redundant image data, aligning the background slices eased the process of updating the sprite image for new button variations.

Domainr

Last night we launched our first product, Domainr.

Domainr is a search tool to help you find the perfect domain name, in any TLD. It’s an alpha release—so the usual disclaimers apply. We’re working hard on refining the results, improving the data and making sure the user experience is good.

I’m looking forward to what happens next!

Domainr

nb.io

I guess in some ways it was inevitable. A lot of people expected it, and more than a couple asked “what’s taking so long.” So a couple weeks ago, I started nb.io with Eric Case and Cameron Walters. The plan is to make it onto the awesome list. We’re bootstrapping and working on some projects that we want to use.

Tomorrow we’re heading to Mendocino to hack on our first product, away from our usual daily distractions. The plan is to do this regularly—go somewhere with a good kitchen, internets and preferably with a decent dose of outdoors. If you have a house somewhere awesome that you don’t mind sharing for our company hack-trips, email me. We’re currently officing in my house—so trading is definitely possible.

We’re eating our own dogfood—methodically iterating based on the needs of our products’ audiences. In less-buzzword-laden English, this means making stuff that our users want, and really trying hard to not waste time on stuff they don’t. Or as our friend Hans put it, aligning our interests with that of our customers.

But enough about products & companies &c. Time for the Black Kids show!

Notableness

This was originally in response to an email from Eric about the noise and relative value of Flickr photos in his friends’ photo streams.

I like the concept of notableness. Certain criteria of the datum fall outside the bell curve, warranting more attention.

We dealt with this issue on Vox—a linear stream of equally weighted items. In reality, items are not equal. Not only that, but different items are more notable to different viewers.

This morning I unfollowed someone on Twitter because she spammed the front page with several tweets per hour. This is akin to the nuclear option, something software should solve, really. Typically, her tweets are low value to me, but in aggregate they are interesting. Or if she has one that’s well-replied to or starred, it is isomorphically more significant.

Lastly, an algorithmically condensed event stream isn’t something that nicely fits into an RSS feed. Or maybe. This is where the rubber meets the road. Capturing—and therefore limiting—a set of events into an aggregate event, then freezing it in time as a discrete RSS entry might be a reasonable compromise between theory and reality of implementation.

Sarah Palin is, oh nevermind

Sarah Palin likes being drilled in the Arctic National Wildlife Refuge

Someone had to do it. 2 hours concept-to-ship, hooray!

CCCCONTRA

There are times when I wish you could favorite something multiple times. Legos! NES! Contra! Rrrreverting to childhood momentarily.

Lego Contra

(via FFFFOUND!)

Feature Creep at the Gate

Re-blogging Eric’s post from our internal blog:

Here are my notes from reading 37signals book, Getting Real—it's an outstanding read. Money quote:

"Each time you say yes to a feature, you’re adopting a child. You have to take your baby through a whole chain of events (e.g. design, implementation, testing, etc.). And once that feature’s out there, you’re stuck with it. It’s like ‘Fight Club.’ You should only consider features if they’re willing to stand on the porch for three days waiting to be let in."

This should be tattooed on the back of the eyelids of any PM or founder.

It’s kind of like Schrödinger’s Cat

Quinine Dosing

Apparently, the editors of Wikipedia do have a sense of humor.

The main problem with the rectal route is that the dose can be expelled before it is completely absorbed, but this can be rectified by giving a half dose again.