Category Archives: software development

Simple RAD tools from industry giants fly below the radar

Oracle and IBM are not normally names you associate with simple, highly productive software development tools. Arguably, it is the over-complexity of J2EE that left the door open for Microsoft .NET as well as nimbler open-source options like PHP and Ruby on Rails. Still, let me mention two tools that demonstrate how even these giants are devoting attention to productivity. IBM’s Project Zero is the first:

The Project Zero environment includes a scripting runtime for Groovy and PHP with application programming interfaces optimized for producing REST-style services, integration mash-ups and rich Web interfaces.

Groovy is a dynamic language for the Java Virtual Machine, and an interesting option for agile development on the Java platform, though it is perhaps getting overshadowed by JRuby.

And what about Oracle Application Express (or APEX)? This seems to be a well-kept secret at Oracle, though its users love it. Once known as HTML DB, it lets you write applications declaratively. A snag is that you have to know PL/SQL if you want to extend it with custom components. That said, APEX has a couple of big advantages. One is that it is a web services client, so you can integrate it with other web applications. Second, it is ideal for hosted development:

Oracle Application Express enables a single database to host large numbers of users.  Users work in a dedicated work area called a workspace.  This flexible architecture enables a single database instance to manage thousands of applications.

It all sounds strangely similar to what Salesforce.com is doing. Salesforce.com also calls its platform APEX, runs on Oracle, and was founded by former Oracle executive Mark Benioff.

A difference is that Salesforce.com says its APEX platform is the future of web development and will host your application for you, while Oracle markets Application Express as an alternative to Microsoft Access for small departments.

IBM is equally reticent about Project Zero. I couldn’t find it mentioned on the developerWorks site.

It is much easier for startups to promote new models of software development.

Salesforce.com + Google + Adobe Flex and AIR = New Internet platform?

I spoke to Adam Gross, vice president of developer marketing at Salesforce.com, about the new Summer 07 release. This includes the first full release of Apex Code, a server-side programming language which lets you customize and extend Salesforce.com applications. Currently Apex Code is only available in the high-end Unlimited Edition.

Gross told me that Apex Code has acquired some interesting new capabilities since we last spoke about its preview release. This includes the ability to make outgoing web service calls, a capability which is particularly interesting because it enables mash-ups with third-party web applications that also expose a web services API. Salesforce.com is a big user of SOAP, by the way, in contrast to all the negative press that SOAP seems to get elsewhere. You can develop Apex Code in Eclipse, though debugging is still fairly painful.

The mash-up idea is compelling. One of the key challenges of hosted applications is integration with local applications. Things like complex Outlook connectors are common, along with the ability to export data as Excel or Word documents. That friction can be reduced by moving more of your data online. For example, Gross told me that developers have already devised ways to export Salesforce.com reports directly into Google’s Documents and Spreadsheets. From there, you could easily share it with colleagues. In fact, the same application could email the link to a list of recipients. That makes more sense than exporting to Excel, attaching it to an email in Outlook, and sending it out again. Note that Google and Salesforce.com announced a strategic alliance in June, but this focused on AdWords which is less interesting.

Another key Salesforce.com partner is Adobe. Gross tells me that he sees wide take-up for Flex and AIR among Salesforce.com developers. There is a Flex Toolkit which simplifies the development of Flex or AIR applications that call Salesforce.com APIs. “The take up of the Flex Toolkit has been breathtaking,” says Gross. “We are already seeing companies create offline applications written in AIR, even though that product is still in beta.” He also praises the productivity of Flex – apparently some developers use it for that reason alone.

The offline aspect of AIR is vital, as it addresses the most obvious weakness of the Salesforce.com platform. Google Gears could be used for this as well, though I got the impression that Gross sees more take-up for AIR at the moment. He says there will be further announcements on both at the Dreamforce conference in September.

The vast majority of Salesforce.com usage seems still to be CRM, though there is no inherent reason why the platform should not support ERP or other application types. Its strength is the vast amount of pre-built functionality. Concerns include the cost – especially if the company reserves key features like Apex Code for its high-end edition – and the risk of vendor lock-in. See here for a good overview of the Salesforce.com platform.

CodeGear abandons .NET Windows Forms?

Intriguing blog post here suggests that future versions of Delphi .NET will not support Windows Forms, the most widely used GUI library for .NET. Apparently the Delphi 2006 Windows Forms designer will not appear in Delphi “Highlander”. If you want to do GUI work in Delphi .NET, you will have to use VCL.NET, or else make do without a designer.

At first glance this looks like a mistake. The main problem is third party components. There are plenty around for Windows Forms, few for VCL.NET. OK, you can import a Windows Forms component and use it in VCL.NET, but it’s not ideal.

Then again, what is the future for Delphi .NET? Pretty uncertain, judging by what CEO Jim Douglas told me. If the speculation about Windows Forms in Delphi is correct, then anyone who invested in Delphi Windows Forms development has been left stranded. Might not the same happen to VCL.NET developers? And what are the implication for WPF, a much nicer GUI library than Windows Forms though immature and little-used at the moment? Developers hate this kind of uncertainty.

Performance expert becomes Visual Studio Chief Architect

Microsoft’s performance specialist Rico Mariani is to be Chief Architect of Visual Studio.

Mariani has earned huge respect for his detailed blog posts on performance issues in .NET. He’s recently posted some fascinating figures on Linq to SQL performance. From a technical point of view, it looks like Visual Studio architecture is in good hands.

Perhaps this also indicates that Microsoft is giving higher priority to performance. That’s needed. Most of my gripes about Windows Vista are performance related. Take the new Event Viewer, for example, just because I used it this morning. It takes 20 seconds to open on my system, during which time it displays “reading log” messages. This never happened with the old event viewer, which opens without any delay. The new one is much prettier, but at what cost? These small delays, repeated n times a day, consume a huge amount of expensive admin time.

That said, it’s puzzling to find a performance guy in charge of architecture. Still, Visual Studio is the first link in a chain that leads eventually to Windows, Office, and most third-party Windows apps. More speed everywhere, please.

Audio in Vista: more hell than heaven

Here is a contradiction. On the one hand, Vista audio is said to be much improved over audio in earlier versions of Windows. Certainly this was Microsoft’s intention. Larry Osterman’s 2005 post refers to several goals, including moving audio code out of the kernel to improve reliability, and making Windows a better platform for audio professionals. Osterman also describes the new audio API called WASAPI, which enables low-latency, and provides an illustration of how it fits together. Vista clearly has a much richer audio API than Windows XP. Here is an easy to understand overview, full of enthusiasm for its benefits.

Why a contradiction? Well, the actual, real-world experience of audio in Vista is mixed at best. Here is a typical post, complaining of stutters and pops in Vista audio which recall bygone days when PCs were barely up to the task. Surely playing 16-bit audio should be a breeze for today’s PCs?

I’ve had the same experience. I care about high-quality audio, so I installed a high-end Creative card, the Xi-Fi Elite Pro. I’ve been through all the drivers, from early betas to recent and supposedly production-ready releases. None have worked smoothly. I’ve had problems playing CDs, problems in Audacity where playback stutters or simply stops working, or a strange effect where the right and left channels go out of synch. I’ve had problems in Windows Media Player, where the responsiveness of the play, pause and stop buttons becomes sluggish, or playback fails completely.

I thought this might be primarily a problem with Creative’s drivers. There are certainly howls of anguish on the Creative forums. I also notice that if I switch to the motherboard’s integrated Realtec audio, reliability is greatly increased, though sound quality is worse. There are still occasional problems. Everyday use is fine, but a heavy editing session in Audacity causes glitches.

I decided to go pro. I removed the Xi-Fi, purchased a Terratec Phase 22, aimed at the pro market, and attached an external DAC. I chose the Terratec because it is a no-frills affair and has a Vista driver, unlike many of the pro audio cards out there. Happy now?

Well, no. The Phase 22 works OK using its internal DAC, but I’m having problems with the  SPDIF digital output. If I direct audio specifically to this output, by making it the default device, or selecting it in the preferences of an app like Audacity, it does not work. I can sometimes get it to work temporarily using the Phase 22 control panel, but it fails again as soon as I stop and restart playback. If I direct output to the Phase 22 internal DAC, then SPDIF output works, but it is always re-sampled to 48 kHz. Ideally I want bit-perfect output to the external DAC. For example, I’ve got a 96 kHz FLAC file. If I play this in Vista, it is output at 48 kHz.

In Windows XP, by contrast, it works perfectly. Ripped CDs are output at 44.1 kHz, my 96 kHz FLAC file is output at 96 kHz.

I also have problems with Steinberg’s Cubase SX. This works well in XP with the Phase 22, or with the internal card on Vista, but it does not work with the Phase 22 in Vista (I’ve not spent a lot of time trying to troubleshoot this). I called Terratec support. The guy didn’t bother trying to analyze the problem; he just said wait for a new driver.

Digging a little deeper

Maybe some of these problems are specific to my machine or the way it is configured. Maybe, and I look forward to your tips. But here are a few observations.

Pro audio vendors are very late with Vista drivers. I noticed this when looking for a replacement for the Xi-Fi. M-Audio, for example, has only patchy support, and some drivers are still in beta. E-Mu, Creative’s Pro range, is still on beta drivers. Bear in mind that Vista was released to manufacturing in November 2006, and that there were plenty of pre-releases.

Vista drivers, where available, may not be full-featured. Creative is a case in point. Its Vista drivers do not support decoding of Dolby Digital and DTS, DVD-Audio, 6.1 speaker mode, or DirectSound-based EAX effects.

General advice in the Pro community seems to be: stick with XP for the moment. I don’t see many posts from musicians raving about how much better Vista is for their work. I see plenty of posts about problems with audio in Vista.

What’s gone wrong? I don’t have a definitive answer, but can speculate a little. What we do know is that audio in Vista, and multimedia in general, is greatly changed. The links I gave above are just overviews. For a real drill-down, try the lengthy audio processing in Vista thread on the AVSForum, along with Creative’s explanation of audio in Vista. Note that a number of older APIs are now emulated on top of the new WASAPI. Emulation, as everyone knows, often means slow. Note also the two modes in Vista audio: shared and exclusive. As I understand it, in shared mode, Windows will always munge the audio at least a little. In exclusive mode this won’t happen, but according to this post, writing exclusive-mode drivers is exceedingly complex.

There’s also DRM to think about. Is the notorious protected media path getting in the way of faithful audio reproduction on Vista? Personally I doubt it, but it could be a factor.

Speculations

The bottom line is that Vista audio should be great, but in practice it is problematic for many users. Why? Here are a few possibilities.

1. Vista audio is great, but third-party vendors are a lazy bunch and haven’t bothered to do decent drivers. This is the view of many on the Creative forums, but I don’t buy this entirely. The failure to provide good drivers in a timely manner seems to go right across the industry. I am sure some vendors could have done better but I’m inclined to think there are other factors, such as perhaps…

2. Vista audio is so complex and different that third-parties had no chance of writing good drivers in time. This seems at least plausible. I still find it curious. I don’t doubt that the leading vendors of audio add-ons worked closely with Microsoft in the run up to Vista. Why then is support for the new operating system so limited and late?

3. Microsoft slipped up; audio in Vista does not work properly. It will certainly be interesting to see what effect Vista’s service pack 1 has, when it arrives later this year.

No conclusion

A year from now, we might all be saying Vista’s audio is fantastic. That will be after Vista SP1 and another year of driver development. Alternatively, we may know more clearly why it does not deliver. In the meantime, my own view is that Vista audio is more hell than heaven.

Technorati tags: , , , ,

Microsoft sets launch day for Visual Studio 2008, SQL Server 2008, Windows Server 2008

According to a press release just received, Microsoft has set 27 February 2008 for the “global launch” of its 2008 server and developer products:

Today at the Microsoft Worldwide Partner Conference, COO Kevin Turner announced that the company will jointly launch Windows Server 2008, Visual Studio 2008 and SQL Server 2008 in Los Angeles on 27 February, 2008. The event will kick off a “launch wave” of hundreds of events that Microsoft will host worldwide including training, virtual events and extensive online resources.

Windows Server 2008 has the IIS 7.0 web server, PowerShell command-line, and “Server core” which lets you install servers without any GUI components. Funny how Windows is getting more like Unix.

SQL Server 2008 has a new FileStream data type (a better blob), spatial and location data types, integrated full-text search, and a bunch of scalability and management improvements.

Visual Studio 2008 is the LINQ (Language Integrated Query) and WPF (Windows Presentation Foundation) release. WPF is already out there, but this has full design-time support. There is also ASP.NET AJAX. Visual Studio 2008 goes hand-in-hand with C# 3.0 and VB 9.0. The underlying CLR (Common Language Runtime) is still essentially 2.0, the same as for Visual Studio 2005.

Of course there are a zillion other new features, but I’ve picked out a few highlights.

Will this change our lives? LINQ is exciting, and so is WPF if anyone actually starts to use it, but of course we’ve known about these things for a while. Microsoft’s release cycle for new technology – from first announcement to full release – seems to stretch out for ages. Otherwise, this feels more like consolidation than any sort of new direction.

Microsoft on Visual Studio 2008 and beyond

I spoke to Prashant Sridharan, group product manager for Visual Studio. He told me that Visual Studio 2008, formerly codenamed Orcas, is set to ship by the end of the year, which probably means November or December. Among many new features, he highlighed LINQ (Language Integrated Query), which he classified as a productivity feature, new optimization and analysis tools, and scalability and performance improvements in Team System. SQL Server 2008 will be supported. We will also get designers for WPF (Windows Presentation Foundation), and in due course for Silverlight as well. Shridharan said that the final Silverlight designer might not make the initial release, but will be available shortly after at worst.

I am still puzzled as to why it has taken Microsoft a year from the release of .NET Framework 3.0, which was released with Vista, to come up with non-beta designers for WPF. Shridharan did not really explain the delay, but commented that .NET Framework 3.0 was really an interim release; Visual Studio 2008 will ship more or less simultaneously with .NET Framework 3.5.

I asked whether the direction established with the free Express tools is likely to continue. Shridharan says that it will, but that he feels the current Express line is too complex and confusing for its target novice users. The 2008 range will be similar, but it may be further simplified in subsequent releases. I am not sure how to decode this message. Is it really that the tools are confusing for novices, or is Microsoft giving too much away and wants to draw back a little? The complexity problem is real, but chopping out a few features will not improve it much; it would take radical re-thinking of the whole development approach – think PopFly, which I’ve just noticed also uses the Express word in its slogan, “Express yourself.” See also the note on commoditization below.

I also touched on the question of software factories, about which Jack Greenfield enthused at the architecture conference I attended in March. Will this be surfaced at all in Visual Studio 2008? Well, one thing which was apparent from my chat to Greenfield was that Microsoft’s software architecture strategy is vulnerable to the musical chairs of internal reorganization. Shridharan did say that the Patterns and Practices team is now integrated with the Visual Studio team, which should mean that more of its (most interesting) work is surfaced in Visual Studio itself. That sounds good; but what of Greenfield’s vision for how software factories can transform software development? It doesn’t seem to be one shared by Shridharan, who observed that all the Visual Studio designers are software factories and was vague about future developments in this area. That may mean he is the wrong person to talk to about this, or it might suggest a more conservative approach than Greenfield hopes for. In any event, it seems that it won’t be this release which delivers radical changes in the modeling or software factories area.

Finally, I asked Sridharan about the commoditization of development tools, and whether Microsoft might one day give away Visual Studio in order to promote its platform. He prevaricated a bit. “We’re not a profit centre in the same way as Office. We do make a sizeable chunk of revenue of out Visual Studio … you can have co-existence of free tools with a high-end product on which you drive revenue.”

All true, but the free tools are improving and the trend is in that direction. “We are I think close to an infexion point , but I don’t think we’re quite there yet, in terms of the commoditization around tools,” says Sridharan. “We’re very close. Within Microsoft that gets a lot of debate, and we’re investigating actively. You’re certainly not going to see anything happen in Visual Studio 2008, but over time, who knows?”

Time to stop using non-generic collections

This is one for .NET programmers. Do you use collection classes like ArrayList or HashTable? These are useful in .NET 1.0 and 1.1, but .NET 2.0 and higher has generic collections like List<T> and Dictionary<K,V> which are safer and more efficient. It’s time to tidy up your code, because in Silverlight’s implementation of .NET these non-generic collection types have been removed completely. The BCL Team Blog has the details, together with a handy guide on how to convert your non-generic collections. Of course you can simulate non-generic collections by declaring collections of type Object, so there’s no reason to continue using the old collection types.

Technorati tags: , ,

Adobe AIR security concerns

Adobe’s Paul Robertson has a thoughtful response to my complaint about AIR security. The point I made is that any AIR application has the same access to the file system as the user. This includes local SQLite databases as well as other documents. Robertson’s response:

In order for a user to access an AIR application, he or she must first choose to install the application, including going through a security dialog that will describe whether the application was signed with a security certificate. In this way, an AIR application is comparable to any other desktop application, such as one written in C++. Since any C++ application could theoretically include the SQLite library, installing an AIR application is no different from installing any C++ application in the sense that, by doing so, a user opens himself up to possible abuses and security risks.

The security risks of desktop apps are well-known, and that’s why users have learned to be cautious about installing them. A possible concern though is that Adobe wants to make installing AIR applications really easy. Here’s the description in the docs for seamless install:

The seamless install feature lets you provide a link in a web page that lets the user install an AIR application by simply clicking the link. If the AIR runtime is not installed, the user is given the option to install it. The seamless install feature also lets users install the AIR application without downloading the AIR file to their machine.

I’ve seen how much kids love playing Flash games on the Web. Some of these games would be a natural fit for AIR: play the game from a desktop shortcut, option to save your game locally, no browser baggage. What if a lot of these games turn into AIR apps? Suddenly, instead of online Flash games being relatively safe, they become relatively risky. If users become complacent about passing the AIR install dialog, then all the bad guy needs to do is to create a whizzy game that does a background search of your computer looking for online banking passwords.

The risks will be mitigated if Adobe restricts AIR to signed applications. That’s not the case with the beta:

A further point is that despite the scary dialog, AIR apps are actually tightly locked down from a developer perspective, with no access to native code such as the operating system API, scripts, or native dynamic libraries. While that’s good in one way, it’s arguably the worst of both worlds: not secure (because of full file system access), and not extensible either.

The appearance of the words “System Access: UNRESTRICTED” in the above dialog suggests that Adobe has or is planning a richer security model. If the default were no file I/O, or file I/O isolated to the source domain of the AIR application, that would help considerably. Add compulsory application signing and it would look better still.

I’ll add that I’m most impressed with Paul Robertson’s willingness to enter into this dialog. I wish other software vendors were equally responsive. AIR is in beta so there’s time to fix problems.

Technorati tags: , ,

 

CodeGear puts 64-bit on the roadmap

CodeGear has updated its Delphi Roadmap. Newly added is Delphi codename “Commodore”, set for Winter 2008, which is to include native 64-bit development. After that the company is promising to focus on multi-core/multi-threaded development.

What else is coming? Delphi “Highlander”, due later this year, is a belated update to Delphi .NET, will support .NET 2.0, and has a new .NET database called SQL Datastore (likely some sort of port of JDataStore). No word on WPF or LINQ though – CodeGear is still playing catch-up here.

Delphi “Tiburón”, due next year, will bring another long-requested feature: full Unicode compatibility in the Win32 Delphi language and VCL (Visual Component Library), along with parameterized types. C++Builder “Barracuda” will follow, bringing the same features to C++.

The really interesting stuff comes at the end. CodeGear is “researching” a number of areas includes development for mobile devices, Rich Internet Applications, and cross-compilation to other operating systems. All this is at the “sometime, never” end of the time scale, so don’t get too excited.

All the above will be welcomed by Delphi developers, though I fear most of the potential .NET market has already been ceded to Visual Studio.

It’s not a bad roadmap though. That said, to my mind the most critical issue for CodeGear is quality control. Poor quality is what spoilt the launch of Delphi for PHP earlier this year. I discussed this issue with the new CEO Jim Douglas and EMEA product Director Jason Vokes when I was researching a recent article for The Register, and got the sense that the familiar pressure of having to release product (ready or not) to hit particular financial quarters is still a problem. Still, Delphi 2007 was a smoother launch than Delphi 2006, and that was miles better than Delphi 2005, so leaving aside Delphi for PHP things are improving.