March 29, 2008

The Growing Connection - Applying High Tech to World Hunger

What do Google, Wired Magazine, the band Wilco, Pennsylvania Department of Agriculture, The University of Ghana, the Galloping Gourmet and the United Nations all have in common?

They all have or have had some involvement in a truly unique grass-roots initiative called "The Growing Connection". The Growing Connection is a grassroots project developed by the Food and Agriculture Organization of the United Nations supported by the folks listed above and many other private and public sector partners.

  • The Growing Connection links people and cultures in a revolutionary campaign that introduces low-cost water efficient and sustainable food growing innovations hand in hand with access to technology and information via existing and emerging technologies. It provides a sound educational foundation, and offers hundreds of families, both in America and abroad, a concrete opportunity to earn income and climb out of desperation. Perhaps most important, The Growing Connection engages people – a network of committed individuals - in an elegant solution to one of man’s fundamental challenges.

  • How does it work? School gardening programs and community gardens around the world grow vegetables in an EarthBox system. that becomes a common growing platform for all participants. Students grow food, conduct horticultural experiments and share their lessons and experiences with each other using IT connectivity. Through modern IT installations,

  • The Growing Connection participants in a number of countries are directly linked. And importantly, they are also connected to sources of vital information and advice on growing food. Those once the most isolated can now grow, learn, and chose their own opportunities and destinies.
I've known about this program for years, and over that time, have seen more and more people get involved in one way or another. With this in mind, it is understandable that while watching Dean Kamen talk about his "water machine" on the Colbert Report, I got fixated on thinking about how the availibility of fresh drinking water (and water for crops) as well as a reliable supply of fresh, safe food, will indeed change the world.




Never before in human history has this been the case. What has been the case, however, is that the formation of each and every sophisticated and robust society in history started with the reliable availability of food and water. (Basically the premise that when people arent' focused on where their next meal comes from, they can work on other things).

I think I am getting ahead of myself here....

So on a micro-level, how do individuals and businesses help to make a difference in the world? More specifically, how can people like you and me help to make the availability of fresh reliable food a reality for the billion or so folks in our world where it is not?

I suppose it is just about getting involved in one way or another. Every little bit helps... and I've listed out some of the ways I've seen people applying innovation to help out The Growing Connection:

Wired Magazine - NextFest 2006


When Wired magazine put on NextFest in New York in 2006, they provided a Growing Connection exhibit. This exhibit, pictured above, relied on fresh food grown using the EarthBox system employed in the Growing Connection program. Hundreds (or maybe thousands) of corn stalks and other herbs and vegetables were grown by Philson Warner's students from New York City.


Google, Inc - Growing Connection Garden

Everyone in the tech industry has heard about the great gourmet lunches that are served up for Google employees. Having eaten in the Google cafeterias, I can personally vouch for this! Where do these fresh and tasty veggies come from? Would you believe that there is an official "Growing Connection Garden" at Google?

The Garden consists of 100 EarthBoxes all planted with vegetables and herbs from different regions of the world. The Garden was planned in cooperation with the Chefs at Google, and made possible with support from Google and the Master Gardeners of Santa Clara County and volunteers from Google, University of California - Cooperative Extension, EarthBox, and TGC.

Rhazes Spell, one of my best pals and co-workers has come up with a concept that would provide for data capture and data visualization of Earthbox performance (soil conditions, oxygen / co2 levels, etc, etc). His idea is directly related to the Open Source project that we are both involved with: The Merapi Project

The idea would be to build an external hardware device that could be placed in the soil and transmit data either wired or wireless, back to a monitoring machine that used Merapi to push information to an Adobe AIR software application that was Web connected. This would allow for real-time data capture from Earthboxes across the globe, with a single user interface for data analysis.

If you take it one step further, you find yourself at Ken Waagner's ultimate vision for the community and social content aspects of The Growing Connection.

Imagine children (and adults) from across the globe working together to learn about food production and sharing tips, ideas and information about their experiences that can benefit others.

There is really no end to the impact that people can make if they only try. As more and more people find themselves drawn to helping out The Growing Connection, perhaps these next few years will be monumental in solving the problem of world hunger. If Dean Kamen can bring water to the world and The Growing Connection can help bring the food...

Well, that would be amazing.

Want to get involved? You can donate to The Growing Connection, contact me so I can put you in touch with Rhazes, reach out to Ken Waagner and let him know how you want to get involved, or contact The Growing Connection folks at the UN.

March 28, 2008

The Web Building MC

Today on the iXda mailing list (Interaction Design Association), a guy posted links to some youtube videos of "Mo Serious", an MC that raps about Web Design, SEO, and other industry topics. Not only is it pretty funny, but he speaks the truth.

It's good stuff. Enjoy.



Searchme = Thrill Me! A quick review of the searchme.com RIA experience

Last weekend I received an email from a good friend, long-time business associate, regarding the launch of a new Web application that he and the team at Adobe Consulting have helped to produce.

This new Web property is called "Searchme". As described on their Web site, "Searchme lets you see what you're searching for. As you start typing, categories appear that relate to your query. Choose a category, and you'll see pictures of web pages that answer your search. You can review these pages quickly to find just the information you're looking for, before you click through."

Clearly this email email stimulated some interest in me, and after reading Searchme's self-description, I was rather interested. After signing up for the public beta, I ended up getting fast-tracked with a user account. Having played with the tool for a week now, I am quite impressed with Searchme's overall experience.

Let's break the Beta down:

When thinking about why I liked the searchme.com experience so much, I decided to break things down into the following high-level categories. I suppose these also apply to "search" in general.

  • Quality of Results
  • Efficiency
  • Enjoyability
Searchme.com scores very well in all three categories, as far as I am concerned. Let's start with the most important topic, being the quality of the search results.

Quality of Results

We all know that Google climbed to the top of the search engine mountain because they learned how to return rock-solid results to users on each and every search. This is no trivial task, and Searchme seems to be doing a fairly good job at it also. There is, however, a difference between Searchme.com's search user scenario and that of Google.

Searchme is visual, playful and enjoyable. Searchme allows the user to type a query, and upon doing so, returns a list of category matches. The user then clicks a the category that most closely relates to the concept that they were searching for, and then the results load on the screen.

This secondary search step could potentially be a very bad experience, however because of the "rich" nature of the user interface and the elegant way in which it is delivered, the potential for annoyance is reduced to a minimum. The fact that this pre-filtering happens means that your actual search results are generally right in line with the type of information you are seeking out.


Efficiency

Even if an online search application were to provide perfect results, I doubt it would gain wide acceptance by the online community if it wasn't fast. For today's search user, speed is almost as important as accuracy.

Searchme.com is blazing fast. This might be what impressed me the most. This thing is speedy!
So fast, in fact, that even with the heavier (than HTML) Flex user interface (Flash player), the application performed search queries and returned results in a split second. This is especially impressive when considering the graphical nature of the user interface.

Without knowing the system's architecture, I can only make assumptions as to what contributes to the speed at which it performs. I have to believe that we are talking about a highly optimized back-end, and a very, very, very tweaked Flex GUI.

I love Flex, but I also know that something that is this sophisticated has had to have gone through a lot of iterations of performance tuning to make it perform this well.

Kudos to both Adobe Labs and Searchme's engineering folks. The reason nobody has been able to launch a search engine with an interface this clever before is most likely due to performance.

Who cares how "cool" the UI is. If it drags your computer down or performs so slowly it is just annoying to use, all of the eye candy associated with the look and feel becomes secondary.


Enjoyability


I know. I know. It's a weird and subjective term. I use it though, and personally that the enjoyability factor behind digital experiences summarizes the overall value that they bring to users. If people "like it", they will use it, they will connect with it, and they will recommend it to others.

Searchme.com is enjoyable. Of course the speed of use and quality of search results lend to the overall enjoyability rating. Searchme, however, takes search to a new level by presenting the search results in a rich, visual and playful way.

Similar to, but not a direct copy of Apple's "Coverflow", this application shows results as page thumbnails and allows the user to page through them.

This was a risky approach, but it paid off.

The challenge from a technology perspective is to make the flipping action as fast and fluid as possible. Dare I say that this needs to exceed the expectations of the user in order to become a real winner. The 3-d pages fly through the interface, and are loaded in batches so the user can immediately begin exploring search results while the entire list of results loads in the background.

It isn't a new concept, but the team at Adobe really pulled it off in the most perfect of ways. It is smooth, fluid, quick, and works better than expected. I can't say that I envy the developer(s) that had to work on this, because it is apparent that a lot of time went into iterating through this until it was perfect.


Let's take a look



Initial Screen: Search Box


Just as you'd expect: A single text input box and a very fitting marketing tagline "You'll know it when you see it". They nailed a complete overview of the application in that single line. The genius behind searchme.com is the visual nature of the search results...


Secondary Action: Select Category

The "rich" experience gets underway! As soon as you type your query into the search box, a list of matching potential category matches is displayed. For this example, I typed in "Roundarch" as the search query. As soon as I did, the following category icons appeared: "software, architecture, work & career, web development, advertising & marketing". In this example, I chose "web development".


View Search Results

Once the user clicks on a category, the user inteface changes to what you see here. It is expanded by default, and provides a very nice, clean and visual way for the end-user to view screen shots of the pages in the search result collection. This initial display shows off the 3-d perspective view of the search results pages, where a user can "flip" through them, much like the ever popular Apple Coverflow UI.


View Search Results (part 2)

In this view, all I've done is grab the "scrubber" below the screen shot and pulled it towards the top of the screen. This shrinks the search result thumbnails and reveals a text-based search result panel that directly correlates to the visual results at the top of the UI.


View Search Results (part 3)

This screen shot shows the UI after the user scrolls into the search results. The UI now displays the screen shots on both the left and right of the selected search result item, along with the corresponding text-based results below. As you move the top of the screen left or right, the bottom area scrolls through results creating a 1-to-1 match between the visual results and the text results.


Launch a Page

Finally, now that the user has chosen an item that looks right to them, they click the captured image of the Web page, or they can click the hyperlink in the text-based list of search results. This loads the new page in the same browser window, bringing the user to the content that they've selected for viewing.


Watch the Searchme.com Demo




User Experience Highlights

Lastly, I wanted to just recap some of the things that Searchme.com has incorporated into the experience that I feel make it such a refined rich internet application:

  1. Capturing the "back" and "forward" buttons within the browser so users can use them to control the experience. Many RIAs forget this, leading to a potentially annoying experience.
  2. Displays search results in both visual and textual forms.
  3. The visual nature of the display allows users to easily seek out, identify and confirm that a "page" in the results contains the content that they are seeking. While not 100% accurate, a user can visually relate the page layout, etc to what they were after when typing the search query.
  4. The screen captures actually display the highlighted search term on top of the image itself. this is fascinating and I don't know how they've accomplished this, but it works.

Here are a handful of other articles and information resources regarding the Searchme.com application:

March 26, 2008

Adobe Flex... What and Why? (And What About AJAX)

This posting started as a response to a post on the iXda mailing list regarding the benefits of prototyping out applications using Adobe's much anticipated "Thermo" software tool.

While I've cleaned up the "email" nature of this, it is still a little rough. At least I hope to express some key ideas as related to Adobe Flex, why it is good, why it is sometimes a better tool than non-flash solutions (Ajax), etc.

If you have questions related to the topic, I'd love to hear them. I've been using Flex since its inception and have been working with Flash-based RIA's since day one. It's my thing, and I love to talk about it :)



"Do people use Flex for real projects?"


Absolutely. A lot of "real projects" have been built using Flex. Before going any further, I think there needs to be some demystification of what flex is. People seem to treat Flex as if it is some unknown product on the far reaching corners of the web galaxy.

Flex is just a way to create RIAs or other "Flash" content without using the Adobe "Flash" IDE. Flex has Flex Builder, the tool created by Adobe to write Flex apps, but in reality, Flex is just a framework to build RIAs that play in the Flash player (or AIR now that we have it).


"I have yet to see any web app/site that really uses Flex for an RIA.. most apps still use (and will use IMHO) web standard technologies like html, css, javascript, etc..."

I spoke at the Adobe MAX conference last year in Chicago on "Next Generation User Experiences" and how you can develop them in Flex.
Here are some examples of Sites that are built on Flex, and these projects have been worked on by myself, someone I know or have met in one capacity or another. I am just stating that so you can understand that this is first-hand information as opposed to "that could have been built in Flex".

Out of the giant list of Flex apps that have been launched to the public, here is a handful that you might recognize:
In addition to this quick list, I've seen Flex be used for others including NBC, EA, Discovery Channel, matchmine, Harley Davidson, The US Air Force, Citi, Sherwin Williams... the list just goes on and on.

One amazing new application that is built on Flex was built by the folks at Adobe Consulting: www.searchme.com. Also, most of the applications that you find Adobe putting out (labs.adobe.com) are built on Flex.

If you have Adobe CS3, you've seen the Adobe "Video Workshop"... which was shipped with CS3 on DVD and is also hosted online at www.adobe.com/designcenter/video_workshop

This application was built by my team for Adobe using Flex and also packaged up using the Adobe Flash standalone player to run on DVD, etc.


"So... What's Up with Adobe Flex?"

I could go on for ages on this topic. (But I will try not to!)

Flex: First, it isn't the perfect tool for everyone.

It is, however, a great choice for a platform if you are building an RIA or online application where the user experience could see significnat benefits from a "rich" interface. (all applications?)

Flex is going to be quite daunting for someone who knows the Flash IDE, but is not familiar with OO programming, design patterns, MVC, etc.

Flex was intended for "programmers". As the market has created demand for better user experiences and RIAs, there just aren't enough Flash developers out there to meet the demand. Flex allows non-visual developers (i.e Java developers) to jump into RIA development by giving them a tool that let's them build apps using the skills that they have as opposed to trying to learn Flash itself.


"So why Flex? Could you list out some reasons?
You need to answer that relative to other platforms."

Sure. I can tackle this one.

Flex isn't perfect for everyone. I've seen a lot of people with solid Flash chops try to use Flex and just get frustrated. (Nobody said Flex was "easy") :)

There has been a ton of improvement in the product since the early days. Flex 1.5 was rough to say the least. Flex 2.0 was a ton better, and Flex 3 is proof positive that Adobe has been listening to the community to make the tool more robust and more integrated with the CS3 line of tools.


"Why Flex over Flash?"

I think the case for Flex over flash has to do with the type of application you are building, and who is building it.

If you've got a very robust "application", Flex is probably the right tool. If you've got a team of "developers" as opposed to "Flash developers", Flex is probably the right tool.

If you've got a project that requires heavy use of data, data visualization, or needs to utilize some more advanced back-end systems ... Flex is the right tool.

This is especially the case when thinking about applications that might utilize LiveCycle Data Services or the OpenSource Blaze Data Services.

Flex isn't better than flash... it is just a different tool to accomplish the same end goal. You have to use a tool that works best for you and your team.


"Why is Flex better than AJAX?"


So, instead of saying "Why Flex over AJAX", I will instead say "Why the Flash player over AJAX".

Both Adobe Flash and Flex output Flash player content. Whatever you use to develop your application, there are significant benefits to using Flex over AJAX... again it depends on your specific project!

I will say that in recent months, I've done several evaluations of technology for client projects, and have had to compare Flex to AJAX for each.

In my opinion, the biggest advantages of using the Flash player as a runtime for your RIA as opposed to using AJAX:

  1. Write once, deploy cross platform
  2. You can turn your Flex application into a desktop application without much code refactoring (using AIR).
  3. With the evolution of browsers, you can be less concerned about how to migrate your code to keep up with changes in the Document Object Model in AJAX, as the Flash player is backwards compatible.
  4. The Flash player now has hardware acceleration... so you can build UI's that look and feel the way YOU want them to, and not forced into having limitations by your development technology
  5. 3-d integration (using papervision or another framework)
  6. Handles LOTS of data much, much, much better (data grids with tons of rows, etc)

To help you understand what other benefits flex can offer, check out www.flex.org.


"So, how is Flex perfect when these java/rails/jango/foobar developers need to learn yap (yet another platform). Given the transition/learning time - what are the net benefits that make it better than sticking with the tried and true?"

It isn't. It should be a primary rule of building software: Use the Tools that you Know.

I will say that the ramp-up time for experienced Java or C# developers to move to Flex is nominal. ActionScript 3.0 is a lot like Java or C#.

The benefits aren't from a technology point of view. I really think that the benefits are around the user experience that you can get from a Flex application as opposed to something else.

If you know Java and that's your thing, then Flex isn't too far off from your comfort level.

Again, I wouldn't recommend anyone use a new technology on a critical project Especially a technology that is completely unfamiliar.

One thing I will say about developing in Flex is that to make "killer" flex apps, you need to really know the framework and be able to proof-of-concept your way from the initial idea to a working application.

You can build a flex application that "looks right" but has performance issues due to the way it was coded. There have been several projects we've worked on in the past where we were called in to help "save' a project that was built in Flex, but wasn't built properly. It was all there, but in order to make it launch-ready, needed a bit of refactoring, etc in order to be optimized for a great user experience.


All in all, Flex has been a really good tool in my experiences... But I preface that by saying I've been fortunate enough to work with some extremely talented software engineers that really know the framework and how to make it sing.

"Ok, so leave me with something..."


Flex, Flash, AJAX... whatever..... You have to build apps using tools you are comfortable with, and don't pick a technology simply because it's the latest thing :)

There really is no right answer to the whole Flex vs other technologies question. It really just depends on the specifics of the situation.

One thing I will say though: If you don't know ActionScript 3, and/or your team isn't being led up by someone with an actual software development background... take caution in jumping into a Flex project.

Thankfully, there are folks out there (to whom I could refer you) that could jump in and help out on a project to get a team up to speed, etc.