|
|
Six years ago, we did the first large scale Ogg Theora stream from the 2004 GUADEC conference.
It was a dime on its side to get things ready for this year. I purposely removed myself from the organization, because for various reasons I'm not going to GUADEC this year, but I was hoping the rest of the company would do their part to get this working, and I just provided the necessary prodding along the way. I've been told one of the organisers in charge of this got ill at some point and communication went a bit south during that period, so I had some complaints from our support guys that they had to do last-minute rushing.
But the streams are live today, and a few developers here are giddily running around looking at the stream, the image, working on some typical bugs you get when you're doing stuff like this for the first time (the artifacts on keyframes the encoder seems to have remind me a lot of the Theora bugs we had to squash back in the day, and obviously they are worse on still images, like, say, an empty conference room...)
Go check out the stream and make sure you have a WebM-enabled browser, like the Firefox 4.0 beta or latest Opera.
Congratulations to our intrepid hackers like Zaheer and Andoni for their hard work a few weeks ago on WebM, and I've been told Marc-André actually went to Holland just to deliver the encoders :)
Six years ago, we did the first large scale Ogg Theora stream from the 2004 GUADEC conference. It was a dime on its side to get things ready for this...
So obviously, blog-wise I fell off the face of the earth for close to two months.
The immediate reason is some personal stuff happening to me that I needed to bounce back from (well, ok, I lied - it's not stuff, it's just one tiny little thing.)
As a result I haven't done much hacking at all, beside a few fruitful morituri hack sessions.
As a consequence, I don't have much useful to report, but I am going to slowly get back to some hacking. My Lego Mindstorms are already with me here in Barcelona so I am going to get started on that CD ripping robot Any Day Now.
I'll get more specific about what non-hacking stuff I've been up to recently after the fallout of the personal stuff, but for now I'll just mention I've been hugely enjoying getting back to playing basketball over the last year. A while ago Farid taught me a nice layup trick, and yesterday I had Pepe film it:
I haven't pulled that one off correctly during a game though!
Oh wait, I lied. Yesterday I got a proof of achievement of something hacker-related: my Spanish diploma in Twisted!
71154
I need to buy me a wall to hang that on, it's just too cool! And the back lists all skills achieved, in Spanish. Check this out:
"El manejo de errores robusto con diferidos". I'm sure that official had a field day translating deferred into Spanish.
Life! I'm back to eating you, one bite at a time. Make sure you're ready for me.
So obviously, blog-wise I fell off the face of the earth for close to two months. The immediate reason is some personal stuff happening to me that I needed to...
For personal reasons, I haven't been blogging lately, but lights are starting to prick through the clouds.
The past week however was a very interesting week in multimedialand as I'm sure most of you already know. In a nutshell, Google bought On2, a codec company (responsible for VP3, the seed for Theora, and VP6, used in Flash). Then they released VP8, their latest codec, as an open source codec.
Read all of the other posts for the nitty gritty about patent issues, code and codec quality. But it was amazing to see the community active, patches show up everywhere for programs, and rallying to make open source do what it does best.
Meanwhile, back at the farm (our little streaming company), a bunch of our hackers got excited too and executed on the match made in heaven. Zaheer's blog has all the details, and yesterday all I did was check out a bunch of code and run this simple Flumotion launch line:
PYTHONPATH=`pwd` FLU_DEBUG=4 bin/flumotion-launch videotest-producer ! vp8-encoder ! webm-muxer ! http-streamer
And it Just Worked in the WebM Firefox build.
The part I like best about this ? I didn't have to do a single thing, or say a single thing, or ask a single thing, to get our guys excited and hacking and delivering. Just as well, because again for personal reasons, I wouldn't have had much time or energy to help them out.
It makes me proud to be a CTO of this company. A big thanks to Zaheer, Andoni, and Xavier, and anyone else I may have missed because I wasn't paying attention.
For personal reasons, I haven't been blogging lately, but lights are starting to prick through the clouds. The past week however was a very interesting week in multimedialand as I'm...
For some unfathomable reason it's been a rather productive two weeks of short ##morituri hacking sessions.
I was wondering why I wasn't getting any feedback or trac tickets, until I found out that a) I had five month old patches lying around in my trac and b) I forgot to configure the ticket mails properly.
That, spurred with actual bug reports from blizzard who seems to have ripped 600 CD's with this piece of code already (more than me, in any case), kept me going towards a new release.
So, this new release adds, among other things:
- 'rip image encode' to encode a lossless image to a lossy one (vorbis, mp3, ...)
- tagging tracks with MusicBrainz id's
- 'rip image retag' to apply up-to-date musicbrainz info (including id's) to existing rips. I did this one specifically for Chris when he found out none of his rips had the MusicBrainz id's and I felt guilty.
- added an auto-generated man page.
- Generate a complete list of known drive offsets to try with 'rip offset find' based on the AccurateRip database.
- improved the basic Task code I wrote for abstracting asynchronous operations that can be hooked into a GLib mainloop or Twisted reactor. Exception information is now more useful.
A bunch of bugs were fixed too, and I especially want to thank Peter Oliver who provided me with three patches that I sadly overlooked. I hope he comes back.
In any case, enjoy the code and start ripping!
As for the next release, I've already started on ripping the data track (which ended up being easier than I thought, using dd and wrapping it in a Task parsing the output). However, I haven't yet been able to write a full image back to a CD, for various reasons. First of all, the .cue files I generate have multiple FILE statements, which doesn't seem to be supported by wodim, and only recently was added to cdrecord. Second, actually writing the data track so far has given me only errors.
It has been possible to rewrite the .iso file into one that can be mounted, and I might have to actually do the writing of discs by first decoding to a single file then writing from that. We'll see.
On the other hand, with tag reading and writing tasks now written, I might start using those in a separate application to finally start managing my music across my different machines.
For some unfathomable reason it's been a rather productive two weeks of short ##morituri hacking sessions. I was wondering why I wasn't getting any feedback or trac tickets, until I...
Day two of the internal platform training sessions. Today is hacking and bugfixing day.
I wanted to take a stab at the task of creating an RPC interface to expose our Perspective Broker interface. I have very little experience with RPC systems (apart from PB, and moap's use of Trac's RPC) so this was a good opportunity to get my feet wet.
Smart hacking is lazy hacking, so I started by Googling. After some false positives, I found a Twisted JSON-RPC project, and since it was maintained by Duncan McGreggor it gave me hope that it would work.
And so it did. I wrote a simple adapter object that takes an instance of a PB root and proxies jsonrpc_* calls to remote_* calls.
This is just a proof of concept; obviously there are many caveats. The main thing being that currently you can only use it for remote_ calls with simple objects that txjsonrpc supports (although it looks like for example it supports a deferred, so sweet).
Obviously, one of the attractions of PB is that you can transfer objects. At the least this bridge could be extended to support getting references to objects and then invoking methods on them or passing them as arguments.
In any case, good enough for a one hour hack.
The code is in my tests repository and you can check out with
svn co https://thomas.apestaart.org/thomas/svn/tests/twisted/pb2jr
As for actually using it - after writing it Jan and I discussed how it should be used, and he told me he doesn't actually want to run this in the same process where we run our PB interface. Instead he wants it to acts a proxy, which would at best mean doing code inspection or importing of the PB Root in the proxy to be able to provide the JSON-RPC interface dynamically, and you wouldn't be sure if the running code's PB Root is the same as whatever you have on disk in your proxy.
I'm not very convinced about the coupling argument, because this is just a thin layer on top of the PB server, and everything will end up going through the PB server anyway, so I don't see any gain from decoupling here.
I lost interest while discussing, so I'm going to leave it in its current state for now. Although I would have preferred to just plug ahead, do some of the cooler introspection bits, provide a web UI to look at methods and invoke them, and so on.
Day two of the internal platform training sessions. Today is hacking and bugfixing day. I wanted to take a stab at the task of creating an RPC interface to expose...
« Previous Page — Next Page »
|