# Friday, 02 July 2010

I am not the number one fan of patent law, I tend to think that most of the law is outdated and needs review for the 21st century, but I do think that patents play a key role in fostering innovation. Without patents, we will have less innovation.

It gave me great pleasure to see the US Supreme Court rule against expanding patent law to so called “business method claims.” In the case, Bilski v. Kappos, Bilski tried to patent a “business process.” He did not invent anything, just a creative way to hedge commodities. Luckily for us, the court’s finding this week was that Bilski’s patent was not valid.

Some will say that the court has to “get with the 21st century” and in some issues that criticism is correct, however, in Bilski v. Kappos, the court made the right decision. For example I could go and patent my implementation of Scrum since it is a business process and then turn around an sue all of you since I think you are using it. Clearly, we did not need this.

Score one for the legal system protecting innovation.

posted on Friday, 02 July 2010 11:58:02 (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Thursday, 01 July 2010

With the Q1 release of Telerik OpenAccess ORM, Telerik released a brand new LINQ Implementation and supporting Visual Entity Designer. I have shown in this blog how to connect to SQL Server, MySQL, and how to use the new LINQ with RIA Services. Today I will show you how to connect to SQL Azrue.

To get started, we have to create a new Telerik Domain Model in the server (ASP.NET) project. We’ll create a new Domain Model by right clicking on the server project and selecting “Add” and choosing the Telerik Domain Model from the menu.

In the dialog presented by OpenAccess select the database you want to connect to, for this project choose Microsoft SQL Azure. You also have to manually put in the connection string to SQL Azure in the format of:

Server=tcp:yourSQLAzureDatabaseServer;Database=YourDatabaseName;USER=YourUserID, Password=YourPassword;


Next you have to map your tables to entities. The easiest thing to do is just map all of your tables by selecting the checkbox next to “Tables” in the Choose Database Items dialog and pressing the Finish button.


Visual Studio adds a new Telerik Domain Model to your project.


Now you are free to use the LINQ implementation to build your application. For simplicity, I will drag a gridView control onto the form and then use LINQ to bind all the customers in Germany. The code is here:


   1:  protected void Page_Load(object sender, EventArgs e)
   2:  {
   3:      if (IsPostBack==false)
   4:      {
   5:       //data context
   6:       NorthwindEntityDiagrams dat = new NorthwindEntityDiagrams();
   7:       //LINQ Statement
   8:       var result = from c in dat.Customers
   9:                           where c.Country == "Germany"
  10:                           orderby c.CustomerID
  11:                           select c;
  12:      //Databind to the ASP.NET GridView
  13:      GridView1.DataSource = result;
  14:      GridView1.DataBind();
  15:      }
  16:  }

The results are show here.



posted on Thursday, 01 July 2010 02:50:27 (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Wednesday, 30 June 2010

With all the hoopla over the popular iPad, don’t count out the Kindle. Amazon started by selling us a dedicated reader and the eBooks at a lower price than their physical version. Then they introduced an application for the iPhone where you did not have to buy the dedicated reader, increasing the availability of their platform. (And protecting their core asset, book sales.) Then came a PC Version and this week (finally!) an Android version.

Of course there has been pushback from the publishers over price. Publishers don’t like that new releases they charge in physical form for $30 sell for $9.99 in electronic format. Some publishers have fought back by delaying their release dates in Kindle format.

Amazon has come up with something that will potentially change the publishing industry forever. Effective today there is a new program where you can get 70% of the revenues, less delivery costs (which are $0.15 per MB.) In order to qualify, you have to list your book under $10 and it has to be 20% less than the physical price.

By sharing more of the profits, Amazon, will win over more and more publishers and thus have even more titles in Kindle format. What people may not realize is that in a few years, after iPads and Google Pads take over the world and at the same time the Kindle format has critical mass, many authors will skip publishing altogether and publish only eBooks with the Kindle format the preferred format.  Just like some rock bands today skip the record labels and go straight to iTunes. The publishing industry will be changed forever, starting today.

posted on Wednesday, 30 June 2010 15:47:46 (Eastern Daylight Time, UTC-04:00)  #    Comments [1] Trackback
# Tuesday, 29 June 2010

I am proud to report that Telerik won the Microsoft Partner of the Year award for Central and Eastern Europe in the ISV/Solutions Partner category.


It is a great honor to win this award; it reflects everyone at the company’s hard work and dedication to the customer. Thanks to our customers, this is really their award.

posted on Tuesday, 29 June 2010 01:33:02 (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Monday, 28 June 2010

A few months ago I wrote to you about why teams succeed. I talked about the “high bandwidth” team that stressed communication and collaboration. While I believe that communication and collaboration are the keys to success of any team, I always felt that there was another important component to the equation.

I visited a large retail global customer here in Hong Kong today. They are working on a large application for their product development group using Silverlight 4.0 and have teams in the United States, India, and Hong Kong. We were talking first about their use of Telerik tools and then the conversation moved on to teams and process. They are having success and are using the agile methodology Kanban. When I left, they were proud to show me their Kanban board with all of their user stories, tasks, features, and burn down.


That is when it hit me; the other component of highly successful teams is transparency. I started looking back throughout my career and looked at the high performing teams that had successful projects and the very successful ones were the ones that had the magic combination of high bandwidth and transparency.

I remember ten years ago building the original Zagat.com at the height of the .COM boom. We held “open staff meetings” where our weekly staff meetings were attended by other managers from around the company. Our own version of a Kanban board was posted outside the door of our main room. We were still using Microsoft Project and Gantt charts, each chart for each project was hanging outside of the room as well and updated daily. That level of transparency built trust with the organization and enabled us to work with the business closer.

I use to get pushback from the team about our transparency; the team did not like transparency when they were behind schedule. My argument was that we had to show the good, the bad, and the ugly. Besides, it is a well-known fact that we are motivated to work hard not by money, but by our creativity and the chance to produce something truly awesome. I figured that if we make that process more public and transparent, the employees would be even more motivated. By making our product development cycle public, the team took more pride in what they did since everyone was watching.

In addition, this process solved minor disputes between team members. Once when the VP of Marketing was at our open staff meeting, two developers were arguing over something petty. They forgot that the VP of marketing was there and later told me that they “looked bad” in front of the marketing VP. The next time I made sure that the founder of the company was at our staff meeting. Everyone on the team got the message and the transparency worked.

I was also very transparent with the business information coming into IT. I use to disseminate our monthly sales numbers (which were a closely guarded secret) to the whole department. The CEO asked me to stop since IT were the only people in the company besides the senior management to know this information. I responded with even more transparency and shared with the team our profit and loss information as well. (The CEO was not happy, but to her credit, she did not stop me.)

The Agile movement really helped push the importance of transparency forward. The very intention of the Scrum or Kanban board is to be public; same with the daily scrum meeting. If the business is engaged and attending your meetings, there is going to be more productivity and much less friction. Luminary Kent Beck wrote a white paper on agile tooling and teams where he stressed transparency. Beck says:

“When I started programming the weekly status report was sufficient. Here’s what I did this week, here’s what I’m planning to do next week. Press fast forward twice, though, and the weekly status report becomes as quaint as a debate about the relative merits of assembly language and higher level languages. … transparency is a choice you make to offer trustworthiness to you teammates. A transparent team can more cheaply and effectively coordinate their efforts towards shared goals. Acting transparently sends a signal to others that they can trust you. Trust, when realized, reduces the friction of development as people focus more on what they are accomplishing together and less on avoiding blame.”

Ten years after my experiences at Zagat, it is even easier to be transparent. There are many tools that help with transparency. Kent Beck also states in the white paper:

“One way out of the Reporting Dilemma is to stop explicitly telling people what you are doing. Instead, rely on your tools to infer your intentions from your activities and report that for you.”

Agile teams usually publish burn down charts and team velocity charts to report progress between iterations. In an effort to be both more transparent and more automated, the industry has moved to Agile Dashboards, dashboards that read from your repository and automatically publish your burn down and velocity charts as well as other vital information related to the iteration and build process (including my personal favorite, who broke the build.)

Several vendors offer an agile dashboard, such as i.e. Rally’s Team Status Dashboard, VersionOne, and of course Telerik. Our Agile Dashboard, a free tool, posts all the important details of a project on a dashboard for the whole world to see. This tool is meant to be on a large TV, hanging over the receptionist’s desk when you walk into a company complete the status of the current iteration, burn down charts, and even a photo of who last broke the build.


This decade will be remembered as the era when technology teams fully embraced transparency. As teams start to automate their transparency and look for ways to be more open, the quality of the software they produce will only improve. I look forward to this brave new (open) world.

posted on Monday, 28 June 2010 01:44:44 (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Friday, 25 June 2010

The battle for mobile supremacy has really heated up. Apple and Goolge had round 1 back in January with the release of the Google Nexus One. With the release of the iPhone 4 and the Droid X we are well into round 2.  I am not going to debate which device is better or worse, that is for the market to shake out. Rather I want to comment on how the popularity of each device is strengthening its underlying platform. The iPhone 4.0 and iPad 1.0 run on iOS 4. Google’s mainline devices run Android 2.1 or will be upgraded to Android 2.2. “Froyo'”.  It has been reported that Google will release an iPad style “Google Pad” based on Android 2.x as well. Developers are lining up to write applications for these two platforms, each expanding from the phone to a slate/tablet device. It is possible you may see netbook style devices running iOS and Android soon. That said, looking ahead 5 years from now, which one will “win” the most mindshare?

Apple’s iOS is quite popular since the iPhone and iPad are selling so well. Developers are turned off by the AppStore’s approval process and Objective-C in general. Apple also maintains complete control over iOS and you can’t license it and put it on your own consumer electronics device. Android is more open and easier to program for since it uses the more mainstream Java language. It is also possible that you can use Android on other devices (I know a company here in Hong Kong building a consumer electronics device based on Android.) Also, Google’s marketplace is not restricted (hence you can download porn apps if you like.)

In the long term my money is behind Google for two reasons: it is easier to code for and it more open. Eventually what you will see is applications appearing first on the Android then on the iPhone, with some never making it over for AppStore reasons or for Objective-C reasons. (This already happened with several World Cup focused applications.) Applications are what make a platform, you can have a more “cool” platform with less apps and the less “cool” platform with more apps will still win. Think Mac v PC 15+ years ago.

Speaking of PCs, where is Microsoft in all of this? The Zune based Windows Phone 7 is not slated to come out any time soon. By the time WP7 ships we will be talking about iPhone 5.0 rumors, Android 3.0 rumors, and the next generation iPad. Microsoft has a lot of catching up to do.

posted on Friday, 25 June 2010 05:40:43 (Eastern Daylight Time, UTC-04:00)  #    Comments [2] Trackback
# Thursday, 24 June 2010

Read the other posts in this series:

In the previous blog posts listed above, I showed how Telerik’s new LINQ implementation works with WCF RIA Services. I showed how to build your own Domain Service, build custom query methods, and make a metadata class. In this post I will show how to expose your Domain Service as an OData feed.

The Open Data Protocol (OData) is a Web protocol for querying and updating data in a RESTful fashion. You create OData feeds when you want to set up feeds for 3rd parties to consume, typically without your knowledge. For example Twitter has a RESTful feed of all its public tweets and many applications will consume that feed.

You may use WCF RIA Services to create your application, however, you may want to expose parts of your application as a feed for others to consume. This is real easy to do. Let’s see how.

I will continue using the same project from the first three parts of this blog series. In the server (ASP.net) project you have to do three things. First set a reference to System.ServiceModel.DomainServices.Hosting.OData.

Next we have to configure an OData endpoint. You do this by adding the following to your web.config under the system.serviceModel node:

name="OData" type="System.ServiceModel.DomainServices.Hosting.ODataEndpointFactory, 
Version=, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

Lastly, you have to tell RIA Services what methods of your DomainService you want to expose. The methods you expose have to be an IQueryable and parameterless (which means the query methods in Part II are ineligible) and decorated with the IsDefult=true attribute. I will expose our GetCustomers() method from Part I as shown here by adding the attribute to the method:

   1:  //enable OData
   2:  [Query(IsDefault = true)]
   3:  public IQueryable<Customer> GetCustomers()
   4:  {
   5:      return this.DataContext.Customers
   6:          .Where(c => c.Country == "Germany")
   7:          .OrderBy(c => c.CustomerID);
   8:  }

Now you can run your project and view the OData feed from a browser. The format of the URL is the namespace+typename for the DomainService with dots replaced by hyphens followed by “.svc/odata/”. (Note, I have found that this is case sensitive and requires the terminating /.)

So for example, our Namespace is SilverlightApplication6.Web and our Domain Service is DomainService1, so our url would be http://servername/SilverlightApplication6-Web-DomainService1.svc/odata/

My URL is the following and the results are shown below:



Now let’s explore the OData feed. Being a RESTful service you will access the feed and each resource via HTTP. The resource in this case will be the names of your Entities. What is great is that the OData feed respects the business rules of your RIA Service (since it is using the same DomainService), so you don’t have to worry about data leakage, nor duplicate any work replicating your business rules. Let’s drill down into the CustomerSet:



That is it. You can then consume the feed from an iPhone app, .NET application, Excel PowerPivot, or any other application that supports HTTP and XML (which is pretty much anything.)


posted on Thursday, 24 June 2010 04:00:03 (Eastern Daylight Time, UTC-04:00)  #    Comments [2] Trackback
# Wednesday, 23 June 2010

Even though I played soccer as a kid, I grew up watching mostly professional baseball. Even though I did catch Pele play a few matches for the NY Cosmos as a kid, my love for professional soccer started when the US hosted the 1994 World Cup. My professional speaking career, however, seems to be linked to professional soccer.

It all started at my very first TechEd: TechEd Europe 1998 in Nice, France. Prior to 2006, TechEd Europe was held in early summer, always causing me to spend the July 4th independence day outside of the United States. Back in 1998, France was hosting the World Cup and subsequently won it all. While I got caught up in all of the hoopla, I also had to speak at an event in London the next week and the entire country of France shut down, making it impossible for me to travel. Thus began the link with my professional speaking and soccer.

As the years went by I found myself speaking in Barcelona six times and went to FC Barcelona matches each year and they became my favorite team. in 2005 I found myself in Turkey when the European Cup was going on (and had to deal with the traffic since the speaking venue was right near the stadium). In 2006 I found myself in Egypt during the Africa Cup and was in a taxi trying to get to my speaking event in standstill traffic as the entire city tried to obtain tickets for the final match. I had to get out of the taxi and run 3km to the venue to make my talk in time. (I called Patrick Hynds to stall the crowd, but did make it with 5 minutes to spare.) I watched Egypt win the finals on penalty kicks a few days later in the middle of the street in Luxor with about 20 locals surrounding a tiny black and white TV while Kathleen shopped. We all smoked shisha together to celebrate and the shop owner (who was ignoring Kathleen and watching the game) gave us an additional 50% discount on all sales. After Kathleen finished buying her stuff, all of us, including Goksin’s 7 year old daughter, started running through the streets to celebrate.

One of the most memorable experiences was also in Egypt. in 2004 FIFA stated that Egypt, Morocco, and South Africa were the favorites to host the 2010 World Cup. I was in Egypt and Morocco during that time and met up with several MVPs for dinner. They all asked me: “Do you support an African World Cup?” I said yes and said that I will travel back to Africa to watch the world cup in 2010.

This weekend I kept my promise. I had a nice long weekend in South Africa and went to a few matches, keeping my promise to the African MVPs. (You can even look closely at this photo, besides my Team USA jersey, I am wearing my 2010 MVP jacket, and boy did I need it, it was coooold!)

Most of the non-African world hates the vuvuzela horn. The vuvuzela is an uniquely African (mostly South African) cultural experience. You can’t enjoy soccer in southern Africa without it. Showing my support for the African World Cup, I went native and blew that horn all night long.


I am glad that I was able to keep my 6 year old promise. It seems that professional soccer and my speaking career are linked. Any Brazilian MVPs/RDs want to put me up in 2014?

posted on Wednesday, 23 June 2010 02:21:51 (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback