Miscellaneous and Useless Information

Software development

The long-awaited iPhone software development kit is here, and overall I’m pretty impressed with the amount of power and flexibility Apple is giving to third-party developers. Beating Daniel’s expectations, Apple is giving access to the iPhone’s native API. There are a few gotchas though. For example, only one third-party app can run at a time, and it can’t run in the background.

There was another disappointment from my point of view, and this is because I work for IBM (although the following is not necessarily IBM’s opinion). Where was the Lotus Notes announcement? About a month and a half ago, the web was abuzz with IBM’s plans to introduce a native Lotus Notes application for the iPhone. IBM then said it wasn’t ready yet, and during yesterday’s announcement, all the enterprise hoopla centered around Microsoft’s Exchange and ActiveSync. I think IBM missed a chance to show “enterprise” also means Notes and Domino, not just Exchange. (Whether this is because Jobs was unhappy IBM was jumping the gun and upstaging Apple’s own announcement, I don’t know.)

Looks like my prayers (and those of many others) have been answered: Apple will release a software development kit for the iPhone and iPod touch in February, enabling developers to write their own native apps for those devices. I’ll be curious to see how the third-party iPhone/iPod app market will develop; I bet it will be huge.

Over the past month, there have been a slew of announcements that have the potential to rearrange the Internet development landscape. Building on the momentum of Flash and Flex, Adobe announces Apollo, a platform for building desktop applications using a combination of Acrobat, Flash, HTML, and JavaScript. This could be seen as direct competition to Windows, especially Windows Presentation Foundation (WPF) apps.

Then Microsoft turns the tables and announces Silverlight, a spinoff of WPF which is a platform for building rich applications for the Internet and the desktop, on Windows and Mac. Version 1.1 will include a subset of .NET, allowing developers to create apps in .NET languages such as C# and IronPython.

And then today, Sun announced JavaFX, another attempt to make Java appealing to desktops and devices. So far it consists of two parts. JavaFX Script is a new scripting language that makes it much easier to build Swing apps; it’s been open sourced. (By the way, JavaFX Script has nothing to do with JavaScript, which itself has nothing to do with Java. Blech.)

JavaFX Mobile promises to finally make Java consistent and useful on mobile devices. From everything I’ve heard, the current Java solution for phones and PDAs, Java ME + CLDC, is next to useless without proprietary extensions.

While JavaFX sounds good, I don’t know yet if Sun is tackling the main problem with deploying Java apps: a 13 MB download for the JVM, as opposed to a 1.4 MB download for Silverlight or 1.2 MB download for Flash.

Who will win? Who knows! This promises to be an interesting ride.


The developer tools group in Borland, which is in the process of being spun off, is resurrecting the Turbo line of programming tools. They will include a free edition and a professional edition that will cost less than $500. (Currently Borland’s cheapest professional tools cost over $1000.) They’re even bringing back their old mascot, Turboman. I’m glad to see them going back to their roots, and I’m rooting for them. Way back in middle school, Turbo Pascal 3.0 was my first exposure to structured programming and a real IDE and compiler, and I’ve been a fan of Borland ever since.

Lately there's been a bumper crop of JavaScript libraries for creating Ajax applications. At first, it was largely a grassroots effort, and to this day some of the most popular libraries like Prototype, script.aculo.us, Behaviour, Dojo, and MochiKit are maintained mostly by one person.

But now the big boys are joining the party. Yahoo has a modular user interface library that assumes you're doing most of your client-side development in HTML and JavaScript and just need help smoothing out the warts in those languages. Adobe has an HTML-centric framework called Spry. Taking a vastly different approach, the Google Web Toolkit lets you write Ajax applications in Java, and then compile them into HTML and JavaScript. And Microsoft has a library code-named Atlas, which includes both a server-side ASP.NET library that doesn't require JavaScript and a client-side JavaScript library.

The best part: all are available for free, and all but Atlas is open source. (Atlas will have a "reusable modification license," whatever that means, when the final version is released.)

Last week, Microsoft had its semi-regular Professional Developers Conference. I was impressed by the amount of new material it put out, much of it unexpected, including:

And then that weekend, both Business Week and Forbes had cover stories on how Microsoft has become bloated, slow, and unresponsive, while Google poaches its best employees — which unintentionally became a great segway to Microsoft's reorganization announcement.

A constant theme in HCI and computer-supported cooperative work (CSCW) is how hard it is to get a group of people to adopt and support new technology — being technically superior is not nearly enough. One good example, interestingly enough, is in the area of web application frameworks.

For example, in my favorite language Python, there are a bajillion web frameworks but no clear leader. Meanwhile, one open source web application framework written in Ruby has been getting a lot of buzz lately. The users of Ruby on Rails rave about its ease of use and simplicity. This is causing some consternation in the Python community, to the point that some are creating a clone of Rails in Python called Subway.

But simply copying the framework itself won’t generate the same excitement. There are other reasons Ruby on Rails is getting so much attention. The creators of RoR have evangelized it very effectively and have created good documentation so that others can jump in. Also, the library was extracted from an existing application, so the creators had a real sense for what was useful and what wasn’t. It reminds me of Papier-Mâché, a toolkit for creating tangible user interfaces by Scott Klemmer, who designed and implemented two tangible UI apps before designing the toolkit.

However, all is not lost in Pythonland. Thanks to Robert Scoble I just found out about a Python web framework that seems to hold great promise. Django was also extracted from an existing application, and its creators seem to understand the importance of good marketing and documentation. I’m hoping it succeeds.

Normally I program in Java, but recently I needed to write a quick program, and I turned to my favorite language for such tasks, Python. I hadn’t used Python for a while, so I’d forgotten how much I like the language — terse, clean syntax, and an elegant design.

But I’m still looking for a good IDE for writing Python programs in Windows — a text editor and the command line just don’t cut it for me. Currently, I’m keeping my eye on four environments. Two of them, DrPython and ActiveGrid IDE, are standalone, and the other two, Pydev and TruStudio, are built on Eclipse, which I use for Java programming.

I also came across a free text editor called PSPad. While I’m a fan of TextPad, you can never know too many text editors.

Next Page »