- Bigoted Radio Host Chris Krok Attacks Joel Burns and Trans Teen
- Bigoted Radio Host Chris Krok Attacks Trans High School Teen
Wednesday, November 17, 2010
Boycott KLIF's Advertisers?
On The Dangers of Depending on a Single Provider
Monday, November 1, 2010
fun with sl8.us
Friday, September 10, 2010
announcing project brookdale
this is a quick post to announce "project brookdale," an open source implementation of the Virtual World Region Agent Protocol (VWRAP) suite.  VWRAP is a collection of specifications produced by the IETF's VWRAP Working Group. these specifications define interoperability for a "second life-like" virtual world.  you can find more information about VWRAP on my VWRAP Page or the blog post "what's the virtual world region agent protocol?"
here's a quick list of things you'll find in brookdale:
- Dynamic Structured Data (DSD) and HTTP Transport Bindings
- "DSD" is an evolution of the previous LLSD and LLIDL abstract type system and interface description language. the main difference between DSD and LLSD are minor changes in the XML serialization and a "layered" approach making it easier to use VWRAP messages with non-HTTP transports. more information about the motivations behind DSD can be found in a "abstract resource definitions vs. LLIDL". the internet draft draft-hamrick-vwrap-data-00 describes DSD in more detail. - one feature desired by implementers of previous OGP and early VWRAP work was clear guidance or agreement for how to handle content negotiation and caching of VWRAP messages carried over HTTP(S). draft-hamrick-vwrap-foundation-00 builds on the previous work and describes the use and interpretation of HTTP headers and status codes for content negotiation and caching. - project brookdale provides PHP and JavaScript classes and C functions implementing the interface semantics of DSD. it allows web and application developers to easily manipulate VWRAP requests, responses and events. 
- a capability management facility and capability broker
- web capabilities are an integral part of VWRAP. they allow distributed, trusted systems to grant fine grained access to sensitive resources without a global identity management system. an informal introduction to capabilities in VWRAP can be found in the earlier blog post, "VWRAP essentials : capabilities". - capabilities serve as aliases for RESTful VWRAP resources. composed of a cryptographically unguessable URL, they combine authorization to access a resource with that resource's address. the "capability broker" is the system component that maps a URL managed by a system to the object or database row it represents. 
- a simple VWRAP event queue over long poll
- the VWRAP event queue is a simple abstraction for unsolicited server to client communication. VWRAP currently reifies the event queue as a "long poll" over HTTP. it is hoped that future work will specify the use of WebSockets as a carrier for VWRAP events. 
- simple connection manager with trust model support
- trust between components in a VWRAP system is established by asserting identity using an X.509 client certificate. the VWRAP specifications do not require systems to trust any particular entity or certification authority, but they do require entities accept connections that use client side certs. in other words, a VWRAP system is free to ignore X.509 credentials from a client, but it must not disallow clients from sending them. - one ramification of the VWRAP trust model is it requires a "trusted" service to potentially present a destination-dependent certificate to a remote peer. an authentication service, for instance, may identify itself to an asset service by presenting it with a certificate issued by the asset service (or a trusted third party certification authority.) the brookdale connection manager maintains a mapping between destination URLs, client certificates and their related private keys. 
- VWRAP Authentication (including OAuth support)
- VWRAP defines several "native" authentication technqiues as well as the use of OAuth in protocol transactions. the brookdale authentication components manage the process of user authentication and the seed capability lifecycle. 
- Client Application Launch Message processing
- the VWRAP client application launch message (CALM) is an optional message sent to a web browser with specific details of which servers a client application (like the second life™ viewer) should contact to complete the login and rez process. intended to be used in conjunction with web authentication and authorization schemes like OpenID or OAuth, brookdale contains PHP, JavaScript and C functions to generate and process calm messages. we're starting by publishing a few PHP and JavaScript files at the project brookdale page. these files are much more "middleware-ish" than they are "application-ish," but more will be coming in the next week.
- the release of the code corresponds with the latest VWRAP abstract type system proposal. more code will be released at the brookdale site as the newer VWRAP drafts are published this month.
Thursday, August 26, 2010
net video startups, you don't get me
Wednesday, August 25, 2010
VWRAP essentials : the event queue
Tuesday, August 24, 2010
does the linden third party viewer policy sidestep the issue?
tips on using social media
Monday, August 23, 2010
what we should learn from the emerald debacle
"I did not realize at the time that emkdu was added, that it could be used to add in code I was not able to see... Although replacing or deleting emkdu would resolve this issue, I also have to consider that this was hidden in the code for months without anyone knowing." --LGG
the "emkdu" code module referenced in this quote is a closed source component, and over the past several months there's been concern it's functions have been compromised. the issue is complicated and layered and has been used by some to refute the open source software development model.
Sunday, August 22, 2010
ubiquity vs. applicability
Wednesday, August 18, 2010
life after linden
Monday, August 2, 2010
personas in social media applications
"all the world's a stage, and all the men and women merely players; they have their exists and their entrances; and one (wo)man in (her)his time plays many parts..." -- w. shakespeare, as you like it, 1599
- user accounts contain personas.
- user accounts own or control resources.
- personas may be publicly linked to user accounts or other personas.
- resources may be allocated to personas.
- user accounts and personas contain key-value pairs.
- resources are probably represented by key-value pairs.
when i rewrite twitter
- twitter.com is a single point of failure. don't get me wrong. i love twitter. i gabbed with some of the twitter guys on the plane riding down to an IETF meeting, and i love them too. biz stone came and talked to us at a corporate function and he was absolutely lovely. but using a single corporate entity to hold both your social connections and your status updates? tsk. tsk.
 and i didn't even mention the fail whale.
 ditto for facebook, tribe, friendster, linkedIn, etc.
- the ecosystem surrounding a social networking site is probably more valuable than that site. or maybe a better way of saying this is, social networks with extensible ecosystems are more valuable than those without. facebook has a developer program; twitter has an API; LinkedIn uses OpenSocial. ryze.com has no API. tribe has no API. friendster added widgets, but maybe it was just too little too late.
 why is this a big deal? the simple answer is, if you're running a social networking site, if you provide 3rd parties with a way to share your information about your client's social network, they'll make applications and tools that use your site. someone else will assume the risk of marketing to niche segments. if you choose your core market carefully, you'll not compete with these third parties. assuming they're bringing in people to your network that you would not have targeted anyway, it's a win-win.
- i don't care about your foursquare spam. i've tried to use foursquare. really. i did. i just don't get it. but that's okay, i know that other people do. i would LOVE to be able to turn off all foursquare updates in my tweet stream. ditto for echo bazaar.
- manage your own status updates and friends lists. there's no reason you couldn't manage your own friends list and status updates. maybe the thing to do is run a directory service that points people to FOAF records. FOAF or (Friend of a Friend) is a format for carrying information about your social network.
 if you were ambitious, you could define a DNS SRV Record to point to a server who would respond to queries about your social network. (actually, someone already has, look at webfinger.)
 all we need now is a couple of web applications; one to give out selected information to people who ask, and another to collate that info and present it to you. bonus points if you target it for LAMP systems.
- what if the "social networking" site was run as a non-profit and people focused on selling products into the ecosystem? let's just say that you had a .org whose role in life was just to operate as a registrar of FOAF servers (and maybe a small hosting community of it's own.) if it operated as a non-profit, it's operations and behavior would likely be radically different from companies like facebook. if you weren't trying to grow your revenues by selling people's info to advertisers, you could have a network where marketers (working for sellers) could co-operate with concierge services (what doc searle calls "4th parties" or "vendor relationship management" and eve maler calls "user managed access.")
- how 'bout "twitter with channels?" i would love it if foursquare spam could get shunted off to a "foursquare channel." then if you weren't interested in your friends foursquare spam, you could just tell your client: "do not show me updates on the foursquare channel."
 or better yet, people who were interested in foursquare could have the option of having foursquare updates consumed directly by their foursquare applications. we would never have to see it again.
 ditto for blip.fm and last.fm and london underground.
Tuesday, July 27, 2010
pay for your lag?
what does it mean for a virtual world to be open?
Monday, July 19, 2010
VWRAP essentials : capabilities
  {
 from: "Meadhbh Oh",
 message: "I'm giving 50 L$ to anyone who IMs me in the next 5 minutes!"
}- service request come into http://service.example.org/s/foo/Meadhbh
- http://service.example.org/s/foo/ redirects with a 302 to http://foo.cthulhos.com/Meadhbh
- http://foo.cthulhos.com/Meadhbh responds with a 401 getting the client to resubmit the request with a WWW-Authenticate: header.
- the client resubmits to http://foo.cthulhos.com/Meadhbh with the proper WWW-Authenticate: header, but remember, these are example.org's customers, so
- http://foo.cthulhos.com/Meadhbh sends a message to a private interface on example.org, asking it to authenticate the user credentials.
- assuming the client is using valid credentials, example.org responds to cthulhos.com with the digital equivalent of a thumbs up, and finally...
- http://foo.cthulhos.com/Meadhbh responds to the request.
- a client logs in at http://service.example.org/s/authme and asks for a capability to use a particular service
- http://service.example.org/s/authme verifies the user's credentials and verifies the user can access that service
- http://service.example.org/s/authme sends a request to a private interface on cthulhos.com asking for the capability.
- cthulhos.com generates the unguessable capability http://foo.cthulhos.com/EE409B12-6E9B-4F5B-90BF-161AE5DE410C and returns it to http://service.example.org/s/authme
- http://service.example.org/s/authme returns the capability http://foo.cthulhos.com/EE409B12-6E9B-4F5B-90BF-161AE5DE410C to the client
- the client uses the capability http://foo.cthulhos.com/EE409B12-6E9B-4F5B-90BF-161AE5DE410C to access the sensitive resource.
  {
 agent_name: "Meadhbh Oh",
 authenticator: {
   type: "hash",
   algorithm: "md5",
   secret: "i1J8B0rOmekRn8ydeup6Dg=="
 }
}  {
 condition: "success",
 agent_seed_capability: "https://example.org/s/CF577955-3E0D-4299-8D13-F28345D843F3"
}  {
 capabilities : [
   "profile/update",
   "groups/search"
 ]
}  {
 capabilities : {
   profile/update : "http://service.example.org/user/35A59C5D-315C-4D50-B78D-A38D41D2C90A",
   groups/search : "http://cthulhos.com/8579CE1F-9C05-43E8-8677-A645859DCD64"
 }
} 
