Saturday, October 7, 2006
I hope this blog was valuable - I had fun writing it (when I had time). For the latest AIM information, I highly recommend Greg's AIM blog; you should also check out the blogs of Justin2 and Gus from the AIM team.. If you really liked this particular blog... there will be a new blog at http://juberti.blogspot.com.
If you would like to keep in touch, you can look me up on LinkedIn, or email juberti at gmail dot com.
All the best,
Friday, October 6, 2006
So, I got together with a pair of artists and we came up with the idea of having the tray icon AOL logo split open, revealing a dancing running man, all set to a techno music score. The artists did the illustrations and the music, and I coded it up into the aoltray code. This shipped out in some of the AOL 4.0 beta builds, and we all thought it was pretty cool. Well, almost all of us.
Eventually somebody showed it to one of AOL's senior executives, who was most displeased with it. The exact reasons why he didn't like it were never known, but the message was sent down that this sort of tomfoolery was a fireable offense. My career at AOL could have been very short, but fortunately my management chain played dumb and didn't give up my name (thanks!).
Anyway - Jason, Erik, and I thought this thing was pretty cool, and it's a shame that only a few people ever saw it. So here it is, for your viewing pleasure. If you run this application, you'll see an AOL icon appear in your system tray. Hold down "A", "O", and "L", and double-click the icon. Then sit back and watch! (See the 3 screenshots to the left to get an idea of what happens. Note that this thing does play sound, so you might want to turn down the volume if you're in an office environment)
Update 10/07/2006 2:08 PM PDT:
Some people have reported that it doesn't work for them. I forgot, back when we originally did this we noted that some keyboards would not indicate properly that 'A', 'O', and 'L' were all being held down. So I have uploaded a new version, where you can just hold down Ctrl and double-click the AOL logo.
The entire app is contained in the EGGTRAY.exe file, which is only 43 K - to uninstall, just delete the file.
If you can't seem to get it to work, you can check out the (somewhat less cool) web version of the easter egg.
Check it out at the AOL Greenhouse - http://greenhouse.aol.com/prod.jsp?prod_id=27. New builds will be posted on a regular basis, so let us know what you think!
Wednesday, September 6, 2006
Monday, August 28, 2006
Monday, June 12, 2006
* AIM Bots - turn any screenname into a bot that has higher rate limits and cannot be warned
* AIM Location Services - see where your AIM buddies are in real life
* Improved support for AIM Talk voice calls
* Support for custom clients and bots on Mac OS X, Linux, and Pocket PC
* Support for custom clients and bots written in Java
* More sample code, including VB.NET and Java samples
Also, be sure to check out the stuff that people are building with the AIM SDK:
AIM Gadgets (formerly known as JAMS)
AIM Location Plugin
Nalsoft IM Logger
PCD Music Lounge
Super Computer International
Monday, May 15, 2006
Here's a screenshot:
Friday, May 12, 2006
Thursday, May 11, 2006
Other Greenhouse submissions include an AIM Fight Dashboard widget and an RSS screensaver. Another neat feature of the site is its blogs section where you can find AOL employee bloggers and catch up on their recent posts.
Give the Greenhouse a look!
Tuesday, May 9, 2006
You are given a NxN matrix M, where 1 <= N <= 50, and an integer k, where 1 <= k <= N. Write a function to determine the maximum possible trace value for a kxk submatrix S, created by taking any k rows and k columns from M. (The trace is the sum of the elements on S's main diagonal; the selected rows and columns are not necessarily contiguous.)
Anyway, the final rounds were quite dramatic, with the problems being tougher than ever, the elimination of some of the top seeds, and some close finishes in the rounds to select the competitors for the championship round. In the championship round, it came down to 8 competitors - mostly from Eastern Europe, with 1 each from China, Japan, and Australia.
"tomek" (from Poland) got out to an early lead by solving the 250-point problem (You are given two rectangular solids of arbitrary sizes; write a function to determine the minimal surface area of a box than can enclose them) in just over 5 minutes. However, "Petr" (from Russia) prevailed in the end by being the only competitor to solve the 1000-point problem (Given an array of cables connecting N points, where each cable has a quality Q and a cost C, select a subset of the cables such that all points are connected and the sum of the quality values over the sum of the cost values is maximal). Petr walked away with $20,000 for his efforts; he was also asked at the post-event press conference "What was the most important decision that you made during the competition that allowed you to win?" His answer, naturally, was "The most important decision that I made was choosing to solve the 1000-point problem correctly."
Below are some pictures I took during the competition. At first, it can seem a bit strange to think of programming as a spectator sport. TopCoder does an excellent job though, with multiple screens displaying the standings in real time and mirrored viewsof all the competitors screens so you can see how they are approaching the problems. When the competitors are this good, it is quite exciting to just watch them work.
Friday, April 28, 2006
- After considerable customer feedback (see my previous post), we've clarified several ambiguous points in the AIM SDK license agreement, up at http://developer.aim.com/license.jsp. Specifically, we've addressed the use of the AIM SDK with open source software in Section 4, and modified the wireless restriction to exempt software running on a PC or using 802.11. Lastly, we've removed text which indicated that you must send us mail if you change the URL where your custom client or plugin is hosted; now you can just change it from the "Manage Keys" page.
- The first AIM SDK plugin written by a third party developer that I have found is AMIP, which adds the song that you are currently listening to to your AIM profile. It's like JAMS's MyTunes, except AMIP supports many more music players. Worth checking out.
- On the subject of JAMS, we now see over 100,000 people using JAMS every day. Thanks to all of you who have used JAMS and recommended it to friends.
- Last, we are gearing up for our AIM SDK 1.1 release. There will be a lot of new goodies along with many bug fixes in this release. Look for it in the near future...
Wednesday, March 15, 2006
The next version of the EULA will have many of these things remedied, but until then, let me try to clear up some of the sticky issues. (Many of these questions were submitted in an email exchange that you can see here.)
If you have more questions about the license - or are still unhappy with terms in the license - please let me know so that I can try to clarify the issue, not just for you, but for everyone who reads this blog. This is the first effort of this type at AOL and we are still learning how to do this.
Keys, Name, URL
Q: Why is AOL using keys to control access to the API? I don't want to have to come beg AOL for a key!
A: Anyone can get a key. You don't have to "apply", you just go to our webpage
and click a link. We don't vet the keys in any way, you just click and boom you have a development and deployment key. You can deploy your software, sell your software, have up to 250,000 users of your plugin/client per day - all completely for free. All we ask is that once you exceed that limit (as you start to approach 1% of our userbase, and potentially start consuming nontrivial network resources) you come discuss a business arrangement with us.
For those still unconvinced, Google is doing the exact same thing for access to the Google family of web services. It allows the network operator to know who is using the network, and prevent people from abusing the network (spam, malware, etc).
Lastly, many have asked "I don't know what to put in when for the name/URL fields when applying for a key". The name and URL are intended to allow us to help us monitor the network, by allowing us to get more information about your plugin or client. If you are still in the development phase, and don't know what to put for these fields - you can just make something up for now - you can go back and change it later.
Q: Section 4 (viii) (about "Publicly Available Software") seems to be the subject of debate. Some think that it forbids the use of *any* open source code with theSDK, including well-understood licenses that are not "viral". The GPL is notoriously problematic, but I think others (like the MIT license) should be okay.
A: We encourage the use of open-source code with the SDK. The only prohibition is that you cannot write code with a license that would require AOL to open source the SDK. I think the GPL is the only license that has this issue (since you cannot link to closed-source libraries); LGPL, BSD, and MIT should be fine.
We will try to make this absolutely clear in the next EULA. We are very supportive of open source - we use several best-of-breed open source technologies in the AIM SDK (libexpat, zlib, NSS, and sipXtapi).
Q: The definitions for wireless use seem very broad. I think the most
worrisome part is:
offer or enable a service or functionality not authorized in writing by AOL that utilizes a wireless telecommunication carrier's network and/or wireless services.
This seems to extend to computers using a wireless internet connection. Three cases come to mind:
- 802.11 networks operated by wireless telecommunication carriers (e.g. T-Mobile Hot Spot)
- 802.11 networks using internet access provided by a wireless telecommunication carrier (e.g. a wireless router and a DSL line)
- TDMA, CDMA, GSM, etc. networks, using a computer, not a mobile device (e.g. Verizon data service using a PCMCIA card)
A: I agree this is very poorly worded. This is only intended to apply to software running on mobile phones using TDMA/CDMA/GSM.
PCs/PDAs using 802.11 are not affected by this.
You may not deploy or distribute your Custom Client to any third party.
Q: This appears to extend to distributions that do not include a key or (distributable parts of) the SDK itself (e.g. source code).
A: This is from the section where it discusses "Development keys". The intent is that plugins built with "development" keys (as opposed to "deployment" keys) should not be distributed to end-users in binary form (mainly since the 500-user limit will prevent your plugin from working properly for most users). If you are distributing source, you may include a "development" key in the source - we do this in the sample applications provided in the SDK.
from a fixed HTML website located at a publicly available fixed URL
Q: Theterms "fixed HTML website" and "fixed URL" seem to potentially problematic. Many pages are dynamically generated and mirroring requires redirection.
A: This just means, you can give us a URL, that if we follow it, we can get to a site that has more information about your plugin. The "fixed" language is just a way of saying that if we go to your URL, we should not get a 404.
Monday, March 13, 2006
Monday, March 6, 2006
At last! Today is a big day for our team and AOL as we proudly announce the "Open AIM" platform at http://developer.aim.com. In addition to our AIM Presence web service, we are now offering the AIM SDK to all developers. With the AIM SDK, developers can write plugins for the AIM Triton and AIM Pro clients, or write their very own custom AIM clients.
The full functionality of the AIM network is exposed in the AIM SDK – it’s the same robust and performant libraries that AIM Triton and AIM Pro are built on top of. Both plugins and custom clients have easy access to presence, text messaging, SMS, voice, video, security services, and much more. And it’s being made available through a very flexible license – it’s free to use for non-commercial and limited commercial use (up to 250,000 users per day).
The JAMS source code, and other sample code, is included in the SDK. And there is extensive documentation, so it’s easy to get started.
Why are we doing this? We think that we can offer developers the best IM platform, by combining the AIM network’s extensive reach (63 million active users) with the power of our AIM SDK and web services – and that puts us at a real competitive advantage.
We’re really excited to be launching this first version of the AIM SDK, but also have a lot more in store that just couldn’t make it into the 1.0 release. We’ll be offering a number of new features, plus support for more languages and platforms in future versions of the SDK. Show us what you can do!
Wednesday, February 15, 2006
For proxies, we will now support SOCKS5 and HTTPS proxies if they are configured/autodetected with IE. However, we don't currently support proxies that require authentication as we have not yet done the work to deal with retrieval/storage of the proxy credentials. A future release will support SOCKS4 (is anybody still using this?), proxies that require authentication, and smart selection of the ports used to contact the AIM service. If you are using Triton and are having problems connecting, please let me know (along with any details of your network that you know) so that I can find out where we can still improve.
Anyway, settings will now work for plugins that support settings (IAccCommandTarget::Exec with a command id of -1). The only JAMS plugin that currently supports settings is Colorizer, where you can change the saturation and value of your colors, as well as the time it takes to cycle through all the hues. Now that the settings button works, look for more plugins to have tweakable settings (one common ask is for timestamps in EZLogger) in a future version of JAMS.
Tuesday, February 14, 2006
Here's the top 5:
- Sree (Open Services)
- Andy (AIM Server)
- Ted (AOL Vice Chairman)
- Shawn (AOL ModuleT)
- Me (AIM Infrastructure)
Tales of a Running Man
Monday, February 13, 2006
Open services are going to be a big deal at AOL (really!)- we already have AIM Presence, with AIM Plugins, AOL ModuleT, and a bunch of stuff I can't talk about yet coming really soon. Some other AOL employee blogs to check out... Greg and Justin C. (my team, AIM infrastructure), Corey (UI toolkit), Gus (AIM Triton UI), John (OCP infrastructure), and Jason (MusicNow).
And in the "it's about time" category... hometown.aol.com/members.aol.com now support SFTP... point your SFTP client (I like PSFTP) at hometown.aol.com and log in using your AIM username/password. I will no longer have to fight the Hometown file manager to upload my photos...
Thursday, February 9, 2006
Whoah! Been a bit heads-down finishing up our APIs and cranking on new stuff for Triton. Can't wait to get this stuff out in your hands. Anyway, a number of recent happenings to blog about...
Google's CEO, Eric Schmidt, dropped by the AOL campus as a surprise guest to one of our company meetings. Sitting in the audience, it was very interesting to hear him speak. The Q & A session with him was very funny:
Q (read by Jon Miller, AOL CEO): Why did you pursue a deal with AOL? Was it simply to block Microsoft with us as a pawn in a geopolitical chess game?
A (Eric): Yes. (Massive laughter). I can't think of any other reason. Did you have another question?
Eric is on the left in the picture, wearing his very bright blue suit. On the right is Ted Leonsis, AOL executive and majority owner of the Washington Capitals hockey team. Ted's an interesting character and has a blog you should check out at http://ted.aol.com.
Friday, January 27, 2006
AIM Buddy Icon Maker on the Web
Not quite as cool as the JAMS IconMaker plugin, but this website allows you to take just about any image (there is a 300K size limit), upload it, and get it back as an AIM buddy icon that you can simply click to set as your own buddy icon. Works in AIM 5.9 and all other AIM versions that support the aim:BuddyIcon URL (AIM Triton users should use JAMS :)
Personal AIM server
Written from scratch by a bored AIM user, this personal AIM server allows you to have your own private AIM network. It is provided as source code (VB 6.0), so you can look it over and/or extend it to do what you want. To make your AIM client use it, simply run it and change the AIM server address in the connection preferences to the IP address of the machine running this AIM server. It only supports a subset of the AIM protocol, and so AIM Triton can't use it, but it's quite interesting nonetheless. Some other interesting stuff on this site as well.
- AIM Business Cards
While looking for information about AIM SMS short codes, I found this page which allows you to create business cards with your AIM screenname, which you can then print out from your computer. Kind of short on the options, but maybe of interest to someone.
Monday, January 23, 2006
JAMS 2.51 is out with a couple minor improvements:
* MobileControl will now return users' away messages when using the "info" command
* The issue with MobileControl and the """ entities has been resolved.
* The issue with IconMaker not showing up for many users due to an invalid key has been resolved.
Also, apologies for not better explaining the keying issue and what it means to API developers. The "You know what that means" good news in the prior API Update post was simply intended to mean that the official release of the API is in its final stages. With regards to the keying, all it means is that you will need to come to our developer web page to obtain a (free) key string, just like you do for the AIM Presence Web Service (or any of Google's Web APIs). This allows us to identify the customers of the API, and protect ourselves and our users from malware plugins. If you have further questions on this topic, please let me know... it will all become clear when the API is released.
The license plate here was seen while driving by the Apple campus while out in California. VV (W?), thanks for your support!
Friday, January 20, 2006
This photo is shot from the Orb conference room looking out across San Francisco bay, from the Oakland side. Quite a view...
We didn't get to meet Larry or Sergey, but we did get a cool mini-tour where we saw, among other things, the Google "globe" plotting where all the Google search queries on the Earth are coming from. It would be way cool to do the same thing for all of our AIM traffic...
Thursday, January 19, 2006
The iChat guys were great to talk to and it was a truly memorable visit -
getting to see Steve Jobs, John Ives, people from various Mac OS X teams, and the new MacBook Pros running iChatAV at an amazing resolution and framerate.
We did discuss audio/video interop and there will be a new AIM Triton out soon that will properly interop for audio and video calls with iChatAV in Mac OS X 10.4.4 (iChatAV 3.1.1)
Looking forward to see what the team comes up with for the next major iChatAV release...
Tuesday, January 17, 2006
Anyway, about the APIs - we have some good news and some bad news.
First the bad news: if you have been developing 'unofficial' plugins by looking at acccore.dll/reverse-engineering JAMS, your plugins probably stopped working today. This is because our API key management system went into production today.
The good news: you know what that means.
Also: head on over to I Am Alpha and see the web widget APIs that our AIM web guys have whipped up. These are not the AIM Plugin APIs, sorry for the confusion.
Off to another exciting location tomorrow! (If you're a native of the area and have any recommendations for hip restaurants, we'd love to hear from you.)
The IconMaker plugin in JAMS 2.5 had an incorrect key and was therefore disabled by the key-management system. Look for a JAMS 2.51 this week with a fix.
Monday, January 16, 2006
Most important tip:
"Unless it's some sort of joke or prank, don't leave more than two consecutive messages for someone who you know is away. The same goes for if you're talking to someone and they don't respond right away. They may be otherwise occupied. There is no reason for "Hi!", then five seconds later "Hello?", then "Anybody home?!". This elevates into ridiculousness and you'll only lose the other person's respect. And they will want to ninja-kick you."
Thursday, January 12, 2006
1. Shut down GDS, from the tray icon.
2. Find GoogleDesktopNetwork2.dll; for me, this file was in the "C:\Program Files\Google\Google Desktop Search" folder.
3. Make a backup of this file, in case you make a mistake.
4. Open GoogleDesktopNetwork2.dll in your favorite hex editor.
5. Scroll down to approximately offset 0x1A000, or search for "aim.exe"
6. You will see a list of EXEs such as waol.exe, opera.exe, netscape.exe, msn6.exe. Each name will be in Unicode format, meaning each character is 2 bytes, with the first character being a NUL (00).
7. Pick one of the EXEs that you do not use; "msn6.exe" is a good choice because it is the same size as "aim6.exe". (To be fair, I will note that "waol.exe" is also a good choice.)
8. Replace the EXE name that you have chosen with aim6.exe. If you chose a name that was longer than 4 characters, you will need to replace the remaining characters with NUL bytes.
9. Save your changes.
10. Restart GDS.
11. Restart AIM Triton.
If you don't want to go through all this trouble yourself, and you are using the version "Google Desktop 20050818-en", you can use the GoogleDesktopNetwork2.dll that I modified and skip steps 4-8.
Tuesday, January 10, 2006
* IconMaker - set your custom buddy icon from any image file. You can crop the image to get just what you want in your buddy icon. (by Justin)
* MobileControl - set your away message, or get buddy info by sending a SMS message from your mobile phone. (by Alan, the director for our group!)
* The bug where Colorizer did not work if you had customized your font has been fixed.
* EZLogger now displays an error message if you try to read a log that does not exist.
Got an idea for a neat plugin? Post it on the blog, or send it directly to us.
Update 4:17 PM 1/10/2006:
* The initial version of JAMS 2.5 had an issue where the displayed version numbers said 2.2. This has been resolved with the latest jams25.exe.
* To use MobileControl, you must first set the mobile phone number you will be using. Currently, you must do this from the Actions menu, "Set Mobile Phone Number". This will pop up a dialog where you can set your number, and also display the commands you can send. The currently supported commands are "@away msg" and "@info username".
* The Settings buttons do not work in JAMS 2.5, because it requires a new AIM Triton (version 1.2) that has not yet been released. Look for it soon.
Friday, January 6, 2006
Got a number of questions over the past week:
Q: I want to build an AIM bot, but I am having trouble with rate limits and other uptime issues. How can I ensure my bot stays online?
A: We have a bot program where you can be added to our "bot whitelist" for a certain price (I don't know the pricing offhand). If you are interested, send me an email with "bot" in the subject line and I will send it on to our bot business folks. In the future, we hope to have an AIM bot (naturally) where you can submit these requests.
Q: What happened to Direct Connect/Instant Images in Triton?
A: We ran out of time and it missed the cut for Triton 1.0. However I have seen some demos from the team working on the UI for it and I can say that it will be worth waiting for.
Q: Why doesn't Triton's audio or video work with Apple's iChatAV?
A: We switched to a new SIP stack with Triton, and both Triton and iChatAV had some incompatibilities that did not fully get sorted out in time for launch. Look for these incompatibilities to be resolved with the next Triton (1.2 hopefully) and iChatAV builds.
Q: I don't like the green color used for the messages I send. Can I change the IM window text colors?
A: The colors are set in Triton's strings.xml file. You can find strings.xml at
C:\Program Files\Common Files\AOL\....\imapp\verXYZ\resources\en-US\. In this file, <string name="imForm.userColor">#4a9e00</string> sets everyone's favorite green. "imForm.buddyColor" sets the sender's color. You can change these values to something more pleasing to you; the changs will take effect the next time you start Triton.
Q: Is the plugin API ready yet?
A: We are still expecting a release in the very near future. In the meantime...
Q: I looked at the acccore.dll type library you mentioned before but I don't know where to start. What interface should I be looking at?
A: IAccPlugin is the base interface that all plugins need to implement. Methods on that interface will be called when your plugin is loaded and unloaded.
Q: Can I test the new Mac AIM client?
A: You will read about it here as soon as it is available.