libjingle

Thu, Dec 15, 2005

The second thing that happened today is that we released libjingle on sourceforge. Full details are up on the Talk blog and at code.google.com. Sean Egan (of Gaim fame) packaged up the code that Talk uses to do p2p as a library for others to use.  Hopefully this will start a flood of interoperable voice (and other p2p applications).  So that anyone can use it the code is released under a berkeley style license. Sean put together some great docs on how to use the new library here.

One thing to keep in mind -- we haven't harmonized the specs and libjingle yet.  The goal is to have libjingle implement the spec as it matures.  Right now it just interoperates with Talk and is pretty far from the Jingle docs that the JSF released.  As the spec moves forward the code will converge.  Most of the differences right now are syntax.  For example the underlying technique for punching through NATs is unchanged and is an adaptation of ICE.

We've wanted to release this core part of the Talk application for a long time now and I'm super excited to see it happen. The combination of these new standards and the libjingle library should be pretty potent.  And since Jingle can be used for more than just voice, I'm sure we'll see this stuff used in interesting and surprising ways that we never envisioned.

Update12/17/2006: Clarified how divergent spec/code are and pointed to ICE.

Jabber Jingle

Thu, Dec 15, 2005

Today is a travel day for me, but I wanted to log in from the airport to post about the release of the Jingle specs.

We've been working with the Jabber community to standardize the P2P protocols that we've built on top of XMPP/Jabber.  This process has already been super useful in thinking through new scenarios.   I look forward to continued collaboration between Google and the Jabber community.  More links on this: Peter Saint-Andre's blogPress release on jabber.org.  JEP-0166 and JEP-0167.

The current protocols are still a work in progress so stay tuned for more developments.

Converting Digicam Video

Mon, Dec 12, 2005

For serious portraits or low light situations, we've been taking lots of pictures of Annie with my Canon 20D.  I also have a Canon SD300 for convience and video.  The video modes on these small cameras are amazing!  I can't see myself needing more than a couple minutes of video.  Who needs a video camera for their kids these days?

However, dealing with the video out of these things can be tricky.  I post my pictures to smugmug.com (if you sign up use my referrer coupon: aoVCSFuPXSipF).  I've got a plan that also lets me upload videos.  The only format they take is MPEG 1 (for compat reasons) but the camera produces MJpeg AVI files.  Converting these things can be trickier than you'd think. 

Here is what I've ended up doing -- if someone else has a better solution let me know.

  1. Download 'MPlayer-mingw32-1.0pre7.zip' from here [7.8M]. There are a lot of distributions out there but most of the older ones don't work for some reason.  This one at least does something reasonable.
  2. Unzip this into a directory.  I put it under an MPlayer dir in my "program files" dir.
  3. Create a batch file with this in it (call it convert-avi.cmd or something):
    @echo off
    setlocal
    
    set CL="c:\Program Files\MPlayer\mencoder"
    set CL=%CL% -oac lavc -ovc lavc -of mpeg -mpegopts format=mpeg1
    set CL=%CL% -af lavcresample=44100 -vf hqdn3d,harddup -srate 44100
    set CL=%CL% -lavcopts vcodec=mpeg1video:keyint=15:vrc_buf_size=1000
    set CL=%CL%:vrc_maxrate=2500:vbitrate=2500:trell:mbd=2:vrc_init_cplx=1000 
    set CL=%CL% -ni -nobps 
    set CL=%CL% -o %~n1.mpg %1
    %CL%
  4. Call your brand new batch file with the .avi file you need to convert.  It will create a file in the current directory with the same name but a .mpg extension.

This command line is totally out of control.  I couldn't find a way to wrap lines in batch files so I did the environment variable trick.  I got this via trail and error and I'm not sure what all of the options mean, but here is what I know it does:

  • Encodes as MPEG 1 into a .mpg file
  • Upconverts the audio to 44.1 kHz as that is the only freq I could get to work.
  • Doesn't do any resizing or framerate changes (leaves it at 640x480x30fps for my files)
  • Uses a fairly high bitrate to make sure the quality stays good

For a 18.5 second video doing this compression (just to MPEG1 -- let alone something better) cut a 35M AVI file down to 5.5M.  The only problem I haven't figured out is that the first frame is really pixelated.  If you can figure it out you win my undying gratitude.  Check out the docs here or here.

Bonus: You can rotate the video during the conversion with a ,rotate=90 on the after harddup on the -vf argument.

Finally, check out a cute video of Annie here.

Google Talk Blog

Sun, Dec 11, 2005

Long time no blog.  We've been super busy with the holidays and little Annie.

In case you missed it you should check out the official Google Talk blog.  Thanks to Ana and Mike for putting this together.

Any team member (or Googler that has an interest in Talk) is welcome to post but I'm not sure what everyone might be interested.  If you have an idea leave a comment here and I'll see what I can do.

Back to work

Sun, Oct 16, 2005

Monday I start work again after taking three weeks off to spend with the Anne.  If I've been slow to answer mail, that is why.  It is amazing how much activity she needs.  I had grand plans to get lots of cool stuff done while she was sleeping but somehow none of it got done.

In any case, tomorrow it is back to the salt mines.

1 Year at Google

Sun, Sep 4, 2005

I left Microsoft for Google one year ago today.

I've got to be honest; it was a little scary when I left.  I started at Microsoft right out of college after two internships.  Up until a year ago, the lion's share of my professional experience had been at Microsoft.  Microsoft can be a very comfortable place (much less so since they've been cutting benefits).  From the outside, I've also been able to look at Microsoft with different eyes.  What I used to rationalize away now appears absurd on the face.

It is one year later and I'm sure that I made the right decision.  I've been much happier over the last year at Google.  I'm sure some of it was the excitement of just doing something different, but a lot of it really came from the energy of those I work with and actually shipping product.

Oh yeah, and my non-compete and non-solicit contracts with Microsoft have now expired.  If you are looking for new challenges feel free to send me a resume.

On Jabber Federation

Wed, Aug 31, 2005

There have been a lot of questions around Google's approach to federation -- both in the comments on this blog and in other forums (the jdev list, slashdot, etc).  I apologize for the delay in responding to these questions head on.

We've updated our FAQ to clarify some changes.  To save everyone having to look it up in the Google cache, here is the before:

We look forward to federating with any service provider who shares our belief in enabling user choice and open communications. We do believe, however, that it is important to balance openness with ensuring that we maintain a safe and reliable service that protects user privacy and blocks spam and other abuses. We are using the federation opportunity with EarthLink and Sipphone to develop a set of guidelines by which all members of the federated network can work together to ensure that we protect our users while maximizing the reach of the network. [...]

Here is the new text (changes in red):

We plan to support open server-to-server federation. We do believe, however, that it is important to have the safeguards in place to ensure that we maintain a safe and reliable service that protects user privacy and blocks spam and other abuses. We are using the federation opportunity with EarthLink, Sipphone and other partners to develop a set of best practices by which all members of the federated network can work together to ensure that we protect our users while maximizing the reach of the network. [...]

On top of that, one of my fellow Google Talk developers, Gary Burd, has introduced himself to the Jabber developer mailing list.  You can read his first post here.

I, personally, look forward to a long and fruitful partnership between Google and the Jabber community.

DVD Review: Yosemite in Winter

Sat, Aug 27, 2005

Annie and I watched a DVD this morning while I was feeding her.  Actually, she wasn't paying that much attention, but I was.

The DVD was Steve Kossack's new DVD documenting one of his workshops to Yosemite during the winter.  The DVD is what Steve hopes will be first of a series: "Steve Kossack: Photographing the Great American Landscape."  This one is titled "Yosemite in the Winter."

Now that I have the baby, I don't have the time to go on workshops like this, so this is the next best thing.  If you are interested in landscape photography at all, this DVD will be of interest to you.  If you haven't been on a photo workshop, the video will give you an idea of what one of those workshops is like -- without the waking up at 4:30 am to hit a sunrise shoot.  If you are planning on doing Yosemite on your own, Steve's DVD will provide an invaluable guide to how to approach the area and some great places to shoot.

As for Steve himself, I've been on two of his workshops so far (Death Valley and Landmarks of the Southwest) and both were great.  Steve really knows his stuff -- both on the photography side and on the natural and human history of the area.  I've never been to Yosemite, but I'd love to go with Steve sometime in the future.

Goin' to the PDC

Fri, Aug 26, 2005

[In case you aren't up on the MS lingo -- the Professional Developers Conference is the once in a while conference that Microsoft holds where they talk about all things Microsoft.  It is more forward looking than a lot of the other MS conferences.]

I'm going to the PDC to keep up with what is going on with Windows.  Drop me a line if you'd like to chat about Google Talk or anything else.

I'm not sure which sessions I'm going to attend yet, but I can tell you that my interests have shifted somewhat since I've shipped software on the outside.  I'm much more interested in stuff that can help make Google Talk better now than more forward looking stuff that may not ship for another year yet.  I'm also a lot less interested in huge frameworks that tie my product to Windows.  While Google Talk is right now just a Windows only application, we've worked hard to keep the Win32 only stuff isolated so that it will be easier for us to port/write on other platforms.

That being said, is anyone working on an Avalon/.Net Jabber/XMPP client?  I've been looking at the SSL/TLS support in the WinFX SDK and it might be possible to do it without any reliance on external libraries.

Other Google Talk links

Thu, Aug 25, 2005

There are some other members of the team who have web sites that I'd like to point to:

  • Gayle Laakmann -- Gayle just joined our team a couple of weeks ago, but she has already made her mark.
  • Chad Thornton -- Chad was the main designer for Google Talk.  He is one of the reasons that the application has such a clean and fresh look.
  • Reza Behforooz -- Reza has been working on the Google Talk server from the start.

There are probably some that I've missed, but I haven't seen their posts yet.

[Update: Fixed link to Chad!]
[Update: Added Reza]