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)

April 2007 Blog Posts

YASB: Dave Transom

Yet Another Subtext Blogger: Dave Transom, web developer and web standard evangelist from Auckland has just moved his blog from Blogger to Subtext.

Welcome to the Subtext world, and compliments to your webdesigner for the awesome skin: maybe you can share it with us on the Subtext Skin site. smile_wink

The question is: when are Nic and Leonie going to move from dasBlog to Subtext? smile_teeth

Technorati tags:

Silverlight Community Site

Due in a few hours, probably it's going to announced at MIX07: Silverlight Community Site.

I'm going to reload that site tomorrow morning as soon as I wake up:

PS: Look at the order of the list of browsers smile_regular:

"... all major browser including Firefox, Safari and Internet Explorer..."


Technorati tags:

Ready to MIX?

Today is MIX07 start day: if you are like me, and you are not lucky enough to live in the US (or to have your company pay for you the trip to Las Vegas) here is the visit MIX from Home blog. It should be a continuously updated report of what is going at the MIX.

What are they going to announce at MIX?

Here are some speculations:

So, let's see what is going to happen at MIX07

Rock Climbing grading for dummies

In New Zealand, climbing routes are graded using the Australian rating system, but in Italy (and around Europe, except UK) we use the French grading system, that, as all grading system, is quite difficult to understand unless you have a large number of routes you can refer to for comparison.

A while ago a friend of mine sent me an email with a non technical reading of that grading system:

1 - Everybody can do it
2 - Everybody should be able to do it
3a - You do it without rope
3b - You start feeling the need of a rope
3c - Max grade on which you can find "ferratisti"
4a - Here you will find "ferratisti" stuck on the climb
4b - Min grade on which you can be lowered to lead climb
4c - The perfect grade for your girlfriend
5a - Min grade on which you can be lowered climb on top-rope
5b - Here you start putting effort in the climb and she starts complaining
5c - The ideal grade (universally accepted)
6a - Here you try to climb relaxed, but you can't
6b - You would like to climb relaxed, but you don't even try
6c - Here you feel depressed if you girlfriend can do it, and you can't
7a - Here legs are only an heavy and useless part of your body
7b - Here you don't understand what is on the top of your body: arms or legs?
7c - Max grade for the normal "Homo Sapiens"
8a - Only aliens and extraterrestrials can do it
8b - Only gifted aliens and extraterrestrials can do it
8c - Only very gifted aliens and extraterrestrials can do it
9a - NG

This is a translation from the Italian (so, please, report errors if you find some): Interpretazione semplificata scala francese

Ferratisti means people that climb a Via Ferrata.
On RockFax, a UK and European climbing directory, you can find a grade conversion table, both for rock climbing (PDF) and bouldering (PDF)

Technorati tags: ,

Google Referrals changes pricing structure

I'm registered to Google AdSense and I've the ads block and some AdSense referrals buttons on my Italian blog.

Yesterday, looking at my earnings I noticed that I was giving 5$ for the AdSense referral product. I knew that for that product the rule was:

When a publisher who signed up for Google AdSense through your referral earns their first $100 within 180 days of sign-up, you will be credited with $100.

So why did I get $5? I thought that it was very difficult for someone that signs up for the first time to reach $100 in 180 days, so they should have changed something, and looking back in the AdSense blog archives I found the answer: in February they changed the pricing structure for referrals:

When a publisher who signed up for Google AdSense through your referral earns their first $5 within 180 days of sign-up, you will be credited with $5.

When that same publisher earns $100 within 180 days of sign-up and is eligible for payment, you will be credited with an additional $250.

If, in any 180-day period, you refer 25 publishers who each earn more than $100 within 180 days of their respective sign-ups and are all eligible for payout, you will be awarded a $2,000 bonus (bonus payouts are limited to 1 per year).

I don't think I'll ever receive $250, but probably I'll start receiving a few $5 earnings for some of the signups performed through my referral button.

Technorati tags: , ,

In bocca al lupo Enrique!!!

Yesterday it was the last of work here in Calcium for a colleague and friend of mine: Enrique, an Argentinean guy with Italian grandparents (from near Reggio Emilia). He is living in Wellington since 6 years, and working for that company since September 2006.

I worked with him only for 4 months (actually, all the time I worked here) but I think we both learnt a lot for each other: he learnt a bit  of web application design and Ajax, while I learnt from him a bit of winform application design, an a lot about the Kiwi way of living and working and, most of all, the differences between their way of thinking and the Latin one.

He decided to leave the company because he wants to try and go working in the UK or Ireland: now he will be studying hard to pass the MCPD Certification and then move to Europe.

In Italy we say "In bocca al lupo" (or also something worst that I cannot write on a blog) as way to wish luck to someone ("Good luck" is said to bring bad luck for exams): In bocca al lupo for both your exams, and for your experience in the UK!!

CodeClimber Copyright and License

Today I finally specified a license for my blog contents. Basically I've 2 types of licenses:

For a better explanation of my blog licensing terms, please refer to the CodeClimber Copyright and Licensing Policy.

I also changed the copyright notice in the footer of each page:

Copyright © 2006-2007 Simone Chiaretta
This work is mainly licensed under a Creative Commons Attribution 3.0 License.
To understand what "mainly" means read the full license and copyright description.

I want to thank Phil Haack and Jeff Atwood for their posts about licenses (and also here) and copyright for opensource projects and blog contents.

Adobe Flex goes OSS

Today important technology news: Adobe to Open Source Flex.

It's a bit late here (4am watching Luna Rossa beating Team New Zealand ) so my neurons cannot work enough to formulate an opinion on what it is going to happen.

What is it going to happen now? Will Adobe gain a few points % also in the desktop development?

I'm waiting for your opinion.

Technorati tags: , , ,

Insert Video WLW Plugin

Every now and then I add a YouTube video to my posts... but one of the biggest problem is that reader that read the RSS feed don't get the video, because all the feedreaders I know don't render the object or embed tags, the one used to display the flash player for the youtube video.

A few weeks ago I found a very nice WLW plugin, that allow you to select a video from youtube, google video or MSN SoapBox, add it to your post using a javascript function that renders as embed in a full featured browser, or as image linked to the video page in a browser that doesn't support objects.

If you look my previous post on the blog, and using an RSS feed you will see the result of what I'm speaking about.

The plugin is Insert Video, developed by Scøtt Lovegrove.

Technorati tags: , , ,

Movie on Rock climbing in Wellington

I just came home from the Paramount Theatre in Wellington, where I watched the first part of the Wellington show of the Banff Mountain Film Festival World Tour.

If you are in Wellington, are into outdoors and don't have plan for next Tuesday, May 1st, you DO have to buy a ticket for it. Here the programme of the second part.

Here is a small sample of the action you will get: 

Unfortunately this is the only rock climbing action I can get here in Wellington smile_sad

April 25th, public holiday in... Italy

April 25th is ANZAC Day here in New Zealand, to commemorate the landing of the ANZAC corps during the Battle of Gallipoli, during the WWI.

And it's public holiday in Italy, too. In Italy April 25th is the Liberation Day, to commemorate the Liberation of Milano from the Nazi army after a partisan insurrection. This day marks the end of the WWII in Italy. And is also a commemoration for the almost 400.000 Italians dead during the WWII (and also 700.000 during the WWI)

Unfortunately we don't have a Liberation biscuits, but at least our commemorations are not held at dawn smile_wink

Web Design Survey

Designers, developers, project managers. Writers and editors. Information architects and usability specialists. People who make websites have been at it for more than a dozen years, yet almost nothing is known, statistically, about our profession. Who are we? Where do we live? What are our titles, our skills, our educational backgrounds? Where and with whom do we work? What do we earn? What do we value?

These are are the questions that the ALA Web Design Survey is trying to answer, in order to try and make a better picture of the professionals working in the web industry.

I took took the survey, and, answering one of the questions, I sadly realized that if I hadn't come to work in NZ, my previous salary raise would have been in 2001 smile_sniff

If you take the survey, you will also be eligible to win a ticket to An Event Apart in the US, a 30Gb video iPod and more...

So, what are you waiting?

Technorati tags: , ,

New blogger moves to SubText

Igor Damiani, a very active community member, yesterday made a very brave choice, well, 2 choices:

  1. he left the safe place which was the UGIdotNET community, and moved to his own domain
  2. he decided to install the engine on his own server, and since he never worked with web apps, but only with winforms and T-SQL that is a very brave thing

And he did the right choice because he installed Subtext with (almost) no help: which means that the installation procedure is dumb proof

Unfortunately he lost all of his previous contents because his previous blog was hosted on a 3rd party server, with a very old version of .Text that didn't allow user to export contents.

So, Igor, welcome to the World of self-hosted blogger, and welcome to the World of Subtext users: I'm pretty sure your end-user comments will help us build an even better blogging engine.

PS: Unfortunately, he blogs in Italian, sorry about that

Per-project Visual Studio Settings

Working on both "real", personal and opensource project sometimes I've to face the problem of managing different visual studio settings based on the project I'm working on.

For my personal projects I like a certain tab and curly brace configuration, for Subtext I've to use another convention, and from my real job I've to use yet another configuration.

After a few weeks of struggling I decided to adopt the Subtext settings even for my personal projects, but I cannot do it for my job, because that settings have been already used for years: so, every time I've to change type of project I'm forced to change also the VS settings.

Scott Dorman posted on his blog a possible organizational workaround to simplify the switching of settings, but he also submitted a a request on Microsoft Connect:

When working on multiple projects/solutions from different companies or private vs. open source projects, each project can have different language settings (for tab size, curly brace locations, etc.). Keeping these settings at a global (IDE) level forces me to constantly switch between global settings and remember which settings file belongs to which project.

Allowing these settings to be kept at a solution/project level (in a separate settings file) would allow each project to dicate what its settings are without affecting any other projects.

Visual Studio user settings per project

Go and vote for it!!!

Last episode of my slow laptop saga

Finally my laptop is back working smoothly again...

Everything started more than one month ago, when I noticed that my laptop was a lot slower then what it should be, and I found out that it was a problem with too much CPU time in kernel mode: this usually means a problem with the hardware.

10 days later, I decided to spend a night backing up all my data to the external drive and reinstalling everything.

Unfortunately the reinstallation didn't solve the problem, the time spent in kernel mode was still too much, and the application were still very slow.

Other 10 days later I had a chat with Igor which helped me troubleshooting the problem: we found out that the problem was my HDD with too many reallocated sectors. So the solution would been buying a new hard disk.

So, last week I bought a Hitachi 7200rpm 100GB 2.5" HDD, which arrived at my work place less than 1 day after I ordered it online (ordered last Thursday at 1pm, arrived on Friday at 8:30am).

But I didn't want to reinstall everything again, so on Saturday I decided to try the full-disk backup and restore procedure: I installed Nero BackItUp, created a bootable disk to make the backup of the full drive to my external drive, but, again a new problem, the linux-based backup application created by the BackItUp can't write to NTFS drives (as my external USB drive). So I had to run the backup directly from Windows, but, since I was doing the backup of the system partition, the program couldn't lock the drive. (By the way, the backup of a 13Gb took 2 hours and half)

Cool... now with the drive backup on my external drive I replaced my old HDD with the new one, I started the restore procedure (which took only 53 minutes).

But when I booted the laptop I received an error saying that the system partition is corrupt, and that I need to run the recovery system option using the Win XP installation disk. Of course the CD I burnt didn't work, so I had to wait till today when finally Nic burnt me an installation CD. Back from work I run the recovery console, and now here I am, running on my laptop with my new 7200rpm disk: I don't remember the startup of the system and of all the applications were so quick. I still have to run Visual Studio, but everything else (Outlook, MSN, Skype, GTalk) is amazingly fast.

So, now I hope this my last post about my laptop: of course till October, when I'm going to buy the MacBook with Leopard.

Managing application configurations in development teams

A common scenario in team development, but even more common in open source projects, is that developers working on the same project can have different setup environment:

  • different connection strings
  • different path to reach specific folder or configuration files
  • maybe even different url to reach some webservices
  • different smtp servers
  • and so on ...

The best solution is to have the user (during that post user===developer) being able to specify his own specific settings without having to modify the main web.config.

.NET 1.1

In the .NET 1.1 all the configurations were inside the <appSettings> section of the web.config file, so an easy way to accomplish that task was to add a file attribute with an user specific configuration file. If the file was present, then the runtime would read settings from there, otherwise it would read from the main web.config file.

.NET 2.0

"Unfortunately" in .NET 2.0 the settings are shattered around many sections in the web.config file, and all the configuration sections other then <appSettings> don't have a file attribute. So you cannot use the same approach as with the .NET 1.1

But all have a configSource attribute. But it works differently from the file attribute: while the file specified inside the file attribute was overriding the configurations in the main web.config, the file specified in the configSource attribute is an alternative way to specify the configurations.

So, for example, to specify a user configurable connection string that's what you have to do:

on the main web.config

<connectionStrings configSource="user.config" />

on the user.config file

 <add name="subtextData" 

I prefer the way the file attribute worked in the .NET 1.1, because it provided a way to specify a default configuration and everything worked also if the user configuration file was not present.

Technorati tags:, configuration, VS2005

How to play at work and keep your job

Luigi just sent me the link to site of the "First Desktop Cloaking Device": Stealth Switch.

StealthSwitch™ is a microprocessor based computer privacy device. StealthSwitch™ uses patent pending technology to instantly and completely hide applications with a press of the footswitch. The applications are not just minimized…they are made completely invisible. No more minimizing applications, turning off the monitor, or re-booting when someone enters your office or cubicle. With a simple click of the foot switch, you can instantly hide the current window, hide all open windows, or hide all open windows except certain windows.

But, as always, a demo is better than a thousand words (click on the image to go to the demo):

CC.NET Monitor for Vista Sidebar 0.7

UPDATE: the latest version of that gadget is now 0.9.5. Read more on the 0.9.5 release notes.

I just released the new version of my CC.NET Monitor for Vista Sidebar (why is everybody giving such long names to software?): version number 0.7

This version adds the most requested feature: the ability to specify which project to display.

Now in the settings page you can specify the "Display Mode":

  • All projects
  • Only failing projects
  • Only specified projects
  • All but the specified projects

and then there is a text field where the user can specify the projects he wants (or doesn't want) to display (must be a comma separated list of project names).

I also fixed a few other problems:

  • long project names hides the scroll buttons
  • the status of projects sometimes is not updated (due to a problem with IE cache)
  • the settings page always displays the hint value instead of the real value of the dashboard url
  • scroll buttons are "ugly" (ok, not a bug, but now it's looking nicer)

Here are the screenshots of the new version (look at the new scroll buttons):


Of course, here is the link for the new version: CC.NET Monitor for Vista Sidebar 0.7

Thank you to all the users that tried the gadget, tested it and reported bugs and feature requests. If you want some feature or want to report a bug, just write inside the comments.

Technorati tags: , , , ,

Silverlight vs Flash

Michael Schwarz, the creator of Ajax.NET, the first .NET library to enable Ajax, just wrote on his blog a nice feature to feature comparison of MS Silverlight and Flash/Flex:

Rich Media Platform Comparison

I don't get the why he (or better the original source) included in the comparison also .NET 3.0, which is a completely different beast.

Anyway it turns out that they are basically the same for Rich Applications, but Silverlight, being based on WMF, has a lot more features (DRM, HiDef, production tools) than Flash in the video field.

Technorati tags: ,

CC.NET Monitor on Windows Live Gallery

I just went through the process of submitting my CC.NET Monitor for Vista Sidebar to the Windows Live Gallery.

Here is the link to the CC.NET Monitor page.

Tales of the development of CC.NET Monitor for Vista Sidebar

The CruiseControl.NET Monitor for Vista Sidebar is the first "real" Vista Sidebar gadget I developed, so I want to share 2 of the problems I encountered during the development.

The first problem was that the XmlHttpRequest always returned "undefined" (which is the null in javascript) for its responseXML property. I was reading an xml file, why did I receive a null instead of the XML Document contained into the response?

The XmlStatusReport.aspx file that contains the report for the build server doesn't have an xml content-type (not text/xml, application/xml or with a .xml extension) but has, as any other html page, a text/html content-type. So I had to work around that CCNET bug (now fixed and available in the next version of CC.NET 1.3):

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");

I read the responseText property and I create a new xml document from scratch using the XMLDOM object.

Then I encountered another problem: the XmlHttpRequest always returned the same data, even if the data had changed.

I think it has something to do with some kind of caching implemented by the javascript engine of the Vista Sidebar. In this case the fix was easy: instead of asking for the XmlStatusReport.aspx file I append a timestamp to the filename, in order bypass the cache and always get a fresh copy of the file.

function buildUrl(url)
var now = new Date();
url = url+'/';
var finalUrl=url + "XmlStatusReport.aspx?sid=" + now.getTime();
return finalUrl;

This is not the best solution, since it uses both bandwidth and server processing time, but that seems to be an issue with the way IE implement caching, so not of easy solution.


Technorati tags: , , , ,

Social bookmarking by Microsoft

Microsoft communities just released to the world a public beta version of Tagspace:

Tagspace* is a social bookmarking service for software professionals** that encourages sound sleep and sweet dreams by enabling you to be better informed, better connected, and more productive. The more you use Tagspace, the more you'll wonder how you survived for so long in the cramped quarters of your Web browser's Favorites folder.
Source: Introducing Microsoft Tagspace

Is it just another clone or will it really have something more "software professionals oriented" as said by Korby Parnell, a product manager in the Community Technologies Team?

Along with tagspace they also released the other parts of the Community Platform: blogs and forums.

Here are some interesting reads if you want to dig into this new thing:

I had a quick look at what has been released, and TagSpace is the only service that seems to be usable or acceptable by an end-user. But I subscribed to the blogs of some of the member of the team.

Is WPF/E really named after David Silverlight?

Reporting the release to the public of MS Silverlight (codename WPF/E) I was wondering if that product has been named after David Silverlight, creator of many community websites like Community Credit.

I heard that Microsoft has just started an extremely high reward system for very active community leaders, and that WPF/E is the first reward issued with that system.

David is reporting a conversation he had with Bill Gates: To be honest, I didn't really believe him when told me about actually meeting Bill Gates a few months back to discuss some really high honor, but anyway it's a awesome honor for a community developer to have a real product named after him.

Congratulations David!!!

CC.NET Monitor for Vista Sidebar 0.6

UPDATE: The latest version of CC.NET Monitor for Vista Sidebar is v0.9.5: read more about it on the CC.NET Monitor for Vista Sidebar v0.9.5 release notes.

Yesterday I released the first version (number 0.5) of my CC.NET Monitor for Vista Sidebar.

But I forgot some debugging stuff in the release. So, in order to avoid confusion, I bumped up the version number to 0.6.

Here is the new version:

CC.NET Monitor for Vista Sidebar 0.6

Release notes:
Removed an hard-coded url I used for debugging
Removed the double cycle I used to test the scrolling of the gadget with more project

Thank you to Thomas and Steve for reporting the bugs

Technorati tags: , , , ,

Vista Gadget for CruiseControl.NET - CC.NET Monitor for Vista Sidebar 0.5

UPDATE: The latest version of CC.NET Monitor for Vista Sidebar is v0.9.5: read more about it on the CC.NET Monitor for Vista Sidebar v0.9.5 release notes.

I'm using CruiseControl.NET both at work and for Subtext, and since I'm using Vista I wanted to look at my servers states inside the Vista Sidebar.

Last October Ruslan Trifonov built a Vista Sidebar Gadget for Cruise Control.NET, but I didn't like it mainly because it connects to a custom web service he built on purpose, instead of using the REST-like API provided inside CC.NET.

So I decided to give the Vista Sidebar Gadget development a try, and I built a Vista Sidebar Gadget to monitor a CruiseControl.NET server, but connecting to the XmlStatusReport that comes with CC.NET.

In this release (version number 0.5) I mainly focused on implementing the main features, and on giving the glassy look of all Vista Gadgets.

Gadget Features

It's quite easy to configure: just add the url of your ccnet dashboard and the refresh rate in second.

The gadgets list all the projects running on the specified server and in the docked view it shows different icons based on the status of the project:

  • when the project has been successfully built
  • when the build is broken
  • when the status is unknown (the first you build a project)
  • if something strange happened to the project (usually some error in the CC.NET server or with the source control provider)
  • the server is checking the source repository for modifications
  • the server is building the project

In the undocked view it also shows the last built label and the time of the last built.




What's next

I'll try to find the commands to trigger a build using the XmlStatusReport and add the buttons to force the build in the undocked view.

Download CC.NET Monitor for Vista Sidebar version 0.5.1


I want to thank Scott Dorman for the nice looking icons he put in our SubtText dashboard

UPDATE: I updated the version from 0.5 to 0.5.1 because I forgot a debugging variable in the 0.5 release. So if you downloaded the 0.5, you have to download the gadget again. And make sure the new version is 0.5.1

kick it on

Where the name Silverlight come from

Yesterday I was wondering about the origin of the name "Silverlight".

Today I got the answer I was looking for, on the Starbucks .NET Developer blog: Microsoft Silverlight - What an Honor!!!

The article reports the reason of why WPF/E has been named "Silverlight"... worth reading

WPF/E has name: Silverlight

Sunday 15th was NAB day, and everybody was waiting for some shocking announcement from Apple (which announced only a professional version of Final Cut Server), but the shocking announcement came from the other side of the wall. Microsoft announced its "flash-killer" web platform: MS Silverlight.

I've always been a fan of advanced GUI for the web, and finally we have a flash-like platform that can be developed with Visual Studio and developer oriented IDE. Flash was good but it lacked a powerful IDE as Visual Studio.

Here are some link to blog of people directly involved in the development:

and... the official web site:

I was wondering: does this name have something to do with David Silverlight, the creator of Community Credits and XML MVP from Miami? smile_teeth

Leopard to be delayed till October

From Apple Hot News:

... we will not be able to release Leopard at our Worldwide Developers Conference in early June as planned. While Leopard's features will be complete by then, we cannot deliver the quality release that we and our customers expect from us. We now plan to show our developers a near final version of Leopard at the conference, give them a beta copy to take home so they can do their final testing, and ship Leopard in October. ...

And the reason for the delay is that:

iPhone contains the most sophisticated software ever shipped on a mobile device, and finishing it on time has not come without a price — we had to borrow some key software engineering and QA resources from our Mac OS X team

So, seems I did the right thing buying the new hard disk for my laptop smile_wink

My HDD is going to die soon, now I've the proof

Thanks to Igor for spending an hour on MSN helping me analyzing the reason of the poor performances of laptop.

He told me about a thing I was not aware of: the S.M.A.R.T. attributes for an hard disk. These attributes are stored inside the disk controller and should contain information useful to predict failures.

One of the most critical attribute is the "Reallocated Sectors Count":

Count of reallocated sectors. When the hard drive finds a read/write/verification error, it marks this sector as "reallocated" and transfers data to a special reserved area (spare area). This process is also known as remapping and "reallocated" sectors are called remaps. This is why, on modern hard disks, "bad blocks" cannot be found while testing the surface — all bad blocks are hidden in reallocated sectors. However, the more sectors that are reallocated, the more read/write speed will decrease.

Source: Known S.M.A.R.T. attributes

There are a few diagnostic tools that are able to read that attributes, and I tried the following one:

  • SpeedFan: monitors fan speed and temperatures, and read SMART information as well
  • HD Tune: this is a diagnostic tool for Hard Disk. Compute disk speed, surface damage, and read the SMART tags.

They both warned me that my HDD has 548 reallocated sectors (and usually disks have from 256 up to 1024 spare sectors), so I might want to change my disk before it's too late.

And that is reason for the poor performances of my disk... so I finally decided to buy a new 2.5" HDD, and replace mine, and wait a few months before buying the MacBook. So next weekend is reinstallation day, again.

Intellisense for SQL

Intellisense allows developers to be faster when writing code, and it can be used for almost everything inside Visual Studio, from C# code to general XML formats and CSS. But when writing SQL queries or stored procedures you have to rely only on your memory or on cut&paste.

Today I found a very cool application that enables a sort of Intellisense also when writing SQL queries. And not only in VS, but also inside Query Analyzer, Management Studio, Enterprise Manager and even UltraEdit and EditPlus.

I'm speaking about SQL Prompt by Red-Gate.

ScottGu wrote about a special offer for the old version of SQL Prompt version 2.0 almost an year ago. That version was a free download till September 2006.

But Buster Collings was kind enough to upload the installer on his website.

Of course the new SQL Prompt 3.0 has a lot more features and is also more integrated inside the editors, but since it costs 195$ I think I'll stay with the old 2.0 version

Running with an iPod

Everybody is speaking about the 100 millionth iPod sold, so no point repeating the same thing again and again. I decided to keep my Apple/iPod posts to less than one per week. So, for this week, I want to talk about the best (in my opinion) iPod accessory: the Nike+ running kit.

It is made up by and accelerometer/transmitter that sits in (or on) your shoes, and a receiver that fits into the iPod dock connector, processes the data received from the sensor, and drives the iPod display showing the current speed, distance and other useful information about your current run. And it has a voice feedback, as well. On the Apple site there is a nice demo of the whole process.

It's supposed to work only with Nike+ compatible shoes, but it works fine with any pair of shoes: you just need to put the sensor into a pocket secured to the laces.
The sensor works better if sitting the closer to the ground as possible. So if you need to buy a new pair of shoes, buy the Nike+ ones since they have the innersole made on purpose to accommodate the sensor.

After the shoes and the armband, Nike started to sell a lot of other garments under the Nike+ brand: t-shirts, shorts, long sleeve running top and many other. The cool thing about them is that they all have a pocket for the iPod and some holes for the headphones cable: no more armband that reduce the blood circulation of your arm, and no more cables flying around while you are running.

I bought both the long sleeve top and the t-shirt, and I'm pretty happy with both:

  • the long sleeved one has the pocket on the left arm, with the iPod pointing to the hand, and the cable running along the arm and coming out near the shoulder
  • the t-shirt has the pocket on the side, with the iPod pointing to the ground, and with the cable running inside the t-shirt and coming out near the shoulder.

You cannot see the screen nor the click wheel, so you will find yourself clicking on the wrong part of the wheel, pausing the run instead of turning the volume down or changing song instead of asking for the voice feedback, but once you get used to it, and once you find the proper placement of the iPod inside the pocket, you will be able to the use it as when you can see the click wheel.

But the coolest part of the mix is the website: once you have finished your training, you connect the iPod to your pc, and when you synchronize with iTunes, the data of the latest run are sent to the website. There you can see the pace of your runs, review your performances, and race against other runners in the World.

Technorati tags: , ,

MindBlog and other cool blogs

Before heading to Queenstown and Wanaka for Easter, I subscribed to a few blogs by .NET Wellington developers.

They are all written by people working for the same company: Mindscape.

At the moment they are all focused on promoting the Vista Sidebar Gadgets, with some cool gadget released.

Great contents, but I've 2 things to point out:

  • Wordpress?? aren't you all .NET developers? come on... move to Subtext !!! smile_teeth
  • JD's blog, jb's blog, Andrew Peter's blog: a pretty boring naming schema, isn't it? smile_wink

Software development like which climbing?


I just read an article by Jeff "CodingHorror" Atwood about a comparison between Software Projects and Rock Climbing.

As someone might have guessed from my domain and from the logo of my blog, I'm a rock climber smile_teeth

Some comments on the original post say that, with the right justifications,  probably anything can be compared, more or less, to software projects. I think this is correct: words are a very powerful tool if used by someone that knows how to use them.

But let's focus on the original software project - rock climbing metaphor.

First let's say that there are a lot of types of climbing:

  • bouldering
  • top-rope climbing
  • sport climbing
  • traditional climbing
  • mountain climbing

and each of them have a different approach to the climbing.
So let's explain which are this approaches and how can we compare software to rock climbing



You climb small boulders, short pieces of rock (max 3-4 meters), usually more technical that usual routes. You climb without a rope, but you use some kind of mat where you can fall on without harming yourself.

Here you climb alone, but you need a good partner or group of friends looking at you to help in case of a fall. No tool are required, just your hands and a chalk bag. You try the problems many many times until you finally complete it. It's really challenging and a lot of fun.

But doesn't fit the software project metaphor: probably it's more like trying to write a powershell script that gets an RSS feed from flickr, saves the images on a temp folder, writes an HTML page and than opens IE to show a nice image gallery. All directly coded in the commandline smile_shades. This just programming for the sake of it.

Top-rope climbing

You climb with the rope from the top. With this technique you can try routes or problems a bit over your level of skills without the risk of falling down. This is usual in indoor climbing walls where people go to train. And usually climbers do this kind of climbs because they have to do, not because they have fun doing it.

I cannot find a development scenario that is similar to this kind of climb.

Sport Climbing

That is rock climbing as people usually see in magazine or in television: you climb a pre-bolted wall with the rope from the bottom and every now and then you clip the rope into a quickdraw connected to the bolt that is in the wall. So if you miss an hold, you fall only for a few meters (till the last bolt). Routes can be from 20 to 50 meters long, and can be joined to reach the top of a tall wall or cliff.

This is more like programming, the act of writing code, going from a bolt to the following is like implementing use case or interfaces that someone else already designed. "Real programmers" like this kind of activity more than dealing with architecture, project plans and similar stuff.

Traditional climbing

Probably the more rewarding type of climbing: like in sport climbing you climbs vertical walls, but you have to place your own gear into the wall. You need to be more experienced, you have to find your own way up to the mountain, you need to plan for the climb, look at pictures of the wall. But once you are hanging on the wall you are alone, just you and your partner.

We may say that Trad climbing is like working on a project developed using an Agile/XP approach: you write some guidelines and use cases at the beginning, you design the general architecture, but once you start climbing (ehm... programming), a lot of factors can force you change from the original plan: a thunderstorm coming, a crack that is too friable, a wall that is too steep or with no holds.

Mountain Climbing

Mt Everest, K2, but also Mt Cook, Mt Blanc, Gran Paradiso: climbing one of this mountain requires a lot of stamina, a lot of planning, a lot of different tools and a lot of experience. A mountain climber is not necessarily a sport or traditional climber, and viceversa. Different skills are needed to complete a 40 day expedition on Mt Everest. To get to the top you have to plan, you have to climb a bit each day, set up base camps at various altitudes, put fixed ropes to help yourself and the others of your team in case they are getting tired or want to save some energy for the trickiest part of the climb.

Comparing to software development this is like designing a big enterprise application with a BDUF, with a 1 year roadmap, spending heaps of money, with a big team of developers.

So, is Software Project similar to Rock Climbing?

In my opinion the most realistic metaphor is Sport Climbing == Programming:

It's fun, it's not dangerous, it's technical but you need only strictly technical skills, you have to know your tools, but you need to know only the ones you really need, you don't need to plan a lot because the route has already been setup by someone else, and it's not very team oriented.

Building a Zen laptop


Here I am blogging from my laptop again.
Yesterday I formatted the disks and reinstalled XP and today, as soon I came back from work, I launched all the various updates, and while I'm writing this post the installation for Visual Studio 2005 is running.
Unfortunately the reinstallation didn't fix the problem I had with too much CPU in kernel time.

At this point I'm pretty sure it's an HW problem, probably the disk or the disk controller. I could buy a new 2.5" disk and hope it will fix the problem, but what if the problem lies somewhere else?

Since sending my 4 year old laptop to the Acer support will cost me more than its value, I made up my mind, so I'm going to buy a new laptop.

I already declared my love for the MacBook many times here and on my Italian blog, but I really want to be sure it will provide me the feature I want for the best price, so I'll be doing some search on the various shops in Wellington and online.

But knowing that it may take a few weeks before I find my new laptop, I'm building my machine with a Zen setup:

  • Outlook because I've all my email in .pst files and I don't want to spend a minute converting them to Thunderbird format
  • Visual Studio 2005 with all its updates and extensions (SP1, Ajax, Team Explorer, Mobile Emulator, and so on)
  • SVN and CVS clients
  • iTunes
  • Windows Live Writer and a few plugins (actually I already installed it )
  • MSN, GTalk, Skype
  • Paint.NET
  • FeedDemon
  • UltraEdit

This is the minimum set of programs to stay in contact with friend in Italy, to write posts on my blogs, and going on with the development of Subtext and the other toy projects I'm working on.

The end of online music stores as we know it?

Apple and EMI just announced that the iTunes store will be selling EMI music in AAC format without DRM.

Jobs already expressed his feelings about DRM a few months ago, and now, with the partnership of EMI he made his (and probably everyone except Microsoft ) dream come true.

You can read a a full coverage of the press announcement on Word of Apple website or its transcript on AppleInsider, and also the official EMI and Apple press releases.

What is it going to happen starting from next May:

  • Singles (of EMI artists) will be sold in an AAC double quality DRM-Free format for $1.29/€1.29/£0.99
  • Users will be able to download the "old" format (with DRM and half the quality) for the same price at it is now: $0.99/€0.99/£0.79
  • Albums will be sold only DRM free at the same price as they are sold now
  • EMI music video will be available DRM-free at no charge

Speaking from a business point of view I should not be happy about that decision because my previous company in Italy is making money selling online music stores based on the Microsoft DRM, and my CTO in Esperia is now in Brasil collaborating with a company whose core business is building DRM enables servers.

But I think this is a very good move for Apple. DRM can be broken in a lot of ways, and if everything else fails you can always spend 5$ buying a cable, connecting your iPod to a laptop, and record the wave in order to have a new audio file. So why spending (or in this case, throwing away) heaps of money trying to find a way to prevent piracy?

The only thing I still don't get is why everybody is still making prices as if the US Dollar has the same value of the Euro!!

At today rate 1 Euro is 1.336 US dollars, which means that Italians, French and Germans are paying 30% more than Americans (€0.99 is $1.32). And even worst with Pounds: British are paying 60% more then US (£0.79 is $1.56). But that's another story.

UPDATE: Here is another post with a nice coverage of the press announcement and a possible "not-so-good" meaning of the Apple move.

I was also wondering about the next move by Microsoft. And here it is: Zune the next to drop DRM?

Entering reinstallation mode

Due to my recent problems with the laptop, I'm going to rebuild my laptop from scratch:
delete the partitions, format the disk, reinstall XP, and then all the program I use (mainly Visual Studio, Office, Firefox and iTunes)

I spent the last 4 hours exporting settings and copying data file to my external USB disk.

I wish I had a well planned backup strategy as Scott Hanselman has, but I don't, so I dumped all my small 40Gb disk to my external drive just in case I need something I forgot to backup.

See you when my laptop is up and running again... smile_wink

Web 2.0 for dummies

Web 2.0... maybe things have been written about that topic... but why reading pages when you can watch a video?

Here are 2 nice video that are trying to explain what Web 2.0 is about:

That video is a very good introduction of the topic, but a bit boring.

Then next one doesn't cover all the aspects of the web 2.0, but focuses on the most important thing: content is more important than its form

And there are a lot more video on YouTube about that topic.

Beware the ASP.NET SetCacheability method

A few months ago, while still working on websites with millions of users per day, Luigi and I spent a bad evening trying to debug the cause of a sudden increase in the CPU time of our live servers.

In ASP.NET you can choose whether a page is cached by the browser or not simply setting the Cache-Control HTTP header with that code:


The SetCachability method:

Sets the Cache-Control HTTP header. The Cache-Control HTTP header controls how documents are to be cached on the network.

Going back to problem I had, I had just added a page with the live results of the match, so I set the cache to NoCache in order to force the browser to download it from the server all the times.

HttpCacheability enum on MSDN:

  • NoCache: nobody can cache the page.
  • Private: only browsers can cache it (but not shared proxies). This is the default value
  • Public: everybody can cache the page, proxies included
  • Server: pages are cached only on the server (like the NoCache, so browsers don't cache the page)
  • ServerAndNoCache: Server and NoCache... the same as Server
  • ServerAndPrivate: Server and Private... the same as Private

So why did I have the increase of the load on the server?

Because "nobody" includes also the OutputCache of the server, so my page was rebuilt with every request instead of once per minute. I simply changed to ServerAndNoCache and the load dropped immediately.

So, if you just want to disable the caching on the browser, but also want the benefit of the ASP.NET caching, forget about the NoCache and use ServerAndNoCache.

The question is why MS decided to control with the same enum both the Cache-Control HTTP header and the ASP.NET Server cache?

Maybe Brad or Krzysztof can answer that question smile_wink