Category Archives: software development

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:

 

Apple censors iPhone application, threatens developer livelihood

There is an alarming report here from James Montgomerie, who has developed an application for the iPhone called Eucalyptus. It displays public domain texts hosted at Project Gutenberg.

Apple has refused to allow his application to be placed into the App Store, which in effect means nobody can buy it or use it. The reason: one of the texts on Project Gutenberg is the Kama Sutra, which Apple’s assessors consider pornographic.

It’s doubtful reasoning. Eucalyptus is a client and does not contain the contentious text directly; it is no different in this respect from Safari, the iPhone’s web browser, which can also also display the Kama Sutra, or indeed many far more objectionable web pages.

Still, it’s the wider issues that are more interesting here. Montgomerie writes:

I suspect that no-one at Apple knows how genuinely torturous the app store approval process is for developers personally after a rejection. When they hold the key to the only distribution pipe for something you’ve spent a lot of your time on – in my case a year – something you’re hoping could provide you with a livelihood – and polite email enquiries are not replied to – not even with an autoresponder, it is extremely frustrating. I don’t think I’ve ever felt as powerless in my life (and I’ve had to deal with US immigration authorities…). I think anyone that knows me would confirm that I’m a very level-headed person, but this is the only thing in my adult life I can recall losing sleep over (although perhaps that’s also a consequence of being otherwise lucky in life so far).

Let’s do a bit of what-if. What if Microsoft exerted equal control over what applications were allowed on Windows? What if Apple extended its iPhone control to any Mac computers? Unacceptable, could never happen, you might think. Sure, but it if is unacceptable in that wider context, is it not unacceptable on the iPhone as well?

Apple is not the first company to lock down a platform. Locked mobile phones have done this to some extent for years. Games consoles like Xbox and Playstation do it. Apple is taking heat because of its success in creating a device that users want to use as a platform for all kinds of applications; potentially, in some future version, it may be able to do most of the things for which we currently use laptops. Therefore we should be concerned both about the way Apple is using its control over iPhone distribution, and more fundamentally that it has that level of control at all.

Fortunately Apple does not control the Internet; and Montgomerie has done the right thing by appealing to public opinion. Apple’s PR machine will take note and no doubt resolve the immediate case.*

Nevertheless, this story and others like it are a real concern. Perhaps your next phone should run Android?

*UPDATE this is exactly what happened:

Earlier today I received a phone call from an Apple representative. He was very complimentary about Eucalyptus. We talked about the confusion surrounding its App Store rejections, which I am happy to say is now fully resolved. He invited me to re-build and submit a version of Eucalyptus with no filters for immediate approval, and that full version is now available on the iPhone App Store.

See also: Friendly to users, hostile to competition: get ready for more app stores

Technorati Tags: ,,,

Microsoft having another go at Windows help: Help 3

Online help is a part of Windows full of dead-ends and back-alleys. I’m not going to attempt the story in detail here; but it goes back many years. By online help I mean local help of course; in ancient times the word “online” meant something on your computer as opposed to being in a printed book.

The first help engine I remember was in Windows 3.x, called WinHelp, and used .hlp files. It was well-liked, but authoring the files was an arcane process involving Word, RTF, a help compiler, and a certain amount of black magic.

In 1997 Microsoft replaced .hlp with .chm (compiled HTML); its initial efforts were less good than the old .hlp, but this evolved into a decent help engine despite one or two quirks.

After that it gets messy. In 2001 Microsoft announced Help 2, still HTML based but with all sorts of improvements. It was used by MSDN and in Visual Studio; its viewer is the Microsoft Document Explorer. However, and despite the help authoring tool vendors getting all geared up for Help 2, Microsoft announced in 2003 that it would not be made into a general Windows help engine, but only used for Visual Studio. Since then Help 2 has had a curious status; it is possible to author for Help 2, and those building Visual Studio extensions have needed to do so, but it has never replaced compiled HTML.

There was a similar story with Vista Help. Microsoft built a new help engine for Vista but drew back from making this available to 3rd party applications. In fact, there is a rather wonderful tool called Guided Help which lets you include application automation within Help, complete with “show me” and “do it” functionality. You can get the Guided Help SDK if you know where to look, and it works, but the project was mostly abandoned. You are still meant to use HTML Help 1.4 for your own applications.

Now Microsoft is talking about Help 3. Microsoft’s Terry Clancy mentions it in an informative post about Visual Studio 2010:

Visual Studio 10 will come with a completely re-engineered Help system that introduces a new flexible, standards based Help framework which will ultimately be used in other products beyond Visual Studio. Help3 is a help system replacement for Microsoft Help 2.x . This new help system will be easier to produce content for, and will interfere less with Visual Studio itself. The standards based approach delivers not only a much better local experience but also a seamless transition to an online web browser and with infrastructure and tooling much more consistent other Visual Studio and internet technologies.

Will Help 3 ever replace the seemingly immortal HTML Help 1.x? Place your bets.

In practice, desktop help is less important than it used to be. Online help now means the Internet; or users just use Google.

New Visual Studio 2010 beta has WPF editor, Silverlight designer

I’ve just downloaded and installed the Visual Studio 2010 beta 1 release. I’ve not explored much yet – and it is rather slow in a virtual machine – but it does now seem to have the new editor and other pieces built with Windows Presentation Foundation.

A landmark for both WPF and Visual Studio.

I also noticed that the Silverlight visual designer now works as you would expect, though I had to download the developer runtime and SDK separately:

I’d welcome comments from anyone using the beta.

Adobe’s Flex Builder to Flash Builder name change does not go far enough

As expected, Adobe is strengthening its “Flash Platform” strategy by renaming the forthcoming Flex Builder 4 (codename Gumbo) to Flash Builder 4:

This change will provide better naming consistency for the Flash family of tools and position Flash Builder as the development tool for the Flash Platform.

This is only a name change, nothing more. Flash Builder will still be based on Eclipse, and the original Flash Professional IDE, also part of Creative Suite, will continue as before.

My question: why doesn’t Adobe go further in clarifying and promoting its Flash brand? The current situation is still confusing:

Flash Builder vs Flash Professional: the names give you no clue about the difference. Why not Flash Developer and Flash Designer?

Adobe AIR (Adobe Integrated Runtime): non-techie people do not realise this has anything to do with Flash. Flash Desktop Runtime would be better, though I guess that would not reflect the option for HTML applications. It would do a lot to promote Flash as more than just a browser plug-in.

Flex SDK: why retain the Flex brand at all? I presume the name was originally a contraction of Flash and XML, but since it is a language that compiles to Flash, this could just be called the Flash SDK.

Name changes themselves are confusing of course, so I’m surprised that Adobe is not being more thorough now rather than risking more piecemeal changes later.