Saturday, March 31, 2007

Web 2.0 and Family Networks

We didn't necessarily walk to school uphill both ways in the snow, but Web 2.0 technologies were still a distant dream. Back in the 80's, we didn't have the same technological advances that we have today. As a result, living in Maryland, I didn't see much of my relatives who lived in Delaware.

My grandmother was the first of four children, each of these children has his or her own family, and many of their children have their own families now. I can remember being 6 or 7 years old and having a lot of fun at "The Family Reunion", so titled because it was one of the few large family events I remember that didn't involve a wedding or a funeral. I remember wishing that we had more of these kinds of events when I was little.

In 1987, people kept in touch through the phone lines or by writing letters. Family memories were shared in real, tangible photo albums. Get-togethers and keeping up to date on family events was much more difficult than today as it involved real-time collaboration, a lot of planning, and in some cases, quite a bit of travel.

Now we have virtual photo albums that can be viewed anywhere, anytime, as long as an Internet connection exists. Using such a service offered by a hospital, my sister sent me a link to show off my niece. Through such services, I can view pictures and leave messages and comments. As a result, our lives are less disconnected although we live many states apart. My younger brother and sister both have MySpace pages, as do I, and we can link to each other and our friends simply by adding each other to our "friends list".





Back in November, my grandmother passed away. Once again, the four families were reunited; unfortunately, this time it was without the company of one of the four eldest members. I saw family whom I hadn't seen in years. I talked to people I barely knew who were friends with my grandfather, whom I never had the opportunity to meet. Some of us exchanged emails; we even spoke for a few months. However, now we've all gone back to continuing our lives.

RememberWell, founded by Heather Swain, is dedicated to end of life issues, celebration, and remembrance. While creating a memorial for my grandmother, I realized that there could potentially be a market for family-centered Web 2.0 websites that provided the means for families to link their trees together. Some websites, such as MySpace, allow members to create groups, which could serve a similar purpose. However, Tom Anderson and Chris DeWolfe have not included this in their marketing efforts. When I think of MySpace, family collaboration is not what comes to mind.





Of course, I'm not the first person to come up with the idea of family-centered websites. I found Geni in my search results for "Web 2.0 family tree", which is one of 15 companies that is part of a $50 million dollar venture capital fund. In just minutes, I created an account and added members to my tree. Each person I choose to add will, upon my request, receive an invite to join the service. They will have the ability to add members to their own tree and connect them together.

The Geni family genealogy is presented to viewers as a tree. As it grows, navigational buttons are provided to allow directional scrolling so that different sections of the tree can be viewed. Geni uses Ajax to send and receive information from the server without needing to reload the entire page. Combined with Flash development, the user interface is smooth and responsive, which once again demonstrates the power of the Web in terms of creating a rich user interface. In addition, users of this website can zoom out to see more of the tree in the browser.

As a result of my lack of family genealogical knowledge, my tree appears relatively flat when zoomed out, but I'm hoping that the tree will grow -- both upwards as well as downwards -- as new members accept invitations.

In addition to the family tree display, each person has an associated profile to add information. This includes the basics, such as age, height, place of birth, a biography, current occupation, interests and activities, and much more. Furthermore, each profile contains an "immediate family" section that lists the members of that person's immediate family and provides links to their profiles.


Conflict Resolution

After editing my profile, I returned to my family tree to find that one of my cousins had already accepted my invite and has been adding more members to the tree. Alas, a bug of sorts has crawled its way into the tree. While Google Spreadsheets does an excellent job of instantaneously updating a collaborated spreadsheet without conflict, Geni still has some work to do in this area. In the Help section, Geni outlines some of the design challenges their developers face in order to implement a confict resolution feature; they do acknowledge that this is indeed an issue that should eventually be addressed.

Most of these conflicts could be avoided if my changes were instantly recognizable, as is the case with Google Spreadsheet collaboration. Despite the use of Ajax to reduce page reloads, there are now two profiles for my grandmother, mother, and aunt. Apparently, my cousin must have added them and not realized that they were already there due to a delay in the system. Of course, after my changes were recognized she must have realized that there were duplicates and removed them.


Security

When creating a profile, users will notice a status bar which reflects how far he or she is from its completion. Next to this status bar in the top right section of the window, there is a link to add a password to the profile. Afterwards, an additional 10% will be added to the status bar. Just out of curiosity, I wanted to find out what would happen if I logged out before completing this part of the process. If I was able to regain access without a password then this could present a privacy issue, and if I wasn't able to regain access, there could potentially be a lot of new members who would simply go somewhere else, frustrated by the loss of the time spent entering irretrievable data. As competition is almost a guaranteed in this industry, Geni has ensured that these issues are handled appropriately.

I found that if you do disconnect from the system without first creating a password, as long as you've entered an email address you can click the "Forgot password" link on the login page and a temporary password will be issued.

In summary, I'm fairly impressed with this Web 2.0 technology, and now that I've got the ball rolling, I look forward to seeing how my family tree grows.

Tuesday, February 27, 2007

Gmail HTML Reply Signatures

NOTE: See Multiple HTML Reply Signatures for Gmail for an update on this script.


Greasemonkey is a Firefox Extension that I recently discovered while I was searching for a way to automatically embed HTML image signatures inside of a Gmail thin client. There is a large pool of solutions to this problem on the Internet that range from dragging and dropping images into the Gmail compose window textbox to using a Greasemonkey script written by Garett Rogers.

However, none of the scripts that I found would insert the signature into a Gmail reply, only a blank email. After hours of searching, I went to Greasemonkey's Web site and found a free online book titled "Dive Into Greasemonkey". This is a great way to learn how to write your own Greasemonkey scripts!

From there, I installed Firebug, a Firefox Extension DOM Inspector, and used this tool to try and determine exactly what tag id corresponded to the reply email text editor. After some trial and error, I found id attributes labelled hc_0, hc_1, hc_2, which correspond to each conversation in a thread. For instance, the first reply in a series of emails is labelled hc_0. If I respond to it and then receive another reply, it is labelled hc_1. Thus, for the N'th reply, the id attribute is hc_N. However, my script only handles the first 5 replies.

If you would like to add your signatures to your replies, complete the following steps:

1. Install Firefox, if you haven't already done so.
2. Install Greasemonkey, if you haven't already done so.
3. Download the "Gmail HTML Reply Signatures" script. Greasemonkey will prompt you to install the script.
4. Go to http://www.signaturegenerator.net to create a free image signature.

My next experiment will be to attempt to use Greasemonkey to manipulate the Google Docs and Spreadsheet interface in order to add more shortcut keys to the interface. Another option is to use a Firefox Extension called iMacros to record a left-click of the Google Docs "File" button. I tried this, and it was successful; however, iMacros is missing what I consider to be an important feature: I need to be able to create a toolbar button for the macro which can also be activated by using a shortcut key. Perhaps this will be yet another experiment.

Until next time,




P.S. You can create a similar signature image for free at http://www.signaturegenerator.net, which I listed above in step 4.

Saturday, February 24, 2007

Remote Applications and Operating Systems

There has been quite a bit of discussion centered around the use of the Mozilla-based XUL technology in order to create a rich user interface on top of a thin client. In the past two weeks, I've learned quite a bit more about the power of XUL, and I've gained more perspective as to where application development is heading in regards to Web applications, rich user interfaces, and operating systems.


Mozilla Amazon Browser

When I think of XUL, I think "Firefox Extension". I visualize browser overlays and add-in software that functions in conjunction with Mozilla Firefox. But yesterday, a co-worker introduced me to the Mozilla Amazon Browser, which renders rich web content through a Mozilla interface. This shattered my previous notions of XUL.



The Mozilla Amazon Browser looks and feels exactly like a client-side application, yet the entire application, including the user interface, is run from a remote server! In addition, the application can also be installed locally as a Firefox Extension with the same look and feel as the remote version! The only limitation is that Mozilla Firefox must be used in order to use the application; it won't run using other browsers, such as Internet Explorer.

This completely changed my view of what XUL is capable of! In 2004, Joel Spolsky of Joel on Software wrote an article about How Microsoft Lost the API War because of emerging Web development technologies. He described the user interface of Web-based applications as "a huge step backwards in daily usability". Because of this inability of Web tools to render a rich user interface to Web users, client-side applications will always have their place on the desktop. People like Mr. Spolsky and myself would much prefer to use a client-side interface that allows us to make full use of the keyboard to speedily control an application rather than stumble around the screen with a mouse pointer, reducing productivity and wasting time.

Technologies, such as XUL, that allow a Web application to look and feel like a rich client-side application and still allow users to access that content from anywhere have set the stage to replace client-side applications completely because they eliminate the user interface problem.


Client email vs. Web-based email

Many businesses are using Web-based email in place of using a mail client simply because email providers, such as Gmail, only provide POP access. The POP protocol only allows a user to download his or her email to one computer, so if employees within an organization use multiple computers this creates quite a challenge for using mail clients. Thus, as an employee working at such an organization, one loses much of the functionality that only the client can provide.

On the flipside, organizations whose employees use only one computer and do not rely on Web-based email, reap great benefits from the ability to perform certain actions, such as embedding signature images in emails. This is something that Mozilla Thunderbird can do in Gmail with POP access but something that the Gmail thin client cannot do without the help of a third-party Firefox Extension, such as Greasemonkey combined with the HTML Signatures for Gmail script.

What I see here in terms of client-side applications vs Web-based applications is a hierarchy of priorities which determine whether or not a user will use the client interface or the Web interface. If the user requires access from multiple locations then he or she must sacrifice user interface for mobility. However, if mobility is not necessary, then the user will be more likely to use a client-side application, especially if speed and the use of advanced features is required.

With XUL, developers now have the necessary tools to offer customers both mobility and a strong user interface. We can see this already just by testing Firefox Extensions, like Greasemonkey, to improve the features of Gmail.


Google Docs and Spreadsheets

Google Docs and Spreadsheets is yet another example of a Web application that offers users tremendous benefits in regards to mobility, yet still needs some work in terms of user interface. I am a big fan of this mobile Office suite because I can record information regardless of where I am or what operating system I am using. I even use the spreadsheet for complex tasks that would be much easier using Microsoft Excel or Open Office Calc, but mobility is ranked as a higher priority than user-interface, so I make do with Google Docs and Spreadsheets as-is.

However, in the last month I've been doing some experimenting of my own. I've been trying repeatedly, yet unsucessfully, to use XUL to interact with the File menu in Google Docs. As I previously stated, shortcut keys are important to me. When I press "Alt-F", I expect to see a drop-down appear with a list of File controls, such as "Save" or "Save As"; instead, My Firefox File menu expands. Reluctantly, I move my hand away from the keyboard to reach for the mouse, stumble around the screen while I point at Google's 'File' button, and perform a left-click.

One of the features of XUL is the ability to use the 'accesskey' attribute to allow users to use a shortcut key in place of a mouse click. My hope was that I could use this to call Google's ActionMenuLoader(fileMenuButton,'more') functionality from a local Firefox Extension.

Although my methods have not proved successful, I believe the secret to successfully implementing a richer Google Docs and Spreasheets interface can be found by studying the two Firefox Extensions mentioned earlier: Greasemonkey and the Mozilla Amazon Browser.

With Greasemonkey, local JavaScript code within a user's local Mozilla profile directory can manipulate browser content. Therefore, I wonder if it would be possible to add an HTML 'accesskey' attribute to Google's File button, allowing Google Docs and Spreadsheets to expand the File menu by using an "Alt-F". The advantage of this approach for someone like Google is that their application can still be accessed normally using a non-Mozilla browser yet still add this additional functionality to a Firefox user without making changes to existing code.

However, the Mozilla Amazon Browser has taken the user interface a step further by developing a user interface that interacts with remote content. It basically is remote content, depending on whether or not the user installs the Extension or accesses it remotely. I wonder if a similar interface could be developed for Google Docs and Spreadsheets to allow users the full functionality of a word processor and spreadsheet, minimizing the use of the mouse, yet still giving priority to those who require mobility.


Remote Operating Systems

Free Geek in Portland uses a technology called Lessdisks, which basically allows a computer terminal workstation to run an operating system from the server! In other words, the machine is essentially nothing more than a motherboard, a processor with RAM and other basic components, and a monitor. The machines they use do not have any disks. None whatsoever. They don't have a floppy drive, they don't have a hard drive, and they don't have CD-ROM drives.

If you logon to one of these Ubuntu Dapper 6.06 machines, it looks and feels as if you are running Ubuntu locally. I asked the head of Tech Support at Free Geek, Michael Westwind, if it were possible to run Lessdisks over the Internet. Although he seemed to feel that the system would be sluggish due to graphical delays as a result of slow communication, I totally see where we are heading. High-speed Internet may be too slow right now, but what about in the next few years? I can already successfully logon to my Windows machine through the Internet using Remote Desktop, and I experience very minimal graphical delays while productively working in this manner.



In fact, I'm writing this blog article using the CapOS Browser Operating System. This application allows the user to drag and drop windows within the browser! The browser window looks just like a desktop background, and I have windows that I can minimize, maximize, and close. I haven't had a chance to fully explore its feature-set yet, but this does hint that in the future all applications could be hosted in one location, be accessed anywhere, and have a rich client interface, possibly without the need for a local hard drive or operating system!

I think Microsoft is in trouble.

James Mortensen

Wednesday, February 7, 2007

The Strength of Networking in a Career Search

When I first started my search for a career that utilized my Computer Science skills. I began by registering with an online job service, Monster.com. I began searching for jobs in the Portland area only to find that many employers were looking for mid to senior level employees, not junior or entry-level college graduates.

After a few weeks, I landed my first interview with Nautilus for a software development position in support of internal business software. Not having C# experience, as well as my extreme nervousness, led me straight back to the drawing board.

Eventually, I registered with Job Dango, an online career search website focusing on businesses located in the Pacific Northwest. The more I used these career finder websites, the more I learned about the job search process. While Monster allows its users to preserve the format of a resume by uploading it as a Word document, other sites require that a user build her or his resume by building it step by step or by cutting and pasting. As a result, I learned that it is better to go directly to the employer's website and submit my resume and cover letter via email, if the employer supports this option. In this manner, time could be spent pursuing more important endeavors, such as looking for a job!

After three months of searching and only a few interviews, my level of motivation shot through the roof. I began doing as much reading as I could regarding my field. I read blogs and articles related to software development, open source, job hunting for college graduates, and anything else that could help me gain an edge in the market. Portland, Oregon is a very competitive environment when it comes to looking for a job, especially for a newcomer, so I needed every possible advantage.

Eventually, I found the Portland Bar Camp Meeting on Dawn Foster's 'Open Culture' Blog. This week, I had three interviews! Two of the interviews were from contacts I made at the Portland Bar Camp Meeting. That's three interviews in one week as opposed to one per month! Am I going to the next Portland Bar Camp Meetup. You betcha!

See the article titled Good Code is Like Glass for more helpful job search information and job tips.

Friday, January 26, 2007

Open Source Security

According to an article in the Oregonian on Tuesday, January 23, 2007, written by Mike Rogoway, the merger between the Free Standards Group in San Francisco with the Beaverton-based Open Source Development Laboratory marks a major milestone for the Linux operating system.

The new organization, dubbed "The Linux Foundation", will face some difficult challenges. The article briefly mentions standards between different Linux distributions as one possible challenge and patent infringement alleged by Microsoft. However, one particular issue that the article did not address is security.

Last night, I attended a BarCampPortland meeting. I met several interesting and extremely successful people, including Sioux Fleming, who is a computer security specialist. She said something that made me think about future security issues in Linux. There seems to be a lot of hesitation for businesses to switch to Linux because it is open source; naturally, this means that a hacker who wants to exploit a security vulnerability could simply look at the source code and determine how to exploit the system.

However, Sioux stepped up to defend open source by using Microsoft security as an example. She said that Microsoft constantly issues patches to plug holes in Windows security, yet hackers are still able to exploit and find new holes. Now, I'm no security expert and don't know the details of how this works, but it seems that Linux has a lot less issues in terms of security vulnerabilities, yet unlike Windows, the source code is easily available for anyone to examine. Personally, I don't know anyone who has had to completely reinstall his or her Linux system as a result of a security vulnerabilty, but I have personally reinstalled several Windows systems as a result of trojans, worms, and other security related disasters.

One of the possible reasons for Windows users being the target of more security threats than Linux users is that -- in terms of desktop computers -- there are more Windows users than there are Linux users. Therefore, if Linux does begin to gain a significant market share in the desktop PC market, what should we expect to see in terms of security as Linux users? Will we see more security exploits in Linux? Will I end up helping someone recover lost data on his or her Linux box?

Of course, Linux and UNIX-based platforms are still used primarily as servers in many businesses, yet the uptimes for these servers are significantly higher than for Windows servers. From looking at the past-performance of the Linux operating system, can we assume that it will still perform as well in the future?

These are questions that will be answered as the Linux operating system and open source gains more market share.

Wednesday, January 24, 2007

Demonstrating the Strengths of Open Source

I've recently relocated from the mid west to Portland, Oregon. I was recently awarded my Bachelor of Science in Computer Science from the University of Wyoming and am very excited about starting my career. You can view my resume here.

Since I'm currently unemployed, I volunteer at Free Geek, a non-profit organization that recycles and refurbishes old computer equipment. Equipment that is outdated and useless is marked for recycling, which eliminates tons of waste products that end up in dumpsters every year. For equipment that can be refurbished, it is given a new lease on life!

As a volunteer, I had the choice of choosing between two different programs: Adoption or the Build Program. A volunteer who chooses the Adoption program will receive a refurbished computer, known as a FreekBox, in exchange for 24 hours of volunteer service! A volunteer who wishes to learn how to build computers, such as myself, is provided with the necessary training to do so. In exchange for this training, Free Geek asks that each build-program volunteer assemble at least six computers, one of which the volunteer can adopt.

Of course, if you give a computer away to the public, there are certain legal issues that first must be dealt with. For instance, operating system software will have to be pre-installed. Since Microsoft has very strict licensing rules regarding their Windows operating system, the solution was to simply install Ubuntu, a user-friendly Linux distribution based on Debian. Ubuntu, as many FreekBox owners can attest to, is loaded with many top-notch applications, including OpenOffice, Mozilla Firefox, and many other free, open source applications. Therefore, adopters are able to get started with their new PC right out of the box and without spending a dime.

In many cases, providing a solution to one problem can lead to a question regarding how to circumvent another problem. For instance, there are more Windows users than there are Linux users. Typically, new computer users run Windows XP, and when they have problems with their PC's, they generally seek the help of their more technically-savvy family members or friends. For a new computer user running Ubuntu, finding assistance can be a bit more daunting. To address this problem, Free Geek provides one year of technical support absolutely free. On Tuesday, Wednesday, and Saturday, a volunteer can either bring his or her computer into Free Geek or call the local support number and the issue can be resolved.

Free Geek has become a well-known contributor to the community by providing computer hardware grants to other non-profit organizations, education to its volunteers, and open source software solutions to non-profits that can't afford expensive licensing fees. As a result, more of the community is educated on the benefits of open source software. Free Geek has demonstrated that Linux, although still the little fish in the sea, has the potential to lower both hardware and software costs for any business entity or individual who is willing to explore this alternative!

From time to time, I will compose articles related to potential open source opportunities that may exist in hopes of motivating others to explore the potential of open source and how it can benefit the home user, small to medium sized business, or non-profit organization.

I welcome your comments and opinions!

James Mortensen
Google