Adium

Archive for 2007

Huzzah! 2007 Edition

Wednesday, April 18th, 2007

As discussed previously, Adium is participating in this year’s Google Summer of Code.

Google gave us six slots, just like last year. We’ve made our choices; here they are:

Adding Voice Support to Adium by Implementing a Basic A/V Backend and IAX
Student: Justin Berka
Mentor: Alan Humpherys
More information on IAX.
Improving group chat
Student: Erik Beerepoot
Mentor: David Smith
Unit testing
Student: Patrick Gibson
Mentor: Brian Ganninger
Fix & expand AppleScript support
Student: Matt Handley
Mentor: Peter Hosey
Improving Adium’s XMPP (Jabber) Support
Student: Andreas Monitzer
Mentor: Augie Fackler
Features Andreas wants to implement: Gateway support, PEP, user tune, user avatar, user nickname, OTR-over-Jabber improvements, , discovery browsing, ad-hoc commands, and possibly invisibility.
Improved Bonjour Support
Student: Erich Kreutzer
Mentor: Andrew Wellington

On Jabber: Yes, we had a similar project last year, but that was using Smack (a separate Jabber library), which we had to drop because of the Java-Cocoa bridge going away. Andreas is back to do it again in libpurple.

Also, we’re not going to have a separate student blog this year. Students’ blog posts will be here, on the main blog.

How I make the Adium screencasts

Saturday, April 14th, 2007

Since the Adium 1.0 release, I’ve made screencasts of various Adium features, and I will be creating even more to cover progressively more-advanced material. Here’s how I make them.

Read more…

  1. Create a new user account with everything set to the default.

    This includes both system defaults and Adium defaults. I keep as few things non-default as possible. This means a minimalist Dock, nothing on the desktop, and usually a plain solid-color desktop picture (the default is an abstract drawing called “Aqua blue”, but I figure a solid color will compress better). For Adium, though, I use a different desktop picture—the cow desktop picture that we used for the Adium screenshots.

  2. Record the video track with iShowU.

    I try to do the whole thing in my head, winging a script as I go, which I will forget immediately. Be sure to pause when an OK button or an insertion point is on the screen, so that if necessary, you can cut it out and repeat it to extend time. (You can tell in episode 3 one place where I forgot to do this; the insertion point doesn’t blink out again for several seconds.)

    The setup is 800×600, Animation, max quality, 30 fps, generally with no audio (though I’ll use system audio on Episode 6, Events). You could theoretically use 640×480, but that’s too small for most OS X applications to be usable. 800×600 is the minimum.

  3. Load it into Final Cut Express and mark it up.

    The Easy Setup that I use is 720p HDV Apple Intermediate. FCE doesn’t allow you to set the movie’s dimensions to a specific width and height, so the best you can do is overshoot by the least number of pixels possible.

    Immediately after adding the video track, I move the playhead to somewhere within the clip, then switch to the Canvas and drag the video frame until it’s in the top-left (which requires the Canvas to be set to Image+Wireframe). It helps to open the clip in the Viewer and drag the clip in the Canvas until the black gaps have disappeared from the top and left of the Viewer. The other way to know that you’ve got it in the right place is to look for the blue frame around the clip in the Canvas to be down to 1 px on the top and left sides. Either way, using a screen magnifier like the built-in CloseView (in the Universal Access prefs—now called simply “zoom” since it came back in Jaguar) or Pixie or DigitalColor Meter can help.

    Next I start adding markers at key points in the video. These include clicks on UI elements, the start and end of typing runs, and sometimes the start of a mouse move. I use these markers to sync up the video to the narration. I also cut out insertion-point cycles and OK-button pulses in the Timeline, and repeat these as necessary later.

    No word on how I handle audio tracks in the iShowU recording—I haven’t had to deal with that yet. It’ll come in Episode 6.

  4. Write a script.

    I used to do this in TextWrangler. But plain text has its limitations, so I switched to RTF in TextEdit in episode 4. This lets me use bold in the script (I generally avoid italic, as it reduces readability, and I need to read it quickly).

    I use Luxi Sans 14 as the font. This is a big and readable font, making it good for reading the script off the screen.

  5. Record the narration using .

    It’s a free utility that does one thing and does it well.

    The trick for me is speaking up so that my microphone can pick it up. I’m very soft-spoken, so if I speak normally, it sounds like I’m talking through clenched teeth. You may notice this at times anyway. I’m really not speaking through clenched teeth; I’m speaking normally. I feel like I’m almost shouting when I speak in a manner that sounds normal when I play it back.

    On the hardware side, I use a MXL-990 microphone with a Behringer MIC200 hardware preamp. (Here’s a photo of my preamp configuration.) The preamp’s output runs to the built-in line-in jack on my Mac Pro.

    Audio Recorder saves the audio as an AIFF file. For long-term storage, I use to convert the AIFF file to Apple Lossless in a QuickTime movie, in order to save space. (More on QTAmateur later.)

  6. Load the narration into Final Cut Express and match the audio and video tracks up to each other.

    This means using the razor blade to cut each track as necessary, then taking a freeze-frame from just before the cut, sizing it correctly, and overwriting it into the gap.

    My technique for doing this is:

    1. Right-click on the gap and choose “Fill with slug”.
    2. Right-click on the slug and choose “Duration…”.
    3. Copy the duration from the field and cancel the dialog.
    4. Delete the slug.
    5. Paste the time into the length field in the Viewer for the freeze-frame clip.
    6. Drag the freeze-frame from the Viewer into the lower half of the gap. (The upper half gives you an Insert cursor; the lower half gives you an Overwrite cursor. You want the Overwrite cursor for this.)

    If anybody knows an easier way, I’d welcome it.

  7. If desired, add “color” using overlays.

    I did this for Episode 3, making the overlays in Lineform and adding them to the movie in a second video track.

    The shade overlays (which highlight some element on the screen through a hole in the shade) are done rather simply:

    1. Draw a 800×600 black rectangle. (This is the shade part.)
    2. Paste the relevant frame from the video track (copied from the raw file using QuickTime Player) on top of it.
    3. Draw a second rectangle over the part of the frame that I want to spotlight. (This is the highlight part. It will become a hole in the shade.
    4. Delete the frame-grab so that only my two rectangles remain.
    5. Select the highlight rectangle and the 800×600 rectangle, in that order (it matters).
    6. Choose “Subtract” from the Intersect submenu of the Objects menu.
    7. Export to PNG.
    8. Add the PNG file to the movie in FCE.
    9. Overwrite it into the second video track.
    10. Resize it to fit.
    11. In the timeline, make sure Clip Overlays are turned on. This is the second button from the left at the bottom of the Timeline window. Also set the Timeline view to maximum zoom (rightmost bar in the bar graph at the bottom of the window).
    12. Drag the opacity of the overlay clip down to 30%.
    13. At the start and end of the overlay, set an edit point (by clicking there), then add a cross dissolve.
    14. Right-click on each dissolve and choose “Duration”, then set the duration to half a second (in my case, this is done by typing “;15”, since I had 30 fps).

    The arrows overlay that I use to highlight the incoming- and outgoing-message header colors is done basically the same way, except that drawing an arrow is different from drawing a rectangle with a hole in it, and I left the clip at 100% opacity rather than bringing it down to 30%.

  8. Export using QuickTime conversion.

    The standard export will use Apple Intermediate (which is bad) and totally uncompressed audio. Instead, I use the Export→QuickTime Conversion command to convert to Animation+Apple Lossless.

    This is the first export of two, so I want everything lossless. For the video, I use the Animation codec at 24-bit (Millions, no +), automatic keyframe rate, Best quality; for the audio, I use the Apple Lossless codec at 44.1 kHz, mono, Best rendering quality. The sample rate of 44.1 kHz is the same sample rate I use for the recording (you can set that in Audio MIDI Setup, which is in /Applications/Utilities).

  9. Crop the movie using qtsetclip.

    This is where you get rid of all that black space to the lower-right of the intended frame. The command is:

    qtsetclip 0 0 800 600 Foo.mov Foo-clipped.mov

    qtsetclip will generate Foo-clipped.mov, which is a reference movie that points to Foo.mov for its media. For this reason, do not delete Foo.mov nor overwrite it with Foo-clipped.mov, because Foo-clipped.mov will not work without Foo.mov. Seriously.

  10. Export the cropped movie to H.264+AAC using .

    QTAmateur is basically the old MoviePlayer, reimplemented for Mac OS X using QTKit. This makes it really handy for converting videos from one format to another—in this case, from Animation+Lossless to H.264+AAC.

    This is export #2—the final render. The video format, more specifically, is H.264 Medium+frame reordering+automatic keyframe rate. The audio format is AAC (ahem, “MPEG-4 Audio”), 22.05 kHz (yes, not 44.1—I mix it down here, since I don’t really need CD-quality audio for my own voice), mono, best quality (quality is under Options). I’ve not experimented with VBR.

    I also turn on “Prepare for Internet Streaming”, using “Fast Start—Compressed Header”. This lets QT start playing the movie when it predicts that it will not run out of movie data before the movie ends. I don’t do this in the export from FCE simply because I don’t need it, though I don’t think it would hurt anything if I did.

    The filename of each movie is “Adium1.0-EpNUMBRIEFSUMMARY.mov”. For example, episode 3 is “Adium1.0-Ep3-Chatting.mov”.

  11. Upload the movie to Revver.

    Revver lets you present the movie as Flash or as QT. Obviously, since our audience is almost entirely Mac users, we’re using QT on the Adium screencasts page—no need for Flash.


The process totals many hours. The recording is actually quite short: even the uncut videos are rarely longer than a minute, though the voiceovers take longer. (Remember what I said earlier about extending time on the video track. You will need to.)

The longest part is the editing. It’s hours and hours of tedious work, making sure all the video and audio syncs up correctly. It’s worth it in the end, though—I’m proud of the five finished products so far.

If you have any questions or refinements, feel free to post them in the comments.

Possible AIM/ICQ connection problems

Tuesday, April 10th, 2007

There is a possible AIM/ICQ connection problem. We’re getting reports on irc about it, and some of the Miranda folks are as well. I’m also seeing sporadic reports of problems from Pidgin as well.

We’ve already received about 10 emails regarding password problems on aim/icq.

To be perfectly clear, this is something we have no control over. This is a problem with the servers that AOL maintains for the AIM and ICQ protocols. It would be like telling a crab boat captain on the Bering Sea to control the waters. This is not something we can help with, unfortunately. It’s just something we can watch.

The Instant Messenger Formerly Known As Gaim

Sunday, April 8th, 2007

Check out pidgin.im, the new home of the instant-messenger-formerly-known-as-Gaim. The Pidgin team explains there the reason a name change was needed.

Gaim is henceforth “Pidgin” — a really awesome name for an instant messaging client. (If you aren’t familiar with the term ‘pidgin’ from linguistics, ). Note also that our ideological ties to the project (already significant, given that the core library is the foundation of our messaging connectivity and that we share open source philosophy) have strengthened as a result of name change… Adium’s a duck, Gaim’s a Pigeon (logo still pending, but it’ll be iconic, I promise), and the text-based client based on libgaim, formerly “Gaim-Text,” is now “Finch”. I for one welcome our avian overlords 🙂

Through the name change, ‘libgaim’ has also gained life of its own. The library which previously we were hacking together out of parts of the Gaim source is now an independent, recognized entity (as of Gaim 2.0.0b6, actually). Accordingly, it has its own name now: libpurple. (This is a play off ‘prpl’, which is what a libpurple instant messaging service, or protocol, plugin is called).

Google Desktop and Adium

Thursday, April 5th, 2007

Yesterday, Google released Google Desktop for Mac. I’m happy to report it should import and search your Adium chat transcripts right out of the box. Google Desktop can search any content that’s Spotlight-enabled, and we’ve had our logs searchable by Spotlight since Adium 1.0.

Thanks to the Google Mac team for the shoutout, and congratulations on your release!

Setting your outgoing text color

Thursday, March 29th, 2007

I’ve just posted a new screencast in the Videos section. It’s episode 4, which shows how to set—and reset—your outgoing text color.

The process isn’t pretty; it’s highly non-obvious. The main source of problems is that whereas most other rich-text fields on the Mac go all rich-text or all plain-text, we juggle both. This won’t really work for the user until we put in a dedicated UI for this; that will come in a future version, but we haven’t decided on the best way yet. We do have a ticket for it; that ticket is #6349, which currently has a milestone of 1.1.

In the meantime, the current process is also described in text form on the FontsAndColors page on the Trac.

It’s still not too late to get in on the Summer of Code!

Monday, March 26th, 2007

Evan and I mentioned before that the deadline for GSoC student applications is today, Monday at 5 PM PDT. The nice folks at Google have extended the deadline to tomorrow at 9 AM PDT. I’ve updated the press release to reflect that, but decided that it would be a good idea to make a new post about it as well in order to poke your RSS reader.

And once again, for more information on applying to Adium for the Google Summer of Code, see our SummerOfCode.

Adium 1.0.2 is now available!

Sunday, March 25th, 2007

What could possibly make this beautiful Sunday any better? How about a new version of Adium? Adium 1.0.2 is now available. This bugfix release fixes several “favorite” crashes, improves AIM file transfer (again!), speeds up the Chat Transcript Viewer, improves interactions with iTunes and the OS X keychain, and more – a total of 25 significant improvements.

As always, thanks to our site and support host Network Redux and our download host CacheFly. Want to help out with development? See Contributing to Adium for information on bug hunting, coding, and donating.

Are you a student interested in getting paid to participate in open source development this summer? Read about the Google Summer of Code and apply immediately; only 33 hours are remaining before the deadline!

Trac new account registration issue

Wednesday, March 21st, 2007

I thought I had posted about this before, but it looks like I had not.

Currently we’re experiencing a problem with registrations on the Trac system. Please do not report the issue to the trac folks over at edgewall, they already have about 20 tickets explaining why Adium doesn’t work, and half of them do not use macs. 🙂

If you do not have an account for Trac and need to report an issue, the forums or our feedback email address are both viable ways to get feedback to us. We’re working on this issue, but it’s going to take some time.

Some additional Google Summer of Code 2007 information

Tuesday, March 20th, 2007

Peter previously posted that we’re now accepting applications for the Google Summer of Code 2007. While the Adium Summer Of Code page and Google’s own SoC page have everything you need to know, I thought a summary here on the blog would be appropriate.

Google Summer of Code is open to students at all levels age 18 years and older. Students whose proposals are accepted by the Adium developers will work full-time on their open source project with the guidance of an Adium developer (“mentor”). This is a great opportunity to get involved in an exciting open source project… and to earn a paycheck in the process: Successful students will earn $4500 USD from Google for their efforts as well as gaining a fantastic addition to their resumés and making valuable contacts (both personal and professional).

Applications are due March 26 by 5:00 PM Pacific time (12:00 AM UTC March 27, 2007) — time is running out! Between March 26 and April 11 we (the mentors) can request more information and you’ll be able to update your application.. so be sure it’s submitted via the Summer of Code Web Application by the deadline.