Wednesday, June 07, 2006

I Love the Girls and the Money and the Shame Of Life

I've been looking forward to the DevCon for a while. Last year, while I was still with Nexgenesis, I attended the Sprint Application Developers Conference, which focused on developing J2ME applications for Sprint users. It was pretty interesting, even though most of it did not really apply to me since most of my development was in BREW. Still, it's always good to expand your horizons, and conferences are great for getting a taste of what the Next Big Thing is going to be.

From talking with folks at Rocket Mobile about it, it sounded like the BREW DevCon had more of a party atmosphere. The people who had gone before had some entertaining stories about the fun stuff that had happened in previous years.

Last year, due to a major crunch at work, nobody was able to attend. This year, Wayne wanted to make it up to everyone by sending the whole company. Unfortunately, a few projects were under a lot of pressure, and so a lot of people were not able to go. Those of us who were still fine headed out on Wednesday morning. I did my standard VTA to the airport thing. Most people were leaving on the same flight, so we hung out in the gate area together, and took over several rows when we boarded.

Flying in to San Diego was really nice. As I said before, this was my first visit there ever, and from the air it looked as beautiful as I expected, with the striking blue expanse of the Pacific Ocean leading up to clean beaches and the gleaming towers of downtown. The airport itself wasn't quite as good - it's nice and modern, but the layout is a little awkward, we had to walk quite a ways to get to the taxi area and then needed to wait too long to be serviced. Neither the Hyatt nor the conference were running shuttles, which really bemuses me, since everyone waiting for a taxi (and there were more than a few of us) were obviously there for the con.

The conference officially runs for Thursday and Friday, but there were "pre-Conference" sessions on Wednesday. We speculated whether we'd actually make it there in time for the first one, which started at 1PM. A fleet of taxis eventually arrived, though, and we did the five-minute ride to the Hyatt. This was a very nice, huge hotel, and had been overrun with nerds. I was rooming with Josh, who does QA for my team and is the youngest RM employee. We checked in, deposited stuff in our room (a corner!), then headed to the conference area to get checked in. We got some nice swag including a T-shirt and a backpack, along with the customary notebook and designer pen.

It's kind of amazing just how much time I would spend thinking about food: when we were eating, what we would be eating, how much I should eat, how it tasted, whether there would be dessert, where dessert would be, and so on. I think this was mainly due to my unpleasant realization on that very first day that I would not be eating any lunch. The rest of the meals would be provided through the con, but since it hadn't technically started yet, I was on my own. I realized this too late to acquire any food, so I stood around complaining with Greg and Josh for a while until my conference started. I attended the BREW uiOne introductory sessions; I'd poked around uiOne a little before, and others in our company have done quite a lot with it (including the initial work for Samsung's Sprint handset that was featured during this conference), but hadn't done any actual coding. It was a pretty interesting session and well-structured, starting with an abstract overview in the first session down to plenty of real code examples in the second one.

I was pretty hungry by the time it was all over, so I made a beeline for the Partner Pavilion. This was a huge ballroom that had been converted into a showroom, filled with booths from software developers, OEMs, outsourcers, Qualcomm teams, and more, all boasting their wares. More importantly, from 5-7 it would be the location for Happy Hour. I grabbed some Dos Equis (hey, if I'm that close to Mexico, do I really have much of a choice?) and loaded up a plate with plenty of crackers and cheese and fruit before hanging out with Chris and Shane. I was a little surprised to be carded for the beer, but it wouldn't be the last time; over the course of the conference I was carded more times than I have been in the previous year. Which seems odd; I had a badge, and one would think that someone old enough to work as a developer would probably be over 21, right? Well, someday I'll probably look back on this and take it as a compliment.

I wandered around the showroom for a while, checking out the various offerings. As with most of the conference it was very fluid: I would meet up with various groups of RM people, walk with them a while, then we'd split up and go separately or meet with other RM folks. One of my favorite things was getting to talk with people who I've seen around the office but haven't interacted with much before; I had a nice long chat with Richard, who is a new developer on the Published Apps side.

Running out of steam, I went back to my room and flipped through my schedule, planning my course for the next two days. Jim had mentioned before that he wanted us to split up to cover more ground, but I hadn't heard any specific schedules set, so for each slot I picked the one I wanted to attend, with a few alternates just in case it was full or we already had too many people there. Josh came back and we headed out to the Welcome Reception, held in the Embarcadero waterfront park.

This was a really excellent setup, with a variety of food stations scattered throughout, plenty of large tables, and stretches of entertainment. There was a variety of Mexican food, Italian food, roast beef, and maybe more that I missed, along with an excellent dessert selection. Charles and Ray had already arrived, and together we staked out a table. We took turns filling and refilling our plates as people came and went... again, fluidity was the watchword of the conference. At one point we were joined by John Sullivan, Wayne and Sheila, but by the time I thought to take a picture John had already left and the three of them weren't ever together again. I did get some other good shots here, though. I had some more Dos Equis and got carded again.

After it got dark, Chris, James, Josh and myself decided to wander and see if we could find the "rides" Sheila had talked about. She was either drunk or had gone to another place, we couldn't find any rides at all. What we did find, though, was still pretty cool: cariciturists, a beatboxer, some cool green-screen music-video things, more bars, and a big old inflatable balloon thing. We posed for a hilarious picture (few things are more entertaining that computer science professionals attempting to look cool) and the evening generally degenerated.

Rajiv and Graham had stayed behind to take care of some last-minute business, but arrived just as we were heading out. Some of the guys were going out again for more drinking, but Josh and I were operating on too little sleep so we went back and crashed. I was briefly awoken by what sounded like a freight train derailing, then again by my alarm. Barely conscious, I stumbled into the bathroom and got ready for the day.

Why was I up so early? Primarily because, as previously noted, I was obsessed with food. Thursday started with "Developer Breakfast Roundtables," where people sit at tables and discuss stuff while eating. It ran from 7-9 with the warning that "Seats fill up quickly, so come early!" Horrified at the thought of needing to wait until noon for my next meal, I was willing to get up early (though, granted, with about 8 hours of sleep due to my early bedtime) to ensure a seat at the table.

It turns out that I didn't need to worry. Breakfast was not exclusive to the Developer Breakfast Roundtables. I grabbed a plate, plundered the continental spread with a croissant, fruit and danish, then joined Shane (and later Eric and Ray) for the meal.

The conference officially started at 9 with a welcome from Peggy Johnson, the President of Qualcomm Internet Services. She was wearing capris, and actually looked pretty good in them, thus destroying my theory that no real person ever looks good in capris. Oh, but wait: before she took the stage, we were treated to an extremely high-energy hip-hop song called "BREW Your Way." It was pretty special. Lots of breakdancers, rapping, drumming, crazy video images, duelling singers... it was simultaneously awful and exciting. Peggy took the stage after they left, and ensured everyone would be uncomfortable by attempting to explain to us the "lingo" used in the song. "When they say 'My BREW is Tight,'" she helpfully explained, "That means, 'My BREW is really good.'"

The welcome and keynote were held in the Elizabeth Ballroom, a simply massive space. I sat up front along with Ray and the other old-timers, but those further back were treated with rows and rows of enormous video projectors that ensured everyone could see everything. Even people who had been to the conference before were impressed by how big it all was, and I heard a lot of reminiscing about the old conference before it moved to the Hyatt.

Peggy introduced Dr. Paul Jacobs, the CEO of Qualcomm, who delivered the keynote. It was... a really odd experience. He's a very fine speaker, and showed off a lot of impressive statistics (BREW developers made over $750 million in 2005!), but the highpoint of his speech was showing off something called "Creatures." The idea was sort of cool, basically they're network-aware social-networking applications that live on the phone and are geared around commerce. He gave an example of Creatures being used to remind you of a friend's birthday and suggesting what to buy him, or letting you know what music your friends like so you can be a great DJ at a housewarming party. It's the sort of thing that's guaranteed to generate a press release, but for the developers out there, it was really dumb... it was clearly just a series of screenshots, there was no actual application there, nothing real to show off. It might prove to be something other than vaporware, but it felt curiously insubstantial to make the show's centerpiece.

It was only the centerpiece for a few minutes, though... after the keynote, we never heard about Creatures again. Good riddance to bad rubbish. Dr. Jacobs was followed by this long-haired executive from Sony BMG, which was a pretty interesting talk, in no small part because of Rocket Mobile's association with Sony. He talked about how digital music sales are rapidly catching up to physical sales in the US, and have already blown past them in much of Asia. Digital music includes iTunes and stuff in addition to ringtones on mobiles, but it's still impressive. It's a section of the industry that I'm not too plugged in to so it was nice to get some more information about it.

Staying for BMG meant I had missed out on the first half of the day's first technical session. I had planned to attend the Developer Awards Ceremony - RM wasn't up for anything this year, but it sounded interesting and there were some cool apps on deck. I ran into Jim in the interim, and he suggested I attend the Advanced TrigML session, so I did. The room was totally packed; I had to stand out in the hallway for the first bit, finally making my way in when others left (presumably to attend the awards ceremony). Having done one UIOne course for the day (or at least part of it), it made sense to follow it up with another, so I finished up the morning with uiOne Actor Development. Unlike Cathy, who attended both sessions, I thought the Actor session was more interesting. Then again, I tend to think that low-level C code is intrinsically more interesting than UI, so I may not be the best judge. In either case, by the end of these sessions I felt like I had a really good grasp of uiOne, and feel fairly confident that I'll be able to use it if the situation demands.

Up next: Lunch! Lunches were pretty good both days, your standard sandwich-plus-potato-salad-plus-fruit-plus-chips affair. I'd lost track of people after the Actors session so I wandered around a while, hoping to find some people on the lawn, but failing. I eventually located a table that held Cathy, Sasha, Erik, and Peter, who was a friend of Eric's when they were at CMU together and who has worked at Qualcomm for over a decade. We had a nice long conversation, I learned a lot about San Diego from Peter and shared my enthusiasm at moving to the west coast.

We split up and I wandered some more. My wanderings took me back to the Partner Pavillion, where dessert was served. And what good dessert it was! A wide variety of tasty cakes tempted. Food quality waxed and waned throughout the conference, but the desserts were dependably delicious.

That afternoon I had lined up my "fun" sessions for the week. The first was "Dirge of Cerberus Lost Episode - Final Fantasy VII." I was pleased to find Shane attending as well, which helped me feel like what I was doing wasn't totally marginal. And it really wasn't. This was a case study on translating the FF universe into the mobile space; the two panelists were Kosei Ito, a producer from Square Enix, and Alex Caccia, the COO of Ideaworks 3D, who were SE's partners. All the content was really interesting. For those of you who don't know, Asia in general and Japan and South Korea in particular have far more advanced mobile phones than we do here, and they are generally a generation or two ahead of us. Japan actually had a Final Fantasy cell game (Before Crisis, also FFVII-related) back when most people here thought "Breakout" on a cell was pretty cool. There was a lot of conversation about the different expectations of user groups, and also about how SE was able to preserve the hallmarks of the FF series, including impressive cutscenes.

Oh, I should probably mention here that Ito-san (or is it Kosei-san? I can never remember) spoke entirely in Japanese; there was a translator who handled the English part. That was really cool. I couldn't understand anything he was saying but it sounded great.

Back to the content: the technical things they talked about were really interesting, at least to me. Rather than download the entire game at one, subscribers were basically downloading an engine, and the content was streamed onto the handset as needed. This keeps space available on the mobile, and with Japan's advanced 3G network, this didn't really require any latency. Similarly, they tried to be smart about the graphics: they carefully chose palettes for objects at different resolutions so, for example, an enemy may have 8-bit color when on the horizon but a full 24-bit color when standing right in front of you. They could swap these models in and out to achieve the optimum balance between speed and detail. There were other technical solutions they covered, but those were the highlights for me.

Their information on the business front was also impressive. On the very first day Beyond Crisis launched, 1.6 MILLION people downloaded it. This is a staggering number for a cell-phone game even in Japan, and unheard of in the US. Most of what they showed us this day was from Dirge of Cerberus, a more recent game that is planned to actually get a release in the US at some point. Unlike BC, which really stands alone, DoC is being released in tandem with a PS2 game, with both featuring Vincent from FFVII. Both games are action shooters, but the restraints on a mobile phone (small screen, poor controls) required them to radically rethink the mechanics of the game. In the end, the mobile version of DoC is designed to reward the player for planning and decision-making, as opposed to twitch reflexes. The videos they showed were simply amazing, playing out in real-time with impressive gun battles, but you could see what they were talking about: the playing field was primarily a plane, and movement generally followed a grid, so while it looked very smooth, aiming automatically followed from movement.

Tangent time: If you have a cell and enjoy gaming, you might want to check out "Doom RPG". This is a mobile game written by John Carmack of iD, and is essentially a turn-based FPS. It's very well-done and a lot of fun. I bring it up here because Carmack took a similar challenge (how to bring a shooter IP to the mobile) and came up with a completely different solution (change the play genre while keeping the setting, plot and themes). Carmack's approach may be more interesting, and is virtually a necessity in the current US market where only a fraction of phones are remotely capable of supporting a real-time action game; Square Enix's approach is more technically daring, difficult, and probably represents the future.

Back to the session (didn't I already say that?): The Ideaworks guy talked a fair amount about his company's proprietary technology - not saying how it was implemented, of course, but walking down a list of what it accomplished. It included extreme compression rates, the cool resolution-swapping trick, some special audio things and advanced caching algorithms (so you don't need to stream additional content when staying in the same area).

Q&A was good, although I get the impression a few things got lost in translation. Someone asked about what happens if the user loses a connection while streaming data, and Kosei's answer was basically "Streaming lets us keep the amount of data on the handset to a minimum."

All this was very interesting, but arguably the highlight of the panel were the demo videos and trailers they showed throughout. I'm a bit of a Final Fantasy nerd (though not to quite as great an extent as, say, Ultima or Baldur's Gate), and it was really exciting to see all my old friends from FFVII in action again.

I had a good long chat with Shane afterwards. I hadn't realized he was a gamer, and we reminisced a bit about our favorite games of the past. We both are into RPGs, and he's currently slowly working his way through Oblivion. He mentioned that there actually used to be a Neverwinter Nights game for mobile phones that he thought was pretty good; it may have been on the T720, and also used the same streaming strategy that Dirge of Cerberus uses. He also talked up GameFly and how much sense it makes compared to buying a game.

The second afternoon session was also planned as a fun one, though of a slightly different sort. The title was "LBS Architecture for Security and Privacy." This is another area that RM really isn't involved in, but the short description made it sound like it would tap into a lot of the digital liberties issues that I'm most passionate about. I was not disappointed.

The main speakers included John DeAquiar from Autodesk, who represented the carriers' interests, and Rob Whitman, the CEO of RiffWare, who represented developers. To provide some background to my readers: LBS stands for Location Based Services, and for many years now has been the Next Big Thing in mobile development. Think of it as a GPS in your cell phone, though it's possible to have LBS without a GPS. With a bit of thought you can come up with the benefits this might offer: Google Maps with your current location displayed, a geocaching program, a friend finder, and all sorts of other stuff. With a bit more thought you can begin to imagine some potential problems and why some people might be reluctant to use it: what if other people can also find you? What if some of your friends don't want to be found?

John briefly introduced the topic and defined his terms: "security" means ensuring that only authorized people can access data, and "privacy" means users can control who gets to see the data. He pointed out that security is a pre-requisite for privacy: it doesn't matter how good a company's privacy policy is if people can steal their data. Then he talked about the three security architectures from the perspective of the network: "Trusted," "Mostly trusted," and "Untrusted." You can imagine these as points along a continuum, with very easy but insecure at the top and very hard but secure at the bottom. In the trusted case, any program can do anything. In the mostly trusted case, the program needs to authenticate itself with the network (as with a login and password), but once it passes that it can do anything. In the untrusted case, every request a program ever sends the network is considered suspicious, and the network relies on its internal policies to determine whether to authorize that request or not; it also performs additional challenges to ensure that it is dealing with the actual client and not a "man in the middle" attack.

After covering all this, John concluded that everyone should run untrusted networks. It's a pain for both carriers and developers, but is the only way to ensure security, and the carriers are so exposed to financial liability in the event of breaches that they can't afford to do anything else.

Rob made it clear off the bat that he wanted to be controversial and provoke discussion. His big thesis was: carriers are already capable of tracking you everywhere. The government can get that information any time you want. By carrying a cell phone, you are already giving up your privacy. That said, do programs' privacy or lack thereof really matter? In other words, should a developer need to jump through hoops to ensure nobody can find you, when an entity is already tracking you?

He also briefly covered some possible ways to enhance privacy. For example, in a mapping program, instead of sending a request for a map in San Jose, the program might simultaneously request San Jose, Chicago, and Boston; that way, someone monitoring your IP traffic wouldn't know what city you were in. Similarly, a phone might pull down a bunch of data in advance, then operate statically on that data instead of transmitting its location and requesting specific data. The main goal here is to eliminate broadcasts of potentially private data.

The Q&A was relaxed and wide-ranging. There was a fair amount of discussion over EULAs, which nobody reads anyways and which are impenetrable on a mobile screen. Can we really rely on EULAs to disclose what aspects of privacy we may be giving up? Several people thought it would be better to build it into the program itself, for example by asking the user every time you would broadcast their location.

My last session of the day was far more practical, and it covered the BREW Dispatcher. BREW is a single-threaded, event-driven programming environment, and as such its architecture is quite a bit different from Java or even most desktop C++ applications. I've gotten a good handle on it, but this is one of those areas where I felt I could stand to learn more, so I headed over to the session. At least, I tried to. It was held in the Randle conference rooms on the fourth floor, and I proved to be uniquely unqualified to find them. I finally tracked it down and walked in just as it was starting, fortunately grabbing a chair next to Rajiv, my previous officemate.

Most of the session covered the use of IThread, a 3.0 API that adds virtual threading support to BREW's architecture. The presenter (a Qualcomm director) talked about how it was implemented and what it could or could not do. (Bottom line: it's best used when porting existing code that takes "blocking" actions on resources such as network sockets; it can also be useful for heavily stack-based ports because an IThread's stack is actually on the heap. [Yeah, I know.] Since threads aren't pre-emptive, you need to be very cautious about starvation and other issues.) He also dug a bit more into the implementation of BREW's event system, which is more of what I was interested in, and contrasted use of ISHELL_Resume with AEECallbacks. He really likes callbacks, and think that people should generally use them.

There were a ton of questions and some of them were pretty heated. Someone asked about when pre-emptive threads would come; the word was "it's in the planning stage." Rajiv essentially accused them of draining battery life by implementing a polling loop for their events; he dodged the question and talked about the advantages of the event-driven model. Others chimed in with their concerns about performance. I really wanted to ask how timers fit into the event model, but since nobody else was mentioning them I figured it was probably a stupid question.

After the session closed, Rajiv, Charles and I spent a good ten minutes or so talking about Rajiv's question. Charles pointed out that, while the pseudocode the presenter had shown displayed the event reactor as a while loop, in reality it exists outside BREW in the OEM layer, and may even reside in hardware. That's where the question comes in, because if it's hardware-driven, it isn't polling, and won't have nearly as many no-ops that drain battery life; if it's in software, it'll cause all sorts of headaches. Rajiv thinks that the VZW Razr may implement it in software because the battery life is poor, but the bottom line is none of us know for sure, and there really isn't anything we (or even Qualcomm) can do about it. (My thought is that, since Qualcomm makes the CDMA chips, they'd be foolish not to offer the hardware capabilities to the OEMs, and the OEMs would be foolish not to use it.)

It was now around 5:30, about 90 minutes before the start of BREWFest. I was sorely tempted to walk over to the Hall of Champions in Balboa Park where it was being held: it was a gorgeous day outside, I hadn't really been anywhere in San Diego besides the airport and hotel, and I was starting to feel the pain of too little exercise. Judging from my map it was just over two miles, a very reasonable distance for a walker like me.

I swung by my room first, though, and ended up hanging out with Josh. Josh is an avid cyclist of the downhill-racing and stunt variety; he broke his... foot, I think, last year when he failed to clear a ravine. Anyways, he had downloaded a video that showed incredibly talented trick cyclists doing all sorts of crazy stunts, from extreme downhill racing to city tricks (hopping from bench to bench, riding on railroad tracks, jumping from one side of a bridge to the other, and so on). That took us up until 6:15, when buses were supposed to start leaving for Balboa, so I decided to skip the walk and just ride.

Turns out that was a smart move. Unbeknownst to me, only people boarding the buses would be issued the bracelets and drink tickets necessary for the evening's entertainment. If I'd walked there I may well have been turned away at the door, which would have been awful.

A Rocket Mobile crew seized the front quarter of a charter bus and excitedly made our way down to the Hall of Champions. The event had been built up as the social highlight of the conference, its promise of food, drinking and music gripping all of us. The location proved to be pretty cool. The HoC is a sports museum, apparently the largest of its kind not devoted to one particular sport; the walls were covered with various balls, bats, signed photos and other memmorabilia, while display cases lined the floor. There were no single large gathering spaces, but instead a variety of tables and stations spread throughout three floors.

The food was... meh. After the previous night I'd held high hopes, but this was merely mediocre: bowls of jambalaya, some sad slices of chicken, and not a lot else. I quickly lost sight of everyone, then touched base with Arvi, Raffi, Richard and Rajiv; we grabbed two tables and pulled them together in anticipation of a large RM crowd settling, but after several minutes it became clear we were on our own. This was doubly unfortunate because it invited visitors, including one strange guy who introduced himself and sat down. I forget his name and the company he worked for, but he was one of those people who are really friendly while rubbing you the exact wrong way. He noticed we worked for Rocket Mobile (which led to a funny moment where it became obvious that Richard hadn't met Rajiv before - understandably, since they're on opposite sides of the building and Richard's new, but still pretty funny) and mentioned he'd attended Ray's session earlier. "It was pretty good," he said, "Except that I totally disagree when he says that BREW is easier to port to than Java." This was something so completely unlike what Ray would say that I didn't know how to respond - I wanted to say "You must have misheard him" or "He did qualify that statement, correct?", but at the moment I was trying to avoid conversation. After I'd cleaned my plate Rajiv asked, "Hey, Chris, do you want to go get dessert?" I said "Sure" and we left. Rajiv leaned in conspiratorially and said, "And not come back." We laughed and moved on to greener pastures.

The beer was freely available but mixed drinks cost one ticket each. We had each been issued three tickets and a black market quickly sprang into action, with teetotallers selling their tickets for favors. We also found that occasionally a bartender would forget to claim a ticket. All that to say, there was a decent amount of alcohol in play. I started the night with Heineken, then moved on to my cocktail workhorse of rum and coke. (I know that "Beer then liquor will make you sicker, liquor then beer you're in the clear," but I've never been able to do this. I'm always thirsty when I start drinking so I want beer; if I do work in liquor, it always comes at the end after I've got food in my stomach.) We found a dessert table, which was excellent as always: soft chocolate chip cookies, a nice chocolate cake covered with warm strawberries, and a sort of apple pie ice cream cone. I sampled each multiple times over the course of the evening.

Rajiv and I located another table where Greg, Eric, Cathy and Sasha had set up. The fluidity continued as the night went on, and I got to spend time with each of my co-workers over a variety of locales: the tables, the Sprint "Oxygen Bar", the chillout room, and the funky karaoke room. I didn't mingle much outside my company, and I'm not entirely sure why. Probably partly because I'm not super-sociable to begin with, particularly around strangers; partly because I had been scared off by my earlier meeting with a non-Rocket-mobiler.

Many levels of inebriation were on display; nobody from our company totally lost it, but certain people were much more enthusiastic about, say, karaoke than others were. Jim proposed that everyone on his team sing karaoke, in ascending order of age. (Coincidentally, this would have put him last in line.) Josh, our baby, announced that his voice was high enough for him to sing The Darkness' "I Believe in a Thing Called Love." With very little argument he persuaded Graham, who is also very young, to accompany him. We were hanging out in the karaoke room for them to start when the DJ announced that Earth Wind & Fire were getting ready to take the stage. We all headed outside for the concert.

Every year, BREWFest includes a once-big band for a concert. Previous years have featured Huey Lewis & The News, The B-52s, and Kool & The Gang (who I actually would have enjoyed seeing). Apparently, ampersands are a big factor in determining which band gets to play. I couldn't name a single song EW&F had done, but, hey, a concert's a concert, and I'm all about going with the flow. We gathered together in a big.... hm, it was probably a parking lot by day? I don't remember the surface too clearly, but it was probably paved. Anyways, we gradually reconstituted until we had close to a dozen RM people together. A few people (Cathy and Eric) seemed excited for the show, the rest of us were hanging out and cracking wise.

One nice thing about a concert like this: there's no opening act, no MC, no self-promotion. The concert was meant to occupy a block of time in the evening's entertainment, not be an end unto itself. They took the stage astonishingly close to the advertised time and launched into a high-energy rendition of a song I would probably know if I were 20 years older. I still enjoyed it - the band wasn't phoning it in at all, and did all their choreography and performance with full passion. By far the highlight was their bass player, who is probably an original member. He was wearing a see-through shirt over a wifebeater along with tight leather pants with fringes on them. He strutted all over the stage, emoting more than anyone else I have seen recently, and was absolutely mesmerizing.

After a while the RM crowd started to get into it a little. Cathy worked her way to the front of the stage, Eric moved in a bit closer, and Graham said, "At first I was hating on these guys, but this actually sounds pretty good." During one slow song I pulled out these funky things we were given in our drinks - they look like ice cubes, and change colors when placed in liquid or held in your hand - and shook them over my head in rhythm with the song. The rest of the RM crew, who had been collecting them throughout the night, joined in as well. I felt an odd sensation of accomplishment.

During a slow song we worked our way out of the crowd towards the back, where a few tables and chairs were scattered. Jim had successfully smuggled in a bottle of liquor and we did shots around a table - he'd grab a cup, pour it discretely under the table from under his jacket, then set it on the table and do another. I only did one but it packed a decent punch. If possible, the mood grew even more relaxed, and we made our way to the chairs and I started asking my hypothetical questions.

After the show finished we headed back in. Some of us camped out in the karaoke room for a while, enjoying singers with... diverse amounts of talent. Some were very good. I was disappointed that Josh hadn't been called yet, though. After a while I got a text message from Jim - "Food and oxygen downstairs." I grabbed some of the ladies and headed down. I paused on the way to stare, impressed, at the dance floor: they had cleared out the center area where most of the food tables had been and set up a pretty amazing venue, with flashing lights and pillars and a really good sound system. The song selection was kind of pop-y as opposed to my preferred electronic dance music, but still sounded really good. After a brief pause I rejoined the others en route to the basement.

Sprint, which has traditionally been on the other side of the fence from BREW developers, was trying to ingratiate itself: they ran the Java Bar (clever name!) in the pavilion, serving high-quality coffee throughout the day. At BREWFest they ran an oxygen bar. I'd heard of these before, and earlier in the night had talked with Ray after he did it. He said that he got really agitated when he was on an apricot blend, but when we switched to some calmer flavors it got better. Jim was already hooked up to one station when I got there, so I took another and plugged in.

"Oxygen Bar" sounds pretty exotic. Essentially, what you have is a set of chambers filled with various liquids. Through some process that I don't really understand, pure oxygen runs through the liquids, absorbs the odors, then runs through tubes into your nose. I stayed on mine for several minutes, playing with the various flavors, but the only real difference I noticed was in the smell; I was kind of hoping for some of the mood-altering that Ray had experienced, or the consciousness-altering that the name had initially suggested to me, but nope: just different smells. Still, it was a nice break. Jim and I took pictures of each other, though he may have cheated by getting me while I still had rubber tubes in my nose.

We sat around and chatted a bit more, gradually acquiring more people as we seem to do. Someone came down to report that Josh was about to finally sing, so we high-tailed it back upstairs.

This was probably my high point of the night. It's just very, very funny to see people you know make spectacles of themselves in public. Josh and Graham were joined by James, another young'un, and they didn't just sing, they PERFORMED, with dramatic poses and dancing. I captured the entire song on video, and it is a treasured possession of mine.

Very soon after they left, Eric was called up, and he did a very good performance of CCR's Proud Mary. I took a video of this one as well, and shortly after it starts, you can see Cathy and Graham dancing into the frame. A great time for everyone. Cathy was called up later for The Beatles' "All You Need Is Love" (requested in honor of Rajiv, who was leaving for India to get married, but had left before she was called), but she was expecting to get more help than she got, so turned it down. Jim put in his name for a song, but the DJ announced that the night was almost over, so instead we headed down to catch the last few minutes of dancing.

Like I said, it was a really sweet setup. I'm not sure why, but the number of females present were much higher than what you would have expected based on what I saw during the conference. Whatever the reason, it was a lot less scary than hundreds of male nerds dancing would have been. We got down there for the last half of the Black Eyed Peas' "My Hump," an incredibly catchy song that I will never, ever be able to sing out loud. This was followed by the last song of the night, Bob Marley's "Every Little Thing Gonna Be Alright." It was fun. I enjoy dancing, and this was the perfect setup: no partners or couples or special steps, just a mass of people moving around to a beat.

It was a little after 1AM when we left. We were still really high from the event, and probably scared our bus driver - the whole way back to the hotel we were singing and doing percussion for the Marley song. There was a lot of general excited chatter, and I'm sure many things were said that were immediately forgotten.

I would like to take this moment to observe that the hotel's rooftop pool closes at 9PM. Therefore, it is logically impossible that we would have gone swimming in our boxers until after two o'clock in the morning.

Once again I woke up bright and early. Well, not THAT early - these days, 8AM is actually sleeping in for me. I did a shower and got breakfast, chatted with Eric, Ray, Shane and Richard, then headed in for the day's keynote.

The keynote was given by Peggy Johnson, and while she has been involved in every conference this was apparently her first actual keynote. There was no extravagent show opening it up, and she launched directly into the meat of her talk, which was "Exploring the Evolution of Data Services." It was supposed to run for 50 minutes but was much shorter. She gave up the stage for a representative from Telecom Italia, who gave a passionate speech that I somewhat understood. It was actually pretty cool from a market perspective; he talked about how the company was combining their landline and mobile divisions under one umbrella and encouraging convergence through unified portals and, eventually, content access. Europe is another area that's ahead of the US in mobile usage, and it was good to get a look at what was happening over there.

My next session was "Preparing for the next generation of BREW." At least, it was supposed to be. I got a call from Jim right before the session started about an emergency back at the office, so I grabbed my bag and dashed out. I ran into someone I had interviewed with at WeatherNews, which was unexpected and really nice - he said that I was one of their top one or two candidates ever and they were disappointed to not get me, which made me feel really good. We exchanged business cards and I excused myself before dashing off. Trying to be clever, I had checked my suitcase at the bell desk in the morning; unfortunately, I had put my laptop in there, so I needed to reclaim it to do work.

After taking care of that I went back down to the pavilion, which offered free wireless and a "Laptop Alley." I plugged in, saw my cell phone had run out of power, swore, then hopped on AIM and started contacting people. Everything worked out, which was good. Naum kept me company for a while, and once everything was under control I stumbled upstairs to get food.

Friday's lunch was similar to Tuesday's, tasty and relatively simple. After eating we returned to the pavilion again to sample the desserts, a different but equally tasty array of cake. I was summoned again to do some "real" work, and sat out the next session while investigating and coding.

I was now moving towards a moral dilemma: should I stay or should I go? The last session ended at 3:45 and our flight left at 5:55, which felt a little tight to me, especially given the horrible taxi situation on the way over. I loitered in the lobby for a while, hoping to find other nervous people to show up. Charles appeared and shared my concerns, and together we convinced Eric to leave with us. Sasha and Cathy were already ready, and when we ran into Wayne they bluntly told him, "We want to go home!"

So we took our taxis to the airport, checked in, and hung out. I found out that, while staying for the last session would have cut it close, leaving when we did had brought us to the airport way too early. Still, there are worse places to kill time than the San Diego airport. Once again we took over a section of a building, and as other Rocket Mobilers trickled in our numbers swelled. It was a final, low-key resolution for a hectic few days as we amiably chatted, shared the highlights of our time, or stuck our noses in books and earphones into ears. (I also found out that Ray just started reading The Big U, which made me happy. As I think I've mentioned before, this may be Stephenson's most underrated book.)

I sat next to Jenny on the flight back to San Jose. Once again I found myself giving a little spiel about my thoughts on moving to California. She has worked as a consultant in the past and worked all over the world, so we talked quite a bit about her experiences in Europe and Asia. I've done so little travelling outside the US, but I hope to increase it.

And, just like that, we were back! I rode the train back home, stumbled inside, cooked up some soup and soon went to bed. Then went back into work on Saturday, but that's another story. It's been about a week since I first headed out there but already it seems far away, a distant happy memory. I learned a lot, I grew a bit, and I had a heck of a fun time. It was really great of Wayne to send as many of us as he did, and I look forward to returning in the future.

For pictures, check out the Sprinkles.

No comments:

Post a Comment