Do not post bugs or requests to the comments! Use Trac.
Tuesday, September 30, 2003
Drag and drop of tabs has turned out to be a pretty big project, so I've been working on other things whenever I got frustrated. After an "evening" of studying neurobiology until 5 am, I needed something light to waste time one... so I've been extending our sound controller to be a sweet text-to-speech manager.

It turns out that Apple's API for dealing with speech is absolutely horrible, but I've learned it as I've bug-fixed and extended the basic framework that Raphael Sebbe wrote as a Cocoa wrapper to Apple's speech manager. We should now have access to changing voice, pitch, and word rate (later on) as well as switching back to the systemwide defaults. I'm going to set up per-buddy preferences for voice and pitch and then commit. Hope everyone enjoys :)
Everybody, please.

The new message view is a work in progress. It was included so people could provide feedback on the new layout after actually using it, and offer any suggestions for improvement.

As stated on the forum many times (and on the developer blog), preferences are coming for the view. They are planned out on paper here by my desk, waiting for a chunk of free time large enough to implement them.
Monday, September 29, 2003
There are two crashers in the current binary (Related to links and closing the contact list) ... both have been fixed in the newest source, and should be in the next binary that goes up.

I also want everyone to know about the new 'push' feature, which allows you to temporarily set aside a message you're typing.

Here's the scenario: You're typing a long message to someone, when they interrupt with a question you want to answer right away. No problem, simply:
1) Stop typing your message
2) Press Command-Cursor Down (Adium will store your current message)
3) Type a response to their question and send it.

Upon sending, your original message will be restored! It's magic! :-)
Holy Bejezzus!
You people really love our blog :-D

BTW, I abandoned that MAAAAASIVE NSDate addition. Waay too much work, for too little payoff. I've been just doing random bug fixes and feature requests, waiting for the secret project to start. ;-)
Sunday, September 28, 2003
I've fixed a bug in the new message view code that was killing performance. It should feel a couple thousand times faster now :-)
Saturday, September 27, 2003
I just realized the last three of my posts have been links to something dealing with the Adium project. (The RSS feed, CVS Stats, and this one).

I've added a Wiki FAQ page. It's rudimentary right now, needs to be integrated either into the tabs or something, and needs some structure/authentication. You can get to it at There is documentation and such at

If you click the green duck, it goes to the help page.

It uses a Wiki engine from
I'd like it to authenticate againsst something, so you can track who made what changes.

On the SQL front, evands has install the SQL Logger, and capacity tried. Both ran into problems with DBD::Pg. Since DBD::Pg is only used once (to load old logs), I'm looking into another solution. Right now kind of thinking Java.

Edit: switched URL
Friday, September 26, 2003
I've created a fun new service plugin that makes it easy to flood Adium with tons of messages or buddy events :-)

Just add a 'Stress Test' account, and in the provided message window use any of the listed commands. First send a 'create 400' to set yourself up some fake buddies. At this point, you can send 'online 400' to make all of them sign on instantly!... or try you hand at a 'msgin 100 20 Hello!', which will make 20 of the fake buddies send you the message 'Hello!' 5 times each, all at once :-D

But wait, there's more! Evan hinted that 160 windows might be possible at once... but have you ever seen 160 Adium message windows in action?!? You'll never forget the horrifying experience of a 'msgin 160 160 Amazing!' ;-)

When you have that many events happening at once, it's easy to see where the bottlenecks are. (Don't try the 160 windows unless you're prepared to force quit Adium :-))
Wednesday, September 24, 2003
Two windows? Let's see.. I think I've got about 160 people on my buddy list... erm, excuse me, contact list. So one hundred and sixty windows, potentially. :-)

I've been doing some small bug fix type things, trying to hunt down some of the random quits - got the biggest one, which was my own fault in the first place through the multiple window mode. Next on my list, of course, is drag & drop of the message tabs, and probably some optimizations in that department. This week has apparently been for away messages; implemented autoresponse settings for stored away messages (like the old Fake Away option in the community builds), and I've spent today reworking the Quick Away window interface.
I suppose I should update everyone on what I've been working on...

I've been doing some thing very arcane, very boring, and very very frustrating.

For the past week or so, I've been attempting to get Adium to honor the timestamp format the user set in the global prefs. This means I have to read the immense global prefs, not something you want to do every couple of seconds (which could happen), so I've implemented, in an NSDate addition, a method to return the timestamp the user wants, w/ or w/o seconds. It's a pain in the arse, because I first check the modification date of the file, then if that differs, I compute the CRC checksum of the file (really speedy with an inline function and a C Macro), and if THAT differs, I read in the Global Prefs.plist file, and then do some creative parsing work on it.

It's a huge pain in the butt, because it has to be extremely fast. Really, it's a PITA.

So i've been getting quite distracted from Adium due to procrastination. Also, this week is Layout week for the School Newspaper, so I'm getting home around 7PM every day (which is pretty late).

I was working on single window mode, but that area really needs to be cleaned up a bit. Some of the common stuff should be moved in to AIUtils, and it should be a bit more abstracted. Until then, we'll have to make do with two windows ;-)

Alright, I know you're bored of hearing me type, so I'll end this. Another update when I feel like it :-P
New message view is up in the cvs, along with some other changes:

- Decreased the 'hold' time required to initiate a drag
- Improved targeting when selecting text (It should feel 'correct' now)
- The view now scrolls when trying to select text below/above it
- Added support for double/tripple click selecting to select by word or line
- Resolved some aditional issues making the view feel non-standard

It feels pretty good right now. Still need to hookup the mad preferences and clean up a few things though :-)
So...I only have to increase my commits by a factor of about 30 to pass Adam? Watch out Iser! Your days are numbered.
Sunday, September 21, 2003
I ran across a CVS statistics (StatCVS) program today, and it generates interesting output.

I've got the output at It autogenerates every hour.

(In case anyone was wondering, Adam has the most commits. Hope I didn't surprise anyone too badly.)
Saturday, September 20, 2003
It's back on! :-D
Friday, September 19, 2003
Hurricane party at my place. 6,000 miles away from flooding :)
I have no electricity :-(
Num nums. Multi/dual/arbitrary window mode is now in place. Not 100% satisfied with the UI for it yet - clearly it lacks drag and drop support for the tabs, and I'm not sure that all the proper menu items exist (or that those menu items which exist are, in fact, proper) so feedback via email or IM is appreciated.
Thursday, September 18, 2003
I invoke the "or something" clause of my previous post and declare myself the:


Yes. Bow down.
Ninja vs. Pope battles are SOOOO overdone.
Ninja _so_ beats pope. Divine authority, schmivine schmauthority, that's what I always say; I practice the art of invisibility, fighting for truth, justice, and another slice of the pizza pie. :)
If Evan's the window mode ninja, then I am the window mode Pope.

...Or something. Details to come.
Progress on the new message view continues, it's looking very nice :-)
I've created an RSS feed of the commit messages, if anyone cares to use it.

It's currently located at

The problem is that the script has to be run manually to update it. Working on a cron solution.
Wednesday, September 17, 2003
I am the window mode ninja. Hear me roar. Details to come.
Monday, September 15, 2003
Didn't feel like going to sleep this evening, didn't feel like working on any of my current Adium projects (contact alerts, message view normality, drag and drop), so I cleaned up away message titles (the first responder status is still messed up initially), added title support to the status thing in the contact list, added external plugin checking (~/Library/Application Support/Adium 2.0/Plugins), and wrote a new plugin which I call Announcer. Announcer is found in the Sound prefpane and allows you to have the computer read you any combination of incoming and outgoing messages and the status messages, with or without the sender (for messages) and the timestamp. Somewhat random, I know ;)
Saturday, September 13, 2003
As I sat here, I realized something:

It's a pain in the okole to create a new plugin!

If anyone knows about Project Builder, and Applescripting it, or some mad shellscripting, or something, let me know.

Basically, anyone with Project-Builder-fu, email me :)
I'm currently working on a replacement for Adium's message view. The way the current view is designed it requires all sorts of custom code to get basic functionality working. It's going to take a lot of work to make the current view feel 'normal', and even then it will always behave slightly odd.

Recently, I've learned a new trick for dealing with text views. I should be able to recreate the same kind of look without missing out on any of the basic cocoa behavior, and we can keep features such as clickable smileys as well.

The message view, for me, is currently the most frustrating part of Adium, so it'll be a great thing to see it replaced :-D
Thursday, September 11, 2003
I've got the code for setting Adium's finder icon moved into Adium 2.0 (so our icon selection will stick like it did in 1.x). My net connection's not agreeing with me at the moment though, so it looks like it'll go up tomorrow :-)
Phill would like to show the preference icons he and Jasper Hauser have been working together on. Currently, the icons for accounts, contact list, message prefs, dock prefs, and buddy alerts are done. He requests that people email him with suggestions for the sound and status pref icons. Further previews will be posted as the icons are finished up.
Fixed the text sizing problem - ended up being something silly Adam and I both had overlooked. No worries now, though. Alignment issues next (it's keeping the right-align from the sender field when you paste that in).

Today was away message stuff for me... titles, loading of away messages from within the set away message box via a combobox, and saving of new away messages / editing of previously saved ones. Ironing out the kinks now.
Wednesday, September 10, 2003
Today has been a day of bug fixes and tweaks :-D

I've fixed a few issues that new users would experience on first running Adium:
• Status labels not drawing
• No sounds by default
• No emoticons by default

I've also addressed a few other bugs such as:
• Contact list width sizing issues
• Typing status sticking when switching accounts

If you have any other small bugs or first run issues, make sure they're filed on the source forge bug tracker. The list of know issues is getting small by the day and I know there must be more to fix! :-)
In case you haven't noticed, we now have access to CoreSuite.scriptSuite and TextSuite.scriptSuite. All I had to do was add:
to Info.plist. You can now do basic stuff like opening up Adium, and... uh, well, I haven't played around with it. But you can do stuff, that much I assure you. :-D
So text drag&drop onto the tabs works great now, but as I mentioned in my commit, I can't get the AISendingTextView to resize properly when text is dropped on the tab (processed in the routine appendToTextEntryView in AIMessageViewController.m). It's not a line ending issue, as cutting and pasting back in the same text works as expected. I post the same notification that, say, clearTextView does, and that doesn't do it. I think it might need an [NSTextView edited: range: changeInLength:] call, but it throws an exception that doesn't make any sense. Someone, anyone, figure it out...
We've got emoticons now :-)
Colin and I have changed the default status colors around a bit. If you want to see them, trash your Contact Status Coloring.plist file. Now typing is light blue, which turns into dark blue for unviewed content. A few minor changes to the other colors as well.
Tuesday, September 09, 2003
Well, it seems that my task isn't so confusing after all. The reason OSA is only on the carbon side is that you implement the OSA components (the perl OSA component gives you system-wide perl support, the applescript OSA component gives you system wide applescript components) in Carbon.

You can use those other OSA components besides AppleScript by hooking on to the Apple Events, and then you just have a popup menu to select the language.

I'm torn about whether to have an In-Adium script editor, or to open Apple's. If we use Apple's, it would feel slightly hackish, but it'd be more "standard," more "integrated" with the OS.

If we use an Inline editor though, we could do our own syntax highlighting, completions, and other neato tricks.

I'm always open to advice. I'll make a long winded post when I come to a conclusion ;-)

My contact info is on the contact page, as always.
Monday, September 08, 2003
Yup, leave the spaying and neutering to me :-D

After using a version of Adium equipped with the status labels in tabs for a while now, I've come to dislike them. Three complaints I have with regard to status labels on tabs:
• They're very bold, gaudy, and clutter the tabs.
• They clash with the metal.
• They don't work on the selected tab, and there's no way to make this look good.

My plan is to regress a bit (no, not back to status circles... not regressing that far :-P), back to colored text. Now that we have embossing on the tabs, I know I can make colored text work. It's looking great so far... hopefully I can finish and put the changes up tomorrow.
Well, all the cool kids are posting to-do lists.. why not?

• Clean up drag-and-drop on the tabs of text so that the tabs can accept a drop and the tab-switch doesn't occur immediately
• Add a couple promised buddy alerts, including execution of an arbitrary application or script and selection of an arbitrary sound
• Eat dinner
• Add prefs for the contact list, the message window, and the dock so that any or all of them can have their BLINK tags permanently spayed or neutered. edit: or Adam can have that one. Colin said he's already working on it.
Waah, OSA hooking looks so hard and confusing! *grumble grumble, sob sob* I've got a little help (thanks Paul! :-D), but it's still tricky.

It's got to be done though, so here's the plan for now:
• Stall as long as possible.
• Seriously think about using a different scripting language, like Lua or Ferite.
• Try to delay by working on something else.
• Ask for help!

Yes, I'm asking you, users, to email me! Send me an email, tell me what you think about those crossed out options up there (especially number 2). If you happen to have experience, and want to help, IM or Email me, please :-P

I'm really not that desparate, but, help would be nice. I'll manage on my own though.

My contact info is on the contact page (d'uh!)

Update: If I worked at this, I'm sure I could get it done. I'm not asking for pity, just good references and advice ;-)

Also, is OSA dead on OS X? I can't find any references to it on Apple's site except the Carbon OSA API.

N.B. OSA is the Open Scripting Architecture, of which AppleScript is a Scripting Component. There are Scripting Components for everything from Perl to Ruby to shellscripting.
My current list of things to do:

  • Track down a bug that causes the PostgreSQL backend to crash on first insert. It only seems to happen with OSCAR or MSN accounts, and could be related to the additional module I use for fast searching. Haven't been able to reliably reproduce.

  • Make Adium more gracefully handle said backend crash. Currently there's no way to recover without quitting & restarting Adium, although all Adium-y actions work fine.

  • Make a preference pane.

Edit: The night of homework was looking so good I got one done.

  • Make an in-Adium log viewer, negating the need for the JSP/web stuff if it isn't wanted. Initially would probably look very much like current log viewer, with a few additions. Part that worries me is the upper-right-hand pane (the distinct dates). That type of data isn't what a database is designed for, and might be slow. It's possible it won't be too slow, and also possible that when PostgreSQL 7.4 comes out, the slowness will go away, due to new indexing capabilities.

  • Improve documentation on performance and vacuuming.

If Colin has his way:

  • Add a sort for most recently talked to

  • Add a sort for most talked to

Sunday, September 07, 2003
It appears I already have my hands full with the list mentioned previously :-)

By the way, I'd like to thank Laura Natcher for the wonderful modifications to Adam Betts' Adiumy Icons. They're stupendous :-D
Yay blog! Sorry, Colin, I beat you to D&D - and I don't mean adventures with a lawful evil dwarvish politician. Working out a couple bugs and committing in a bit.
I hope to put this site up today. A few areas aren't finished and I'll be leaving them out (Feedback, screenshots, some other minor things), but I want to get this sucker up so people can get to the binaries. :-)
Saturday, September 06, 2003
Well, as you may have guessed, progress on Adium has slowed down a lot. Most people are back to school, and we're also playing with this shiny new website :-)

Here's my personal list of things to do:
• Finish up the 1.x Prefs Importer
• Dragging stuff
• OSA hooks and the like
• Look into Quicktime (secret project :-P)

Oh yeah, there's this school thing too, but that's a longer story :-)
Colin's helped me set up a lot of php scripts that should make mainting this site a piece of cake.

A great example of this is with the binaries... cronnix has a nice script set up on his end to build them, and the website automatically generates a list and links up the newest. This makes it much easier to put new binaries up, so the frequency at which they appear may increase :-)

And now we have a blog to play with!
Welcome the the new Adium website!

We're still in the process of setting things up, so don't be suprised if stuff is missing or php errors start popping up everywhere :-D