Archive for the ‘Development’ Category

rb-appscript

Thursday, October 19th, 2006

Today I was made aware of rb-appscript which is a Ruby library which hooks into applevents making it a nice substitute for Applescript. Here is a quick little script I did to try it out: [ruby] require “appscript”

AS.app(’Aperture’).projects.get.each do |project| p “project: ” + project.name.get project.albums.get.each do |album| p ‘album: ‘ + album.name.get end end [/ruby] Which nicely prints out as:

"project: ACL Day 2"
"album: flickr"
"project: ACL Day 3"
"album: flickr"
"project: ACL day 1"
"album: flickr"
"project: BBQ"
"project: Pikes Place Market"
"album: my album"
"project: Ratatat"
"project: Redmond Day 1"
"album: redmond album"
"project: atx"
"project: Puerto Rico, Oct 2006"

Combine this with some ruby-cocoa magic and you can easily build native looking applications that can use applescript in a much easier manner than Cocoa alone.

And that my friends is pretty damn sweet.

Issues with Custom Smileys Implementations

Friday, January 6th, 2006

Disclaimers:

  • I am not a Usability Expert, these are just my opinions on MSN Custom Smileys.
  • I use a Mac for personal computing.
  • I am not a fan of the official IM Clients of any of the networks, I use Adium.
  • I only use Windows at work.

Background:

MSN is the dominant IM Network in Puerto Rico. Apparently, due to the absence of an AOL pressence as an ISP in the island, AIM never really gained a lot of traction, so when the time came to dump ICQ for something else, everyone started using MSN, since it was already installed on most computers, why not?.

I already had an ICQ account and I opened an MSN account to IM with my friends, and later created an AIM account to chat with my US based friends. Because of this, I always used a multi-protocol client, Trillian when I used a PC, Gaim on linux and now Proteus/Adium on OS X. I traded feature completeness for simplicity, which in my mind is a fair trade off.

Now, most of my friends share my technological points of view, and do not use these features, making them hard to notice for me. At the moment I am running the official MSN client on my work laptop, mostly because I am too lazy to go and install another one. This should explain why I am ranting about a “feature” that has been available for some while now.

The last Drop:

Today I was talking with a friend who shall remain unnamed. he/she apparently installed a lot of custom smileys on her MSN client, which ultimately led to me not being able to understand a word she was saying. he/she had smileys for single letters, question marks, syllables, the works.

The problem is that the smileys did not make contextual sense to me. In the middle of a word, there would be a smiley laughing, at another point there was a stick figure. What was she trying to say, I had no idea. To me this totally defeated the purpose of trying to have an IM conversation. One of the main benefits of IM is that it is easy to understand and process what the other party was trying to say, and these smileys totally destroyed the benefit.

The origin of emoticons (AKA, Smileys)

The internet is mostly a text based medium. Because of this, there are no visual cues, as in common conversation, that can give context to what you are actually saying. The absence of context turns into an issue, as it is hard to display emotions or tones to what you are writing. In a blink of an eye, emoticons were born.

Emoticons originally were text only. :), :(, etc. Then, popular IM clients included a set of icons and substituted the text sequences for these icons. I find it important to note, that up to this point, emoticons were mostly a stand alone thing, being totally independent from other words in the sentence, never in between.

The Case for Custom Smileys:

I think a part of human nature is wanting to leave our mark on everything we do. We try to customize everything we can. This leads to things like PC Towers with windows, tricked out cars and in the case of MSN Messenger, Custom Smileys.

I can perfectly understand a PM thinking that custom smileys would be an excellent feature for their chat program, but it is important to note that the primary function of a chat or IM program is to allow its users to communicate. All other features should be secondary to this.

Sadly, the current implementation of custom smileys can seriously hinder the ability to communicate with your contacts. Here I will try and explain my mayor complaints of custom smileys.

Usability Issues with Current Implementation:

Custom smileys can be arbitrary images

An important quality of emoticons was the fact that everyone knew what they meant. If someone sent me a :), they were happy, a :( was sad, ;) might denote sarcasm or some sort of inuendo. They were all pretty clear and at first glance everyone understood them.

In MSN Messenger, a custom smiley can be any arbitrary image, including animations. Because of this, most custom smileys are devoid of context and do not contribute to the conversation any more than sending your friend an image. This destroys the primary quality of emoticons, which makes me wonder what’s the point.

Another issue with this is that unsuitable images might be used as custom smileys, which opens up another can of worms.

Custom Smileys can be mapped to any character sequence

The original set of emoticons were mapped to characters that where uncommon in normal speach, i.e. non alphanumeric characters. Punctuation characters, parenthesis and colons/semi-colons were used. This meant that even if chat and IM clients substituted these characters with images, the context and normal conversation flow was not lost.

On the other hand, custom smileys can be mapped to any character string the user can imagine. A user can map lol to a laughing smiley, what? to a question mark, etc. Thanks to this design principal, custom smileys can have unintended consequences and seriously disrupt the flow of conversation.

Imagine the case where someone tells me they are having a lolipop, if they had a custom smiley for lol, I would see ‹CUSTOM SMILEY›ipop. where ‹CUSTOM SMILEY› could be any arbirtrary image. Now, extrapolate this to someone with many custom smileys installed, It would be pretty hard to actually communicate with them, since the custom smileys would be appearing in between words, and may not be easy to guess the character sequence that the smiley was mapped to. IM/Chat conversations would turn quickly into an annoying game of pictionary.

The original text of the custom smiley can not be accessed

To make matters worst, I can not see the text only version of the message. At some point in time, I can disable smileys, but that would not change the messages that were already transmitted. I would have to ask the person I am talking with to resend the previous messages, just to understand what they meant.

Large smileys slow down the IM conversation, taking time to load

My last issue with smileys, ties together with the first. The arbitrary image can easily be a large image (file size or dimension wise). Theses images can take a long time to download and render and they can also shift the conversation, making it hard to read what was said before the image without constant scrolling.

This provides an easy way for our annoying friends to ruin the IM experience for us, and again, makes it harder to communicate.

Recommendations:

It is easy to sit back and criticize the work of others without providing feedback as to how it can be improved. Next, I will provide some ideas that might mitigate the burden that custom smileys place on easy communication.

Don’t let custom smileys appear in the middle of worlds

This one should speak for itself, emoticons stood alone, custom smileys should inherit this trait. By making custom smileys their own “words” they would stop interrupting the conversation. The easiest way to implement this would be to only substitute the character sequence that is surrounded by whitespace.

Delimit custom smileys

Similar to the previous recommendation, with a different implementation, possibly inferior. Have custom smileys be delimited by certain characters, an example could be that a custom smiley should look like an xml tag, so instead of lol, you would need to type ‹lol›. This would allow users to place custom smileys in the middle of words, if they wish to, but also means they need to remember to delimit the character sequence.

Limit the size of custom smileys

Both file size and image dimensions should be limited, guaranteeing that custom smileys will not slow down the conversation. If the image is too large, the IM Software should scale it before transmitting it to enforce these limits.

Make it easy to get the original text of the message

Provide an easy, visible way to toggle custom smileys. This should re-render the current conversation window and provide a text only view of the conversation.

Final Note

Wow, this went for long enough. As you can see, custom smileys touched a nerve. I am not saying they don’t serve a purpose, I just think that the current implementation hinders the primary function of the programs that implement them. I find them akin to operator overloading in programming languages. When used judiciously, they can make code easily understandable, yet most of the times, it is hard to guess what the operator actually does.

Technorati Tags: , , ,

Web/Enterprise Application Server/Framework Release Day!

Tuesday, December 13th, 2005

Rails 1.0: Party like it’s one oh oh!: “15 months after the first public release, Rails has arrived at the big 1.0. What a journey! We%u2019ve gone through thousands of revisions, tickets, and patches from hundreds of contributors to get here. I%u2019m incredibly proud at the core committer team, the community, and the ecosystem we%u2019ve raised around this framework.”

Apache Geronimo : “SAN DIEGO, Dec. 13 /PRNewswire/ — The Apache Software Foundation is pleased to announce the release of Apache Geronimo 1.0 and welcomes the incubation of key sub-projects, including ActiveMQ, OpenEJB, ServiceMix, WADI and XBean, that will now be supported by the Apache Software Foundation’s development, licensing, planning and release process.

Technorati Tags: , , ,

Mad props to the smalltalk crew!

Sunday, March 20th, 2005
http://home.in.tum.de/~pittenau/ModelViewController.mp3

The Design is in the Code

Tuesday, March 1st, 2005
Three interesting articles that compare Software Engineering to other Engineering Disciplines.

(more…)

Language Oriented Programing

Monday, November 22nd, 2004
link

(more…)

Mono, Monodoc and Monodevelop on OS X

Thursday, June 17th, 2004

(more…)

No project will ever beat me, NEVER!

Saturday, May 8th, 2004

(more…)

I have temporarily been defeated

Friday, April 30th, 2004

(more…)

Stress, let it go so it don’t completely consume.

Sunday, April 25th, 2004
Thanks to Atmosphere for the lyric where I got this title from,

(more…)