Category Archives: software development

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: , , , ,

Anti-virus failure leaves XP broken, DNS hijacked, user frustrated

A colleague had some problems with his Windows XP laptop while I was away last week, and I promised to look at it on my return. It’s a sad story, particularly as he is doing everything Microsoft recommends (aside from upgrading to Vista). His HP laptop was fully patched with SP3, and he had a commercial license for AVG anti-virus. He noticed that his system started running slowly when connected to a network, though it worked fine offline, and suspected a faulty network card. It sounded suspicious to me. I wondered if malware was causing heavy network traffic, and advised him to check that his anti-virus was up-to-date and to scan his machine.

It got worse. He ran AVG, which discovered two viral autorun.inf files that it quarantined, but the machine still did not work right. The AVG tech support could not see what was wrong, and suggested reinstalling AVG. Reinstallation failed because AVG could not get updates (this was actually a good clue). Tech support said maybe a firewall problem. Hmm.

The best solution in cases like this is to flatten the machine and reinstall everything, but I was intrigued. I booted from the Ubuntu 8.10 live CD and confirmed that the hardware was fine. I then tried a couple of anti-virus scans that run from boot CDs, which is safer than running from within an infected operating system – the Kapersky rescue disk and the Avira Rescue System. Kapersky identified and removed Trojan-Downloader.Win32.Agent.ahcg somewhere in temporary files. Antivir found nothing. I also ran the Malicious Software Removal Tool which found Trojan: win32/Alureon.gen. Funny how all these tools find different things. No, I don’t find that reassuring.

At this point I connected the machine to the internet. Tried re-installing AVG but it still would not update. Tried downloading a more recent AVG build. However, when I clicked to download, I got an advertisement page instead. Aha! I checked the DNS settings. Instead of being set to obtain the DNS automatically, it was hard-coded to a pair of DNS servers in Ukraine. Clearly the AVG download site was among the ones privileged with an incorrect entry.

Things looked up after I fixed that. Spybot found evidence of Zlob.DNSChanger.Rtk: a registry entry pointing winlogon\system to an executable with a random name somewhere in Windows\system32, but the file itself was not present. Fixed that entry, and Spybot was happy. AVG installed and updated sweetly and found nothing wrong.

I also noticed a hidden directory called resycled (sic) on the root of both partitions, containing the single file boot.com. Has to be a virus, and seems to be associated with the autorun.inf infection; but none of the clean-up tools detected it.

The machine seems fine now, though it should still be flattened as a precaution. I do find the DNS hijack spooky though. It means you can visit safe sites but get dangerous ones. Nasty.

What all this illustrates (again) is that even users who do everything as recommended still get viruses – in this case, probably from an infected USB stick, though I can’t be sure. Why didn’t AVG catch it? Good question. Why didn’t AVG tech support advise how to fix it? Another good question. Vista would have been a little more robust – you would have to pass a UAC prompt to write to the root of drive C, or to HKLM – but I imagine some users would click OK to a prompt after connecting a USB stick, presuming it to be a driver install or something like that.

And if you get ads or porn sites appearing unexpectedly when you browse the web, yes you should be worried.

Update

I sent the suspect file boot.com to Sophos for analysis. I would have sent it to AVG as well, but could find no easy way of doing so. I received an email informing me that this is a worm called W32/Autorun-NX. A filter to detect it was added to Sophos on 7th November at 20.27, which is about 4.5 hours after I submitted it. If mine was the first report, that is impressive speed; but bear in mind that the infection was over a week old when I encountered it, and had circulated for an unknown length of time before my colleague picked it up. Anti-virus software offers only limited and inadequate protection from malware.

Technorati tags: , , , ,

Microsoft’s new .NET logo

One thing I forgot to mention from PDC 2008: the new .NET logo:

Note the visual link to the Silverlight logo; the ribbon (I may be reading too much into this); and the soft brushwork that is meant to evoke “designer” as well as “developer”.

The .NET part has changed from lower case to upper case. This was the old logo:

 

Since as far as I’m aware Microsoft has always preferred .NET to .net or .Net (except in the logo) I guess this makes sense. Must remember to type it that way.

In which I ask Marc Benioff, CEO Salesforce.com, if his platform is a lock-in

Moving from Microsoft’s PDC last week to Dreamforce (the Salesforce.com conference) this week has been an interesting experience. Microsoft is the giant still trying to come to terms with the new world of the Internet; Salesforce.com is the young upstart convinced that it has the future computing platform in its grasp. Salesforce.com is a much smaller company – revenue of just over $1 billion versus Microsoft’s $60 billion – though oddly Dreamforce is a larger conference, with nearly 10,000 attending, compared to 6,500 at PDC (numbers very approximate). Being small means greater opportunity for growth, and Salesforce.com reported 49% year on year  revenue growth in the last quarter for which figures are available [PDF], ended July 2008.

As for the actual conference, Monday was great, with an upbeat keynote and a fascinating press Q&A with CEO Marc Benioff; Tuesday failed to sustain the momentum with a disappointing keynote (people were leaving in droves as Michael Dell attempted to pitch storage servers to this on-demand crowd), and today is wind-down day.

The press Q&A covered most of the interesting questions about this company. Is it a lock-in? Will it move beyond CRM to a total cloud platform? Will it be bought by Oracle? How is the Salesforce.com platform (called Force.com) different from Microsoft’s Azure? Benioff has a great talent for sound bytes, and made endless digs at Microsoft and its new platform which he called “Azoon”. Microsoft developers are in a black room, he said, but walking out into the bright light of cloud computing – by which he means not Azure, but his stuff, naturally.

I got to ask the lock-in question. Benioff had already observed that making the platform programmable increased his hold on this customers. “It’s exactly the same thing that happened when Oracle moved from version 5 to version 6 with PL/SQL,” he said. “The database became programmable. Customers became customers for life.” Incidentally, Benioff talks a lot about Oracle, which is the database on which Salesforce.com itself runs, and refers to Larry Ellison as his mentor. I asked whether he was now asking his customers to repeat the mistakes of the past, when they locked themselves to Oracle or Microsoft or IBM, and I am going to quote his answer nearly in full:

It’s not a question of repeating the past, it’s just an aspect of our industry that it’s important for vendors to offer customers solutions that give them the ability to fully integrate with the platform. It benefits the customer and it benefits the vendor, and every major vendor has done it. That’s really the power.

I think that it’s true whether you’re writing with Google today and you’re building on the Google AdWords and AppEngine, you have to make the choice as the developer, what’s the right thing? Portability of code is just not something that we have ever got to in our industry. As a developer you want to make the right choice … but the reality is that the customers who are doing deep integration with us, those are customers who are going to be with us for a long time and we’re a strategic solution to them.

It’s not a commodity product. It never has been. If you think of it as a commodity product it’s a mistake … I’m completely honest and open about it, which is you’re making a strategic relationship decision, and you need to look at your vendor deeply, and choose what is the right thing for you. When customers bought Sybase SQL and they wrote Transact SQL, or they bought Oracle and wrote PL/SQL, or they’re writing in Visual Studio, well Visual Studio does not port over to HTML. You’re making a strategic decision …I think that’s important, that you research everything, evaluate everything … you do as a vendor end up with a very loyal customer base over time.

Are you familiar with the iPhone? [sure] So iPhone has a development environment that’s called Cocoa. So you have all these apps now on AppStore, which is a name that we used to have and we’ve given it to them, so when you write on AppStore, when you write on Cocoa, guess what, those apps are in Cocoa. And there’s nothing wrong with that.

I followed up by asking whether Sun’s Java experiment, including the idea of code portability between vendors, was an impossible dream.

If you’re writing in Java, you’re betting on Java. It’s a totally reasonable decision. You make that choice. It’s not portable away from Java, that I know of. I just think it’s an aspect of our industry. You should not avoid it, and vendors should not say something like, oh, we’re gonna offer some level of portability, just be honest about what our strategies are. When you’re writing on SQL Server, when you’re writing on Visual Studio, when you’re writing on Oracle, when you’re writing on DB2, when you’re writing on Force.com, you’re gonna be writing natively to a platform, and then the more open that platform is, the more connections there are to that platform, the more powerful that is for you. But you are making a platform decision, and our job is to make sure you choose our platform and not another platform, because once they have chosen another platform, getting them off it is usually impossible.

I give him credit: he could not be more clear. Even so, if you follow his reasoning, developers have an impossible decision at this point of inflexion in the industry. It is all very well researching Salesforce.com, or other vendors, but we cannot know the future. For example, Salesforce.com may become Oracle (an outcome that analysts I spoke to here see as very plausible), in which case you researched the wrong company.

On balance I doubt that the Force.com platform will go away, but its future cost and evolution is all a matter for speculation. That said, I do think it is an interesting platform and will be posting again about it; I’ve also made some comments on Twitter which you can find on my page there.

C# 4.0 goes dynamic

Anders Hejlsberg is explaining new features in C# 4.0, a future version, at Microsoft’s PDC. The big new feature, he says, is support for dynamic typing. Currently C# uses static typing, which means that when you call object members like methods and properties, the compiler checks that they exist or raises an error if they do not. By contrast, with dynamic typing you can call any old method or property, and they are not checked until runtime.

C# 4.0 will support dynamic typing through a new static type called “dynamic” (this raised a laugh at PDC). In other words, if you declare a variable as dynamic:

dynamic obj;

then you can call what you like as if it were a member of obj, and it will be resolved at runtime.

Hejsberg showed in his demonstration how this simplifies interop with other dynamic languages like JavaScript or Python.

Other new features are named parameters and optional parameters. This is a big win for COM interop – automating Microsoft Office, for example, from C# has always been painful because COM was designed to support optional parameters. C# got round this with an ugly hack “ref.missing”. All gone in C# 4.0.

Technorati tags: , ,