Some flash ads break mousewheel-scrolling

Engadget's a fun site, but their use of Flash means I can't use my mousewheel to scroll through their site.

Invasive ads are bad.

Cory Doctorow's Overclocked in Podcast form

Today Cory Doctorow gave a tech talk to my company. He talked about how DRM is a wasted effort and how it's important that we don't bake-it-in to the technology that we build.

So this evening I decided to look for Cory's Overclocked book in audiobook form. Unfortunately, I couldn't find either the audiobook or podcast for the book. There's a podcast feed on feedburner but it only contains the 20 latest entries and so doesn't include any of Overclocked.

That motivated me to munge together the blog's MP3 files into a single convenient podcast! To subscribe to Overclocked in iTunes:
  • Open Advanced > Subscribe to Podcast...
  • Paste in the field

    This task was made particularly easy by the attractive Mac podcast authoring tool, Feeder. It does validation, size fields and everything. It's quite a nice app.
  • A fun problem: IndexedValues

    This is a fun problem - how would you implement it?
    public interface IndexedValues<V> {

    * Inserts the specified value at the specified index. The same
    * value may be inserted several times in the same collection.
    void insert(int index, V value);

    * Returns the index of the first occurrence of the specified value.
    * @param min the returned index will be greater than or equal to this.
    * @param max the returned index will be less than this.
    * @return the index, or {@code null} if no such value exists in
    * the requested range.
    int find(int min, int max, V value);

    We've already implemented a solution but there's probably several interesting ones.

    Audiobook Builder: it just works

    I recently subscribed to Simply Audiobooks, which is a Netflix-like service that rents books-on-CD through the mail. I listen to them unabridged so each book spans several CDs - 12 CDs for a single book is typical.

    Unfortunately, iTunes doesn't handle Audiobooks-from-CD nearly as well as it handles music or audible content. Each book is composed of hundreds of tracks. For example, The Last Coyote is over 1000 tracks, each about 20 seconds long. This causes big problems:
  • It muddies up my iTunes library. It takes a long time to scroll through a single book!
  • The track names are garbage, such as "4dddd" or "1f", so finding them on my iPod isn't fun
  • My iPod thinks each track is a song, so I get parts of the audiobook mixed-in when I shuffle songs.

    To resolve these problem, I went out looking online for an "MP3 Joiner for Mac". I didn't find one, but what I did find was much better. Audiobook Builder is a ridiculously good Mac app that fixes these problems. It will import books from an audio CD, an MP3 CD, or even a book imported into iTunes. It inserts chapter markers where they're due. It even adds cover art! The app is quite attractive, possibly sexier than iTunes itself - it's the Delicious Library of audiobook apps.

    If you're using Audiobooks from CD with a Mac, buy Audiobook Builder.
  • Glazed Lists talk at JavaOne: Friday at 2:50pm

    Details on our Glazed Lists tech session:

    Sexy Models! An API for Declarative Data Models on the Desktop
    Session TS-3057, desktop track
    Friday May 11 at 14:50 in Hall E - 135

    We're planning on writing code live during the session to show off how productive Glazed Lists is. We're going to unveil TreeList, a very exciting transformation that makes JTree's really easy to write.

    Use the schedule builder to register for this session!