Introducing Yip: A Unified Notification System for the Web

Puppy logo

It’s 2009 and no browser vendor supports notifications for Webapps. The revolution begins today.

Let me first explain in Simple English: (1) Install Yip, (2) Go to Meebo.com and (3) When you receive an IM, you’ll see a notification on your screen like the one in the screenshot below. Works for Filttr.com and a whole host of other sites too.

Now for the explanation that geeks prefer – Yip is a Firefox extension that ports the Fluid and Prism notification APIs over to Firefox so you can receive Growl notifications from web applications. (Update: with Yip 0.2, if you’re on Windows, you can get Snarl or Growl for Windows or plain old Firefox notifications and if you use Linux, you can get libnotify/notify-OSD notifications. Read more about this here).

Download

The great thing about Yip is that we don’t have to be stuck in a chicken-and-egg situation. Many websites have already implemented notifications (despite the fact that no major browser has added support for it!). Some support Fluid, some support Prism and some do both. So, you can immediately start using Yip.

If you log into Meebo and you have Yip installed, the next time your friends sends you an IM, you should see a notification (obviously, Meebo should not be your focused window/tab at that point).

Sample Meebo Notification

Apologies to my Chinese readers. I merely take screenshots and post them without reflecting on their contents. ;)

Another cool website is Filttr which is a Twitter app that supports notifications for replies and direct messages.

Sample Filttr Notification

A number of other Webapps also support notifications. And there are a whole slew of Greasemonkey userscripts to enable notifications for Facebook, Gmail, FriendFeed, Github, etc.

Yet another standard?

As pointed out earlier — NO, the goal of Yip is not to create a standard for notifications but to support all the existing kinds of notifications. Currently, Yip only supports Fluid and Prism which cover the large majority (100%?) of currently implemented notifications. When Gears/Chrome starts supporting notifications (which might never happen because I don’t see anyone working on the proposal), Google will no doubt add notifications to all its web apps. Then, I’ll add support for the Gears Notification API to Yip too. If you know any other API, let me know in the comments and I’ll support it.

The API

Fluid

If you want to support notifications on your website, Fluid’s API is great. The function takes a single jQuery-style argument:

window.fluid.showGrowlNotification({
title: "title",
description: "description",
onclick: callbackFunc,
icon: URL string
});

All arguments are optional. Note that Fluid/Growl also supports the priority, sticky and identifier properties which are not yet supported by Yip.

Prism

Yip also supports the Prism API. Unfortunately, this API does not support even an onclick callback so I recommend that you use window.fluid instead. But since both Prism and Yip run on XULRunner, I’ll probably add a patch to Prism soon. Here, all arguments must be specified:

window.platform.showNotification(
title,
text/description,
icon
);

Extensions

If you’re another extension, you want to use use Yip,

var yip = Components.classes['@foyrek.com/yip;1']
.createInstance(Components.interfaces.nsIYip);
yip.showGrowlNotification({...});

Code

Now, go try it! Load up a HTML page and just add some javascript code like

fluid.showGrowlNotification({title:"Yippie!", description:"Just testing Yip! It's awesome", icon: "http://www.google.com/favicon.ico"});

The code for Yip itself can be found on Github. Do whatever you want with it (it’s MIT licensed).

A bit of technical history

The challenge in this extension is to define a global property on every window object of every tab. This took me forever (6  months, to be precise) to figure out because it’s a tough question to phrase and because not many people want to do this. But, eventually, I did (I’ll write a bit more about how this is done in the next post). I have to thank a bunch of people on IRC for this including mfinkle, zpao, Unfocused, Mook and dolske.

Part 2

In line with my philosophy of releasing things at every useful step, I have released Yip pretty early. But be sure that there will be no sophomore slump here. Part 2 of this project is way way more exciting. But you’ll have to wait for it. Watch this project on Github in the meantime!

And because I like LOLPuppies better than LOLCats

Can I Haz My Notifications Already?

I used to have a puppy. It died. :( Photo credit to jaysonmaceo on Flickr

You should subscribe to new my blog.

94 Comments

Filed under Philosophy, Programming

Simple.

If something is not simple, it is nearly impossible to build.

I don’t mean simple in terms of visual design. Websites with lots of color and large illustrations are beautiful (Vimeo and Viget come to mind). Simple, minimal websites (Daring Fireball, A List Apart, etc.) can be equally stunning too. When I say simple, I’m referring to the design[1] of the application as a whole. If it’s simple, it should serve one purpose and one purpose only. Unless you start with such simplicity, it will inevitably lead nowhere.

Twitter is my (and everyone’s) favorite example.[2] What did Twitter look like initially? Say you are building it, how would you implement it? You’d throw in a textbox on the webpage and on the backend, you’d hook it up to a database with just three fields – username, tweet_content and time (plus an authentication system which would take 2 seconds to configure with any popular web framework). That’s it. No support for even replies.

The reply syntax came about thanks to the community (just individuals making use of @username to respond to someone else’s tweet) and after that, Twitter tweaked Twitter slightly to add support for reply IDs so you can see which tweet the person was replying to. Retweets and hashtags are other powerful community-initiated practices. Dave Winer complains about the lack of “native” support for retweets in Twitter. They shouldn’t listen to him. Not “supporting” (non-prevention can be construed as support perhaps?) retweet is a good thing. If retweets actually became a feature similar to “Like” on Facebook and Friendfeed, it would change the way people used Twitter. Forcing changes in already-good user behavior is generally not a good idea.[3]

The development approach that Twitter brought to prominence is simply amazing. What they did was to start with extreme simplicity, then use their own product and evolve it further based on the usage. In modern times, that’s the mantra for writing anything successful. Start simple, use a lot, evolve.

Complexity

Now, you say “Yeah man, I agree with you completely but how do complex systems exist then?”. To answer that, I refer you to Gall’s Law:

“A complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: A complex system designed from scratch never works and cannot be made to work. You have to start over, beginning with a working simple system.”

It’s impossible to start working on a complex system no matter how well you understand it (or more likely, think you understand it). Evolution is the only way. And another characteristic of all evolution (biological evolution in particular) is this:

At every stage of your process, the end result must be useful.

This is a very good rule for anyone writing software. What you need is the patience to evolve simple systems. Success takes time. To just stop and stare at something in an attempt to figure out the whole thing is not a good idea. A better approach would be to just start working and you understand more from that approach. Paul Graham agrees. It’s easiest to get new ideas when working on something.

Personal Failures

All my personal failures have been attempting large things without quite realizing how much work they would actually require[4].

Devo was very inspired by quicksilver. Having just bought a Mac (and loved quicksilver), I desperately wanted something like quicksilver in the browser. This meant that Devo had to be more like a catalog of everything in the browser. In fact, it was initially named Catalog (yeah, I suck at picking names). So, it had to import your browser history and bookmarks which was such a pain before Places came along. I also wanted it to know the extensions installed on the user’s Firefox, etc., etc. It was going to be one huge catalog. Obviously, it failed. It was too complex.

A few months later, I decided to start afresh (my idea of it had changed from a catalog to a command launcher by then) and this time, I had a real deadline — the Extend Firefox contest. The time-boxing forced me to work on only the core features (mind you, this does not happen naturally as an effect of time-boxing. I think I picked the right core features). Hence, the success of Devo was inevitable.
 
These days, Ubiquity keeps adding features and growing broader so much so that I doubt even Atul understands all the code in Ubiquity. But what does something like Ubiquity or Devo really need to work? It doesn’t need a natural language interface. It doesn’t need an API or a mechanism for command subscriptions. Skins are like diamonds on your teeth (read: just bling bling). It doesn’t even need to support multiple arguments! The only things it needs to be useful is a straightforward command executor (just the Google and Wikipedia commands alone would do). And that’s simple. And that works.
 
In my other projects (Things.webapp and “Open Digg”), I’ve made the same mistake. I didn’t focus on the simple core and choose instead to attempt the complex and unnecessary.

Cliche?

Yes, most of this has been said by 37 Signals, John Gruber and a thousand others. And to some extent, everyone realizes how true the “Simple” maxim is but being humans (and even worse, programmers), they greatly misunderestimate how simple simple should be. As Hofstadter puts it eloquently,

“It always takes longer than you expect, even when you take into account Hofstadter’s Law.”

What you need is help — someone on the outside to peer into your brain and tell you if it’s too complicated. Because complicated things can’t built. Instead, start simple, use a lot, evolve.

More comments at Hacker News…

[1] What a word! So many meanings!

[2] To get a glimpse of how Twitter has evolved closely with its usage, watch Evan Williams explain Twitter briefly in this TED talk.

[3] So what should Twitter do now? Could Twitter do retweets better? Yes. Do they need to? No. On the other hand, they could work on search. Effectively, CNN and other big news networks now rely on Twitter to get breaking news (just imagine saying this last sentence 1 year ago!). That’s something they might want to improve. But seriously, I have no idea what the Twitter guys have been doing for the last 2 years besides scaling. Even their search feature was bought.

[4] Moreover, usually, as the number of hours required goes up linearly, quality of the overall application decreases somewhat exponentially.

28 Comments

Filed under Philosophy, Programming

Stanford!

I went to high school for 4 terrible terrible years and all I got was an email. abii @ stanford . edu :)

So, I shall break the rule of not writing about intensely personal stuff with the hope that what follows will be useful to a future generation of slackers.

All thanks to Mr. Junot Diaz (his awesomeness now questions makes me regret my laziness which resulted in not being bothered to apply to MIT) whose style I ripped off. I had just finished his book. I sent him a thank you note. Perhaps, without the vulgarities.

I have to thank Mr. Junot Diaz whose uber-awesomeness makes me regret my laziness in not applying to MIT and whose style (sadly, minus the cursing) I completely ripped off for this first essay. When I wrote it, I had just read his AMAZING book Brief Wondrous Life of Oscar Wao and I was completely fucking inspired by it. In fact, I did thank Junot Diaz with an appropriately vulgar email.

Virtually all of Stanford’s undergraduates live on campus.  What would you want your freshman year roommate to know about you? Tell us something about you that will help your roommate and us know you better. [250 words]

Dear Future Roommate,

I am Abi and I am not a girl. Unfortunately, a lot of people mistake Abi for Abby or Abigail. But, let me tell you about what I am – an Indian geek who’s terrible at being either.

I’m the most ungeeky geek you ever met. Sure, I can write code all night. But guess what? There’s nothing I hate more than a good comic-book. I don’t speak Klingon or Elvish fluently either. I only watched The Dark Knight after a light saber-carrying Jedi friend of mine coerced me into it. In fact, Juno and Little Miss Sunshine are my favorite movies. Bluntly put, that’s like Arnold Schwarzenegger (or your favorite macho man) loving The Princess Dairies 2: Royal Engagement.

And for someone born in India, I’m less Indian than Obama (which technically isn’t a fair comparison since he isn’t Indian but even he can cook Indian food). The last Bollywood film I watched was 5 years back when I was stuck in my grandma’s house with nothing but a TV and a single VCD. My iTunes library has 2942 English songs, 3 Turkish songs and 1 almost-Punjabi song (it features Snoop Dogg). But while the origins of my un-geekiness may be mysterious, my un-Indianness can be explained easily. Everyday, for 10 years, I woke up to the sound of “Allahu Akbar” from an Indonesian mosque. In short, I grew up in the world (if the world only comprised of Indonesia, Singapore with brief trips to Thailand, Malaysia and Australia). However, I do prove my worth to my patria in one way. I love cricket and you must admit there’s something undeniably Indian about that English sport.

Now that I’ve written all this, I realize that I’m just like most people. Just another jumbled mess who’s hard to stereotype or define in a few sentences. I hope you are just as messed up.

Cheers,

Abi (with a soft “a”)

Now, you’re probably thinking “He got into Stanford with this shitty essay?!” Yeah, I know, it’s not supercalifragilisticexpialidocious and the language is admittedly rubbish (I didn’t have much time to edit on December 31st). But it’s as funny as funny can be in a college essay, considering that I fail completely at PG-rated humor. And I was adviced (several times) by my college counselor to not use certain words even though these words are so thoroughly embedded in our vernacular that some emotions cannot be expressed without them (example: fuck, shit, damn; can we please move on? everyone knows that in most sentences, fuck does not mean having sexual intercourse). On the whole, I actually think the essay’s pretty different, at the very least in the context of my school (where the majority of the populace is still writing shit like “I want to become a doctor because I want to help people blah blah blah”).

Here’s the second essay I will share, which might also help you answer the question “Why the fuck is this on Planet Mozilla?” since it’s (slightly) about Ubiquity which I happened to be working on at that time. Phrases within [] have been added post-submission.

Stanford students are widely known to possess a sense of intellectual vitality.  Tell us about an idea or an experience you have had that you find intellectually engaging. [250 words]

Ubiquity is a beautiful piece of software. With constant use, it becomes part of you. All the world’s knowledge resides in your fingers. It’s the extension of a man’s mind, the slow but inevitable fusion of the brain and the computer.

But, sitting on a soft couch at a Starbucks in central Singapore, my visions of technology are not so romantic, at least not at the moment. An “Exception: Ubquity.translate() is undefined” annoys me. As I sip the hot chocolate and ignore the constant chattering, I try not to be consumed by this error. For two years, I have written this same program but each time, I have failed by forgetting the bigger picture, by getting bogged down into the details. But it’s not that details are bad. Had Da Vinci spent all his time on the smile, would the Mona Lisa be as enigmatic? The folds of her clothing may seem insignificant but they sum up to create the overall harmony. In the same way, every line of code must be perfect.

But, right now, I just need to get past “Exception: Ubquity.translate() is undefined”. Engrossed in the screen, I look through 100s of lines of code trying to fix this issue. Is the software architecture completely faulty? Or is it just the parser module? Maybe, it’s just an undiscovered bug in the language itself. As these thoughts engulf my consciousness, I buy another cup of delicious Frapucinno.

I scratch the table in frustration.

I call my mom.

I take a toilet break.

I reply to a few emails.

And then, a couple of mind-numbing hours later, I realize that “Ubquity” is actually spelled “Ubiquity”.

How. [Fucking.] Trivial.

At exasperating times like this, I feel like screaming out loud. I absolutely hate coding. I will never program again. But even in these moments, deep down, I know that this is what I want to do for the rest of my life.

Clarifications: When I say I’ve been working on this same program, I mean Devo of course, which for me just continued perfectly into Ubiquity. Also, geeks, please forgive my rather liberal use of words like “module” and “software architecture”. Know your audience, right?

Let me know if you really got tricked by this one. It worked fairly well for the small sample I tested it on.

However, these are not my best essays. The best one was the one sent to Cornell. Although it’s hardly political, I shall not post it just to be safe.It was merely a retelling of the story of Iwuchukwu Amara Tochi which is an extraordinary case that brought the peculiar intricacies of the Singaporean legal system to the forefont. First, to be judged guilty, there is no requirement for proof of mens rea (guilty intent). In this case, the judge noted that “There was no direct evidence that [Amara Tochi] knew the capsules contained diamorphine. There was nothing to suggest that Smith had told him they contained diamorphine, or that he had found that out of his own.” and yet the very same judge convicted him! The second inconsistency (with respect to most other legal systems and the international legal standard) in Singaporean law is mandatory sentencing which means that even if the judge thinks your degree of guilt is low (arguably, no guilt in Tochi’s case but still, in the judge’s view, it had to be a very small degree of guilt) and he wants to give you just a jail term, he cannot because the death sentence is mandatory. This is downright scary. Say you bought apples overseas and unknown to you, they had been  injected with diamorphine. From my understanding of the law,  when you bring those apples into Singapore, you’ll definitely be hanged even though you had no idea you were carrying drugs in the first place. Yeah, like I said, crazy!

But that’s that. What surprises me is that Cornell would reject me during early decision (worst mistake I ever made was to apply ED there). I have a much better application (very objectively, in fact) than the majority of people who apply there. Moreover, this is self-selecting pool of people who definitely want to go to Cornell. And Cornell ED has a acceptance rate of >35% while Stanford RD has an acceptance rate of 7.5%.

It boggles the mind but it also happened to be the best thing to ever happen ever. So, being the arrogant bastard that I am, I sent the admissions office some flowers with a note that read “Thank you for not admitting me. Your loss.”

32 Comments

Filed under Life

Fcuk Earth Hour

Note: Like many people have noted below, this post isn’t about solutions or actions you can do to save the planet. Ironically, I’m just trying to “raise awareness” here about the farce that is Earth Hour. However, a post about real solutions might show up in the near future.

Stop Slacktivism

Poster inspired by Get Excited and Make Things.

Thomas Friedman concurs:

The amount of time, energy, and verbiage being spent on making people “aware” of the energy-climate problem, and asking people to make symbolic gestures to call attention to it, is out of all proportion to the time, energy, and effort going into designing a systemic solution. We’ve had too many Live Earth concerts and Barneys “Have a Green Holiday” Christmas catalogs and too few focused lobbying efforts to enact transformational green legislation. If the money and mobilization effort spent on Live Earth had gone into lobbying the U.S. Congress for more generous and longer-term production and investment tax credits for renewable energy, and for other green legislation, the impact would have been vastly more meaningful.

You’ll pardon me, though, if I’ve become a bit cynical about all of this. I have read or heard so many people saying,” We’re having a green revolution.” Of course, there is certainly a lot of green buzz out there. But whenever I hear that “we’re having a green revolution” line I can’t resist firing back: “Really? Really? A green revolution? Have you ever seen a revolution where no one got hurt? That’s the green revolution that we’re having.” In the green revolution we’re having, everyone’s a winner, nobody has to give up anything, and the adjective that most often modifies “green revolution” is “easy.” That’s not a revolution. That’s a party. We’re actually having a green party. And, I have to say, it’s a lot of fun. I get invited to all the parties. But in America, at least, it is mostly a costume party. It’s all about looking green–and everyone’s a winner. There are no losers.

Earth Hour

Did you hear that Shell “supports” Earth Hour? Shell! Yes, that Shell! The one that made 450,000,000,000 dollars last year selling oil.

Did you know that in 2007, when questioned about Earth Hour’s effectiveness, the organizers claimed that it was just “the beginning”? And then, they said the same thing in 2008. And in 2009. In 2050, when half the world is underwater, they’d probably say the same thing. It’s just “the beginning”. (If you haven’t realised yet, it’s 2009 and we’re almost at the end…)

Did you realize that the words used in the Earth Hour ad, “an election between Earth and global warming” are a false dilemma?

Slacktivism

This post could be very long but you get the point. As readers of this blog, I’d expect you to be intelligent enough (ha!) to understand what’s wrong. It’s not just a waste of your time to support Earth Hour but it’s also very dangerous to condone slacktivism. Tonight, millions of people will go to bed happy thinking that they did a good thing, that they helped to save the world. But you know that’s not true. Start changing the world. For real this time.

Thanks for reading.

46 Comments

Filed under Life, Philosophy, Politics

The Appreciation of Humanity

If I have to shoot 200,000 students to save China from another 100 years of disorder, so be it.” – Minister Mentor of Singapore Lee Kuan Yew evoking the ghost of Deng Xiaoping whilst endorsing the Tiananmen Square massacre, Straits Times, Aug 17, 2004

At its core, Dreams From My Father is about the appreciation of humanity and its many ways. A leader with humanity is rare in a world brimming with brutal dictator, insolent kings and corrupt politicians. As Obama lives in Jakarta, Hawaii, LA, New York, Chicago and travels to Asia, Europe and Kenya, he tries to comprehend the social structure in these places. What does each person in that society really desire? Why are people’s beliefs and traditions so vastly different? What are their similarities? In Kenya, he discovers that the oppression of women is nonchalantly accepted. His grandfather himself would harass his grandmother. And his grandmother didn’t mind at all because she knew of no alternative. Polygamy is practiced widely in Kenya, too. Wifes don’t mind other wives. Is the Kenyan way of treating women brutal? Of course, it is. But Obama understands that it does not seem so inhumane to Kenyans. What seems brutal to a Columbia graduate might not be for a Kenyan goatherder. He can’t blame his grandmother for accepting servitude and for putting up with the beatings nor can he blame his grandfather for beating her. Similarly, he can’t blame his white grandmother for being scared of black men on the street.

As I kept reading, I became increasingly convinced by his ideas of pragmatism. Once you learn to appreciate humanity, you will also learn to be pragmatic because you know that humans are imperfect, because you know that although being an ideologue will not fail completely, nor will it suceed.

Politically, Obama is widely considered a pragmatist (which annoys a lot of people). In his inaugration speech, there is a great quote that illustrates this belief —

“The question we ask today is not whether our government is too big or too small, but whether it works.”

But to say that Obama is purely a pragmatic person is untrue. His worldview values pragmatism the most but he’s also an ideologue. He beleives in certain values. But the difference lies in his method – pragmatism followed by idealism. He starts off with a finding a pragmatic solution to a problem and then, modifying and infusing it with his values. This is the exact opposite of what Bush did. Bush knew that tax cuts would increase budget deficits and yet, he decreased taxes 3 times! In fact, he fired his first Treasury Secretary for pointing out that taxcuts would worsen the economic situation. And then there are other ideologues who say “Abortion should be illegal no matter what” or “You shouldn’t use condoms ever”.

I believe in things, too. I think that human lives are superior to all other living organisms. And I wonder why shooting a deer is not illegal but shooting a dog is. To me, there is no difference. But if I was a judge, I’d not make it a crime to shoot deers because it’s a matter of culture. These social idiosyncrasies that have accumulated over the years must be tolerated. Mixing ideals, beliefs and pragmatism is tough. Here’s a simple conundrum using a single issue as an example —

I strongly believe gay marriage should be legalised. I think giving people equal opportunities and rights is something that can’t wait. But I also believe that society cannot yet accept gay marriage.

Why isn’t society ready to accept gay marriage? If a female acquaintance tells you that she is married, do you ask her “What does your spouse do?” or do you ask “What does your husband do?”.  The other day, I was reading a NYTimes article about a male fashion designer, I read the line “when I entered his apartment, his husband was in the kitchen yelling…”.

Unconsciously, I went back and read that line again!

It’s not that I’m homophobic. I just happen to know very few people who are gay. These are our internal assumptions and it’s tough to change them. Most homophobic people are homophobic not because they want to be but because they grew up in a world where there were no homosexuals or where homosexuals were constantly demonized.

Historically, such issues have been solved by time. Legislation never works. You simply wait for the next generation to be more accepting. Is there any way by which we can make this faster?

The journey from being a ideologue to a pragmatic ideologue was/is not easy. If I can symphathise with everybody’s points of view, is anyone wrong? How will I be motivated if I’m angry at nobody? Will I end up siding with the restriction of freedom despite being an egalitarian? Do I risk becoming more socially conservative? Am I living out what Winston Churchill said “If you are not a liberal at 20, you have no heart. If you are not conservative by 40, you have no brain”?

There are difficult questions with no answers (?). It’s incredibly scary to think that I might end up losing my own values in the process of appreciating everyone else’s values.

9 Comments

Filed under Life, Philosophy, Politics

Two Things: 1 on the desktop and 1 on the web

And two questions—

  1. Can a desktop application be cloned (feature-for-feature with the same user experience) on the web? 
  2. Can a web application actually be better than the desktop version? 

Things.app

Things.app?

The delightful answers—

  1. Of course, everything except the menubar (which is pretty much redundant in this application) can be recreated. From drag-drop to undo to instant editing without having to click the “Save” button constantly.
  2. Definitely. A key problem with modern Todo/GTD applications is the lack of integration with email. Half your Todos probably come from your email inbox. But with web APIs, it’s possible to get all emails labelled “actionable” to automatically become Todo items in your GTD application. Similarly, your reading list, Twitter replies and a million other services can be integrated. That’s the power of the web.

Thanks to Christian Sonne (the man in the tutu!) and other folks on IRC for some much needed CSS help.

32 Comments

Filed under Programming, Web 2.0

Create search (and other simple) Ubiquity commands without writing code

If the Herd was still up (it’s back up now!), you could see that a lot (a majority?) of Ubiquity commands are simply site-specific search commands. And that’s not surprising – search is one of the most common activities on the web (Google’s rich!).

create-new-search-command

What if you could create search commands for any site without writing code and in just a second? Now, you can. Subscribe to this command. Then,

1. Select any searchbox
NYT

2. Execute this command
Create search command

3. And… oh! There’s your command (it even has a icon!)
NYT Search

Go ahead and create searches for Digg, GitHub, BBC or even your own blog. If you need to, you can edit the commands in the command-editor.

Thanks to Marcello Herreshoff for creating this, I added support for POST forms. Note that this command will not work on search forms where they use Javascript to change the url or something else. Examples: Vimeo, Facebook (which has probably the worst URLs ever.) and Gmail. But the vast majority of sites will work.

create-bookmarklet-command-from

It’s rather easy to create commands from bookmarklets in Ubiquity but it could be easier. If the bookmarklet is not already bookmarked, drag it to your bookmarks toolbar. Then, use this command to convert it. It will suggest all the installed bookmarklets.

Create bookmarklet command

Bookmarklet command

You can change the name of the command in the command-editor.

Subscribe to these two commands here. Both these commands will be included in the next release of Ubiquity too.

NOTE: Since the newly created commands are stored in the command editor, it might interfere with your existing command-editor commands. If you have some such problem, pick only the commands you want, click the “Share” button and then, subscribe to it. Now, you can use your command editor again. Thanks Sam! (See Sam Hasler’s comment below).

LOLCODE?

In the future, it should be possible to write complicated Ubiquity commands using Lilyapp or a interface like Yahoo! Pipes. I’d also love to code commands in Brainfuck and LOLCODE. Any other suggestions?

13 Comments

Filed under Programming