Category Archives: software development

Visual Studio 2008 is done

Microsoft says you can now download the release version of Visual Studio 2008 from MSDN subscriber downloads (presuming you have a subscription, of course).

I believe it, because this is what I get when I try:

vs2008

Looks like the server is a little stressed. But I thought you were not meant to expose your stack trace to the world?

Never mind, I’m sure I’ll get this thing downloaded soon.

Update: Edited link for one that is not broken

Technorati tags: , ,

Are you Mort, Elvis or Einstein?

Old news to some, but I’d not come across this until Paul Vick mentioned it on his blog. Microsoft uses the concept of personas when designing its developer tools. Nikhil Kothari explains all, in this post from 2004:

Mort, the opportunistic developer, likes to create quick-working solutions for immediate problems and focuses on productivity and learn as needed. Elvis, the pragmatic programmer, likes to create long-lasting solutions addressing the problem domain, and learn while working on the solution. Einstein, the paranoid programmer, likes to create the most efficient solution to a given problem, and typically learn in advance before working on the solution. In a way, these personas have helped guide the design of features during the Whidbey product cycle.

Whidbey was the codename for Visual Studio 2005.

Vick notes that these three personas map very loosely to Visual Basic, C# and C++. I can see what he means, though I’d have thought that all three personality types (and more) could be working in any language. You can do quick pragmatic hacks in C++ as well as in VB. Vick wants to retire Mort because he may be giving VB a bad image (internally?). Certainly it’s an unfortunate name; I’m not sure where it comes from (Terry Pratchett?).

It’s not a bad thing to have some idea of the range of users you are catering for, though a range of 3 personas strikes me as restrictive. It is also thought-provoking in the light of recent development trends. Now we have the whole designer/developer thing; and separately, there is a new focus on modeling within Microsoft – see Oslo. How will Mort, Elvis and Einstein cope with all that?

Technorati tags: , , , ,

Tech Ed reflections

Tech Ed Barcelona has been a low-key affair in some ways, with little in the way of exciting news; yet I was impressed with several pieces of technology which I had not looked at closely before.

I found it curious that the keynote made so little of these. In particular, I’m thinking about Silverlight 1.1, SQL Server 2008, and Project Astoria (also known as ADO.NET Data Services).

SQL Sever 2008 is a big release, though it is easy to get confused over what is part of SQL Server, and what is part of ADO.NET. I will be posting more on this subject, following my interview today with Michael Rys, Principal Program Manager of SQL Server Engine, Relational and XML (don’t try to say that quickly). One of the points of interest for those who follow Microsoft technology is the new FILESTREAM data type – in fact it is not strictly a data type, but another way to store blobs. This is a way to store unstructured data under SQL Server control, giving you the benefits of transactions, SQL Server security, backup, etc, but with the performance of the file system. In fact, each blob is stored as an individual file though you are not expected to find it using Windows Explorer. Using the SQL Server API you can get a WIn32 file handle to the blob, and there are no size limits other than those which the file system imposes. Result: faster access to the data.

Another piece of the puzzle is that full-text indexing is now fully integrated into the SQL Server engine. Right, so now we have indexed, queryable, high performance access to data in a transactional file system. Remind you of WinFS?

This will also give Sharepoint a significant performance boost in some future release, and Sharepoint is of strategic importance for Microsoft.

I’m also interested in Project Astoria, an easy to use a REST API into your database. This makes huge sense in the context of AJAX and Silverlight, and if you want to do mashups with other web services. I got the impression that Microsoft is being deliberately low key about this, pending an announcement at some future date. My guess is that it will be released at the same time as SQL Server 2008 – June next year? – but it is only a guess.

I fear much of this passed by many of the Tech Ed delegates. Talking to them at the party last night, I found that several were in the early stages of moving from .NET 1.1 to .NET 2.0. There is a substantial time lag between release and real-world adoption.

Plane about to leave so I’ll wrap up here. I do have more to post from Tech Ed, so check back soon.

Project Astoria a hit at TechEd

There is a buzz here at TechEd about Project Astoria. The reason is that it promises to simplify development of web applications that deal with data, which is most of them. Astoria is a REST API for ADO.NET, and hooks into the new Entity Framework object-relational mapping layer. Therefore, it solves two problems in one go.

Here’s a quick look at how it works. Let’s assume that you have a database which stores some information you want to present in your web application. Step one is to use Visual Studio to generate an Entity Data Model from your database.

Next, you tweak the model so that it looks as close as possible to the objects you are storing. The framework should deal with the complexities of mapping collections to linked tables and so on.

Now you create a new ADO.NET Data Service (sadly, this may well be the official name for Astoria), and point the service at your model. By default a new service does not expose any data, for security reasons, but by writing an InitializeService method you can configure which objects you want to publish.

Run the service, and the objects in your model are now URL-addressable. It’s pretty flexible. For example:

[serviceurl]/Products : return all the products (yes, you can do paging).

[serviceurl]/Products[2]: return the product with an ID of 2.

[serviceurl]/Products[Color eq ‘Blue’]: return all the blue products.

[serviceurl]/Customers[2]/Orders/:return all the orders for the customer with an ID of 2.

The data comes back in either ATOM or JSON format. Naturally, each element in the returned data includes its URL. Let’s say you have an AJAX application so you are calling this service from JavaScript. Iterating through the results and populating an HTML list or table is easy, especially as Astoria includes a client JavaScript library. There is also a client library for .NET applications. You can also add or update data with HTTP PUT, or remove it with DELETE.

You can extend your Astoria API by adding arbitrary methods that have the [WebGet] (or presumably [WebPut] or [WebDelete]) attribute. You can also add “interceptors” – code that gets called just before requests are executed, to enable validation or custom security.

Presuming it works as advertised, Astoria is a more natural and concise way to handle data than SOAP web services, and easier than devising your own techniques. It should work well with other technologies such as Adobe’s Flex. It will play nicely with mash-ups, since many other services out there use ATOM or JSON. it is a natural fit with AJAX and will work well with Silverlight – see http://www.silverlightdata.com [Silverlight 1.1 Alpha required] for an example.

Astoria will not be finished in time for the initial release of Visual Studio 2008, though reading between the lines it might be done in time for SQL Server 2008. It will work with any database server for which there is an Entity Framework provider. I was assured that creating such a provider is relatively easy, if you already have an ADO.NET 2.0 provider, so it is reasonable to expect wide support.

I think this will be popular.

Technorati tags: , , , , ,

SQL Server 2008 will miss own launch party

Excellent session here at Tech-Ed from Francois Ajenstat (Director of Product Management for SQL Server) and others on new features in SQL Server 2008. It looks good: transparent data encryption; new policy-based admin; data compression that actually speeds performance; new datatypes including FILESTREAM, for queryable but unstructured data, and DATETIME2 for high-precision date/time; spatial data support so you can query by distance, for example; new entity-data framework (not the same as LINQ but works with it) for object-relational mapping; new REST-based data API code-named Astoria; richer reporting including features acquired from Dundas and removing the dependence on Internet Information Services.

It’s a significant upgrade, but when do we get it? I had previously assumed that it would be no later than February 27th 2008, the announced launch date for Windows Server 2008, Visual Studio 2008 and SQL Server 2008. Visual Studio will actually be available to developers three months earlier, at the end of November. Not so SQL Server. Ajenstat said the version available at the launch will be a CTP (Community Tech Preview), with the final version coming in the “second quarter” – in other words, perhaps as late as June 2008.

By way of compensation, an earlier CTP coming later this month should contain most of the new features, unlike the preview available now.

Ajenstat also noted that SQL Server “vNext” is set for 2010-2011. I’m betting on 2011 at the earliest.

Visual Studio 2008 release by end November, Sync Framework announced

News from Tech-Ed Developers in Barcelona: Microsoft has announced that Visual Studio 2008 will be available to MSDN subscribers “by the end of November 2007”. I’m a little disappointed not to find the RTM build here at Tech-Ed, but that’s not long to wait. Along with Visual Studio we get .NET Framework 3.5. The package includes LINQ (Language Integrated Query), and full designer support at last for WPF (Windows Presentation Framework) as well as WF (Workflow Foundation) and WCF (Windows Communication Foundation). It has taken a year since the first release of Vista to provide proper developer support for the frameworks which shipped with it.

S Somasegar, Corporate VP of the Developer Division, is also announcing the first preview of the Microsoft Sync Framework. Mary Jo Foley has a good summary. Interesting, given that  building online/offline synch into applications can be challenging. You can download it here. The description says it is “a comprehensive synchronization platform”.

He also has a few stats. He says:

  • Over 1 million professional developers use Visual Studio 2005
  • 17 million downloads of Visual Studio Express
  • 25% of Visual Studio developers are using Visual Studio Team System.

This last statistic is higher than I expected. I spoke recently to a Team System early adopter, who told me that while he was not exactly disappointed with it, nevertheless he had come across significant problems. His biggest issue was that you cannot manage work items across team projects, making it difficult for developers involved in several different projects. He also found the integration with Office poor, and the lack of a full Web UI frustrating. Nothing more than you would expect for a version 1 release.

Finally, Somasegar mentions a new release of Popfly Explorer with “an easy way to add Silverlight gadgets built in Popfly to web pages,” to quote from the brief press overview.

Microsoft Oslo: now where have I heard this before?

“Oslo” is Microsoft’s latest pronouncement on the vexed subject of software modeling. This is from the backgrounder, which you can find here:

We are building a general-purpose modeling language, tools and repository to bridge all the models within an application, moving models to the center of application development. Models will no longer just describe the application, they will be the application.

Cool. But isn’t this reminiscent of what the OMG has talked about for years, with UML 2.x and Model Driven Architecture?

Why has MDA failed in mainstream development? I suspect the key question is whether it complicates rather than simplifies the software development process. In other words, the MDA overhead may exceed its benefits for the majority of applications. Looking at the list of OMG specifications that’s not hard to believe.

In relation to Oslo, I have a few questions.

First, why will Oslo succeed when other smart people have failed? Point of interest: they may even be the same people. Note this quote from Microsoft’s Jack Greenfield, whom I interviewed for the Register:

“We are the UML guys, that’s the funny part of it,” says Greenfield. “I was one of the chief architects at Rational; I spent a lot of time deeply steeped in the UML and in the committee work in the OMG. Other guys on team go deeper than I do.

Second, how serious is Microsoft about Oslo? When I spoke to Greenfield, I had the strong impression that modeling is an area of factional conflict within Microsoft. Thus, it could be the big thing one moment, then pushed to one side the next.

Third, how does Oslo simplify development, as opposed to giving developers yet another layer of complexity to worry about?

Irrespective of the above, it the parts of Oslo that talk about better integrating between BizTalk, the .NET Framework, and System Center do make sense:

There will also be investments aligning the metadata repositories across the Server & Tools Business products. System Center “5,” Visual Studio “10” and BizTalk Server “6” will utilize a common repository technology for managing, versioning and deploying models.

Further, who know whether Microsoft may yet do something wonderful with modeling that delivers on promises like:

In short, we want developers to be able to build [distributed] applications with one-tenth the code that is required today. And we want to establish a rich context in which those developers can interact with business analysts and IT professionals easily.

But count me in the sceptics camp until Microsoft comes up with something more convincing than rhetoric we have heard before.

How ASP.NET began in Java, and the truth about Project Cool

A bit of nostalgia for you. Cast your minds back to 1999 or thereabouts. Microsoft is finishing off IIS 4.0 and there is no such thing as C# or ASP.NET. However, there are rumours that Microsoft is creating a Java-like platform codenamed “Cool”, in the aftermath of a dispute with Sun that was making it impossible to use Java itself. Microsoft denies the rumours. Here’s a report from February 1999:

There is no Java-like language under development at Microsoft, said Michael Risse,  Microsoft’s product manager for application development tools. Risse said the company is talking to developers about a concept called Cool, a much less ambitious project intended to tie Microsoft’s Visual C++ development tool more closely to its COM+ middleware. However, Cool is not yet in development, and is unrelated to Java, said Risse. He said Cool is strictly a “whiteboard” concept, and that no software code connected to the concept has been written at Microsoft. Cool is also unrelated to any Java technology within the company, Risse stated. “There’s no connection between Cool and Visual J++, and the Java lawsuit is irrelevant to the thinking we are doing [with Cool],” he said.

Even after C# was announced in 2000, Microsoft denied that it had anything to do with Cool:

Yesterday, Microsoft executives denied that C# was related to the rumored Cool project.

Now, over to Mark Anders, co-inventor of ASP.NET, whom I interviewed earlier this month at Adobe Max Europe. I asked Anders how ASP.NET came about.

Anders: “ASP.NET happened after we shipped IIS 4.0 and everyone went on vacation. Scott Guthrie and I – Scott worked for me at the time, he was 22 years old, straight out of college – and we took advantage of the time everyone was on vacation to start brainstorming new ideas. We looked at ASP and how it was being used. I had worked on Visual InterDev so I had a lot of friends on that team, and we were looking at the new version, I think it was Visual InterDev 6.0, and we noticed how messy the code was. We said, how can we do better? Scott and I worked for a month and a half, and then when everybody came back from vacation in January we showed them a prototype and a PowerPoint deck, showed them this vision, and people said, ‘keep working on it’.”

I asked whether the prototype was based on .NET from the beginning, or “Project Cool” as the rumour went?

Anders: “No, it was not. The original prototype was written in Java. I loved Java as a language and Scott did too. So it was done in Java, and we took that around to lots of different groups. The first group that we took it to was the tools team. The VB and the InterDev teams were in a feud, and when they saw our demo they liked it. They said, ‘If you build that, we will target it with our tools.’

“The VB team was working on developing a new runtime, what became the Common Language Runtime. It was not as complicated as COM, and it had a nice object system, it was garbage collected. So we made a decision that we would write our thing, which at the time was called XSP, in this new runtime. So we were the first ones to commit to writing anything on it. The VB team was going to be using it as their runtime, they were doing their forms, but we actually built the whole thing in .NET.

“The funny thing is, you mention Cool. It was called Cool at one time, but Microsoft denied it. Scott and I presented what was then called ASP Plus, but we presented it a long time before anybody talked about .NET. We went to a conference, I think it was in Washington DC or something, and Scott and I were up on stage. He is doing this demo, and he says, ‘Here is a directory listing’. And I glance up at the screen, and I see file1.cool, all these .cool files, and we’re busy denying that there is anything called Cool, and he has this directory listing. So I was worried that somebody would see that and put two and two together… but nobody picked up on it. They had asked if they could videotape me to re-broadcast, and I’d said fine, but when I realized that the Cool screenshot was shown, I contacted them and said, ‘I can’t let you have that videotape’, and they sent it back. So it never leaked.”

All these efforts did not prevent The Register posting a story in September 2000 which describes how a reader working with early C# samples:

…discovered that the original C# compiler was called coolc, subsequently renamed as csc.exec. Elsewhere, sample C# code has the HTML tag <script language=’COOL’ runat=’server’>, and Larry notes a couple of references to the string “C\temp\fact\factorial.cool”.

So why did Microsoft deny it? I’m guessing, but maybe the company felt that ‘Project Cool’ was related to Java in people’s minds, and wanted to emphasize that .NET was 100% Java-free. Any resemblance is purely coincidental, as novelists like to say.

Microsoft Ruby

In what is partially a response to my earlier post, Bob Warfield asks:

Sun has “cultivated and vigorously supported” Ruby.  When will we read something similar to either announcement from Microsoft, instead of reading things like they’re going to quit shipping the JVM at the end of the year?

At least this one is easy. Microsoft announced Iron Ruby back in April.

But Iron Ruby runs on .NET. Right, so what does Sun’s Ruby run on? The JVM, of course.

By the way, I cannot think of any good reason why Microsoft should revive its JVM – withdrawn, you recall, at Sun’s insistence. Microsoft’s JVM was horribly out-of-date anyway; and there are several perfectly good JVMs that run fine on Windows.

Technorati tags: ,

Considering Microsoft’s “rift with the web”

I enjoy the SmoothSpan blog but I’m not convinced by this article on Microsoft’s rift with the web.

Bob Warfield says:

Ever since their spat with Sun over Java, Microsoft has been on an increasingly proprietary path called .NET.

I am not sure why .NET is “increasingly” proprietary. Why is it more proprietary now than it used to be? Arguably it is less so; Mono is more advanced; and in addition Microsoft is going cross-platform with the CLR, by bundling it into Silverlight. That does not make it less proprietary in itself, but means that it is less closely tied to Windows.

Warfield does not quite say, but strongly implies, that .NET is failing in the market:

It’s symptomatic that you can find about 18 million Google hits on “SQL Server” but there are 77 million hits on mySQL.  There are 2+ billion hits for PHP and 135 million for Java.  C# gets a modest 15 million hits.

Right, so by the same logic PHP is vastly more important than Java. For some reason, I get different results on MySQL, which reports 171 million hits. Just for fun I tapped in Oracle, which gets only 105 million, inflated by all sorts of non-database references, so we must conclude that MySQL is far more important in the Enterprise than Oracle.

No, this sort of Google-diving is lazy analysis. Sure, the results are interesting, but they are skewed in all sorts of ways.

I am not suggesting that .NET is bigger than Java. Nevertheless, it has been a success story for Microsoft, particularly on the server which is the focus of Warfield’s comments. So too has SQL Server; in fact if I remember rightly, the server side of Microsoft has been showing healthy growth versus the more stagnant Windows/Office side of the business.

Look at what Netcraft is saying: in its October 2007 web server survey it show gaining market share for IIS and implicitly .NET technology, and has done for several months. Don’t take the Apache drop too seriously; Netcraft’s figures are skewed by the decision to remove Google’s servers from the Apache figures. Nevertheless, Microsoft seems to be growing its web business on the server side.

Jobs? I track these from time to time in the UK, and C# has shown remarkable growth since its introduction, partly at the expense of VB, but also versus Java. Yes, Java is bigger, but you would expect that.

Why has C# succeeded despite Java? Ease of use, productivity and tools. All of these can be debated; but there is some consensus about the excessive complexity of JEE, which has benefited Microsoft. I’ve also noticed innovations in C# being quietly adopted in Java. Given its false start with Java in the early days, I think Microsoft has done well to establish its new language.

Now, I do partially agree with Warfield. Microsoft is an island and I notice strong polarization when I attend conferences and the like: there is a Microsoft crowd and a non-Microsoft crowd. And I agree that the open source community builds largely on open source technology, within which Java is more widely accepted than .NET. However, the .NET island is relatively large and so far has proved resilient.

Should Microsoft drop .NET and embrace Java or PHP, as Warfield kind-of implies? No. There is no technical need for it, because .NET works well. It is not really a rift with the web, because it is server technology and actually plays pretty well with others, through web services for example. The key thing on the web is to be cross-platform on the client. Writely, acquired by Google, was a .NET product. Did anyone care? No; in fact I doubt many were even aware of it. Now Google has incorporated it into Docs and I should think it has been rewritten in Python or something. Few care about that either; but if it did not work properly on a Mac or in FireFox we would all hear about it.

I don’t mean to minimize Microsoft’s problems. More than any other company I can think of, Microsoft has difficulty in balancing the needs of its OS and desktop application business with the migration we are all making to the Web. Further, it has big PR and image problems, and poor market acceptance for Vista must be a headache. Yes, there is a Microsoft crisis brewing. I’d suggest though that the company can succeed best by building on .NET, not by abandoning it.

Technorati tags: , , , , , ,