Friday, December 30

My One-Man Accidental Google Bomb

Not sure if you’ve seen it, but if you click “More contact info” on this blog’s index page, you’ll get a list of ways to reach me, one of which is my mobile phone number. For added contacting convenience, I made the number link to Cingular’s SMS form, with a little query parameter (“min”) so that the number is filled in in the “To” field. Makes it very easy to SMS me from the Internet, if you’re so inclined.

I’ve been getting a lot of odd SMSs recently, though:
hello naeem wah go on man what you up to man
i kinda want those bbq gluten things from that vegan place in the les, or maybe wings from red bamboo... or possibly mexican.
baby ruth??
Romeo can you get out at 1:00 p.m. today? We need to go to Emily’s appt. I’ve been calling you! Hit me back, LUV YOU!!!
How can I see my account online as well as to make payments online.
hmmm... i thought so much more highly of you than this. just how long has this been going on anyway?

Yeah.

Anyhoo, Google — as always — has the answers. Take a look at the top search result for Cingular SMS. You may recognize that URL as the same one from my blog, including the bit that puts my number as the default. Seems folks are getting there and forgetting to replace my number with who they really want. (As expected, typing “Cingular SMS” in the address bar in Firefox gives you the same page.)

So now I have to make the moral (and economic) decision about whether to leave things as-is, enjoying the random SMSs and hoping they don’t blast my plan, stick a rel=“nofollow” on the link to keep the crawlers from finding it, and/or be a good netizen (and employee) and drop a note to the search quality folks when I get back from vacation.

Bonus fun thing: Looks like my number is #10 on a straight-up search for “Cingular.” That ain’t right.

Bonus disclaimer: This is at the bottom of pages, but it’s probably good for me to note that, while I work for Google, I don’t speak for them, and God knows they wouldn’t let me anywhere near the search results. I work on Blogger. Did you know that Blogger loves all the children of the world?

Friday, December 16

Ostracized Finder

Looks like the Finder got kicked out of my Dock. Either that, or he got scared off by the SSH Agent. At any rate, I don’t have much to blog about these days. :)

Wednesday, December 14

Extra Delicious Grog

I was talking with Case yesterday about how we’ve been pretty steady del.icio.us users even when we haven’t been blogging so often. It’s nice to be able to just drop a link and a bit of text without worrying about the clever prose and subversive hyperlinks required of a blog post.

So, I just finished del.icio.usifying the blog. First up, I have FeedBurner burning in my new links every day with their Link Splicer service. Then, for those of you who actually visit this fair website, I have a little JavaScript magic to insert the 5 most recent links right below the latest post.

The list of links is made possible with del.icio.us’s JSON interface to my bookmarks. JSON is a convention for data literals that is used here to get around the cross-domain restrictions of XMLHttpRequest. Instead, the template contains a script tag that points at a dynamically generated JavaScript file on the del.icio.us servers that, when loaded, populates the global Delicious variable with the data from my last n links. Since, in practice, browsers load external JavaScript sequentially, the data from del.icio.us will be in place by the time an inline script expects it and builds the definition list out of it.

I have to credit the JSON example from del.icio.us for the very clever idea of loading favicons into the list. I adapted the rest of the code, using the DOM helpers from (the most excellent) MochiKit. I was a bit disappointed that MochiKit doesn’t include a fold alongside their map, hence the hack to return a span to get a space between the tags.

Monday, December 12

Pirate Nutcracker


Pirate Nutcracker
Originally uploaded by OldMainstream.
Pirate + Nutcracker = best tree ever. And yes, we do have Dumbledore at the top. Because the DA is ready to fight in the war on Christmas.

Nice Leather Books at Barnes and Noble

Cait and I were at Barnes and Noble today and noticed that they expanded their leather-bound reprints of public domain books to include the complete works of Lewis Carroll. They also have a nifty leather-bound edition of The Hitchhiker’s Guide to the Galaxy.

I have to say I’m a bit of a sucker for Barnes and Noble’s “really nice looking versions of books we don’t have to pay for” publishing strategy. They do look quite nice lined up next to each other.

Sunday, December 4

Grogmaster Redesign

I just finished putting up a redesign of the blog. Well, it’s more like a design, as up to now I was using a stock Blogger template. I decided to change things up to exercise my design skills and see how I could integrate some data stored on other websites into the blog.

I tried a little bit of Powazek’s idea of putting a lot of content at the bottom of the page (something I’ve written about here and on Buzz), stashing the recent posts and content from various other websites (del.icio.us, Flickr, and Last.fm) down there. Hopefully you’ll have somewhere fun to go when you’re done reading a post. Last.fm is working on adding custom styles for its chart images, so once that’s available I’ll probably tweak those things a bit more.

There are also some elements of Nielsen’s usability guidelines for blogs. In particular, I’ve updated my bio a bit and I’m also planning on including links to useful/popular posts I’ve made (as soon as I make some). Though, looking at the logs, my post about the Hamster Dance song is far and away the most read; certainly not a highlight, even though it gets tons of search engine traffic.

The icons are all from playing in the Mac OS X Character Palette. I’ve recently taken to adding the skull-and-crossbones to the end of my name in work e-mail (because of Gmail’s Unicode support it’s become a bit of a fad at Google to put fun characters in your display name), and I wanted to incorporate that design into the site. The rest just sort of followed from that. I liked the finger especially, as it reminds me of the way P.T. Bridgeport would speak in old Pogo comics:


I have a few changes here and there to clean up, in particular the way images show up in posts. I liked the old template’s image borders, and I’ll probably add back something similar. Also, I haven’t tested it in IE yet. Meh to that browser.

Thursday, December 1

Today’s Fun IE6 Float Bug

I’m working on a bit of CSS where I’d like a div to take up only as much space as its contents require. Normally, this is trivial to do with the float property.

Unfortunately, in IE the div was still trying to take up 100% of the available space.

The problem was that the div had a few child divs with their height property set. This erroneously caused those divs to expand their width, which expanded the parent as well.

My solution was to switch from height to font-size and line-height to get the height I wanted in the child elements. To adapt this for Firefox I needed to put a single non-breaking space in each child div.

A Folksonomic Question

I was thinking more about my grumbling that someone tagged R.E.M. as “canadian” on Last.fm when a thought struck me:

Should I tag Dropkick Murphys as “irish”?

After all, they play Irish music (albeit in a punk style), so it seems like an accurate tag. But they’re not from Ireland. They’re from Boston.

Perhaps R.E.M. is just playing Canadian style music, and therefore it’s okay that they’re from Georgia? That seems wrong, but only because “canadian” isn’t really the name of a genre.

So is there a workable, consistent standard to go by here? Maybe tagging bands by the name of their country. So the Clancy Brothers get both “Ireland” and “irish,” while Dropkick gets “irish” (and maybe “Boston”), and I can get righteously pissed if someone tags R.E.M. with “Canada.”

Or is it just the nature of the game to deal with other people’s flawed tagging?

Tuesday, November 29

Last.fm at Work

I’m experimenting with streaming Last.fm to my lappy at work. Using the Last.fm Player I can listen to radio stations based on artists (plays that artist and similar artists) or on tags that users have given to music. Right now I’m enjoying listening to music tagged “canadian.” Unfortunately, my profile cluster is down, so I can’t make my own tags.

The artist radio stations can be good for discovering, but for really unique bands the other songs that get played can’t quite be called “similar.” Take The New Pornographers and Great Big Sea. I like many of the bands that come up, but it seems to be missing the alterna-pop catchy jangle of the former and the rocked-up traditional songs of the latter.

I’m considering going the paid route so that I can listen to music based on my own and other people’s profiles and tags. Seems to me a great way to find stuff is to take a cool friend and listen to his profile radio.

Update: Sorry, kids. R.E.M. is from Georgia. Don’t tag them as “canadian.” Lousy folksonomy.

Huzzah to Bowman’s Template

I’m using a stock Blogger template designed by Doug Bowman, and I was plesantly surprised when, upon dropping in a del.icio.us linkroll, I found it delightfully and perfectly styled to fit in with the rest of the template. Look for it in the sidebar.

This is of course made possible with the magic of CSS and the correct semantic use of the <ul> tag. If I wanted to go crazier, they include a bunch of CSS classes for further styling possibilities.

So enjoy my del.icio.us links, and feel free to for:phopkins stuff to me!

“My Doorbell” Video

I was very excited when I found out that “My Doorbell” was the second single from The White Stripes’ Get Behind Me Satan. My Doorbell I don’t listen to the radio or anything, but it means I can watch the wacky turn-of-the-century video and Jack White’s creepy facial hair. I wish I could get a copy of this for my iPod.

“My Doorbell” is so good and catchy, I don’t feel too bad there’s no guitar on it. That’s been a big adjustment with Get Behind Me Satan; much less of the signature feedback that made the earlier Stripes stuff so mind-blowingly good.

Monday, November 28

Get Your Shanties!

The good pirate Boxfoot (née Benj the Stout-Livered) has done what this pirate never got his shit in gear to do: put all the lyrics up on the ARRR!!! songs page. Go learn to sing sea songs!

The Swine Before PERL

My advisor, Shriram Krishnamurthi, has a fun talk about PLT Scheme called The Swine Before PERL. Listen to the MP3 and follow along in the slides, and learn why I stayed another year at Brown to keep working with him.

(I’m also trying to get Shriram to start a blog…)

The Humor 2.0 Bubble

A fun read for lampooning the current trends is Supr.c.ilio.us: The Blog. Also iClock.

It’s Monday

I just got the rock prescription for my recent illness:
It’s Monday, I’m all high. Get me out of FLA. I fooled ya, in school, yeah, now I know I made a mistake.
Monday

Rock me, Tweedydeus. I now feel awesome, even if I’m still out of breath walking two flights to my desk.

Also, I’m getting back to scrobbling at Last.FM. Case is an inspirational gentleman. Slight delay, because I listen to stuff at work on my iPod, and I have to wait until I’m home to sync.

Firefox 1.5 Coming This Week!

Ars Technica says “Firefox 1.5 to launch this week with marketing blitz.” [via Memeorandum] Very exciting! I’ve been using the latest Camino a lot recently, which features the new, speedier rendering from FF 1.5.

This means that Blogger is going to start officially supporting and testing against Firefox 1.5, and also that I should get on fixing the nasty little cosmetic glitch on the Blogger homepage. I haven’t looked too hard, but it seems Firefox 1.5 is doing a redraw when the DOM — from my perspective — is in an inconsistent state, which it didn’t do before.

Everything else seems to be working fine, though, which isn’t a huge surprise but still a giant relief. And, though this might just be Camino’s interface to Midas, I’ve noticed that the link button in the toolbar is not causing me to drag the icon into my posts anymore.

Wednesday, November 23

Mario Kart DS Friend Code

The game rocks. Not sure how many friends I have to play against (and online play is remarkably asocial), but here goes. My friend code is:

1 5 8 9 7 3
4 9 4 6 0 5

I’m Finnegan, with the penguin badge. Post yours in the comments if you even sorta know me.

Tuesday, November 22

How to Remember CSS Margins

I confessed to CDub that, while I'm quite handy with the 2- and 4-argument margin properties, I always get confused by the 3-argument one. Here's his helpful mnemonic:
The 4-argument CSS syntax of T(op), R(ight), B(ottom), L(eft) which I remember as Truman, Roosevelt, (Benjamin) Harrison, and Lincoln collapses in a 3-arg syntax to just T, R/L, B as you mentioned. The key for me is to use reverse chronological order of US presidents with memorable nicknames like "Four-eyes", "Teddy", "Kid Gloves", and "Honest Abe," respectively and that only Rushmore-worthy presidents are allowed to collapse together.

Saturday, November 12

Videos for iPod

I picked up a video-playing iPod today, so I thought I’d share two short films formatted for the iPod:
Luau Beetle

This was the final project for a computer animation class I took last fall, telling the tale of a small beetle who wanders into a toy factory to get out of the rain. I was the animator, and also cut the soundtrack.

Gilliwind Islandsong

An impromptu performace by two of ARRR!!!’s crewmembers leads to an even more impromptu performance. Filmed on location at the Bristol Yacht Club last spring.

Friday, November 11

Dances With Browsers

Hallvord Steen, a site compatibility expert for the Opera browser, uses an ice skating metaphor to describe the relationship between sites and browsers, with the example of Blogger’s recent, shall we say, “miscommunication” with Opera that caused all post bodies from that browser to be dropped. (By this I mean, it was their bug, but our wacky code that exposed it. And props to Hallvord for proposing the workaround.)

I feel that the elegance inherent in that metaphor is quite out of place, however. The apter analogy is to building a glass skyscraper on a foundation of monkeys who hate each other. And I’m confident that website developers and browser makers have different opinions of which is the skyscraper and which are the monkeys.

This is Only a Test


This is a test of the “Cannot connect to Blogger” system. This tests the warning that will appear when Blogger.com is unreachable due to a lack of network access or a provider’s interstitial. Connectivity tests occur every 60 seconds. Hoom.

Thursday, November 10

Camino 1.0 Beta


Trying out the new beta of Camino, which is a Mac-only Mozilla browser. The new beta version, 1.0, uses the Firefox 1.5 version of the Gecko rendering engine.

Besides the animation glitch on the Blogger homepage common to Firefox 1.5, everything seems fine. I believe this is the first version with Midas support, so you get the WYSIWYG posting page. I’m using it right now. Woooo hoooo!!!!

They’ve posted a full list of changes.

Tuesday, November 8

Less Than Two Weeks Until MarioKart DS

Can’t wait to play MarioKart DS online. (I’m coming for you, Cutlass.) I was afraid that, since I couldn’t use the Nintendo Wi-Fi USB Connector on Mac OS X (it’s Windows-only), I’d have to hoof it to McDonald’s, but that won’t be necessary: the DS works with tons of wireless routers, including my Airports.

More info at http://www.nintendowifi.com/.

Also, a hands-on report from GameSpot that’s pretty positive. Right now you don’t get penalized for ditching the game, though, which may encourage some poor sportsmanship. Hopefully Nintendo is committed to iterating their online service to work out that sort of kink.

One more thing: you can badge your racer with a little icon. Blogger “B,” anyone?

Interview with the producer, Hideki Konno, at Game|Life. Interesting to note that online play isn’t as big a draw in Japan as in the states. Also, that you can’t drag an item behind you in online play was a technical decision, not a gameplay one. [via Joystiq]

Meh to Wrong Program Listings

The TiVo is significantly less useful when the program guide is wrong. This is, of course, not their fault, but the fault of the mom-and-pop company that supplies cable to my apartment complex.

My one consolation is that, even though USA and NBC are swapped, all I really want them for is Law and Order. I’ve had pretty good luck with it trying to record NBC’s Law and Order and, though failing that, grabbing an episode from USA.

Monday, November 7

Pirate Fonts

Free pirately fonts: Arrr Matey and Keelhauled.

[via the Urban Matador]

Site Feed Now Works

Thanks to Mihai for pointing this out. If you’re looking for the Atom feed of this blog, it’s now available at http://blog.grogmaster.com/atom.xml.

Moving a site from Blog*Spot to FTP publishing could be a bit easier… Damn me and my desire for a domain!

(Also had to fix the weekly archive publishing path. Wish it all defaulted to the index page settings.)

Sunday, November 6

Fixing “Bluetooth: Not Available”

Recently my built-in Bluetooth stopped working on my PowerBook. This may have corresponded to a bizarre request for a “System” keychain password on startup that I was unable to answer and haven’t seen since.

Anyway, the fix that worked for me:
  1. Delete ~/Library/Preferences/com.apple.Bluetooth.plist
  2. Unplug USB devices (though I didn’t have any at the time)
  3. Shut down
  4. Wait a tick
  5. Start up

Little Mikey World Tour

An amazing series of photos, found via Google Images: Little Mikey in Italy. “Oh, he’s a happy bear…”

TiVo Widget


For all ye with Mac OS X Tiger and a networked TiVo: NowPlaying, the TiVo Dashboard widget. Shows you what’s recorded on the TiVo.

It’s a bit big, but looks very spiffy and works quite well.

(And yes, my TiVo is called Little Mikey. All of my Internet things are named after stuff from Monsters, Inc. For example, my AirTunes is “Scream Extractor.”)

Andy Milonakis

Brilliant show, and also an entertaining weblog. Dig the cyan-on-pattern template, too. SEASON PASSed!

Friday, November 4

Dashboard Editor

Cult of Mac reports on a WYSIWYG editor for Dashboard widgets that may come from Apple. I hope so! There’s a lot that can be improved over making widgets now.

  • Live HTML editing is awesome, especially given the CSS tricks you have to pull off for Dashboard. I like Firefox, but I use it for development because of the Web Developer Toolbar that lets me edit CSS in real-time.
  • I want tutorials on how to make glassy and plasticy effects in Photoshop. It’s hard! And ugly widgets are no fun.
  • Anything to get rid of the save-double-click-remember-to-press-command-and-option-when-you-click-the-button-now-open-the-Console-to-see-where-the-errors-where development cycle for Dashboard now. Seriously. You can test much of the layout in Safari, but what about debugging window.widget calls?
  • Get rid of the stupid boilerplate we need to make the “rollie” i in the corner of widgets. Asking widget developers to just copy in 100+ lines of code into their JavaScript is sloppy. Especially because the animation code is annoyingly non-general.


My widget coming soon! I hope!

Frothy Tobacco Drinks

Amanda from Pandagon links to NicoShot a nicotine-enhanced beer.

Reminds me of Andrew Welch (el Presidente of Ambrosia Software) and his attempt at a tobaccoccino. It did not go well.

MarsEdit Gets a Developer

Sweet! Brent Simmons announced that Gus Mueller of Flying Meat (maker of VoodooPad, a nifty desktop wiki) will work on MarsEdit as a contractor.

I used MarsEdit a ton before I switched to the ill-fated image-heavy posting on my last blog. It’s good stuff. We do a ton to make editing on Blogger.com easy and reliable, but it’s hard to beat a desktop client for doing text editing.

I might even go back to MarsEdit, except that I have my own secret way of posting to my blog from my Mac.

screen is the Best Thing Ever

I love GNU screen. It’s a great feeling to be able to start work on my desktop, then maybe go to the couch and do some more, or even work from home for a day and pick up exactly where I left off.

It’s been especially good this past week when I was build engineer for Blogger. I could be assured that even if I closed my laptop, or lost connectivity, or was forced to restart by a system update, a build or push would continue and I could re-connect with the associated shell whenever I wanted to.

Get started: GNU Screen by Jonathan McPherson

More tips: MacOSXHints article

My advice:
  1. Automatically start screen in your bashrc. Otherwise, the term you want to connect to will always be the one you forgot to start screen in.
  2. Give your screen sessions names. I have a key shortcut in my window manager that pops up a box for me to type a name in, and it will open a terminal with that screen session in it (creating it if necessary). It’s much easier to connect to “CodeReview” than “16092.pts-4.lukey.”
  3. Likewise, I have a script on my laptop that takes a session name on the command line and sshs and brings up that screen instance in one step.

Pills for Procrastination?

I had to read Joe Clark’s rant a few times before I could come up with the right response.

Procrastination doesn’t seem to me to be on the same scale as mental disorders. I think of it as more of a bad habit.

While I don’t much go in for whizzy systems, I do appreciate GTD for its two principals:
  1. Write down everything you want to get accomplished
  2. Only focus on the next thing you need to do in the steps to getting something accomplished

By being disciplined about managing my commitments, I can lower the barrier to productivity. Reading blogs is a hell of a lot easier than learning to drive, but if I'm faced with the choice between pressing J and finding the number of a local driving school, I’m more likely to do the right thing, productivity-wise.

Getting Things Done helps me think in the right terms to overcome my natural procrastination.

Getting Getting Things Done Done

Merlin revisits Kinkless GTD, a GTD system build on OmniOutliner Pro. (Kinkless GTD)

It’s something I’m curious about, but I’m not sure I’d ever use it. I often feel that when I’m at home I shy away from my laptop.

This weekend I’m busting out the Visor and I’m going to try doing things up David Allen–style.

Windows Vista Requiring Well-Formed Feeds

Oh, thank God. Yes, this is blatant disregard of Postell’s Law, but one of the beauties of XML is that you can assume away parsing. Once a big player gets permissive, feeds get sloppy, everyone has to special case their parsing, and you get HTML.

Plus, the only people who have to get it right are the blogging tools. And Zeldman. And we’re all of us smart people.

(Another great tool that assumes away parsing: LISP. And that enables macros, which are useful.)

[via Niall Kennedy]

More reading: Dave Winer has a good essay on the subject, even if it hints at a Brent-Simmons-wants-to-make-feed-reading-hard conspiracy to dominate the market.

We Fixed the Back Button!

There are certainly more interesting things in the latest build of Blogger, but one subtle one that I’m happy about is that we fixed back button behavior on the posting page.

So now, if a publish goes awry, or for some other reason you clicked off the posting page, you can hit “back” and everything should be the way you left it.

Interestingly, the fix was different for IE and Firefox. The problem with IE was that we were setting no cache headers on the posting page, so IE would do a reload when you went back to it, restoring the form to its server-pristine state.

Firefox wouldn’t reload, but our JavaScript page creation was confusing its saved form state, so it wouldn’t restore the text right. Now we have even more JavaScript that pushes the contents of textareas around to placate Firefox’s caching.

I can’t find a reference after a few minutes searching, so I’ll describe the issue: Blogger generates the edit post page with a textarea that is either empty (for a new post) or has the saved post (for editing an old post). The rich text editor boxes (EditHtml and Compose) are created dynamically with JavaScript, using the contents of the textarea for their initial value. Since Firefox bases its form state caching on the order of elements at page-load time, the rich editor boxes haven’t been created yet when Firefox is restoring values, and therefore cannot have their state restored. Instead, they load as normal and base their contents on that textarea, but, since you never edited that textarea, it still has the value it originally got from the server.

Our new strategy is to copy the contents from the rich editor boxes back into the textarea as you navigate away from the edit post page. That way, the textarea gets restored correctly when the page loads, and the rich editor boxes are built using the cached post instead of what originally came from the server.

Not sure how Firefox 1.5 will deal with this, given its new caching.

Update: Back button doesn’t work in Safari, which caches the state of the page, and it inadvertently broke posting for Opera. Sorry guys! Fix is on the way.

Update 2: As of 11/11, Opera should be working again, as well as the back button in Safari.

Friday, October 21

Lorem Ipsum

Mockups that contain gibberish aren’t useful because they’re not representative. Mockups that contain actual text get critiqued on their content.

Lorem ipsum text resolves this by being real-looking, but completely nonsensical Latin.

The online Lorem Ipsum generator is a great resource, both for making the text and learning the history of lorem ipsum.

New on the block is Cicero, a Dashboard widget that copies lorem ipsum text to the clipboard in one click.

Tuesday, October 18

Mini-Reaction to the iTunes Video Store

Cait and I watched the two-part pilot to Lost last night, as purchased on the iTunes Music/Video Store. I was initially quite skeptical because of the resolution: 320x240 is pretty low, especially to watch on a laptop.

Actually, when played at full screen, the shows looked pretty good. While Apple is using a pretty low resolution, their encoding (presumably H.264) is top-notch, with no noticeable artifacts other than slight blockiness because of upsampling (which was quite reasonable).

While I’ll probably pick up the DVDs to the first season of Lost to watch the rest, there’s a good chance I’ll go back to iTunes if I want to catch up on this season.

Monday, October 10

Hamster Dance Song


I learned this weekend that the song from the original Hamster Dance was taken from Disney’s Robin Hood. Anyone else remember the brilliant Hamster Dance Superbowl ad? I think it was for E*Trade, but I can’t find any reference on the web.

Tuesday, October 4

Thursday, September 29

AJAX Error Arrow

I hope to have the opportunity to see if I can make some long, ugly forms (Blogger Settings pages, anyone?) verify and submit with XMLHttpRequest. Some thoughts:
  • onblur validation would be really neat. It could even call back to the server to check on constraints beyond mere formatting (for example, “is this BlogSpot URL taken?”), or even do everything server-side to prevent the duplication of effort intrinsic in JavaScript validation. When the user pauses, go back to the server and check and, if there’s a problem, the little error triangle could pop up to indicate and explain what’s wrong.
  • In the case of an error after the user clicks “Save,” have a nice looking arrow pointing towards the error explanation, possibly as a prelude to auto-scrolling. It could fade in quickly and serve as an indication that we’re about to scroll the browser window to the location of the problem.

Sub-page Caching Granularity

The <bigwig> project has a neat component that allows them to cache page fragments automatically on the client. The whole strategy is explained in
Language-Based Caching of Dynamically Generated HTML.

It boils down to translating pieces of the templates (templates are written in a domain-specific language) into individual JavaScript files. These files represent static structure (albeit with “gaps,” places where dynamic content will be inserted) and can be safely cached by the browser without worrying about stale content.

Each page of the web application is simply a “string pool,” a list of the bits of dynamic content, and instructions on how to combine template pieces into the final page. All assembly is done client-side with JavaScript.

I think this is a pretty cool idea. It’s also probably a bit of overkill, given the problem. It also has some nasty consequences: no searchability, no view source, and a requirement on JavaScript.

Thursday, September 22

Tuesdays with vim, part 2 (on Thursday)

I’ve been using vimdiff for my code reviews, since it, unlike tkdiff can be run without worrying what my DISPLAY variable is set as. (Important for working with screen over ssh. Though there are workarounds.)

vimdiff automatically folds lines that have no changes in them. This is very convenient. The command to unfold and show the text is,
zo
which stands for “fold open” (if you believe that “z” stands for “fold”). To re-do the fold, and hide the unaffected lines, use “fold close:”
zc
These are typed from command mode and are not ex commands (so no :).

Thursday, September 8

iTunes 5.0 Interface

Many opinions about the new look for iTunes 5.0. Michael Tsai has collected the reactions from the Mac blog regulars.

I really like the lack of window borders, which fits in with what Aqua’s done from the very beginning. The different corner radius is pretty stupid. I don’t dislike it, I just don’t know why they bothered.

My gripe is that the toolbar is hideous looking. The individual pieces are, if not lickable, at least unabrasive. But the combination is pretty terrible. It’s missing an aesthetic sense of balance. The volume slider looks pathetic — fragile, even — and pixelated. The search box looks as if the middle pane just let one and it’s trying to casually slide away to avoid the smell. Meanwhile, it’s overly pale and dull compared to the polished sheen of the other elements. And there seems to be an overall lack of consistency in shadow and depth that I can’t quite put my finger on.

Ah, well. They can’t all be beauties.

Safari 2.0.1 Has No Release Notes

Safari 2.0.1 came out a week or so ago, and I just got around to upgrading my work PowerBook. Given that Safari is one of our supported browsers, I wanted to know what was new and fixed and adjust my testing and development accordingly.

But, the only word is that it “improves website compatibility, application stability and support for 3rd party web applications.” No other release notes or anything. Every Mac website on the planet is parroting Apple’s description, and no one seems to know what’s changed. Other than that this build, unlike development versions from April, doesn’t pass Acid 2.

Not even a peep from the Safari blog. (Though it is more concerned with the open source development of the WebKit framework than specific releases from Apple.)

Update: Apparently there has been a lot of grumbling about this issue, and the fine WebKit blog folks posted release notes for Safari 2.0.1. (But with the caution that they may not in the future.) Looks like Blogger isn’t impacted one way or another.

I Want to Meet Andy Hertzfeld

According to the Wikipedia article on Andy Hertzfeld (so consider the source) that John Gruber’s Linked List pointed to, not only did Andy Hertzfeld (previous accomplishments: the Macintosh) graduate from Brown CS, he just got hired by Google! So he might be hanging around, if only I knew what he looked like (or if he’s even in Mountain View).

Wednesday, September 7

Bonus Wednesday with Vim

These are far too useful not to memorize and internalize:

I

Like i, enters insertion mode, but it moves the cursor to the first non-space character on the line.

A

Similar to a, but the cursor ends up after the last character on the line.

(I learned these with the help of the O'Reilly book on the subject, which just arrived from Amazon. It's been a very good read so far.)

Tuesday, September 6

IE5.5, Relative Position, and Letter Spacing

I like my job. But sometimes I have to deal with some seriously fucked up browser behavior. For example, did you know that if you have nested block level elements in IE5.5/Win, and the inner one is relatively positioned and has letter spacing set, that the first letter in that element won't show up? I mean, fucking shit. What the hell, you know?

My chosen workaround was adding padding to the top of the outer element. I guess I'm lucky that this is one of the bugs with a workaround.

Tuesdays with Vim, part 1

I'm trying to learn vim, the vi-variant text editor. To help out, every Tuesday I'm going to post a little shortcut or command that I'm trying to internalize. Today's command:

nG

Jumps to line n of the file.

Derek Powazek Just Blew My Mind

I was happily reading Powazek's new article about his redesign, nodding and blinking as he described how, despite his respect for 37 signals' clean, "black and white Helvetica" look, he wanted his personal site to have a "dirty" design. And I was intruiged as he began to dismantle the myth that the bottom of the page, as "below-the-fold" space, was the least-important, least-seen part of the site. After all, Powazek argues, if a visitor has scrolled and has gotten that far, they have earned a "special treat."

In 1996, Jacob Nielsen said "users don't scroll." Returning to the subject in 1997, he said they've since learned. As web designers, we should always be prepared to recognize when we can take advantage of users' growing familiarity with the conventions of the medium, and not get stuck designing for out-dated expectations.

So I scrolled down.

And what I found there was amazing. Powazek just killed the sidebar, and it looks stunning.

I think this design has three things going for it:
  • The main content can stand pretty much alone, or be framed by something appropriate. At any rate, it receives the pure initial focus of the visitor's attention. You have the horizontal room to use a bigger font, or just do something plesant in the margins.
  • Things are crammed in sidebars. Putting them down below gives them room to breathe, too. If you have a bit of navigation or mini-content that needs to be wide, it can be wide.
  • The navigation is suddenly right where I want it. I've read the post, and now all I need to explore Powazek's blog further is there, begging to be poked at.