Category Archives: software development


Tech-Ed: Don’t start new projects in Delphi or FoxPro

Yesterday I attended two sessions aimed at FoxPro and Delphi developers, on how and why they should migrate to .NET.

The FoxPro session drew sparse attendance, which did not surprise me. Fox developers do not attend Tech-Ed, as there is nothing here for them. Speaker Remi Caron made the point that FoxPro forms will never look quite right on Vista as the widgets are custom drawn, and the the FoxPro language is not as deeply object-oriented as C#. Many Fox application are utilitarian in nature, and Microsoft is doing and update codenamed Sedna, which focuses on .NET interop and Vista compatibility, so I am not sure that the arguments were fully persuasive. FoxPro applications will trundle on for a while yet. It is also interesting that C# 3.0 is only now getting integrated database query, which has been a feature of xBase from its earliest days. Still, FoxPro is undoubtedly coming to the end of its life as a product under active development.

The Delphi session was more interesting. Of course I make allowance for the fact that this is a Microsoft conference and that Delphi comes from a competitor in the tools space. Even so, it was a grim event from Borland’s perspective. Presenter Hadi Hariri is a Delphi person. He works for Atozed software, whose main product is a web application framework for Delphi. Also present was Chad Hower who worked on the Indy internet components for Delphi as well as Atozed’s Intraweb. Nobody could say that either speaker lacked Delphi knowledge. Around 25 delegates came to debate Delphi’s future.

Hariri and Hower did not advise developers to port their Delphi projects, unless there is really a compelling reason. However they did strongly advise against new projects in Delphi.* The main factor is integration with new .NET goodies such as those in .NET Framework 3.0, especially Windows Presentation Foundation and Windows Communication Foundation.

But surely you could use Delphi for .NET? Indeed, but there are two problems here. One is that according to Hariri the VCL.NET, Delphi’s backward-compatible .NET library, is failing to win significant adoption. He observes that hardly any of Atozed’s customers use Intraweb with VCL.NET, although it is fully supported. They all use either native Win32 VCL, or a few Kylix, the abandoned Linux port of Delphi. Other third-party vendors say the same thing: there is hardly any market for VCL.NET components.

Then surely you could use Delphi’s .NET compiler with Microsoft’s class libraries? Indeed, but will Borland or the new “DevCo” ever catch up with Microsoft? This week the .NET Framework 3.0 is fully released; yet Delphi 2006 only supports .NET 1.1. By the time Delphi appears with .NET 2.0 support, Microsoft will have updated Visual Studio with a designer for Windows Presentation Foundation and other .NET 3.0 features, which Delphi will likely lack for some time.

We used to laugh at vb applications. Unfortunately it is completely reversed now. We are always going to be behind now.

said Hariri. The session lends weight to recent calls for Borland to focus on Delphi capabilities in native code rather than .NET; yet that too is not ideal when so much of Microsoft’s development platform is focused on .NET.


* Hower has commented below and also written at length to emphasise that from his perspective this only applies to .NET projects, not Win32. for developers

I attended two sessions today given by Danny Thorpe, formerly of Borland, on the developer API for, Microsoft’s attempt to match Google as a Web 2.0 platform. Even the business model is Google-style: everything is free, supported by advertising with the possibility of revenue sharing for users. Unlike ASP.NET, the API is cross-platform on both client and server – presumably itself runs on .NET, but that is not a requirement for users of the various gadgets and services.

It’s strange to hear Thorpe talking about doing clever stuff with JavaScript – quite a change from Delphi’s native code compiler – but he describes it as just another way to write libraries for Microsoft’s platform. He is an enthusiast for doing aggregation (mash-ups) client-side aggregation, explaining that it improves scalability by reducing the amount of processing needed on web servers.

A key theme is how to build social applications that draw on the vast userbase of Hotmail and Windows Messenger, but without compromising privacy.

Interesting stuff, and I don’t doubt Microsoft’s commitment to even though it is not centre-stage here at Tech-Ed. At the same time I am picking up lack of cohesion in the overall platform strategy. Microsoft has endeavoured to create an internal startup culture, and while this is clearly generating some energy it comes at a price. There seem to be a number of different sub-organizations which do not work closely together. The Office Live initiative, which provides web hosting and cloud-based applications aimed at small businesses, is apparently separate from The ASP.NET AJAX libraries are different from the JavaScript libraries, even though there is overlap in the problems they address. Danny Thorpe is aware of these issues and says the company is working on internal collaboration, but it seems to me that fragmentation will be a growing problem as the various groups evolve.

More significant than Vista or Office: .NET Framework 3.0 is released

Microsoft’s .NET Framework is now fully released. There is a handy page of links to the various downloads you might want. Of all Microsoft’s releases in this busy November, this is the most significant.

Why? Here’s what is in .NET Framework 3.0. There are four major pieces. Windows Presentation Foundation (WPF) is an alternative GUI API for Windows, based on a new XML language (XAML) and incorporating the code-behind concept first seen in ASP.NET. Although it is primarily for Windows, Microsoft is promising a cross-platform XAML runtime called Windows Presentation Foundation/Everywhere. On Windows, WPF apps are rendered using DirectX, giving it impressive multimedia capabilities. Summary: biggest change to the Windows API since its first release.

Windows Communication Foundation is a communication framework based on XML web services. If you are familiar with Windows development, the easiest way to define WCF is by what it replaces: ASP.NET web services, MSMQ (Microsoft Message Queue), COM+ (also known as Transaction Server) and Distributed COM, .NET Remoting.

I won’t say that WCF replaces all of COM, though perhaps it might do eventually. COM has many faces.

Windows Workflow Foundation is less important than WPF or WCF, but still interesting as a framework for workflow applications. It fits well with Sharepoint and Office 2007 as a way to program enterprise portals.

Windows CardSpace is an abstraction layer for identity management and authentication. Unlike Microsoft Passport, CardSpace is not itself an identity provider, but a rather a system that works with multiple identity providers. If widely adopted, it will help the Internet move on from the nightmare of usernames and passwords. IE7 is a CardSpace client.

When Microsoft first announted the above pieces, they were meant to be exclusive to “Longhorn”, now called Windows Vista. The company realised that this would stall adoption, possibly fatally, so it was decided to make it a free download for Windows XP as well as part of Vista. That makes .NET Framework 3.0 a viable development platform now, rather than in five year’s time (or never).

Like any new technology, this one could fall flat on its face. Time will tell whether it is really significant, or turns out to be a backwater in the latter days of Windows. Unlike Vista and Office, it is not an immediate profit centre for Microsoft, but in the longer term it is critically important to the company as an update to the Windows platform.

Gyrating AJAX model excites Tech-Ed

Microsoft’s Eric Rudder kicked off Tech-Ed Europe with a keynote extolling the virtues of Vista, Office 2007 (which has just been released to manufacturing), and Exchange 2007. This Tech-Ed, it appears, won’t be characterised by major new announcements; it is more about long-awaited technology finally getting released.

Rudder presented some interesting stuff around enterprise portals built on Sharepoint and Windows Workflow Foundation, using the fictional Fabrikam clothing company as an example.

An eye-catching feature of Fabrikam’s online store aroused attention: a gyrating AJAX-driven model with drag-and-drop clothing. lives again.

A more geeky highlight came at the end of the keynote, when Anders Hejlsberg demonstrated LINQ (Language Integrated Query) in C# 3.0 (not to be confused with .NET Framework 3.0, which is the old stuff). I’m already familiar with LINQ, but one thing I hadn’t seen before is a feature of Orcas, the next Visual Studio. Hejlsberg called it “paste XML as the code with creates that XML”, and that’s exactly what it does. Copy some XML to the clipboard, paste it into your code, and it appears as C# code manipulating XElement and XAttribute to build that XML as output. You can then adapt the code to generate more XML according to the same schema. Neat.

Microsoft urges FoxPro, Delphi developers to move to .NET

Here at Microsoft’s Tech-Ed in Barcelona two forthcoming sessions caught my eye. Tomorrow afternoon there is a discussion on “Moving from Visual FoxPro to .NET”. From the abstract:

Looking forward to Vista, .NET is a pragmatic necessity for VFP developers. How will you deal with Vista clients? What will you do? How long can you remain in VFP? How can you move to .NET with the least impact?

On Wednesday it’s Delphi developers who get told there is no future in their programming platform, in “Moving from Delphi to .NET”:

Even if you are not considering .NET now, at some point you will have to move to .NET with new code, or to port existing code. Staying with Win32 may be viable in the short term, but not the long term.

By accident or design, the session conflicts with one from the  father of Delphi, Anders Hejlsberg, on C# 3.0, the next generation of Microsoft’s home-grown programming language.

I’d like to attend both events, if only to discover whether there are really a bunch of FoxPro and Delphi pros here at Tech-Ed, puzzling over how to migrate to .NET. Alternatively, maybe some of them could mount a robust defence of these older tools. After all, there’s no sign of Win32 or COM going away any time soon, though .NET refuseniks may have a bit of WPF (Windows Presentation Foundation) envy. Then again, look what language is riding high in the Computer Language Shootout Scorecard.

Patent threat lifted from Mono

Regular readers of this blog will know of my interest in Mono, the open-source implementation of Microsoft’s .NET Framework.

A common objection to Mono is its fuzzy legal position. Although parts of .NET are ECMA standards open for anyone to implement, other parts (including ASP.NET) are not. Mono implements ASP.NET as well as other non-ECMA class libraries. The worry has been: if Mono gets successful enough to threaten Microsoft, will there be legal problems?

I say “has been”, because it appears that the just-announced agreement with Novell covers Mono. See Miguel de Icaza’s post where he says:

…today we have secured a peace of mind for Novell customers that might have been worried about possible patent infringements open source deployments. This matters in particular for Mono, because for a long time its been the favorite conversation starter for folks that find dates on Slashdot.

This is big news for anyone with an interest in cross-platform .NET. However, note that the agreement refers to Novell’s customers. I am not a lawyer; but it is not clear to me whether this deal provides comfort to Mono users not using Novell’s SUSE Linux. For example, what about those using Mono on the Mac, one of its more interesting applications? I hope to discover more next week at Tech-Ed, where there will be an out-of-hours presentation on Mono.


See the comments below for more. It seems this falls short of a promise not to sue over patent breaches in Mono, if they exist, except in certain defined circumstances (Novell customers or non-commercial). I guess that is not surprising.

Technorati tags: , , , ,

Free final Vista and Office 2007 for UK developers

Here’s a blog you might want to subscribe to if you are a developer based in the UK. Ian Moulster says you can have a free copy of the final release of both Vista and Office 2007 if you:

take part in our UK developer online launch event on January 19th and 20th (yes, I know the 20th is a Saturday).

No, I don’t know what “take part” means; but there are 1000 freebies on offer so I doubt it is too arduous.

Microsoft still recognizes the key role of developers in technology adoption.

Technorati tags: ,

Developers quick to adopt .NET 2.0, slow to leave Visual C++ 6.0

The Code Project is a popular resource site for Windows developers. It has polled its users on what programming language they use; see here for the details. Three points to note:

  • Visual C++ 6.0 still has high usage – nearly on a par with Visual C++ 2003 and 2005 combined. 19.78% vs 20.34% at the time of writing. I wonder if C runtime issues are a factor here. Visual C++ 6.0 is the last version that links to the standard mscvrt.dll; see Visual Studio 2005 DLL Hell for more details. That’s why I still have it installed on my machine. If that’s not it, I’d be interested to know why so many are still using this old product.
  • By contrast, there has been rapid C# 2.0 adoption. 18.93% C# 1.x versus 44.32% C# 2.0. I can understand this; .NET 2.0 is considerably improved over 1.x and there is little reason not to switch.
  • Finally, there is a decent showing for Delphi at 24.54%. No surprise here; it’s a fantastic tool for Win32 coding. I guess the problem for Borland is that many are still using Delphi 7.x or earlier versions.

Note that the percentages add to more than 100% because programmes use mulitple tools; and that this is not a reliable snapshot of anything other than Code Project’s community.

On deceptive error messages

If error messages told you what was really wrong, developer and admin productivity would soar.

I lost hours of my life over a problem with ntbackup. The error message was “C is not a valid drive or you do not have access”. Three different Microsoft support engineers gave it their attention, but we never identified the true problem. The drive was valid, of course, and the user had full local admin rights.

More recently I was working on my Common Feed List blogreader and hit this unusual error:

Hmm, “Listbox has too many items” – yet the error fired on the 8th item being added. After scratching my head for a few minutes, I figured out the problem: a blog with items that have an empty title element. It’s an atom feed, and the XML looks like this:

<title mode="escaped" type="text/html"/>

The IE7 RSS Platform API converts this to a null value in the item’s Title property. I was trying to render this as a string in the list box. Poof.

Digression: should the RSS Platform treat the empty element as null, or as an empty string? XML is not good at making this distinction. Since the title element in this case is present, but empty, I tend to the view that it should be an empty string; but others more expert may disagree.

So I fixed the code to check for null and convert it to an empty string and all was well. No thanks to the error message.

Technorati tags: , ,