Recently in Joost Category
Today, my four year adventure with Joost ends. Yes, four years, amazingly so. I believe nobody beats me in that “achievement”. What a ride it has been.
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:
- cram full-screen H264/AAC video handling into Mozilla
- get a scalable SVG/HTML/CSS-based UI running smoothly and alpha-blended on top of aforementioned video
- ingest, transcode, organize, and manage video content from a long list of different content owners, whose idea of “digital” was an Excel sheet … if we were lucky
- build a video distribution p2p transport layer on top of a proprietary p2p library meant for audio
- build both the client and server side of a video advert serving platform
- somehow track, analyze, and report on all the videos (and adverts) being watched, in hope of earning money one day
- build out the world-wide data centers with hardware and network infrastructure to support all the above
- and much much more…
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 now that Joost is embedded it’s time to exercise the API a bit more :)
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.
With the Flash 9 update to the PlayStation 3 and Joost Embed, it’s perfectly possible to view Joost on the PlayStation 3:
Lots of kinks to to iron out before it’s a totally smooth experience, but we’ll get there I’m sure :)
Yay! A feature I’ve been waiting for, for a long time, is now live: Joost embedded!
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 thought I should have a look at YUI and see how easy it would be to hook up to the Joost APIs. It was not that hard :)
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 thought I should have a look at YUI and see how easy it would be to hook up to the Joost APIs. It was not that hard :)
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 :)
Aha, with a clue from Toni_H I added an “elsewhere” page with my activity stream.
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"$>
Joost has grown up, and we are thus opening up to the world :) So the first “Joost Developer Days” are coming up:
- London (Covent Garden) – 1pm – 6pm – Friday 16th November
- Amsterdam (Central location) – 1pm - 6pm - Saturday 1st December
- New York (Broad Street) - 12pm – 5pm - Friday 7th December
It’s a chance to learn how we do widgets in Joost, and how you can do them yourself. More information on our Joost Development Group.