First time here? You are looking at the most recent posts. You may also want to check out older archives or the tag cloud. Please leave a comment, ask a question and consider subscribing to the latest posts via RSS. Thank you for visiting! (hide this)

August 2008 Blog Posts

Which is faster? Flash or Silverlight?

The answer is: it depends. Flash/Flex is faster when it comes to graphic rendering, but Silverlight is faster when it comes to pure computation speed.

There are two speed benchmarks for RIA application, and they both focus on UI rendering:

  • BubbleMark: it displays many bubble floating around the screen as fastest as possible, and use the resulting frame per second as result of the test
  • GUIMark: similar to the BubbleMark, but with more effects and animations used: vectorial images, alpha transparencies, text reflow and so on.

Then another benchmark has been developed, CountingPrimes, which focuses only on pure computational speed (and measures the time taken to compute 10000000 prime numbers).

And here are the results of the test run by the authors of the benchmarks (green the fastest, red the slowest):

UPDATE: Removed the table with the results as it will be an infringement of Silverlight license (not allowed to publish benchmarks of beta software)

From a quick look at the figures it seems that:

I was not able to run all the tests myself, and the version on Silverlight 2 is implemented with Beta 1 and doesn’t run with the beta2 plugin.

Anyone has the time/will to try and optimize the code used in the GuiMark?

kick it on

Technorati Tags: ,,,

Starting another type of climbing: biking on the Sun Route

I do rock climbing, mountain climbing, ice climbing, but this year I started another type of climbing: road climbing, that is, going up a mountain pass with a bicycle. And that's how I spent my summer ‘08 holidays: along the Sun Route.

If you are interested in the trip report, continue reading.

ASP.NET MVC Preview5 released

Keeping on with the 6 weeks release plan, the ASP.NET MVC team quietly release P5 of ASP.NET MVC on Codeplex.

Some changes happened:

  • the IViewEngine now is responsible of finding the view, not rendering them any more
  • The Ajax Helper class has been moved to its own namespace to enable easier replacing of Ajax client library
  • Added a ModelBinder to bind complex custom type as action parameters
  • Added the AcceptVerbs and ActionName attibute to be able to use actions with the same name with different verbs (GET, POST)

To know more about the other changes have a look at the release notes.

Now off to uninstalling P4 and installing P5.

kick it on

Technorati Tags:

Hooked up on HundredPushups

Like the drop carves the stone, Rob Conery’s tweets about his pushups convinced me to try the HundredPushups program.

What is this program about: you do a startup test, with this results you start a training program. After 6 weeks of training 3 times a week you should be able to do 100 consecutive pushups.

Rob also started a twitter challenge you can take part and this seems to have become the ALT.NET-ian trend of the moment: yesterday evening I did the test and I got the do 15 pushups.

Next monday I’ll start week 1 of the training: let’s see if this really works.

Follow my pushups on twitter.

Technorati Tags: ,,

Data Structure and Algorithms eBook

o_DSA_Book.pngAfter dark years, seems like good things are coming out from the Italian .NET community lately: the latest one is the free eBook on Data Structures and Algorithms wrote by Granville Barnett and the Italian UGIdotNET member, Luca Del Tongo.

I remember studying such things at the university, and the last time I helped a friend with his studies the books were still the same, and still based on "old" languages like C. Finally now a book covers the same important topics but with samples written in a modern object oriented language.

All the algorithms of the book are available in form of a library hosted on Codeplex whose name is DSA (which stands for Data Structures and Algorithms) implemented in C#.

Actually, the book comes the other way around: first Granville and Luca developed the DSA library, then they decided that it would have been nice to write a book that explained all the structures and algorithms of the library in a language agnostic way: and the book was born.

The books covers things like: Linked Lists, Binary Search Trees, Heap, Set, Queues, Sorting algorithms, String pattern recognitions and searches. But more will be coming since this is just the first draft of the book.

Congratulation to both the authors (especially to Luca since is Italian and he still at the university) and big thank to dotnetslackers that is hosting the eBook.

What are you waiting? Run and download the book!!!

.NET vs PHP in the Enterprise comics strip

Far from me to start yet another religious war, but on the blog a friend from the Italian User Group I found a very amusing cartoon about .NET and PHP in the enterprise (made by David Betz in February 2008), so I thought it would have been funny to repost it here.


The original post seems to be unreachable but when I first saw it, I read that there should be other comic strips on that topic.

UPDATE: Seems like the original site is back to life, here is the second comic strip.

Technorati Tags: ,,

No GoLive required to use ASP.NET MVC in production

I might be the only that missed that, but today a discussion on the internal Avanade mailing list brought to my attention an interesting fact: the ASP.NET MVC framework is not as all other Microsoft pre-release software that need a GoLive license (like it was for Silverlight or Atlas) but you can legally use in production code.

On the mailing list they pointed out a comment on ScottGu’s blog:

>>>>>>>>> 2. For which MVC drop we will have GoLive licence? I'd like to use it for my next project, and this fact will decide what to use - WebForms or MVC.

You can use MVC today for production applications (no golive license required - the MVC license already allows production deployment and usage).

Obviously he’s true, but to be sure for the legal standpoint, I had a look at the EULA that comes with ASP.NET MVC P3 and the first point of the agreement says:

INSTALLATION AND USE RIGHTS. You may install and use any number of copies of the software:

· on your premises to design, develop and test your programs for use with the software; and

· in a live operating environment to allow your customers to use, via a web interface, your programs that need the software to run.

As I said, I might have been the only one on Earth not to know this, but just in case, hope it cleared a bit the legal issues around ASP.NET MVC.

kick it on

Technorati Tags: ,,

Images hosted on Webhost4Life are not displayed inside RSS feeds

A month ago, when I first updated my blog to Subtext 2.0, a reader commented that:

Images embedded in RSS are not correctly linked

I thought it was due to some problems with the new version of WLW I had just installed. But the link were written with the full absolute url, so that couldn’t be the problem. Then I thought that it was due to FeedBurner that decided to do something strange with my urls, but that was not the case either.

A few days ago, while I was testing the RSS advertising of  The Lounge, I experienced the same problem, and I decided to try and understand the problem. What was happening is that, instead of the actual email, the server was sending a HTML page with “WebHost4Life firewall alert” and a sentence on how to solve the problem:

Set the Security Guard to Medium.

What is this “Security Guard”? Reading the help of WH4L control panel I found out that a month ago they added a new feature to their solution: they are trying to prevent image deep-linking. If the page that hosts the image is not in the same domain as the image, the server returns the error instead of the image. The problem is that the domain of the RSS feed and the domain of the images embedded is always different:

  • when looking at my RSS feed via the browser, the domain is and the images are on
  • when reading the feed with a online reader (like Google Reader) the domain is the Google one
  • when reading on a desktop reader, the referrer is nothing (or, if the feedreader is smart enough, it’s the domain of the RSS feed)

To prevent this to happen, the solution is (the numbers refer to the image below):

  1. Go to the Security area of the Control Panel
  2. Select the sub-menu item Security Guard
  3. Click on “Set to MEDIUM” next to the domain for you want to turn off the deep-linking feature (you can also set it back to “STRONG” once they fix this misbehavior)


The solution suggested by the support team is to create a sub-domain, place all the images that need to be embedded from other domains, and set MEDIUM only for this sub-domain. But the only images I’ve on my domain are the one I use in my posts, so …

I saw this issue on a few other RSS feed around (can’t remember which one), so I encourage everyone that is on webhost4life to check this settings.

Technorati Tags: ,

Testing RSS advertising

If you subscribed to my blog through an RSS reader you will notice an advertisement at the bottom of this post.

That’s because I’m testing the RSS Room of the The Lounge advertising network: it’s creator James Avery unveiled the RSS Room it only a few days ago and in the next weeks it will be a test period and will show only Lounge related ads.

For people that are reading this post from my blog, here is how it appears on the RSS reader:


I’m still tuning it in order to be less intrusive as possible for people reading it with online readers, so let me know what you think of it.

If you encounter any issues with the RSS feed, please report them to me and I’ll forward them to James.

Technorati Tags: ,,

Look Ma, I'm on a book cover

Well, not yet, but hopefully soon.

Which book cover am I talking about? It’s book I’m writing together with Keyvan, about ASP.NET MVC, for Wrox.

The book title will be “Beginning ASP.NET MVC”.

You way wonder why a book about a technology that is not even in beta and about which there are already six books. The reason is simple: all the six books are “pro” books, targeted at experienced developers, that are already trying out the early bits, but that want to know more.

We both are writing two introductory series on ASP.NET MVC on two famous .NET portals: Keyvan on aspalliance and me on DotNetSlackers.

We thought that this framework is such a innovation in the world of Microsoft web developers, and we want it to be accessible also by the ones that are not keeping up to date and that are new to this technology or know about other MVC-based frameworks but want to start developing using the Microsoft stack.

When will the book be published? Only time will tell: probably, as all other books, 2 to 3 months after ASP.NET MVC framework goes RTW.

UPDATE: Keyvan wrote a similar announcement, with a bit more details on it.

UPDATE2: I forgot to mention the other people in party: Ivan Porto Carrero, my friend from Belgium and Eilon Lipton, lead developer on the ASP.NET MVC team will be the tech editors of the book.

kick it on

Technorati Tags: ,,,

Subtext 2.0 released

As I already anticipated a few days ago, Subtext was on its way to be released. And today Phil just announced it: Subtext 2.0 has been released, one year and a few months after the previous version 1.9.5.

I already explained a some of the new features of Subtext 2.0:

but Subtext 2.0 also brings to the table:

  • Enhanced MetaWeblog API implementation
  • Enhanced WLW implementation
  • new CSS-based admin layout
  • Mobile-skin support
  • OpenID support, both to login to the admin and to use you blog as OpenID delegate
  • and many bug fixes

Read Phil blog for more details on the release notes and for the future plans for Subtext (MVC anyone?).

And, you want to upgrade you blog, or give Subtext a try, here is the url for the download: Subtext 2.0 of SourceForge.

Technorati Tags:

New feature in Subtext 2.0: publish in the future

In the last two days I wrote about two new feature of Subtext 2.0: Enclosures and performance optimizations for skins.

Today I’ll talk about another new feature of Subtext 2.0: Future Posting.

I already anticipated this feature while I was testing it last week: posting in the future allows the blog’s author to write a post either with the post editor online or with any offline blogging application (like Windows Live Writer), set the date and time, save it on the server as published (not as draft), and have it automatically published both on the blog and the RSS feed at the specified moment.

This is useful when writing series of posts: you write all your posts at once, and then schedule them to appear online one per week or per day or every couple of days. (Which is what I’ve been doing with this series of posts.)

It’s also useful when you go on holiday but you still want to publish something on your blog: you can write some posts before your leave and set the publish date in the future while you are relaxing on some Maldivian beach.

How to set the publishing date of post?

If you are using the online post editor, you have to set the Post Date (in en-US format mm/dd/yyyy hh:mm:ss AM/PM) in the Advanced Options panel. The time must be in the blog’s time zone. Expect some enhancements in a future release of Subtext, like an Ajax datetime picker, or similar UI elements.


If you are using Windows Live Writer, you can set the date of the post with the date picker on the bottom toolbar.


How do I know that a post will be published in the future?

A post published in the future will not be accessible online till the publish date has been reached, but you can see the scheduled posts looking at the list of posts in the admin. If the post is scheduled for future publishing, the list will tell you when this will happen.


How dates relate to URLs

Subtext stores 3 different dates for each post:

  • the date in which the post created
  • the last modify date
  • and the publish date

Till Subtext 2.0 the permalink of the post was generated using the date of creation, but now that it’s possible to post in the future this will not make sense anymore: if you write 10 posts and schedule for future publishing they will appear as created all at the same day.

So now the permalink will be generated using the publish date, so that also the url shows the real publish date.

But to keep the backward compatibility, and don’t change the url of past posts, the upgrade procedure to Subtext 2.0 includes also a little update scripts that copies the date of creation into the publish date.

Feedback? Questions?

As usual, if you have questions, bug reports and feedback just write on the forums and report bugs.

It’s done with the features I implemented in Subtext 2.0: tomorrow I’ll write about how the frontend performance optimization works behind the scenes. Please subscribe to the feed if you want to get it automatically in your feedreader.

Technorati Tags: ,

New feature in Subtext 2.0: CSS and JS optimization for skins and mobile support

Yesterday I wrote about the support for enclusures that has been introduced with Subtext 2.0. Today I’m going to talk about the improvements we introduced to our skinning engine in order to reduce the number and the size of HTTP requests. And we added support for mobile browsers as well.

Web Performance Optimization

It all started last year, when Yahoo released YSlow, an add-on for Firebug that measures the performance of a web page based on the best practices evangelized by the Yahoo’s team for Exceptional Performance. Pushed by Mads Kristensen I improved the performances of my own blog with some manual tweaks to the style sheets and to the javascript files and introducing a handler for compressing the contents. This made my blog improve from 36 points to 64 points.

After this proof of concept I ported the optimizations to Subtext, so that all the users could benefit from them.

The optimization consists in:

  • Minification of all styles and script (remove all useless space, new lines, tabs and so on)
  • Merging all styles into one file
  • Merging all scripts into one file
  • Gzipping the contents sent to the browser

All the skins bundled with Subtext have already been updated to take advantage of these optimizations. Let’s see now how to enable these optimizations in custom skins.

How to update your skin to take advantage of the new optimizations

If you are running your blog with a custom skin, there are some steps that you have to make to take advantage of this new feature.

But just relax, everything is backward compatible: this means that if you don’t do anything, your skin will work as before, without the performances optimizations.

Step 1: Minify your files

The first step of the optimization is done at build time by our build server: all the javascript and css files provided in the installation package are already minified using YUI Compressor. But if your skin uses some custom styesheets or custom javascript files, in order get the most out of the optimization, you have to minify them as well.

If you are using some javascript loaders to load other modules (like in make sure you can load the modules also by themselves without using the loader script (with it is possible).

And before you go on with the next step, please test you skin after the minification of the scripts: if the scripts are not written properly (with all the ; and } at the right place) it’s very likely that the minification breaks something.

Step 2: Change the skin configuration file

Are you sure our skin is still rendering fine after step 1? If it is, the next step is to enable the merging of CSS and scripts. To do this you have to update the skin definition which is inside the \admin\Skins.User.config file.

The new skin optimizations are enabled by 4 new attributes (in bold in the following code sample) in the skin definition:

   1:  <SkinTemplate 
   2:          Name="GreenBook" 
   3:          TemplateFolder="RedBook"
   4:          StyleSheet="Green.css"
   5:          MobileSupport="Supported"
   6:          StyleMergeMode="MergedAfter"
   7:          ScriptMergeMode="Merge"
   8:          ExcludeDefaultStyle="true"
   9:          >
  10:      <Scripts>
  11:          ...
  12:      </Scripts>
  13:      <Styles>
  14:          <Style href="~/scripts/lightbox.css" />
  15:          <Style href="IEHacks.css" conditional="if IE" />
  16:          <Style title="elastic" href="piyo-elastic.css" media="screen"/>
  17:          <Style href="print.css" media="print" />
  18:      </Styles>
  19:  </SkinTemplate>

The first 3 attributes are the ones that always existed since .Text:

  • Name: is the name of the skin (the one that is in the dropdown list in the admin)
  • TemplateFolder: is the name of the folder where the skin is saved
  • StyleSheet: is the name of file that contains a different variation of the main skin available inside the TemplateFolder

And till here nothing new. The next 4 attributes are the new ones, so let’s review them one by one.


This is not strictly related to the performance optimization, but is used to specify the level of support of the skin for mobile browsers. It accepts one of the 3 following values:

  • None, the default if not specified, means that this skin doesn’t work with mobile browsers
  • Supported, means that this skin works well both with desktop and mobile browsers
  • MobileOnly, means that this is a skin specific for mobile browsers

This one enable the merging of javascript files.

  • DontMerge, the default one, tells Subtext not to merge all the scripts into one
  • Merge, means that all the JS files are merged into one

The scripts will be merged in the order they are listed in the skin definition.
If you specify “Merge” the skinning engine will play safe to ensure that your skin always works fine. So if one of your scripts is a remote one (maybe you want to use the version of jQuery hosted by Google) the scripts will not be merged. The same will happen if one of your scripts is specified with a query string parameter (as in scriptaculous.js?load=effects)


When it comes to styles things get a bit more complicated: we have 3 different attributes instead of 2.

  • None means that no merging will happen (default)
  • MergedAfter: all css files that can be merged will be included in the page after the ones that cannot be merged
  • MergedFirst: all css files that can be merged will be included in the page before the ones that cannot be merged

I know this sounds a little bit cryptic: I’ll come to this after the next attribute.


This is a boolean (possible values true or false) that instructs the skinning engine whether to use the default style.css file or not.

Step 3: Upload and enjoy

Well… only two steps, not a complicate procedure, isn’t it?

Now just upload the modified skin configuration file and enjoy the improved performances of the frontend of your blog.

How styles are evaluated in a Subtext skin

A Subtext skin is composed by 5 different kind of stylesheets.

  1. style.css: this is the default CSS file, the one that contains all the layout specific for the skin.
  2. secondary stylesheet: the one whose name is specified with the StyleSheet attribute of the skin template. This is usually used to provide a variation over the main CSS, like a different color schema or right sidebar vs left sidebar and things like that.
  3. custom css: the css rules for this stylesheet are specified by the blog author in the admin section of the blog. Used to add the styles for personal badges or for styles specific to the contents of posts.
  4. the css files specified without any attribute: usually used for the system styles or for CSS frameworks (as in line 14 of the snippet above)
  5. the css files specified with some attributes: stylesheets with the title attribute (line 16) or with a conditional comment in order to be used only with specific version of IE (line 15) and with a media attribute so that they are applied only when printing or only in screen mode (like 17). Needless to say that these files cannot be merged with the others otherwise they will loose their “attributes”, so these are the “non mergeable” css.

Let’s see now the order in which all these files are included into the page in the 3 different StyleMergeMode:


With this value the merging doesn’t take place, so the usual order is used:

  1. all the css as specified in the skin definition (4 and 5)
  2. the default style (1)
  3. the secondary style (2)
  4. the custom css (3)

All css files that can be merged will be included in the page after the ones that cannot be merged:

  1. All non mergeable files in separate files (5)
  2. The merged file with:
    1. All mergeable styles (4)
    2. the default style (1)
    3. the secondary style (2)
  3. the custom css (3)

All css files that can be merged will be included in the page before the ones that cannot be merged:

  1. The merged file with:
    1. All mergeable styles (4)
    2. the default style (1)
    3. the secondary style (2)
  2. All non mergeable files in separate files (5)
  3. the custom css (3)

Feedback? Questions?

As usual, if you have questions, bug reports and feedback just write on the forums and report bugs.

Tomorrow I’ll talk about another cool new feature of Subtext: Future Posting. Please subscribe to the feed if you want to get it automatically in your feedreader.

Technorati Tags: ,,,

New feature in Subtext 2.0: Enclosures

One of the cool new features of the latest version of Subtext is the support for enclosures.

What can a enclosure do for you?

You can use it to:

  • host a podcast
  • host a webcast/screencast
  • to have photoblog
  • or just to include a downloadable file to your post, like a code archive, a pdf file or a PowerPoint presentation

How to add a enclosure


At the bottom of the post page you’ll find a new section. Just enter the following data:

  • the url of the enclosure: it must be the absolute URL of the file of the enclosure (absolute even if on the same domain as the blog)
  • mime type: it’s automatically selected when you enter the url, but you can change it in case you have a strange mimetype. This is used by most client to show a icon of the enclosure
  • size of the enclosure: the size in bytes. Again, used only by clients to display the size of the file.
  • the title of the enclosure: this is used only in the web frontend of the blog (no use in RSS), to display a link to the enclosure from the post page
  • as last thing you can decide whether to show the enclosure from the blog or syndicated with RSS, or both.

How the enclosure is rendered in the browser

Once you added the enclosure to the post, it will show up in different ways depending on how you are looking at it.

Directly from the blog, if the skin you are using supports it, you will see a link to the enclosure at the end of the post.

If your skin doesn’t support this, it’s just a matter of adding a <asp:Label> control to a few ascx files. I’ll explain how to do it at the end of this post.

Here on the left you see how it is rendered in the post view page, with the title and the size of the enclosure. The same will be displayed in the homepage.


If you read the RSS feed syndicated by your blog directly within the browser, Firefox and IE will format it in different ways.



Internet Explorer


How the enclosure shows up in feedreaders

RSS feeds are not displayed only inside the browser but also and mainly from feed readers. Here is how my feedreader FeedDemon renders the enclosure:


Subtext-powered podcast on iTunes

Probably most of the people are going to enclosures for doing podcasts. The most used podcast downloader is iTunes, and here is how the enclosure from Subtext are displayed:


Subtext doesn’t have a full support for iTunes yet (there are many custom rss elements needed to provide to iTunes all the information it needs) but it’s already in the works and will be released in the next version of Subtext.

How to add enclosure support to your skin

As I said earlier it’s quite a trivial fix. All you need to do is add the following lines in the Day.ascx and ViewPost.ascx user controls.

<p class="enclosure">
    <asp:Label id="Enclosure" runat="server" DisplaySize="True" />

Day.ascx is the control that renders the posts in the homepage while ViewPost.ascx is the one that is rendered in the single post page.

If you set DisplaySize to false, the size of the enclosure will not be rendered on the page.

Tomorrow I’ll talk about another cool new feature of Subtext: frontend performance optimization. Please subscribe to the feed if you want to get it automatically in your feedreader.

Technorati Tags: ,,,

Subtext 2.0 is approaching fast

As you might have noticed, a few weeks ago Subtext entered the QA phase of the development process, and the new version, v2.0, is going to be released in a short time.

In the next days I’m going to write a few posts about the features I implemented for this new release, with the description of the features, and a little bit of “internals” how they were implemented.

Check my blog during the weekend, or subscribe to the feed to get the new posts with the new features of Subtext delivered automatically to your feedreader.

Technorati Tags:

Ivan Porto Carrero interviewed on InfoQ

ivan_infoq.jpgMy friend Ivan, blogger, writer and coder extraordinaire has been interviewed on InfoQ, a main-stream enterprise development portal, about his new opensource project IronNails.

Ivan started this project a few days ago because, while working on same samples for his book about IronRuby, he had this vision of a Rail like development for WPF and Silverlight applications, based on the MVC pattern.

And here it is: announced on his blog (which, by the way, has a new awesome skin), published on git, and got a lot of media attention.

Read the complete article here: Talking with Ivan Porto Carrero about IronNails.

Congratulations Ivan!

How to disable ReSharper for a file: [CTRL + 8]

ReSharper is one of the tools I couldn’t live/code without, but when they designed it they didn’t tested my current scenario: I’m doing the assessment and refactoring of an application made of more than 80 projects (they were more than 200 in the same solution before we started our refactoring), some .cs files are more than 10k lines and some .aspx and code-behind files are more than 1000 lines.

When working on this solution sometimes I’ve to disable ReSharper otherwise it would take 3 minutes only to open the file and do the code analysis on that file. But going all the times in the Tools menu to disable the add-in is boring, and, furthermore, then I’ll have R# disabled for all the solution, not only for the 10K lines file.

But yesterday Steven Harman came to the rescue and suggested a keyboard shortcut:

CTRL + 8 will disable ReSharper for the current file, for the current session... an important point. :)

Thank you Steve!! Now I can just open any file, CTRL + 8, and the analysis stops immediately, and the file just loads.

Technorati Tags: ,

Subtext: Posting in the future

As I did last week, this evening I upgraded my blog to the latest interim version of Subtext.

As you might see, the time of this post is 5:00AM. No, I didn’t stay up till late, but I’m using one of the new features of the soon to be release 2.0: the ability to post in the future.

So, if this post popped up in your RSS reader at 5:00AM it means the new feature is working… otherwise, it means we have a bug to fix before we do the release.

We also created a custom manifest for Windows Live Writer in order to make it aware of this new feature, and to allow the creation of “future posts” also from WLW.

The ability to write a post now, and have it appear only at a specified time and date is very useful now that the holidays are coming: I can write some posts in advance and have them appear twice or three times a week.

Technorati Tags:

Finally electronics goes on road bikes

A non IT related topic for this hot and humid first day of August: electronic shifting system for road bikes.

Electronics in every aspect of our life, and in all sporting equipments: now Shimano plans to release its new Dura-Ace Di2, which uses wires instead of steel cables. This should:

…execute perfect shifts every time, thus "reducing mental overhead"

The system is made by touch buttons to shift gear, positioned in the same place of standard push buttons, two derailleurs whose springs have been replaced by servo-motors, a battery pack that should be placed near the bottle cage, and LCD display that shows remaining battery life and current gear.

Shimano_E-DA_lever_hump-300-90-300-70 Shimano_E-DA_RD_forged-480-90-480-70

Shimano_E-DA_battery-480-90-480-70 Shimano_E-DA_battery_indicator-850-99

The Di2 will be sold as upgrade for the top-level Dura-Ace 7900. The price has not been revealed yet, but someone says it could double the cost of the group (which costs US$ 2600).

The thing that worries me a bit is the battery pack: they claim it should last 1000 Km (621 miles). But what happens if you go out and you forget to recharge the battery? Other then that, and the cost (2000 dollars just for this seems a bit too much in my opinion. Anyway, let’s see how much they will cost when they ship in January ‘09.

For a more detailed review and for more pictures have a look at articles (where the pictures above where taken from).

Technorati Tags: ,,