Go watch this video about Siftables over at the TED website. It beautifully demonstrates why place and physicality matter in information processing and experiences. Plus it's a great tutorial for how to think about programming in Second Life using LSL2. Place, interaction, and relative-positioning -- and then using those to change how your primitive looks -- were some of the most basic building blocks of LSL2. I don't know if David has used Second Life, but there are ton of groups near him at the Media Lab deeply immersed in these ideas. Very cool and congratulations on a talk perfectly tuned for TED.
Friday, February 13, 2009
Monday, January 12, 2009
changing views
At Linden Lab, we took a brief look at Ruby in 2006. Some Rails code had snuck into deployment and as we were digging into refactoring back end communications, Ruby and Rails came up as an option. At the time, I remember thinking that Ruby had a comfortable syntax and was as easy as Perl for whipping out quick-and-dirty tasks. Early performance testing was not encouraging and that first production piece of Rails code had issues, however, so Ruby and Rails got lumped together in the collective Linden hive mind as Bad Technology(tm).
Thus, when Peter decided we were going to build on Ruby and Rails, it gave me pause. Of course, since Peter was going to run engineering, it was his call. Plus, James Currier and his team at Ooga Labs were happy building on it.
So, Ruby it was.
The last six months at EMI have been a blur of learning the music business, adapting to working within a large company, and building a technology team. In making initial hires, I realized that my lack of Ruby expertise was hurting my ability to interview candidates. I had been through the pickaxe book, and various bits of data analysis code had moved from Perl to Ruby, but I hadn't built anything of substance. So, over the holidays I took on a chunkier side project. Details to come in a later post, but in building it a bunch of useful Ruby lessons emerged.
First, if you know other programming languages and want to bump your brain into Ruby context, read "Design Patterns in Ruby." Best Ruby book I've yet read and its intro to Ruby chapter is a superb intro to the language.
Second, embrace behavior driven development, rspec, and rcov. BDD takes things a step up from unit testing. If you're an old time C coder, you probably are used to whipping your design out in broad comments and then coding the elements in. BDD changes this from writing comments to writing user stories and then your unit tests as you go. Hard to describe how addictive this style of coding is until you've done it, but it explains the evangelical nature of its adopters because it's fun! At a mental impasse? Write a few more stories. Haven't had your first cup of coffee yet? Sketch in the class structure to pass early tests and add a few more stories. A few minutes before the end of the day? Bump your code coverage to 100% on a file that currently is at 70%. Note that none of this applies universally to Ruby, nor did Ruby invent any of this. What Ruby does give you is a fairly easy to install and use framework of tools.
Third, if you're on a Mac, use Growl and ZenTest and then configure reporting. What this does is to automatically rerun your tests every time you change a file and then report the results via growl. You can even have the Doom marine tell you how you're doing! It's all about reducing the development process to small, bite-sized chunks, with the added hook of continuous feedback.
Fourth, I've already talked about git and github for source code control. Having lived in the CVS/Subversion world for so long, git continues to impress. Super fast, flexible, and integrates well with TextMate.
Finally, we've started having movie time at lunch and watching the Pragmatic Programmers series on Metaprogramming. Very useful, without the "look how clever my code is" aspect that seems to permeate a lot of the online discussions.
Friday, December 12, 2008
something to wash away the swoopo aftertaste
I remember seeing the first screen shots of Love earlier this year, but Rock, Paper, Shotgun just posted a movie. Eskil Steenberg is one talented dude. Beautiful visuals, a commitment to user expression and creativity, and totally old school software rendering. What's not to like?
Eskil's blog is pretty interesting as well, especially the many posts that read almost exactly like Linden discussions from 2000 or 2001.
Thursday, December 04, 2008
perusing change.gov
And the combination of economic, foreign policy, and education issues jumped out at me and reminded me of one of my white papers. I went back and found the section that applied:
Certainly, outside experts and people of renown can bring attention and business to a country. Perhaps a single speech or several days of meetings can generate a few new ideas or inspire a local entrepreneur. Unfortunately, the time and costs required to physically transport senior advisors around the world ensure only a very small number of advisors will be asked to participate. This a priori determination of fitness is contrary to virtually everything understood about innovation, where broad approaches are needed. Worse, the nature of an advisory role only focuses brainpower on the nation-state's interests for very short periods of time around specific visits or events. This is reminiscent of the "Eureka!" myth that innovation resides in brief moments of brilliance rather than deep, engaging collaboration. But the real loss is that no matter how brilliant or valuable the strategic advisors are, there is the missed opportunity because the advisors rarely have time to work together. Rather than enabling a collection of great minds to collaborate, cross pollinate, and spend significant time on the problems facing a nation-state, advisory board meetings tend to be whirlwinds of speeches and posturing. It is only the rarest of events that are designed to build the kind oflasting connections so critical to collaboration and innovation.
We need approaches and technologies to help us be smarter, connect across distances, and share knowledge trapped in different networks while emitting less carbon and creating new opportunities. With Lively shutting down and Wonderland unlikely to survive Sun's massive layoffs, how will this affect Second Life during 2009?
Of course, this need goes way beyond Second Life, but that will have to wait for a later post.
Wednesday, November 05, 2008
yes we did
I'm writing 38,000 feet over the North Atlantic and I feel like jumping up and down. I'd probably end up arrested and the flight diverted to Reykjavik if I did, so perhaps not.
But I want to.
One of the flight attendants just passed along "200 to 90. Obama won Ohio." I can't remember enough of Nate's work to know if this makes it a sure thing and part of me is still convinced that he'll somehow lose and I'll have to move to New Zealand.
I was a Linden employee for 3 days when I got on BART to head home and heard they had called Florida for Gore. People were laughing and joking on the train, happy the math looked promising. It was a good night. New job, world's coolest project, cool people to work with in Philip, Andrew, Tessa, and Frank, and the country going in the right direction.
When my fiance picking me up at BART, she said Florida was back in play. We spent the night huddled around the television, waiting to see what happened.
I listened to a lot of NPR over the next weeks. Wrote the land code to arguments about chads, fairness, and the democratic process. Worked on strain gauge geometries with Andrew as we played with the rig. Created predator-prey models for the forest and whipped out the first version of lltask. Called Philip from the train home, excited about an idea to integrate a 3D Sodaplay.
And then it was over. The Supreme Court ruled and Bush was our President.
Fast forward 4 years. Our country went through 9/11, invaded two sovereign nations, failed to capture bin Ladin, survived the dot com bubble, and become more partisan than any time in recent memory.
Interesting times for Linden as well.
The forest transformed into Linden World and then into Second Life. We launched, failed to grow, laid off 1/3 of the company, gave residents IP ownership, changed the economic model, and received a big round of funding just before the State of Play 2 conference in New York. Everyone I knew was excited for Kerry's prospects, expected it to be close, but had faith that American's would see what a disaster the first term of Bush's Presidency had been.
Jerry Paffendorf had asked me to speak at the Accelerating Change conference at Stanford, so I was writing on Tuesday as the exit poll numbers started leaking out. A Salon article riffed on those numbers and suggested that Kerry was going to win. Again, a happy trip home on BART. Again, very different numbers by the time I was home. Another night up late watching the numbers. My wife and I went to sleep knowing that Bush had won again.
The next day half of Linden stayed home and commiserated over irc and email. We had more people in the office on 9/12.
On Thursday I was staring at a talk that just wouldn't pull together. Angry, depressed, sad, it was hard to build the kind of talk Accelerating Change deserved. Philip suggested I write angry, so I did. It wasn't filmed, but the audio is online.
I listened to that talk while waiting for my flight. As hard as it is to listen to myself -- I sound like that?? Seriously? -- it was a nice trip back, because this was the first time I spoke about some of the underlying drivers of Second Life that have impacted so much of my thinking since then.
Cultural production. Real-time, collaborative creation. Continuous improvement of content in the world due to breadth of participation and competition. Economic motivations driving massive and long-term cooperation and organization. Using Second Life for education, training, and as a filter for hiring.
People and communities not being evil.
As mad as I was, I'm a little surprised I remembered that. After all, my community, my country, just let me down. We allowed bigotry and fear to profoundly impact our decisions. Listened to sound bites rather than each other.
But the evidence of Second Life was compelling. Given tools and capabilities, people worked together in amazing ways. Leveraged amateur-to-amateur education on a scale no one anticipated. Cooperated. Created. Innovated.
Which brings us to now.
Virtually everyone smart I know was somehow involved in the Obama campaign. I first brushed against the campaign nearly two years ago and they were already asking questions, creating a ground game, and building on what Trippy and Dean accomplished with everything learned about viral communities in the intervening years.
I didn't end up involved with the campaign to any degree. Sure, I blogged about it and donated, but mostly I was working. I was asked to sign on to Obama's tech policy when it was released last November and would have, except that the final version hit my inbox a few minutes ahead of Philip's email informing me that he wanted me to leave Linden. Unfortunate timing, that.
Fortunately they had plenty of voices of support. It was, and is, a good start for thinking about technology. More on that in a later post.
I do smile remembering a wide ranging brainstorm session at Aspen airport on the way home from the Aspen Institute. There were both Obama and Clinton advisors there and we were talking voter registration and turnout. Traditionally, ground teams focus on getting people to make 3 commitments in order to ensure turn out.
Make a donation. Go to a rally. Vote in the primary.
If you do those things, you'll vote in the general election.
We talked about how to use technology to help. Give volunteers online communities to feel more connected. Use participation in social networks as overt acts, commitments. Mashup data to help registrations. Remember that "email is for old people", so focus on cell phones and SMS to connect to the youth vote. I doubt much of this was new to the Obama team, but over the next year there were some follow up questions and phone calls. A lot of knowledgeable online community people get very, very busy.
All of which led to an historic, game-changing election.
An election where we spent more time learning from each other rather than from Rovian sound bites. Where communities connected both internally and across boundaries. Not that we're done, but Obama's broad base of support should be a mandate to heal the destructive red-blue divisions so exacerbated during the last 8 years.
Healing that should serve as a model for how America -- and more importantly, Americans -- reengage with the world.
A flight attendant just passed along "Obama has 324."
Maybe I will start jumping up and down.
Congratulations, President-Elect Obama! Hooray as well for everyone involved in his campaign.
Yay, us!
Monday, April 07, 2008
connections and networking
I was chatting with Pathfinder at the Virtual Worlds Conference 08 in New York and we realized that there were two particularly long chains of personal connections that were relevant to the event and Second Life. The first was the State of Play conference, the second a video I had just been emailed showing Second Life being used for public diplomacy in Doha, Qatar.
The inaugural State of Play conference in November, 2003 was the first inflection point in Second Life's growth. It was where Philip took down the house by announcing, during a shared panel with There.com's Will Harvey, that Second Life residents would retain intellectual property rights to their creations. This announcement, the culmination of months of debate initiated by Larry's comment about ownership (1) and a complete rethinking of our EULA, generated incredible excitement and is a huge part of Second Life being what it is today.
But how did Linden Lab end up at State of Play, a small conference about games, economics, and law, created by Beth Noveck and held at New York Law School?
To answer that, we back up a few months to the first Austin Game Conference. Chris Sherman -- who also created the Virtual World Conference -- had decided the time was right for an MMORPG-focused games conference in Austin. Robin Harper and I attended, largely because we were still unsure of whether Second Life was a game or not. Second Life had around 1000 users, so basically nobody had heard of it or knew who we were. On the second morning, Raph Koster delivered the keynote that later became "A Theory of Fun", which hit many topics related to user-created content and motivations for creation, so I decided to go up and say hello.
I hadn't met Raph yet at this point, but he knew about Second Life because our first community relations employee, Peter Alau (2) knew Raph from Sony and had setup a meeting where Philip and Peter visited SOE and demoed Second Life. Raph recognized the Linden Lab t-shirt I was wearing as I waited after the talk. We started chatting and ended up talking about music, along with an ASCAP lawyer who had some very interesting questions about music in online games.
As we walked across the main hall, Raph mentioned to the lawyer that he was speaking at a law and games conference at New York Law School. He said that Ted Castronova was going to be there, too, and this it would also focus on economics. I thought that it seemed like a good conference for Second Life, but then didn't think much about it until I was sitting at Austin airport with Robin, waiting to fly home. We were discussing the fact that even though AGC was a great conference, Second Life didn't really seem to fit in. I remembered Raph's comment, did a bit of googling -- since I hadn't remembered which New York school --
and showed it to Robin. She thought it looked interesting, especially since we were in the midst of our IP transition, so once back at Linden, she and Catherine Smith reached out to NYLS and Beth.
And to think that Robin and I considered skipping the keynote!
This will seem like a left-turn at Albuquerque, but it isn't. I just received a pointer to this video:
This video is thrilling to see, because it raises some of the ideas possible when virtual worlds are applied to public diplomacy. It also demonstrates how far networks can extend.
After State of Play, Beth gave a talk at Harvard on virtual worlds, law, IP, and economics. This talk generated a lot of excitement at Harvard and led to me being invited to speak at the Berkman Center, where I met John Clippinger, a Berkman Fellow. John was working on the user-centric identity project Higgins (3) which seemed very applicable to Second Life, so he invited me to a later Berkman conference. At that conference, John, BCG's Philip Evans, and I ended up kicking around the idea that the massive entrepreneurial activity within Second Life could be a model and tool for real-world collaboration and market activity, and that Dubai might be the perfect test case.
John thought he knew the perfect person to ask about it, so a few weeks later we met Della van Heyst in Palo Alto. Della deserves a blog post -- hell, an entire blog -- all to herself, but for this story it is enough to say that she didn't think Dubai was the right place to start but that she was organizing AMD's Global Vision conference and would I like to speak at it, since Second Life was running on a huge grid of AMD-powered computers? That seemed like a great opportunity for us, so I accepted.
Ironically, by the time of the conference, Intel has reclaimed their lead in the MIPS/watt game and Linden had switched back to Intel CPUs, making for a somewhat awkward talk. The evening before my talk, Della hosted a speaker's dinner where I met Juan Enriquez and talked his ear off about virtual worlds and their uses. Juan subsequently introduced me to Cynthia Schneider, the former US Ambassador to Holland and one of the organizers of the US Islamic Forum in Doha (along with Peter Singer at the Brookings Institution.) Thanks to Cynthia, I attended the conference, spoke at Brookings (4) and re-introduced Cynthia to Josh Fouts at the Center for Public Diplomacy (5).
Which led to the panel and video at this year's Doha conference.
Pathfinder had seen the video -- and has met most of the connections in this story -- but as we laid them all out, we were amazed by how infectious the promise of virtual worlds are. It was against the backdrop of that conversation that I found the sudden smallness of virtual worlds disappointing.
Notes, because there are even more connections...
(1) I've written about the impact of Larry's comment in "Collapsing Geography".
(2) Peter, worked at Linden because his then-girlfriend/now-wife and my wife had met at a mutual friend's wedding.
(3) Higgins also has historical links to Andrew Donoho's Papillon project, which arose in part due to State of Play and a tech talk I gave to IBM Austin's Advanced Technology Group.
(4) Which led to the hiring Sue Singer, who Congressman Markey specifically thanked at the hearings last week!
(5) How I met Josh and Doug, and ended up teaching at Annenberg, is in a previous post.
Wednesday, January 30, 2008
demo 2002
The Demo conference is going on right now and the blogosphere is abuzz. Certainly, Demo doesn't have the same glow that it did during the dotcom bubble, but I'm hearing more about it this year than I have for a while. This got me thinking about Demo 2002, when LindenWorld was first showed to the public.
I don't recall why we picked Demo 2002 as the venue for our launch but we started pushing in January -- Demo that year was in February. A lot of the pieces of what would be Second Life were in place. Primitar had finally been replaced with human avatars. Those humans even had some rudimentary customizations, mainly around t-shirts. Using LSL1 we had built a small city with operating doors, an elevator, a slide, and music mix table. As the planning came together, we spent a lot of time debating exactly how to use our 6 minutes. If you aren't familiar with Demo,you have 6 minutes on stage, with a big timer. They give you the hook when it gets to 6:00.
Someone had uploaded scans of US coins and we realized that a very cool effect was to alt-zoom onto a coin on the ground then back the camera up into the sky, past the clouds and the space station, before zooming in rapidly. We decided to have the coin on the floor of a copy of the hotel Demo was being held at, so we all scoured the Web looking for source images. Soon, a rough approximation of the grand ballroom appeared, with lighting keyed to switches and huge sliding back doors to fly out.
Meanwhile, Philip was writing out his speech. It was -- and as far as I know still is -- the only speech he ever wrote out and practiced. It evoked Legos and Tinker Toys before switching to a rolling description that I would fly to. Philip would say "So, let's turn on the lights, open the doors, and fly out into the world!" and I would click on the scripted objects before flying out the back of the room, over the hills and onto a platform where I road an elevator down to the town's main street -- with Philip joking about the "elevator pitch" -- before a quick walk through some LindenWorld tutorials, a trip to a dance club, and then fireworks. We practiced this demo dozens -- hundreds -- of times, until we had it down.
But, there were problems. We had no idea what kind of net connection was waiting for us in Phoenix, so we packed extra computers to run a local grid. Worse, no laptops in early 2002 could run LindenWorld at all well, so we shipped high end Dells and carried out top-of-the-line nVidia cards. James Cook became the master organizer, taking over several desks in the office to collect everything we needed. He tested and packed spares of everything. Mice, graphics cards, network cables, switches, power cords. He figured out how to spread items between different boxes so if shipments were lost we'd never be SOL. We didn't trust Dell to deliver working computers, so James and I would went to Phoenix early to test the network, pick up the machines, and solve any problems.
We got to the hotel and after wandering into a lot of random rooms, stumbled into Chris Shipley and the Demo team. We found our computers and their networking gang. They were just getting the network up and initial results looked bad -- incredibly high ping times. However, the route settled out during the day and soon we were happily running LindenWorld from the show floor. Sweet! We went to the airport to meet Philip and Hunter Walk before having dinner with Mitch. We were able to do a run through in the demonstration area and it went smoothly. Everything seemed to be going well.
We were the first demo of the conference, so I was up early the next morning and wandered over to the ballroom. Small problem -- no network! I woke James up and he and I started thinking through how to run a local grid when the Demo network team found their problem and got their network up and running again. Everybody started getting tense as time ticked down to the start of the conference.
I went into the bathroom and all you could hear were nervous geeks vomiting into toilets. You could smell the fear and tension. Remember, this was February, 2002. We were deep in the crash, 9/11 had seemingly just happened, nobody was getting funding for anything. A Demo performance could be make-or-break for dozens of companies.
Philip and I went backstage and waited. Chris gave her opening speech and then it was us. There were three steps up onto the stage and Philip clipped his toe and nearly wiped out. But, he recovered and launched into his talk. The demo computer was working fine -- did I mention that we crashed the demo about 1 in 10 run throughts? -- and I zoomed the camera in -- "Philip joking about the 30,000' view" -- trying to sync with Philip. I flew out, avoided biffing the landing at the elevator, and watched the time. We were dead on. Linden employees in San Francisco were logged in, too, so we walked past them at the demo area, and headed for the dance club. I tossed grenades and shattered a box textures with a horrible Power Point slide -- no Power Point at Demo! -- which was especially cool as this was when we briefly had real-time vertex shadows on the terrain, so the tumbling pieces cast shadows. The I hit the Windows key and dumping out of full screen mode.
Yes, after practicing a billion times, I hit the fucking Windows key. I had a moment of panic before maximizing the app and continuing. Unfortunately, the transition from full screen to windowed caused my avatar to stop rendering, so I flipped into first person, hit the dance club, spun some tunes, before going outside, rezzing some fireworks, and launching them as the clock hit 6:00.
We had done it! To thunderous applause, we left the stage and high-fived. Philip was laughing about almost tripping and hadn't noticed my Windows key snafu. James came back stage and said we had rocked and that the stage dress had hidden the almost trip. We watched the rest of the demos before heading for the show floor to do demos and talk to people for two days, laying groundwork for our private Alpha and some of the mainstream interest that would follow.
In hindsight, we spent a lot of time kicking ourselves for not just showing a movie. Sure, Demo is all about the ballsy, high wire, live demo, but the reality is some people play it safe. We were watching one of the broadband wireless demos -- supposedly live -- when James noticed the he and I were in the background of a "live" shot outside. Either we had mastered the art of bilocation or those guys were faking it. Different strokes for different folks.
For Linden Lab, it was a huge turning point. We had met an external deadline, had proved that people not at 333 Linden Street would find the idea interested, and had the pieces in place to open for Alpha. All-in-all, Demo 2002 was a pretty important moment in Linden history.
And, from then on, whenever I have used a Windows PC, I've ripped the Windows key off the keyboard.
Tuesday, January 22, 2008
metaverse memory: lsl1
I just had a chance to read James Au's new book, "The Making of Second Life." It was a fun read, but like any collection of memories, it captures only a tiny slice of the events that went into making Second Life. So, I think it would be fun to make a semi-regular part of this site different moments from my memories of the first 7 years of Second Life.
So, my first metaverse memory:
Around August of 2001, back when Second Life was called Linden World (note 1), there was no scripting language in SL. Primitar was about to replace the spaceships and floating eyeballs that were the original avatars and James was doing the first major UI revamp so that we could add to the world without shooting. The entire team had been debating how to add behavior into the system for months, with Philip arguing that we should just use physics. Philip had some really good points, because if we were able to use Havok for all of our behaviors, residents would be able to gauge the complexity of an object by just looking at it -- like mechanical systems in the real world -- and we wouldn't have to divert scarce resources into a project that could take significant time and effort. Mitch was also an advocate of visual complexity representing behavioral complexity, and I think there was something to that idea.
Unfortunately, Havok running on Pentium 4 servers was nowhere near powerful enough to represent complex systems in a general way. We had built some simple slides and teeter-totters, and while these were good geek fun, they didn't extend to create the kind of behaviors we all knew the world needed. But, I also believed that Philip was right. We just didn't have the development resources to divert a large number of people to build a scripting language.
So, I decided to crank one out in a night. Andrew and I both did semi-regular all nighters during those early Linden days -- including a memorable night when Andrew managed to lock me out of the room my keys were in and set the alarm, but that's another story. I am a huge believer is limiting developers to 40-50 hour weeks in order to maintain long-term productivity, but it is fun to occasionally proving you can still create something in a night. A simple language seemed like a perfect fit.
LSL (or, what became LSL1 when I wrote LSL2 to replace it) looked a lot like assembly, because this allowed the least amount of work to go into the parser and compiler. It had some of the functionality of the LSL2 -- for example, it could detect if you clicked on an object or a collision -- and had functions. It also was already event driven, an approach central to LSL2. Most importantly, it was working just in time for a Friday "Show and Tell"! I built a simple garage door, where a box would move from open to closed when you clicked on it, as well as some rotating objects, and demonstrated it.
Everybody was jazzed and after some discussion, we agreed that it should get rolled into the code. Philip immediately combined LSL1 with the physics engine to build the wind chimes that graced the original starting area. It would be about 8 months before I found time to revisit it and build LSL2 (note 2), the scripting language used in SL today. Finding time to build LSL2 became critical because our Alpha residents were building content so quickly in LSL1 and we knew that we couldn't support LSL1 going forward.
But that is a story for another day.
(1) There have been various reports of where the name Linden World came from. Sadly, that name was my fault. When I gave my signed offer letter to Philip, we met down at Accel's office in Palo Alto. One of the best parts of the early Linden offer letters is that Philip wrote them in a relatively informal style that perfectly captured his excitement about Linden. If I recall correctly, it had a wonderful phrase about how happy he was to be hiring me and that we were going to change the world. I was excited and worried, since I was walking away from what I knew -- game development -- and trying something quite new, and a bit intimidated by the whole Accel VC vibe. Philip set me at ease and introduced me to several of the Accel partners, including Jim Breyer. I handed him the paperwork that would put me on a new path and he shook my hand, saying how much fun we were going to have building this new world. I responded with "Yes, building Linden World is going to a blast." I paused. "But, let's never call it that!" Unfortunately, the name stuck in early discussions with Andrew and Frank -- and was cemented thanks to Frank's "Welcome to Linden World!" audio sample -- despite all of us agreeing that it was a horrible name. It wasn't until after Demo, the hiring of Hunter and Robin, and the move to 2nd Street that we were able to really revisit the name.
(2) LSL2 was designed and built over the course of about a week in early 2002. I had done some general Lex-Yacc homework before that, as it had been years since I had used them, and we did one meeting where we brainstormed what the structure of LSL2 should be. The initial LSL2 implementation didn't have lists. An extremely broken list implementation was added a few months later and then debugged for months. LSL2 will soon be running on the Mono open source CLI engine, which will make it much faster. For all of its challenges -- nobody is harder on LSL2 than I am -- it is still satisfying to know that over a million people have collectively written over 2.5 billion lines of code with LSL2.