Category Archives: software development

UK job stats show Java decline

Long-time readers of this blog may recall that I occasionally track IT job vacancies at Jobserve. There may be better sites to track; but it carries a lot of vacancies, and I need to be consistent. I started in early 2002 with the goal of seeing how much adoption Microsoft was winning for its .NET technology. In March 2002, there were 153 vacancies which mentioned C#, versus 2092 for Java.

Since then, C# has grown steadily. Today it overtook Java for the first time (in my random and infrequent visits). There are 2206 C# vacancies, 2066 Java.

I also noticed that the absolute number of vacancies has declined substantially since my last visit, but Java by more than C#. The economy, I guess.

Is Microsoft really sweeping all before it? Well, no. Vista has disappointed; Apple sales grow ever higher; Netcraft’s web server survey shows a decline in the percentage of IIS sites on the Internet in September 2008 and observes that 75% of new web sites coming online use Apache. So it is a matter of what statistic you want to pick. Nevertheless, there is clearly still a lot of C# development out there.

Technorati tags: , , ,

Tell me what’s wrong with Microsoft’s Team System

At Microsoft’s Remix08 in Brighton last month, a developer asked about Visual Studio Team System during a panel discussion. What interested me was not so much the question itself, but that after the session she was surrounded by other delegates advising her not to use it. These were people who had tried it, or were using it, but found it frustrating. The general proposal was to use open-source tools instead – things like Subversion and CruiseControl.NET.

I was surprised by the strength of feeling. I’ve looked in some detail at Team System and been reasonably impressed by what it does – but that’s not the same as using it in anger, of course. I admit, for my own work I do use Subversion, just because it is lightweight, works well cross-platform, and runs on my Linux web space as well as locally; but I am not part of a team of developers working on Microsoft platform projects, which is where Team System ought to make sense.

For the sake of balance, I’ll add that I met a developer at the airport on the way to Remix Las Vegas earlier this year, who loves Team System and told me that it is Microsoft’s best product.

I’d love to hear in more detail what users think of Team System. Is it broken, or does it depend on how it is set up and maintained? What are the key things that Microsoft needs to fix? Or is it just great, and those complainers in Brighton atypical?

SQLite and Delphi 2009

I created a simple Delphi wrapper for SQLite, the popular open source database library. I’ve just updated it to work with Delphi 2009 – I’m not happy with what I’ve done, because I’ve changed a bunch of declarations from PChar to PAnsiChar and from String to AnsiString, just to get it working quickly. SQLite is fine for Unicode, so the next step is to revise it properly to support Unicode … when I or someone else has time.

It was interesting to do some work with Delphi 2009. It has the old problem: out of date documentation. Here’s what it says about PChar, in the entry on pointer types:

The fundamental types PAnsiChar and PWideChar represent pointers to AnsiChar and WideChar values, respectively. The generic PChar represents a pointer to a Char (that is, in its current implementation, to an AnsiChar).

Further, if you have the following code:

var
strTest: PChar;
begin
strTest := StrAlloc(6);
strcopy(strTest,’Hello’);
strdispose(strTest);
end;

and hover the mouse over strTest in the editor, the pop-up tip says:

strTest – System.PAnsiChar

However, this is wrong. In Delphi 2009, a generic PChar is a PWideChar. Here’s the code in SysUtils for StrAlloc:

function StrAlloc(Size: Cardinal): PChar;
begin
{$IFDEF UNICODE}
  Result := WideStrAlloc(Size);
{$ELSE}
  Result := AnsiStrAlloc(Size);
{$ENDIF}
end;

UNICODE is defined in Delphi 2009, so StrAlloc returns a PWideChar.

Technorati tags: , ,

Losing your religion: how to survive the tech downturn

I posted a piece on itjoblog summarizing and reflecting on Tim Bray’s tips for surviving the tech downturn, if you are a software developer.

Yesterday was another grim one on the world’s stock markets; this morning the London stock exchange is down another 3.74% at the time of writing. I’m not seeing much reason to doubt Bray’s pessimism. Still, there’s always tomorrow.

Technorati tags: ,

Silverlight on Linux: Moonlight or moonshine?

Microsoft’s press release for Silverlight 2.0 says this:

Cross-platform and cross-browser support. This includes support for Mac, Windows and Linux in Firefox, Safari and Windows Internet Explorer.

The use of the present tense for Linux support is … misleading, to be generous. I tried visiting the official Silverlight site on Ubuntu. Here’s what I’m offered as downloads:

Hmmm. If I go to the official Moonlight site, I see this:

Note that not even Silverlight 1.0 is fully released; further, it says “no video or mp3 playback is enabled”. The installers are said to be incomplete.

I asked about this at the press conference; the answer was “we’re working on it” and “as soon as possible” and “Miguel is speaking at PDC”.

That’s fair enough and I understand that these things take time. But if you read the press release, you might suppose that a Linux user could use it now. Other than for geeky and experimental users, that is not the case.

Silverlight 2.0 is released, Eclipse tools for Silverlight announced

Microsoft’s Scott Guthrie has announced the final release of Silverlight 2.0, its browser plug-in which includes a cross-platform implementation of the .NET runtime as well as a multimedia rendering engine. It will be available for download tomorrow.

Not really a surprise, but nonetheless a significant moment for Microsoft. I have been watching the project closely since it was first announced at PDC 2005 as Windows Presentation Foundation Everywhere. I am particularly interested in the cross-platform aspect. When .NET was first released in 2001, as Microsoft’s answer to Java after falling out with Sun, it had obvious cross-platform potential, yet the company held back form any commercial implementation outside Windows. Miguel de Icaza took independent action to create an unofficial open source Linux implementation, that also runs on Mac and Windows, called Mono. Microsoft was initially wary of Mono, but in my view the company had more to gain than to lose by supporting it. That now appears to be recognized, with Microsoft working formally with Mono to support Moonlight, Silverlight on Linux, and to provide it with multimedia codecs.

Microsoft has also announced Eclipse tools for Silverlight, in partnership with Soyatec, the idea being to enable Java developers to develop for the Silverlight client within Eclipse.

One clarification: although the press release says “This includes support for Mac, Windows and Linux”, the Mac support for Silverlight 2.0 is Intel Mac only, and the Linux version lacks multimedia support and the 2.0 version is described as “Experimental”; it is a long way from full release. Although Microsoft is now working with Mono, cross-platform currently means Windows and Intel Mac, though this does account for a large proportion of active Web users.

Press release is here.

Technorati tags: , ,

Amazon fails to address interoperability concerns; Flexiscale plans cloud platform

Just attended a session here at FOWA from Amazon’s Jeff Barr and Flexiscale’s Tony Lucas on cloud computing. These vendors have similar offerings (in kind, but not in scale; Flexiscale is tiny by comparison). Lucas had told me he would talk about interoperability between Amazon and Flexiscale but did not do so, nor did Barr mention it.

I took the opportunity to get in some questions at the informal gathering after the session. The context is that Amazon has had serious outages this year, which will not have gone unnoticed by organizations considering its platform; the ability to import and export AMI’s (Amazon Machine Instances) would help users to implement failover plans. Is either Amazon or Flexiscale considering support for the Open Virtual Machine Format (OVF), used by VMWare?

Neither is doing so. Lucas muttered something about standards driven by commercial agendas; Barr said Amazon would wait and see and did not want to standardise too early; and that customers were not asking for it.

What interested me was the intense interest from other developers who had come up to ask questions, in this topic of interoperability and avoiding lock-in. This makes me wary of Barr’s comment that there is little interest.

In mitigation, Lucas said that his company can already import AMIs, but does not do so because it might breach Amazon’s terms and conditions. Barr pointed out that AMIs are just Linux VMs so you can easily migrate their contents. Both good points. Nevertheless, it strikes me that VMWare’s vCloud offering goes beyond either Amazon or Flexiscale in this respect.

Lucas made a couple of other observations. He said that Google’s BigTable, which sits underneath the AppEngine API, is not open source and makes  it impossible to implement AppEngine on his platform. He added that Flexiscale was always conceived as a platform offering, not just on-demand virtual servers, and will announce a platform based on a 100% open source stack shortly (aside from the Windows version; sounds like there will both Linux and Windows available).

Future of Web Apps 2008 Day One: Web is DVD, desktop VHS

I’m at London’s dreary Excel centre for Carson’s Future of Web Apps conference, just before the opening of day two. Yesterday was a mixed bag; good when speakers talk technical; bad when they descend into marketing. The origins of the conference are as a start-up incubator; developers and entrepreneurs getting together to see what’s new and make contacts. It still has some of that flavour, but it has grown beyond that because web apps are a mainstream topic and Carson attracts generally excellent speakers. There is a good crowd here; I’m not sure if every last ticket sold, but it is pretty much packed out, though the dark economic mood is dampening spirits.

Digg’s Kevin Rose spoke briefly about his site’s new recommendation engine, which has been active since July or so. The idea is that Digg learns a user’s profile by examining clicks and votes, using it to customize what the user sees. He spoke about a forthcoming feature, where third-party sites will be able to call the Digg recommendation engine to get profile information that it can then use to customize its own site.

An interesting idea; though it raises several questions. How does it work – would logging out of Digg be sufficient to disable it? Will users opt-out or opt-in? How much of this kind of customization do we want anyway?

This whole theme of contextualization is a big one here; it ties in closely with social networking, and Google’s OpenSocial API is getting quite a bit of attention.

Blaine Cook (ex Twitter now Yahoo, Ruby guy and inventor of OAuth) gave a though-provoking session on scalability along with Joe Stump from Digg (and a PHP guy). They took the line that languages don’t matter – partly a reflection on Twitter’s scaling problems and whether it was Ruby’s fault. Other factors make language efficiency unimportant, they said, such as disk I/O and network speed; and the secret of scaling is multiple and redundant cheap boxes and apps which are segmented so that no one box  is a bottleneck. The case was overstated but the main points strike me as sound.

I’m wondering how many of the developers here are actually having to deal with these kinds of scalability problems. Many web apps get only light use; the problems for everyday developers are different.

I attended a session entitled "The future of Enterprise Web Apps" by Googler Kevin Marks. It turned out to be a plug for the OpenSocial API; not what I was expecting.

Francisco Tolmasky of 280slides.com evangelised his Objective-J and Cappucino JavaScript framework, based loosely on Apple’s Cocoa framework. Hmm, bit like SproutCore.

I give Tolmasky credit for the most striking analogy of the day. The Web is DVD is says, and the desktop VHS. Adobe’s AIR is a combo player. He is talking about transition and leaving us in no doubt about what he sees is the future of the desktop.

Best sessions of the day (that I attended) were Blaine Cook on Jabber and its XMPP protocol, and David Recordon from SixApart on the evolving Internet "open stack". In this he includes:

  • OpenID + hCard for identity
  • XRDS-Simple for discovery (http://is.gd/3M53)
  • OAuth for authentication
  • ATOM and POCO  ( or PorC) – Portable contacts)
  • OpenSocial

I put these two sessions together because they both addressed the "Web as platform" topic that is really the heart of why we are here. Spotting which APIs and protocols will win is tricky; but if consensus is reached on some or all of these, they will impact all web developers and bring new coherence to what we are doing.

I’ll be covering today on Twitter again – see here if you want to follow.

Prism: official Delphi language comes to Visual Studio

Embarcadero is to release Delphi for .NET as a Visual Studio add-on, called Prism. Marco Cantu has a summary. Note that according to this post, which is based on an announcement statement by product manager Nick Hodges at the SDN conference near Amsterdam, there will be:

full support for the .NET framework 3.5 (WinForms, WFP, Silverlight, ASP.NET, WCF, LINQ) … CodeGear will provide Datasnap 2009 integration and dbExpress for ADO.NET support

It looks as if this will be a full alternative language for .NET developers. Note that many of the language changes, such as generics, in the Win32 version of Delphi 2009 seemed to have .NET compatibility in mind. It makes sense for Embarcadero to use Visual Studio to host .NET development tools, just as it uses Eclipse for Java.

There remains an awkward question. What advantage is there in using Delphi (a version of Pascal) rather than C# for .NET development? If this is aimed only at existing Delphi developers migrating code, it will only ever be a niche.

Not good news for RemObjects Oxygene, which is also an Object Pascal add-on for Visual Studio; but Oxygene has some other tricks like Mono support, for running on Linux, which may sustain it.*

I am trying to clarify a couple of points. To what extent, if at all, will Prism support the .NET version of Delphi’s VCL (Visual Component Library), which would not fit smoothly with the Visual Studio design tools? Even if VCL.NET applications work, you would probably be better off using Delphi’s own IDE for them. Code ported from Win32 Delphi will likely use the VCL, so this is tough to get right. And what is the future of Delphi for .NET in RAD Studio? I will update this post when I know more.

*Comments below suggest that this is in fact Oxygene rebadged; I won’t say more until I’ve got official confirmation.