Welcome to massless.org. Just a blog. I twitter occasionally.

Starred to Shared in Reader.

From to
A couple of years ago we made an option in Reader to share tags. Back then, there wasn't yet a dedicated page to shared items, or a "Share" button, or services aggregating shared items. e.g. FriendFeed, Linkriver, RSSMeme, Readburner [about to re-launch]

Things are certainly different now. It's past time for me to use starring for a different non-public purpose. So this'll be the last item I share via starred items. I'll star this post in Reader to remind people that this'll be going away later this week...if you're reading this via my starred items and you're at all interested in the things I'm sharing - why not unsubscribe from the starred and subscribe to my shared feed?

Early adoption always seems to introduce a sort of Brownian motion, doesn't it? Sorry 'bout that.

Not everything's different now, of course. For example, my shared items page in Reader, as well as yours, looks similar to Dealership's page, doesn't it? Yeah, that. Well...we were pressed for time and inspiration at Reader when we made sharing live, however we're keen on updating that styling.
704088849
posted at March 25, 2008, 10:46 AM 1 comment

The streets of San Francisco and Fashionist.

Mai rules. Check these out.

The pictures below are from Mai's site, Fashionist. At Fashionist, she's been posting hundreds of photos of people she sees on San Francisco's streets and asks them what made 'em wear what they were wearing. I'm a heads-down kind of moron and I sometimes forget that our city has such a constant, interesting stream of styles whirling by.

I actually can't pick favorites. And the whole accomplishment is one item on a big list of things she can do that I couldn't even dream of doing (e.g. asking strangers to pose for a fashion site).

There's a ton of stuff up already. I recommend checking it out by clicking through these to see more details for each passer(s)by.





































I know very little about bags. Accordingly, here's a picture of hers I really like...of a little bag.

posted at March 12, 2008, 5:12 AM 0 comment

I seem to have made a short film.

Later, when I've moved back to the topics of feeds, Google, and the birth of a software product, well this digression might seem a bit weird. But on my weeknights and a couple of weekends I made a short movie. A small, funny mystery running less than ten minutes.

It's about Lukas, a man who is having a day he'd probably rather forget. I'm sure you can sympathize...we've all been there, haven't we?...



Filmed using a Panasonic HD camera (if you like the tech details, it's the AG-HVX200) in a single location over the course of 3 weeks. Editing took around 4 days total. The script took 3 days to write which I did mainly while riding the shuttle to work. I read about cameras, lenses, and various guerilla-level introductions to filmmaking at the excellent HD for Indies blog.

I have a higher resolution QuickTime version available at http://massless.org/films/hung but it's still of small resolution even though its file size is around 60MB.

The film features songs by Saturday Looks Good To Me and Citizens Here and Abroad, and The Small Hours. Ok, I'm in two of those bands. But Saturday Looks Good To Me to is an amazing, gotta-love-em fever dream led by Fred Thomas that drive my hands to clap whenever I hear them and I believe they'd do the same for you if only you'd listen. So, go listen.

They're also about to tour in October with one of my favorites ever, The Blow, mainly comprised of Khaela Maricich, whose talent sparks my envy and devotion every few minutes as I press repeat. Details are on the SLGTM website.

Regarding filmmaking (and acting in particular): I think it's useful to know I'm generally ignorant about how this stuff works. I'm just glad I figured out how to remove the lens cap.
posted at September 17, 2007, 9:39 AM 17 comments

About Google Reader's Birth: Part 2.

This story isn't just about me. But for a long, bad while it was, as described in Part 1 of the lore of Google Reader's birth. This is Part 2, however, where smarter people help limit my ability to totally destroy a good idea...

Watching TV.

I placed some code on the Google intranet that was originally a feed parser in Javascript but that had mutated into an unholy ur-product. I wasn't concerned about code quality - it wouldn't ever be a real thing.

Besides, I knew that preparing for constructive iterative feedback on the not-really-a-parser project would take time and a lot of careful design and preperation and reflection.

"Lemme tell you why your thing sucks," Aaron Boodman helpfully offered before I'd barely begun.

Aaron and I sat near each other in Google, feet apart actually, and after seeing some early development he wanted to talk about the design I'd thrown together.

He let me know (I'm paraphrasing) that I was missing the big picture and that a reading tool would be more useful if its model started with the item (not the source) as a building block and allowed items to be interleaved and maybe even ranked and recommended to other people. Our conversation meandered into comparing certain views to television as TV channels are important but not as important to viewers as the shows themselves.

Aaron's a good coach. Not only did I buy into this model, I found his advocacy infectious. I added a feed reader as my 20% project later that day.

A speeding car without brakes.

With code quality reminiscent of Ariane 5, I strung together a prototype using Apache, MySQL, and PHP. (aka LAMP) Except I didn't use Linux. I had a Mac running Panther. So, technically it was PAMP.

Shellen and I met to review my progress. After seeing the something instead of a parser he swept us into a conference room and sketched user models and personas and lightspeed business analysis. "We'll need to get onto the release calendar," he remarked. "How's next Friday?"

I knew he was kidding. Especially funny was an appointment that floated onto my calendar to meet a team that was making a sort of homepage for Google. The agenda noted plans for actually launching the thingamajig.

At home the joke deflated. The appointment remained scheduled.

The Hudsucker Moxie.

All of the following is true. I can understand if you don't believe it.

The prototype wasn't well-defined, though it clearly had potential. Desperate for definition I decided to try something I'd half-remembered about the actor Jim Carrey. Something about getting out of L.A. and going to Las Vegas, searching deep within himself, and finding his first principles - whatever he was destined to express.

Ok, except I couldn't actually go to Vegas. I used the nearby conference room as a Vegas proxy and sketched madly on whiteboards, thinking deeply about feeds for days.

I arrived at a meeting with a simple pitch - a first principle for a feed reader. On a whiteboard I drew a circle, you know, like that Coen brothers movie. Beneath it I wrote the following:



Feed reading is inherently polymorphic.

Clumsily articulated, that phrase nevertheless became my focus. If true, it would follow that a feed reader's interface might have to be athletically flexible to match a wide variety of reading styles. I then drew spokes along the circle's edge to highlight various related but differing uses that Shellen and I had outlined over a series of intense discussions.

I heard the team's response as another Coen brothers reference. Simply: "Ok, then."

A ninja bowl filled with ninja sauce.

When bad software is made, ninja coders can hear it moving even while they're sleeping.

Steve Goldberg was working on the Google homepage and offered to help with finding ninja-level engineers. I asked how I should help. "Show 'em", he said. This meant the prototype resembled an abused puppy and that an innate sense of duty would compel expert coders to rescue it from its cruel master.

In Google when ninja-coding apprentices need to go to ninja school and ask a question that stymies the ninja instructors ... the board of supervisory ninjas will, when they need ultimate wisdom, ask the advice of Ben Darnell, Laurence Gonsalves, and Mihai Parparita. So I was shocked they expressed an interest in the project. I then discovered that Laurence had already begun a project that dealt with feeds and ranking items, like the Thumbs Up/Thumbs Down feature in TiVo, I thought, "yikes, I just have a Atom parser in pancake clown makeup, what will he say about the prototype..."

When I showed them code for the prototype, I observed the same response. Each of them sagged in pain as if millions of variables cried out in terror and were suddenly silenced.

I will be forever grateful they believed the puppy could be saved. Serious plans appeared and real work could start, so with steely resolve ...

I fled the country.

End Part 2.
posted at May 21, 2007, 10:05 AM 5 comments

About Google Reader's Birth: Part 1.

This story of Google Reader's birth isn't just about me. But for a long, bad while it is. So here's how it started...

It's Kottke's Fault.

Sometime around early 2001, while not working at work, I was reading a post on Jason Kottke's blog where he mentioned a company named Moreover. Moreover had a pitch about putting free headlines on your site. At the time, Moreover's pitch sounded like tin-toned boilerplate barkery with a voice about as authentic as a "sale" at Guitar Center. But I trust Jason, and, besides, could I write marketing copy any better? (Answer: no.)

I followed the instructions and put headlines on my site. It was easily accomplished.

I realized that instead of this neat solution, someone should replace it with something tedious and lame and less re-usable. I was clearly that someone.

All the choices of a Model T.

I decided I wanted a site with headlines from many different sites. In the irrational exuberance days, these were sometimes referred to as "web directories" or "web portals" if they were customizable.

I made a poorly-written, open-sourced Java library to get headlines based on Moreover's "webfeeds." Then I made a mini-portal. It got the "mini" qualification because the customization was narrow since users could only choose headlines from sites I liked because I was too lazy to build the customization engine. Naturally, I included my own weblog, so my hand would have been raised high in a "raise your hand if you're a jerk" contest.

I finished and sent a link to friends. The site was alive and browsers could see it, so I was satisfied. Except CNN didn't have a feed, so I modified the code to scrape the lead story and some other links. Later that year, on September 11th, that would turn out to be a surreal snapshot on a bandwidth-choked day as the cache contained information from sites that remained inaccessible.

There are many copies.

The mini-portal puttered along on a server in my apartment throughout the next couple of years as my professional life was significantly changed by joining Google. I remain grateful for this; I am exceedingly lucky this occurred.

I was working on Blogger, for whom syndication was an important and contentious topic. I'll elide over the technical details and specific history of the evolution of feeds and instead give you my bird's-eye first impression as a developer wading into the food fight over standards and implementation. My first impression?

Blogger had Moreover's webfeeds, except they were calling them just "feeds." And other people before Moreover had originally called them RDF for a while but simplified them to RSS. Except then they called them Echo. Which stopped after a while and they called them Atom though they planned several versions. Except there was still RSS. Also with several versions. And everyone hated each other. Weird, huh?

(If you're mad about the preceding paragraph, please know I think you are a beautiful person. And sexy. You are loved, it is presumed.)

The mini-portal kept breaking and friends kept telling me they relied on it, so I kept updating it. I was surprised anyone relied on it, especially as it wasn't very powerful. They seemed addicted.

Parser.

At Google one day, like every day, I was really busy.

Turns out that with Jason Shellen that wasn't really much of a deterrent. "Why don't you make an Atom parser in Javascript?", he asked.

Which, for the non-geeks, is his asking me to make something that turns something into something else which could be used to represent data that was basically about cat photos. Generally the people who appreciate this kind of thing have been given a Lego-based Millenium Falcon as a birthday present.

So, okay. That sounded fun (kinda). And I was only doing several thousand things at the time, so it seemed a reasonable request.

Normalization.

After writing an Atom parser and getting a way to run unit tests automatically for a group of Atom feeds I went back to the thousands of things I was supposed to be doing and rested with some contentment.

"You suck," mentioned Steve Jenson.

"Having a normalizer could fit every kind of feed content into your model," he continued while watching me review the unit tests in shame. "Then you would suck less. And I could write that in ten minutes. Nine, if I don't take time to blink."

Steve whipped together a Python-based normalizer based on the Universal Feed Parser and made me watch. He agreed to let me use it if I danced a jig which I performed mio gusto as requested. I'd already abandoned my dignity earlier in life so the joke was on him.

A moment of clarity.

Normally, programmers are supposed to minimize duplication of effort so I wasn't thinking about making a feed reader, there were plenty of those - I was just making a web page that tested the parser. I narrowed the parser effort to just one bug that concerned me, and one night I finally discovered a workaround, posted about it, and ran the tests again to review the content.

Oh. Well, would you look at that.

See, that night a little wheel reinvention occurred ... as a square. The parser became a reader by accident.

It's difficult to describe my excitement at that moment.

For the non-geeks, I mostly work on the stuff you can actually see when you use software: the layout, forms, graphics, the logic behind what happens when you click on something.

Each time I'd want to do something useful that was also complex, I'd have to create a layer which described data in a way that I could easily transform. It almost never came out from a database that way.

But in this moment, I reviewed the tests and was reminded that a layer had been bypassed. Feeds were already describing data in a way that I could easily transform. This was more convenient than any other confluence of data and language than I'd seen. I could work less and take naps and just be lazier and that's all I'd really wanted anyways.

An anecdote for the geeks: I'd also realized it could be neat to attach events processing to individual items in a feed. I hoped that could be useful. (As Mihai has shown all of us in abundance: it has been. More on that later.)

The pages looked reasonably pretty.

I put it on the Google intranet to show Steve even though the reading interface had lots of bugs. Code quality seemed unimportant since, I thought, this is just a little thing. It's not like it's going to be something real.

End Part 1.
posted at May 17, 2007, 2:30 PM 5 comments

Considering Google Reader lore.

I'm very lucky. Let's start with that.

Partly I'm lucky because I get to share thoughts and work with developers all over the world thanks to my day job. My co-workers can be shy, though, so this year's Google Developer Day seems like a great opportunity for like minds to figuratively cross the dance floor and do the Hora.

I love sharing stories with developers I meet. We should share stories more often. Matt Cutts mentioned something similar a while back. The meet and greet at Google on May 31st is all about our serious stuff - APIs, debugging, templating, project hosting - which is also showcased at Google Code. But what about our silly stuff? What about our lore?

A lot of interesting developments on the web don't have a folklore.org. Do the following have collected stories/wisdom? Metafilter, Blogger, Flickr, Etsy, YouTube, Gmail, Wordpress, Winamp, MSIE? If they don't they should.

Recently I've been inspired to contribute a little lore over the next few posts about the birth of Google Reader, a project I inadvertently started though I'm not sure I should be considered its mother or godfather or even town elder. Saying I'm responsible for Reader would be like saying the hardening of the earth's crust is responsible for directing Raging Bull. One event gave way to the other but I think the credit of creative genius should read "Martin Scorsese" and not "ball of ferrous material."

The excellent parts of Reader are due to a team of people much smarter than myself. They're the Scorseses. In any Reader lore, I'd prefer to be considered more of a ferrous ball.

Tech lore can also be useful and informative, particularly for other developers, though I'm hoping I can also relate something my non-tech friends and family can appreciate. I'm also hoping I can at least be a little funny, especially since Justin and I recently discussed how it would be challenging to make a story about an Atom parser interesting.

Now about that Atom parser...

(First anecdote: I made this image for the login screen a mere day before the launch of the redesign for Reader. Wanted it to suggest a folded newspaper. Funny, it doesn't come close.)
posted at May 16, 2007, 1:30 PM 2 comments

The Wifi nodes are trying to tell us something. Anything.

Expression is leaky - it seems to fill nearly any text input available. Here's a sample list of SSIDs I've noticed while riding to work.

iPeedInThePool
Bachelorette Pad
touch_it_or_die
VioxxDeaths=50,000
Figity
BriggsyAir
CanYouHearMeNow
pravda
RUBY LOVER
MadDog
Cheese and Crackers
babydaddy
frisky
Nini's super duper network
m00nbase
MooseNet
parsonage
typhoon
Cuernavaca
MistyMountainTop
Atappa Deva
Go Brooklyn
youngstar
batcave
stayonline
El Chupacabra
Extraneous
FOLSOM BITCH!
crack alley
Middlesex
MASIKAT INPATIENT SERVICES
sfmoviebears
kingDemi
despierta america
Dallyn
Compound
YellowMenace
CitrusSalt
Soul Chicken
Asphodel Airport
JAZZ ROOM
herforthmadsen
zoeunplugged
Naboo-23
forever
GBP
Broken
Massoumeh
Kirkwoo
cats
Movement
MustardBizzle
daisygirl
alabaster
MyPlace
Copper
Pookiehood
animalhouse
N.W.I
weddingpics
The Raging Patellas
VirusSpreader54G
Babaloo
Saberty
Free the Net
Man Alive!
BeanBag
Neoplastic Stereo Broadcast
ducks
pairofpants
classy ladies
airBot
Amalgam
KGB
The_page_g
love2haight
furniture
mi jugo
sUcKeR fReE
posted at April 03, 2007, 2:52 PM 7 comments

I like torturing Firefox.

Poor little browsers.

At work we often approach, and occasionally shove past, the limits of what browsers can handle. On my home laptop it appears that Firefox has crashed around 220 times and that 37 of these crashes occured in March of this year alone. I've had several different OSes and machines while at Google (including, thankfully, a new Macbook Pro as of yesterday) so the number of crashes that occur during my normal work day aren't easily retrievable, which is too bad since that'd likely be a higher total.

Mihai pointed out to me that the crash log is just a text file, so the following command with the correct username used should retrieve the number of Firefox crashes for most Macs:

grep "Command: " /Users/[your username]/Library/Logs/CrashReporter/firefox-bin.crash.log | wc -l

I'm thinking of starting an advocacy and protection group: People for the Ethical Treatment of Browsers. It would decry the inhumane level of browser testing that results in the deaths of millions of processes and threads every year. Of course, the other side (our side, really) will haughtily note good intentions, a desire to prevent further surf stoppage, and the benefits that You People enjoy thanks to the sacrifices made by software in cubicle farms all across the world.

Little-known fact: If you lean in close to your computer's speaker when a browser crashes you can hear its reedy last breath. Some say it's like a little scream.

I say it's like music. Sing!
posted at March 29, 2007, 10:15 AM 4 comments
Massless is Chris Wetherell.