Broken Ubiquity Verbs
So it looks like the Ubiquity verb I recently wrote and posted about doesn’t work in the new version of Ubiquity. I’ll get around to fixing it eventually but until Ubiquity become less of a moving target I probably won’t be spending too much time on it.
In other news the new roadmap to version 0.2 shows a lot of promise. It looks like they’re planning on integration with the awesome bar and eventually standalone desktop integration. Enso is dead, long live enso!
Ubiquity Verbs
If you haven’t heard about it by now there’s a new extension for firefox that is, as they say, the coolest thing ever! It’s called Ubiquity and is headed by Aza Raskin of Enso (the windows application launcher and then some) fame. The big idea he’s been chasing in both enso and now ubiquity is linguistic interfaces. It’s an incredibly compelling idea that I’ll let him explain:
Ubiquity
for Firefox from Aza
Raskin on Vimeo.
The great thing about ubiquity is how incredibly easy it is to write new commands. For example I was frustrated the other day at work switching between development, testing and production environments in my browser. I was getting bug tickets with a link pointing to issues on the testing server which I then had to manually modify to point at my development server (by changing a subdomain and port).
So, http://test.foo.com/long/path/to/file.jsp?with=query&string=too became http://dev.foo.com:8080/long/path/to/file.jsp?with=query&string=too.
Now this wasn’t an incredibly onerous task to be sure but it’s
repeatable…and we have computers for those sorts of things. So I
cooked up a little ubiquity verb called
switch which does just
that. Subscribe and then you can just type switch this to <subdomain>
port <port> and you’re done!
Here’s the entire source in case you’re interested:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | var custom_mappings = { "local" : ["timd0","8080"] }; CmdUtils.CreateCommand({ name: "switch", author: {name: "Tim Disney", email: "tim.disney@gmail.com"}, license: "GPL", description: "Switch the subdomain and optionally port of a url", help: "This command switches the subdomain (eg 'www' in www.google.com) and optionally port to whatever you like. This is particularly useful if you have multiple environments differentiated only by the subdomain that you would like to quickly switch between (ie development, testing and production environments)", takes: {"URL to switch": noun_arb_text}, modifiers: {"to": noun_arb_text, "port": noun_arb_text}, _switchUrl: function(url, env, port) { var reUrl = /(http[s]?:\/\/)([^\/]*)[\/]?(.*)/; var matchUrl = reUrl.exec(url); if (!matchUrl) { return ""; } var protocol = matchUrl[1]; var host = matchUrl[2]; var path = matchUrl[3]; // pull out domain, subdomain, and port var reHost = /([^\.]*)([^:]*)(.*)/; var matchHost = reHost.exec(host); var domain = matchHost[2]; var subdomain = (env != null) ? env : matchHost[1]; port = (port != null && port != "") ? ":" + port : ""; /* special case in any custom subdomain/port mappings */ if (env in custom_mappings) { subdomain = custom_mappings[env][0]; port = ":" + custom_mappings[env][1]; } return protocol + subdomain + domain + port + "/" + path; }, execute: function(url, mods) { var switched = this._switchUrl(url.text, mods.to.text, mods.port.text); CmdUtils.setSelection(switched, {"text": switched}); }, preview: function(pbody, url, mods) { pbody.innerHTML = "switch selected url to: <em>" + this._switchUrl(url.text, mods.to.text, mods.port.text) + "</em>"; } }); |
QOTD #5 - Happiness Defined - Augustine
So my last post was slightly unfair and…wrong. I posted on an Augustine quote on happiness with out letting him define the word. I’ll give him that privilege now:
How then do I seek You, O Lord? For in seeking You, my God, it is happiness that I am seeking. I shall seek You, that my soul may live.
–Augustine’s Confessions Book X-XX
He also makes a distinction between happiness and joy:
Far be it, O Lord, far be it from the heart of Thy servant who makes this confession to Thee, far be it from me to think that I am happy for any or every joy that I may have. For there is a joy which is not given to the ungodly but only to those who love Thee for Thy own sake, whose joy is Thyself. And this is happiness, to be joyful in Thee and for Thee and because of Thee, this and no other.
–Augustine’s Confessions Book X-XXII
To Augustine there are many things in life we can rejoice in. Not all of them are ultimately good and happiness is found by rejoicing in God.
What’s fascinating to me is that he identifies the idea of happiness as universal and grounded in memory. It is a thing we all seek after in various ways. And Augustine sees it as us chasing a memory.
I think it is safe to say this is a constant theme of Augustine’s writing and probably best summed up in his famous quote:
For Thou hast made us for Thyself and our hearts are restless till they rest in Thee.
QOTD #4 - Happiness - Augustine
Thus happiness is known to all, for if they could be asked with one voice whether they wish for happiness, there is no doubt whatever that they would all answer yes. And this could not be unless the thing itself, signified by the word, lay somehow in their memory. –Augustine’s Confessions Book X
What I find fascinating here is that Augustine is describing the pursuit of happiness as the pursuit of a memory. It’s a state of being we are trying to get back to. A state we are rarely at but always long for. A place we remember.
Can we say that all of life’s pursuits are in search of a memory? Since how could we pursue something we have no knowledge or experience (memory) of? Are we always trying to regain the bit of paradise, joy, happiness we once experienced? And once we attain it, seek it again and again?
QOTD #3 - Universe - Wilson
When people come to understand how big the universe is and how short a human life is, their hearts cry out. Sometimes it’s a shout of joy…for most of us it’s a cry of terror. The terror of extinction, the terror of meaninglessness. Our hearts cry out. Maybe to God, or maybe just to break the silence. — Robert Charles Wilson Spin
To borrow the line from Hitchhiker’s Guide, space is big. Really big. So big it’s pretty much impossible for our minds to comprehend how big it actually is.
Wilson’s characters in Spin are confronted with immensity in both time and space. The basic premise is that the earth is wrapped up in a temporal field which causes time to slow down on earth. For each second that passes on earth, ~3 years pass in the outside universe. This means that within a generation the universe will age 4 billion years.
There have been few SF book that dealt with immense time, it’s mostly about the vast distances of space. Wilson is able to play with some fascinating ideas like using time to terraform mars (send over a few bacteria, allow evolution to work over a few million years and presto! A livable world within a few time dilated earth years) or the immanent destruction of earth (within a human lifespan the sun will expand to consume the earth).
Wilson’s characters are forced to deal with the immensity of the universe. As the quote alludes, some of them respond with shouts of joy (one character devotes his life to understanding and dealing with the spin) and others with a cry of terror (another character winds up in a dangerous christian millennial cult). But respond they must in the face of the immanent immensity of the cosmos.
What is fascinating to me is that even though our conception of the universe has expanded so quickly (it wasn’t until the 1920s that we started to realize the universe was bigger than our galaxy) our ability to deal with its immenseness has not. To a certain extent this makes sense, the immediate here and now is more pressing, but I believe that our smallness and the universe’s bigness should inform how we live our lives in the here and now.
Carl Sagan can put it better than me: