Category Archives: Web

The Google Apps Value Prop, Part II

@hientran hit me up following my original post on The Google Apps Value Proposition. He considered my omission of Google Video and video chat in Google Talk big oversights. So I’m back today to bring you those two pieces to the Google Apps puzzle.

Video
I wasn’t totally surprised by the announcement that Google was made that they have discontinued the ability for the general public to upload video to Google Video, what with YouTube and all. I was also not surprised to see that Google is re-focusing Google Video into an Apps application. It’s really quite brilliant. You can share videos with specific people, or with the public. I could go on and tell you how you can use it, or I can just let you watch how Google uses it.

Video Chat
I can totally see why why @hientran says this is a “cherry on top” feature. I’ll just quote him:

Videochat inside gmail has been great for our org, I can see / talk to my team from without needing to fire up skype or ichat

T

However, there are three things that keep this from being a killer feature for me.

  • Not everyone in my org, or who I chat with, has a video camera on their computer
  • I already have iChat and Skype running
  • It’s web only, so even if you run the official Google Talk app on Windows, it still doesn’t work

That said, if you have a video camera, and don’t already use other chat protocols, then this can be an excellent tool for your organization. And because it is Google, you’ll be able to video chat with anybody who also uses a Google-based web chat — Gmail or another Google Apps account.

The Google Apps Value Prop

If you follow me on Twitter, you know that I’ve been doing quite a bit with Google Apps recently. One of them is a non-profit that I’m associated with. The friend I’m working with on that (who works at the NPO) asked me today for some “talking points for selling all these services.”

I shot him a quick reply, closing it with a statement about needing to write a blog post about the value proposition of using Google Apps. That question has been rolling through my brain all day long, and it’s time to put thought to keyboard.

Context warning: this is related to this specific org, where they may/will migrate email from a hosted Exchange solution. They are also using Basecamp for project management and collaboration tasks. I will try to make it as generic as possible so as to make it more widely relevant to the broader public.

Email
When looking at replacing Exchange with Gmail, I always come back to one argument … lock-in. With Exchange you are locked into Outlook for a desktop client, and IE for the web version. Any other desktop client — including Entourage — is a second class citizen, IMHO. Same goes for your growing market share of non-IE browsers. Outlook Web Access on anything but IE is pure trash. And if you want good mobile access to your email you are limited to Active Sync devices, or paying for a Blackberry solution.

With Gmail you get an excellent webmail client, whatever your browser of choice. If you want to stay on a desktop client, take your pick, because Google supports them all. Google has also developed an array of mobile access methods, ranging from applications you install on your Java-enabled phone, to push messaging to iPhones.

Calendar
Comparing Exchange’s calendar to Google’s calendar is pretty even. They both allow you to request appointments with other people. They both allow you to check other people’s availability so you can know when to schedule that appointment. They both allow you to share your calendar with other people in your organization, with view or editing rights. Google separates itself from Exchange on two fronts.

First, back on the mobile train. Again, Exchange limits you to Active Sync or BES. Google allows you to wirelessly sync your phone’s calendar for most types of phone. The list includes Android, Blackberry, iPhone, Nokia, Sony Ericsson, and Windows Mobile.

Second, with Exchange you are limited to sharing your calendar within your organization. With Google you can share your calendar with anyone who has a Google Account. For example, I have a work GCal, my wife has a personal GCal, and we have a shared family GCal. I can go to one place and see all of my calendar stuff. To achieve that with Exchange involves a whole lot of synchronizing stuff using various web services — free and pay-for.

Chat
Some people will like this, some won’t. Some people will use it, some won’t. I instant message with my colleagues all day long. My wife is always a short message away from me, and me from her. This one has been in the personal user space for a long time, but is just now being used as a corporate communication tool. I think if more organizations endorsed IM as a valid tool for their employees to use, it would grow in use rapidly. Microsoft doesn’t have a chat client for Exchange, so there is no real comparison here.

Docs
Comparing Google to Basecamp, Docs goes squarely up against Writeboards. They both provide similar functionality, in shared editing of documents. Docs moves ahead because it allows for real-time shared editing, where Writeboards do not allow this.

Beyond word processing, Docs brings you online collaboration on spreadsheets and presentations. It gets my geekiness all excited when I’m sharing a spreadsheet with a handful of other people, watching real-time as the edits are happening. For me, the shared spreadsheets makes Google Apps 110% worth it. With Basecamp, you are relegated to uploading new versions of files, for people to then download locally.

I will say this, if you are a Microsoft Office “power user” — deep into macros, and obscure Excel functions — then you will not view Docs as your total solution, which it isn’t. Don’t discount Docs though, because Google continues to add functionality, and spreadsheet functions, to Docs. It will only get more powerful over time.

Sites
To be perfectly fair, this comparison is a stretch, since Sites is a wiki solution that can be shaped in a project management fashion, and Basecamp is a true project management solution. On with the comparisons, though. Beyond Writeboards, Basecamp gives you messages, to-dos, milestones, chat, time, and files. Their format. Their logic. Their rules. Basecamp just works, and it works very well.

Sites, because it is a wiki, is not limited to project management like Basecamp. Sites can be molded to what you need it to be. Sites can be public, with public edit rights, and they can be private — locked down to a handful of collaborators. You can create lists, where you determine the data fields to track. You can create message logs. You can link in external web pages. You can link in other Google Apps items, such as docs, spreadsheets, calendars, and more.

Closing
I know there is more that I can say about this. I’ll try to sum it up in a nice package for you all. Google Apps gives you all of the same functionality as you get in Microsoft Exchange, and more. Google Apps gives you all of the same functionality as you get in Basecamp, and more. Google will do this for you for free, with the Standard Edition of Google Apps. If the standard edition just isn’t enough for your company, for $50 a year per user you can get the Premier Edition, which gives you more functionality. And if you work for a school or non-profit, you can sign-up for the Education Edition for free, which is comparable to the Premier Edition.

One last thing. While all of these Google services are 100% web-based, many of these services (not all), have the ability to go offline with Google Gears. If you’re about to get on a plane, you can sync your email, calendar, or documents locally, and sync back up when you have connectivity again. I’m a non-traveling desk jockey, so that rates lower on my useful-to-me scale.

Update 3/26/2009 8:00 PDT@hientran points out that I have omitted Google Video and Video Chat in Google Talk. I will do a follow-up on those two services specifically, hopefully tonight.

The Internet Has Changed Everything

I’m out at the Oregon coast with my wife’s family this weekend, and my wife brought along the Wired that came in the mail on our departure day (not up on their website yet). One article in this issue is about netbooks, and that one article has been a center piece of quite a few of our conversations.

Then late into last night my brother-in-law and I were talking about how we see technology changing, and changing “stuff” over the next 10 years. Questions like “what will buying music look like in 10 years?” and “what will TV look like in 10 years?” It was a rather fun conversation, which now has my brain thinking pondering those questions further.

So, I’m going to have some ir-regularly scheduled writings on the topic of how the internet has change everything. I’ve already got some ideas on topics, but I’d love to take some ideas from you. Please feel free to hit me up at internetchanges (at) jschwanz (dot) otherinbox (dot) com.

jQuery Form Validation

We do very little true data entry into our systems database. Most of what we do is updating the information already in, or adding an entry to the activity log for a server. I hadn’t really given much thought to form validation, until a coworker asked for it. Once again, there is already a jQuery plugin that does a fantastic job of this.

The jQuery Validation plugin works on many different levels. First, and most commonly, it will validate that you have entered values into required fields.

Beyond that, you can validate the data entered into the field is in the format you desire. Types include email, url, date (mm/dd/yyyy), ISO date (yyyy-mm-dd), number (float), digits (integer), credit card, US phone numbers, and equal to (retyping email address as an example).

You can also do min and max lengths, min and max values, as well as ranges. The best part is that you can force any of the format validation without making the field required entry.

For me, what makes this plugin hot with a capital HAW, is that you can do remote validation before the form is submitted. One of their demo pages is a mock signup form for Remember The Milk (type “Peter” in the username field). With this demo, the username field is set to remotely verify with an external source — in this mock-up it is just a static array in a PHP file — that the value you have entered doesn’t already exist. They are even nice enough to give you both the jQuery script and PHP code from the example.

I’m still in the process of adding the format validation to non-required fields in our system, but I’m already rawking the required validation, as well as the remote validation for unique values like host name and server name.

jQuery Table Sorting and Paging

As I set out on re-writing the interface for my systems database, on thing I knew I wanted to implement was better sorting, and pagination. In v1 I implemented sorting through GET statements, and requerying the database according to the choice of column and direction.

I used this tutorial as the basis for my own “plugin” to jQuery. The authors do a good job of explaining all that they are doing with their Javascript code. They, very helpfully, present the full 100+ lines of code at the bottom of the tutorial. After my copy/paste of it, I set out to make it work for me.

First of all, your table needs to be setup in the following standard structure:

<table class='sortable paginated'>
<thead>
<tr>
<th class='sort-alpha'><span class='ui-icon ui-icon-arrowthick-2-n-s'></span>Column 1</th>
...
</tr>
</thead>
<tbody>
<tr>
<td>Field 1</td>
...
</tr>
...
</tbody>
</table>

Three quick things you’ll notice, 1) the two classes on the table (sortable and paginated), 2) the class on the TH (sort-alpha), and 3) the SPAN is for a jQuery UI icon feature. I’m going to state the obvious here, if you include the class “sortable” on the table, then it will be made sortable, and if you include the class “paginated”, the table will be paginated.

The class on the TH tells it how to process the sorting: sort-alpha, sort-numeric, and sort-date are all available. The first click on the header sorts ascending, the second sets it to descending, the third back to ascending, and so on.

A nice side benefit of using sortable or paginated on the table is that it also dynamically adds an “odd” or “even” class to each row for styling purposes. And this odd/even is refactored with every sort.

I did have to make a few modifications to the jQuery code I found.

First, they use the Javascript function of lt() and gt() in the pagination, to hide the rows below and above that page. In my testing, using FF3 primarily, the DOM doesn’t support lt() and gt() anymore, so I modified the code to use the slice() function.

Next, the sorting, on the first click, would add the sorted-asc class, and the second would add the sorted-desc class, but the second would not remove the sorted-asc class. This kept it from sorting it decendingly. Because jQuery is chainable, I just added a .removeClass(‘sorted-asc’) for the even numbered clicks, and a .removeClass(‘sorted-desc’) for the odd-numbered clicks. I also threw in some similar code that acts the same way to stylize the TH in line with the jQuery UI plugin, changing the SPAN arrow class, and on all of the TH blocks adding/removing a “ui-state-active” class where appropriate.

The last change I made was adding a “View All” option. A coworker asked if I could do that, since it is nice to see the full table in non-paged sometimes. To achieve this I added a View All link to the end of the paging links, and when this link is clicked it re-paginates the table setting the “current page” back to zero (the first page), with the number per page equal to the number of rows. Then when one of the paged numbers is clicked it changes back into the normal mode where number per page is equal to your defined number.

Here is my code. As I said, mostly taken from this tutorial, with my modifications described in this post.

jQuery Sortable Pagination Plugin

Database of Systems

When I started in my current job about 18 months ago, I was taking over some responsibilities from a guy who had been gone for six months already. Very quickly I learned that what was documented was done pretty well, but there was quite a bit of stuff that wasn’t documented.

Beyond the lack of documentation about how some things had been setup and configured, there wasn’t any real good record keeping on all of the systems we had. We had a wiki page listing most of the servers, and a few columns of data, but it was a wiki page; designed more for documentation and note taking, not so much for entering and tracking the minute details about servers.

So I set about to create a database and web front to track this minute detail. Version 1 wasn’t perfect, but it got the job done. We could track the specifications of the hardware (RAM, CPU, disks, power supplies, etc), what OS was installed, physical location, backup information, reboot instructions, etc. We started to dig in to bringing our network equipment into the mix. The one part that was the most challenging, but most rewarding, was taking the physical location information, and producing a dynamic rack map for our various server rooms. At the time I built v1 out we were really just beginning conversations about virtualization.

A simple payoff came not too long after releasing v1 to the office. In a meeting something was mentioned about how we had roughly 40-50 servers, but I was able to say with certainty that we had nearly 90. It’s almost like one of those guess-how-many-marbles-are-in-the-jar games, except with hundreds of thousands of dollars of server equipment, and they had obviously guessed low.

Jump forward to 2009, and we are now implementing virtual hosts, and migrating some of our services to said hosts. Over the last month I’ve been working on v2 of the systems database, breaking my tables up into clear separations of the physical and software portions of the server. I had originally built it where the “guest install” and the “physical host” were one in the same. I’ve also been able to make further additions for the networking equipment, so hopefully we’ll be able to log that stuff in as well.

I’m still in the development phase of v2, but I’ve made some big strides with it already. With v1 I rolled almost everything by hand. In v2 I decided to take advantage of the magic of jQuery. The results so far have been very nice, but I still have more to go. Over the next while I’ll highlight some of the jQuery stuff that I’m using.

MindMeister Revisited

It’s been a while since I talked here about MindMeister (11 months), and about six months since I’ve seriously used it. In that time they have made some pretty sweet changes.

The big announcement in November was their release of MindMeister Offline. Built on Google Gears, MindMeister Offline allows you to take your mindmaps offline, work completely offline (including creating new maps), and sync it back up when you are able to get back online. This feature is only available to Premium account holders.

Geistesblitz is a set of tools that let you do spur-of-the-moment-brain-dumps to your default map. Whether through the dashboard widget, or the browser search bar extension, what you enter in is place in your default map. I tested this out a bit, and found it worked quite well in a form of a to-do manager. This is open to all account levels.

Thirdly, they have come out with a full API, on top of the embed API. Nothing really here for the general public, per se, but I would expect to see some sweet stuff for tying MindMeister maps into any and every online resource possible. I’m also curious to see if someone will come out with a cocoa-based MindMeister app.

In account level “news”, now all account levels can embed maps into websites and blogs. I might just have to do that to say I’ve done it.

Lastly, one thing I noticed today which I thought was very cool. If you have shared a map, you can have MindMeister notify you through Twitter that your map has been modified. Gotta love that.

Keep up with MindMeister development on their blog.

Tiddle Wherever You Are

A short while ago, I was talking with a co-worker about personal productivity (i.e. to-do) systems.  There are so many systems out there, and each with their own spin on GTD.  He showed me one that is a spin on the TiddlyWiki system:  Tiddlyspot.Tiddlyspot is a hosted version of TiddlyWiki, with a twist.  Not only can you work on your wiki online, but you can download a version of it to work on locally when you are, say, getting ready to get on a flight.  Once you are where you have an internet connection again, you can sync you local copy up to the server, and you are back in the cloud with it.Yeah, sure you can just get TiddlyWiki and put it on a thumb drive, but this gets you local and cloud workability without having to tote a thumb drive around with you.And, do top it off, there is a pretty slick Firefox extension that complements TiddlyWiki and Tiddlyspot.  TiddlySnip gives you three key context menu options:  TiddlySnip a selection, the clipboard, or the page. The clipboard option is perhaps the most creative of the three. Say you want to create a tiddler of something from Word, you copy it from Word, go into Firefox, and TiddlySnip the clipboard. Extremely handy. 

Playtagger

Bren, formerly of Slacker Manager fame, showed me this great little tip today. Playtagger is a feature brought to us by del.icio.us.

Play Tagger is a neat little tool that allows you to easily play mp3 files directly on del.icio.us (see the popular mp3 bookmarks), and you can have it for your website or blog too. Include this tiny javascript in your HTML, and your mp3 links will automatically become playable right on the page. In addition, your visitors will have the opportunity to easily tag and post the mp3 link to del.icio.us. This script is very lightweight, as is the flash movie that plays on demand.

Probably the most useful part is you can drag a link to your bookmark bar. If you are browsing a page with a link to a MP3 file, give that bookmark a click, and you will be able to play that MP3 inline on the page, rather than being required to download it. Very slick.

Pownce On It

If you haven’t heard of Pownce, think Twitter but with the ability to do more than just messages. It’s currently in closed beta, and I’ve got six invites for the first six comments. Be sure to check out the local client app, too, written in Adobe AIR.

UPDATE: I just received six more invites, so I currently have a total of eight for those that are curious about Pownce.