- We design and build extraordinary applications for companies looking to make the next great idea a reality.
- learn more
Mash note: Remember the Milk
You've got to love a Web 2.0 startup manned by a dev team of 2 that manages to add every feature on your wish list just before said feature's omission really starts to bug you. That's the case with me and Remember the Milk, a to-do-list webapp developed by an Australian company and supplemented by awesome new features with astonishing regularity.
Although they're a commercial entity, they've got a beta API that's allowed the development of a handful of really cool mash-ups. They've had iCal integration and a gCal plug-in for ages. They got on the Twitter bandwagon really early. They were one of the first non-Google companies to port their application offline with Gears. Last but not least, they've got a powerful (though still not perfect) user interface. (More on that later.)
A little background: I've been an obsessive to-do-lister since high school. GTD is my mantra. During my years at Microsoft-centric companies, I used Outlook to manage my entire life. But these days I find myself on Windows, 'nix and OS X machines in disparate locations for hours or days at a time. A webapp is clearly the only way to go for my to-do needs. But after years as an Outlook power user, I need something that will slice and dice my many lists (work, play, home, shopping, whatever) with exacting precision.
I gave Apple's iCal a shot, but its list functionality was way too primitive. I need multiple lists, categories, tags, flexible sort criteria - you get the picture. Ta-Da Lists from 37signals was even more stripped-down than iCal - plus I found its interface surprisingly clunky for something developed by a well-regarded Ajax shop. I thought about todo.txt, but I'm not enough of a command-line purist to completely abandon the GUI - even after years of suffering through Outlook's hideous hidden menus. Then, about a year ago, I stumbled on Frank Gruber's Do More: Online To Do Lists Compared. I didn't agree with his conclusions, but at least he gave me several more options to explore. Luckily for me, Remember the Milk was the first one I tried.
There's a lot to love about RTM, especially its UI, so just let me gush for a minute.
- Flexible organization: You can create multiple tabbed lists, apply arbitrary tags to your tasks, and create saved searches based on any criteria.
- Keyboard navigation: Except for a few advanced functions, such as moving items from one list to another, you can do almost anything from the keyboard. Create tasks, set priorities and due dates, apply tags, edit multiple items ... most functions take only a single keystroke.
- Natural language entry: You can set due dates and repeat intervals using some pretty flexible natural language. It ain't perfect, but with a little training the syntax becomes second nature.
- SMS, IM and email reminders: The service can nag you quite effectively via a wide range of communication protocols.
- Email, gCal, Atom and Twitter integration: You can create tasks or lists of tasks using a special email address; add or edit tasks directly from gCal and Yahoo plug-ins; and use Twitter or Atom as syndication services. The public API means that mash-ups and cross-pollination will only proliferate.
- Built-in collaboration capabilities: There are a host of features dedicated to assigning, sharing and collaborating on tasks.
- Serious accessibility: The main app is fast, powerful Ajax all the way, but the mobile version works just as well in a variety of more specialized user-agents.
There are a few things to hate:
- Poor multi-list view: The main Overview page list all of your tasks that are due, overdue or due tomorrow regardless of which list they're on. But it separates the Today, Tomorrow and Overdue tasks into separate tabs. The gCal plug-in does a much better job of showing all of your most important uncompleted tasks in a single, unified view.
- Recurring task weirdness: Delete a completed instance of a recurring task, and you've just deleted the master version of that task. After any previously spawned instances are completed, the task will no longer recur. This is a very strange user experience, especially for folks who like to purge their completed tasks every once in a while.
- Poor sortability:
Tasks are sorted by their priority. Period. This shortcoming doesn't account for the fact that a low-priority task that's a week overdue is probably a high-priority task by now.
See the strikethrough text above to see exactly what I meant about the RTM team rolling out your must-have features before the lack thereof becomes too annoying. I've been dying for flexible sortability on RTM since I started using it. But no sooner did I start this post than I noticed an RTM blog post announcing just such a feature. It would be nice if you could set your sort preference globally as well as one list at a time, but that's a minor quibble.
So what can we learn from my ramblings, besides the fact that I really, really love this platform? I think there are a few powerful lessons for developers of any RIA:
- You don't have to sacrifice brawn for the sake of simplicity: Pleasing power users doesn't mean hopelessly confusing everybody else - at least not with smart UxD. (Apple could stand to learn that lesson, but I digress.)
- You don't have to sacrifice accessibility in the name of Ajax: Let your mobile app function as your accessible app, too.
- You don't have to fear Web 2.0 trendiness: Rapid adoption of emerging protocols such as Twitter can only help you differentiate your product and find new users.
- You don't have to lock your app down, even if you're a commercial enterprise: Public APIs - and the cross-pollination they enable - can only strengthen your foothold in the marketplace. In our Googlized world, this one's kind of a *duh*, but it bears repeating.
- You don't have to hide from your users: An active blog and well-maintained user forums are far more powerful marketing tools than terse release notes on Google Code.
I can only speculate as to the future of GTD's business model or exit strategy. Their logo carries the ubiquitous "Beta" tag, and their pages carry no ads. Where's the funding? It seems like somebody's waiting to get snapped up by a big player....
Lord knows it would be nice to have the old Outlook/Palm OS quintet of email, calendar, contacts, notes and to-do lists available on a single web-based platform; personally, I would prefer that platform to be Google, though I can't really see them acquiring a start-up just for this one capability. Still, it would be a shame if a product as solid as Remember the Milk got lost in the shuffle or edged out by inferior offerings from bigger players. Only time will tell....
JavaFX - Another Ajax Killer
Everyone is trying to kill Ajax. Apollo, Project Flair, Silverlight, on and on and on...but..Ajax...just...won't...die. Sun is giving it another try with it's JavaFX.
JavaFX Script takes advantage of the Java Runtime Environment's (JRE) ubiquity across devices and enables creative professionals to begin building applications based on their current knowledge base. It also uses Java technology's "write once, run anywhere" capability to help realize a future where consumers can access content whenever and wherever on any Java-powered device. JavaFX applications will run on JavaFX Mobile, Sun's software system for mobile devices also previewed at JavaOne, as well as desktop browsers (see separate announcement).
I think it must be something about Silicon Valley. I've been at enough events out there to know that people actually talk like this (as opposed to writing press releases like this). The doodoo gets especially deep around the time of JavaOne.
What is at the heart of JavaFX? A new scripting language "based on Java." Hmmmmm, dynamic languages good, statically typed languages bad. I guess when Richard Stallman embedded Lisp in GNU Emacs, he really started a trend.
Scripting is all the rage these days, with Groovy, BeanShell, Javascript and others filling an important niche. But I have to feel it's just a fad. There are good reasons to use statically typed languages, especially when developing large, complex systems over long periods of time. I just hope this doesn't mean we are going into a scripting craze ("We are so past Java and C#...") only to have the pendulum swing the other way ("We tried writing our system in Perl...never again. No scripting here.").
More on the bestiary of Ajax Killers later.
Topics: Ajax Products, Announcement
Is It Time To Stop Pushing the Browser Around?
In my first ever real grownup consulting engagement, back in 1990, I was called in to improve the data cleaning operations of a small testing company. This was back in the days when even companies heavily dependent on computer technology relied on a single "computer guy." This particular guy had rigged up a data cleaning system on a set of state-of-the-art 80386 machines. He had set up a folding table in one corner of the office ("Machine room? What's a machine room?") and taped "Do not touch!!!" signs to the monitors. The guy would take the tapes containing maybe 20-30MB of data and run then for 6 days through his cleaning environment. If something blew up or a new defect was identified in the source data, boom! another 6 days.
When I probed a little bit about what he was using to perform this magic, I found out, to my horror, that he had implemented the whole data cleaning shebang as a set of WordPerfect macros! Ouch! Talk about the wrong tool. I recommended they buy a little Sparcstation (sorry, x86 unix was kind of expensive and unreliable back then) and solved their problem with a modest amount of Perl4.'
So what does WordPerfect have to do with Javascript in the Browser? As people have been testing the limits of Ajax, we see more sophisticated SOA and messaging concepts and abstractions making their way into the picture. Coach Wei, a clever and insightful man, has an article up now on the Nexaweb's IMB (Internet Messaging Bus).

It's a clever concept of how to introduce MOM/ESB into a browser environment (Nexaweb also supports Java and Desktop clients, as you can see in the article above). I've implemented a number of distributed apps using JMS as well as a few using ESB's such as WebMethods, Tibco and Mule. It's an eleagant way to design apps, but requires a somewhat different approach and outlook than OOP (not that you can't include OO software in the mix as a component). See Enterprise SOA: Service-Oriented Architecture Best Practices for a pretty good read on what's involved in building SOA systems.
I checked out a few of the applications mentioned in his article, and they we slick, responsive, elegant. Nice work by the Nexaweb folks.
So again, what does this have to do with WordPerfect macros? Using a technology in an inappropriate way will come to bite you. All that infrastructure and encapsulation and tunneling comes at a price, espectially in a still somewhat wobbly execution environment like Javascript on the browser. Sure enough, those Nexaweb apps start out nice, but over time start to peg my CPU at 100% on both IE and Firefox. Don't even think of running more than one of these apps on your machine at one time. Maybe you can put a "Do Not Touch!!!" graphic over all of the other application icons on your desktop.
I don't think this is Nexaweb's fault. Javascript in the browser still has a long way to come before you can write truly reliable, complex and layered systems.
Further, lots of these boundary pushing technologies make use of characteristics of the browser that are more side-effects than features. Look at Comet, for example. Common Comet techniques such as keeping the response from the server to the browser open (in an Iframe, etc.) or streaming a multipart HTTP message via XHR don't work the same in all browsers, are not part of any browser requirements, and could change with the next release. This is no way to implement serious applications.
Now I'm not saying that Comet is a bad idea, or that Nexaweb is peddling SOA/MOM junkware. Quite the contrary. I like what I see and hope to see more. What I object to is that all of this is being done via the back door. If we are going to implement fancy communication layers in the browser, let's do it by the front door, by requesting a more robust Javascript execution environment perhaps with threading and better networking control built into the browser.
Today's browsers are not that far removed from the Netscape Navigator with Livescript (later renamed to Javascript) that I used in 1995 to toggle a few heirarchical checkboxes. We are asking them to do things they were not designed to do. As we push the envelope of what a web app is and can do, we should do so in a smart way. Otherwise we are just like that guy who took WordPerfect macros -- a tool designed to perform simple textual and menu operations -- and wrote an ETL system. Yes, it can be done, but why would you?
Topics: Ajax Development, Ajax Products, COMET, SOA
Application Watch - Jotlet
OK, maybe there are too many Ajax calendars out there. Jotlet stands apart, in my opinion, in terms of it's usability and simplicity. With Ajax, there is the temptation to introduce too many whizbang behaviors, and this Calendar doesn't fall into that trap. The interface is simple and uncluttered.
It's missing some features, like exporting to Outlook, and I'm not necessarily recommending this calendar over Google, etc.. I'm offering it as an object lesson in how less is more in interfaces.
Topics: Ajax Products
Google Pitching Services to Small and Medium Sized Businesses
This has been such a rolling press release that I'm not sure it qualifies as news anymore, but it's in the New York Times so it must be news. Google announced today that it is providing a set of hosted applications for small to medium sized businesses. The beta service will be free for now, and the premium service is under development.
What comes with the application suite? From the overview FAQ:
You can currently choose from Google Mail, Google Talk, Google Calendar, and Google Page Creator. Also, you'll soon be able to add a Personalized Start Page for your domain.
I think everyone knew that this was coming, and there's been speculation about Google offering its office-like applications -- including Writely and Spreadsheet -- as a pay service, for several months. The last two paragraphs of the Times article, however, point toward these applications being offered as appliance-based software to larger companies.
Providing technology to corporations and large organizations accounts for less than 2 percent of Google's revenue, but the business is increasingly critical, Mr. Girouard said. Most of that involves selling "server appliances," large computers that take on the job of conducting searches of large databases and company records.
"We are a very small part of Google's overall business, but we're growing quickly," he said.
If Google starts to cut into Microsoft's market share, this could prove the software as a service (SaaS) business model and might trigger a land rush by online companies into areas heretofore the exclusive domain of desktop application vendors.
Update: just saw this Red Herring article on the 17 competitors to MS Office. A thorough article that covers more than just the usual handful of Web 2.0 startups, it is well worth reading if for nothing else than these sorts of heartwarming quotes:
WriteBoard can seem almost bare-bones in its features, but Mr. Fried is betting on simplicity. "The problem with the traditional software industry is that they have to bloat their products," he said. "They have to add more and more so they can get more money out of their users next year, but we don't want to follow that model."
Yes. Bring back the simple 64k application. My Commodore 64 is still somewhere in a closet in my parents' house.
Topics: Ajax Applications, Ajax Products, Google, SaaS
Blummy - Bookmarklets with A Whole Lot of Ajax
Another way to add Ajax functionality to a third party web page is a bookmarklet -- little snippets of Javascript that can modify the current page. Blummy takes this concept a step farther by allowing you to combine many different bookmarklets into a single dropdown, saving precious space on your browser toolbar.
You can drag and drop "blumlets," the individual bookmarklets that Blummy aggregates, into your drop down via the blummy.You can even write your own blumlets, if the madness takes you. As one might expect, many of the blumlets available are one for social bookmarking sites.All of your configuration information is stored with the blummy service, so in theory you can carry your blummy configuration to a different browser.
Topics: Ajax Products, BJAX
Application Watch - Noovo Home Page Editor
Noovo has a preview of their new Ajax home page editor available. From their blog:
Noovo is an Ajax-based web application for homepage editing and we will also provide hosted homepage service as well. During the demo phase, only main features of editor are available. You may get a hint as to what kind of service we have in product plan if you look at the top menu. Those features for hosted homepage service will be introduced here before long.
The fact that there are no user interface or usability guidelines in the Ajax world is apparent from the claustrophobic toolbar and somewhat unusual behavior of some of the controls. So, powerful but clunky.
Topics: Ajax Products, User Experience
Application Watch - Kool, a Meebo IM Competitor
Via TechCrunch, it's getting crowded in some of these AJAX application categories. For a while, Meebo was the sole player in the AJAX IM arena, with only local chat apps playing at its ankles. No longer. A new competitor is entering the fray: Kool IM. While I was napping, a number of others have also crept up on Meebo:
In addition to Silicon Valley based Meebo and Amsterdam based eBuddy, ILoveIM, Germany based Mabber and other competitors are out there vying for the same user base. Luckily, users tend to rack up a lot of time (if not page views) with the service, allowing the companies to generate reasonable revenue from advertising - eBuddy claims to be profitable.
"Too early is the same as wrong," as the old Venture Capital maxim goes. I guess all these competitors are validating Meebo's business model, just as they're getting ready to eat it's lunch.
Topics: Ajax Products
RSS and Social Bookmarking - The Drosophila of Web 2.0
Via Micro Persuasion, Earthlink has launched an RSS reader and a social bookmarking app. Steve correctly points out that both Earthlink and AOL cannot be left behind when their users are leaking to other sites. Still, is a me too strategy sufficient in the fast moving world of Web 2.0? Has Google changed the name of the game from "distribution and content" to "applications, baby!"?
Topics: Ajax Products, Web 2.0
Top 10 AJAX Applications - How Have Things Changed?
"Too early is the same thing as wrong." -- Old Venture Capitalist Proverb
Most Venture Capitalist (VC) proverbs are actually stolen from investment banking, but I think this one is actually home grown. (Full disclosure: my wife is a VC and I count many VC's among my friends and acquaintances.) I thought it would be instructive and amusing to look at the predictions of one VC and see if he was right, too early, or just plain wrong.
Dan Grossman of Venrock was kind enought to publish a top ten list of AJAX apps last September. I would classify the picks in his list into four categories:
- More or less useless "Oh, cool, it's AJAX type apps." Amazon Zuggest is probably foremost among them, but the periodic table is also showing it's age. Any kid with Dojo and a few minutes on their hands could whip that up now.
- Desktop style applications that are enabled by AJAX technology. These are Kiko, Writely and Time Tracker. Of course Google's Calendar app has turned off the oxygen for Kiko. Look for Writely and it's pygmy competitors to suffer the same fate shortly.
- Improvements on existing apps -- portals, news readers, etc. -- through AJAX technology. Everyone has a portal and a news reader, so slathering on the AJAX was pretty easy. Now everyone has an AJAX portal and RSS reader -- Pageflakes and Bloglines come to mind.
- Proto Web 2.0 applications. These combine the usability enhancements of AJAX with collaboration and network effects. Backpack is probably the best of these. I'm not sure whether to put Del.icio.us Director into this category or not. Social bookmarking sites like Digg certainly seem to dominate this category right now.
I think if I put together a list of my top ten AJAX applications, two things would be true. First, at least four of those applications would be from Google. Second, in one years time, at least four of those applications would still be from Google, but everything else on the list would have changed. Maybe "AJAX" is not a specific enough category on which to base a top 10 list. (Should we say Web 2.0 and then proceed to define what Web 2.0 means?)
Thanks to Dan for sticking out his neck and making the list. I'm not sure any of these applications other than Backpack make it onto the list now. What does your list look like?
Topics: Ajax Products, Editorial
Eyespot - AJAX App for Video Editing
We've see AJAX bringing typical desktop applications like digital image editing (ala Photoshop) to the web. Video editing may seem like an upload too far, but as long as you keep the upload clips small, you can do some useful things with the Beta release of Eyespot. You can upload your clips, tag them, search for other clips. Trim them, assemble them via drag and drop with other clips into a timeline, apply effects and transitions, add a soundtrack and add title slides. You won't be able to edit The Godfather with this thing, but for some quick editing of a camera phone clip, it does the trick.
The application is a mix of multi-page and single-page, i.e., each major function -- selecting a clip, editing a clip, etc. -- is a seperate page, while actions within that page happen in a single-page AJAX manner. Under the hood, the application seems to be based on Rico, a venerable AJAX framework that I've neglected so far (I guess I figured everyone already knew about it).
Topics: Ajax Products, Video
Firefox Extensions and AJAX - A Model for Web 2.0?
Let's face it, cross site AJAX is a real pain. If you're going to provide your components as a service, sort of like Google maps, you're task is not impossible yet still challenging. If you want to mash up your app with other services at the browser level, you've got to proxy those services. Put any way, it's a pain. How to simplify creating truly powerful, cross-site AJAX apps?
Greasemonkey showed the way, demonstrating how you could manipulate pages with Javascript. Book Burro was one of the first AJAX/Greasemonkey hybrids that allowed you to search for a book at your favorite online book merchant, then click on a semi-transparent drop down menu and see book prices at competing retailers. The magic of AJAX! Book Burro has since made the transition from Greasemonkey script to Firefox extension in its own right.
Another example of this curious Firefox Extension/AJAX hybrid caught my eye the other day: MyStickies. This extension will allow you to insert AJAX-DIV stickies onto any web page. The extension handles this insertion and also includes a Javascript library via a Javascript file from mystickies.com and another via chrome://mystickies/ for the behavior.
The sticky location is persisted to the mystickies site where you can also use a webapp to search, manage, etc., your stickies. It's a direct manipulation bookmark that doesn't reside just on your local computer.
Now I happen to think mystickies is pretty cool, especially if they implement some of the features on their roadmaps, like sticky sharing (how web2.0!). But what interests me here is the application architecture. Firefox Extension plus AJAX = a service that can be applied across other web sites. There is clearly a limit to this opportunity -- you have to really like a service and truly, how many of us are willing to keep 20 extensions running, each of which hogs a piece of browser toolbar realestate? Many of these players are already planning IE, Safari and Opera ports.
What shall we call this thing? Browser Extensions and AJAX? BEJAX?
Topics: Ajax Products, Firefox Extensions, Greasemonkey, Web 2.0
More Killer App - OpenRecord, a Wiki/Spreadsheet
I've been promoting the idea of the collaborative spreadsheet as the killer app for AJAX for a while now. First there was WikiCalc, then Google spreadsheet. The folks over at the Dojo Foundation -- yes, the Dojo Toolkit folks -- have been working on a Wiki app that fits into this category as well. From their about page:
The goal of the project is to create an open source software product. The product we're making is a wiki engine, but where most wiki engines are geared toward pages of text, OpenRecord is geared toward loosely-structured database content.
It's still in an early development stage, but you can take a peek at some prototypes here. Click around to the various pages and try adding and editing cells and rows.
Speaking from experience, these types of applications will need professional support if they are to make a dent in the corporate world. Look for the document and knowledge management folks (OpenText, EMC/Documentum, etc.) to start introducing these "Office Lite" functions in their products.
GWT Libraries Released - XML, SOAP, Crypto, Amazon, etc.
Openfount has released a beta of a set of libraries and tools for use with GWT. The web services parts of these work in conjunction with their queued server. This queued server basically acts as a proxy for XMLHttpRequest's. So, if you want to access web services from Amazon but you're loading your Javascript from another server, you can proxy the request through your server. There's a bit more to it, but that's the jist of it.
Looking at their Open Source license, I'm not sure it smells that good, but IANAL.
Update 1: I've had a closer look and have even more second (or should I say third) thoughts on this package.
Topics: Ajax Components, Ajax Frameworks, Ajax Products, Ajax Widgets, Frameworks, GWT, Open Source
Open Laszlo DHTML Milestone
Ever since Laszlo Systems announced that they would be targeting DHTML as well as Flash, I've been peeking into their source repository from time to time, hoping to catch a glimpse of the elusive "Legals" (horrible name), the runtime that supports DHTML. Well, this past Thursday, on the Open Laszlo Project blog, they announced a milestone release of this mythical beast. From the entry:
Late last week, the OpenLaszlo project reached a huge milestone: release of the first source snapshot of our multiple-runtimes architecture, code named "Legals". The purpose of this snapshot is to deliver infrastructure, tools, and architecture sufficient to allow broad community participation in the project.
We began Legals back in January because we felt it was finally time to invest in OpenLaszlo's potential as a multi-runtime application framework. Adobe had released an initial beta of Flash 9 (then called Flash 8.5), and it was clear to us that it would be essentially an entirely new VM: new bytecode set, many improvements to the ActionScript language, and substantially revised APIs. In order to support Flash 9 we would need to build a new compiler backend and new runtime libraries.
If you're viewing an lzx file from the OpenLaszlo server, you'll need to tack a parameter onto it to get it to display the DHTML, i.e. test.lzx?lzr=dhtml.
So far, I've only been able to get it to display two text components. Adding in a button or anything else gives you a big nothing. Definitely, as it says, a work in progress on the DHTML side.
Topics: Ajax Frameworks, Ajax Products, Ajax Tools, Lazlo, Open Source
About Pathfinder
Recent
- Implementing linked multiselects with jQuery, LiveQuery, and Low Pro: Part 1: Requirements and interaction design
- Many Varied Components, or… Multi Variable Complexity, or… Mainly Vanilla Coding
- Custom Flex 3 Lightweight Preloader with source code
- Mass Assigning Inheritance Column Values for ActiveRecord STI with Rails
- Working effectively as a team of one: Five tips for front-end developers on Agile teams
- Ruby on Rails with Windows - How I made it work
- Project Website Part 5: Morph in 11 steps or so
- Papervision3D 2.0 (Great White) in Flex 3 (Part II & III combined) with source code
- What’s In Your Dock?
- Why Chicago is Rails-town, USA
Archives
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
- January 2007
- December 2006
- November 2006
- October 2006
- September 2006
- August 2006
- July 2006
- June 2006
- May 2006
- April 2006
- March 2006





