Friday, February 29, 2008

MMM? MMMMM!

I finally took the plunge to upgrade my code from M3 to M5. The whole process was smoother than I expected - I had assumed it would take a few days, and managed the whole thing in just a few hours. My thoughts so far:
  • I'm really grateful for the excellent upgrade documentation provided by Google. Having a complete and concise explanation of all the removed methods, and what to replace them with, makes the whole process far less painful.
  • Dick Wall's ContentProvider diff is extremely useful as well. It would be nice if it was included in the official documentation - you need to dig a bit to find it.
  • Most of the API changes look fine to me. Have you ever used an SDK that had some functions which just seemed poorly designed or named? Did it gnaw on you for weeks, months, and years, when even the SDK provider's engineers admitted it didn't make sense? I'm willing to change my code now if it means not having to do that next year. Things are now more clearly named or more elegant. (Big example here is the AlertDialog change - it's a low more elegant now, and to some extent future-proofs against further API changes.)
  • I'm glad I wasn't using XMPP. This no longer seems as disastrous as I had first thought - it sounds like most of the old functionality is now present in the GTalk API - but the volume of the outcry has been as loud as I predicted.
  • Those buttons really are big! I've probably heard more about this than any other change, so I was prepared for it. What is weird, though, is that the TextViews are still as tiny as before. If your views are stacked vertically this looks fine, but if they're horizontal it's hideous.
  • I was pleased to see that the changes in View size didn't have a big impact on my design. Oh, it looks different, but not actually bad. I suspect that a lot (not all) of the people having trouble now were using absolute positioning or other funky layouts. If you stick to the basic built-in layouts, things look pretty good.
  • I wish I could say the same for other components. The TimePicker dialog, which looked good (if simple) in M3, is so ugly in M5 that it isn't an option for me to use. That leaves me with the unpleasant choice between re-implementing this View from scratch so it looks right, coming up with my own design for picking a time, or swallowing and hoping that they fix this soon.
  • Along the same lines, I wish they would finish open-sourcing Android and put in place a system for submitting patches. I'd much rather spend the few minutes I think it would take to fix this bug than fill out a report and wait for the next SDK.
  • Because of this and other factors, I'm now wondering whether it's worth re-submitting on M5. I kind of want to do it, since it's working on the latest and greatest, but it looks really bad in a couple of places. This would require additional design work just to reach the level of functionality I had before. Is it worth it, especially if these things will be fixed soon? I'm doubtful.
  • On the other hand, the bug fixes have been impressive. The improvements in MapActivity alone give a big boost to application stability, and may be worth the price.
  • It has definitely been a valuable exercise, though. Now that I know up front what to avoid, future designs will be much more likely to look great out of the box. (Just don't use any dates, or times, or long alerts...)
  • The M5 emulator seems a bit slower than the M3, but not by an order of magnitude like some people on the group have been reporting. I actually bought a new computer to handle the emulator, and am glad I did - the M3 went from taking over 2 minutes to boot up to less than 30 seconds.
  • The home screen looks better than I expected. When I first saw the screen shots from Barcelona, I thought it was hideous. After you use it, though, it makes more sense - it's showing you the applications you actually use, and you can quickly launch anything on the phone with a single tap.
  • With this and most other screens, it becomes really helpful to remember that M5 is for touch screens. This does, however, make it even more jarring when you run across Views that don't properly support touch.
  • The new XML editors are a little fluffy, but make Android feel like a more professional product. It's most useful when you have a limited and well-defined set of choices like in Android Manifest - it becomes an integrated tool for discovery. It's least useful when it becomes a thin and encumbering veneer over raw XML, like in the resource XML. It would be great if future Eclipse plugins could identify the valid entries and only show us those.
On the whole, M5 is a definite improvement, but it's a classic case of three steps forward, one step back. For alpha software, it's pretty darn good.

Tuesday, February 26, 2008

Back in the Saddle

Have I mentioned that my bike was stolen? Odds are that either this is news to you, or you've heard entirely too much about it over the past two months.

It's still a bit of a shock to me. It was ripped off from the bike rack in back of my office, where I've been locking it up almost every workday for well over a year. Nobody else has had any problems with theft, so my co-workers and I were all pretty stunned.

I filed a police report and unhappily waited, but had no illusions: I knew that the odds of retrieving it were slim. The only silver lining was that, since it went in late December, I wouldn't have been doing much riding over the next month anyways. Still... I was just a few rides away from 1500 miles for the year, plus I just hate the feeling of losing something like that. It's the most costly item I've ever had taken from me.

After a while I received the official letter from the Los Gatos police department that (nicely) said that they weren't looking for it any more. I sulked for a bit longer, but after heading into a stretch of glorious weather (70 degrees? In February? For a Midwestern boy like me, that's unfathomable and undeniable), I was moved to take action.

Prior to the theft, I'd been telling everyone that my next bike would be a road bike. My original bike, a Specialized Sirrus hybrid, was a compromise, since I couldn't decide if I'd only be riding on a paved trail or if I'd also be heading off-road at all. I've since come to realize that the road options in the area are ample for me, and it made sense that my next bike would take advantage of all that.

Still, when I said that my next bike would be a road bike, I was thinking "next bike" in terms of the next five or ten years, not later in the aughts. When I came to face the actual decision, I found myself resisting. First, with the prospect of loss fresh in my mind, it seemed unwise to drop over a grand on a bike. Second, for the kind of riding I'm doing now, day to day, a hybrid still makes more sense. I share the trail with other riders, runners, dogs, strollers, etc. The hybrid's construction keeps me very visible and encourages me to sit upright where I can see and response to the myriad mobile obstacles on the horizon. Altogether, it seemed the way to go.

I finally went and got it yesterday. I felt a little bit sheepish when I returned to Wheel Away... after all, I'd bought the exact same bike from them just two years ago. They were great as always, though, and in seemingly no time at all I was happily on my way again.

I must say, I do like this new bike. It's another Sirrus, but they've touched up the design. There are more shiny metal parts now, which will look crummy in a year but look really sharp right now. There are plenty of other smaller changes as well. The handles are more textured now, with a broader grip. The seat is a higher-quality leather, and the styling on all the bike looks better.

I did my first serious riding on it today. It seems to be going pretty well... the biggest problem I've had so far is with the front shifter. It doesn't want to move from second to third gear, but after some trial and error, I've found that it will shift most of the time if I stop pedaling while I shift. That's different behavior than on my previous Sirrus, so I may have them look at the dérailleur when I take it in for my tune-up.

Other than that, though, I was very pleased. Honestly, as pleased with myself as with the bike. After two months of absolutely no riding, I was dreading getting back into shape on it. I won't lie - I did feel pretty beat when I pulled into work - but nowhere close to the pain when I first rode to work. I also realized all the little things I'd gotten good at without even noticing. For example, the toe clips. I went for a whole year either not using them or using only one, due to all the trouble I had with them, but now, after just opening them up a tad, I was surprised by how effortless it has become to slip my feet on and off my pedals.

If nothing else, this experience has taught me that I need to value the time that I have, because I don't know how long it will last. I realized that I never named my previous bike, and resolved not to make the same mistake. So, after one day, I've settled on one: Asfaloth. Shadowfax would have been the obvious choice, but hey, I need to save a cooler name for the better bike that I'll be getting in the future. Hopefully a decade from now.

Awesome Adventures

Phew!

I would be feeling pretty tired right now, if I didn't feel like such a wuss in comparison to the professional athletes I've been watching. I've just come off a fun, quick, unusual vacation that combined the best of all worlds: time with family, sightseeing, relaxing, and ample excitement.

I've previously attended the Tour of California, a new professional cycling race that is now entering its third year. It combines my established love of California with my growing love of cycling. In previous years, my Dad and I have enjoyed chatting about the race as it unfolded; this year, his schedule worked out such that he was able to come out and watch the race (at least the first portion of it) with me.

Dad came out on Friday, arriving almost half an hour early. He left Illinois when it was cold and snowy, and emerged from the plane into a brilliantly clear and warm California day. We swung by Twist Cafe for lunch, a nice little French cafe that I've wanted to eat at but never have. Well, not exactly. I ordered the Tri-Tip Sandwich, which believe it or not I've been desiring for about two years. We had a leisurely lunch and chat, then he got to chill in my apartment while I wrapped up the work day. As a bonus, I discovered that the contractors had fixed my porch door, thus allowing me access to the outside!

Among the many reasons I enjoy visitors, it gives me a chance to try out some food options that would be tricky to cook for myself. I had my eye on two recent recipes from Cook's Illustrated: Chicken Saltimboca and Fluffy Yellow Cake. The cake (with chocolate frosting) is my favorite cake, and has been since my childhood, though I have only had it from a box mix; the Saltimboca just sounded really good. My attempt at the cake was prematurely thwarted. Can you believe that neither Whole Foods, Trader Joe's, nor Safeway carries Dutch-process cocoa? Yes, granted, until a year ago I wouldn't have even known what that was. Still! It annoys me. I had to shelve their chocolate frosting recipe, and without the frosting there's no sense in making the cake.

The Saltimboca was a go, though. I had to make my own cutlets, but even with that it was relatively simple to make. The end result is really rich, though: sage-infused chicken wrapped with prosciutto and topped with a lemony wine sauce. We paired it with simple roasted butternut squash puree and persimmons. Good California eating! For dessert, we worked our way through some oatmeal cookies I've stashed away.

The race wasn't starting until Sunday, so we had all of Saturday to play. Dad was game for hiking, so we journeyed out to Henry Coe park. This is probably my favorite park in the area, but it is far enough that I don't make it there as often as I would like. It's been in the news lately due to appearing on Governor Schwarzenegger's list of proposed parks to close. That would be a travesty... it's one of the most beautiful parts of a beautiful state.

Anyways! I sort of cobbled together a hike from a few routes I'd taken before. We hit the Corral Trail out from Headquarters, then did the Forest Trail. I'd just recently done this trail, but I think it's a perfect orientation to the park and California nature in general... it really is a microcosm of the species and principles you'll encounter. From there we hiked all the way down Poverty Flats Road, which isn't nearly as painful as hiking UP it, as I've done every other time. The highlight of the hike was an ascent up Middle Ridge, a steep elevation gain but one that afforded us some wonderful views, including some soaring eagles and even more impressive views.

Saturday night and every other night, we continued the March Through Chris's Freezer o' Leftovers. This time it was Hearty Tuscan Bean Stew, another CI dish. Baked potatoes and more persimmons filled out the meal.

Sunday is race day! After a visit to Menlo Park Presbyterian, we hopped several blocks east to Palo Alto. I haven't spent much time there, but have visited twice in the last several months, and so had a decent feel for the layout. We parked in a lot and wandered downtown. Even though it would be nearly three hours until the race started, several hundred people were already walking the streets. We had plenty of time to explore the city and the university, which I gleefully took advantage of, finally getting to see the Rodin Sculpture Garden and other points at Stanford. For lunch, we got two of the tastiest gyros ever (vegetarian/falafel and beef+lamb) and ate them while sitting on a sun-soaked curb, cheering riders in the Mayor's Charity Race.

The Prologue was a good chance to catch individual racers up-close during their time trials. We wandered up and down the length of the route, which stretched from downtown to the Stanford oval. Last year I'd cheered for Bryce Mead on his ascent up Telegraph Hill; this year, Dad got to holler "ABD!" when he approached the starting line. I'm regularly impressed by how close to the racers you can get at these things.

The race wrapped up a bit after 3. Levi didn't repeat his earlier win, but had a very respectable finish. The crowd was generally appreciative.

Speaking of which, I was impressed by the turnout. This is the first year that Palo Alto has been involved in the Tour, which has started up in the City the last two years. Because of this it doesn't have the sort of history established that other cities have, and I'd expect turnout to be smaller. It's hard to judge the size of crowds, especially when they're as spread out as they are for a race, but I thought it was pretty comparable to what San Francisco saw. Even better than the size, people throughout the week were enthusiastic and appreciative. I think a lot of people are like me and only vaguely aware of the intricacies of the sport, but we still enjoy it greatly.

Almost from the time I moved out here, I've wanted to visit the Stanford Theater, a restored classic movie theater. We lucked out, since Dad's visit coincided with their Hitchcock festival: two and a half months of movies covering the entire span of his career. My tastes are fickle, but I usually count Hitchcock as one of my three favorite directors of all time, along with Gilliam and Kubrick. Anyways! Sunday night's film was Spellbound, which I hadn't seen before. (Random note: on the rare occasion I blog about films, I think I'll start linking to Wikipedia instead of IMDB. IMDB has seniority, but I've never really liked their site design, and their advertising is increasingly annoying. Now that Wikipedia's just as informative, they're my new go-to for movie info.) It was a great movie, more in line with The Man who Knew Too Much than Psycho. Let me emphasize that: it was a GREAT movie. It seemed specifically designed to appeal to me. Dream sequences? Designed by Salvador Dali? First use of the theremin in a film? Madcap psychologists? It's all in there, baby!

As a bonus, after the movie we got to enjoy a few pieces performed live on the Mighty Wurlitzer organ. Good times!

Dinner Sunday night: a white chicken chili.

Monday, President's Day, was a free day off work, the first stage of the race proper, and the start of our rumspringa. After my near-disastrous experience in Sausalito last year, we got an early start to the day, working our way down the steep roads a good hour or so before the start. After evading some surprisingly rude drivers, we snagged a parking spot by a church and walked down to Bridgeway. One of the reasons we had come early was to attend the Bike Expo, but it was a bit of a let-down... just some repackaged booths that we had seen before, set under a big tent. After making the rounds we struck out for Caledonia, where they would be making several parade routes.

We semi-accidentally stumbled onto the eastern edge of Caledonia and established ourselves one block west of the turn. It was a phenomenal position, the first of several we would get... we got to see the riders as they came down on Bridgeway, then again seconds later after they rounded the tight turn into Caledonia and accelerated towards us. This was repeated several times, allowing for multiple shots with the camera as well as ample cheering opportunities. Feeling the peleton rush by is, well, quite a rush!

Our next destination: Santa Rosa. While the cyclists would work their way north along Highway 1, we took the speedy shortcut along 101, where we made pretty good time into Sonoma County. We arrived in Santa Rosa with plenty of time to spare, then squandered it when I drove around semi-aimlessly looking for parking. I'd latched onto a fragment of a sentence on the Santa Rosa race web site describing parking at "The Fairgrounds", failed to locate it, then killed nearly an hour while getting lost. In retrospect I should have just grabbed a spot at a garage... it would have been cheaper than the gas I burned going in circles. We missed the Women's Criterium (except for a brief glimpse while waiting for the Longest Left Turn Arrow in the Universe), but after parking and catching Rosie the Trolley, we still arrived with ample time. The crowd here was just enormous, probably the largest and most enthusiastic of any city we would see. We realized there was no way we'd see anything near the finish line, but by moving just a few blocks away we scored yet another killer location, immediately after a hard right turn on a final loop through the city. I steered us towards Traverso's for lunch, and was shocked - shocked! - to see that they were closed. On President's Day! It was a blessing in disguise, though, since that steered us towards some very tasty Chicken Tikka Masala served by a smiling vendor outside a "Curry in a Hurry" store. Warm, filling, and utterly tasty, it came with generous saffron rice and naan.

We could tell when the riders were approaching by the enormous roar that came from the crowd. Soon - poof! - the racers where in front of us, pumping furiously. In a moment they were gone, but the vocal appreciation continued.

After the stage finished, we worked our way towards the podium for the awards. We couldn't see much, but did get to hear all of the jerseys awarded and the overall standings. Even though Levi wasn't on top this year, the crowd was still into it, applauding all the riders for their work.

We ambled back to the intersection of Santa Rosa and Sonoma, where we caught the last trolley of the day. Next we headed towards our hotel, the Flamingo. It's an interesting place! The staff were friendly, the facade fascinating, and our room was really comfortable. As a strange bonus, it included a second, unadvertised bedroom/closet with two narrow beds laid head to foot. It was useless to us, but would have been perfect on a family trip.

We were both pretty tired - Dad from lack of sleep, me from driving - so we chilled in our hotel the rest of the night. The exception was dinner, which we selected after one of the longest (albeit most pleasant) food deliberations I've had outside of conversations with Pat. After considering and evaluating a half-dozen possibilities, our own tastes, level of hunger, and aptitude for travel, we settled on Hank's Creekside Restaurant, which was across the street. And, it turns out, closed. D'oh! But, simply by re-crossing the street, we landed at Lyon's, a classic diner from the 1950's. It was a supremely comfortable place with surprisingly good food. I had a reuben sandwich with potato salad, Dad took an interesting Southwest salad.

We liked Lyon's so much that we hit it again for breakfast the next morning. I stayed boring and took a combination of French toast, fruit, and a small Denver omelet, while Dad got a more substantial mushroom omelet. Thus fueled, we stepped out into the rain and headed east.

Since we had caught both the beginning and the end of a stage by now, we wanted to next see the middle portion of a race. The best-looking candidate was the first King of the Mountain, located at the peak of a grueling climb up Trinity Grade. The steepness of the mountain would break up the peleton, giving us some drama, as well as a slower pace by the riders so we could see them more clearly. Neither of us had any idea how early we should get there, but since racing was at the top of our agenda, we got an early start and headed right there.

I'm glad that we did. Even though it would be a few hours before the riders came, several people had already staked out their spots along Trinity. I was tempted to join them, but from our careful examination of the race route (thank you, iPhone!), I knew that our best shot was to push on towards Cavedale. We arrived, pulled a little bit forward to park the car, and then had a short walk back to the KOM. An intermittent drizzle was keeping us cool as we settled in to wait.

It was a very different environment and crowd than the cities we'd been in before, but was probably even more entertaining. We watched in disbelief at the vehicles that were attempting to navigate the narrow, twisty mountain roads, and chatted with fellow spectators who were following the race. By now we were out of the weekend and out of the holiday, so casual fans had gone back to work and the dedicated ones remained. We talked with a photographer who had come down from Oregon to watch; others had come from as far as Denver or even Virginia. The ToC is really establishing itself, and it's very cool to see it becoming a real destination race.

Throughout the wait, riders regularly pedaled their way up the slopes. I was and remain very impressed. I have only limited experience with steep climbing, and am always thwarted in my attacks on Hicks Road, so I can really appreciate the great physical strength it takes to tackle these insanely steep roads.

The size of the crowd swelled, lining all parts of the road several layers deep. We had arrived early enough to land a prime position, on the outside of the sharp left turn at Cavedale. People were up on the slopes, climbing trees, even perching on top of a Winnebago. Eventually, they closed down the road, and then the only traffic we saw consisted of Tour vehicles and cyclists.

A Toyota van came by and handed out noisemakers and chalk. I inscribed my section of pavement with the sigil of the Illuminati. An SUV equipped with loudspeakers then pulled in - in a great and classy move, the Tour was sending announcers in advance of the riders. He filled us in on the story of the day - how Scott Nydam was making a solo attack, being chased by Jackson Stewart, also riding solo. Now, Dad and I were actually abreast of this (thank you, iPhone!), but almost nobody else would have known it. Anyways, it was just very generous of them, and helped keep the spectators pumped up and informed.

Scott eventually pulled up to a rousing set of cheers. There was some good theater going on - two runners, each carrying a California state flag, ran alongside him for the last fifty meters or so up to the KOM. With thunderous applause, he claimed the prize and pushed on. Later we would learn that he went on to win all the bonuses - both KOMs and both Sprints - although he would finally be caught before arriving in Sacramento.

There was plenty more racing to watch before that, though. We gave Jackson just as big a hand when he came through... what he was doing was every bit as difficult as Scott. After him came the mass of riders, then a few stragglers picking up the rear. After the broom wagon moved through, the party broke up and we headed back to the car.

I really enjoy driving in the mountains, and had an especially fun time coming down Cavedale. It's really a one-lane road that happens to have traffic coming in both directions. And is really twisty, steep, and has pavement in poor condition. Awesome driving! We swung back to Santa Rosa, where we refueled at a nifty little pizza place I found on Yelp called Rosso Pizzeria. It was pretty expensive, but REALLY tasty, a true gourmet California pizza place with unusual toppings made from local ingredients. I had a pizza with creamy roasted garlic, fresh mozarella, spring onions and caramelized onions; Dad took a meatier and even tastier pizza. We enjoyed a leisurely and peaceful meal before coming back to hit the road.

For variety's sake, I took an alternate route home suggested by Google that took us on 580 over and down the east side of the Bay. This included my first trip on the Richmond-San Rafael bridge, bringing my total number of crossed Bay-area bridges up to 3. We just flew down the bridge - granted, it was in the early afternoon so of course traffic was light, but I was still impressed. Compared with the Bay Bridge, which has five traffic lanes in each direction, this has only two. Also, I didn't see a tollbooth anywhere. Maybe it's all FastTrack-only? Anyways, it was cool to catch yet another part of the area. Our trip down 980 and 880 was uneventful, although we did get to appreciate the nice green Diablo hills.

Arriving back in San Jose in the middle afternoon, we had ample daylight left, and decided to hit the Museum of Art downtown. I hadn't been previously, so it was fun to finally get inside. I'm glad I went... it isn't a really impressive museum on the same order as SFMOMA or the Art Institute in Chicago, but still has a good collection of contemporary art that focuses on works by Californian artists. My favorite was probably a piece by a Los Angeles artist depicting a street corner in Santa Monica as seen from the air. There were also some really interesting pieces, including a video installation of a breathing rose and a foreboding photograph of row homes abutting a rail line.

There were two special exhibits running, organized around a common theme of sketches. The first, and for my money more interesting, was Goya's Caprichos. This was a collection of engravings he did, often featuring grotesque and disturbing images. Each was presented with commentary that gave different interpretations of the work. Many of the caprichos gave thinly-veiled criticism of the church, while others attacked royalty, attitudes towards women, child discipline, and more. The overall effect was quite dark, but I found it fascinating.

The second collection was of Picasso's love sketches. These were all non-representative drawings, generally of nude women, often in scenes of desire. It was cool to see another side of this incredibly versatile artist's output, but at the same time, they often felt dashed-off... the overall effect was a little bit like listening to a studio outtake from a favorite musician. It's cool to get more insight into how the creative mind works, but the piece doesn't stand on its own as well as the studio album.

And then, home! Tuesday was yet another relaxing evening. We capped off the Journey through Christopher's Freezer with some reheated French Onion Soup. That night I introduced Dad to the wonders of The IT Crowd. A lot.

Wednesday the race would run from Modesto to San Jose, but Dad's relatively early flight meant he wouldn't be able to catch the finish. The day was far from wasted, though. We both caught up on some of the sleep we'd missed earlier, had a leisurely breakfast of Swiss oatmeal, and headed out for a final walk. We went to the Don Edwards preserve, another bayfront park that I hadn't been to before. Evidently, this was the first urban refuge in the United States, and its facilities are quite nice. The five-mile walk we had our eyes set on, around the Slough, turned out to be a no-go... part of the trail was torn up for restoration. We took it for a mile or so, admiring both the pretty views and the shocking slag bordering the water. We picked up the Tidelands Trail for a loop back to headquarters.

In-n-Out isn't mandatory in the same way that Southern Kitchen is, but it's highly recommended for out-of-staters, and so I was happy that we got to hit one for lunch en route to the airport. I introduced Dad to fries Animal Style and to the hidden messages on the packaging. From there, it was a smooth and short drive to good old SJC, where I reluctantly put him on a plane back home. We're already thinking about future Tours.

Postscript: I did make it to downtown San Jose to catch the finish, and was happy to do so. The crowd wasn't as large or loud as in Santa Rosa, but again, considering this was a workday afternoon, I was impressed by the turnout. They did a great job of announcing the race on its way into town, and it was my best shot yet at getting close to the finish line. It had a dramatic finish, with Levi tailing another rider into town, winning second place for the stage and vaulting into the yellow jersey for the first time in 2008. We do love our stars, and Levi is an easy person to love. Let Levi ride!

Wednesday, February 13, 2008

What to Eat? It depends on whether you are a cat...

I won't even pretend that these two books are related at all, so I'll just jump into this post.

First of all, I recently wrapped up Michael Pollan's excellent In Defense of Food. I've blogged occasionally here about my growing nerdy obsession with food and cooking. This book acts as kind of a capstone to my gradual transformation into a Bay Area foodie: it reaffirms a lot of the habits that I've accidentally slipped into, gives me encouragement, and frees me from feeling like I need to worry about what I'm putting into my body. It does all this while presenting an occasionally funny but always strong criticism of "nutritionism," the modern tendency to focus on the invisible ingredients in our food that we don't understand.

Backing up a bit:

To date, the book that has had the biggest impact on the way I eat and how I think of food has been Marion Nestle's What to Eat. Like most people, prior to that book, my food information came from one of two sources. First came the explicit, though often confusing and contradictory, reports in the news. "Eggs are good for you!" "No, they're bad!" "Fat will kill you!" "Carbs are worse!" "You need more fiber!" "You need more Omega-3s!" "You need more beta-carotene!" I would read this, sort of shrug my shoulders, and go back to eating whatever I was before, not changing my habits but acquiring a nagging sense that I was doing stuff wrong.

The second source of food information comes from my family and friends, which tends to be more implicit and consistent. These lessons were more along the lines of, "Vegetables are good for you," "Don't eat too much dessert," "Don't drink alcohol." I followed these precepts (sometimes grudgingly) when living at home, later abandoned them, and find that they continue to define a part of how I feel like I "should" be eating.

Marion Nestle's book demystified... well, everything. Much of it probably counts as common sense, but for me and many other young people, that common sense needs to be learned again. I still think that her introduction should be required reading for all public schools. She explains how many calories is equal to a pound, how to healthily lose weight, why weight is important, and replaces the incomprehensible panoply of conflicting dietary guidelines with a brilliant, memorable, and effective mantra: "Eat less. Move more. Eat lots of fruits and vegetables." If you follow those three principles, everything else automatically falls into place.

Those few pages were great. The rest of the book was fascinating as well; her technique is to walk through a supermarket, with each chapter devoted to a typical aisle (breakfast cereal, juice and soda, baby products, etc.) and her analysis for how to navigate it effectively. It was all great stuff, and it had the ultimate effect of pushing me to follow her guidelines of shopping at the edges of the store - produce, meat, and dairy, far away from the processed prepackaged morass in the center.

That was just part of the story, though. Even before picking up the book, I'd started to patronize the Campbell farmer's market. At first I would pick up my lunch fruit and a few vegetables, along with the occasional pastry or fresh fish. They were replacing the canned foods that had been a sizeable part of my diet previously. Over time, though, a larger and larger slice of my dining has come from the market; increasingly I'm making mains out of their products, or growing the vegetable while shrinking the main. Best of all, this change isn't being driven by guilt or a well-defined drive to be healthy - it's because shopping the market is fun, interesting, and really tasty.

So, the progression in books from What to Eat to In Defense of Food seems to match my own personal progression. Without really noticing it, I'd been moving increasingly towards more locally grown fresh produce and spending increasing amounts of time preparing and cooking meals. It turns out that this was Pollan's plan all along!

Pollan has been writing for a while, but first rose to prominence with his recent book The Omnivore's Dilemma. In this book, he didn't just attack the typical American diet and fast food: he also swung his guns towards Whole Foods and the organic food movement, charging that organics have been subverted and are often more harmful than conventionally grown produce. How can this be? Compare a locally grown vegetable to some organic asparagus that was grown in Chile and flown to the US. The fuel involved offsets the environmental benefits of organic growth, while the mileage involved offsets any gains in taste. You are left with an expensive plant that makes you feel better without really doing anything for health or the environment.

The Omnivore's Dilemma caught people's attention, much like Nestle's earlier Food Politics; like Nestle, he was then confronted with a litany of people asking him, "Well, I see the problem, so tell me: what SHOULD I eat?" He did so, first in a New York Times Magazine article titled Unhappy Meals, and eventually in this book. As with Nestle, Pollan organizes his book around a simple mantra: "Eat food. Not too much. Mainly plants." ("Now, with 70% wordcount!") Their mutual affection seems clear when reading this book, but his background and aims are a bit different from her. Nestle is a talented nutritionist who has grown suspicious of her colleagues' obsessions. Pollan's background is in gardening and agriculture, and while Nestle is mainly interested in the link between food and health, he likes to look at the whole cycle: from soil to plant to animal to human to culture to planet. This means that, on the one hand, his book spends less time on the immediately practical question of what you should be eating. However, it also is more broadly interesting, and prompted me to think about some aspects that I had never considered before.

For example: in many studies of aboriginal populations, the absolute healthiest people belonged to cultures that primarily consumed meat, milk, and blood. We tend to think of modern food as being an unprecedented shift from traditional eating, but that "traditional eating" which started in the agricultural revolution of prehistoric times led to all sorts of health deficiencies that our species has only recently adapted to.

I'm distracting myself from the main point of his book, which is: the Western diet is killing us, and nutritionism is making it even worse. This isn't alarmist; rather, it is anti-alarmist. He goes through 150 years' worth of health claims and scientific studies, showing how we've been wrong every step of the way about which food components were good or bad. He also shows that, throughout this entire time, people who ate traditional diets of food (as opposed to "foodlike substances," my favorite phrase in this book) lived relatively long and healthy lives, while anyone pursuing contemporary nutritionist advice would sooner or later be confronted with an unpleasant reversal.

This argument is persuasive, and liberating for several reasons. First of all, like Nestle, he stresses that the big points (eating real food, minimally processed, from plants) are what you should focus on, while not being overly concerned about the dietary concern of the year - though, like Nestle, he does make an exception for trans fat, which is largely of our own creation - and, as they both point out, a food that for years was thought to be "healthy" by nutritionists. Even that, though, won't be a concern if you're mainly eating plants.

Secondly, he says that you should consider eating a traditional diet. Which one? It doesn't matter! Italian, Greek, Japanese, Mexican... as long as you're eating the way they've been eating for hundreds of years, you'll be fine. Cultures would not have survived and kept going if these diets were unhealthy. We may not currently understand why they're healthy - the French diet is often cited here - but the empirical evidence of millions of people over hundreds of thousands of years is far more compelling than any run-of-the-mill industry-funded study.

As Pollan points out, the context in which a meal is eaten - its culture, the way meals are paced, how a society relates to food (the French, for example, don't snack between meals and don't eat second helpings) - is just as, and maybe more, important than the meal itself. His book closes on a brilliant and powerful note, stressing that we've lost sight of the point - food is meant to be enjoyed and savored. I intend to do so.

I cruised through In Defense of Food, taking just under 48 hours from start to finish. It interrupted my progress through my latest Murakami journey, Sputnik Sweetheart. For some reason I'd been under the impression that this was his first novel, though I learned that was not so - he wrote it in 1999, long after his career began in the late 70's. This isn't a complaint, just an observation.

The book starts out rather slowly. Murakami is a beautiful writer even when nothing much is happening, and at times it felt like he was trying to prove that. He introduces us to his female protagonist, his male narrator, the female love interest, and the way in which they interact. It's all very languid, filled with wonderful analogies and long, drawn-out dialogs. While I enjoyed it, it didn't exactly possess a gripping narrative drive, and I felt free to put it aside for days at a time.

Things start cranking, but not until nearly the halfway point of the novel. There is finally some physical movement, the action jumps halfway around the world, and the narrative is broken up with some more innovative (though not original) devices. There was one particular point of the book where I got an intense burst of deja vu and a strong, creepy sense that I had read this before. I eventually realized that I had, only months earlier: the short story "Man-eating Cats" from Blind Willow Sleeping Woman contains an identical scene, and as the novel progressed, I realized that it was in many ways a reworking and extension of that story. This was far from obvious - again, I didn't make the connection until halfway through, but once I did it was impossible to ignore.

This gave me a better chance than I ever get to compare the short story as a form with the novel as a form. While crucial details about the plot are different, so much was shared that I could almost eliminate the story as such from comparison and look at how each worked.

To wit: the short story felt MUCH tighter and more compelling. He grabs your attention in the first few paragraphs with the same anecdote that eventually got my attention a hundred pages into Sputnik Sweetheart. The background that took those hundred pages to develop in Sputnik Sweetheart is condensed to about a page in "Man-eating Cats." What do we gain in those 99 pages? Mainly the pleasure of seeing a fine writer showing off: great turns of phrase, vivid scene-setting, ruminations on human nature and philosophy.

However, after we crossed that halfway point where the stories slid into sync and I could anticipate what would happen next, I was surprised to realize that I was actually finding the novel more interesting. While the short story was brief, it was not intimate. I didn't really feel connected with either of the main characters, and while watching what happened to them was interesting, I was reacting more to the events than the people. In Sputnik Sweetheart, just by virtue of spending more time with these characters, I had become invested in their lives and passion. As the stories moved along, I felt an extra layer of dread or excitement as I anticipated the twists that I knew were coming.

Hmmm... actually, a good analogy might be a movie adaptation of a Stephen King short story. Film-makers will add some stuff to flesh it out, and while a one-sentence summary of the plot will be identical to that of the printed version, the overall feel and message of the film may be very different.

After a while, the stories diverged again. The short story just ends, at a particularly lonely and jarring moment, while the novel pushes onwards. I hesitate to talk about "typical Murakami," but in "Man-eating Cats" I felt like Murakami's world was lurking in the background, silently pulling the strings and slowly unspooling this vaguely frightening situation. In Sputnik Sweetheart, that world actually becomes visible, and you can directly see some of the forces at work, even if you can't understand them.

The more I think about it, both works ultimately explore a theme of loneliness. This is probably more poetically expressed in Sputnik Sweetheart - I keep returning to the lovely, chilling mental image of our souls as satellites, orbiting the world, beeping out our feelings but receiving no warmth in return. In "Man-eating Cats," it is expressed more starkly... almost as if a rug is suddenly pulled away, revealing the vast gaping hole that lies underneath.

Altogether, I thought this was a fine book. I'm glad I read it after Blind Willow, Sleeping Woman - it's the mark of a great author that, when you read their stuff a second time (in whatever form) it becomes better. I'm still motivated to seek out one of his true early works. Judging from Wikipedia, Murakami's first novel available in the US was Pinball, 1973. (Available for just $400 on amazon.com!) The first one that seems fairly well known, though, is Hard-Boiled Wonderland and the End of the World, which as a bonus has an awesome title, so that may be the next one up. As usual, I want to take a break first - I feel like a kid in a candy store, and want to save some Murakami to treasure in the years to come.

Let's see, what else? Oh, let's jump to the semi-embarrassing confessions. You know that writer's strike that just finished? I'm blaming that for the fact that I've been watching Terminator: The Sarah Connor Chronicles. I've never been as into this franchise as my peers. I remember T2 being a huge deal in my youth, but there was no way I would actually see an R-rated movie. It was one of those weird things where I picked up on all the cultural impact of a movie - "Hasta la Vista Baby," the sunglasses, the idea of morphing - without seeing a single minute of it.

I wouldn't actually watch Terminator until the summer of 2001, when I did a promotional Blockbuster program that let me watch a ton of movies for practically nothing. Watching Terminator 1 and 2 almost back to back, I came to the startling realization that I might be the one person in the whole world who actually thinks that the first movie is better than the second. Why, you ask? First of all, they're very different movies, and the grim Philip K. Dick-esque view of the future we get in the first movie appeals to me more than the violent, high-octane acrobatics of the second one. I also thought that the plot in the original was really clever; the second one has a quite good plot for a sci-fi movie (I especially love the mental institution aspect), but didn't grab me in the same way. Finally, John Connor is just amazingly annoying in the second one. I tend to dislike child actors in general, but he especially bothered me.

I saw T3, and remember almost nothing about it. It was fine, but didn't stick in my head the way the first two did.

So why would I watch the series? Four words, two sentences. Summer Glau. Writer's Strike. Any questions?

My favorite things about the show:
  • Summer Glau
  • Music - love that theme
  • The way all authority and most morality is stripped away in light of the impending holocaust. For example, they beat up innocent people to steal their vehicles, and you cheer for them.
  • Surprisingly clever writing. "Is that nuclear?" "No. Not really." Cameron seems to get the best lines.
  • Have I mentioned Summer Glau?
My least favorite things:
  • Sarah Connor looks too young and isn't that great an actress.
  • After twenty years, they've broken that cool real-time chronology thing they had going.
  • After just a handful of episodes, I'm sick of hearing "You're not ready to fight!" "We need to fight!" They should stop complaining or just beat people up. Watching people bickering is not entertaining.
  • I feel like I'm watching a 1980's Magical Computer plot. "Oh no, where are they going?" "Hang on for five seconds while i hack into this computer! Okay, now I have a fancy map displaying everyone's exact location and identity!"
  • In general, not addressing the technology phobia that is at the heart of the franchise.
The biggest thing I'm ambivalent about: John Connor. A lot of people say that he's too whiny. I think this is true, but he also is about 800% less annoying than in T2, so I'm willing to cut him slack.

Lost has started back up again. I'm loving this season so far. I feel like after suffering through season 2, the creators have rewarded me for my patience and started giving me a good show again... the second half of the third season was some of the best to date, and so far the fourth looks like it may be even better. The deeper they move towards the mystical heart of the island and explaining its relationship with the world, the more excited I become.

House is going strong as well. Nothing yet has topped the great arc from the first half of the season, but the few episodes so far have been good. I'm regularly impressed at their ability to pull out new situations and diseases, even after four seasons on the air. The most memorable yet was one where the victim is a psychiatrist in Antarctica, and they have to communicate over a video hook-up. (Which, by the way: isn't there supposed to be a really long lag on those things?) It reminded me of the great episode last season where House diagnoses a plane full of sick passengers... he gets out of his environment and needs to use imperfect tools to examine a problem.

They're now saying that, thanks to the strike, we won't catch the second half of the new Battlestar Galactica season until 2009. Frack!

The strike has also moved me back into the habit of watching The Colbert Report and The Daily Show. These got shoved off my schedule after I added too many dramas, but now they've back and surprisingly entertaining. The Colbert Report has been particularly sharp. I also think his interviews have gotten much better than they were when I was regularly watching during the first season; or maybe I'm just more used to their awkwardness now; or maybe guests have gotten better at playing along. Anyways. They've helped me keep my sanity during the primary season, and while I'll probably dial down my viewing time, I'll need to remember to occasionally check in.

I'm letting two magazine lapse: Newsweek and the New York Review of Books. The former because it is shallow and reductive, the latter because it is way too long and compelling... if I read every review that looked interesting, I'd never have time to read any books. Both were freebies when I pledged to KQED/NPR last year, so I don't have any regrets about receiving them, but neither will I really miss them. (I probably will occasionally seek out the New York Review online.)

More media! How about games! I've kind of been looking forward to playing a new generation of PC games, but since I'm in the middle of some console stuff, it will need to wait a while. I did, however, download the free Valve pack for nVidia owners. It contains a few small things, including an extended demo of "Portal," which won some awards last year. I've been really surprised by how good this game is. It's the same kind of revelation I felt when I first played Half-Life in 1999. Up until that point, all first-person games (well, almost all) had been brain-dead twitchfests: you ran around, shot the demons, and got bigger guns. This had no appeal to me at all. With Half-Life, that technology was finally put in service of an actual game, with an actual plot. Moving away from a pure combat focus (you didn't even get your first, primitive weapon until several minutes into the game), the emphasis of that game was on exploring your environment, solving puzzles, and figuring out just what had happened that day in Black Mesa.

Portal continues that proud tradition of reclaiming the "game" portion of the FPS genre. In doing so, it may breathe fresh life into the benighted adventure game genre. The puzzles in that game felt far more real and interesting and, above all, rewarding than anything from the later years of Sierra. Even better, it has a surprisingly keen sense of humor.

On the console front, I'm making good progress through Final Fantasy XII. I took break for several weeks from the main plot, instead focusing on side-quests and hunting for marks. Tonight I finally picked back up the story with a jaunt to Giruvegan, and was pleasantly surprised by how much quicker and more fun this is than the struggle I was having before. I feel like I'm closing in on the endgame now.

After this is done, I want to check out the latest build of Fall from Heaven. Andrew's been tantalizing me with all the cool new stuff Kael and his friends have added... I can't wait to try it for myself. I'm thinking of repeating my original run as the Kuriotates, but maybe I'll finally take the plunge and try playing an Evil civ for a change. I must admit, the vampires sound fascinating.

Beyond that? As with books and movies, there are always more games that I want to play than I will be able to. I want Bioshock, and the Orange Box, and Oblivion, and Mass Effect. The best news of all: Spore finally has a release date - September 5th in Europe, September 7th here. For years they've held the line against rabid anticipation and held off on making any promises, so for once I feel optimistic about a highly desired release.

That's it for now! Oh, and I'll be taking in the first part of the Tour of California this holiday weekend - if you're interested in cycling and live in California, check it out! It's a great time.

Monday, February 11, 2008

The Hidden World of Title Text

I recently made a cool and unexpected discovery. For a while now I've been a big fan of XKCD, a webcomic of romance, sarcasm, math, and language. However, I just did not get last week's comic. It felt a little like reading a confusing Far Side, where I feel baffled, and also a bit frustrated with myself because I usually do "get" these comics.

When poking around online for an explanation, I discovered a forum post dedicated to this particular comic. This cleared up the joke for me, though I think this is one of the rare XKCDs where more complete art would have helped in the last panel. However, what caught my eye was a line below the image labeled "Alt text:". Could it be?!

Yes! I jumped back to the main XKCD side and hovered my mouse over the comic. Eureka! Up popped a lovely little tooltip with a little joke related to the comic! Intrigued, I started flipping through the archives. Sure enough, every single image in there had its own little additional hidden punchline. Sometimes this was even funnier than the main comic, which was great to begin with.

This is a really cool technique. I actually saw it about a year ago at Dinosaur Comics, but it's rare enough that I am not at all in the habit of hovering my mouse in the hopes of getting more text. Back in the days when I maintained my personal website, I did a similar thing, although I did it via the "alt" attribute (which is intended for screenreaders and the like) instead of the "title" attribute (which is intended to give contextual information, like these do). DC and XKCD are kindred spirit webcomics, so it feels great to share a common movement with them.

While I enjoyed my rejuvenated tour through the archives, I was disappointed to find that on some images, the whole tooltip wouldn't display. Instead, the end would be clipped off and only an ellipsis would show. I found that you could see the whole text only by choosing "View Source" and digging through the HTML, or right-clicking on the image, selecting "Properties", then expanding the size of the window so you could read the entire text. What a pain!

Firefox is really good about allowing users to adjust browser settings, so I thought that there might be an about:config option for this. No dice... browser.chrome.toolbar_tips controls whether the tips display, but there was no setting I could find that would expand the space available for the tooltip.

This seemed curious to me - surely I wasn't the only person who thought this was bad behavior? I started Googling, and before long my search brought me to the official bug report. As I read through it, my heart sank. I am a fervent believer in the virtues of the open source movement: greater transparency, better testing, higher-quality software, more responsive to user's input. What I was seeing on display was a travesty of how the process was supposed to work. For starters, the original bug (which focused on an older, but related, display problem) was filed back in 2000 - yes, Mozilla/Firefox has had this problem for almost eight years. Does not inspire much confidence, and is something I'll need to remember the next time I'm tempted to bash Microsoft for spending years to develop an inferior product. Even worse than that, though, was the vile, hurtful things that Firefox developers were writing in the comments. Some users were being rude as well, unfortunately, but their actions do not reflect badly on Firefox, while those of the programmers do.

I love open source. I enjoy using its products, but I also enjoy going through the source (tangent: for a fun time, grep the Linux kernel source for swear words - you'll be surprised by what's in there) to figure out how it works. I've also written and submitted patches before - it's a curiously exhilarating feeling to see a piece of code you've written take wings, join the contributions of dozens of other people, and be used by many as a free product. That said, after reading through these comments, I feel strongly disinclined to do anything for Firefox. If this is the way their developers conduct themselves, I have no desire to join their ranks.

I think the saddest thing was a post by Ryan North, the beloved (by me at least) author of Dinosaur Comics. Yes: he cared enough about his readers and this browser to seek out the problem, and in a friendly and pleasant way explain why he thought this problem is worth fixing. The result? A developer insulted his intelligence and swore at him.

So this is a sad tale for me. I feel a little like a free speech advocate at a KKK rally, or a war supporter touring central Baghdad. I still believe in the cause, but am dismayed by the actions carried out in my name.

This tale does have a glimmer of happiness at the end, though. After eight years of alternating silence and vitriol, the Firefox developers have accepted a patch that was contributed years ago and that fixes this seemingly simple problem. Of course there's a catch - the fix has only been made in Firefox 3, which won't be released for quite a long time. That means all of us users will need to suffer in silence, or live on the edge by running unstable, bleeding-edge versions of Firefox.

But wait! Where the official project fails, the community comes through. Thanks to a wonderful individual by the name of Xavier Robin, there is now a Firefox plugin to display long titles. Adding it is but the work of an instant (plus a browser restart) and when it is complete - poof! XKCD, Dinosaur Comics, and other citizens around the web will proudly speak to you, free from the confines of the official buggy Firefox program. So I guess there still is reason to have faith in open source. There are good developers out there in addition to talented developers, and their quality shines through.

I'm a little slow sometimes

Ohhh.... now I get it! Several years after reading Neal Stephenson's Zodiac, while driving to work and listening to a completely unrelated NPR station, my mind started to wander, and I suddenly got a major joke in the book. Pöyzen Böyzen is a heavy metal band! As in... heavy metal. You know, like the toxins that Sangamon hates.

You'd think that an intelligent person who had studied English Literature would have made this connection long before.

Thursday, February 07, 2008

Droids and droids!

For the second time in as many weeks, I was driving north on 85 to the Googleplex, lured by the promise of free food and insight into the Android platform. This event was held by the Silicon Valley Google Technology User Group; I'm not familiar with them, but they seem to be a new group with loose ties to Google proper. Unlike the earlier Campfire session, this was a slightly larger affair, a bit more structured, and felt less under-the-radar.

200 people had registered for the event, and a good chunk of them showed up. We were in the Tunis room in building 43 - a different location from Campfire, but the same place I went about half a year ago for the forum on mobile advertising. Food wasn't as interesting as at the Campfire, and there was no open bar this time around, but it was more of a meal - various kinds of pizzas, lasagnas, and a green salad. The meet and greet lasted from 6 until 7, and we'd been warned by email to arrive early to avoid long security lines, so I had close to an hour to kill before the talk officially started. I got into a nice chat with Julian and Richard, two other attendees who had recently started work on Android. They haven't done a lot of mobile development in the past, so I got to put on my explainer hat for a while... I still hesitate to call myself an "expert," even after three years in the field, but times like this make me amazed at how much more I know now than when I first started this gig. I feel like the more I learn, the more I take that information for granted, and erroneously assume that everyone knows it. Shades of the "Curse of Knowledge" from Made to Stick, I suppose.

There was a round of early introductions that clarified exactly who these people were and how the night would be structured. I realized that the people running the event were not Google employees, but the main speaker was. I'm embarrassed to admit that I am not familiar with him; it sounds like he's a pretty big player in the Java world. Anyways: Dick Wall runs with the Java Posse and is currently working for Google... I THINK he's one of their Developer Advocates, but I could be confused about that, as I will explain below. Bonus: he's English!

The first part of the night was focused on a slideshow presentation Dick Wall gave. After the first five minutes or so I was feeling a bit dejected - I had come to the event hoping to learn more about Android, and so far it seemed to just be re-hashing the official documentation on the Web. After a while, though, I started to perk up as I heard information I hadn't encountered before (or else had forgotten). He ran an interactive talk that was regularly interrupted by questions, and a few rambling declarations, which was both good and bad. It led to some good points being made, but at the same time it would occasionally derail the talk and led to a lot of comments like, "We'll be talking about that soon."

The first big "Aha!" moment I had was with the lifecycle of an Activity, which I thought I totally understood. One thing I just realized a few weeks ago was that multiple Activities can run in the same process. What I didn't know until last night, though, was that an activity's onFreeze method will only be called if it is going away due to another process. For example, if I navigate from a main menu Activity in my app to a Help Activity that is also in my app, I will receive an onPause in my main menu but not an onFreeze. However, if my Help screen is interrupted by an incoming call, then both the onFreeze and the onPause will be called.

The consequence of this is that you only need to bundle up your temporary data if you're moving to another process. This is because Android can silently kill your process when another Activity runs out of resources, and will resume your process when it's ready to be shown again. It's a cool system, and I now understand it better than before. That alone was worth the price of admission. (The event, by the way, was free. Worth the price of gas, I guess.)

One thing I meant to ask but never did: in the above example, would only the Help screen's onFreeze get called? If so, is there any way to capture the current state of the main menu Activity? Unless I misunderstand how this works, only the top-active Activity in your application will be notified that it is in danger of being destroyed.

UPDATE: The above 3 paragraphs are incorrect. See the bottom of this post for details.

I won't rehash the whole talk here - about 80% of it comes from the official documentation, which is much better than I'd be able to produce. I'll just call out a few things that I thought were interesting.

He seemed pretty dismissive of the need for threads. We didn't get too deep into this, but he did say that you generally don't need to make them. This seems in keeping with my experience - stuff like Handlers let you omit many uses for them, and for the long run you'll often want a Service - but it was the most explicit word I've heard yet about threading. I assume you'd still want to spawn threads for network connections and medium-length processing. This is probably another area where we'll be seeing Best Practices come out in the near future.

He confirmed my suspicions about Bundles by saying that they're basically just Maps, with a few changes, and pointed out that you can store Bundles in Bundles. This is something people have commented on before: Android terminology can sometimes be confusing. (He also pointed out that what Android calls a "View" is what most people would call a "Control.")

Some of the early Android hardware will have 3D acceleration hardware. I heard some audible laughs, but was not surprised... it isn't something you see in America, but Japan has had phones with these capabilities for years. If you don't believe me, look for videos of FF Before Crisis (two years old!) and the like. I don't think we'll be seeing killer 3D apps at launch, because they tend to require resources beyond what an individual developer would be able to contribute.

The first big bombshell of the night: XMPP is going away in the next version of the SDK! I was stunned and relieved. Stunned because I know that a lot of people are working on apps for the challenge that rely on XMPP for their data interchange. Relieved because I haven't spent much time at all with it, and so I don't feel I've wasted my efforts there. Still, I can see another backlash coming.

At the end of the talk, Dick demoed a cool little app he wrote called WikiLinks. (I think that was the name... WikiNotes, maybe?) He said it will be made available on Google Code in a few weeks. Anyways, it's a tight-looking simple app that lets you edit pages, scans them to find Wiki links, and lets you follow those links to other pages. The app demonstrated how efficient Android is when working with Intents and Activities. Each time you clicked on a Link, it creates a new Intent and fires it. Every Intent maps to the same Activity - the WikiLink. However, even if you are clicking 40 links in succession and creating all these Intents, during the whole time you're using a single process - Android is re-using its resources while maintaining its open, pluggable interface. It was a cool demonstration that should help alleviate some skepticism over performance.

Speaking of which, the most encouraging thing I heard all night was that performance on the emulator is a good predictor of performance on the device. This is very different from my experience with BREW and J2ME, where applications that run well on the emulator can crawl once you get on the phone. Dick said that, in general, applications will run at least as fast on the phone, and maybe a bit faster... in particular, text input is less laggy on the phone. Anyways, I was delighted to hear this; it's something I've been worrying about.

There was a long run of questions before the break. A few interesting things came out here. First, support for touch was added recently to Android. The current SDK has some controls you can click on. Upcoming SDKs will enhance this support. However, true multitouch like the iPhone is a trickier problem. Dick didn't want to go into specifics, but it sounds like there might be some patent issues or other legal considerations in play.

One of the GTUG folks asked about J2ME support. I often think that questions like this miss the point, but there's a lot of people who understandably are reluctant to surrender years of development work. In the past, some OHA affiliates have expressed an interest in adding this support. The bottom line, though, is that Android will be open-sourced, so if anyone wants J2ME, they can make it.

They cut off the talk and took a break. During this time they ran a nice raffle, using a cool application based on Java FX that looks a lot like Wheel of Lunch. It spun and spun, people came up to claim their swag (Google thermoses, T-shirts, etc.). And - wait for it - I was a winner! My name was the last called, and I took my prize, a black T-shirt. It was labeled "Google Developer Days", which was clearly a lie. It was also labeled "Large", which I also think is a lie, but will need to wear the shirt before making sure.

Afterwards we had breakout sessions. The vast majority of people moved to the front of the room for the Android session with Dick, but other GTUG people ran sessions on other technologies... there was one for Maps, another for Gears, one for Open Social, and possibly more. They introduced Ash, an Android Champion, who will be running the sessions on Android in the future. A Champion is someone who promotes a technology and facilitates learning, and I think is an awesome name. I'll now have to decide whether to come to their monthly meetings for the Android sessions... I kind of doubt I will, but it is tempting.

The breakout was pure Q&A. I tapped out some notes on my iPhone, so I'll dump those in here. Here we go!

The first question was about the backlash against Android and the bad press it's been getting. Dick listened sympathetically. He explained that, more than anything, Google was just surprised by the amount of excitement Android generated, and wasn't prepared to deal with it. In the first 24 hours after the SDK was released, it was downloaded over 10,000 times. A chunk of these started doing serious work and posting on the discussion groups with questions. He said that they had 5 people to handle all of this, and just couldn't keep up. I don't think he meant they had 5 people on the dev team - that seems way too small - so I'm guessing he's referring to the Developer Advocates or other people meant to directly communicate with the community.

The overall response could probably be summed up as, "I feel your pain, but I don't want to apologize." They've been very busy, and they're focused on getting the next version of the SDK out, improving the state of Android, and while they want to help people, they just don't have the resources and it isn't their only priority. This matches my experience on the group - I asked a question about support for hybrid maps a few weeks ago and still haven't gotten a reply. I don't blame the Googlers - hackbod, Dan M, romain guy, and anyone else who chimes in. They always give great answers, and the group is quickly becoming a useful resource to learn about how to use something, or what doesn't work. But there's just a lot more activity on the group than they can keep up with. Dick says that they've been trying to hire more people, but it hasn't been working.

The worst news I heard all night: porting to the new SDK "will be painful." They aren't just fixing bugs and adding features; they're also changing APIs and removing things. I think XMPP is probably going to have a lot of fallout. Dick also specifically mentioned that the Content Provider system is going to be changing a lot. He said that WikiLinks took a few hours to port from Version 3 of the SDK to Version 5, so I'm shuddering at the thought of how long it will take to port a more complex app. That said, he hopes to write a porting guide that will explain how to make this shift.

Once again, his tone was sympathetic without being apologetic. They want to focus on making the SDK as good as they can, even if that means breaking things. After Version 1.0 comes out and the first phones ship, they'll be tamping things down, but up until then, anything should be fair game.

On a related note, he explained a bit more about the status of the challenge, and specifically the controversial decision to extent it. Background: they initially set a deadline of early March, which was heralded as a "firm date." They now have pushed it back to the middle of April to give people more time to submit. A lot of developers feel betrayed: they have devoted a lot of time and energy trying to meet the deadline, and now that Google has yanked it back, their chances of winning will diminish due to the increased number of entries, plus they will need to re-write their applications to make them competitive with whatever the latest version of the SDK ends up being. As Dick explained it, there were a lot of problems with the current version of the SDK, and some developers were frustrated because they couldn't make the apps they wanted to on it. The plan had been to release version 4 in enough time for everyone to switch to it before the deadline. However, they (Google) missed their deadline for version 4. Version 5 will be released in the very near future, and just leaving a few weeks before the deadline wouldn't be enough time for people to take advantage of it. So, they moved it back.

For the record, I'm disappointed in this decision, but it isn't my choice to make... it's Google's money, their contest, and they can do whatever they want. It has certainly not endeared them to the early adopters, however.

Talking generally about the challenge, Dick said that it hasn't exactly gone as planned. On the one hand, it sparked a great deal of interest in Android and got people looking at it, which has been Google's goal all along. On the other hand, the competitive nature of the contest has made people more inclined towards secrecy, less likely to share what they have learned or talked about ideas. If they had it to do over again, they might not have done the challenge at all.

There has been a lot of concern on the groups over the Terms and Conditions for the challenge, which (at least as of this writing) includes some very distressing statements such as "You agree that you will not be entitled to any rights in, or compensation in connection with, any such similar or identical applications and/or ideas." Basically, any member of the OHA is free to take your idea (whether or not you win the contest) and make that exact same application without paying you a dime. Again, there was some concern that people won't submit their apps, instead waiting until phones ship so they can sell them without worrying about "stealing." Dick was actually surprised to hear about this. The one thing he said was, "Google doesn't have a history of screwing people over." This is in keeping with the semi-official responses on the blog, which boil down to "We are running this contest to generate goodwill towards Android, and it would be stupid of us to ruin all that goodwill." He said that, if Google really wanted an app that you wrote, they'd be more likely to hire you than steal your idea. (Good answer!)

Someone asked about development in C++. My impression here has been that it's currently not supported and might possibly be in the future. It turns out that, while that's the official story, the reality is that some people have been getting C++ code to work on Android. The Google team is aware of these efforts, and, unofficially, think it's great. They can't support it, since their hands are full with the official Java SDK, but they aren't going to stop it. Also, the SDK will be getting support for JNI, at which point it will become possible to call C++ code from the Dalvik VM.

Someone asked about distribution. This still hasn't been decided, but Dick mentioned that there had been some talk of doing a vending machine, like for iGoogle gadgets. Google could be a (not the only) clearinghouse: you send your app to Google, Google sells it to people and gives you a cut of the money. This is the first time I've heard that suggested, and it's an exciting possibility: it gives a chance to really make a business from this while hewing to the open philosophy of Android and breaking out from a Qualcomm-style tight control. That said, the team's current focus is on finishing Android itself - "We're very busy" was a common refrain this night. These sorts of questions will be answered later on.

Along the same financial lines, another person inquired about advertising. Dick laughed. Everyone wants to know about ads, and everyone cares more about it than Google. He dismissed the rumors that, when you make a call on an Android phone, you will need to listen to a 30-second advertisement. Google's official position, the reason why they are doing Android, is to use it as a tool for keeping the Web open. There are more cell phones than computers in the world, and Google has a vested interest in making sure that all of them will be able to get on the Internet and browse freely, without being locked down in a walled garden. That's the big picture, and Google isn't interested in nickel-and-diming users. As he put it, his boss had told him, "Your job is to help developers make money." Google isn't after a slice of the pie, they just want to make sure everyone has access to the pie.

Will Android run on non-phone platforms, like GPS units or set-top boxes? Not at first, but after it's open-sourced, it will probably be ported everywhere. When will it be open-sourced? Google doesn't own all the code in Android - some is contributed by OHA partners - so it can't open source it all now. But, the agreement signed by OHA members says that all the software will be released when the first phone ships. So, we'll have access to it soon!

We don't know if there will be SyncML in the next SDK. It's a popular technology, but Google isn't sure yet what the syncing story for Android will be. Again, they want to get it right, not necessarily fast.

The main focus now is just on making it work and getting it done. Because of that, they aren't as devoted to standards as other players. Earlier in the talk, Dick had said that while J2ME was a great technology for its time, devices have now advanced to the point where its design is too limiting, giving Android a great opportunity to rethink how to do mobile development. If this includes breaking standards, so be it. Google is aware of the pain that this can cause developers, but believes it's important to make software better. (As an example, think of Google Docs. By releasing this tool for free, Google killed off some companies who were charging for similar services, but the market as a whole got stronger. Again, after Android is released they'll be able to focus more on standards, but right now, it's intentionally being kept quite fluid.)

The Google philosophy, in case you can't tell yet, is "Have a very long beta period." During that beta, they're free to tinker, and users are rewarded with improved products, but nobody should expectit to be stable.

The browser is built on Webkit and is comparable to the iPhone browser. People have had good experiences getting iPhone web apps to run on the Android browser. There will inevitably be some quirks, but so far, they appear minimal.

He isn't sure how judging for the Challenge will work. Ash, the Champion, said that he has heard that each OHA member will judge all the applications, using whatever criteria they want, and the winners will be determined based on that consensus. Also, Dan Morrill is in charge of the challenge, which was news to me but makes sense. I imagine there's a lot of pressure when you're responsible for distributing millions of dollars!

Finally, someone said, "When can I buy a gPhone?" "There is no gPhone!" was the immediate and correct response. As Dick said, Google has no interest in getting into the hardware game; they want others to get into the game, and want to help them succeed. As for Android devices, they will be shipping in the second half of 2008 - they still don't know exactly when.

At this point, they started to yell at us to leave, so we did. I was pretty impressed... it was already 9:30, but the last three and a half hours had flown by. It was a great evening for me, a chance to dig deeper into Android and, even more interesting, peek behind the Google curtain to learn more about what is actually happening on Android.

On my way out, I stopped and chatted in the parking lot with a fellow GTUG attendee. It turns out that he works for Yahoo, and as I drove home that night, I reflected yet again on how awesome Silicon Valley is. Just think about it! Google and Yahoo are, by all appearances, each others' biggest competitors (though even there, there is more friendliness than you might expect). And yet, an employee from one company could waltz into the other's campus and spend a night getting information from Google on its technology. Not only that: Silicon Valley is also the place that attracts people who, after working a full day creating technology for a tech giant, would voluntarily surrender an evening learning about different technology for another tech giant. We're all nerds, and we all get along. I love this place!

UPDATE: After testing out the onFreeze/onPause thing myself, I need to correct my above statement. I thought Dick had said that onFreeze will only get called if Android needs to recreate the Activity later (i.e., because another process is taking over), but I must have mis-heard. As I had previously thought, onFreeze ALWAYS gets called before onPause.

That returned me to my earlier confusion - why on earth have two methods for this, when they will always be called in combination? I haven't found an explicit explanation, but I think it may be just to simplify Activity design. Conceptually, onFreeze is responding to your transition to another Activity by storing persistent state; this state will later be passed to onCreate if the Activity was killed by Android. On the other hand, onPause is responding to your transition to another Activity by cleaning up non-persistent resources: reclaiming threads, canceling network activity, and surrendering any resource locks; these resources will be reclaimed in your onResume call, whether or not the Activity is still running in this process.

Continuing that thought: onFreeze can be omitted altogether if there's no state to restore. It isn't that Android doesn't call your method, just that you the developer don't need to do anything. In this case, your onCreate will always do the same thing.

Again, I'm not sure about all of this since I feel like I'm making it up, but it fits in with what Dick was describing and what I'm seeing in the emulator. If so, it's a keen design. I may need to revisit some of the Activities I've written in the past - I have been playing loose with the difference between onCreate and onResume, and between onFreeze and onPause, since they always seemed to move in lockstep (well, except onResume, which can happen every time you return to a screen). It will take a bit of work, but should make them more robust, and better citizens in Android!

UPDATE 2 3/17/08: Either I'm going crazy or this actually changed between M3 and M5. I'm now seeing the behavior that I thought Dick had originally described - when navigating from one Activity to another in the same application, only your onPause will get called, not onFreeze.

In practice, one thing this means is that I can't rely on onFreeze as a good place to store preferences, like I did in M3. I'll need to either move this to onPause or start updating preferences whenever they change.

I swear, one day I'll understand how this all works...

Tuesday, February 05, 2008

Big Government / Small Government

Civic engagement is fun!

I enjoy going to rallies. Partly because it taps into one of my personal quirks: I'm a shy and introverted person who really enjoys crowds. Rallies expose me to a sense of camaraderie and togetherness that doesn't require a whole lot other than the ability to clap and cheer. It's also a fun, low-stress way to get connected with like-minded individuals. Hey, you already have something in common with everyone else there: you care enough about a candidate or a cause to give up some of your time and attend it.

I actually agonized a little bit about whether to attend the Obama rally in San Jose on Saturday. Not because I'm unsure of my support... heck, I voted for him weeks ago. But he wasn't going to be there, and instead was sending Kerry in his stead. I have complicated feelings towards Kerry. I supported him in '04, and even took some vacation time to help him (through MoveOn.org) in Get Out The Vote efforts in Missouri. It was all for naught, and I felt crushed. Additionally, while I believe Kerry would make a far better president than George W. Bush, he was far from my first choice among the Democrats, and truthfully I never forgave him or Gephardt for their slimy, mudslinging attacks against Howard Dean.

All water under the bridge, though. Kerry redeemed himself in my view by strongly endorsing Obama, and when I learned that other local supporters, including Zoe Lofgren, would also be in attendance, I was sold. Best of all: it was being held in the Mexican Heritage Plaza, near Ground Zero for good Mexican food in San Jose. I could conceivably turn down Kerry, but not the combination of Kerry and tacos.

The turnout was quite good, filling the theater we had. It's the first time I've been to the MHP, and I was impressed by the architecture. All the walls are glass, letting in lots of natural light, and the entire back can be opened up, which they did so that everyone would be able to see and hear. I arrived just in time to grab one of the last seats.

The event began almost on time, a rare occurrence for this type of thing. First up was Congresswoman Lofgren, who isn't my representative but who is a really solid legislator who I admire for several reasons, not least among them her resistance to the war in Iraq. She gave a really eloquent and striking speech extolling Obama's virtues, revealing that she had decided to keep her commitment to this rally even though her mother-in-law had just passed away. After she wrapped up, she left the plaza with a lot of applause to speed her way to the visitation.

Next up was state Senator Elaine Alquist, who also doesn't represent me. She was probably the weakest speaker of the bunch... not bad, but she just wasn't all that compelling either. I cringed when she said, "It isn't a fairytale to say that Barack Obama voted against the war... because he did!" No, no.... he was in the state Senate in Illinois at the time, and unfortunately, the Illinois senate didn't get to vote on the declaration. It IS true, though, that he spoke out forcefully and publicly against the war at the time, and has maintained his opposition since then. I wish she had done her research and not let something like that slip out.

Next were two Latino union organizers who spoke in succession... I don't recall either of their names, but both were excellent. They spoke passionately about their personal history, working in the fields of the Central Valley, fighting for migrant workers' rights, and the hopes that Obama offers to immigrants and the working class. The second speaker in particular did an excellent job: fiery and passionate, he whipped up the crowd and threaded call-and-response into his introduction. "Viva!" "Obama!" "Se Puede!" "Si, se puede!" "Fired Up!" "Ready to go!"

SEIU, one of the largest and certainly the most active of unions in the state, had been backing John Edwards. At the 11th hour, after Edwards dropped out, they voted to back Barack. The organizers assured us that their resources would be put to use: they would be doing all they could to get out the vote on Tuesday. That made me happy, of course. As I learned in Missouri, the ground game is incredibly important in close elections.

As much as I enjoyed the speakers, I also enjoyed surveying the audience. To my eyes it was mainly white, but maybe a quarter Asian and perhaps a tenth African-American. I didn't see many hispanics at all, which was probably disappointing to the campaign - they've been making a big push for Latinos in California, which was probably why they chose this venue in the first place. Ages ranged all over the place, but it looked like a majority were young. I felt a little underdressed - most guys were wearing dress pants and shoes, while I was slumming in my standard oversized bluejeans and dirty sneakers. Of course, sitting in my chair and keeping my coat on (it was unusually cold), I didn't feel too visible. I'm really bad at judging audience sizes... I'd say definitely more than 400, and definitely less than 1000.

Just paying attention to my immediate neighbors was interesting as well. To my left was a young Japanese woman who was really... earnest, in the best possible sense. She would clap at the right times and say "Yay!" in a small voice. I don't mean that she made affirmative noises: she actually pronounced "Yay!" In front was a family with adorable kids. To my right were some quiet guys, probably in their late 20's or early 30's. Behind me was someone who loudly talked into his cell phone during the speeches, and when people asked him to be quiet or take the cell outside, would say "Baghdad! Baghdad!" I tuned him out and stayed focused on the action.

Kerry arrived, and the last speaker turned it over to him. Kerry was in much better form than I'd ever seen him during the '04 cycle: warm and funny, he opened with a few jokes, many at his own expense, before launching into an eloquent endorsement of Obama. He stressed that he wasn't opposed to Hillary, and that everyone should support whoever the eventual nominee was, but said that Obama was the best choice for the party and the country. He laid out all the reasons we've come to hear: a better understanding and engagement with the world, a passion for community-level improvement, intelligence, character, and judgment.

Listening to him talk, I reflected on the recent phenomenon where failed presidential candidates always get way cooler. During '96, Dole was dour and boring; afterwards, he became pointed, funny, and dry. During '00, Gore was stiff and programmed; afterwards, he became fiery and inspiring. During '04, Kerry was sonorous and passive; the man I was watching now had discovered how to connect with a crowd and keep them engaged.

He wrapped up the speech and then, to my surprise, took questions from the audience. I guess that this was more of a "Town Hall" than a standard rally, which is cool. He was pretty good at this portion, although he seemed to slip more easily into his standard system of giving long and round-about answers. Some specific ones I recall:

The first question was from a man who asked how he could ask someone not to vote for the first woman President. There were actually a few "boo"s in the audience. Kerry said, "It's a fair question," and launched into his response, which boiled down to: both would be a historic choice, and we can't really say that one (race or gender) is "more important" than the other.

This got me thinking to the curious bifurcation of responses to Obama's race. Among supporters, you often hear two things, and sometimes both from the same person. On the one hand, "Race doesn't matter:" Obama is post-racial politics, draws support from across the racial spectrum, isn't running on "black" issues, and so people shouldn't be concerned about it or factor race into their choice. On the other hand, people talk about how an Obama presidency would, on Day One, improve American stature in the world by forcing others to see another side of the United States. It would show that we as a nation can get beyond our ugly racist past, that we have a leader who has seen poverty in the global South, that a new kind of politics is starting in the most powerful nation on Earth. So I guess it boils down to, people want to say that race isn't important within the U.S., but could be a significant asset in our foreign relations.

A teacher talked about how bad "Nickleby" had been, and how children aren't learning. It took me a while to realize that he was saying NCLB, for No Child Left Behind. As soon as Kerry started his answer, he explained exactly that to the audience, which was great... I'm sure everyone in Congress uses the lingo, but he's connected enough to understand that not all of us would make that connection. He did an Obama-esque thing here, giving a straight answer that combined what the questioner wanted to hear (teaching is important, Obama will increase funding for education, we need to get away from test-focused evaluation) with things he may not have enjoyed hearing (standards and accountability will continue to be central). I have allergic reactions to pandering, so I was happy to hear this straight (albeit long-winded) answer.

A woman mentioned that her son was serving in Iraq, and asked what Obama's plans for that conflict were. This was probably Kerry's best response of the day - he engaged the woman, asking for her name and her son's name, and what combat unit he served with (100-and-somethingth Airborne). He then led the audience in a standing ovation for the service of the armed forces. This has become Democratic boilerplate in the last seven years - be very careful to show a lot of respect for the military while arguing against the war, and it seems to be effective. Kerry highlighted Obama's work on the Veteran's Affairs Committee, where he has had to battle Bush to get enough money for the veterans returning from Iraq and Afghanistan. Kerry closed with a strong statement that a President doesn't show he's pro-military by starting wars; he shows he's pro-military by taking care of soldiers after they come home. Great response.

An eloquent young woman said that, as an Arab American, she is disturbed by the steady climb in hate crimes over the last several years, and asked what Obama would do in response. Kerry's answer was kind of odd - he never directly answered the question, but instead launched off on a bit about how to fight Islamic terrorism. It was a good response, but not to the question she asked. He ended strong, saying that the US needed to empower moderate Muslims throughout the world, so that they can promote "Islam for what it is: a religion of peace."

The same annoying impeachment crowd was present for this event that crowded the town hall Mike Honda held several months ago. I sympathize with these people - yes, Bush and Cheney have been poor leaders, some of their actions (particularly wiretapping and Guantanamo) may be illegal, and there should be a reckoning. That said, in the large sense, I totally disagree with their actions: an impeachment would, at most, shave a few months off this presidency, and in any case there aren't the votes in the Senate necessary for it. If they want to use impeachments as discovery, then it will take even longer, and we should be able to learn more once the new President moves in anyways. On the small sense, I find them annoying, disrespectful, and disruptive... they pretty much ruined the Honda Town Hall, they eat their own, and I wish they would just shut up and let people talk.

Anyways! They started up their annoying interrupting and yelling during Q&A, and Kerry earned my admiration when he politely but firmly shut them down. He explained why impeachment wasn't an option, they started yelling again, then he said, "Let me say one final thing. If you want a Republican elected in November, then keep up with this impeachment talk, because that's the way you'll make it happen." Everyone applauded, and either ashamed or enraged, the impeachment groupies kept quiet the remainder of the time.

Someone asked if Kerry could convince John Edwards to endorse Obama before the Tuesday primary. That got a chuckle. (They were running mates in '04, obviously [well, obvious to everyone except the San Jose Mercury News] but disagreed over strategy during the campaign and have fallen out since then.) Kerry said that John Edwards deserves to make his own decision, and nobody, except for Elizabeth, will be able to influence him. So, no, he won't be calling Edwards. He did say that he thought endorsements are important now, but they will become much less significant after Tuesday. Endorsements are a tool to get to know candidates better, but after the big round of election coverage, voters will have gotten to know the candidates and won't be as affected by endorsements.

The last question was an amazing one from a little kid, who gave what sounded like a well-rehearsed question, but delivered without any notes. It boiled down to "How will Obama stop the influence of lobbyists on controlling Washington legislation?", but was extremely articulate and intelligent. Kerry bantered with the kid a little, learning that he was in seventh grade, before saying, "Do you want to be President tomorrow?" He then gave his answer: to fix the problem with lobbyists, we need to start by stopping their influence on campaigns, which Obama has done by refusing to take any federal lobbyist or PAC money during this race. The second thing, a theme he mentioned multiple times, was the importance of individual citizens (that's us!) in holding politicians accountable. He talked about his work against the Dirty Dozen after returning from Vietnam, how a grassroots movement identified the twelve senators most hostile to the environment and worked for their defeat. Nothing, Kerry said, is more important than citizens keeping track of what their legislators are doing, and complaining when you don't like it, because they listen to you.

And on that note he finished the town hall. Music started playing and people either surged towards Kerry or filed out. I followed the latter route.

Oh! One more thing. During one of the questions, someone handed Kerry a sheet of paper. He read it and made an announcement that the next night (Sunday the 3rd), Michelle Obama would come to San Jose State University for another town hall. This got a lot of applause - everyone loves Michelle. I resolved to go.

I tried. Doors opened at 7 and the event started at 8. I arrived around 7:30 - by my calculations, I came 30 seconds too late to get into the ballroom. They had roped off the hallway leading to the event, and there was no communication at all about what was going on - nobody said "We're full, go home," nor did they say, "We're going to set up an overflow room for you." I waited for about ten minutes, getting more frustrated by the lack of information, before giving up and left. It was a curiously poorly run event by a campaign that's been doing such a great job throughout the year.

However, I wouldn't long be without a political fix. The next night was a meeting that had been on my calendar for weeks: my councilmember, Pierluigi Oliverio, and the District Seven representative, Madison Nguyen, were hosting a Parks forum that would address the Willow Glen Spur Trail. (This is a very local issue, so even if you've made it this far, feel free to stop reading.)

I'm a big fan of the Los Gatos Creek Trail, which I've taken to commute between my apartment and work. The trail starts in the Santa Cruz mountains by Lexington Reservoir, and currently stretches as far northeast as Meridian, a bit south of 280. The eventual plan is to connect it with the other trail systems that run in the area. A critical portion of that connection will come through the Willow Glen Spur Trail, also known as the Three Creeks Trail. It doesn't exist yet, but it is planned to connect the Los Gatos Creek Trail with the Guadalupe River Trail and the Coyote Creek Trail. This is hugely important, and also supremely hard. Although this connection has been planned for years, San Jose's budget deficit and legal issues have kept it from moving forward. The meeting was intended to connect with the community and keep them abreast about the current state of things, as well as solicit input.

I had agonized a little before going to the meeting. It was scheduled to run from 6:30PM-8:30PM on a Monday night, leading me to wonder: would they serve food? At the prior meeting on neighborhood parks, on a Saturday morning, they had served pastries and bagels. It seemed less likely that the city would spring for dinner. Still, starting at 6:30, it seemed like the perfect time to serve food. I agonized a bit before deciding to forego my meal. Turns out it was a postponement instead - no food was to be seen. On the other hand, they ended the meeting around 8:15, so I still had time to eat.

(I think way too much about food.)

Arriving in the Gardner Community Center, I did a double-take. Was that Chuck Reed? Yes: the mayor of San Jose had dropped in for a visit. I have a confession to make: I did not vote for him, but I now wish that I had. His first year in office has been a promising one: low-key, but he has been a solid performer, pushing through ethics reform and managing the city well during a difficult period. My fear at the time of the election had been that he would lock horns with the city council and nothing would get done, but he swept some reformers into office in his wake, and while he doesn't have Gonzales's solid backing, he can certainly take care of business. I didn't introduce myself, but I could have: he was standing right there!

The meeting started with the Mayor giving a quick mini-speech, in which he said, "In years of working on the City Council and now in the mayor's office, I have come to one conclusion: trails are hard." Every government agency that gets involved seems to double the amount of time involved, and he said that with the Willow Glen Spur Trail, there are often three or four levels of government involved. He asked us for two things: patience, and persistence.

Next, Oliverio and Nguyen gave brief introductions. Pierluigi has grown a beard since the last time I saw him, which looks good on him. As in the earlier meeting he was friendly and brief; he mostly stayed out of the way during the night. Nguyen, who has come under fire recently (undeservedly, in my opinion) for an issue involving the local Vietnamese community, also thanked people for coming, and remained quiet for the remainder of the night.

The main feature of the meeting was a 20-minute Powerpoint presentation given by the city's trails director, which reviewed the project and the issues with it. Major points that I recall include:
  • The land, which is currently owned by Union Pacific, was tested several years ago and found to be contaminated. The State of California is now working with the railroad to determine how to fix it. This could go a lot of ways: the railroad might clean it up and then sell it; the city might buy it and then cap it; or the state could get involved in some way. In any case, though, that process needs to finish before work can start on the trail.
  • Developers are interested in several parcels along the trail. For parcels that are part of large residential projects, the city can require the developer to build a trail, at no extra cost to the city. But, for smaller parcels or ones zoned commercial or industrial, the city can't make such requirements. It must buy the property or secure an easement.
  • Most of the land between Los Gatos Creek and Coyote Creek / Highway 87 is zoned residential, while most of the land to the east is zoned light or heavy industrial.
  • Crossing the railroad by Highway 87 could be a problem. We can't cross at the grade, because there are 3 tracks there, and can't build a tunnel, because of the river. An elevated crossing is possible, but complicated because the proposed high-speed rail system that would connect San Diego, Los Angeles, San Jose and San Francisco would run through here. Such a rail would have to be elevated, making it hard to plan for a trail crossing.
  • Most of the land to the east of 87 runs behind factories and warehouses, with no windows. This forms an "alleyway", which has the Police Department concerned: there's no easy way on or off the trail, and nobody keeping an eye on what's happening there.
  • Also on the eastern reach, the old railroad crosses several streets in the middle of the block. The city can't do an at-grade crossing here because it's too close to the traffic signals. It also can't do a bridge or tunnel, because they're already at the grade. Typically, they would direct people to cross at the signal. However, they know from experience that many people would cross the street directly, leading to safety risks.
  • Union Pacific is asking $20 million for the whole stretch from Los Gatos Creek to Kelly Park. We won't know the actual price until negotiations begin, but it seems to be reasonable, based on the cost of comparable properties. The city thinks that it can probably get the western reach of the project for about $5 million, which is what they currently have budgeted for the project.
At the end of the presentation, he presented an alternative that the city has started looking at: complete the western reach of the trail as planned, but instead of following the railroad to the east, follow Alma avenue instead. Alma is a road in poor condition that runs through a neighborhood with gang problems. However, it would avoid many of the problems with the other route: it's a more visible location, with lots of access on and off, all crossings at signals, and no need for environmental cleanup. This approach would involve working with the Transportation Department to redesign the street: adding bike lanes and widening sidewalks to make them more distinctive. The result wouldn't be a "trail" in the sense we think of, but would accomplish the goal of linking together the desired points.

After this was done, we had a good hour or more of questions and answers. During this time, various people from different agencies in the room pitched in as the inquiries were all over the map: zoning policies, funding options, inverse condemnation, and other fun bits of arcana. I won't recount EVERYTHING, but a few moments stand in my memory:
  • One semi-irate man lives near Reach 4 of the Los Gatos Creek Trail, which just opened a few months ago, and has been dismayed by the increase in crime that the trail has brought. The presenter acknowledged the problems, and said that the city is in the process of hiring trail patrols that will take care of a lot of these problems. They are also working on a new system that will help the police respond to reports, by making trail mile markers, recording their GPS coordinates, then integrating this information with the police's maps and the 911 dispatch system. Others in the room pointed to the older sections of the Los Gatos trail, which had similar problems when they first opened, but which everyone now loves.
  • Most of the people were pro-trails, but a few were mainly anti-development. One graying 60's radical spoke at length about the absurdity of developing along Coe Avenue, and seemed as willing to leave the ground fallow as to build a trail... anything but letting houses in there.
  • More on inverse condemnation: as a Supreme Court case has decreed, the city can make demands on developers only if they are in proportion to the the project and benefit the owner. This comes from an Oregon timber warehouse that resisted a demand that they build a trail: they pointed out that nobody buying lumber would use the trail, so it was useless. The Supreme Court agreed. As a result, on a case-by-case basis, cities need to establish that a condition is (1) appropriate for the property (for example, a trail that residents will take), and (2) not onerous to the developer (you can't require them to build a whole trail if they're only developing a single home).
  • The city would gladly name the trail after Bill Gates or Larry Ellison if they paid the $20 million for the trail.
  • However, even if the city got a check today, they wouldn't be able to start building immediately. They would still need to do environmental cleanup, determine the safest place to build the trail, etc.
  • Man oh man, Chuck Reed wasn't kidding about government agencies. This didn't come out until the Q&A, but it sounds like there's some serious friction between the city and Santa Clara County. Some county representatives in the room said that they have $2 million that they are planning to put towards the spur trail. However, they are only interested in it if it covers the whole property: in other words, it sounds like if the city pursues the Alma road solution for the eastern reach, they may lose that money. At the same time, that $2 million is a small chunk of what might be $20 million for the whole project.
The overall tone of the meeting was civil, with just a few minor outbursts. I'm really glad I went. This is kind of a micro-issue that only affects a small portion of people, but it also feels very real in a way that large national issues sometimes do not. This meeting made it clear that this would be a years-long endeavor with an uncertain outcome. If we finish it, it will be extremely satisfying to have seen the whole process unfold.

Finally, for full disclosure, I should explain my vested interest in this: I am a passionate user of the Los Gatos Creek Trail. My dream is to be able to ride my bike downtown, and eventually, out to the Bay Trail, a network of bike trails that should eventually encircle the Bay. Because of this, I could care less about the eastern reach: what I really want is to be able to get from the LGCT to the Guadalupe. Because of this, I'm actually more concerned about how the existing trail from Meridian, or the bike lane along Willow, will eventually connect with the Spur Trail. That being said, I recognize how selfish this is... the eastern reach is just as important for people who currently use the Coyote trail as the western trail is for me, and I hope that in one form or another, the project is eventually completed.