For me it started in Leiden, a small town in The Netherlands, in June 2006. Around 20-30 people (cannot remember how many really), and growing at an insane pace (to reach 200+ within less than a year). Hyped up to insane heights at the very start, with the “potential of a new Skype”. Backed by the Skype founders and staffed by “the best and the brightest” in both business and engineering. What could go wrong? The sky was the limit, and the aim was (believe it or not) 100 million users viewers by the end of the year.
During an incredible busy (and abnormally hot) summer we all slaved through to pull off an impressive engineering stunt:
And we did it — it was fun (and hard). And quite an achievement! Especially considering that Joost was physically distributed from day one; We had people sitting in most parts of Western Europe.
Engineering-wise we kept slaving over the Mozilla client, and fixing/extending/reinventing all the backend systems and the transport layer — including multiple ventures into live streaming. Then on to the web-based version with a short-lived custom p2p-based browser plugin (cross-browser, cross-OS), followed one month after, by a Flash-based direct streaming approach. Just for the pure engineering part of the client alone, that led me through (the murky depths of) Gecko with C++ and Javascript, C++ with the Qt toolkit, and finally ActionScript 3. On top of that came of course random encounters with Java, Python, Ruby, PHP, Perl, XSLT, and whatever else I’ve forgotten. It has thus been quite a trip through various systems, libraries, and programming languages.
Apart from the pure technical experience, Joost was also a chance to work with some crazily talented (and/or just crazy in general :) ) people in this industry. The amount of talented people Joost managed to attract was amazing, and I feel privileged for having been part of it. I hope to be able to keep in contact with many of my ex-colleagues in the future.
Sadly, Joost itself did not quite turn out to be the otherworldly success (and money-printing machine), that we all hoped for it to be. There has been endless speculations and analyses of why, so I’ll not dive into that too much. I’ll only note that from an engineering perspective, I think that one key reason that it did not go as planned, was that Joost simply had too much money. Sounds very bizarre, but it meant that we had the freedom to hire whoever we wanted, and then run in all (crazy) directions at once. One look (in hindsight) at the above list of should tell you that we tried to do too much ourselves. Business-wise it should be pretty clear that “online video” is here to stay, and the amazing list of companies trying to do parts of what Joost tried to do are astonishing; Hulu, Boxee, Clicker, Freewheel, Ooyala, etc. (Funnily enough, Google TV is also unveiled the same week I leave Joost :) )
Recently though, Joost has entered a new phase after being bought by Adconion Media Group. Already joost.com has gotten a much needed makeover, and Adconion have scored some pretty impressive comScore numbers with the Joost Video Network.
It will be very interesting to see where this will lead Joost, although I’ll be watching from the sideline from now on. I have served my Joost time I would say :), and it is off to pastures new. So I will be joining the fabulous guys at chartbeat Monday. A new adventure begins.
(Now the question only question remaining is: Who is going to do a “Joost-version” of the fabulous Riot On! documentary? :) )
Translated into Belorussian.
]]>So what I really want is a little piece of software that polls my last.fm RSS feed and Growl notifies me on song changes. I failed to find it, so I made it myself :)
It needs Python and the GrowlNotifier module. Should be packaged into a nice little dmg, run in the menu bar (possibly with a “love this track” button), etc…. yeah yeah, ‘some day’ :) You need your own last.fm API key though, as I doubt I should be redistributing mine… dunno if there’s a way around that?
]]>So the meme… I agree with Stephane that five is a bit limiting. Some of the “big ones” are bound to fill most, if not all, of the five spots. Hence, ten it is.
It’s hard to beat Google. Not just in search, but their entire plethora of web apps these days. I’m a big fan of Google Docs, Google Reader, and Google Calendar especially.
Is Facebook really useful, or just fun / a waste of time? Well, it’s both for me. Living abroad and traveling as much as I do, it’s a really useful tool for me to keep up with friends and family.
Micro-blogging, once you get the hang of it (and stop sharing updates between Facebook and Twitter all the time!), makes a lot of sense. A good way to keep on top of things, professional and personal. (although to be fair, it’s mostly the Twitter APIs I use, as I very seldom visit the actual site but always use 3rd party client)
Although Facebook wins on the “social photo handling” so far (can we have three cheers for people tagging, which Flickr also just added support for), Flickr wins in openness, full size photos, organization capabilities, 3rd party integration, groups, etc — which is to say, just about everything else than “fun photo album silliness”.
When I have to book flight tickets, Kayak takes the prize for me. It just works, ‘nuff said.
SeatGuru is a pretty useful tool when you have to chose the seat on your flight. It has a database over most carriers’ planes and have details about each seat. Handy to find a seat which has power for example, where you are not sitting halfway in the restrooms, etc. Indispensable for long flights.
Dopplr is yet another social network, focusing on travels. So now that I have booked my flight, and found my seat, using the two sites above, I use Dopplr to spread the word about my travel so that I can (re-)connect with people I know. Its rival TripIt is basically the same, although their email parsing seems a tad better (for automatically adding itineraries). Still, there’s something about Dopplr that I like better.
Wikipedia has turned out to be the de facto fact finding place on the net, in spite of it being all user generated with all the issues that potentially have. Even so, when I look for facts, it is not exactly a matter of life and death, so it is ok that it could be a bit incorrect.
Amazon has turned into the Wal-Mart of the web it seems, and has also started to be my first destination for shopping online. They have almost everything. Especially now that I have a Kindle, I’ve fallen in the big Amazon trap for books especially. Besides that, for the more geeky people, they also have “this tiny web service business” on the side, which is wicked cool.
Last, but not least, I am an avid “scrobbler”, and send most of my music listening history to Last.fm. Not only does it give me a history of my music listening, but also makes it possible to find recommended artists, find “musical neighbors”, concerts in my area, etc. Moreover I can also check out what my friends are listening to these days. (It will be interesting to see what will for last.fm, with Spotify, Pandora, rd.io, Vevo, etc. all maneuvering around in that space)
Then for the passing the baton / tagging people. I normally do not like these chain things, but here’s a try for the heck of it :)
]]>So using the favorites call, it’s easy to get my favorites list and embed a random one of them in a page: See the result here.
You can directly copy’n’paste the code directly and change the user quite easily if you do not like my favorites :)
Updated 19/11: I added some comments and made the source a bit more readable.
]]>It took me 1 minute to create this:
Impressive. Now we just need that Joost component :)
]]>Lots of kinks to to iron out before it’s a totally smooth experience, but we’ll get there I’m sure :)
]]>Here’s my normal test video:
(video expired)
You can find the embed code by clicking the embed button on any joost link page, i.e. like http://joost.com/13600fs for the above. (or look at the source here :)
It’s version 1, so there are still some rough edges. Like that we really insist on having the above size. Bear with us. Expect things to improve shortly, and constantly :)
(do note that this is my personal blog … this is not “official Joost speak”)
]]>I’ve hooked up the json favorites call in a DataSource and then connected it to a DataTable, and voila:
A simple (and ugly :) ) page showing my, and some of my colleagues’, favorites.
It’s not just cut’n’paste though to replicate, as I’m proxying the API calls because of cross-domain… will try to find time to show one can get around that.
WARNING: The above builds on alpha APIs so we might just go around and change them all next week… Well, we’re probably not, just saying that we might change some things, so do not flame me when it suddenly breaks down :)
]]>I’ve hooked up the json favorites call in a DataSource and then connected it to a DataTable, and voila:
A simple (and ugly :) ) page showing my favorites, and some of my colleagues.
It’s not just cut’n’paste
WARNING: The above builds on alpha APIs so we might just go around and change them all next week… Well, we’re probably not, just saying that we might change some things, so do not flame me when it suddenly breaks down :)
]]>Just created an index template with this content, and linked it to a file.
<MTSetVar name="body_class" value="mt-main-index">
<MTSetVar name="main_template" value="1">
<MTSetVar name="main_index" value="1">
<MTSetVar name="sidebar" value="1">
<MTSetVarBlock name="title"><$MTBlogName encode_html="1"$></MTSetVarBlock>
<$MTInclude module="Header"$>
<mt:setvarblock name="today_date"><mt:Date format="%B %e">
</mt:setvarblock>
<div class="action-stream hfeed">
<mt:ActionStreams days="5">
<mt:DateHeader>
<h2 class="action-stream-header asset-name">
<mt:setvarblock name="this_date"><mt:StreamActionDate format="%B%e">
</mt:setvarblock>
<mt:if name="$today_date" eq="$this_date">
Today
<mt:else>
<mt:var name="this_date">
</mt:if>
</h2>
<ul class="action-stream-list">
</mt:DateHeader>
<li class="hentry service-icon service-<mt:var name="service_type">">
<span class="entry-content"><mt:StreamAction smarty_pants="1"></span>
<span class="published"><mt:StreamActionDate utc="1"
format="%Y-%m-%dT%H:%M:%SZ"></span>
</li>
<mt:DateFooter>
</ul>
</mt:DateFooter>
</mt:ActionStreams>
</div>
<$MTInclude module="Footer"$>
]]>
1) Added the Action Stream plugin to my Movable type installation.
2) Copied the config.yaml from Toni_H under plugins/joost/
3) Added a joost image to mt static path/plugins/joost/images
4) Added this under mt static path/plugins/joost/css:
.service-joost {
background-image: url(../images/joost.gif);
}
and put it in my styles.css as:
@import url(/mt41-static/plugins/joost/css/joost.css);
And voila :)
Update 21/10: Added a dedicated page
]]>‘nuff said :)
]]>It will be two weeks of motorcycling in the beautiful Norwegian landscape to get there, and Lapland and Sweden on the way back — during midnight sun too. Riding there on a motorcycle, will be beautiful, but it will also be a challenge weather-wise, because even though it is summer, it is 5 degrees and raining in a some of region at the moment. I’ll be packing my long underwear for sure.
]]>