First impression of VS 2010

Visual Studio 2010 Beta 1 is publically available and besides CLR/.Net 4.0 the IDE itself changes a bit:

  • The Visual Studio Shell 2010 is based on WPF, the first time Microsoft actually is using this in one of its own product.
  • Some features available in R# are now also directly supported by the IDE like symbol navigation and automatic implementation generation.
  • Silverlight and F# are integrated out of the box.
  • Historical debugging is an interesting new concept, the debugger now tracks certain events until you actually hit your break point.
  • Some basic support for UML was added.

All in all the switch to WPF gives the Visual Studio Shell new important graphical possibilities. WPF has also a big downside: it needs a lot more resources as the old forms, so you need a bit more graphical and computational power as with the current version. At least you will know why 2 or 4 cores are useful … The Team Foundation Server functionality will be also extended but as it looks the knew version is no improvement to the current one, which is not worth the money and effort, so it will be easier to invest in a working issue tracker, a build server, a test case management tool and a usable wiki. Integration is overrated if it is not usable in real projects effectively …

Thoughts about Google Wave

Google presented the Wave project this week at its development conference Google I/O 09. A lot of blogs (ok, maybe nearly every one) covered Wave in the last days so I have also to write something about it after watching the presentation:

  • The presentation of an conversation between several participants is very natural: people can enter and leave conversations, no matter if online or offline, add additional information and fork new ones. The features of Mail, IM and Wikis are finally merged.
  • Updates of information snippets work in near real time. This is definitely possible today and will become a lot easier with the availability of Web workers.
  • The conversation stream, called Wave, can be edited concurrently and they are versioned so they can play back in time.
  • Participants in the conversation can not only be persons but also automatons like translation engines and automatic content enrichment. The presentation of Google’s spelling and grammar proofing Robot and the automatic translation engine was awesome.
  • Wave will use important HTML 5 features and will push the evolution of the web browsers massively. Chrome, Firefox, Safari and Opera are leading here, not only on the desktop but more important on mobile clients (maybe also Palm Pre will be an important platform here?), Microsoft is a generation behind here and maybe will catch up with their completely new browser engine after IE 8.
  • Wave can be federated. This means that you can have your own Wave servers active, participate in open Waves but keep your conversation private.
  • The Wave project will be open sourced, not only the API and the protocol but also the reference implementation. With Google Maps they overlooked how fast and creative the community worldwide reacted now they plan to use this potential directly.

I really was surprised by this presentation; I think nobody has expected something like this. If Google gets this of the ground Wave will have the biggest impact in how we communicate and process information since search engines and Email itself. Because of the openness of the platform and the inherently possibility to federate the infrastructure this concept can work. Something remains me here of Gelernter’s ideas in Mirror Worlds

An Apple hit me

Since two weeks I have besides my main workstation on Vista64 and my Sony TZ with Ubuntu 9.04 also a third system, a 3rd generation Mac.mini. Besides OS X I’m interested in the iPhone development environment and sometimes Keynote is nice to have. I’ve sporadically used a Mac before but this time I can play a bit longer with it. After this short time, I had a mixed experience: On the positive side you get

  • A really nice hardware design. If the thing gets in the future a HDMI port and an BluRay drive it will be the optimal living room system. And it is fast and quiet.
  • The basic configuration is easy to handle for anyone, including WLAN. It just works
  • Dashboard brings a real advantage, more usable than Vistas Sidebar
  • You get the development environment for free (Xcode)
  • You get a lot of good software, like Quicksilver, for OS X besides a lot of normal Linux applications are or can be ported. In general the support of software is better than on Linux.
  • The development environment provides nice utilities like Instruments, all in all it seems that you have a good set of tools to develop software again without Virtual Machines.
  • Thanks Steve, there is a Terminal!

On the down side some things are annoying

  • Who ever has designed the keyboard and the and the “Mighty” mouse has never worked longer than 5 minutes with them
  • The German keyboard layout is simply silly. The English one is better.
  • Although OS X now has a VPN server out of the box, it does not work flawlessly if you use a German keyboard on the client side: as soon as you switch to some applications, like Xcode, the key mapping gets confused and for what ever reason, special characters work except the lower case “b”.
  • Xcode is only a very basic IDE, like Windows Visual Studio before 2003 … really, Eclipse with CTD and KDevelop a bit more up to the task if only they can understand Objective-C.
  • Sometimes configuration is to easy and dangerous: I wanted to share a directory via SMB, OS X shared it and all others on the disk too, But only my original target was protected by my user credentials… not what someone expects.
  • Why the hell is the shell per default case insensitive?!?

May only problem which make the daily work a bit harder as needed is the key mapping problem with VPN and Xcode or better to find a replacement for Xcode (and yes, Emacs can do it but hey I’m a long term IntelliJ and Resharper user …)

Using Twitter as micro blog

Because I’m sometimes a bit lazy, I decided to use Twitter as my micro blog engine. My current tweets are visible on the left side. In the past I’ve never thought that Twitter is of any use for me but it is a useful way to post interesting information snippets quickly without the need to write a lengthy blog entry (as I told, I’m lazy).

What Lean and Agile really means in development

The latest book of Craig Larman, Scaling Lean & Agile Development, written with Bas Vodde is a very well written guideline and collection of suggestions how Scrum can be scaled to larger teams (meaning more than 7 members). Instead of suggesting more organizational clutter like “Scrum-of-Scrums” it focus an really challenging topics like how to handle large backlogs without loosing the view for the big picture. Besides providing practical suggestions, the book does also a very well job in providing introductions to the values and ideas behind Scrum which are rooted in the Lean and Agile movement as well as in classical ones such as System Thinking. This is the first book I’ve seen which combines a long time of personal experience with all important values and ideas from the domains of Lean, Agile and Scrum (and their foundations) in a very compact form.
Highly recommended!

Microsoft CHESS for managed code available!

Presented on the PDC 2008, Microsoft has finally released the first version of the concurrency unit-testing tool CHESS. It was available already for Win32 applications but is now also available for managed Win32 code and integrated in Visual Studio 2008. Because CHESS is controlling all threads and their schedule while executing your code it will find “Heisenbugs”, means it is possible for the first time to build unit tests which are capable to test concurrency reliable.  This is a unique capability which I’ve not seen  in any other  test framework,  so it will be interesting to run it against some code of my own as well as from 3rd party libraries…
The only downside so far is that the Visual Studio version needed is the Team System one, because of the Microsoft unit test framework, which is not available to everyone. But Microsoft provides a trial version, valid until December 2009, as Virtual PC image so there is a way to use CHESS.

Unnecessary ghosts from the past

I have recently read a book about the last big cholera epidemic in London which leads to one of the first great data visualisations, Snow’s Map. He counted the number of deaths at every location so this is how he found the center of the epidemic at the Broad Street pump and discovered that the contaminated water was responsible. Currently cholera is back in Zimbabwe on large scale. The most important thing of the treatment is simply clean water, which seems not to be available any more in a country which was one of the highest developed ones before 1980 and destroyed by the criminal regime of Robert Mugabe. It is time that the neighbour countries take care of this mess.

How silly can they be?

The french presidency seems not to have understand that they put with their decision (see also this blog entry) in favour of the old car industry not only the environment targets at stake but also the industry by itself. The old car industry is dieing, certainly not all as fast as GM, and has to reinvent itself, which is possible, for providing electric or hybrid cars as well as using the chance to be in a leading role in this new market. Yes, the old management is sponsoring, aka lobbing, the current decision makers, but at least the EU parliament should be aware that by voting against this agreement they will safe a lot more jobs in the near future. 
Changing old industries needs the force by public or goverment otherwise they will overlook the point of no return and die.

Microsoft CCR and DDS, Part 2

Using the CCR Toolkit Microsoft also presented a new framework for distributed service environment, Decentralized Software Services (DSS). The framework provides the hosting environment for services, a new REST-oriented, SOAP based communication protocol and contract based programming model not dissimilar to the WCF framework. Services basically have a unique service- and contract identifier, multiple instances of a specific service will be identified by an additional UUID. Both descriptions are directly accessible via HTTP. Every service defines exactly one main CCR port which is responsible to handle the DDS protocol commands as well as the standard HTTP commands. The state holder of the service is explicitly defined and can be also accessed via HTTP which allows it to provide a web based interface to any service instance. DSS also provides a publish/subscribe service which can be used to communicate state changes between services. DSS also provides distributed queries based on LINQ for accessing the state as well as the actual message information of an particular service or contract. DSS also can use UPnP for discovering services.

I have only played a little with the tutorial examples and what these are my impressions:

  • Using CCR ports as accessors of the service the handling of the protocol is very simple also in the case of concurrent access. And debugging is actually a lot easier as in traditional concurrency structures …
  • Because services can provide their contract and description as plain HTML page as well as their state, it is a very convenient way to have a human readable monitoring interface available
  • Similar to WCF the contract definition for data and the service conversation is very simple as is the rest of the service implementation
  • Hosting of services is very simple and can be easily embedded
  • Working with the CCR is a new experience, without events or callback delegates

Because DSS is used for nearly all functionality provided by the Robotics Developer Studio, there a lot of examples how to interact with unmanaged code, GUI application as well as complex service choreography and the Visual Programming Language (VPL), which allows it to build really complex applications based on the DSS infrastructure.

So the only downside is that the CCR and DSS libraries can only be distributed if you by the separate license, which is not really expensive, and the feature to build actual distributable assemblies out of a VPL application is only available in the Standard Edition of the Robotics Studio. Either way, this is a very elegant and impressive new toolkit which is maybe the better the best solution for SOA architectures on the .Net platform today, at least better suited as Remoting or WCF.

50 in 50 presentation at JAOO 2008

Extremely well made presentation about computer languages. I think there is nearly for everyone something he has not seen or heard until today, at least not in this way. What a shame not been in Aarhus this year!
BTW this is also a very interesting style of presentation of Guy L. Steele and Richard P. Gabriel.

Next Page »