Wednesday, May 26, 2010

Diaspora vs. Appleseed - Does anybody care?

So there's been a lot of hype lately about a *new* social networking application called Diaspora. The story is, 4 NYU computer science students decided to "change the world" by declaring a war on the social networking leviathan "Facebook". Their secret weapon: The idea of a "great light-weight distributed social networking framework". The idea is a great one and has been on people's wishlist for years now. Over the last few weeks, the story about these NYU students spread like wildfire. To be frank, this was a very timely declaration. Recent privacy woes with Facebook have made the average internet user more conscious about privacy than ever before. The whole notion of "privacy" has also become more complicated. Its not as black-and-white as private vs. public. Nowadays people are urging for more fine grain control over who has access to their information.

So, how does the team at NYU plan to tackle this problem. I headed over to their blog to find out more. From what I could gather, Diaspora is sort of a distributed social graph sharing application. Let me clarify that uber-condensed definition. A social graph is a graph where the nodes are people and/or objects that can be shared, and there is an edge between the nodes if they are somehow related. For example, two users are related if they are friends, or a photo is related to you if you had posted it. The main problem with today's social networks is that our social graph is locked behind a walled garden of big corporations. This lets them do whatever they want with the social graph. They could, for instance, sell it to advertisers so that targeted ads can be displayed on your profile. Moreover, even if you delete your social networking account, the company, in theory, could still retain your social graph, posts, videos etc and make money out of it. The way out of this mess would if you could host your social graph on your own computer or on a rented server. And that's exactly what Diaspora is. It's a little piece of server software that stores your social graph locally and exposes a web API so that the world can access it. So you are really the owner of your social graph. The reason this is distributed is that everybody installs their own instance of Diaspora and the instances talk to each other and creates the network.

Sounds great right? Yes it does, but only in theory. If the world was full of computer geeks like us, Facebook would have never been born. And we would all be running Diaspora instances on our machines. The truth is, Diaspora won't be a program that a typical user would be able to install easily. It will most likely consist of a whole stack of server software like LAMP. Moreover, the whole stack would need to be cross-platform. The average user won't be pleased if he is required to have a Linux machine to be able to join a social network. Sure you can allow a hosting service provider run the software for you. But that's also not as easy as filling out a simple sign-up form. Moreover, to an average user, this will sound like "Diaspora claims to be different because it wants me to submit my sensitive data to site B instead of site A."

To me, it's clear as daylight. It won't work. No matter how solid the Diaspora platform might be, it won't be adopted in a large scale. Ask the guy from Appleseed, his implementation of the Diaspora-predecessor has been around for about 6 years. Almost nobody has ever heard of it. Here I would like to make a bold statement. Any "new social networking solution" that relies on people installing software on their laptops or desktops, or signing up with hosting services will *never* work. People just won't do it.

If you want to be practical, you need a solution that is just as simple as Facebook or Hi5, if not simpler. Anything more complicated, no matter how shiny it is, won't be adopted. We need to revisit what problems we are having with current social networking platforms. We need to identify the *real* problems from the perspective of the user. Then we should try to design a solution that addresses these issues. Stay tuned for the next post where I will discuss my take on the solution.

Thursday, May 7, 2009

Savant: The Natural Language Shell

How many times have you stared at the contents of a folder for 5 minutes trying to carefully select the files that you want to copy to your thumbdrive? Maybe you want to remove all the zip files that you downloaded off the web today. Or maybe you want to make a backup of all the folders matching the name hwX where X stands for a number.

Sure you can do these things with the file manager of your choice. The most naive user would go and manually select every one of the 20 items he is thinking of. In the process, maybe, he clicks an empty area on the screen and his whole selection goes away. Since there is no UNDO feature in file managers, he has to start over again. (Makes me wonder why hasn't anybody thought of this).

A more average user, or more likely, a user with a very clear query in his head will probably use the search feature built in to most file managers. The user fills in numerous checkboxes, fills in the details of whatever he remembers about his query. Hopefully, if the search is narrow enough the right results show up and the user is happy. However, more often that not, using the search feature can be a bit tedious. Ask yourself, how likely are you to use search when you want to copy, delete, move or zip more than 10 files.

On the other end of the spectrum, the macho command line geek will probably laugh at this problem. He will promptly bring up a terminal window and type in some obscure commands involving ls, rm with a bunch of regular expression arguments along with -l -u and what not. If the query is a bit more complicated, and the user is intellectually challenged, he will write a shell script to do the job for him. However, the truth is, on average cases, the command line geek will get his job done faster than the other user groups.

No, I am not advocating the use of command line in our daily lives. But, do you notice that, in a way, the more technologically inclined you are, the faster you can get things done. If you are not so good with computers you will probably end up following medival ways of doing things. However, getting things done fast doesn't come without a cost. As a user, you are trading off intellectual effort of command line trickery for boring and repetitive chores. Unfortunately for most users, there is no trade-off to make. Such users resort to the latter way of doing things.

So is there a sweet spot between tasks of high intellectual effort and the brainless and repetitive ones? Personally, I think so. In this article I will try to explain what motivates me to think in such a manner.

To put things into perspective I will zoom out a bit more and talk about a more fascinating trend. Back in the days of the first browsers, the address bar was a place where you just typed in the actual domain name. Search engines were not so popular back then. So it was important that you remembered the web address precisely. As browsers got more advanced they started packing more juice into the address bars. First came the drop down of addresses from the history. If you have visited a site in the recent past, all you have to remember is the first few characters of the domain name. A significant reduction in intellectual effort, a new potentially brainless chore. With the advent of Firefox 3, the address bar became even more "awesome". You could get away with typing only a part of the actual domain name, page title, or even tag name. This new feature quickly spread like wildfire and was adopted by every other browser in the market. With the smarter address bar, daily browsing reduced to typing in a few key strokes. Google Chrome took this even further by displaying Google search results as you type in.

Now, I ask the question again. Do you see a trend. With every new addition, we are actually accomplishing a much more complicated task. We started of by pointing the browser to a specific location on the web. We then progressed to doing a domain name search on our recent browsing history. That got elevated to performing a string search of titles, domain names, bookmarks, and tags from the history. Finally we ended up performing an actual web search on Google along with everything else. However, the actual intellectual effort of performing these increasingly complicated didn't go up that much. It is still pretty much limited to a few key strokes that we easily get used to.

So the moral of the story, it is possible to do complex tasks without doing much. Which brings us back to the issue of selecting, copying, and moving files with your file manager. The current state of the art approach to this problem is to use the sort and search functions of the manager to set things up to do whatever you want. Imagine if you had to do the same with web browsers. Instead of the address bar auto-completing recently visited sites, what if you were shown a list of all pages you have visited recently. Then you had to sort that alphabetically, or by recency, and then perhaps do a search to find what you are actually looking for. Fortunately browser UI designers have been clever enough to spare us the horror of going through all that.

So you see, the way we do things in a file-manager is pretty silly. We somehow fail to realize how silly it is until an analogy is shown to us. What if we could tell the file manager what we want? What if we could tell: "Delete all the zip files created today". Or maybe, "Move all files starting with hw to Documents/School/". Command line people may instantly conjure up the appropriate shell commands for each of those tasks. And that's exactly my point, we need something as powerful as the command line, but for average users. We need something that can understand commands given in natural language and perform them. I'm not talking about having a conversation with the computer. We just need to be able to give domain specific commands in natural language.

Savant, is a proof of concept of such an idea. It is a natural language shell to perform routine tasks that we do using a file manager. It is simple in the sense that it can perform only a handful of tasks, but it is also powerful in the sense that it can perform those tasks on any complicated query that we describe in natural language. What's more exciting about this idea is, Savant need not be a solution for a handful of problems. It can be as extensible as Firefox. Developers should be able to extend the program to do more interesting tasks. Alongside, they can also specify the natural language commands using plain old context free grammars. To make parsing easy, the front-end can suggest syntax as the user types in his command. This way, it is clear for the user what the system can and cannot understand.

Sounds interesting. Stay tuned for more updates...

Tuesday, August 5, 2008

Filter for Contexts

2008-08-05_011741

This is how you can specify what files to display for a given context. File name matching can be done with normal text or regular expressions. Creation date, last modification date, and file size can also be a part of filters.

Sunday, August 3, 2008

About Me

You also tend to be focused on computing problems that make life easier for people, and good user interfaces... you're focused on people's experience of software, not just on interesting theoretical problems

- Marjorie Carlson

Saturday, August 2, 2008

SnowView

SnowView

SnowView: A new "contextualized" view of files. Contexts can be color coded and folded/unfolded at any time. The main UI will change based on the currently selected context.

Snowfox Development Plan

Snowfox 0.9

    : Breadcrumbs
    : Tabs
    : Actions (toolbar & right-click)
    : Contexts (full customization)
    : SnowView (with Context Folding)
    : Fully functional start-page with context folding

Snowfox 1.0

    : Ability to zip files
    : Open with Other Application (Right Click Option)
    : List View, Thumbnail View

Snowfox 1.5

    : File/Folder/Context Sharing
    : My Friends in the Start Page

Snowfox 2.0

    : Ability to sync folders with friends
    : Send message to friends

Snowfox 2.5

    : Natural Language Shell

Friday, August 1, 2008

Snowfox: The Semantic File Browser

So how many files and folders of your computer do you interact with? A small fraction only. The typical things we deal with everyday are office documents, home-work assignments, pictures of families and friends, music. Those of you who are technologically inclined have code written in variety of languages saved on your computer. Often you also have text-snippets storing phone numbers, random links, a chat log of a friend, an interesting idea.

Ever noticed that your file manager never bothers about what the contents really are. For all its purposes, they are just files, folder, shortcuts etc. An average file manager does not distinguish between system.ini and historyEssay02.doc, other than opening it with different applications. Its upto the average Joe to be smart and organize his "files" into folders, sub-folders, sub-sub-sub folders, meaningful file names, meaningful locations etc.

Here's a question, why should file browsing be so radically different from web browsing. When you visit a site, are you ever offered a list of file names ending with html, php, asp, pl ? How do you visit a website? Do you have to go through a heirarchy of directories to reach your favourite sites? Or do you just type the name of the site, or part of it in the address bar?

One more question, how does your browser home page look like ? Does it say C:, D:, DVD-RAM Drive E: ? It makes perfect sense to have a google search box, a personalized start page, or even a blank page as your home page. Why is it so difficult to imagine such ideas for file browsing. Why can we tag feeds and label emails but do nothing with files and folders. Why does the web guide us through words, images and links and file managers leave us with nested heirarchies of data? Who invented the file-tree anyway ?

Snowfox, is a concept of a new paradigm of file browsers. It aims to contextualize the contents of your computer. It frees you from the shackles of heriarchies and lets you visually set up contexts for your files. With contexts the browser changes itself to adapt to your needs. Snowfox is a productivity tool. It lets you get to your "stuff" quickly and more meaningfully. Its more of an organizer than a mere browser. It brings modern tools like tagging, bookmarking, scripting and makes them a part of your user experience.

Wednesday, July 30, 2008

Snowfox: Actions & Contexts

Action

An "action" in Snowfox is the equivalent of a bookmarklet in Firefox. When clicked on an "action button" a batch file / shell script is launched. Browsing information of the current location (e.g. Selected File, Current Folder etc) are made available to the script as arguments. The resulting thing is an "action", a button that can bring any command-line goodness to the file-manager. New actions can be downloaded and also created by the user. Actions that need other arguments can make requests to Snowfox to ask the user for the values of arguments. Optionally, actions can also be made available as context sensitive right click menu items. Potentially, actions give users and developers the same flexibility as add-ons. Its even better for a developer because they can simply write a batch script instead of learning a custom scripting language.

Usage: Batch Rename, Upload files to Flickr, Batch Image Resize

Context

A "context" is a way of visually tagging a file/folder. But its not tagging just for the sake of tagging. A "context" gives a special context to the item to which it is applied to. For example, you have some actions that compile and execute code. But you only need that action to show up when you are browsing code folders. Well, add a "Programming" context to your code folders. Associate the compile and execute actions to this context. Voila, everytime you browse to a code folder, all the right tools are there in front of you. Not only that, you can associate file listing types, right-click menu items, even default applications with "Contexts". Basically, the whole Snowfox GUI will change to suit the needs of the context. To spice things up more, search can be "contextual" too. This means you are no longer confined to file names and extensions. For example, you can search for files with "Family Pictures" context even if the pictures are scattered all over your computer. Adding a context will be encouraged while bookmarking. You can obviously look at your recently "contextualized" items. And as a finishing touch to this amazing feature, users will be able to create their own contexts.

Uses: Image Upload, share actions with a "Pictures" context. Code compile, execute actions with a "Programming" context.

Special thanks to darkscript for brainstorming with me and providing such amazing ideas.

Monday, July 28, 2008

Windows Explorer ++

2008-07-28_203206 Windows Explorer pimped up with tabs and breadcrumbs.

Tabs: QTTabBar

Breadcrumbs: Minimalist

Friday, July 11, 2008

Unveiling Snowfox

2008-07-12_024632Well, here it is. The proof of concept of Snowfox. Nothing fancy, extremely minimalistic and, hopefully, intuitive. As always, feel free to comment.

Thursday, July 10, 2008

SimpleShare - As simple as it gets

Have you ever found yourself in a situation where you need to take some of your files home from school, but you don't have a flash-memory. What do you do then? Mail it to yourself? Sounds logical. SimpleShare uses the same principle but does it in one single step:

 

2008-07-10_230832

Yes, that's as simple as it gets. Just drag and drop your file/folder on to the screen, and they are transferred to the root directory of your Andrew server space. Your AndrewID and password needs to entered only once. After then, every time just drag and drop.

Monday, July 7, 2008

Snowfox becomes portable

I've been scavenging the web recently for ways to open a file with its associated program on different OS's. In Windows it's pretty easy to do that. But I've been struggling with Linux and (ahem!) Macs. After a week of searching, I found it. Listed below are command line programs that do what I want:

Windows: cmd.exe /c start "path/file_name"

Linux::Gnome: gnome-open "file_name"

Linux::XFCE: exo-open "file_name"

MacOS: open "file_name"

I'm not sure about KDE yet. I've heard this command works for all versions of Linux:

xdg-open "file_name"

I haven't tried it out yet. Will post again, when I've done some tests of my own.

Saturday, July 5, 2008

Can Snowfox disrupt the use of spatial memory?

Here's a excerpt from "Designing Interfaces", a book that I am currently reading.

Many people use the desktop background as a place to
put documents, frequently used applications, and
other such things. It turns out that people tend to
use spatial memory to find things on the desktop,
and it’s very effective. People devise their own
groupings, for instance, or recall that “the document
was at the top right over by such-and-such.”
(Naturally, there are real-world equivalents too.
Many people’s desks are “organized chaos,” an apparent
mess in which the office owner can find
anything instantly.

 

Do people actually remember the names of their important folders, or remember their spatial locations? What a tree-view of the system gives you is not just a hierarchy, but also a way of reaching your data through a sequence of spatially organized shortcuts.

Snowfox's address bar may make it hard for most users to find their stuff, because it does not let them use their spatial memory. In this case, tags might be useful. In extreme cases where desktops are overly cluttered to even recall where an item is, it might be useful to remember something like "work", "science project".

This gives me some food for thought to think about new ways of visually organizing files based on tags and bookmarks. Maybe this might turn out to be a major interface feature.

Friday, July 4, 2008

Monday, June 30, 2008

Introducing the Snowbar

snowbar_small

Autocompleting address bar, buttons with alpha transparency. Makes you wonder, is this Java ?? As usual, feedback is appreciated.

Snowfox Sidebar: A customized user experience

One of my original ideas for Snowfox includes a highly customizable content area. In other words, user should be able to create tabs, split tabs, open up a sidebar etc. In this post, I'm gonna talk about the Sidebar in specific. Here are the different roles that this UI element can play:

Bookmark Manager:

Firefox users should be familar with this. Usually users are able to organize their bookmarks through this window. Snowfox aims to use a similar idea. Bookmarks in Snowfox are like virtual folders where users can organize content located anywhere on their computers. As Snowfox will flatten the "tree-view" of our file system, bookmarks will be cruical to throw back some hierarchy.

Search Bar:

Okay, this is a feature "borrowed" from the traditional windows explorer. Though there is a search bar beside the addressbar, if users want more control over their searches they can do it through this special sidebar mode.

Folder Tree:

If you really really miss your old explorer, there should be no reason why you cannot make Snowfox look like it. In this mode, the sidebar shows an explorer style tree-view of folders.

Friday, June 27, 2008

Project Snowfox : Initial Thoughts

Snowfox is to your computer what Firefox is to the web. It's the accumulation of multiple productivity tools built into one useful package.

In its barebones Snowfox is a file manager like the one you get for free with Windows. But this application goes further and brings modern browsing features like tabs, bookmarks, tags, plugins, etc to your file manager.

Here are some of the ideas I have in mind:

Note: For something shorter jump to the Quick Review section.

  • Why open multiple windows to copy or move files. Wouldn't it be nice to have multiple tabs where you can just drag and drop stuff?
  • Why do I have to browse through the whole file system everytime I need to access my common folders? Sure I can make shortcuts, but that adds 10 more icons to my desktop. Can't I just type in the name of the folder in the address bar and go there without any of this hassle. Firefox seems to does this very well with websites.
  • Okay, I can't keep all my recent files in "My Recent Files". It sure will be very useful if I can tag my files and open them up when I type in their names.
  • My start menu is cluttered with zillions of programs. I need something like Launchy where I can type in the first few letters of the program I'm thinking and I can select what I want to open.
  • Hey, why is the search engine in Windows Explorer so complicated ? Can't it be like a google search box that just does the right thing? I wouldn't mind firefox style search boxes where you could search for Documents, Music, Moves by simply changing the engine from the combobox.
  • Removing programs in windows is a pain. Add/Remove in the control panel is SLOW ! Can't I just type:                   remove Program_Name.. and that should bring up the proper uninstaller. Hey, maybe I should also be able to bring up any control panel item just by typing a few letters of its name.

 

Quick Review

  1. A firefox-like file manager with multiple tabs, drag-drop support etc etc.
  2. A firefox 3 like smart location bar which can autocomplete file/folder names and browse/launch them.
  3. A location bar is also like a mini command prompt that lets you type in copy,move,rename, uninstall etc.
  4. A firefox like search box. Opening the combobox lets you choose different kinds of searches (documents, music, videos)
  5. Okay, One click bookmarking like firefox, along with the ability to tag files and folders.
  6. Extensible through plugins

 

I'm hoping to hear comments on the project idea...

Friday, May 30, 2008

Emergent Gameplay

According to the wikipedia definition, emergent gameplay is:

Emergent gameplay is the creative use of a game in ways unexpected by the game designer's original intent. It commonly appears as complex behaviors that emerge from the interaction of simple game mechanisms.


I've always been keen on developing truly original game ideas. The idea of emergent gameplay hit me really hard. The originality of the game doesn't always have to come from the game designer. If the game is structured in special ways, it can be played in ways which have never been thought of before. Now that's emergent gameplay. Not only does it bring originality to the game, it also tremendously adds to the replay value of the game.

But now I'm beginning to wonder. How do we develop games that allow the rise of emergent gameplay. Is it through a complex AI system that changes unpredictably yet intelligibly with time? Or is through exploitation of a new combination of a lot of simple rules of a game?

The question is worth exploring...

Utopia-RSS: Proof of Concept

Utopia-RSS

An Rss-based content creation and subscription system that will help manage school events, announcements, and reminders.

The basic idea is separate the emails you get into a variety of different feeds which you can choose to subscribe to. For example, if you want to receive event updates from Student Affairs. Subscribe to it. Don't want to receive weekly emails from the library? Don't subscribe to the library feed. Though you can still check it out if you need to. What all of this aims to accomplish is the reclamation of your inbox.

Here are the main categories of feed items that I plan to use:

1. General Announcement
- Title
- Description (Optional)
- Post Date
2. Event
- Title
- Who
- When
- Where
- Food
- Description (Optional)
- Post Date

3. Deadline Reminders
- Title
- When
- Post Date

There will be 2 different interfaces for the users. The front end is what the students will use and will basically be a customized feed reader.

The feed reader will load all the feeds the user subscribed to and filter them as following:

1. Today
2. Yesterday
3. Earlier this Week

The feed items will also be categorized by their type (i.e. event/announcement/deadline) Different type of items will be displayed differently.

The back-end of the system will be mostly for staff members and club officials. They'll be able to add new items based on their type. They will never have to access the feeds directly, all of it will be managed by a user-friendly interface provided by the back-end.

Some spin-offs of this idea:

1. A weekly planner that shows all the different events and deadlines for a week.
2. A reminder service that sends you an email reminder to all the events you agreed to attend.
3. A calendar service that lists all the assignments and tests for all the courses a student is taking.
4. A free-food finder. Based on all the feeds that have event items. List the ones that promise free food and inform you where and when to find it.
5. Integration to Google Calendar, Remember the Milk, Facebook.

Monday, August 6, 2007

Project Constellation: Proof of Concept

As of today I have successfully been able to demonstrate to myself that the technological foundation, on which Constellation should run, can be developed.

A few words about Constellation. Like the numerous social networks out there, Constellation will also offer you to keep in touch of your community. Initially I intend to keep this network among Carnegie Mellon Computer Science students only. I hope that the project will expand as I get more people involved.

For the last two years, we have been experiencing a boom of Web 2.0. Its been attracting us by its dynamic applications and various eye-candy effects. Many think that the world is slowly moving towards online office suites and web operating systems. However, there is no single standard that Web 2.0 pioneers are maintaining. Browser Compatibility, the main headache of this technology is being addressed in varying ways. However it is my belief that in order to properly embrace the idea of Online Applications, we need a proper cross-platform infra-structure that is easily to develop and is modular in nature. The way things are going, it is very difficult for web-programmers to come towards a common standard.

Out of this necessity comes Constellation. A social network based on the Java Applet Platform. Cross-platform compatibility, object-oriented nature and modularity are features that are inherent in the Java programming language. So why not use this as the basis of developing online applications? Applets run using the Java Runtime Environment and are much more suitable than XML, AJAX or any other web 2.0 scripting languages. Plus, the developers of Java have much much importance on making applets run securely. Hence that makes it safe for mass use.

For this reason, Constellation stands on the JApplet platform. However, that is not all. In order to accomplish true modularity and a decentralized design scheme, Constellation is being backed up by BeanShell. BeanShell is a Java library that interprets, compiles and runs Java code as well as Java-like scripts. In simple words, the library lets you leave your code anywhere and let your program dynamically compile and use it for its own purposes. Thus development of Constellation is a continuous process where new contents and features are constantly being added to the system.

Constellation will act a content holder with a few basic functionalities. Developers on any part of the world can add write Java code and keep it with themselves. All they have to do is inform Constellation of their development. This way the content holder can allow the users to add new features at their will. As the Java source files and other resources will lie on a different machines spread all over the world, the Constellation network will truly be decentralized.