Category Archives: software development

From the archives: Mark Anders and Scott Guthrie on ASP+

My editor at The Register asked me if I had any interviews that would be fun to dig out for a retrospective piece. This one is from September 2000, shortly after the announcement of the .NET Framework, where Microsoft’s Mark Anders and Scott Guthrie talk to me about ASP+, the name for ASP.NET when it was in preview.

Listening to the whole interview was a little frustrating, because most of the time I asked questions that were interesting at the time, like the relationship between ASP.NET and COM, but not so much now. I was reminded though that Guthrie gave an impressive demo of what we now call AJAX, where updates to a web page are processed on the client, and described to me how it worked.

The pair also enthused about hosting Windows Forms controls in the browser, one of the .NET ideas that did not really become practical until the release of Silverlight. The full WPF (Windows Presentation Foundation) also works well in the browser, but most web developers rule it out because it is Windows only.

As it turned out, AJAX might never have taken off without the work of Google, while Silverlight now looks like a reaction to Flash. I suspect that Microsoft found it difficult to evolve these ideas into full products because it clung to the idea of a Windows-centric Internet, where Windows rather than the browser is the rich client.

Guthrie is now Corporate VP, .NET Developer Division at Microsoft, while Anders is at Adobe where he has been working on a tool for the Flash platform called Catalyst, previously known as Thermo.

Service triggers: an attempt to reduce bloat in Windows 7

I’ve been reading through the Windows 7 Developer Guide. I like this document; it is tilted more towards information than hype, and is readable even for non-developers. There are things mentioned which I had not spotted before.

One example is triggers in the service control manager. There was actually a PDC session which covered this, among other things, under the unexciting title Designing Efficient Background Processes (PowerPoint). If you check out the slides, you’ll see that this is actually something significant for Windows users. It is an attempt to reduce all that stuff that runs whether or not you need it, increasing boot time and slowing performance. Apparently some people are so upset with the time it takes Windows to boot that they are threatening to sue; so yes, this does matter.

Services are applications that run in the background, usually without any visible interface. They consume system resources, so it makes sense to run them only when needed. Unfortunately, many services run on a “just in case” basis. For example, if I check the services on this machine I see I have one running called Apple Mobile Device, just in case I might connect one. It is using 4MB of RAM. However, I never connect an Apple device to this machine. I’m sure it was installed by iTunes, which I rarely use, though I like to keep up-to-date with what Apple is doing. So every time I start Windows this thing also starts, running uselessly in the background.

According to Vikram Singh, who took the PDC session, adding 10 typical 3rd party services to a clean Vista install has a dramatic effect on performance:

  • Boot time: up by 87% (24.7 to 46.1 seconds)
  • CPU time when idle: up by six times (to 6.04%)
  • Disk Read Count: up by three times (from 10,192 to 31,401 in 15 seconds)

Service triggers are an attempt to address this, by making it possible to install services that start in response to specific events, instead of always running “just in case”. Four trigger types are mentioned:

  • On connection of a certain class of device
  • On connection to a Windows domain
  • On group policy refresh
  • On connection to a network (based on IP address change)

In theory then, Apple can rewrite iTunes for Windows 7, so that the Apple Mobile Device service only starts when an Apple device is connected. A good plan.

Now, I can think of three reasons why this might not happen. First, inertia. Second, compatibility. This means coding specifically for Windows 7, whereas it will be easier just to do it the old, compatible way. Third, I imagine this would mean faster boot, but slower response when connecting the device. Apple (or any third party) might think: the user will just blame Windows for slow boot, but a slow response when connecting the device will impact the perceived performance of our product. So the service will still run at start-up, just in case.

Still, I’m encouraged that Microsoft is at least thinking about the problem and providing a possible solution. We may also benefit if Microsoft tweaks some of its own Windows services to start on-demand.

Adobe Alchemy – compile C/C++ to ActionScript

I love the careful wording on Adobe’s Alchemy site:

The purpose of this preview is to assess the level of community interest in reusing existing C and C++ libraries in Web applications that run on Adobe® Flash® Player and Adobe AIR®.

It needs to be put cautiously, because Alchemy – unlike Google Web Toolkit, which handles Java to Javascript – is not intended to become a general-purpose alternative to ActionScript. Rather, the idea is to enable existing C/C++ libraries to work within Flash applications. Examples given include transcoders, cryptographic algorithms, and XML parsers. Performance is said to be 2-10x slower than native code. Alchemy was demoed today at Adobe’s MAX conference.

Possibly a Java to ActionScript compiler would be more useful to most of us; though for new code ActionScript 3.0 is close enough to Java that it should not be difficult for most developers to learn.

Technorati tags: , ,

Develop for Adobe Flex in Microsoft Visual Studio – or maybe not

News from the Adobe MAX conference this week in San Francisco: Ensemble has developed an add-in for Visual Studio for Flex development, code-name Tofino. It’s currently in beta and available for download. Flex is Adobe’s developer-focused SDK for Flash applications.

I installed it this morning, and so far it does not impress. There is zero documentation (just a few links to the standard Flex docs on Adobe’s site), and it lacks even MXML Intellisense, let alone a visual designer. When you go to project properties, there is nothing to configure. The toolbox is also empty. On the plus side, it successfully invoked the Flex compiler to build the project, and managed to open it as a static file in Internet Explorer when I clicked Debug. I’d prefer an option to use Visual Studio’s built-in web server for debugging. There must be more to it than this; then again it is advertised as a beta which is meant to mean well advanced (ha ha). I suggest sticking firmly with Flex Builder for the time being.

Adobe has largely ignored .NET in its Flex and AIR technology, though it does support SOAP. I am not sure whether this is caused by aversion to Microsoft, or an assumption that Microsoft developers will use Microsoft technologies like Silverlight or Windows Forms, or a bit of both. Integration with Visual Studio and server-side .NET could be significant for Flex adoption, though it would be better if Adobe itself were doing the add-in.

You can see the same thing happening on Microsoft’s side, with a half-hearted Silverlight project for Eclipse (which only works on Windows), or the well-regarded Teamprise which integrates Eclipse with Visual Studio Team System. In both cases Microsoft keeps itself at arms length, which does not have the same impact as in-house support.

There are always concerns about the quality of third-party applications. I am sure Adobe itself would not have put such an inadequate preview up for download, as Ensemble has done for Tofino.

Sun’s financial problems – what comes next?

Sun has today published a press release announcing that up to 18% of its global workforce is to be cut and that Rich Green, VP of Software, has resigned.

It has also formed a new business group called Cloud Computing & Developer Platforms, for advancing its cloud services efforts.

Sun is a fascinating company, with serious commitment to open source. It is also the steward of Java, MySQL and OpenOffice.org. Despite the software aspect, selling servers is a core part of its business, and its problems now (in my quick opinion) are a consequence of the economic downturn, a trend towards cheap-and-many in the server market, and a rush towards open source without any clear strategy over how to monetize it. No, I don’t believe turning runtime and application downloads into foistware and adware is the solution.

Somehow, Sun allowed competitors such as IBM and Oracle to benefit from Java without reaping equal rewards itself. It is great at innovating but less good at profiting from its invention. Java applets were the first browser-hosted client applications, but Sun did not see the need for something like JavaFX until Adobe Flash and then Microsoft Silverlight showed how this needed to evolve; now it is probably too late.

Another example is utility computing (one aspect of cloud computing), which Sun pioneered with its Grid initiative; but others such as Amazon are now setting the pace in this area.

What comes next – acquisition, recovery, or continued decline?

Technorati tags: , , , , ,

Windows is an adventure game

Many video games in the adventure genre are in essence collecting games. You have to get the gem to open the gate, and to get the gem you need the three pieces of tablet, etc etc.

Windows is like this sometimes. I want to try Windows Azure. I need SQL Express. I download SQL Express 2008. Try to run, it tells me I need Windows Installer 4.5. I download Windows Installer 4.5. Try to run, it tells me “The system cannot find the file specified.”

This makes me pause. Is it a broken download, or is my system broken? Maybe it’s because I downloaded to a network drive. Yup – copy it to a local drive, and it runs fine. This is the adventure game equivalent of a puzzle.

Now the dialog says, “You must restart your computer for the updates to take effect.” To be continued, then.

Shame Microsoft hasn’t (as far as I know) issued a VM image with all this ready to go.

Code for Mac Cocoa in Visual Studio – surprised to see this?

I grabbed this screenshot from a preview just installed:

Cocoa app in Visual Studio

It comes from Delphi Prism, a new product from Embarcadero/Codegear which lets you code for .NET using the Delphi language, an object-oriented version of Pascal. The product is not as new as it first appears. It is based on an existing product from RemObjects, called Oxygene, which it now replaces.

Here’s the story in a nutshell. 2003: Borland, the company which created Delphi, decides (rightly) that .NET is here to stay, and releases Delphi 8, a pure .NET version. Nobody wants it, because it has no advantages to speak of over Win32 Delphi (which is faster), or C#, which is the Microsoft .NET language.

At that time some voices muttered that what Borland should do is to integrate Delphi into Visual Studio, rather than doing its own .NET IDE.  One was Marc Hoffman at RemObjects, only he did more than mutter: his company developed its own implementation of Delphi Pascal for Visual Studio, called Chrome.

Borland soldiers on with Delphi 2005, which does both .NET and Win32 in a single IDE. Developers are happy to have a new Win32 Delphi, but most still don’t see the point of the .NET stuff. Further, Delphi 2005 is buggy; many stick with Delphi 7. Next comes Delphi 2006: more of the same, but less buggy.

There’s a couple of problems with Delphi’s .NET support. First, it is always out-of-date compared to Microsoft’s .NET tools. Second, it has component library schizophrenia. There’s VCL for .NET, based on Delphi’s component and GUI library, but that’s not compatible with .NET components built for Windows Forms. There’s Windows Forms, but that’s not compatible with existing Delphi code. Borland decides to deprecate use of Delphi .NET with Windows Forms. This is really for VCL developers, it says.

Next comes Delphi 2007. Nice product, but where’s .NET? Gone. Nobody seems to mind [and it turns up later in RAD Studio 2007*]. Delphi 2009, gone again. But now there’s Prism, and it is a complete U-turn. Forget VCL.NET. It uses standard .NET libraries, runs in Visual Studio, supports Windows Forms, ASP.NET, WPF, and soon Silverlight. Oh, and it’s based on what that other guy did back in 2004, with some Borland Codegear Embarcadero technology thrown in: dbExpress database framework, client support for DataSnap multi-tier applications, and the Blackfish pure .NET database engine.

Very good; but there’s still that awkward question: why not use C#? The answer, I guess, being either that you love coding in the Delphi language, or you want to use one of the Delphi-compatible libraries.

Or that you want to use Mono, which of course is what enables those tasty Mac options in the New Project dialog above. You can also use C# with Mono – possibly you should, since it is Mono’s core language – but in Prism it comes nicely integrated into Visual Studio. Well, somewhat nicely. In practice there are a few extra steps you need to take to get it working. The recommendation is to run Visual Studio in a VM on a Mac, since Windows cannot run Cocoa applications. And you’re going to be using Apple’s Interface Builder; there’s no GUI designer in Visual Studio itself.

Hardly enterprise-ready then; but still an intriguing development.

*Added correction thanks to John Moshakis’ comment below.

Death of Eclipse Application Lifecycle Framework good for vendors, bad for customers

It’s a shame that the Eclipse ALF (Application Lifecycle Framework) project has closed:

… given the level of community participation, the appropriate course for ALF is to close down the project. Unfortunately, our recent efforts did not identify potential contributors willing to justify keeping the project active.

says project lead Brian Carroll. The project aimed to enable interoperability between ALM (Application Lifecycle Management) tools from different vendors. Here’s the problem statement from the project page:

Application development today is achieved through the use of numerous tools from software vendors, open source communities and some are even home grown. Getting these tools to work together is an integration problem that has never been solved. Each vendor and open source project creates their own API standards and many hours of effort are required to create even the most straightforward of integrations.

The problem is real, so why the lack of participation? Of the major ALM vendors, only Serena gave it serious backing. The project could not succeed without either IBM, or a solid alliance of IBM’s competitors.

My interpretation: those ALM vendors will have considered whether it was really in their interests to help customers integrate their tools with those from rivals. Good for customers, yes, but vendors want to keep you hooked on their product suites. “Buy more from us, it integrates with what you have already” is a great sales point. Since only the participation of those vendors could make ALF work, the project was doomed.

It is another manifestation of what Salesforce.com CEO Marc Benioff calls “an aspect of our industry”.

Everyone loves standards, right?

Technorati tags: , , , ,