February, 2008


15
Feb 08

Breathdefying Pizza

Breathdefying Pizza

It’s been a long hard week, and everyone deserves to eat well. Before nestling in for your Babylon 5 marathon try this pizza recipe. It will leave you with the worst breath ever, but it’s okay – You weren’t getting laid anyway.

Step number zero: Pour yourself a drink.

Gather the following Ingredients

Pizza:

* Either a store bought boring cheese pizza or

* Buy a copy of the Bread Bakers Apprentice and have some patience.

Toppings:

* One small onion

* Two cloves of garlic

* Two strips of double-smoked bacon

* 2 dried red chili peppers

* Half of a spicy chorizo sausage

* Your favorite Cheeses. I’m using Jalapeno Mozzarela, and Smoked Cheddar.

Steps:

1) Heat oven to about 400f.

2) Resign yourself to the fact that you’re really going to put all of this on one pizza.

3) Heat up your skillet to medium heat. Cut the strips of bacon into pieces about 1/2inch square. Sear them in the pan to get most of the fat out and add some texture. Once they’re done throw the bacon pieces onto a paper towel to get rid of the artery clogging goodness.

4) Dice the onion and two cloves of garlic.

5) Cut the chorizo sausage into as many slices as you want. This is the pepperoni you were denied your entire life.

6) If you’ve baked your own crust, add a thin layer of sauce.

7) Throw on the garlic and onions, evenly distribute the sausage and bacon.

8) Grate copious amounts of cheese.

9) Crush and add the Chili peppers.

10) Add herbs to taste.

11) Throw it in the oven, middle rack for about 15 minutes.

12) Regret nothing.

PS. I’m joking about the breath thing, but it IS strong. For the love of god rinse your mouth out, and stop watching Babylon 5.


13
Feb 08

Clean Cloud Computing

Michael Geist’s article on Clean Cloud Computing provides a pretty decent introduction to the concept, as well as highlights a few interesting ideas about zero-carbon data centers. Of course, Mr Geist has his concerns about privacy and all with good reasons. Cloud computing has a lot of potential benefits to offer, but if there is a shift in liability to the company or persons operating a cloud, then there will be a very slow or little interest on behalf of corporations. Also, handing over your data to a third party fuzzes the lines about what they can do with your data.

Canada (and all other countries for that matter) needs a service provider that can enable generic, multi-purpose cloud computing who can also ensure the integrity and safety of their data and privacy.


10
Feb 08

Theo Jansen’s StrandBeests

Theo Jansen is a Kinetic Sculptor. This commercial by BMW highlights a few of his sculptures, and demonstrates the beauty of engineering, coupled with well designed art.


4
Feb 08

Pull to Push – RSS to XMPP

You and your friend are standing alone in a room. You’re interested in what your friend has to say, but he’s normally a pretty quiet guy, so every minute or so you ask him.

“Hey. What’s on your mind”

“Nothing”, he responds.

This goes on for a few hours until your friend responds with

“I had a great idea for a blog post!”

Now you can start your conversation.

Now its not so bad in this circumstance. There are only two people involved, but it’s not what you would consider the normal way to have a conversation. Lets place another 10 people in the room, all talking to each other the same way, and things get noisy very quickly.

RSS has been around for awhile, and with the exception of ATOM its generally regarded as the standard for syndicating content. But RSS is a dirty hack. Constant polling from tons of locations and clients means an unnecessary amount of data and strain on servers, not to mention wasted bandwidth (And we love our precious bandwidth). So rather than have millions of clients poll millions of servers, what’s the better solution? We want to push data to clients as it becomes available.

Let’s imagine our ideal circumstance.

There are no more pull mechanisms being used online. Every user and website is having its content updated based not on timers and countdowns, but rather changes and actions are being taken based on events that happen somewhere else online. You write a twitter post, but it also updates your Jakiu, your Facebook status and some other set of widgets. Someone writes an article, and rather than the information being syndicated over RSS, the update is pushed directly into the browsers of subscribers all over, or updated on an aggregate website like Popurls.

There’s no sense distinguishing between clients. A client can be a browser, an instant messaging system, a daemon on a server somewhere, a website, a widget, a cell phone. The possibilities are literally limitless. What we need to get to this point is a transition mechanism, and the first and best place to start is by creating a service that converts RSS feeds into XMPP style messaging. The most popular clients that are available to end-users are going to be what they have already – Browsers and IM Clients. Firefox plugins would allow you to keep your data in a list. A website would allow you to retrieve your list whenever you wanted, a cell phone to get certain information on the go.

It’s interesting and exciting, because it means that mediums where polling mechanisms aren’t feasible can start to participate in more connected way, and applications can speak to each other in a more natural fashion.

-T


google.load("language", "1"); var curstate = 0; var hasloaded = 0; function bnc_show_translated() { if (hasloaded == 0) { bnc_lang_callback(); hasloaded = 1; } for (i = 0; i < 0; i++) { var elem = $("bnc_original_" + i); if (elem) { if (curstate) { elem.show(); } else { elem.hide(); } } } for (i = 0; i < 0; i++) { var elem = $("bnc_trans_" + i); if (elem) { if (curstate) { elem.hide(); } else { elem.show(); } } } if (curstate) { $("bnc_trans_state1").show(); $("bnc_trans_state2").hide(); curstate = 0; } else { $("bnc_trans_state1").hide(); $("bnc_trans_state2").show(); curstate = 1; } } function bnc_detect_div(div_id) { var text = document.getElementById(div_id); if (text) { text = text.innerHTML; if (text.length > 0) { google.language.detect(text, function(result) { if (!result.error) { if (result.language != "en") { if (result.confidence > 0.25) { $("bnc_translating").show(); bnc_xlate_div(result.language, div_id, "en"); } } } } ); } } } function bnc_xlate_div(src_lang,div_id,o_lang) { var text = document.getElementById(div_id); if (text) { text = text.innerHTML; google.language.translate(text, src_lang, o_lang, function(result) { var translated = document.getElementById(div_id); if (result.translation) { translated.innerHTML = result.translation; } }); } } function bnc_lang_callback() { } function bnc_startup() { bnc_xlate_div("en", "bnc_translate_info", "en"); bnc_xlate_div("en", "bnc_translate_info2", "en"); } google.setOnLoadCallback(bnc_startup);