Category Archives: software development

Mozilla takes aim at Flash and Silverlight with Firefox 3.5

I reviewed Firefox 3.5 for The Register. I found the new features unexciting from a user perspective, but not so for developers. The new TraceMonkey JavaScript engine, improvements to the Canvas element, JavaScript threading and various bits of HTML 5.0 make this a more powerful platform for web applications – provided that you workaround the problem of users with Internet Explorer. The arrival of video and audio elements is also worth highlighting:

Another new feature is SVG effects for HTML, including masking, filtering and clipping. The point I made in the review is that this is a shot at Adobe as well as Microsoft. Although it is a long way from a viable alternative to Flash for now, the direction is clear.

That does not mean it will succeed. On the other hand, if Apple, Google and Mozilla pull together in making browser standards rich enough not to need plug-ins for most of the scenarios where Flash is used today, this could disrupt Flash momentum.

What about IE? That’s the big question. Here’s a few questions:

1. Will Microsoft implement these standards or hold back, arguing that Silverlight makes them unnecessary?

2. Will IE retain its market dominance – still over 65% last time I looked, even though it is losing among developers and influencers?

3. Could IE add-ons along the lines of Screaming Monkey for JavaScript and the Mozilla Canvas plug-in that has been discussed pull IE along anyway?

This article by Ryan Paul from last year discusses the issue. He says, why shouldn’t Adobe embrace HTML 5.0 rather than fighting it:

Although Canvas arguably competes with Adobe’s Flash plugin in a certain set of use cases, it’s worth noting that Adobe doesn’t generate revenue from the Flash plugin itself. Adobe cashes in on Flash by selling its powerful authoring tools, which the company could easily extend to support standards-based web technologies.

It’s a fair point; but given the commercial advantages of owning the platform, as opposed to being just another tools vendor, I doubt Adobe would make this shift unless it saw no realistic alternative. Even fully open-sourcing the Flash runtime would be less risky.

You can find Firefox here, and the developer features are described here.

Eclipse survey shows Windows decline

In May 2009 the open source Eclipse project surveyed its users. Visitors to the Eclipse site were asked to complete a survey, and 1365 did so. That’s out of around 1 million visitors, which shows how much we all hate surveys. Anyway, this report [pdf] was the result. A similar survey [pdf] was carried out in 2007, potentially making a valuable comparison, though the earlier survey has different questions making direct comparisons difficult in most cases, which is a shame. I especially missed the detail on which Eclipse projects are used most which is well covered in the 2007 report.

Here is what I found interesting. First, there’s a shift towards Linux and Apple Mac in the desktops developers use for Eclipse. In 2007 it was 73.8% Windows, 20% Linux and 3.5% Mac. In 2009 it is 64% Windows, 26.9% Linux and 6.9% Mac.

This is echoed in deployment platforms too (client and server). In 2007 it was 46.5% Windows, 36.6% Linux, 1% Mac; today it is 40.5% Windows, 42.7% Linux, 3% Mac.

Those surveyed were asked what other IDEs they used. I noticed that Microsoft Visual Studio and NetBeans feature fairly strongly; I also noticed that Embarcadero’s JBuilder is hardly a blip on the chart – intriguing, given how popular this used to be in the pre-Eclipse era.

The most popular code management tool is Subversion (57.5%) followed by CVS (20%). For build tools, Ant (33.4%) and Maven (18%).

Here’s an intriguing one: I often hear that Java is only successful on the server. That presumption is not supported by this survey. 23.4% said that desktop client apps are the primary type of software they are developing, compared to 30.2% server, and 24.7% web or RIA apps.

The preferred app server is Apache Tomcat (34.8%) followed by JBoss (12.7%) and Websphere (6.9%).

The most popular database manager is MySQL (27.7%) followed by Oracle (27.3%). That’s 55% for Sun+Oracle, of course, though bear in mind that many of the MySQL users are likely attracted by its free licence.

Before drawing too many conclusions, bear in mind that it is a small sample self-selected by people willing to take the survey; apparently it was also featured by a German technology site which resulted in a larger response from German visitors.

Although it suggests a declining use of Windows – which is especially plausible given the trend towards web applications – it does not prove it beyond the Eclipse community.

And next time – how about using the same questions, which would make it possible to identify trends?

I’ve also written about Eclipse here: The Eclipse Conundrum: can it grow without hurting its contributors?

What next for Adobe LiveCycle ES?

Yesterday I met Adobe’s Duane Nickull for a chat about the company’s efforts in SOA. Nickull is a battle-scarred enterprise architect with a deep knowledge of SOA standards, who is now a senior technical evangelist for Adobe. He represents what I think of as the other Adobe: not the company that does things you would not believe in Photoshop, but the one that has created an end-to-end development platform with LiveCycle Enterprise Suite (plus your favourite application server) at one end, and Flex at the other.

It is an aspect of Adobe that deserves more attention. For example, this note in Anil Channapa’s What’s New in LiveCycle Data Services 3 caught my attention:

The LiveCycle Data Services 3 beta supports an acknowledge capability that enables all communications between Flex-based applications for Flash and the LiveCycle Data Services server to be guaranteed. All that you have to do is mark the LiveCycle Data Services 3 beta server destination as reliable.

I think this is huge. As Channapa goes on to note, for developers contemplating ecommerce or financial applications, this is a key feature.

I learned from Nickull that this feature is based on WS-RX and that in general we should expect more WS-* implementations to turn up in LiveCycle ES. RESTafarians will be sceptical, but I suspect this will help Adobe to make inroads into enterprise development.

That said, I do think Adobe has issues positioning and promoting LiveCycle ES. The more glitzy Creative Suite tends to grab all the attention, and indeed accounts for by far the largest slice of Adobe’s revenue. When I attended MAX in Milan last year, I don’t recall any mention for LiveCycle in the keynotes; it was one of those things you had to discover, though there were some excellent sessions on the subject.

I think Adobe should push LiveCycle ES harder, particularly as a business model based mainly on selling a huge suite of design tools strikes me as precarious. Adobe is making a start and has announced a LiveCycle@MAX bundle for MAX 2009 [warning: autoplay sound] in early October.

The LiveCycle ES brand encompasses what used to be Macromedia’s Flex Data Services as well as Adobe’s PDF-oriented software for managing workflow and data gathering. If you look at Adobe’s LiveCycle ES page, it all seems PDF-centric and Data Services is hidden away as the last item under Data capture.

In reality LiveCycle Data Services ES has a lot to offer even if you don’t care a bean about PDF, but that is a fact that is easy to miss. Another positioning issue. Adobe has been over-zealous in its PDF-with-everything strategy.

I also asked Nickull how Acrobat.com fits with with Adobe’s SOA strategy. He said that a move to application hosting would be a logical one, though he implied that it would be geared towards SMEs.

Host your Java application on Adobe’s servers, with built-in LiveCycle Data Services for your Flex client? That makes sense to me.

Technorati Tags: ,,,

Does Visual Basic have a future?

I was interested in this podcast with a member of the Visual Basic team at Microsoft, Lisa Feigenbaum, as I ask myself the same question.

Unfortunately the questioning from Joe Stagner (who also works for Microsoft) is tame. Nevertheless, there are a few points of interest.

“The things that come out of Microsoft, it is C# biased” admits Feigenbaum, which she says is because so many at Microsoft have a C or Java background.

That is part of the reason (though more C than Java) but I doubt it is that simple. If you go back to the beginnings of .NET, Microsoft designed C# and what was then the new framework and runtime together. VB on the other hand was hauled into the new world and still bears the scars.

Let’s answer the question first. Microsoft cannot afford to abandon VB, which remains popular, especially (though certainly not exclusively) at the less professional end of the market. VB isn’t going away.

Further, there’s really very little difference in the capabilities of the two languages, so there is little incentive for anyone to switch. Microsoft has attempted to differentiate them, but these attempts generally fail. “Any time we do something cool in one language, the other folks want it” says Stagner in the podcast.

As I see it, that’s part of the problem. It begs the question: what is the point of VB, other than to keep existing VB developers happy? In what circumstances would you advise a new programmer to learn VB rather than C#?

I dip in and out of both VB and C#, and of the two I prefer C#. I find VB’s slightly increased verbosity annoying, and I dislike the statement continuation character which is unnecessary in C#, because statements end with semicolons. I prefer case-sensitive languages, which give more flexibility when naming variables. If you want to do XNA games programming, currently only C# is supported. 

VB’s dynamic features are useful in some scenarios, particularly Office automation, though this advantage is removed in C# 4.0 which has dynamic variables.

The original attraction of BASIC, its English-like syntax, is nearly lost in today’s VB.

Well, choice is good; and the existence of VB alongside C# proved the cross-language credentials of the “common language” runtime from the get-go.

Nevertheless, I’m expecting VB usage to decline gradually. An external factor is the rise of the JavaScript family, which is more like C# than VB.

Incidentally, Feigenbaum threw in a comment about Visual Studio that I found interesting. After talking about the managed code editor in Visual Studio 2010, she remarks “In the release after 1010 we’re rewriting the compilers in managed code.”

Technorati Tags: ,,,,

Survey ranks developer tools, and reveals what developers care about most

Evans Data has published its 2009 Software Development Platforms survey, to which around 1200 developers contributed, scoring their chosen development tools in eighteen different categories.

The tools covered are Eclipse, Embarcadero’s Delphi, IBM’s Rational Suite, IntelliJ, Microsoft’s Visual Studio, NetBeans, Oracle JDeveloper and Sun Studio.

I was sorry not to see more products covered. Flex Builder Flash Builder, Zend Studio, Aptana and JBuilder would all have been interesting, for example. Each developer only scored the product they actually use (a good thing), so the sample is not as big as it first appears.

I’m also mistrustful of the survey results, particularly when you look at it in detail. For example, one of the categories is “Support for frameworks”.  Visual Studio came top, while Eclipse was last. But hang on: in Visual Studio (for example) are we talking MFC, or .NET Framework? The development experience for each is totally different. And were developers primarily judging on the framework tools, or the framework itself? It is hard to attach much meaning to the scores in this category.

Another flaw: the versions of the products is not specified. That means a weakness may have been fixed in a later version, but the survey does not tell you.

A third flaw: some tools are weak in several categories, dragging down their overall score, but that does not matter to developers who do not use them for that purpose. It is hard to compare like with like.

Still, while I’m wary of the survey overall, I though it brought out some interesting points. One is that developers were asked what features matter most to them. So:

The three things developers care about most (highest priority first):

1. Basic tools (editor/compiler/debugger)

2. Documentation

3. Tool integration

The things developers care about least (lowest priority first):

1. Support for remote development

2. Support for parallel programming (sorry Intel!)

3. App Modeling tools

What about the winners and losers in the survey? I almost forgot. IBM’s Rational Suite came top, followed by Microsoft’s Visual Studio. Eclipse came last, though it still got a decent score, well below its rival NetBeans.

The low ranking for Eclipse (which is nevertheless wildly popular) deserves some comment, particularly as the top tool, IBM Rational Suite, is built on Eclipse. I spoke to Eclipse executive director Mike Milinkovich while researching this Register piece recently. One of the points we discussed was the tension (if there is one, which he disputes) between tools vendors sharing resources to build the best possible platform, and holding resources back to retain commercial differentiation. I’ll write this up in more detail shortly; but it shows why certain areas in Eclipse may not receive the attention they deserve – localization was a specific example.

Another problem with Eclipse is that it is all a bit messy, confusing and hard to manage, particularly in a team where you want every member to have an identical setup. It is still worth it though, for the riches it provides for free.

Embarcadero CEO on cross-platform native code

I had a long chat with Embarcadero CEO Wayne Williams last week. I used a few snippets on the Reg – on cross-platform Delphi and Eclipse – and hope to post more from it shortly. In the meantime, here’s what he said about using native code rather than Java or other types of managed code for cross-platform apps. It felt like 1996 all over again, but he has a point.

Will Microsoft respond to the JavaScript speed challenge?

While people argue about JavaScript performance in Chrome vs Safari vs FireFox, there’s one fact that is beyond dispute. Microsoft’s Internet Explorer 8 is hilariously slow in comparison. On Apple’s figures, IE8 is 5.9 times slower on its i-Bench JavaScript test and 7.7 times slower on the SunSpider test.

You may hardly notice this in normal browsing. It most likely takes longer to download the JavaScript than to execute it. In fact, download speed is still the most significant factor in browser performance, and changing your browser will do nothing to change that (though different approaches to caching might).

This could change though, if more web applications appear that make heavy use of JavaScript. Google Wave could be an example. In fact, this seems to be Google’s game plan: make the browser (backed of course by the Internet) the operating system. The larger these web applications become, the more difference that JavaScript performance will make.

Offline is another interesting case, enabled in Chrome by the Gears add-on. In this scenario, content is served locally so browser performance has a better chance to shine.

The big question: will Microsoft step up to the challenge and fix JavaScript performance in IE? The company could do so relatively easily, either by using one of the open-source engines (unlikely) or by applying its existing knowledge of just-in-time compilation, used to good effect in .NET and Silverlight, to JavaScript in the browser.

The horns of Microsoft’s dilemma: improve JavaScript and undermine the advantage of Silverlight, which runs code much faster. Don’t improve it, and see market share continue to decline in favour of faster browsers.

The right thing to do, of course, is to fix the JavaScript engine; but companies do not always do the right thing – and Microsoft may still be comforted by its 65% market share for IE. That’s false comfort; the share is in long-term decline.

Incidentally, I’ve noticed that Google, while not exactly taking the gloves off, is stepping up its promotion of Chrome. When I go to youtube, which is the 3rd most popular web site in the world according to Alexa, I now see this on every page, if not using Chrome:

I don’t always see an ad on the Google home page itself – Alexa’s number one site – though occasionally I do see this on the right:

All very low-key; but I reckon we’ll see Google step-up its campaign as Chrome itself gets better and the Mac version appears. With Apple, Google, Mozilla and of course Opera all gunning for Microsoft, it would take extraordinary complacency not to respond.

Cloud Computing survey: more fog than cloud

Yesterday I attended a presentation from NTT Communications, a managed hosting provider, on the plans of 200 CFOs and CIOs from larger UK organizations (500+ employees) with respect to cloud computing. Since NTT would presumably like more companies to stick more stuff on its hosted servers, I presume it was hoping for a strong endorsement of the idea. Unfortunately for NTT, that was not the case. Fewer than 20% of those surveyed think they are using cloud computing now, a bit more than 20% think they will adopt some of it in the next two years, but – and here’s the real killer – cloud computing is way down the list of investment priorities, at around 5%. I’m not clear 5% of what exactly; but the report says it is the lowest priority.

What are companies spending money on instead? Servers and storage, network infrastructure, security, company web sites, backup and disaster recovery, unified communications, desktops and laptops, software, almost anything else in other words.

What’s wrong with the cloud? The three top issues, for those surveyed, are security, immaturity, and reliability.

These are valid concerns, though each one is open to debate; but the entire survey was undermined by the fact that most of those surveyed admitted to not knowing what cloud computing is. The reason is not ignorance, but the many and various ways the term is used. The common strand is that it is something to do with the internet, but even that is undermined if we describe virtual on-premise servers as a “private cloud”.

What are the varieties of cloud? Almost infinite, but here are a few:

  • Multi-tenanted applications such as Salesforce CRM, Google Docs, NetSuite. This is the model that has the biggest inherent economic advantage.
  • Hosted application platforms including Google App Engine, Microsoft Azure, Force.com. These are hosted application servers, where you write the code, taking advantage of integrated hosted services for storage, identity, transactions and so on.
  • Utility services such as Amazon S3. It’s a great example: S3 offers nothing but storage, though you can use it in conjunction with other Amazon web services.
  • On-demand infrastructure such as Amazon EC2. You get virtual servers to do what you like with. NTT’s services are mainly in this broad category. It’s cloud but you are mostly not getting the benefits of multi-tenancy.
  • Anything on the internet. Running a web application? Hey, you’re in the cloud.

If we are going to have a sane discussion about these things, we need to know what we are talking about. Maybe rather than asking companies whether or not they are doing that cool cloud stuff, it would be better to enquire how they see their use of the internet evolving.

Another big question is the extent to which companies are willing to buy in their IT infrastructure as a third-party service. Although it makes obvious financial sense in most cases, it is a big ask given how business-critical it is, hence the concerns about security, immaturity, reliability.

Smaller companies with ad-hoc IT systems are likely to be more amenable to the idea, but this group was not covered by NTTs survey.

Conclusions? The main one is “watch this space”. In the end I reckon sheer economics will drive cloud computing adoption – in all the areas described above – but the one thing NTT’s survey proves is that larger organisations are in no hurry to make that jump.

Technorati Tags: ,,,

Book Review: IronPython in Action

I guess that to many people IronPython, an implementation of the Python programming language that runs on Microsoft’s .NET platform, is little more than a curiosity. For them, a glance at the preface and foreword to this new Manning title may be enough to convince them that it is at least interesting. In the foreword, IronPython creator Jim Hugunin describes how he first worked on Python for .NET as an exercise to prove “why the CLR is a terrible platform for dynamic languages”:

The plan was turned upside down when the prototypes turned out to run very well – generally quite a bit faster than the standard C-based Python implementations.

Next is a preface from the authors, Michael Foord and Christian Muirhead, about how IronPython came to be used in an innovative programmable, testable spreadsheet called Resolver One:

Resolver One is in use in financial institutions in London, New York and Paris, and consists of 40,000 lines of IronPython code with a further 150,000 in the test framework. Resolver One has been tuned for performance several times, and this has always meant fine tuning our algorithms in Python. It hasn’t (yet) required even parts of Resolver One to be rewritten in C#.

Why is Python used in Resolver One?

As a dynamic language, Python was orders of magnitude easier to test then the languages they had used previously.

If that piques your interest, you may find the book itself worth reading. It is aimed at Python programmers who do not know .NET, and .NET programmers who do not know Python, rather than at existing IronPython developers. The authors run through the basics of Python and its .NET integration, so that by the end of Part 1 you could write a simple Windows Forms application. Part 2 is on core development techniques and covers duck typing, model-view-controller basics, handling XML, unit and functional testing, and metaprogramming – this is where you generate and execute code at runtime.

The third part of the book covers .NET integration, and how to use IronPython with WPF (Windows Presentation Foundation), PowerShell, ASP.NET, ADO.NET (database access) , web services, and in Silverlight. Finally, Part 4 shows how to extend IronPython with libraries written in C# or VB.NET, how to use Python objects in C# or VB, and how to embed the IronPython engine into your own application.

It’s a well-written book and fulfils its purpose nicely. I like the way the book is honest about areas where IronPython is more verbose or awkward than C# or VB.NETAs someone who knows .NET well, but Python little, I could have done without all the introductory .NET explanations, but I understand why they are there. I particularly liked part two, on core programming techniques, which is a thought-provoking read for any developer with an interest in dynamic languages.

According to the IronPython site, you can get 35% off by ordering from the Manning site with the code codeplex35.

It is also available on Amazon.com:

and Amazon.co.uk: