Author Archive for Tim Moore

10 Reasons Why Being 30 is Better Than Being 20

Well, as of three days ago, I’m officially in my fourth decade. It seems like it should feel more momentous than it actually does, but to be honest it actually feels pretty good. Even though it doesn’t seem like that long ago that I was just turning twenty, looking back a lot has happened since then, and I’m in a far better place in my life now than I was ten years ago, for a number of reasons…

Continue reading ‘10 Reasons Why Being 30 is Better Than Being 20′

The New Cultural Communities

Stewart Mader links to an interview of Professor Richard Florida at Newsweek about the increasing link between place and psychology.

Florida points out that industries in large cities have become far more specialized:

New York is great in fashion design and investment banking. San Francisco’s great in software. L.A.’s great in entertainment technology. And Nashville is the epicenter of music production. So if you want to pursue a given career, it’s not just that you can make it in any big city, because now there is a smaller number of big cities that will be the key places for you.

He goes on to emphasize the influence that an individual’s choice of a place to live will have on his or her opportunities in life:

But many of these people give little thought to the fact that where they live will have an effect on so many facets of their lives—from their ability to find a mate to their access to certain careers. You need to be smart about place to actually have the life that you want to have.

I think that we’re in the middle of a large global reorganization. For a very long time predating mass communications, local cultures were highly individualized and often cut off from one another. People’s values and customs were a product of their culture, of their specific geographical location, of their ethnicity.

With the mass media, rapid travel, and global economy that developed in the 20th Century, local cultures broke down in some ways as the boundaries were no longer defined by geography or ethnicity. People were exposed to new ideas, and new cultures of like-minded people grew up as a new layer above (or below?) the geographic centers. You saw the emergence of cultures that exist both as a subset of any given local culture, and as a global culture with mirror images that sprung up across the world. As examples, I mean things like youth cultures (punk, goth, rave, etc.) as well as tech/geek cultures, and as more people become connected online, more and more niche cultures arise with both local presences within geographic communities, and global bonds via the Internet. These are cultures based on ideas and outlooks, rather than upbringing, and increasingly, people are finding cultures that fit their personalities, joining those communities, and ignoring or rejecting the traditional cultures that they were brought up with.

But the really interesting part is how ease of travel means that more and more people with a strong foundation in one of these new cultures are banding together in geographical locations. You can see this especially in the Bay Area, home of not only tech culture, but also progressive politics and a certain artistic aesthetic. It seems that so few people here are native, most having moved here to join one of these cultures, and the ones that are native are just as fully immersed. The natives who don’t identify with the new culture of the Bay Area are barely present — maybe they’re leaving the area, or perhaps they’re just drowned out. You can see this in many other cities too, like Berlin’s young bohemian party culture, LA’s entertainment industry, DC’s political machinery, etc. Affluent people are both flocking to these cities, and flocking away from them, depending on their affinity for the new cultures that have arisen within them. Many young people who are raised within the metropolitan area of these cities either accept the values of their dominating cultures, or they leave for a city that fits their personality better.

What this all adds up to, IMO, is a mass reshuffling of the deck. Within time, the whole world — or at least the portion of it with the means to do so — may rearrange itself according to the personalities and preferences of its inhabitants. And then it seems like we’d be right back where we started, in a way, with cultural boundaries drawn by geography. On the one hand, we would still have the communication technology to provide exposure to other cultures, but on the other hand, as the access to this increases and people have to filter more and more of it, I wonder if people will choose to expose themselves to other cultures.

Infallible APIs

Fellow Atlassian Charles Miller recently wrote an amusing post about methods and constructors in Java that declare a checked exception, but can be called in a way that is required by the specification not to fail. A common example involves string encodings:

try {
    s = new String(byteArray, "UTF-8");
} catch (UnsupportedEncodingException e) {
    throw new Error("UTF-8 is missing??");
}

This code is the result of two conflicting factors. On one hand, since the constructor in question takes an arbitrary character encoding, the case of the encoding being unavailable must be taken into account. On the other hand, 90% of code that calls this constructor will be explicitly invoking a character set that is required to be provided with the Java Runtime Environment, and its absence would be an error serious enough to justify terminating the VM entirely.

The unnecessary exception-handling code is ugly, and obscures the actual intent of the method in which it appears. Charles jokingly proposes adding a “yoda” statement to Java to tell the JVM, “do, or do not; there is no try.”

Another Solution

Usually, code smells like this indicate a poorly-designed API. If you know the method can be called in a way such that failure would mean there’s an internal error, then it shouldn’t be throwing a checked exception. As is often the case, you could solve this problem with stronger types:

public class Charset {
    public static Charset findByName(String charsetName)
        throws UnsupportedEncodingException
    // ...
    public static class Standard {
        public static final Charset UTF_8 = //...
        public static final Charset US_ASCII = //...
        /// etc.
    }
}

Then give String a new constructor:

    public String(byte[] bytes, Charset charset) {
        // no exception declared!
        //...
    }

Now you’ve got a few different ways to use this. When you know you want to use a built-in encoding:

    String s = new String(byteArray, Charset.Standard.UTF_8);
    // no checked exception here!

When you want to use a variable encoding, that may or may not be defined in this VM:

    Charset charset;
    try {
        charset = Charset.findByName(charsetName);
    } catch (UnsupportedEncodingException e) {
        System.err.println("Unknown charset: " + charsetName
            + "; falling back to US-ASCII");
        charset = Charset.Standard.US_ASCII;
    }
    String s = new String(byteArray, charset);

And the original String constructor could remain—rewritten to use the new Charset facilities—as a convenience for the case where you really do want to use an unknown encoding, and fail if it’s not present:

    try {
        String s = new String(byteArray, charsetName);
    } catch (UnsupportedEncodingException e) {
        System.err.println("Unknown charset: " + charsetName
            + "; ignoring");
    }

The Worst Part of it All

As it happens, Sun, did add a Charset class to Java in 1.4, as part of the NIO framework. Astonishingly, they still did not define constant implementations of Charset for the set of required standard ones. So you still have to look them up by name, and you still have to catch an exception! Worse yet, they invented some new exceptions for the purpose, UnsupportedCharsetException and IllegalCharsetNameException. These exceptions are unchecked runtime exceptions, which avoids the problem of having to clutter your code with exception handling code in the cases where you are using a standard charset, but makes it easier to mishandle cases where you aren’t.

The kicker, though, is that String does not have a constructor that accepts a Charset object! Instead, you’re supposed to use the CharsetDecoder class or the decode method of Charset, which wraps everything in Buffer objects, making you jump through a few hoops to accomplish the same things:

    String s = Charset.forName(charsetName).decode(ByteBuffer.wrap(byteArray)).toString();
    // this might throw an exception, but it's unchecked
    // so we don't need to catch it unless we want to handle it

Ick.

Still, though, the NIO charset handling is a little bit better than what we had before, and it gives you some flexibility that wasn’t there in the previous implementation (for example, you can control how to handle unmappable byte sequences). It wouldn’t be too hard to add in a few utility methods to smooth over the rough edges here. I’ll leave that as an exercise for the reader.

Escape

Escape

After working on it for over six months, I’m happy to finally announce my new techno/electro DJ mix, Escape.


Escape (download)


This is my first mix released since 2005’s Year of Reflection, which was actually recorded in 2004 (hence the title). So I’ve been on a bit of a break from this type of thing for a while. My turntables and records have been boxed up in my closet for a year and a half, and it’s probably only a matter of time before I sell them all. But I’m actually very happy for this.

I made this mix entirely with Ableton Live using MP3s that I downloaded from eMusic, Beatport and Bleep. This is something I’ve wanted to do for years, but at first the technology didn’t exist, then the technology appeared but songs were unavailable digitally, and more recently the technology and music both became readily available, but I couldn’t find the time to put them together. I called the mix “Escape” in part because I’ve finally found my way past these obstacles and made something very close to what I always hoped would be possible in a post-vinyl DJing age.

Far from some people’s claims that using software to beat-match and mix is the easy way out, this was the most labor-intensive mix that I’ve ever created. Tracks were transposed, extended, edited, sliced up, and processed heavily to get them to blend well. It was a very educational experience, but it also taught me that I still have a lot to learn. I hope, now that this is finished, I can spend more time learning and applying these new skills to original productions, something else I’ve intended for years but never made the time to pursue seriously.

I hope it goes without saying, but please be aware that the independent labels that produce this music rely on the support of electronic music fans to stay in business, and I am not providing this mix to profit from the work of the original artists. Especially since I’m no longer playing out, I made this purely for the fun of creating it, but I hope that if you enjoy the music you hear, you’ll buy the original tracks.

Tracklist

00:00–04:19 Ellen Allien & Apparat – Red Planets
02:16–10:50 Lucien-N-Luciano – Future Senses (feat. Francisca Leon) (mini re-edit)
07:46–14:49 The Field – Over the Ice
12:38–21:46 Minilogue – Space
19:48–28:23 Monolake – Plumbicon
21:36–27:47 Alex Smoke – Never Want to See You Again
26:43–33:04 Lusine – The Stop (Robag Wruhme remix)
31:19–34:27 Modeselektor – B.M.I.
32:51–36:57 Kraftwerk – Numbers
33:53–39:17 Ellen Allien & Apparat – Do Not Break
37:51–45:01 Undo & Vicknoise – Mescalina
42:27–49:41 The Field – Everday
48:17–56:48 Gui Boratto – Beautiful Life

I plan to upload some of my older mixes to this site in the coming weeks and months, and maybe even dig out some of the previously-unreleased recordings if anyone would be interested. In the meantime, I’d love to hear what you think of this one in the comments.

Photo credit: sierraromeo

I’m a California Voter for Obama

Obama: Progress

Dave Winer has started a campaign to have bloggers post “a virtual equivalent of one of those signs people put on their front lawns” in support of Barack Obama.

I won’t go into a lot of detail right now on why I think Obama is the best choice for our next president, but that is how I feel and I look forward to the opportunity to cast my vote on Tuesday.

Speaking of which, it is notable that I do get to vote in the California Democratic primary, as someone who is registered without a party affiliation. As it happens, “decline-to-state voters”—as we’re known here—are limited to voting in either the Democratic Party or the American Independent Party primaries; the Republican Party, Libertarian Party, Green Party and any other political parties registered in California do not allow decline-to-state voters to participate in their primaries.

There’s another catch: decline-to-state voters are given a nonpartisan ballot by default, unless they explicitly request a ballot for the specific party’s primary they wish to vote in. If you are also a California voter who is not registered with a party, and you want to vote in the Democratic primary (or, for some reason, the American Independent primary) be sure to request a Democratic ballot when you get to your polling place or you won’t get one.

And if you are a voter and blogger that supports Obama for president, join in the campaign!

Macworld 2008 Predictions

This year, even more than ever before it seems, everyone has a pet theory on what Steve Jobs will be announcing at tomorrow’s Macworld Expo keynote session. Since I’ve got my own ideas and have been trying to get myself to write on this site more often, I’ll throw in my two cents on the matter. I don’t have much that hasn’t already been said by many others, so I’ll try to keep this interesting.

My money is on wireless as the keynote’s theme. Obviously I’m not the first to say this, and the banners in the Moscone Center are a big clue, but you’ll just have to take my word that I’ve suspected this for a while now. It’s clear to me that Jobs and Apple’s industrial design team must not be big fans of lots of cables hanging off a computer (and who is?) so it wouldn’t surprise me at all if there are teams of engineers trying to build a perfectly cable-free computer at Apple. I don’t know if they’ve gone quite that far yet, but I bet that the sub-notebook that they’re almost certainly announcing tomorrow will be pretty close.

I’m typing this right now on a rev A 12″ PowerBook G4 that I bought in May of 2003. It’s reaching the end of its life — it won’t actually run on batteries anymore, so I need to keep it tethered to a wall — but five years ago, this was an incredible machine. It was compact, lightweight, fast, full-featured, and beautifully designed; it was one of the best computers Apple had ever created, and still is.

There’s absolutely no way that the notebook computer Apple is announcing tomorrow will be anything like the 12″ G4. That is, they’re not putting a MacBook in a smaller package. If they were planning to do that, it would have already happened. The MacBook Pro is a fairly incremental update to the same basic design that started with the Aluminum PowerBooks, and a smaller version of those would not be noteworthy enough to headline the keynote presentation.

Instead, I think we’ll see a radically new computer that not only looks like nothing we’ve seen before, but presents us with an entirely new way of using and even thinking about portable computers.

Many of the rumor sites have reported that the new design will not include a built-in optical drive. The assumption is that it will be available as an external unit, but I’m not so sure. I find it just as likely, or even more likely, that Apple will instead announce a shift to fully electronic software distribution, perhaps even selling third-party software, probably leveraging the iTunes Store. This rumored MacBook Air will receive all of its updates wirelessly.

I would not be surprised if there are no peripheral ports at all on the device. External devices will use Bluetooth. Backups will use wi-fi with an Airport Extreme AirDisk, a feature present in the Leopard development versions of Time Machine that slipped from the final release, but will very likely return tomorrow, maybe even with a new, Apple-branded hard drive or RAID array with integrated wireless. I am more hesitant to believe the rumors that they will announce ubiquitous wireless networking using WiMax, EDGE or EVDO, but it’s not out of the question and it would surely be welcome.

In the cases where you do need removable storage, the solution is literally right in front of most of us. I don’t think it was happenstance that many of the new features of Leopard were oriented around easier network setup, more flexible sharing, and remote access. I’ve got a feeling that the MacBook Air will be a computer that is explicitly designed as a companion device — one that is not intended to stand alone as your primary work machine, but to provide a portable window into the desktop machine that you most likely have sitting on your desk already at home or at work.

The pieces fit together perfectly: with Leopard’s Back to My Mac, Apple has already solved the problem of sharing files across the Internet, meaning that a portable device only needs to be powerful enough to get onto the network, connect to a host computer, and sync over whatever data you need here and now, or maybe even just act as a dumb terminal using screen sharing to control the desktop Mac directly. The limited need for speed, memory, storage and expansion ports then frees the hardware engineers to optimize for battery life, wireless performance, and weight. It could all add up to something pretty revolutionary: a truly ultra-portable computer that would not need to be much larger than a magazine but could potentially provide the power of a Mac Pro wherever you are.

Now, it’s pretty likely that a lot of my “prediction” is really more like projection. The fact is, this is exactly the kind of computer that I’d really like right now. I’ve got Mac desktops at home and at work, and I’m completely happy with them except on the occasions where I go out of town… or just feel like blogging from a cafe or browsing Google Reader on the couch. It’s hard to justify buying a full-featured laptop for those occasions, not just because of the price, but because of the hassle of keeping my data in sync, not to mention lugging it around in my bag. If the MacBook Air turns out to be anything like I hope, Apple will surely get more of my money tomorrow.

Nine Inch Nails Reconceives Remixing

Trent Reznor of Nine Inch Nails has never been shy about encouraging others to remix his music. His 1992 EP, Broken was quickly followed by a collection of remixes called Fixed and his next two albums, The Downward Spiral and The Fragile), each had their own companion remix albums (Further Down the Spiral and Things Falling Apart, respectively). These days, when every artist with a modicum of dance-floor appeal commissions remixes from high-profile producers to help tap into a cross-over market, this may seem pedestrian, but in the early ’90s this was unheard of from mainstream acts, and far from being uninspired club mix rehashes, many of the tracks on these albums were complete transformations, twisting Reznor’s creations into strange, unrecognizable creatures.

When 2005’s With Teeth was released, however, it was followed by something even more unexpected: Reznor offered the audio tracks from lead single “The Hand That Feeds” as a remix-ready file for Apple’s GarageBand music software, and encouraged fans everywhere to interpret the song for themselves. The experiment was so successful that the album’s next single “Only” was released in a wider variety of audio formats to allow remixers using Ableton Live, Pro Tools and other software to join in the fun.

April 2007 saw a new album, Year Zero, and a large new set of multitrack files available on the album’s official web site. Now we can hear the results: the new Y34RZ3R0R3M1X3D compilation includes a remix made by fan Pirate Robot Midget along with versions of tracks from Year Zero reinterpreted by a variety of artists including Ladytron, Saul Williams, Fennesz, Kronos Quartet and The Faint. Most incredibly, the CD version includes a separate DVD/ROM with audio files for every track on the original Year Zero as well as a demo of Ableton Live so that aspiring remixers who don’t already own multitrack audio software can get their feet wet. Even better, this week nin.com unveiled a new community site, remix.nin.com, where members can download the multitrack audio files, and remixers can upload their creations to share with the rest of the community. While remix sharing sites have existed on the Internet for years, this may be the first of its kind to be officially sanctioned and hosted by a well-known artist. And it’s a pretty impressive site, at that, with a variety of RSS feeds and the ability to create playlists and podcasts of submitted music. I’m really looking forward to hearing what people create… and hopefully giving it a shot myself.

Another thing Reznor hasn’t been shy about lately is voicing his contempt for the record industry, and the ways they exploit and demonize the most loyal music fans. Major labels have had an uncomfortable relationship at best with amateur remixers and the murky copyright status that comes with the rearrangement of another artist’s work. So it comes as small surprise that Universal, the record label that owns the rights to these tracks, almost prevented the remix site from launching. The compromise they arrived at requires submissions to go through a time-consuming review to ensure that they contain no copyrighted material other than the NIN source tracks, and holds Reznor personally liable for any legal difficulties that may arise. While far from ideal, it’s a testament to Reznor’s commitment to the concept that he fought so hard to make it happen. Now that his contract with Universal has expired, I can’t wait to see what he does next, now that he is free to use his own music as he sees fit. And I hope that other artists, big and small, follow his lead and embrace the idea that the lifespan of a piece of music doesn’t have to end when it reaches the hands of the public.

Just Start

I’ve been meaning to start a weblog for… well, years. I’ve had various accounts on LiveJournal, Myspace, etc. but never took them very seriously, because “any day now I’m going to register my own domain and host my own site somewhere,” but somehow I never got around to doing anything about it. Even a few months ago, when I finally decided to “get serious,” register a domain, and set up a hosting account, I never got as far as writing an actual post. After all, I can’t just start writing, can I? I need to find the perfect theme, and maybe there are some plugins I should install, and of course I need to read everything on the Wordpress wiki so I know how to use every minute feature, and maybe I should think about using Feedburner for the RSS feed, so I’d better do some research… you get the idea.

I am an incredibly gifted procrastinator. Anytime I decide that I want to do something, I can come up with a million little reasons why I’m not doing it, why I can’t just jump in without an enormous amount of preparation, none of which I have the time or energy to do now. Sometimes I like to fool myself into thinking that this is perfectionism, but I really know that it’s just avoidance.

The worst part is that this runs totally contrary to the advice I’ve been giving to others for years. I’ve been known in my work life for a long time as an advocate of iterative design, incremental improvement and self-motivated initiative, and yet when it comes to the myriad projects I’ve adopted in the part of my life that doesn’t directly pay the bills, procrastination rules. Without any external motivators to embarrass me into action, my instinct to put it off takes over.

With this post I’m putting a stake in the ground. The custom theme and fancy plugins can come later — this post is going out as-is and my weblog will finally launch, unceremoniously, into the world. And all I really needed to do was just start writing.