Articles on Using Web Applications

Creeping Success of Web Services

If my personal behavior is any indication, things are looking up for subscription web services.

When I went out on my own last fall, I decided to give various hosted services a try. I used mostly the free trial accounts. For the services I have stuck with, I have gradually hit the limits of the free plans, and in some cases, of the low-cost plans. I’m spending far more on these services than I ever thought.

Basecamp for to-do lists, notes, and reference documents

I’m now paying $49/month for Basecamp, and using it to coordinate all my projects. If you had asked me six months ago if I would pay $600 a year for a service like this, I would have said “no way.” But as I came to depend on the service more and more, I needed the capabilities of the next tier, and while I still find the price a little painful, I don’t want to do without it.

Everything I’m working on, whether a customer project, an internal business project, or even a personal or hobby project, gets a Basecamp project. I use the to-do lists extensively to keep track of what I need to do, and the writeboards to store notes and reference information related to the project. As simple as Basecamp is, there’s still features there I’m not using at all (like milestones). In a few cases, I’m using it to collaborate with others, but mostly I’m using it as a personal tool. This isn’t quite how 37signals envisioned it being used, I don’t think, but I find it very useful.

Freshbooks for client financial interactions

The other service I’ve come to depend on is FreshBooks. I thought I would get by with the free service, but I quickly hit its limits. I’m now paying $14/month.

FreshBooks takes care of all my financial interactions with my clients. I use it to track my time, send invoices, and track payments. Clients can log in and see the time tracking and review current and past invoices. They recently added a feature for estimates and quotes, which I expect to begin using soon. And for my hosting clients, FreshBooks automatically sends monthly invoices. This is a great time-saver and well worth the monthly fee.

Google for email and calendar

I’ve come to depend on Google not only for my email, but also for my calendar. Having a shared calendar for our family has proven to be extremely useful. I’m still getting this for free; Google now offers the option of paying $50/year/user, but I haven’t seen any compelling reason to do so. This illustrates the perils of making the free service too attractive—it lets you build a large customer base, but it can be hard to convert them to paying customers. In Google’s case, this is ok, since they can monetize the email, at least, with advertising.

Next up: offline access

Overall, I’ve been very happy using hosted services. I go back and forth between a few different computers, and it is very helpful having whatever I need wherever I am. And having a single place where all my notes go makes it a lot easier to keep track of things.

My one frustration with this is the lack of ofliine access. Sometimes I’m on a plane, or (more commonly for me) in a location without Internet access. Sometimes the services are down. Sometimes my Internet connection is down. I would really like to have all of my hosted information seamlessly synchronized to each computer, so I could access it offline when needed. I don’t expect it to be long before this capability is common: consider, for example, Google Gears, Joyent’s Slingshot, and Adobe’s AIR (Adobe Integrated Runtime, formerly known as Apollo).

Keeping Track of Stuff

One of the curses of the computer age, especially for those of us who do development work, is the vast amount of detail that one has to keep track of. Among other things, there’s:

  • The sites I like to read regularly
  • The sites where there’s some tidbit that I just might want to find again some time
  • The usernames and passwords to the dozens of sites I have accounts on
  • My to-do lists for various projects
  • Commands that I have a hard time remembering for administering my Linux hosting boxes
  • Tips on something or other than someone gave me that I mean to follow up on someday

... and so on. I used to deal with all this with a combination of Outlook notes, word documents, post-its, and my increasingly unreliable memory. This all worked reasonably well as long as I stuck to one notebook machine, and one desk, as the center of my life.

I’ve been moving away from that approach, so I can be more mobile and use multiple machines without worrying about syncing. I’ve found a few tools that have been very helpful.

For sites I want to read regularly, RSS feeds of course are the answer. Add the feed to my feed reader, and the content comes to me automatically. (Of course, this changes the problem to one of too much stuff to read, but that’s inevitable.) I’m using FeedDemon as my feed reader, sync’d to a NewsGator Online account. This setup isn’t free ($29.95 for FeedDemon, plus $19.95 per year if you want the premium version of the online service), but I like the fact that I can read feeds offline or online and everything stays sync’d.

For those web sites I just want to remember in case I want to come back to them some time, I’m using del.icio.us for all my bookmarks. I use their Firefox plugin, which gives me one-click access to either add a bookmark or view my bookmarks. And now it doesn’t matter what browser I’m using, or what system I’m on—I always have the same bookmarks available.

For everything else, I’ve found 37Signals’ Backpack invaluable. I keep to-do lists for various personal projects there, and I use their “writeboards” (online documents) to keep all my miscellaneous notes. I’ve been training myself to always keep my notes there, so I always know where to look for them. I started off with one writeboard will all sorts of miscellaneous notes, and as it grew, I split it up and now have about a dozen different ones. There’s lots more that Backpack can do that I haven’t gotten to using yet. You can start with a free account, but I quickly hit its limit and splurged for the $9/month premium version.

I struggled with whether or not it was reasonable to keep a list of usernames and passwords on a writeboard. It is really convenient, but I’m sure security-minded folks would frown on it. I ended up with a compromise: I made up my own personal secret code, so what I record on the writeboard is not actual passwords, but a coded version that is easy for me to translate to the real thing but hopefully not so easy for someone who finds this data. I suspect this still isn’t really good enough; I’d prefer it if the information was encrypted on the Backpack server. One thing the premium account gives me is SSL access, so I feel a little more comfortable with some of the sensitive information I’m storing there.

For projects that involve multiple other people, I’m using Basecamp, also from 37Signals. I use it much like I use Backpack, but it allows me to manage a list of other people who have access to individual projects.

Do you have solutions to these problems that you’re happy with? Please leave a comment and share your approach.

Better Photo Sharing Solutions

Photo sharing has proven to be one of the Internet’s most common applications. Indeed, the ability to easily share photos electronically is a key driver behind the success of digital cameras. In the past five years, dozens of photo sharing web sites and other sharing services have come and, in many cases, gone. Yet I still don’t find any service that I’ve used entirely satisfying.

The first-generation photo sites, such as Zing and PhotoPoint, had a simple model: upload photos and invite people to view them. Kodak, Shutterfly, Snapfish, Smugmug, and many others continue with this approach. They have survived, while Zing and PhotoPoint did not, by having better monetization strategies: either they are really printing services, with electronic sharing being incidental, or they have become paid subscription services.

But for me, and I believe for many consumers, all of these Web-centric solutions suffer from a clumsiness that makes them unsatisfying and causes me to share much less than I would like. At the heart of the problem is the complete disconnect between the way I manage my photos on my PC, and how I manage them online. The only way to achieve an elegant, simple solution is to eliminate this dichotomy.

There’s three ways one might approach this:

  • Make the web central. Upload all your photos, do all your organizing online, and access photos on the web whenever you want to do anything with them.
  • Make the PC central, and use peer-to-peer access to enable sharing directly from the PC.
  • Make the PC central, with the web being an automatic, partial mirror of what is on the PC.

Pure Web-Centric Solutions Need Much More Bandwidth

I believe the first approach will not succeed, at least in the near term, because it simply takes too long to move significant numbers of photos up to the web. There are other challenges as well, such as the difficulty of achieving a high-quality user experience in a web-based application involving large files, but the upload bandwidth is the most fundamental limitation.

Broadband is becoming widespread, but the vast majority of broadband connections have relatively modest upload speeds. There’s just no way I’m going to put up with the latency of uploading photos to the web before I can do things with them.

Peer-to-Peer is Not the Answer

Some companies have advocated peer-to-peer sharing as the answer. This has its attractions. I don’t have to spend time uploading, I don’t have to choose in advance which subset to share, and, at least if I organize using the file system, the organizing work I do on the PC is visible over the web. There are some P2P photo sharing services that have seen some success, such as Google/Picasa’s Hello and H2ST’s Pixpo.

However, I don’t believe that P2P is the way to go for most photo sharing, for several reasons:

  • I don’t want to depend on my home PC being on and connected all the time.
  • I don’t want my PC spending cycles and using bandwidth for photo sharing when I’m performing other tasks.
  • I don’t want the recipient’s viewing experience to be limited by the upstream bandwidth of my internet connection.

There’s a reason I host my web sites at a hosting company, and not on a computer in my home or office: I want someone who is in the business of doing so to keep the server always running and supplied with ample bandwidth. For the same reason, I want photos I’m sharing to be hosted elsewhere.

Having a server “in the cloud” provides many advantages. Not only does it offer faster, more reliable connectivity, it can also act as an offsite backup. It can create photo renditions at various resolutions, providing each viewer a size optimized for their needs. It can provide a link to photo printing services. And it can serve as a collaboration hub when many people take photos of one event. (All of these things are possible in a P2P arrangement but more practical with a hosted solution.)

P2P has been a great success for sharing commercial content, but there’s two factors behind this success that don’t apply to most photo sharing. First, with commercial content, there’s thousands of copies of every file, so you aren’t dependent on any one computer being online. And the real reason P2P has seen such spectacular success is that it is a superb way to illegally share copyrighted content while obscuring who is responsible.

My Pick: PC-Centric, Mirrored Online

So I want my primary photo repository to be local, and the web to be a selective mirror. I don’t want to explicitly upload photos, I don’t want to organize on the web separately from the organization work I do locally, and I want all the metadata (such as captions) that I enter locally to be visible on the web. I want all the pictures I care about to appear magically in my web repository, for my use, but I want them kept private unless I’ve explicitly enabled them to be shared.

For most photos, the full resolution doesn’t need to be online, but in some cases I do want the original online, either for archiving or so others can make large prints. When I’ve enabled it, I want an easy way for others to order prints, and I want them to be able to download high-resolution files to print at home.

When I create a slideshow or photo book on my PC, I want it to be available online without additional work.

I some cases, I want others to be able to add photos to my collection. For my kids’ school events, for example, what I want is not just my pictures online, but on online location for everyone’s pictures. I want to be able to make photo books, and enable others to make photos books, and anyone involved to in the group to be able to order them. SnapJot is one service that does this, but it lacks some of the other critical features for my needs.

I’m not aware of any solution available today that meets my needs. As a result, I share fewer photos than I would like, and for those that I do share I endure a process that is more cumbersome than I want.

There are some interesting options appearing from companies such as Sharpcast. I think the problems are entirely solvable, but it requires a company that can craft a solution that unifies the desktop and web experience, and that can attract a large enough customer base to justify the investment. Photo sharing companies have generally been web-centric with little desktop software capability. Desktop software companies tend to be weak on the web side. And startups have a big challenge reaching enough customers. But the opportunity remains for a much better solution than exists today.

So Why Don’t I Do It?

I do believe I know what the right solution looks like. I’ve spent seven years in the digital photo domain looking deeply at all these issues. And I am looking at opportunities to start new web-based companies. But I’m not planning to chase this opportunity.

Why not? There’s just too much competition, too much noise, and it’s too hard to attract significant numbers of customers to a new offering in this space, no matter how cool it may be. One thing the Fotiva experience taught me is that a superior product idea is insufficient to create a good business.

I believe the company that wins in this space will be one that already has a great brand and lots of customers. It could be a well-funded startup with incredible marketing talent, but I think it is more likely to be an existing player. Adobe is an obvious candidate, if only it could get out of its own way. Microsoft is certainly a possibility. Apple is as well, if it put more focus on cross-platform software. Google and Yahoo have the web infrastructure, to be sure, but they tend to undervalue the desktop client piece.

Do you use a service that solves these problems? I’d love to hear about it.

Inspirations: Getting Real

A little more than a year ago, I heard Jason Fried’s “Getting Real” talk at the second Web 2.0 conference. For me, it was the most valuable part of the event, and more inspirational than anything at this year’s Web 2.0 summit. Then I read the Getting Real book, and it started me on the path to a career change. (Originally sold as a PDF book, you can now buy it that way, or as a printed book, or read it free online.)

Getting Real provided a vivid description of the way I wanted to build products, even though I couldn’t have elucidated it nearly so well—and it also put into stark relief what felt so limiting about the way Adobe builds products. It inspired me to believe that I could build products on my own, that I didn’t need to raise lots of money, and that in many ways I could accomplish more, and certainly have more fun, working with one or two partners on my own that I could at Adobe.

If you’ve been in the web applications world, 37signals and Getting Real are probably old news to you, and you can stop reading now. For the rest of you, I’ll provide a quick summary.

There’s two central, revolutionary tenets of the Getting Real philosophy:

  • Minimize everything that isn’t the real product. Forget specs, MRDs, and focus groups. Don’t try to understand the whole problem or design a comprehensive solution. Build the simplest thing that might work, for a problem that you understand. Get people using it, listen to their feedback, watch what they do, and iterate.
  • Less is more. Provide fewer features. Write less code. Do less. Most of what you’d do that is beyond the core not only doesn’t matter much, it gets in the way.

This is not academic advise; it is a philosophy that has led to several successful products at 37signals, including Basecamp, Backpack, and Campfire. There’s free trials of all of these hosted apps available, so you can see for yourself what this design philosophy results in. The apps are sparse, and occasionally I really wish for a feature that isn’t there, but I’ve still found them invaluable. And the learning curve is measured in minutes, not days.

If you care about building better software, especially for web applications, read this book. But if you work for a big company, beware: it could end your career there.

Seminar on Adobe's upcoming Apollo

Adobe has begun talking about a new application platform they’re developing, called Apollo. This is a runtime environment that supports Flash, Flex, HTML, and PDF, and will enable you to build apps using Web technologies that can also be deployed as desktop apps. It’s early yet but this promises to be an interesting platform. So far there’s not a great deal of info available, but there’s a free online seminar coming up next Tuesday (11/28) that should be a good opportunity to learn about it.

Online registration

Sites built with Ruby on Rails

Update: I published this quick list some time ago, and I’ve noticed it continues to get a fair amount of traffic. It is woefully incomplete, and new sites are being added daily. There’s a great site that is devoted to nothing but listing other Rails sites, and I highly recommend it as a superior alternative to this list: HappyCodr.

Here’s a partial list of sites built with Ruby on Rails, ranging from highly polished sites with hundreds of thousands of users to rough new sites that may have only dozens of users so far.

Please leave comments with others and I’ll extend and annotate this list over time.

Technorati:

The trouble with hosted apps

A central presumption behind hosted applications is that Internet connectivity is becoming universal. There are some obvious problems with this presumption, such as when you’re on an airplane, or when your home Internet connection is down.

But there can be problems, even in the big city. Ironically, at the Web 2.0 Summit conference this week, the demand for connectivity completely swamped the hotel’s and the conference’s ability to supply it with any reliability or speed. Inside the conference rooms, free wireless connectivity was sponsored by AOL, but often I couldn’t get connected at all, and when I could connect it was painfully slow and erratic. Even on a wired connection in my hotel room at the Palace, the throughput was reminiscent of dial-up days. Apparently having more than 1,000 people paying $3500 a head to be there wasn’t enough to pay for an adequate Internet feed for this connectivity-hungry group.

As Paul Saffo from Insitute for the Future quipped many years ago, never mistake a clear view for a short distance. It’s easy to believe that someday IP connectivity will be as common and reliable as electricity, but we’re sure not there yet.

Almost done with Outlook

I’ve been using Outlook for a long time, for email, calendar, contacts, and notes. (I realize this may immediately lower your estimation of me, but at each step of the way it seemed a sensible thing to do for one reason or another—most recently because of Adobe’s edict that ‘thou shalt use Outlook’.) Now that I’m on my own, and trying to embrace the idea of hosted applications and transparent use of multiple computers to access a single source of data in the cloud, I’m working on weaning myself. So far, it’s been modestly successful.

For email, I wasn’t satisfied with any of the webmail clients offered by my hosting company; they just seemed too clunky. Gmail was attractive, but I didn’t want to give up using my personal domain. Then along came Google Apps for Your Domain, and now I have the best of both worlds. I still have my own domain name, but Google hosts my mail and provides a Gmail interface. I’ve been using this for a few weeks now and it has been working quite well.

I expected to feel a big loss in the quality of the interaction, but I haven’t. The AJAX interface is pretty responsive, although I have seen it fail from time to time. I’ve also been accustomed to filing my mail in an array of hierarchical folders, and Gmail’s “archive and then search” approach at first seemed limited. But then I realized that since I’ve had desktop search on my PC, I’ve found it easier to use that than to sort through the folders anyway. So now I have essentially the same behavior, my PC doesn’t have to spend cycles indexing my mail, and I don’t have to file any of it.

There are some things I miss, though:

  • The Delete button (along with the Archive button and other controls) scrolls away when you scroll down a message. There’s another set at the bottom of the message, but for long messages, I find it a pain to have to scroll to get to the buttons. It would be nice if the buttons stayed put instead of scrolling away.
  • I enabled the shortcut keys and learned a few of them, which reduces the need to scroll to find the buttons. But there seems to be no shortcut key for Delete—an action I use often. Google seems to want you to archive instead (for which there is a shortcut key), but I get a lot of mail that I just don’t see a reason to archive. Why should I archive daily news updates or mailing list postings when there’s a much better archive readily available online?
  • The action I most frequently want to take when going through my mail is “delete and read the next message”. Since there’s no shortcut key for delete, this requires scrolling until the Delete button is visible, clicking the button (which returns you to the message list), and then clicking on the next message. I’d sure like to have a shortcut key that would do this.
  • There’s no support for embedding images in HTML email. I really miss this.
  • You can’t drag and drop a file from the file system into a message. You have to click Attach and then browse the file system, which I find to be slower.
  • Typing names doesn’t automatically look them up in the contact list. If it is an address I’ve sent to recently, it appears in the type-ahead pop-up list, which works fine. But if it isn’t in this list, I have to go to contacts, find the person, and then start the email again.

I’m sure that many, if not most, of these limitations will be fixed in time, and so far I can live with them. Perhaps the most fundamental limitation is the inability to do anything off-line. With Outlook, I could read mail, write messages to be queued for later sending, and search existing mail, even if I was on an airplane or otherwise without a network connection. If I end up traveling a lot, I may start using Gmail’s POP3 option and going back to a desktop client at these times.

For my calendar, I’ve switched to Google Calendar. So far, this is working well, and I haven’t found anything I miss about the Outlook calendar (other than the frequent opportunity to swear at my computer). I like the quick entry mode of Google calendar—you can type “Lunch November 15 at 12:00” and it will put it on your calendar. And I love being able to easily share my calendar with my wife.

The Outlook calendar as used at Adobe is a complete mess. It’s model of managing meeting invitations by sending messages back and forth, and then storing state information independently in each client, is a horrible idea and has caused no end of grief for hundreds of people there. Not only do you get a constant stream of calendar notices to which you have to respond, but the system is full of bugs (for example, sometimes marking the recipient’s time as busy even when a calendar event invitation says to mark it as free) and limitations (e.g., meetings you’ve declined are gone forever and there’s no easy way to change your mind). This is an application that should be centralized, not distributed in this way. Being out of a big organization now, my needs are much simpler, so I’m certainly not stressing the Google Calendar to the degree I stressed Outlook. But so far, so good.

The two other things I use Outlook for, contacts and notes, surprisingly haven’t been quite as obvious how to switch over to hosted solutions. Gmail will import the Outlook contacts, but it is clearly designed just for an email address list and isn’t adequate as a general-purpose contact manager. Plaxo seems like one possibility, but I’m still looking.

As for notes, I’m converting tem to a series of documents in my Basecamp account, but this doesn’t feel quite right yet.

This blog's technology

In the past, I’ve always built full custom web sites. I found the design of blogs too constraining; they seem to emphasize ease of entering simple text over all else. The previous mslater.com was a custom, though simple, site.

As I began to want to do more writing, however, the appeal of a blog increased. I wanted to enable comments and RSS feeds, and it seemed like a waste of time to build those features myself.

At the same time, I began moving my web development work from PHP to Ruby on Rails. So this seemed like a perfect opportunity to try out one of the blog engines for Ruby on Rails. And that’s what you’re seeing now: Mephisto.

With Mephisto, I’ve been able to heavily customize the design of the site using simple templates written in liquid. Since the entire blog engine is open source, I can go in and modify the engine itself if I want (but so far, I haven’t found a need to do so). Since it is in Ruby on the Rails framework, the code is clean, elegant, and reasonably easy to understand (once you grasp the Rails conceptual model). It also has a nice, simple asset manager, so I can easily upload PDF files and images and so forth and use them in my postings.

As time goes on, I expect to experiment with the structure and layout more, and I’ll chronicle these efforts here. I have mixed feelings about the simple reverse chronological layout of blogs and hope to add some refinements that improve its usability. Let me know what you think.