Category Archives: software development

Will Adobe’s tools ever run on Linux?

At an Adobe briefing last week I mainly ran Ubuntu Linux on my laptop. It seemed a good opportunity to ask Software Architect Kevin Lynch whether Adobe’s tools like Dreamweaver or the Flash IDE will ever support Linux:

We’re constantly looking at Linux as a platform for our applications. Our runtimes work on Linux; Flash Player runs on Linux; AIR will run on Linux. It may make sense to bring our tools there. There’s a relatively inexpensive way to bring tools to Linux called Wine. It’s not the best way to do it, but it kinda works. We’ve done that a couple of times with tools to see what the response is. Will people adopt them, do they care? We haven’t yet seen that momentum happen. But we’ll keep trying things occasionally, and if we start to see momentum, we’ll start investing more. Until then, we’ll stay at the runtime level.

Kevin Lynch

Kevin Lynch, Adobe Senior Vice President, Platform Business Unit and Chief Software Architect

My comment: considering the limited adoption of desktop Linux, and the free software culture among many Linux users, I doubt Adobe is losing many sales because of its Mac/Windows tools policy. That could change, and the answer I got from Lynch was more positive than I had expected – though don’t expect a CS3 Linux release any time soon.

Technorati tags: , , ,

Adobe AIR: 10 reasons to love it, 10 reasons to hate it.

I attended two days of briefings on Adobe’s developer-focused products, especially the forthcoming AIR (Adobe Integrated Runtime).

In essence, AIR is the Flash player supplemented by additional features to enable applications that are not browser-hosted, but installed as desktop applications. AIR is great for some scenarios, weak for others. Here’s 10 reasons to love it:

1. Fast execution. ActionScript 3.0 has a JIT (just-in-time) compiler, putting it on a par with Java or .NET for raw performance.

2. Cross-platform. AIR apps will run on Windows XP and Vista, Mac OS X (PowerPC and Intel), Linux (though not in the beta).

3. Easy conversion of existing Flex or HTML applications. It’s the same basic runtime. In the case of HTML, AIR apps rely on WebKit, the core component in Apple’s Safari web browser.

4. Easy installation. Provided the runtime has installed successfully, installing AIR applications is likely to be be trouble-free, since all the files go into the application directory.

5. SQLite. AIR applications have use of a fast local database.

6. Synchronization services provided you use LiveCycle. Synchronization is the difficult part of enabling offline support in occasionally connected applications.

7. Rich design and multimedia. This is Flash, so ideal for highly customized UIs, animation, sound and video. Adobe is proving the point by creating a media player built with AIR. Existing Flash developers can easily use their skills to build AIR applications.

8. Great for web vendors who want a desktop presence. For example, one of the demo applications is for buying on eBay. If eBay persuades you to install it, then it is no longer dependent on you firing up a web browser and navigating to its site. It is also a good way to disintermediate Google.

9. Declarative programming via FLEX. Declarative programming is the best way to code a GUI and consume components.

10. ActionScript 3.0 combines the flexibility of JavaScript with grown-up object orientation. Option for dynamic or strict typing according to developer preference.

So is AIR your next development platform? Maybe, but there are some downsides:

1. Limited extensibility. AIR apps have file access, clipboard access, support multiple windows, support drag and drop, and can trigger notifications (“toast” in Windows). If you app needs to interact with the desktop in other ways, the chances are that AIR is not suitable. For example, there’s no access to COM automation, and no way to execute external applications. The reason is to maintain cross-platform compatibility. That’s a worthy goal, but it would be good to have a way out of the sandbox. Unlike Java or .NET, you cannot extend AIR with custom native code libraries. Nor can you call operating system APIs.

2. Database access limited to SQLite or web services.

3. Enterprises need to roll out applications over the network in a controlled manner. AIR has no specific support for enterprise deployment. On Windows, AIR does not use the Windows Installer service. Either Adobe or 3rd parties will need to create deployment wrappers to overcome this.

4. Proprietary technology. AIR applications depend on Adobe’s runtime.

5. No threading support. Architect Kevin Lynch says this is a strong candidate for a future release.

6. No model for commercial components. It is not clear to me how a component vendor could sell an AIR component while protecting it from unlicensed deployment. This may limit the availability of 3rd party components, with a corresponding impact on productivity.

7. Schizophrenic development model. AIR supports either Flex development, or HTML applications which run in WebKit. The ugly side of this flexibility is that there are two SDKs, even two JavaScript virtual machines with different capabilities and characteristics. While it is nice to have a way to render HTML, I am not convinced that the web application model is worth it, given the complications it causes. After all, web applications run perfectly well in the browser.

8. Security concerns. AIR is close to the worst of both worlds, being tightly sandboxed from a developer perspective, but not particularly safe from the user’s perspective. Adobe says it will allow unsigned applications, which I think is a mistake.* AIR has the same access to the file system as the user, which in the case of users running on Windows XP with full admin rights is very extensive. Example bad scenarios would include downloading malware and placing it your startup folder, or searching your file system for bank details and uploading them to some internet location. That said, Adobe says there will be more security features, so conclusions are premature.

9. Synchronization service depends on LiveCycle, the server-side piece which runs on J2E application servers. This is one of the ways Adobe makes money out of AIR, with the other obvious one being design and development tools. A consequence of point 4 above.

10. Lack of UI standards may lead to annoying inconsistencies between AIR applications. We are used to this on the Web; now it is coming to the desktop as well.

*I was told that application signing is not required, but Daniel Dura comments below that this is not the case; however he says self-signed applications will be allowed. Perhaps this is one of the things under discussion. Personally I think the default should be to require applications signed by a trusted certificate, but to provide a way for developers to switch this off.

Technorati tags: , ,

Ubuntu Linux on a Tablet PC

I am currently writing about Ubuntu Linux, and for convenience and interest decided to install it on my Toshiba M400 Tablet. I could have used Virtual PC, but although virtual PC and the like undoubtedly have their place, there is no substitute for a real install if you want to get the full flavour of an operating system.

What follows are a few notes on how the installation went, and a few comments on Ubuntu itself.

Install hassles

Ubuntu usually installs easily, but my scenario was a little unusual. One of the M400’s features is that you can remove the DVD drive and replace it with a second hard drive, and this is how I usually run it. I have Windows Vista installed on the primary drive, and Windows XP on the second drive. I can boot from either one by changing the boot priority in the BIOS.

I didn’t want to tinker with the main Vista drive, so I decided to put Ubuntu on the second drive. This means allowing the Unbuntu installer to repartition the disk, always an alarming prospect. A further complication is that Ubuntu is normally installed by booting from CD, not possible in my case because I had removed the DVD drive.

The solution was to boot from a USB drive. This proved surprisingly tricky. I created what I thought was a suitable installation on a USB stick, but all I got for my trouble was a winking cursor at top left of the screen. I tried again with a different configuration, but I still could not boot. Finally I tried a third USB stick, an old one with a measly 128MB space. It booted fine, so the first lesson is to pick the right pen drive. 

I selected a desktop install, and chose a partitioning scheme. It downloaded the required packages from the Internet and announced a successful installation. The installer offered to modify the boot record on my second (Windows XP drive) to enable booting into any of my three operating systems, and I let it do so.

Problem. After rebooting the laptop reported “Missing operating system”. Worse still, I could no longer boot from the USB stick, which reported Grub Error 22. Not good.

I was saved by a handy boot recovery tool called Super Grub Disk. This started nicely from USB and offered to fix my broken Grub (a Linux boot utility). I let it do its thing, following which I could boot into the Grub menu. Unfortunately the only option that worked was Windows Vista. If I tried to start XP or Ubuntu, I got “Drive does not exist”.

One of Grub’s features is that you can modify the startup parameters on the fly, or access a simple command line. I soon figured out the problem. The auto-generated menu.lst was trying to use a non-existent hd2. In reality, my drives are detected as hd0 and hd1. A few straightforward edits later, I was up and running. I can even boot Vista without fiddling with the BIOS, thanks to Grub’s map command which is able to reverse the drives on the fly.

Better than expected

Ubuntu on this Toshiba exceeded my expectations. Sure, there is no full Tablet functionality with handwriting recognition, although the Tablet pen works as a mouse, which is a good start. Otherwise, most things work. The OS is  stable. The wireless works, the touchpad works, the sound works, USB drives work (of course).

It’s not perfect. No Bluetooth. And the biggest irritant is suspend and resume. This worked once, but crashed on resume the next time I tried it. Hibernate failed too.

There is also something odd about cold booting. The Grub menu works, but you can’t actually see it; the laptop just shows a slightly corrupt Toshiba BIOS splash screen. Do a second, warm reboot, and the menu appears fine. Still, bearing in mind that this is an out-of-the-box install on a laptop designed only for Windows, I think it is a good effort.

Ubuntu vs Windows

Ubuntu is not as polished as Vista or even XP, let alone Mac OS X. The fonts look less good; the apps are (even) less consistent in look and feel, and some still come across as a bit home-made. Nevertheless, there are things that it does better than Windows. I like the Applications menu, which is sorted by type of app – Games, Graphics, Internet, Office, Programming – instead of jumbling everything together in one Programs group. And I love the way Add/Remove programs is integrated into the menu. I wanted to install Audacity, the sound editor. Type Audacity into the search box, check the box when it comes up in the list, click Apply, and seconds later, there it is. I guess this works best in a free software world, but there is no inherent reason why something equally easy cannot work with commercial software; it simply needs an extra step where you take payment, or installation of an upgradable trial version.

A related feature shows up in the command line. Type svn (for the Subversion client) and you get a message:

    The program ‘svn’ is currently not installed. You can install it by typing:
    sudo apt-get install subversion

It reminds me of the advertisement feature in Windows Installer, except that is for application features, whereas this is for entire applications. Further, it is much simpler and more reliable in Linux.

I was interested to note that Mono is installed by default, and MonoDevelop is listed in the package manager, making it easy to get up and running with .NET development if you feel so inclined.

What else is better? Notably, performance. Everything seems quicker. Another thing is workspaces, which let you switch between multiple desktops. I really don’t know why Windows does not surface this feature, which PC Tools for Windows did nicely all those years ago. Windows does have multiple desktops, but it is hidden except in the context of “Switch user”.

Linux is still geeky, but it is getting more user-friendly, especially in Ubuntu. I wish Microsoft had put equal focus on the user in Windows Vista versus XP. I like Vista better than XP, but it could and should be better than it is.

Technorati tags: , , , , ,

IBM Project Zero

Project Zero is an agile web development tool from IBM, using Eclipse, PHP and Groovhy.  Following my comments on its low visibility on IBM’s site, I received an email from Product Manager Joe Lea:

There are now two pieces on developerworks about IBM’s Project Zero. Much more coming shortly…

http://www.ibm.com/developerworks/podcast/dwi/cm-int071007.html

http://www.ibm.com/developerworks/edu/wa-dw-pzphp-i.html

Anyone tried this tool? If so, I’d be interested to know how you find it.

Technorati tags: , , , ,

MFC not dead – “massive update” planned

Herb Sutter refers to a comment by Bill Dunlap, a product manager for Visual C++, on the future of MFC:

MFC – we are working on a huge update to MFC that should knock your socks off.  I can’t tell you too much right now, but this is closer than you might thing <g>.

Intriguing, since with ATL and then the whole .NET thing, including managed C++ and C++/CLI, I’d assumed that MFC was all-but deprecated.

I can see the value of this for maintaining existing projects, but for new ones? I like this comment by Dan Shappir:

The only reason I can see for doing significant UI development in C++ is for cross-platform support, and in that case I would probably choose Qt.

Actually I can think of a few other reasons, such as performance and compatibility with older versions of Windows, but then again why not use Delphi?

Talking of Delphi, it’s interesting that according to Shappir’s post referenced above, Microsoft’s Visual C++ team had similar feedback to Borland/Codegear:

Damien Watkins, a Program Manager on the Visual C++ team, stated quite frankly that the feedback they have received from C++ developers is that they prefer to use C# for developing managed code for .NET. So what is the new positioning for C++? Apparently it’s:

  • A strong emphasis on developing unmanaged, native applications
  • Tool for achieving interop between existing native code and new managed code

I guess this ties in with renewed investment in MFC.

Technorati tags: , , , , ,

Recreating iTunes in Silverlight

Browsing through Codeplex I came across this project to recreate iTunes as a Silverlight application. What’s remarkable is that author Jose Fajardo has kept a kind of developer’s diary on his blog, complete with YouTube videos here, here and here showing how he is recreating Apple’s music app as a Silverlight/Ajax web application.

The videos are not exactly gripping unless you are interested in the nitty-gritty of how to create a control in Microsoft’s Expression Blend and integrate it into a Silverlight application. If you are, then this sort of hands-on demo gives a great picture of real-world use. It’s a also an intriguing example of how to replicate another company’s expensive design efforts with just a few minutes in a suitable tool.

It looks like Fajardo is having a lot of fun with Silverlight, though if he completes the project I’m not sure what Apple will make of it. How’s the DRM piece coming along?

Tafiti: search as a rich internet application

Tafiti is fascinating. Imagine what Google search would look like, if re-designed as a Flash application. This is it, except that it’s Live Search, not Google, and Silverlight, not Flash.

Let’s start with the good stuff. I ran this on a machine without Silverlight installed, and the installation of the plug-in was fast and smooth (though it restarts IE without remembering the open tabs, which is mildly annoying). The Tahiti app looks good and scales nicely. I searched for Silverlight, and results came back fast. You can easily filter the results, or drag and item onto a “shelf” for future reference, and the shelf persists between sessions.

The best feature is a carousel at bottom left. This modifies the search by different types: books, news, feeds, web or images. The layout of the search results changes to match the type of search, so you get book covers and a print-like font for the book search, big headlines for a news search, and so on.

What’s bad about Tafiti? The biggest irritation comes when you actually want to navigate to a site you’ve found. The generic problem here is that you typically want to keep the list of results as well. I normally solve this by right-clicking and opening the site in a new tab. But this is an application, not HTML, so when you right-click you get a single menu option, “Silverlight configuration.” If you left-click it is even worse:

Tafiti is trying to show the site you chose. Please disable your popup blocker to see your selection.

It wants to open the site in a new window, see, and that triggers the popup blocker. Easily fixed with “Always allow popups from this site”, but still a jarring experience.

These are actually minor quibbles. The more fundamental issue is, do you want search as an RIA? The problem is that search is a basic utility. What I want is quick results and easy navigation, never mind the frills, so I will take some persuading. Still, it could work if the application adds real value. Maybe a way of displaying more results on a page, without clutter, or categorising the results in some sensible way. It’s difficult, because attempts to be helpful often end up being counter-productive – and Microsoft is a specialist in over-helpful UIs, sadly.

Despite these reservations, I think Tafiti is a great Silverlight demo, because the technology is nearly invisible. On my system at least, it just works, and at this stage that is what counts for most.

PS: I am not sure what Tafiti is meant to mean, but according to Wikipedia it is a dialect of a Polynesian language and means the strangers, or people from a distance. Perhaps Microsoft is talking about its search market share vs Google?

Update: in the comments here and on the official faq it is said that Tafiti means “do research” in Swahili, and that the app is specifically aimed at “research projects that span multiple search queries and sessions”.

Technorati tags: , , ,

The Samsung i600 and Windows Mobile

I’ve been looking for a new Smartphone for a while, and decided to try the Samsung i600, a Windows Mobile device with strong connectivity (GPRS,Bluetooth,UMTS,HSDPA,wi-fi) and a tiny QWERTY keyboard. It is not a touch screen, which to me is a good thing in a mobile phone. I’ve not tried the finger-driven iPhone yet, but I did use a Palm Treo for a while and found the stylus a nuisance. For me, email and web access are just as important as voice, and I’ve already found the keyboard useful. You can find the specs of the i600 elsewhere; but here are my observations so far.

Pros

I like the feel of the device. The central button and joystick is a pleasure to use, and the backlit keyboard is pretty good considering its size. The 320 x 240 screen is excellent (dust aside, see below), and browsing the web is a realistic proposition provided that you are not paying something ludicrous like £4.00 per MB (yes, that’s what some operators charge in the UK). I’ve not tried all the features yet, but I’ve had success with IMAP email, wi-fi, Bluetooth, and playing MP3 music.

The i600 has a neat “card wheel” UI on its home screen, which provides quick access to most of the features. Using the joystick or scroll wheel, you first find the card you want, and then scroll within the card to find what you want. For example, the Profile card lets you select a profile such as Normal, Silent, or Vibrate. The Now Playing card is particularly good, letting you pause, play and skip songs without leaving the home screen.

The camera is decent for a mobile, but still nowhere near good enough to replace a separate camera even for my limited use. You can also capture a jerky little video. There are actually two cameras, one on the back for taking pictures, and one on the front for video calls.

Others have found battery life a problem, but Samsung has solved it by bundling an extended battery and external charger in the box. Fitting the extended battery makes the phone a little thicker, but not excessively so. You also get a standard battery, which you can use as an emergency backup. I’ve found this more than sufficient. Apparently not all bundles include the extra battery, so it’s worth checking this point if you are considering the phone.

This is also a good device for developers, provided you are happy with Visual Studio. I was up and running quickly once I’d worked out the security issue (separate post coming soon). I did purchase an unlocked device, as I hate the whole contract circus. A Micro SD storage card is also essential.

Cons

Windows Mobile is still not as easy as it should be. I really think Microsoft should have ActiveSync sorted by now, but apparently not. When I first connected to my Vista desktop PC, Windows Installer started up, thrashed around for a bit, then declared it was quitting because a newer version was installed. After that, nothing. I connected the device with USB, there was no error, but the Mobile Device Center could not see the phone. I fixed this by downloading Mobile Device Center 6.1. That mostly works, but I still have strange problems syncing with Exchange. This works through wi-fi provided I set the connection to “work” rather than “internet”, but not through USB. Perhaps I’ll work out why, but this sort of thing is frustrating and difficult, and online help is a masterpiece of polite unhelpfulness. Try a search for “cannot connect with current connection” (with the quotes) if you really want to know more.

More generally, I find navigation with Windows Mobile unpredictable at times. Example: I click Start, then Organizer, then Calendar. This fires up the Calendar, which defaults to the monthly view. I select a day, and click OK to view an appointment. Then I click the Back button. I should be back at the monthly view, but I’m not: I’ve exited Calendar and I’m back on the Organizer group in the Start menu.

I find the email client similarly confusing. No matter how hard I try, I seem to end up switching out of the app completely when I don’t mean to.

A crazy omission in Windows Mobile for Smartphone is cut, copy and paste. I couldn’t believe this at first, on a device with a keyboard, but it is true. I believe there are third-party solutions. I’ve also installed the trial of Documents To Go, which does support the clipboard, though this won’t fix Mobile Outlook.

No Flash support in Pocket IE.

I have a few complaints about the i600 itself. No socket for a standard headphone jack, so you have to use the supplied ear buds. Dangly plastic covers for the data cable and Micro SD ports, which are bound to break off in time. No support for Micro SDHC, which means a 2GB limit on the storage card. I’ve also applied the official Windows Mobile 6.0 upgrade (pretending to be from the Netherlands) and was disappointed to find no Mobile Office – having said which, Documents To Go is probably better in any case.

Most seriously, I can already see dust behind the screen. It’s not yet a big problem, but how much worse will it get in prolonged use? There appears to be no fix other than returning the unit for service or replacement. 

Overall

Despite the cons, this is easily the best mobile I’ve used.

Technorati tags: , , , ,

ThoughtWorks Mingle: is JRuby always this slow?

I’ve set up ThoughtWorks Mingle on Ubuntu 7.04.

No significant problems so far, though a couple of observations. The system requirements are substantial – 2GHz processor, 2GB RAM – which is OK for a new server, but rules out ideas like installing on a VM on the Internet.

It’s easy to see the reason for the high system requirements. Mingle feels slow, even with just a dummy project that has hardly any content. Maybe that’s the price of being first to market with a commercial product built in JRuby. Trouble is, performance is a feature, and exactly the kind of detail ThoughtWorks needs to get right in order to attain high usability.

Second disappointment: Mingle integrates with Subversion, but the repository needs to be on the same machine. Mine is out on the Internet, on one of those VMs that’s not up to running Mingle. Apparently this will be fixed in a later release. In the meantime, I guess I’ll have to set up a local Subversion for testing.

This is the first release, and no doubt ThoughtWorks will find ways to improve performance. I’m looking forward to trying it out.

Technorati tags: , ,