Wednesday, December 20

Miis of John Hodgman and Jonathan Coulton

After writing my last post, about John Hodgman’s The Areas of My Expertise available for free on iTunes, and listening to said audiobook, I got into the spirit and now offer John Hodgman and Jonathan Coulton in Mii form.

Shown in mobile phone pics of a CRT television, a.k.a. Krappy-o-rama-vision. Send me your Wii code to get ’em in your Mii Parade. Find my code at the end of my previous Mii-related post.

I suppose the next step is to get some of the hobos in there, too…

Areas of My Expertise for Free!

John Hodgman writes that iTunes Store is offering the audio version of his The Areas of My Expertise book for totally frees. There’s a direct link on his post. Download, listen, laugh.

To allay the fears of my Twittery friend Chris Sacca, the tables come across quite well. The first is presented in a conversation between Hodgman and Jonathan Coulton, which evokes the hilarious intros they did in the Little Gray Book Lectures podcast. Yes! That’s right! More free Hodgman-related audio hilarity! Get it on th’ Odeo.

Update: Also, I love Coulton’s theme song for the book.

Friday, December 8

On the new Blogger, yo

Tonight is early Christmas for Blogger team members who can finally switch, now that team blogs can move to the new version of Blogger.

So, frist p0st and all. Back to Scrubs.

Wednesday, November 22

Miis on Parade

People and characters besides ourselves Cait and I have made Mii versions of:
  • Frodo Baggins
  • Boo
  • Barbara Boxer
  • Lenny Brisco
  • Darla
  • Tobias F√ľnke
  • Rupert Giles
  • Hermione Granger
  • Peter Griffin
  • Jamie Hyneman
  • Jane Lane
  • Trent Lane
  • Joe Lieberman
  • Abe Lincoln
  • Luna Lovegood
  • Lucius Malfoy
  • Daria Morgendorffer
  • Violet Parr
  • Ms. Piggy
  • Harry Potter
  • Austin Scarlet
  • Anne Shirley
  • Ruth Simmons
  • Severus Snape
  • Willow Rosenberg
  • Kara Thrace
  • Sharon Valeri
  • Hoban Washburne
  • Ron Weasley
Cait: “This’ll be an awesome baseball team, let me tell you.”

Wii #:7969 8604 1268 2005. Leave yours in the comments or e-mail me if you know me and we can hook it up.

Thursday, October 12

Sync Odeo and iTunes with Automator

I hearts Odeo. It’s slick, gradienty, and nicely usable. It’s also available anywhere the tubes go, so I can subscribe while at work. And, of course, it’s run by awesome dudes. Check out my profile! Nevertheless, it does not match iTunes for podcast usability.

iTunes’s big advantage is that podcasts show up in separate channels on my iPod. This is key. But subscribing is only possible on the Mac that I’ve set up to be my podcatcher, which runs essentially headlessly. (iTunes over VNC: not so fun.)

In an earlier post, I talked about using Automator to print the New York Times crossword every morning. In another I described using a separate, dock-tethered Mac for podcasts while keeping my music library on a different computer.

Now I’m going to revisit both those topics with an Automator script that makes iTunes subscribe to everything I’ve subscribed to in Odeo. Now I can find stuff through the nice web interface, dozens of miles away from my Mac mini, and still have the podcasts sync and download for when I plug my iPod in in the morning. Download it here: Sync with Odeo.workflow.

One requirement this script has is that you need to make your Odeo subscriptions public in order to grab the OPML file unauthenticated. Do this in the privacy settings part of your account settings.

I cheated with OPML XML parsing and just pushed the file through sed. I use curl here instead of Automator’s Safari-backed downloading because keeping the data in stdin and stdout means I don’t have to clean up any temp files.

curl $1 | sed -n -e 's/.* xmlUrl="\([^"]*\)".*/\1/pg'

This pipes into a simple AppleScript that loops through the text items in the input and tells iTunes to subscribe to each in turn. I won’t repeat it here because the formatting is a pain.

And there it is! I run it in the middle of the night so I can be sure that everything will be downloaded by the time I sync the iPod in the morning, by saving it as an iCal plug-in and setting up a repeating event. There are just two remaining caveats:
  • Subscriptions are additive. To unsubscribe, I’d have to unsubscribe in Odeo and also iTunes. However, iTunes is good about not updating shows you stop listening to, so not bothering to unsubscribe works, too.
  • I had to unsubscribe from my Odeo inbox. If I didn’t, I’d get everything twice, both through iTunes and through Odeo. This means that I can’t use the “add to inbox” links on Odeo, which is too bad.

Monday, October 9

Checking All Those Comments Feeds

ongoing • On Comments (II): "Antone Roundy, and others, point out the problems with per-entry comment feeds; namely, that various idiotic clients will poll each and every one regularly from now until the heat-death of the universe and there’s no way to stop them; given the volume at which I post, this would be untenable."

We’re starting to get into this with Blogger. The comment feeds are all there in the new in-beta version — both per-post and per-blog — but there’s no Atom-to-Atom linking going on.

Probably the best solution is one where the feed reader would fetch the per-blog feed, which it could do regularly, and then filter to show only the comments for posts that the user is interested in.

Tim pointed to the Atom Threading Extensions, which I’m planning to investigate.

Thursday, October 5

Cultural Notes and Products

I just grabbed tickets to see The Decemberists at the Warfield. Was listening to “16 Military Wives” yesterday; I hope they play it. There’s something about the dramatic pause right before “cheer them on to their rivals” that I expect would be awesome in a packed hall. New album is on its way from Amazon.

On Tuesday I had the pleasure of joining a handful of other Googlers for lunch with noted blogger Neil Gaiman. He’s a brilliant guy and was very friendly. We chatted about Blogger features and some problems he’s having with text encoding.

I’ve started on Neil’s new collection of short stories and poems (which I am reading!). I’m liking it, and it’s been worth it for the first story alone (itself a 2004 Hugo Award Winner): quite literally a mashup of Arthur Conan Doyle and H.P. Lovecraft.

Also, I hung out a bit with Neil’s son Michael, who’s finishing up his CS degree at Brown. Rawk!

Tuesday, October 3

IDE and Language Religion. Move Along.

Tim Bray thinks you can do refactoring in a dynamic language by getting the necessary data from just running the code. “I’ll bet Tim’s IDE will also be able to tell you when you write an infinite loop!” the programming languages student said snarkily.

Cedric Beust calls him on it. I agree, though I don’t know anything about Groovy. Left out of the discussion is, as always, ML (c’mon, Cornell folks, step up!), which gives you static type guarantees as well as the “convenience” of not specifying types. (At the expense of having to debug type conflicts… always a good time.)

I guess I still have to be a Schemer at heart, and I still have to use JavaScript due to working in the tubes, but I am smitten with Java, for basically one reason: IntelliJ.

Two important features:
  • Control-click to go to a method’s definition. Nothing helps me understand the code more than following a method to its definition. And where I work, there’s a lot of code to understand. My heart actually goes out to my co-workers who try to get by with Emacs and vi, who have to scroll up to find what package a symbol comes from, then tab-complete their way through the package hierarchy to get to the file. Only to find out that that’s just an interface.
  • Renaming. This is Tim Bray’s desire. AKA “find usages.” I am sick obsessive about my names. They have to be perfect. And as I’m developing a chunk of code, sometimes a method’s purpose changes. When that happens, the name must change. Otherwise, when another engineer looks at it in 5 months, they won’t understand what the code does, and they’ll write a bug because of it.
Maybe I’m just spoiled, but I couldn’t imagine working on a project as large as — in both lines of code, dependencies, and number of engineers — as Blogger without IntelliJ without taking a significant hit in productivity, code quality, and maintainability. The IDE lets me be in control of the code in a way that I never felt before.

Perhaps that’s something you kids and your startups should think about. If your project lasts two years (or seven, though things have been rewritten a few times), in what state will your super-dynamic language code be? Will your new hire be able to figure out what’s going on without significant wading? Will methods and classes be named incorrectly because there was too much friction to set things right?

And seriously: the real magic bullet for programmer productivity? Control-space name completion. Someone tell Fred Brooks.

Sunday, October 1

Opera Mini: Where have you been all my recently?

I was discouraged when the Google Personalized Homepage (mobile version) did not render on my Razr V3’s built-in browser. (The error, for those of you finding this via search, is “413: Page Cannot Be Displayed.”)

To my rescue comes Opera Mini, which apparently has been free for a while now. It’s a Java web browser (all in a tiny 97k download) that runs circles around its built-in counterpart, rendering pages that the other would barf on. It works great with the personalized homepage, and with Google Reader’s mobile version as well.

The one problem I had getting it to work on my Cingular Razr is that it kept timing out on the GPRS connections and I’d get a 3.0.1:80 error. I think I have lousy GPRS reception in my apartment. Enough trying and sitting at different angles helped, and also possibly inputting these settings into the e-mail app’s GPRS configuration (of all places). That might just have been me thrashing, however.

Saturday, September 23

Syncing Podcasts with iPod in iTunes 7

I’ve just started taking advantage of a new (?) feature in iTunes 7: you can sync podcasts to an iPod from one iTunes library, while the rest of the iPod is synced with another.

Here are the steps: Just plug in an iPod, cancel the dialog box that lets you transfer purchases or erase and sync, and click over to the “Podcasts” tab. From there, click the checkbox to enable syncing, heed the warning about erasing the old library’s podcasts from the iPod, and then press “Apply.”

Now, you can keep syncing music and such with the old iTunes library, but get podcasts from the new iTunes library.

I use this because all my music is on my primary computer, a laptop, but for convenience in the morning my podcasts are downloaded to an always-on Mac mini (the same used in my crossword printing workflow), outfitted with an iPod dock. Now I can get fresh podcasts without searching for my laptop and a connector cable, but my iPod can still be chock full of more musicy goodness than could ever fit on the mini’s drive. (Though with the TV shows I’ve been downloading — the mini is connected to the TV — this mini-sized hard drive has become quite appealing.)

Addendum: It seems that syncing back with the old library will delete the podcasts from the new library. No big deal, if you don’t mind waiting for them to be reloaded when you next sync with the new library.

Saturday, September 9

Downloading the New York Times Crossword with Automator

Wordplay got me into doing crosswords. If Jon Stewart, Bill Clinton, and the Indigo Girls are all into something (not to mention Ken Burns) I’d be crazy not to be all up on that. I bought the yearly online subscription to the New York Times puzzle and have been doing (attempting) it pretty much every day.

I made a workflow with Apple’s Automator to download each day’s puzzle from the Times’ website and print it out. If you’re in a similar position as I (you have the subscription, Across Lite, and Mac OS X 10.4) then give it a try: Print Crossword.workflow.

The overall workflow is pretty straightforward:
  1. Start with the New York Times crossword page URL
  2. Download the page, with proper authentication
  3. Find the URL to today’s puzzle
  4. Download today’s puzzle
  5. Open today’s puzzle
  6. Print today’s puzzle
There were two tricky bits at #3 and #6, which I had to solve using shell scripting and AppleScript, respectively.

While Safari scripting does a fair amount (I was happy it took care of using my NYTimes.com cookie for the authentication), it doesn’t handle #3, which actually surprised me. The task I needed is to get the URL linked to with the words “Today’s Puzzle.” Here’s the script I used:
grep -o "<a href=\"[^\"]*\">Today's Puzzle" $1 | sed -n -e "s|<a href=\"\\([^\"]*\\)\".*|http://select.nytimes.com/premium/xword/\\1|p"
rm -rf $1
Yeah, it’s a bit of a hack but it works. (If anyone has a better line, please leave it in the comments.) The grep is there to cut down on the data going in to sed, since sed will print out the unmatched start of the line (and matching the start with a regexp is too slow).

I was impressed with how simple it was to include a shell script in the workflow, given the typing going on. But “Files/Folders” became a path, and the stdout text became “URLs” for the next step. Neat!

Getting Across Lite to print the puzzle was the second tough bit. Across Lite is a reasonable program, but, as is often the case with ported software has no AppleScript support, so I had to fall back on GUI Scripting instead of the standard “print” command. Here’s the code:

on run {input, parameters}
set xfile to item 1 of input

tell application "Finder"
open xfile
end tell

tell application "Across Lite v2.0"
activate
end tell

tell application "System Events"
tell process "Across Lite v2.0"
click menu item "Print" of menu "File" of menu bar 1
keystroke return
keystroke return
keystroke return
end tell
end tell

tell application "Across Lite v2.0"
delay 10
quit
end tell

tell application "Finder"
delete xfile
end tell

return input
end run
Not too much to say here. Three returns to get through the print choices, Page Setup, and Print dialog boxes, and a ten second delay to prevent a crash.

And there you go! I saved this as an iCal plug-in and scheduled it to go off every day at 7AM. Though, to be truthful, I could probably turn it off for Fridays and Saturdays… But now every day when I wake up I have a crossword puzzle to take with me to do on the shuttle.

Monday, September 4

Feed Reader Feature Request

I was reading through maybe the third or fourth article in my feed reader about the MySpace music shop, thinking about how I really didn’t care about this particular story, and I didn’t want to read any more about it. Then, when I saw Tim O’Reilly’s piece on Google’s image-tagging game, I thought that it was interesting, and that I’d like to hear what other people have to say about it.

So I want two new operations in my feed reader. “No More!” would mark all other blog posts on a particular subject as read. “What’s All This, Then?” would dig up blog posts about the same subject from other blogs that I haven’t subscribed to.

“No More!” would help me deal with the incoming volume of news, and maybe put a few echo dampeners in the chamber. If my feed reader quickly cut out stuff I don’t want to see any more of, reading the news each day would be that much more enjoyable, since there would be that much less to wade through.

“What’s All This, Then?” would let me easily dig deeper into cool topics right from my feed reader, and help me find new blogs I might want to subscribe to. When I’m reading, I want to stay in the same app. I don’t want to go trawling through search engines to get more info, when everything I want is probably in the reader’s backend.

These two features come down to looking at one role of a feed reader as a — to coin a phase — canal of topics rather than a firehose of posts. My desire is to #1: hear the latest and #2: hear particular people’s take on such. If I don’t care about the story, then I don’t care what even the most insightful luminaries have to say on it. But if I am interested in the topic, give me anything and everything related to it.

Sunday, August 27

Authenticating to Google Accounts from the Command Line

The beta version of Blogger uses GData for its API and Google Accounts for logins, which means that it requires the GoogleLogin authorization scheme on API requests. This is more secure, but slightly tougher to work with than HTTP Basic authorization.

Sure, there are libraries (Java and C#) for handling this, but where’s the fun in that? Here’s how to do the API using just curl and sed, in a delightful one-liner:

curl -H "`curl -s -d Email=e-mail address -d Passwd=password -d source=your app name -d service=blogger https://www.google.com/accounts/ClientLogin | sed -n -e \"s/Auth=\(.*\)/Authorization: GoogleLogin auth=\1/p\"`" http://beta.blogger.com/feeds/blog id/posts/full

Note that for the e-mail address, you’ll need to replace “@” with “%40” as per URL encoding.

Goldman's Gone


Goldman Bores Biz
Originally uploaded by OldMainstream.
Not to get sappy or anything, but I love this photo of Jason Goldman. It is a rare photo of him that he's not mugging it up, and I think a lamer, more emotional me would go on about how this is the true Goldman, and it's special, and precious just like he is, and no one knows him like I do.

Really, though, I like this photo because I know that, consistently, if Goldman's talking like that, I'm laughing one or more asses off because dude is hilarious.

So it's not so much that I'll miss him now that he's left Blogger, it's more like I welcome the gentle kiss of death so that we can be united again for eternity.

Wait. I think that came out wrong.

Friday, May 5

Greasemonkey Scripts I Want

Thought I’d toss out something just to make sure I didn’t forget how to type. These are Greasemonkey scripts that would be nice to make or find already made:
  • Blogger Blog Link Emblem The deal here would be to add the Blogger icon () to any link that pointed to something at *.blogspot.com. Very useful for harvesting potential Blogs of Note. Extra props if it could do the same for blogs not hosted on Blog*Spot, but the logistics of that get tough.
  • You’re Already Subscribed To This I’m on a boardgaming kick, and as such I’m assembling boardgaming blogs in Reader. I can’t remember which blogs I’ve added, though, so I have tried to add the same ones multiple times. Often I read several posts before I realize that I read them all before. If I go to a blog I already have in Reader I’d like to see a message pop up so I don’t try to add it again. (Update: Mihai whipped it up! Sweet!)
  • Social Bookmark Niagra It would be cool to have a Greasemonkey script that added all the social bookmarking icons to every page I read, cuz sometimes people forget to put them all in. Then I have choices! Will I del.icio.us this one? Or maybe send it to Furl? ONLY THE BEST SITES GET SENT TO GETBOO.

Saturday, April 22

Plan 9 From Outer Space

Just finished consuming Ed Wood, an entertaining picture about the infamous director, when I found that his magnum opus, Plan 9 From Outer Space, is available on Google Video for free. It’s an epic story, sincerely executed. And — if you overlook the parts that are batshit insane — it’s a telling cautionary tale about the dangers of raising the dead to combat weapons of mass destruction.

Friday, April 21

Beautiful Comments Form

More fun than blogging is redesigning my blog. So I’m working on that. I’ve decided this template is not representative. Early comments are positive…

I’m mentioning this because, once again, Mr. Powazek is super-inspirational. Take a look at the comments form from his photo site, Ephemera. The little thumbnail of the photo at the top is brilliant.

I love to gaze at good designs like this (and these) and wish I had teh hotx skills.

Monday, March 20

Testing Web Pages

I feel compelled to make a quick shoutout for JWebUnit, a unit testing framework for web pages. Basically, it’s an embedded Java HTTP client that allows you to programmatically access URLs, inspect pages, manipulate forms, and click links.

This is useful because it lets you write tests against web app behavior. So, if you change, say, Blogger, you can run tests to ensure that it’s still possible to post and comment, and that the access control works, and that posts show up right, etc.

I’ve — up until now — mostly scoffed at automated web testing. This is because it really doesn’t address design concerns, and doesn’t do heavy lifting on issues like cross-browser compatibility.

But, I’ve been working a bit on the Blogger comments form, and I have to admit I’m really quite pleased to have the confidence in my changes that passing the automated tests gives. If you’re curious about why this is necessary, play around with your comments settings and access the comments page in various states of logged in and not. Given all the possible combinations, it’s really necessary to ensure that each little permutation works the way it’s supposed to.

So, I’m pretty happy, but one major flaw in JWebUnit is that it doesn’t let you change hidden form fields. While this is authentic in that well-behaved user agents don’t let users change hidden form fields, but I’d much rather have tests to make sure that if a curious or malicious user did start playing around with those, the app would behave reasonably, or at least blow up without letting anyone do anything they shouldn’t.

Thursday, February 23

Super-Mega Blogger Shiny!

I’m pumped that a widget I made just got released in the first volley of Google widgets for the Mac OS X Dashboard! You can use it to publish to your Blogger blogs. I posted a full introduction over at Blogger Buzz.

This was a lot of fun to do both programming-wise (something I posted about before) and design-wise. It gave me a chance to exercise my limited — but growing — Photoshop skills to make the window and buttons. Gradients are totally my friends now.

I like the Dashboard design philosophy of get in quickly, do something straightforward, and get out. The widget is paired down to the minimum settings (which blog, and whether to show the title field… “sorry” to those who like the link field) and minimum operations (save draft and publish). You can make things bold and italic with the obvious key commands, but there’s no toolbar. I even dumped resizing and a scrollbar for simple auto-expand (though this may be revisited).

I think this works well because the widget can leverage the full Blogger editor through the “Save as Draft” button. When you click that, the post gets saved, and a link pops up that can take you directly to editing that post in the Blogger app. So if you get part way through a post and realize you really want to add an image, you can do that easily by jumping over to Blogger.

So that’s that. I hope you find it stylish and useful. I’ll be keeping up with the Google widgets group to follow any bug reports or feature requests.

Wednesday, February 15

Becoming a New Kind of Geek

So, sometime about three weeks back I became a boardgamer. It started slowly, popping into Games of Berkeley when I was in the area, getting a Risk variant at Toys ’R’ Us, then… wham! A thread about 2 player board games on Metafilter led me to BoardGameGeek.com, and then it was all over.

“The Geek” is a comprehensive database of board games, complete with ratings, reviews, and forums as one might expect. Its coolest feature is GeekLists. Users can create lists of games, adding commentary, and others can add to the list or just comment on the individual entries. Some of my favorites: Couples Games, The Most Overproduced Games Ever, My Carcassonne Research, and All the Flavor, Half the Calories. Wicked addictive. Wanna see my profile?

As I recently wrote, there’s a game store down the street, though for true selection I go to Games of Berkeley. There are various online sites (Fun Again seems good, and sometimes necessary) but because of the shipping, it’s usually worth it to buy at a store unless you need to hit up Ebay for something out of print.

Here’s what Cait and I have been playing:
Lost Cities
Great two-player card game that’s quick-moving and has good opportunities for tempting fate, but also only requires half a brain. Good for playing during a conversation or when watching quality television programming.
Carcassonne: The City
This game is beautifully presented, with a nice wooden box, pretty art, and four colors of happy meeples. It sounds more complicated than it is (as we discovered teaching it to two different groups of people), but is well worth learning and playing. Cait’s gotten quite good at trying to steal my residential areas, which are often worth mega points. The City is a stand-alone game, but the original Carcassonne has a ton of expansions that I’m thinking of trying out to add some different flavors to the mix. (There are also other siblings: the two player Knizia designed The Castle (which The City borrows from), the prehistoric Hunters and Gatherers, and the latest (and U.S. exclusive to Fun Again), The Discovery.
San Juan
A slightly more involved game. I like that it has a fair amount going on and has the potential for multiple strategies. (“Do I build up my production to get cards, or can I get by without and build more monuments instead?”) It’s the card game cousin of the well-regarded Puerto Rico, which I haven’t played yet. Might give that a shot, too.
Risk: Godstorm
Nice re-imagining of Risk in mythologic times, based somewhat on the mechanics from Risk: 2210 A.D. Haven’t played the full version more than once, but we’ve used the board and pieces for regular Risk. Cait can kick my ass at Risk, since she’s good and I make stupid decisions. (The phrase “creamy center” has come up to describe some of my overextended, underdefended positions.)
Settlers of Catan
The original eurogame gateway game. We don’t actually own this, but play it with our friends Ian and Tiara. It’s good times, though I’m quite bad. Also, it proves the phrase that “randomness is lumpy.” Frickin’ 9 never came up! Looking for the card game version (which I think is being re-released) since it plays with two.
Kill Doctor Lucky
Haven’t actually played this yet, but it’s themed as the prequel to Clue. I.e.: people running around a mansion trying to kill someone. From the manifesto’d Cheapass Games. I’m planning on using my Pixar Monopoly pieces with this one, so it might end up being Kill Doctor Sulley.
So, wanna play a game? I’m all about it.

Tuesday, February 14

Friendly Local Game Stores


I found a friendly local game store (FLGS) from the California store list for Mayfair Games (U.S. publisher of Settlers of Catan, among other fine games). It’s called Paradox Playground and it’s just down the street. Though the boardgame selection is rather limited, it is the source of my copy of Carcassonne: The City (pictured above), for which it deserves major super mega props. There’s much more there if you’re into wargaming and minature painting and the like. And, they have a Yahoo Group.

For a really good selection, I recommend Games of Berkeley. It’s packed with great stuff, and it’s just two stores down from Jupiter. Bit of a distance from San Jose, but that just gives me an excuse to visit Dave.

Wednesday, February 8

I Love Greasemonkey and Widgets

My two favorite things to do right now are write Greasemonkey scripts and make Dashboard widgets, for the simple reason that you only need to get the JavaScript working correctly in one browser.

I’m also loving Greasemonkey for doing rapid prototyping of new UI and features. It would be neat to come up with guidelines that web applications could follow to make them more monkeyable. For example, more ids or semantic class names.

Dive Into Greasemonkey is the best resource for getting started, and Mark Pilgrim’s later article for O’Reilly explains how to work with the native object wrappers added to Greasemonkey for security. I haven’t read the Greasemonkey Hacks book, but I may toss it in to my next Amazon order.

Tuesday, February 7

Gmail Chat

Yay! Chat in Gmail is being rolled out to the peoples. I’ve been using this a lot internally, and it’s great that it’s public now. Google doesn’t have too much of an IM culture, at least in engineering, so putting chat in our e-mail windows has been a really nice way to bootstrap realtime communications. And, search over e-mail and chat logs is integrated. Very handy.

I don’t use Gmail outside of work, so I won’t get much use out of the public release. I can bet, though, that when the Google Talk–AIM bridge is done this will be huge.

Friday, February 3

Double Relative Holy Grail

I adapted a technique from the latest issue of A List Apart: the Holy Grail of three-column CSS layouts. The idea is to do a three-column layout with two fixed with columns on the outside and a variable-width column in the middle taking up the rest of the horizontal space, all without unnecessary, non-semantic markup and keeping the center column first in the markup.

I implemented it on this blog, with the tweak that I wanted my right column to be variable width, too. This is straightforward to do, by setting the center column to less than 100% of the width, and then setting the right column’s width to the remainder. Since the right column is now floating left as normal, it no longer needs its margin adjusted. Finally, the left column’s margin left is set to the same width as the center column.

Still haven’t sorted things out on IE. I have my ThinkPad home from work, so maybe this weekend I’ll get a chance to poke it into a semblance of presentability.

Tuesday, January 31

Another Grogmaster Redesign

After poking through the CSS Zen Garden and reading the accompanying book, I got super excited and inspired to do some web design. I can’t speak highly enough of The Zen of CSS Design. It’s like Creating Killer Web Sites for Web 2.0 the standards-compliant, Firefox and IE6 age. I can honestly say that I was over-inspired after reading the book and looking at some of the amazing designs (Ballade is probably my favorite) and had trouble thinking of anything other than redesigning this site.

I had a few goals for this design. Unlike the last redesign, I wanted to use color and images. I’ve been trying my hand at photography, and thought I’d try to incorporate something from that. Also, I wanted to really increase the prominence of my del.icio.us bookmarks, since that’s where the activity seems to be recently.

A trip to the Monteray Bay Aquarium netted me a handful of good photos, with some of the jellyfish being the best. And, since the nautical theme fits in with the (declared) pirateliness of this blog, I figured I’d give it a shot. I actually tried the photo of the black nettle first, but couldn’t get the color palette right. This blue jellyfish had some workable colors, and a few Photoshop filters later I had an image for the upper left.

There are a few things left that I’d like to clean up. I kind of punted on the style for the comments, and I don’t have anything at the bottoms of the pages to amuse and delight visitors. In particular, I’d like to put links to other posts, so folks who come in through search engines can easily get to some of the worthwhile stuff I’ve written. I also may sprinkle a few little icons here and there, too, but I’m kind of sick of messing with images right now.

Wednesday, January 25

Flying Cat

The more you watch, the funnier this is. Make sure you have the sound on. Btw, this is a (possibly unofficial) Nokia commerical and no cat was actually harmed. Full urban legend info from Scopes. (Thx Pandagon)

Tuesday, January 24

Spam to Make You Smile

I won't deign to link to or identify the source of this, but as spammers use more sophisticated fake blogs to (attempt to) defeat the anti-spam robots, stuff like this pops up:
How horrible would it be to be buried by an avalanche. Lost under a huge patch of fallen ice while people try to dig through looking for you. I guess you wouldn't be without drinking water at least with all that snow. It would just be a clostraphobia thing, you know what I mean? And there would be no surfing the internet or updating a blog or doing anything mindless like researching 4 rv tub shower faucet.

Performancing’s Blogging Extension

For this post, I’m trying out the new, 1.1 version of Performancing’s blogging extension for Firefox. (See the release notes.) I think there’s a lot of potential in a blogging extension, but it’s not really realized in this product.

My #1 request is to make it easier to make links to pages — that being my blogging hangup — and I can see a few missed opportunities in that regard. For example, there’s a tab that shows a history of my past 10 posts. I’d like to be able to drag these in to the posting window (or at least right-click and get a “Copy permalink”) to make a link to them. There’s del.icio.us integration, but no clear way to include a link I’ve bookmarked in a blog post. Finally, I’d love a little shelf to collect links and images that I can then put into a post.

I do like its location on the screen, though. It occupies a panel below the web page, so it’s always visible as you write a post, even as you flip through tabs and search for stuff to write about. In that way, I think it may be slightly more useful to me than, say, BlogThis!, even if it is 10x uglier.

So, while I probably won’t use it day to day (or whenever I do blog), I’m certainly keeping my eye on this tool.

Waiting to publish to see its HTML generation… Should be okay, since it appears to use Midas, which is Mozilla’s rich text editor. (At Blogger we have significant code to clean up the output of both Midas and IE’s rich text editor.)

Monday, January 23

Odd Blogging Block

I’ve just caught myself keeping a page over at Backpack with a list of things I’d like to blog about, and a few notes about each one. This begs the question: “why not just blog those things directly?”

The interface over there is not significantly harder or easier to use than Blogger’s, especially now that BlogThis! has been so improved. But there, did you see that? I can’t help making definitive links when I blog. It’s really slowing me down, and the extra effort required to make links like that, or include eye-catching little pictures like the one above, seems to be the difference between blogging and making notes about blogging.

Oh, and I’m working on a new design for this blog (one that might actually include color), so there’s both the time allocation, but also I think a feeling that I don’t want to post to an “obsolete” template. On top of that, the current design looks a little off for short posts. So I feel like I need to write longer ones.

But that’s me. What keeps you from blogging?

Thursday, January 19

Idea: “Realistic Preview” Greasemonkey Script

I was thinking of a post I’d like to write that would have some floated images, but hitting the wall that previewing such posts is kind of a pain in Blogger. The issue is that the Preview feature doesn’t give you a good enough sense of how the post will look on the blog itself. The font size, body width, leading, etc., are all off. So I wouldn’t be able to tell if the images were too big, or needed borders or padding, or any number of stylistic things.

It would probably be pretty trivial to hack up a Greasemonkey script that would add me-specified styles to the Blogger posting page that could show the Preview in something more approaching my blog’s style.

Though I’m realizing now that Camino, my browser-of-choice du jour, lacks Greasemonkey support. Maybe a bookmarklet could do the trick?

(By the way, my favorite source for seeing people push Blogger’s envelope is Freshblog. Go Blogger hax0rs go!)

There are so many possibilities for merging posting and blog pages that I’d like to get some more of this homebrew rocking, as a good testbed for what’s useful enough to actually implement for reals.

Thursday, January 12

iPhoto 6 Quick Impressions

I had a few minutes to play around with iPhoto 6 last night after I finished installing iLife ’06. I didn’t yet have a chance to look at the big changes (photocasting, new books/calendars) but I noticed a few little differences:
  • Scrolling around the library view is a lot faster.
  • The format of the library has changed. Instead of the old year/month/day directory structure, it’s now year/roll. Also, the originals and rendered versions have parallel structures, rather than the old “Originals” folder that used to be in the day folder. This is a step forward because it’s now much easier to pick a set of originals and back it up (very important with 5+ meg RAW photos). This is a step backward because it’s harder to find where to save a JPEG when you use an external editor to process the RAW.
  • There are two new settings for RAW files. You can have RAWs sent to the external editor now, and you can have iPhoto save RAWs that it processes as TIFFs. The former is nice, since in iPhoto 5 you needed to remember to drag-and-drop photos to get the RAW versions into an external editor. I probably won’t use the latter option, as the TIFFs are huge and JPEGs look quite fine for my purposes.
  • The comparison feature is pretty nice in full screen editing, but you need to duplicate a photo in order to compare it with itself.
I’m always most excited about new book templates in each successive version of iPhoto. I’m also looking forward to the supposedly higher-quality printing process. The quality of the image printing in the last book I ordered was slightly disappointing.

Friday, January 6

Opera Site Patching Works

Opera site compatibility guy Hallvord Steen writes:
Now call me an optimist, but we have about half a year's experience with browser.js and I'm seeing evidence of the opposite. Three good examples are allmusic.com, shockwave.com and atomfilms.com - they all had long-standing issues with Opera, they were patched successfully with browser.js and a few months after the patch, each site was fixed by the webmaster!
As a web developer, I can attest that I want my site to work in Opera, but I don't necessarily have the time or know-how to fix this or that little thing. (Or big thing, like when Blogger posting was broken in Opera.) Having someone come and say "this is what you need to fix" is wonderful both for getting the results and also building goodwill towards the product.