August 23, 2008

Origins

Read this while holding in your mind the roles of the villages which are currently appearing on the web:

What happened rather with the rise of cities, was that many functions that had heretofore been scattered and unorganized were brought together within a limited area, and the components of the community were kept in a state of dynamic tension and interaction. In this union, made almost compulsory by the strict enclosure of the city wall, the already well-established parts of the proto-city - shrine, spring, village, market, stronghold - participated in the general enlargement and concentration of numbers, and underwent a structural differentiation that gave them forms recognizable in every subsequent phase of urban culture. The city proved not mere a means of expressing in concrete terms the magnification of sacred and secular power, but in a manner that went far beyond any conscious intention it also enlarges all the dimensions of life. Beginning as a representation of the cosmos, a means of bringing heaven down to earth, the city became a symbol of the possible. Utopia as an integral part of its original constitution, and precisely because it first took form as an ideal projection, it brought into existence realities that might have remained latent for an indefinite time in more soberly governed small communities, pitched to lower expectations and unwilling to make exertions that transcended both their workaday habits and their mundane hopes. - Lewis Mumford, The City in History

It is a mistake to do theoretical work on online social spaces without first reading The City in History.

August 13, 2008

CitySpace

Though there is some skepticism about the reality of this technology, the CitySpace/LivePlace concept video (via techcrunch) hits a lot of high notes in terms of where we're headed with online shared urban spaces.

July 07, 2008

Moving Forward

A brief hiatus from Ogoglio development has given me a bit of time to step back and evaluate how to drastically improve accessibility and ease the burden of development for people just getting into web based 3D spaces.

Step One: Usability

Over the next few weeks I'm going to frame out a Flash 10 based client which will replace the Java3D applet. The current client has played a crucial role in helping nail down exactly what we want on the client side (more on that later) but Flash's install base and recent betas make it clear that Flash is quickly becoming the de facto standard for 3D on the web.

Step Two: Refinement

Once we have a working Flash client, I have a new design for the server framework which will greatly simplify the code path between the DB and the browser. In short, the app tier will automatically wrap a specially crafted schema with a RESTful web api. On the client side, a Prototype based library will dynamically create a handy wrapper object. If my prototype is any indication, this new approach will not only reduce the load on Ogoglio developers but will be considerably easier on the app tier CPUs.

Step Three: Distribution

Once those pieces are in place I intend to combine the best of breed clustering platform for Amazon EC2 (currently Scalr is in the lead) with a precompiled Ogoglio system so that anyone with an EC2 account can boot a massively scalable node in Ogoglio City.

March 11, 2008

A New Sheep in Town

My latest check-in comment:

Pleased as punch to check in the first contribution from Matt Kimmel at the Electric Sheep Company (http://www.electricsheepcompany.com/)

Matt's introduced a way to plug in new message codecs and wire protocols for world events. Not all scenarios work well with XML over Comet so being able to negotiate between different protocols depending on firewalls and applications will be a Good Thing.

Thanks, Matt!

As always, the entire Ogoglio platform for web based 3D spaces is available from the Ogoglio sourceforge project. Developers should check out the Developer Intro on the wiki.

February 07, 2008

Procedural urban texture

Introversion's dev team is building a procedural generator which handily demonstrates that it's entirely possible to fabricate an urban space:

While they're using these methods to update a game, I intend to use them to generate a starting state for Ogoglio City districts and then make the toolchain strong and rich enough that people can mutate the environment to suit their use.

(hat tip to ian for the video)

February 06, 2008

Attachments

After working out a balance between complexity and accessibility of attachments, I'm moving full steam ahead with development of a system which will allow us to have clothing and accessories without falling into the graphics card crushing morass of other, bling and fur enabled systems.

Here's Poor Grey Joe, festooned with dunce cap, shackles, and sleeveless shirt attachments. I haven't finished the renderer or the editing UI, but it's fun to see our plain avatars get a little flavor.

Picture_3

Now I just need to convince Dr. Offset to make us beanie caps.

February 01, 2008

Better than Free for Online Spaces

From Kevin Kelley's recent technium post, "Better than Free":

... the previous round of wealth in this economy was built on selling precious copies, so the free flow of free copies tends to undermine the established order. If reproductions of our best efforts are free, how can we keep going? To put it simply, how does one make money selling free copies?

I have an answer. The simplest way I can put it is thus:

When copies are super abundant, they become worthless.
When copies are super abundant, stuff which can't be copied becomes scarce and valuable.

When copies are free, you need to sell things which can not be copied.

Well, what can't be copied?

Let's take a look at a resource which is currently scarce, virtual land, and consider each of the qualities of a digital resource Kelly identifies as not free. A large part of my work on the Ogoglio project is to foster the community building (to use Kelly's term) a "Great Copy Machine in the Sky" for virtual land, so it's important that we understand what remains when that work achieves critical mass.

Immediacy:
People pay more to see a movie on its opening night, they pay more for early release hardcover books, and in a time when all spaces are eventually copied across the web there is still value in being the first to cover a new development in the genre. Look to Annie Ok's kung-fu blog, machinima, and tweet coverage of the private beta of MTV's virtual lower East side (vLES) for a good example of spending immediacy for cool.

Personalization:
Kelly uses personalization to mean that digital goods are changed to include the user's personal information, like a book which is written with a character that matches you in name and style. On virtual land this can be partially automated (and thus free) if the user has revealed their online media streams. For example Second Life stores are now using a web service to pull a user's profile picture and slap it on a rotating cube to capture window shopper's interests.

But consider an online meeting room which I have decorated with images and models which I think an individual, say Apple's iLife design lead Tim Martin, would find interesting. I think Tim would pay significantly more attention and money on that space than a place which has been freely copied. More importantly, these personal touches would be uninteresting to most people because most people don't have Tim's exact blend of interest in Porshe 411s, late 50s architecture, and existential jokes.

Interpretation:
Kelly nails this for virtual land when he summarizes the value of interpretation of all digital goods: "software, free. The manual, $10,000"

This is a common open source business model, selling services for a free software stack. Red Hat, Apache, MySQL, et al have been tuning this tactic for decades and this form was originally a larger part of Transmutable's business model for supporting and hosting Ogoglio spaces. Interestingly, Linden Lab has handed that business to their community of builders and consulting groups like the Electric Sheep Company. It appears that the market has matured enough that these groups are positioning themselves to skim from platform to platform and with this shift they are laying off their staff with non-transferable skills.

One aspect of interpretation which Kelley does not touch on is editing. As the number and types of online spaces explodes we're now past the time when any one professional analyst (even a speed reader like Raph Koster) can stay on top of new developments so a community of journalists and bloggers can create value by projecting coherent views into the churn.

Authenticity:
Here Kelley invokes the illusive customer who cares about genuine digital goods. Sadly this often boils down to crippled or downsampled copies which are sold as if they were advantageous. Look to the fiasco around Windows "genuine advantage" program which provides nothing but annoyance to paying customers while pirated copies still abound. The largest advantage of securing digital goods from trusted sources is to prevent viruses or other trojan horses from tagging along, but even this hope is largely dashed by decisions of large corporations like Sony to include rootkits (invasive monitoring software) on their music CDs.

For virtual land the value of authenticity seem to be more aligned with accessibility and patronage.

Accessibility:
"Ownership often sucks", writes Kelley, and in the case of virtual land the ability to host a reasonably large group of people requires servers and bandwidth which aren't yet ubiquitous. Here companies like Transmutable and Metaplace can clearly provide value by consolidating the IT work of spinning up a new landscape and pulling from a library of interactive objects. Instead of starting with a blank linux server and a new piece of client software, virtual land creators will soon choose from several products which give anyone with a web browser the ability to churn out massive amounts of virtual land without fussing with servers, upgrades, backups, or any other infrastructure tasks.

Embodiment:
There is a growing market for "gamer systems" like those provided by Alienware and for the 3D printing of virtual land or virtual bodies. Intel is betting the farm on selling large numbers of 3D capable chipsets to drive servers, laptops, and phones which display virtual land. Both aspects of embodiment, high resolution presentation and tangible copies, will be used to connect customers to their digital goods and niche products like the plush toys from Webkinz are starting to take advantage of mirroring physical goods in online spaces.

In reverse, when the digital aspects of a landscape or a body are infinitely copyable many companies shipping physical goods will use virtual mirrors as a place for cheap, automatic personalization which is expensive to embody. My MacBook may be an aluminum slab in real life but its virtual mirror will have angel wings and kick ass data-viz projectors.

Patronage:
Kelly opens this topic with the premise that audiences want to pay creators, and the many virtual tip jars on the web show that this is weakly true. As more virtual creative consultancies and architects pop up (e.g. Jon Brouchoud) it seems that we've started an indirect patronage of artists who use the occasional corporate gig to fund their online experiments. But I think Kelley is speaking more to flocks of individuals who contribute smaller amounts as was done by Radiohead fans who paid an average of $5 for their freely copied new album.

Live performance is also possible with virtual land. I would have paid a small amount to watch Robbie Dingo create a virtual version of Vincent Van Gogh's Starry Night because it exhibited a large amount of skill and taste with constrained tools.

Findability:
I hope that by the end of 2008 there won't be a single non-game virtual land product which isn't exporting its contents for Google to crawl. Ogoglio spaces are already web resources so most of that work is "free" but stand alone lands like Second Life are completely destroying their "magic circles" by allowing (or failing to control) search bots and other forms of crawlers which then export their findings to the web. One good example is the OnRez web search SLBrowser search of Second Life goods and services.

When search is combined with interpretation (e.g. Google + Blogs) the ability to quickly locate and use virtual land in purposeful ways becomes possible. Few business owners will aimlessly wander landscapes the size of There.com looking for a good place to host a company party, but if a google search for "online company party tiki" returns links to three different rentals in three different services the market suddenly gets interesting.

Though it wasn't his exact intent, Kelly concludes with a rally to those of us looking at virtual land as a tool for change:

These eight qualities require a new skill set. Success in the free-copy world is not derived from the skills of distribution since the Great Copy Machine in the Sky takes care of that. Nor are legal skills surrounding Intellectual Property and Copyright very useful anymore. Nor are the skills of hoarding and scarcity. Rather, these new eight generatives demand an understanding of how abundance breeds a sharing mindset, how generosity is a business model, how vital it has become to cultivate and nurture qualities that can't be replicated with a click of the mouse.

In short, the money in this networked economy does not follow the path of the copies. Rather it follows the path of attention, and attention has its own circuits.

January 31, 2008

Making models for Ogoglio spaces

I'm receiving a fair amount of interest from people who want to make spaces for the Ogoglio platform, especially since we checked in changes which make "baked in" shadows look good (like so).  On the wiki there's a helpful introduction to how Obj is used in Ogoglio spaces.

January 16, 2008

log4j ranting with some bonus apache and sun rants for good measure

There is really no excuse for log4j.  I've always said it was vastly too complex and somebody should be punished for it; today I almost wrote my own logging package it's behavior was so bad.

1) log4j does nothing when you don't have a proper configuration file.  This is unacceptable--throwing away log messages is never a good idea, at least they should go to the console or /var/log4-rejects or be burned into the machine's bios or something... 

2) log4j helpfully tells you what the name is of the logger that it couldn't figure out what to do with (as well as saying "please initialize log4j 'properly', gee thanks) but it doesn't tell you where it looked for the configuration file! This wouldn't be so bad if it was consistent at the way it fails, but it's not.  You would have thought, you blundering idiot, that if you put the configuration file in the CLASSPATH directly, things would work.  You'd be wrong.  It appears that through some number of levels of indirection the classloader gets changed (see stupid flexibility in #5, below) and thus the CLASSPATH in your shell gets ignored. Lovely.  So you must put the log4j.properties inside jar file that actually links against the logging cruft (see useless flexibility #4, below) to have it actually find the configuration file.  I suspect that if you had the apache gene on chromosome 12 you would have intuitively guessed that was the case.

3) Minor side rant: The fact that the minimal useful configuration file is several lines long is pretty sad.  You should be able to just put something like "BE SENSIBLE" in the file and have dump things to the terminal or send up flares from your machine or something that's likely to help a developer make forward progress.  Oh, and don't forget your specification of the logging format--you can't possibly expect a logging package to choose something that critical for you.

4) It would be bad enough if log4j was our only burden to bear, but of course the apache folks had to add extra layers of indirection between me and my beloved log4j package.  Three isn't a crowd here, let's add an arbitrary number of extra wheels! They have thoughtfully provided a meta-logging package (commons-logging) that allows multiple, true logging back-ends to work simultaneously (you getting this?).  This is in case you need to switch out your logging package for one of the many (I'm sure) vastly more powerful implementations that somebody is fiendishly working on right now. In his mom's basement.  Ugh.  Log4j is bad enough, but allowing extra flexibility is just going to insure that I can't get anything useful to happen without a lifetime supply of Tums.

5) I would be remiss if I didn't mention that the underlying culprit here was actually the uselessly flexible XML parsing meta-infrastructure...oh, and that's from sun, another bunch that never seemed to have anything better to do than make things that should be simple, complex. Naturally, no meta infrastructure that allows you to dynamically load or choose your XML parser implementation at run-time (gee, I do that a lot) would be complete without a dependency on the meta logging layer! So, the poor soul that just wants to parse a config file in XML (which was the case here, where I was using someone else's code) ends up with this huge set of dependencies on meta-layers and true implementations that he/she doesn't even control and possibly has never heard of. Great, so there are at least 2 extra moving parts here, just to parse a config file.  Sun, if you are listening and wondering why people are fleeing J2EE (and to some extent Java entirely), for Ruby on Rails this is the type of cruft that keeps people cursing your name.  Oh, and that boil on your left buttock, that's from me.

6) The XML parsing infrastructure (the sun provided one that the poor sod who wrote this code never even new about) had one, final trick up it's sleeve:  when it fails to parse a document correctly and is called from it's simple API (like 'parseDocument') it just exits. Now, overall, I'm in favor of programs not continuing to run when they can't run correctly--fail early, fail often, I always chant.  However, when you are swallowing any error messages that the poor user could have possibly used to figure out what's wrong (see #2) then you are probably going to surprise the user a great deal by having problems simply stop.  In other words, if you both fail to initialize the document and the logging infrastructure, you should either print something to the console before exiting or set the CPU afire to prevent the user from touching the machine and throwing it out the window.  It's the least you could do.

Why all this anger, you may ask?  I had edited the XML config file for a program that (inadvertently) used all this machinery and I had foolishly added a character to make a line like this:

<foo... /></foo>

Note the extra / I added causes the XML parse to fail and the rest, they say, is history. 5 hours of it, to be precise.

January 14, 2008

The Java Experience

One thing that's clear is that we need to improve the initial Ogoglio experience for people using Microsoft Windows.  On OS X this is a zero step process, since Apple cares about the idea that things should Just Work, but the fine people at Microsoft and Sun have taken their infighting to a new level of inconvenience for their users and the result is a confusing 17 step process to go from a vanilla XP installation to something which can render Java3D.  It only takes seven minutes or so if you just blindly click "Ok", "Run", "Accept" and "Install", but if you pause for a second to consider what's happening you'll end up drunk in the gutter with despair at the possibilities flushed down the toilet because two big corporations can't stop shooting at each other.

Read this to understand why we're seriously looking to Adobe Flash for accelerated 3D in the browser, like so.  We think it's possible to lower the number of steps to three or four if we invest in a custom installer and take on the costs of supporting that across the myriad of Windows flavors, but frankly I find that to be unacceptable.

First Microsoft shows you a lame dialog when a page tries to load Java:

Parallels_picture_0



If you click "More Info" (the default) you are taken to a page which suggests that you turn on Java, despite the fact that they could test and see that you don't have Java installed.  Thanks, Microsoft!

Assuming that you clicked "Ok" instead of "More Info", our page suggests that you either turn on or install Java (we can't test to see which you need from a web page):

Parallels_picture_2

So, if you click the "Install Java" link you're taken to the overly complex and self-aggrandizing java.com:

Parallels_picture_3

At least there's a Big Green Button, which if clicked shows you a scary IE Security Warning:

Parallels_picture_4

Assuming you're not scared away (though most people will be) and you hit "Install" you'll have to accept a EULA, sit while it downloads (3 minutes on DSL), then watch the dozens of completely freaking useless progress bars stripe across your screen.  Eventually you will be presented with an exclamation of their success:

Parallels_picture_7

When you hit "Finish" it doesn't take you back to what you were doing, you know, before you dedicated your life to installing Java.  Instead, it takes you to a verification page just in case they didn't actually succeed in installing the JRE:

Parallels_picture_8

If you hit the Big Green Button it chunks a bit before telling you that the installation worked, though of course sometimes it doesn't.


By now you've completely forgotten what it was that you were trying to do and so you pop 'round the pub to get a drink and talk about the good old days when you could fit the HTML spec in the palm of your hand and a luggable computer in the trunk of your car.

But let's pretend that you're really dedicated and you remember to return to the page from which all this pain originated.  Let's also assume that the authors of said page did everything in their power to test whether you have Java and Java3D and in fact their scripts noted that you don't have the latter so they presented you with a link directly to its installer (ignoring the god awful mess which is java.sun.com's Java3D page) which you then click:

Parallels_picture_11

You ignore the security warning because at this point you feel like you've already given Sun the opportunity to steal your facebook password and tell all your friends to buy thin clients, and you click "Download" and wait for it to do so for a couple of minutes.

(sidenote: At this point in the writing process I had to stop and drink martinis because it's just too, too much)

Then you'll see Yet Another Security Warning which will drive away %50 of everyone who has heard about viruses because the installer isn't even signed and so it could be from your neighborhood Spam King.

Parallels_picture_13

But pretend that you don't care whether random code runs on the same machine as your tax returns and you click "Run".  Except that it doesn't run without presenting you with an end user license agreement which in all likelihood has no legal basis whatsoever but companies like to include anyway:

Parallels_picture_14


Then you have to confirm that you actually want the install:

Parallels_picture_15

Then it proclaims its success and (assuming that you ignore the readme about graphics card flags which can be passed in the command line to turn on pixelation flabjulibation) you're returned to your regularly scheduled web page. 

Unfortunately, the browser still thinks there's no Java3D because there's no way in hell Java will notice a new Java3D install without restarting completely, so you shut down your browser and go read a book.