Friday 30 November 2007

ASPNIX thanks for bringing my web site down

My blog was down for nearly 72 hours. No response from the support and they phone is "temporary out of service". The name of the company that still hosts my web site is ASPNIX.  I suppose no more comments needed. I need to find a better hosting company soon enough. I will describe the whole issue later on.

Wednesday 28 November 2007

LINQ and its diverse incarnations

LINQ as a concept is highly extensible and every now and then a new LINQ to WhatEverYouWant gets announced. Just a few examples to show how fast people are adopting this technology: LINQ to LLBLGEN, LINQ to NHibernate, LINQ to Filckr, LINQ to Amazon, etc. Within a few days I've come across 3 more projects:
  • SyncLinq - it returns collections that implement INotifyCollectionChanged which lets you track changes
  • PLinq - it lets you specify that a given LINQ statement should be executed concurrently and it's up to the runtime to decide how many CPUs will be used
  • DryadLinq - the same as PLinq, just replace CPU with PC, basically it lets you specify that your query should be executed on many machines
It looks like LINQ is a powerful platform itself. It has enabled people to create many different levels of abstractions that are based on nearly the same syntax. It's amazing because if I want to stay close to bare metal I can go for Linq, if I want to get some additional services like change tracking I can go for SyncLinq. If I want to take advantage of my N > 1 cores without messing with threads I can go for PLinq and finally if I have N > 1 machines that nobody uses :) I would definitely go for DryadLinq. Diversity in its best shape.

Tuesday 20 November 2007

I can use Microsoft Surface but I can not nest directories as deep as I want

Microsoft Research is surprising us nearly every month. Just to name a few of their great products: PhotoSynth and Microsoft Surface. But you know what every day I hit the #$%@ limitation on the length of the path. 260 characters and that's all I can get in the .NET framework. Guys, can we back up a bit and solve the basic problems?
Resharper - click on the picture to see the details:

MsBuild - click on the picture to see the details:

Monday 12 November 2007

Irish Java Technology Conference launch from .NET engineer perspective

After the Joel Spolsky presentation that launched IJTC there was a panel discussion which meant to explore all the future directions that Java as a platform might take. The participants were talking about the future in a kind of sad way and the discussion toured out to be mainly a never-ending stream of complaints. Basically people were concerned about:
  • Java 6 is not implemented on Leopard
  • mobile phone specs on the vendors web sites don't list Java as a feature, something like Java ready sticker
  • lack of tools
  • diversity of frameworks and their life-span uncertainty
  • growing complexity of the language itself
  • dynamic languages that from their perspective are taking over Java current and future believers
  • etc.
One of the listeners asked how to anticipate the life-span of a given framework. The answer was that it's impossible, that's fine, and that his company needs to be more agile. Excuse me? If you build a house you don't want to change its foundation too often. As far as I know Microsoft provides 10 years of support for every framework they release. The next interesting statement was that Java is developing itself quickly because it's community driven. I think that this is not true and the best example is C#. The first version of it was way behind Java at that time it was released. Nowadays C# is way ahead of Java and the main reason is that there are a few smart guys at Microsoft who listen to developers but at the same time they are able to make quick decisions when it's needed. I love diversity but it looks like Java is going in so many different directions that even its believers are kind of lost. What is more, exploring (too)many directions at the same time always affects your velocity and you always have to find the right balance. I can not recall a single statement which would mention a framework/solution/approach which is a breakthrough and it will make the developers life much easier.
I might be wrong because I don't follow the Java world on daily basis but my overall impression was that both audience and guests were not really happy what they came up with. But there is a good chance that they weren't actually upset but simply tired :) because of the fact that the discussion finished around 10 pm. I hope that a few pints after the launch let them recharge the batteries because the conference itself looks interesting.

Two talks of Joel Spolsky in Dublin

Both of them took place on November 7th. The first one was in the morning and Joel Spolsky was presenting FogBugz. Explaining the product on feature by feature basis Joel managed to tell the audience a little bit about how he thinks the software development process should look like. And you know that people like him are right in 99% of cases and you can follow them blindly ;).
FogBugz is a great piece of software that provides many desired by every software house functionalities like bug tracking, project tracking, Wiki, discussion groups, evidence-based scheduling and even a small help desk system. All these features are seamlessly integrated together in a way that the user is not aware when he/she moves from one part of the system to the other. Every activity that requires user attention is as simple as possible and what is very important as natural as possible. It's enough to say that whenever you need to specify an end date you can simply type word "week" and the system will calculate the date based on the current date. Adding new tasks to your to-do list is simpler then firing notepad (actually I do this every morning to keep my 5 most important task always in front of me). When you start working on a task you just hit start button and when you are finished you hit stop. The system calculates everything for you taking into account lunch break, scheduled meetings, your working hours, etc.  Those are small things but they show how the whole application has been build. Basically, FogBugz tries to be as transparent as possible to let you focus on your real tasks.
The next thing that impressed me a lot was the evidence-based scheduling. If you work with FogBugz you will never get just the end date of your project. Instead, you will get a set of dates and probability assigned to every of them. Taking into account how many IT projects are completed on time and on budget then this must be a better approach than what we have now. Needles to say that it does make sense especially when you take into account Quantum Physics.
The second presentation was part of the IJTC launch and Joe was talking about a topic that is as incomprehensible to software developers as the fact that they should not spend half of their life in front of a computer :). He explained how Companies take advantage of misattribution to sell us more of their products. His example was based on comparison of iPhone and a phone X of company Y. It's X and Y because I don't remember their names which is the best evidence that misattribution works :). Basically iPhone has fewer features, it's not extensible for the time being, it doesn't have a replaceable battery, it's 4 times more expensive and the features that are present in both phones are better implemented in the phone X. Why Apple has sold millions of iPhones and the company Y can only dream of something like that? iPhone looks way better and it's much more user friendly. People then attach the UI experience to the rest of it and that's how iPhone as the whole seems to be perfect in their minds. That's what Joel calls misattribution. Although I suppose that the marketing success of iPhone is a little bit more complicated beast I still think that his point is valid and it was certainly refreshing to me.