Andy Conrad, who I used to work with back on the XML team, has two blog posts about Project Astoria and Project Jasper from Microsoft's Data Programmability team. Both projects are listed as data access incubation projects on MSDN. Below are the descriptions of the projects

Project Codename “Astoria”
The goal of Microsoft Codename Astoria is to enable applications to expose data as a
data service that can be consumed by web clients within a corporate network and across the internet. The data service is reachable over regular HTTP requests, and standard HTTP verbs such as GET, POST, PUT and DELETE are used to perform operations against the service. The payload format for the service is controllable by the application, but all options are simple, open formats such as plan XML and JSON. Web-friendly technologies make Astoria an ideal data back-end for AJAX-style applications, and other applications that need to operate against data that is across the web.

To learn more about Project Astoria or download the CTP, visit the Project Astoria website at http://astoria.mslivelabs.com.

Project Codename “Jasper”
Project Jasper is geared towards iterative and agile development. You can start interacting with the data in your database without having to create mapping files or define classes. You can build user interfaces by naming controls according to your model without worrying about binding code. Project Jasper is also extensible, allowing you to provide your own business logic and class model. Since Project Jasper is built on top of the ADO.NET Entity Framework, it supports rich queries and complex mapping.

To learn more about Project Jasper visit the ADO.NET Blog at http://blogs.msdn.com/adonet

I was called in a few weeks ago by an architect on the Data Programmability team to give some advice about Project Astoria. The project is basically a way to create RESTful endpoints on top of a SQL Server database then retrieve the relational data as plain XML, JSON or a subset of RDF+XML using HTTP requests. The reason I was called in was to give some of my thoughts on exposing relational data as RSS/Atom feeds. My feedback was that attempting to map arbitrary relational data to RSS/Atom feeds seemed unnatural and was bordering on abuse of an XML syndication format. Although this feature was not included in the Project Astoria CTP, it seems that mapping relational data to RSS/Atom feeds is still something the team thinks is interesting based on the Project Astoria FAQ. You can find out more in the Project Astoria overview documentation.  

REST is totally sweeping Microsoft.


 

Categories: XML | XML Web Services

I've been reading a ton of blog posts containing developer reactions to Microsoft's Silverlight announcement at MIX '07. One thing that I've noticed is that people are coming to some of the same conclusions I came to in my post What Comes After AJAX?. Specifically, it is now clear that WPF/E Silverlight is a contender for the throne of king development platform for building rich internet applications (RIAs). Additionally, it is also clear that the days of Asynchronous Javascript and XMLHttpRequest (AJAX) being first choice when building rich internet applications are numbered. Below are excerpts of some of the posts I found interesting.

In his blog post entitled The Day the Web Changed: NET in the Browser! Jeff Prosise writes

MIX 07 opened yesterday and I believe we'll look back on that day as the day that the Web changed. Microsoft made several announcements, not the least of which is that Silverlight, formerly known as "WPF/E," will include a cross-platform version of the CLR that runs in the browser.

What does it mean? It means goodbye JavaScript, hello C#. It means managed code in the browser. It means an escape from HTML and browser DOMs and a better way to build browser-based UIs using XAML. It means incredibly rich browser experiences and a whole new generation of RIAs.

In his blog post entitled May ASP.NET AJAX Futures CTP... wtf? Drew Marsh writes
Soooo, ok, they released a new May CTP of ASP.NET AJAX futures. It's got some new support in there for Silverlight related stuff now. Great, awesome, love to see it and totally understand they need to pimp the new platform. What has really happened beyond that though?
...
Anyway, it seems like Silverlight is ursurping the development of the core AJAX futures and, while I'm all for Silverlight, I think it's a bad move to put these features on the backburner. They should be fleshed out and delivered. They are extremely valuable to those of us trying to build rich web browser (only) based applications.

I'd love to heard from someone inside MS on what exactly their intentions are at this point. If it's dead, fine... just let us know. If it's not, tell us what to expect and when to expect it so we can make decisions on how to proceed. I've said it before and I'll say it again, the stuff that was cut from ASP.NET AJAX 1.0 and ended up in the futures was much more important to developing rich internet applications and 1.0. It's true that 1.0 layed the groundwork, but having to cobble together all the UI in JavaScript still with $get and $addHandler, while possible, isn't what I'd call a good platform.

Drew Marsh also writes in his post Where's the MSHTML/IE news?

I find it strange that there has been absolutely no mention of what the MSHTML/IE teams are working on right now yet at Mix. I remember they stood on stage last year and talked about much shorter product cycles. Shouldn't we be expecting some kind of new enhancements by at least the early second half 2007? I really don't care about the IE shell, I care most about MSHTML coming up to speed with more/better support for CSS (gimme my selectors damn it!), enhancements to the DOM, etc.

Update: It seems I didn't provide enough context in this post because I assumed people reading this would also read my What Comes After AJAX? post. My point in this post isn't to state that Silverlight will kill AJAX. In my previous post I already mentioned that based on the data we have, Adobe's rich internet application (RIA) platform seems more likely to take the top spot than Microsoft's. Instead I was pointing out that we are further along the road towards replacing Asynchronous Javascript and XMLHttpRequest (AJAX) with a richer and more productive set of platforms. Additionally, if you read between the lines of the MIX '07 announcements, it seems AJAX is no longer the new hotness, given the lack of news on improvements to the Microsoft AJAX stack coming from the conference.

Popular consumer websites like Yahoo! Maps, Flickr, YouTube and MySpace have made rich interactivity mainstream and even expected when it comes to building a modern "Web 2.0" consumer website by using a post-AJAX platform (Flash). My thesis is that we will see more sites embracing post-AJAX platforms until we reach a tipping point where brand new Web 2.0 sites choose something like Silverlight, Flash or OpenLaszlo instead of AJAX when considering a platform for building a rich internet application. 


 

Categories: Web Development

May 1, 2007
@ 06:02 PM

Yesterday I got a reminder that I've been gone from Nigeria a bit too long. I posted the following photograph and caption to my Nigeria 2007 Trip Photo Set on Flickr

One of the servants sitting down on the bed of his one room apartment.
You can see the entire apartment in this shot.

This photo and caption caused a bunch of outrage on certain Nigerian blogs leading to posts like A Presidential Servant and OBJ's Cribs as well as an angry comment on Flickr condemning me for calling the person in the picture "a servant". The person in the picture is a member of the domestic staff in my father's private home (not the presidential villa which is owned and staffed by the Nigerian government) who's responsible for serving guests, cooking and cleaning. The common term for this kind of job in Nigeria is houseboy. However since this term has been taken over by the gay community to mean something totally different (don't go to http://www.houseboy.com) I went for a non-ambiguous term that most of my readers would understand. From the answers.com definition for servant 

ser·vant (sûr'vənt) pronunciation
n.
  1. One who is privately employed to perform domestic services.
  2. One who is publicly employed to perform services, as for a government.
  3. One who expresses submission, recognizance, or debt to another: your obedient servant.

[Middle English, from Old French, from present participle of servir, to serve. See serve.]

What I forgot is that calling someone a "servant" is a derogatory term in Nigeria. I remember hearing the phrase I'm not your servant more times than I can count when growing up. So I've edited the caption and replaced "servant" with "member of my dad's domestic staff". I hope my Nigerian readers appreciate this change.

It's weird to experience culture clash when you're clashing with the culture you were raised in.


 

Categories: Personal

The blog post entitled Released: Contacts API, Windows Live Data Protocols on the Windows Live Dev blog states

Today we have a few more things for you, starting with this . . .

To date, access to Windows Live Contacts has been exclusively through our Contacts Control, but now we also offer an API for Contacts as well. The Windows Live Contacts API is a RESTful API that works on Address Book objects. The Contacts API offers a more granular control over the user experience than the control, and allows users to grant and revoke permission to their data on a site-by-site basis. Windows Live Data provides the protocols to manage the permissioning process.

Try them out and let us know what you think in our forum.

The Windows Live Data service provides a framework for applications to request and receive access to a user's data stored in Windows Live. An overview of the process is available in the documentation on Requesting Permission to Access Users' Windows Live Data.

The Windows Live Contacts API is a RESTful Web service created by my team for accessing a user's Hotmail contacts. How we use HTTP verbs is described in the documentation Getting Started with Windows Live Contacts API. You'll probably catch me talking about my contributions to future versions of the API in coming months.


 

Categories: Web Development | Windows Live

I'm not attending MIX '07 but it looks like we're announcing some good stuff this week. because the stuff I've been working on isn't ready to be announced yet but my coworkers have dropped some cool announcements. Today we announced Silverlight Streaming by Windows Live. To understand this announcement you first have to understand what Silverlight actually is.

From http://www.silverlight.net we learn

Microsoft® Silverlight™ is a cross-browser, cross-platform plug-in for delivering the next generation of .NET based media experiences and rich interactive applications for the Web. Silverlight offers a flexible programming model that supports AJAX, VB, C#, Python, and Ruby, and integrates with existing Web applications. Silverlight supports fast, cost-effective delivery of high-quality video to all major browsers running on the Mac OS or Windows.

If that is still too complex for you; you can consider Silverlight as being akin to the Flash platform but built with the .NET platform with all the attendant benefits (i.e. development with Visual Studio and access to a ton of languages). Now we know what Silverlight is, what exactly is Silverlight Streaming by Windows Live? Glad you asked.

From the blog post entitled New! Silverlight Streaming Service on the Windows Live Dev blog we learn about http://dev.live.com/silverlight which states

Microsoft® Silverlight™ Streaming by Windows Live™ is a companion service for Silverlight that makes it easier for developers and designers to deliver and scale rich media as part of their Silverlight applications.  The service offers web designers and developers a free and convenient solution for hosting and streaming cross-platform, cross-browser media experiences and rich interactive applications that run on Windows™ and Mac..
...
Microsoft® Silverlight™ Streaming by Windows Live™ can be used either directly from the administration web site or via a REST API. The API allows you to upload, update, delete, and invoke Silverlight applications using the Silverlight Streaming service. Click here to view the complete API reference.
...
While the product is in pre-release, storage and delivery is free up to 4 GB, with outbound streaming up to DVD quality (700 Kbps). As we move out of Beta, developers/designers will have continued use of the service with up to 1 million minutes of free video streaming at 700 Kpbs per site per month. Unlimited streaming will also be available for free with advertising, or with payment of a nominal fee for the service for use without advertising.

Not only is Microsoft giving developers a platform for building Rich Internet Applications (RIA) but it is also giving developers free streaming media hosting if they plan to use the platform to build a media sharing service. This is an interesting new wrinkle in the competition between Web application platforms. The response from Microsoft's competitors will definitely be interesting. I wonder if we'll see a partnership between Adobe/Macromedia and Amazon to bundle free usage of Amazon's S3 service if you are building applications with Flex or Apollo?


 

Categories: Web Development | Windows Live

Almost six years ago I wrote an article entitled C# from a Java Developer's Perspective which is still one of the most popular comparisons of C# and Java on the Web today. This update to my 2001 article comparing the primary features of C# and Java is a few years later than I planned. Given the amount of requests I've gotten to update it to account for the changes in Java 1.5 and C# 2.0 I'm sure there are many out there who'll find it useful. Below is the table of contents so you can jump to whatever topic interests you.

  1. The More Things Change The More They Stay The Same
    This section describes concepts and language features that are almost exactly the same in C# and Java.
    1. We Are All Objects
    2. Keyword Jumble
    3. Of Virtual Machines and Language Runtimes
    4. Heap Based Classes and Garbage Collection
    5. Arrays Can Be Jagged
    6. No Global Methods
    7. Interfaces, Yes. Multiple Inheritance, No.
    8. Strings Are Immutable
    9. Unextendable Classes
    10. Throwing and Catching Exceptions
    11. Member Initialization at Definition and Static Constructors
    12. Boxing

  2. The Same But Different
    This section describes concepts and language features that differ either only in syntax or in some similarly minor manner between C# and Java.
    1. Main Method
    2. Inheritance Syntax
    3. Run Time Type Identification (is operator)
    4. Namespaces
    5. Constructors, Destructors and Finalizers
    6. Synchronizing Methods and Code Blocks
    7. Access Modifiers
    8. Reflection
    9. Declaring Constants
    10. Primitive Types
    11. Array Declarations
    12. Calling Base Class Constructors and Constructor Chaining
    13. Variable Length Parameter Lists
    14. Generics
    15. for-each Loop
    16. Metadata Annotations
    17. Enumerations

  3. An Ever So Slight Feeling of Dèjà Vu
    This section describes concepts and language features that exist in C# that are similar to those that exist in Java but with a significant difference.
    1. Nested classes
    2. Threads and Volatile Members
    3. Operator Overloading
    4. switch Statement
    5. Assemblies
    6. Collections
    7. goto (no longer considered harmful)
    8. Virtual Methods (and final ones too)
    9. File I/O
    10. Object Serialization
    11. Documentation Generation from Source Code Comments
    12. Multiple Classes in a Single File
    13. Importing Libraries
    14. Events
    15. Cross Language Interoperability

  4. Now For Something Completely Different
    This section describes language features and concepts that exist in C# and have no Java counterpart.
    1. Deterministic Object Cleanup
    2. Delegates
    3. Value Types (Structs)
    4. Run Time Type Identification (as operator)
    5. Properties
    6. Multidimensional Arrays
    7. Indexers
    8. Preprocessor Directives
    9. Aliases
    10. Runtime Code Generation
    11. Pointers and Unsafe Code
    12. Pass by Reference
    13. Verbatim Strings
    14. Overflow Detection
    15. Explicit Interface Implementation
    16. Friend Assemblies
    17. The Namespace Qualifier
    18. Iterators (Continuations)
    19. Partial Types
    20. Static Classes
    21. Nullable Types
    22. Anonymous Methods

  5. Wish You Were Here
    This section describes language features and concepts that exist in Java and have no C# counterpart.
    1. Checked Exceptions
    2. Cross Platform Portability (Write Once, Run Anywhere)
    3. Extensions
    4. strictfp
    5. Dynamic Class Loading
    6. Interfaces That Contain Fields
    7. Anonymous Inner Classes
    8. Static Imports
  6. Conclusion(2001)
  7. Conclusion (2007)
  8. Resources
  9. Acknowledgements

 

Categories: Programming

Comparing the comments on Slashdot story Seven Reasons Microsoft Loves Open Source to the ones on the Digg story 7 Reasons Microsoft Loves OpenSource on the same topic, it seems that there is a sharp contrast in the quality of the comments posted by the users of the site. In fact, the Digg comments remind me of the following comic on XKCD

At first blush, the naive conclusion could be that Slashdot readers are more intelligent or at least more atticulate than Digg readers. However I just read Freakonomics so I've recently been thinking a lot about how incentive systems influence human behavior. After using both sites, I've come to the conclusion that the default settings on Digg encourages lower quality comments while the Slashdot defaults encourages higher quality comments.

On Slashdot, the default comment threshold is 1. This means that top level comments are only hidden if any negative vote has been applied to the comment by moderators. In addition, the content of comments in response to a top level comment are not shown unless the reply has been [net] positively rated by three or more moderators. Finally, when there are too many top level comments, only the ones that have been [net] positively rated by three or more moderators are shown to readers by default. This encourages the creation of good comments because or else a user's comments will be lost in the shuffle and no one will read it.

On Digg, the default comment threshold is -4. This means that top level comments remain visible until five negative votes have been applied to the comment by other users of the site. Secondly, the content of replies to top level comments are shown as long as they meet the default threshold.  

The upshot of all this is that it is more likely for a comment that is a flame or a one line joke in response to a top level comment to be visible when viewing a comment thread on Digg than on Slashdot. This causes two problems. The first is that it gives the impression that there are more "crap" comments on Digg than on Slashdot even if they have the same relative quality of comments. Secondly, there isn't as much incentive to write high quality posts on Digg because unlike Slashdot most comments are not hidden. Specifically there isn't the urge to make them "good enough" to scale the visibilty threshold on Digg since the threshold is so low that only abusive or spam comments are ever hidden from view.

In conclusion, I suspect that comments on Digg aren't any worse than those on most other forums on the Web. They just seem that way due to the way the site is designed.

Update: This post was submitted to Digg by one of my readers but it seems that it has been deleted from the upcoming stories list. I'm surprised that the admins at Digg would go to such lengths to censor an article that was critical of the site's design. The story seems to still be on Digg here . Now I wonder what happens if it gets enough votes to get out of the upcoming queue? 


 

Categories: Social Software

I've uploaded the pictures from my trip to Nigeria to Flickr. You can find them in my Nigeria Trip 2007 photoset. Below are a couple of entry points into the photo stream

My sister Bunmi and my brother Oba's wife Cynthia dancing at my dad's seventieth birthday party

Nigeria's president (my dad) casts his vote in the presidential elections

A close up of the giraffe that lives in the back yard of the presidential villa

A potrait of my dad from his days in the military



 

Categories: Personal

April 29, 2007
@ 12:13 PM

I really got into Nigerian hip hop and R&B music while I was there over the past few weeks. Below are links to my favorite songs from my trip, many of which are fairly old but were new to me.

  1. Tongolo by D'Banj: A club banger done in a mix of pidgin English and Yoruba

  2. Raise the Roof by Jazzman Olofin: Don't be fooled by the English title this song is mostly in Yoruba. The song is a general exhortation to dance which is a fairly popular topic for Yoruba hit music

  3. Iya Basira by Styl-Plus: A humorous song about a guy who gets so hooked on food from Iya Basira's (i.e. Basira's Mom) restaurant that he thinks she is using jazz (i.e. magic, voodooo, juju, etc) to make the food taste so good.

  4. Nfana Ibaga (No Problem) by 2Face Idibia: The opening rap is beyond wack but the song itself is quite good. He scored an international hit with a song called African Queen which I really didn't feel that much.

  5. Imagine That by Styl-Plus: This is a fairly crappy video but I love the song. The chorus is a mix of Yoruba and English. Roughly translated it goes "Imagine That! She says she doesn't want us to do this anymore. Imagine That! After everything I've done for her. Imagine That! What does she expect to become of me if she goes. Imagine That! If she goes".


 

Categories: Music | Personal | Trip Report

April 29, 2007
@ 11:50 AM

Terry Semel, Yahoo! CEO, can't seem to get a break these days. It seems everyone has assumed his days are numbered and he will be ousted for "incompetence". I've seen everyone get into the act from the technology press like C|Net and TechCrunch to more laid back technology pundits like Jason Fried in his post I'd rather be Microsoft than Yahoo.

All of these calls for Terry Semel's head remind me of a book I've been planning to read, The Halo Effect: ... and the Eight Other Business Delusions That Deceive Managers which describes The Halo Effect as it applies to business. So what exactly is this effect? Well according to Wikipedia

The halo effect refers to a cognitive bias whereby the perception of a particular trait is influenced by the perception of the former traits in a sequence of interpretations. The halo effect is involved in Kelley's implicit personality theory, where the first traits we recognize in other people then influence the interpretation and perception of latter ones (because of our expectations). Attractive people are often judged as having a more desirable personality and more skills than someone of average appearance. Celebrities are used to endorse products that they have no expertise in evaluating.

That may have been a bit difficult to follow, so here's an excerpt from David Wolfe's review of the book that explains the Halo Effect in business

Rosenzweig argues that media is no less error-prone in divining the reasons for a company's performance than gurus who write books on company performance.

He uses two prominent case histories to support the latter claim. Cisco and ABB. He recalls for readers how before the dotcom bubble collapse Cisco's John Chambers was widely regarded as the world's best manager and Cisco itself as without surpass in its organizational structure and corporate culture. Beyond that, according to the common view expressed in media, no company operated with greater customer centricity.

Within months of the dotcom collapse the same media that had virtually canonized Chambers were ripping his reputation as a great CEO to shreds. Cisco's was criticized for lack of attention to customer needs. This was alleged to have played a major role in its downturn in revenues and consequent precipitous loss in stock value. Writers told how the company's organization was fragmented and its culture grossly defective.

Rosenzweig tells a similar story of the Swiss-Swedish power company ABB. From being one of Europe's most highly regarded company to being a favorite whipping boy in media within not very many months, ABB turned out to be another example of what Rosenzweig calls the Halo Effect.

As Rosenzweig explains it, the Halo Effect refers to the aura surrounding a company and its leadership that promotes gross generalizations about its nature. When a company is outperforming, most everyone assumes everything about the company is exemplary. When the same company is underperforming, most everyone assumes everything about the company is defective.
Rosenzweig reminds us that externalities accounted mainly for Cisco's and ABB's decline in fortune. Cisco's downturn for example was inextricably linked to its Internet customers who flamed out in droves when the dotcom bubble burst. No amount of executive brilliance could have stayed the fiscal injury inflected by the dotcom bust.

What does this have to do with Yahoo! and Terry Semel? Glad you asked. See the blog post from ValleyWag entitled Fred Vogelstein's Amnesia which contains the following excerpts

How Yahoo blew it. Semel has been Yahoo's CEO for nearly six years, yet he has never acquired an intuitive sense of the company's plumbing. Semel's vaunted dealmaking skills seem to have deserted him. At Yahoo, the marketers rule, and at Google the engineers rule. And for that, Yahoo is finally paying the price. [Fred Vogelstein, writing in Wired Magazine, January 2007]

By figuring out how to make brand advertising work online, Terry Semel is on the verge of creating the 21st century's first media giant. So far, Semel has put together one of the web's hottest winning streaks... It turns out that the riddle of how to succeed online isn't so tough after all. Semel is taking everything he learned in his analog past and marrying it to what he can see in the digital future. [Fred Vogelstein, writing in Fortune Magazine, August 2005]

Same leadership style, same company. Yet when you tweak the externalities the CEO goes from being "on the verge of creating the 21st century's first media giant" to being someone whose "vaunted dealmaking skills seem to have deserted him". From where I sit, it is unclear that Terry Semel is actually doing a bad job, it just seems that his company isn't doing as well as Google which may or may not have anything to do with him.

I wonder how many years it will take until 20% time, free lunches and all the other things that people hype up about Google are used as examples of why the company has issues when some new upstart shows up on the scene?