Uncategorized


// Because sometime you just need everything in the global context
var Module = imports.module;
for (i in Module)
    this[i] = Module[i]; 

// note this only works from scripts eval'ed via the C API
// gjs_context_eval or gjs_context_eval_file
// as this == [global object]

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

For those who are flying into Boston and then taking the FUDBus up to FUDCon I have crash space literally down the block from where the FUDBus is picking us up. I have two couches and an Areo Bed for anyone who needs it. Get in touch with me on IRC.

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

For various reasons I am staying out of government politics these days but that doesn’t mean I’m going to stay away from a bit of controversy when it comes to my beloved Open Source crowd.

I remember at one Boston Summit, being held at the MIT Stata Center, where Luis Villa, our much appreciated lawyer in training (or is he an actual lawyer yet and more importantly can we start cracking lawyer jokes?), was holding a Marketing BOF. In this BOF we ended up listing things that GNOME didn’t do well in which someone who was not part of the GNOME community but rather an invited guest took the session to mean that GNOME was in serious trouble and was folding in on itself.

What this person failed to realize is that self introspection and acknowledging ones weaknesses is the first step to becoming stronger. In our case it was the first steps to becoming a stronger community.

It is with this in mind that I read Henri Bergius’ great synopsis on the Apple MagicMouse vs the Open Office mouse design. It illustrates one of Open Source’s short comings with mitigating complexity. To stereotype us collectively a bit, we are like Sheldon from the show the Big Bang Theory. Sheldon can solve complex theoretical physics questions in his sleep but ask him to engage in simple social interaction and he hides behind condescension and excuses the interaction as unimportant.

Similarly, ask us to solve a complex computer problem and we will do it but ask us to make it easy to use, something the masses would go out and spend money on, and the same indignant statement seems to permeate every discussion about it – “that’s not something I would want to use”. Ok, so the analogy isn’t fair because as a group we are as diverse as any other but from the amazing things that we have produced it is clear that collectively we have a hard time hiding the complexity of it all. For some reason Apple is able to promote ease of use and they get praised for it but when we try to promote it we hit a wall of cynicism – “You’ll have to pry my user interface from my cold dead hands!”

So the question is will we ever learn how to mitigate complexity or will we just leave that for others to add as a competitive advantage? Is our end goal to just be a building block of modern technology or will we be the finished product itself? I don’t have that answer but I do know it is something we need to introspect on. We need to ask ourselves these hard questions, not as acknowledgement of failure but as acknowledgement of the fact that we can always do better by honestly and without cynicism, examine our weakest points. As other parts of the industry learn from our successes in development and internally implement changes based off of the Open Source model, we too need to look at their successes in the mass market and see what we learn from them.

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

Sean’s wedding is down in the books and now it is time for my twin sister’s wedding. For that I am flying out to Rome today and will be running around Italy for the next two weeks. Four days in Rome, three in Venice, three in Lake Como and one in Milan.

I won’t be bringing a computer so I will only be checking my public e-mail accounts infrequently at internet cafe’s. The best way to reach me will be by phone.

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

About

Kamaloka-js is an implementation of the AMQP messaging protocol in native JavaScript. It is setup to be used with Orbited but can be used with any library which produce TCPSockets in the browser similar to Orbited. Kamaloka bindings are generated from qpid XML protocol description files.

Status

You can currently :

  • negotiate a connection with an AMQP 0.10 server (support for adding and loading different versions is there if a new spec comes along)
  • issue any commands and controls described by the spec (whether or not the server is doing anything with them has not been verified yet but, it doesn’t drop your connection)

Some limitation:

  • for now we don’t handle multiple frames or channels though this feature is planned down the road
  • we don’t do automatic version negotiation, but then we only implement one version

Why Kamaloka

amqp-js was taken by a project that implements the 0-8 AMQP protocol through Flash. If some day the qpid project wanted to use kamaloka-js as the definitive AMQP javascript implementation I would be happy to rename it qpid-js, but I am not that presumptuous. The thought process for the name went like this:

qpid->cupid->kama->kamaloka

Since Kama is in the same lexicon as Moksha (another project I work on which will be using the bindings) I thought it fit nice. It also allows me to name the QMF bindings kamarupa-js since according to the wikipedia Kama page “Kama-rupa is a subtle body or aura composed of desire, while Kama-loka is the realm this inhabits.” So QMF inhabits AMQP :)

Playground

Included in the distribution is a playground for testing the bindings in interesting AMQP configurations on your local machine. As pieces get implemented the playground will expand to show off different ways of using the bindings. Bellow is an example of using the current low level bindings based off the python subscribe example:


<script type="text/JavaScript">
   Orbited.settings.port = 9000;
   amqp_broker_port = 7000;

   amqp_conn = amqp.Connection({host: 'localhost',
                                port: amqp_broker_port,
                                send_hook: function(msg) { // for debugging
                                                       append_msg('SENT', msg);
                                                  },
                                recive_hook: function(data) { // for debugging
                                                        append_msg('RECV', data);
                                                    }
                             });
    amqp_conn.start();

    // You should have your server generate a UUID since browser methods
    // are unreliable at best
    session = amqp_conn.create_session('not_a_great_id' + (new Date().getTime() + Math.random()));

    var fedoraproject = "org.fedoraproject-" + session.name;
    session.Queue('declare', {queue:fedoraproject, exclusive:true});
    session.Exchange('bind', {exchange: "amq.topic",
                              queue: fedoraproject,
                              binding_key: "org.fedoraproject.#"});

    // Bind each queue to the control queue so we know when to stop
    session.Exchange('bind', {exchange:"amq.topic",
                              queue: fedoraproject,
                              binding_key:"control"});
</script>

Give me the code

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

Hey everyone, my two roommates are moving out to be closer to the city. Those who have been to my place know it is an amazing apartment in North Cambridge, MA with a five minute walk to the Alewife T station. If you are looking to move or know someone who needs a place let me know. The lease is for a year and is super inexpensive at $635 a month per person plus utilities.

Oh and you will have to like dogs since Ty is staying too :)

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

Since Mozilla decided to back ogg Vorbis and Theora as a baseline standard, Monty committed to leading the charge for a better encoder, Edward Hervey has been kicking butt and taking names with PiTiVi and now Blizzard has blogged about Dailymotion using open codecs, everything seems to be falling nicely into place. One can’t help but admire building momentum.

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

I don’t think it fits in the true definition of ironic because after finding out that Google bought a defunct paper mill I would have expected they would change it into a data center. What would have been ironic is if they had continued to make paper. No this is not ironic but it is highly symbolic – something which I am sure was not lost in the decision to buy the mill. When we look back in better days at the sudden economic downfall, we will be saddened by the upheaval and toll it took on many lives, but we will also be buoyed by the fact that with every great shift comes positive change. Hopefully we will be looking back from a world that wastes less and has more opportunities for all those living in it. 

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

For awhile now the year of the Linux Desktop has been trumpeted – year after year after … Here I present a list of my own thoughts of what is needed for the Linux Desktop to succeed. Feel free to agree or disagree as some of my thoughts may be controversial and some of them may seem negative but you can’t be introspective if all you do is think about the things that we did right:

#1 Mobile is the only way forward – if you aren’t thinking of mobile with every decision you make you are designing for the past. Even desktops can go in power saving modes, sleep and hibernate.

#2 Instant off/on is becoming a reality and something that doesn’t have to be bolted on given that we have access to every layer of the OS. This is not enough by itself to be compelling over entrenched Desktop OS’s but combined with some other advantages and it becomes a killer feature.

#3 Super battery life – Get beyond the 5 hour mark of heavy use and you start to get a full day of passive use on one charge – you can watch 2 DVD’s, a student can take notes in all of their classes, etc.

#4 Single 3rd party application format – e.g. I write software for one class of mobile devices, it runs on all devices with the same security profiles. I don’t care about where the bits come from or how they are stored, just that a person can write something and submit it to multiple vendor’s app stores and have it just work.

#5 Forget about the general purpose desktop – ok don’t forget about it upstream but when making a product you are going to run into the “this doesn’t work like Windows” syndrome. Don’t even mention the Mac because they have been around for a long time and are just figuring out how to push their desktop – and that is through targeted devices like the iPhone and iPod. Even their desktop is geared towards media creation and viewing. The general purpose desktop is just too big a target and will always get compared to the current leader. Guess what, it won’t be the areas where it is better that will get talked about, it will be the areas that don’t quite measure up. In my opinion (brace for it because people will hate me for saying this), all of the Netbook makers putting out general purpose desktops do a disservice to the market by saturating it. Companies coming out with truly innovative products based off the Netbook/Linux combo will be drowned in a sea of Windows wanabe’s. See the next thought.

#6 Products need to be targeted – no one cares you can’t run a full word processor on your phone but they do care when you are selling them a “computer”. Why, because phones do a couple of things really well and every year they can add more computer like functionality without the expectation that it should run like a full computer. Netbooks come from the opposite direction – they are expected to run like full computers but fall short of that goal. Pick a target audience and make it work really well for them and they won’t care that it doesn’t do all the other stuff. In the long run your costs are lower because support is confined to specific functionality. Oh and whatever it does make sure it hooks up to the Internet in some meaningful way.

#7 Change the form factor – if it looks like a laptop, sort of quacks like a laptop, it will be expected to work like a laptop. See above for the issue with that. 20/20 hindsight being what it is I wish the gen 1 OLPC’s were designed like the gen 2 is (it looks like a book), because more than a computer, the XO was a learning device. That kind of got drowned out, first because the project was named One LAPTOP Per Child (catchy but totally forcing us into a box where the rest of the project was thinking outside of it) and secondly because people were asking things like “does it run Word?”. It really should have done a couple of things really well – surf the web, act as an eBook reader and facilitate communications. To be truthful there are a lot of great application written for the OLPC project but by not focusing on targeting the device nothing was highlighting the advantages (of which there were many). The discussion started to revolve around what it couldn’t do instead of what it could (we get back to the fact that phones don’t suffer this phenomenon).

#8 Shed the cheaper is better mantra because while inexpensive can be a selling point that is a different beast than cheap. Inexpensive implies getting more value than what you are paying for, cheap implies getting what you paid for. I hate to say it but the Linux Desktop is considered the cheap alternative. Why was the Linux Server able to avoid this trap? It really is all perception but as they say, perception is reality.

#9 Stop trying to compete in such a small market segment. All of the mobile developers need to work closer together to grow the market, solidify the technology, set meaningful standards and bring down prices while adding value.

#10 Differentiate yourself through the services you offer – if you are targeting a specific group of people there might be some overlap with competitors but the truth is there are so many target groups these devices can appeal to that as a whole the market will have a higher chance of flourishing. Having too many similar choices will just confuse people and they will end up going to what they are familiar with. By tying to services that are of interest to your target group you give them a reason to acquire your device over another and have a vehicle to keep them engaged (e.g. you have a potential continuous revenue stream as opposed to a oneoff)

Feel free to flame me but imagine this scenario – you are going on vacation and you don’t want to lug your work laptop with you. You know there is always going to be waiting involved so you buy a $300 Travel Companion Netbook. You just happen to be a member of Netflix and the box says it works with Netflix. You set it to download a couple of movies and since you also like to read on the plane so you buy a couple of e-books from Amazon. An alert notifies you that you have three hours until your flight but there is a delay so make that four. This is because you configured your Travel Companion to hook up to your travel service provider. You get into the checkin area of the airport and you don’t have to wait for an open kiosk because your Netbook can check you in and the barcode on your screen can be scanned for the ticket. You get on the plane and start watching one of the movies you downloaded but the flight attendant tells you to turn off your device for takeoff. You close the lid and instantly it turns off. As soon as the flight is in the air you flip it open and instantly you are watching the movie you had paused. You read some books on the device, catch some sleep and then wake up checking the flight status which get updated from the plane’s onboard server. You notice the flight is playing that movie you were dieing to see so you stream it from the plane’s server and watch it in full HD. Once landing you pull up a map of the current terminal and directions to the baggage claim. While you wait for your bags you start making reservations for dinner and notify the hotel that you are on your way. You are looking forward to well deserved rest and relaxation and take some pictures of yourself with a big grin, adding a nice “You wish you were here” banner on it. You then send it off to all of your co-workers who are picking up your slack back at the office.

If your Netbook could do half of what I described in the above scenario, no one would be asking, “but does it run Word?” And to think, travellers are only one target audience.

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

One of my biggest pet peeves is this argument:

You’ve done ***************** this much “good” so you are obligated to do more (and to my benefit first). If you don’t do so the world will implode.

I especially hate it when the person making that argument benefits from that good but doesn’t think they should contribute to it.

I do however agree with this argument:

You have done ******************* this much “good” and as a result have benefited from that good on average more than others, you have an obligation to keep putting in as much as you can. I am a beneficiary of your good and will try to add to it but I may lack the ability to contribute in any meaningful way.

On the philosophical side:

Is it more moral to get paid for the above arguments’ “good”, which frees you up to do more of the “good” or to do something else for a living with results being the scope of your “good” contributions are less than they would have been?

Those questions I don’t think there is a real answer to.

And no Spot, I’m not going to suddenly quit, I just sometimes wonder why I chose to be a public free software developer when it means I have to deal with anonymous idiots or break my own moral code on censorship.

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

Next Page »