May 13, 2008
Adobe Feeds Update II
Just a quick note to let you know that I fixed the Adobe Feeds web services. Also, just a reminder that if you're seeing "header length too long" error messages, clear your cookies, and the problem won't come back.
Oh, I also fixed the FAQ on Safari, so if you Mac users have been dying to read the FAQ all these years, now you can. Of course, you probably figured out the answer to your question by now.
Posted by cantrell at 11:30 AM. Link | Comments (6) | References
May 08, 2008
Adobe Feeds Update
The new launch of Adobe Feeds (MXNA) has gone well, but there are two issues I'm seeing people report:
- Maybe people have been getting "Header Length Too Large" errors. Interestingly, this comes from cookie-related code that CF7 tolerated, but CF8 doesn't. Anyway, the problem has been fixed. If you're still seeing the error message, clear your feeds.adobe.com cookies, and it will never come back.
- It seems the web services are broken. This is probably the result of the query optimizations I made. I didn't test all the web services, so they're probably incompatible with the changes I made. Oops. Sorry about that. I'll get this fixed in the next couple of days, and report back when they're working again.
We'll get Feeds back to 100% in the next week or so. Please be patient with us!
Posted by cantrell at 09:33 AM. Link | Comments (8) | References
May 05, 2008
The new MXNA (AXNA?)
First, I personally apologize for the downtime. We've been meaning to find MXNA a new home for quite a while now, and we finally decided to make the time to do it. Ironically, as we were working on moving the code over to the Adobe cluster, the old weblogs server went down in a big way. We're still not sure what happened, but for some reason, Java was core dumping a few minutes after starting JRun. Rather than spending too much time fixing the old server, we decided to look ahead, put up an "under construction" page, and focus on the new platform.
Mike Chambers and I wrote MXNA five years ago, thinking we would aggregate a few dozen popular blogs. 100 at the most. We initially put it on our own server which we expensed every month. When we outgrew that, we moved it to a single Macromedia server which Mike and I managed entirely ourselves. That worked out well for a couple of years until we outgrew it, as well. By that time, we were Adobe — a much larger company with more infrastructure — so moving it over to the cluster was a fairly involved task.
But we didn't just spread MXNA across a few more servers. As we began approaching 2,000 feeds, it became clear that the same code that managed 100 feeds wasn't doing such a good job managing 1,800. So I finally set aside a day, installed CF8, imported the production database, and with some pointers from Ben Forta (I'd never even used CF8 before — I've been focusing on AIR for the last two years), started optimizing.
I spent most of my time rewriting queries, and working on reducing the number of queries per request. The most dramatic change I made was optimizing the search query which went from about 30 seconds to one or two. Be sure to give it a try.
Again, sorry not just for the recent downtime, but for all the intermittent downtime over the last year or so. Hopefully we're past all that, and MXNA (AXNA?) will become a valuable community resource again.
Posted by cantrell at 09:08 PM. Link | Comments (22) | References
April 28, 2008
Weekend update to Newsbrew
A couple weeks ago, I blogged about a Google App Engine news aggregator I wrote called Newsbrew (original post). A few days later, Google announced the availability their RESTful feed API. Since the trickiest part of Newsbrew was the aggregation code, I decided to refactor the application to use Google's new service.
Newsbrew still stores feed and post data, but rather than retrieving and parsing the feeds myself (a surprisingly complex and error-prone process), Newsbrew now uses Google's REST feed API. All data, regardless of the underlying syndication format, is returned in a nice normalized JSON format.
With just a few hours of work, I was able to make Newsbrew much more robust, and because I no longer have code for parsing nine different formats of RSS and Atom, Newsbrew is much less error prone, and the code base is simpler.
I also added Ajaxian to the blogroll at the request of Dion Almaer. If you know of any other sites I should add, let me know.
Posted by cantrell at 11:32 AM. Link | Comments (1) | References
April 23, 2008
The latest version of PixelPerfect (with screencast)
PixelPerfect is a simple AIR application for measuring things on your desktop. If you want to see how it works, check out this screencast. If you want to see the code, check out the PixelPerfect Google Code project. And finally, if you just want to install it, click on the badge below.
Posted by cantrell at 09:12 AM. Link | Comments (3) | TrackBack (0) | References
April 18, 2008
Newsbrew is now a Google Application
I wrote a news aggregator a couple of years ago called Newsbrew which I primarily used for my own news-reading needs. I think I took it down when I got tired of paying for the server, and worrying about keeping it up.
After Google launched the Google App Engine, I decided to take a little break from Flex and AIR and rewrite Newsbrew in Python to get a good feel for the GAE experience. You can see the current beta version here.
Overall, I was very pleased GAE. It took me about five days to write this version of Newsbrew, but that included learning Python, Django, and everything about GAE. The application is fairly comprehensive, consisting of a user interface, aggregation service, and a secure administrator section. Unfortunately, I didn't get to all the features and bug fixes that I wanted, but the app still seems to work reasonably well.
It's still going to be a little while before we're writing real-world production apps on GAE as it still has several rough patches, bugs, and missing functionality. But it's very clear where Google is going with this, and there's no doubt that GAE is a very powerful concept and platform. I'm certainly going to keep my eye on GAE, and use it as much as I can.
Posted by cantrell at 11:16 AM. Link | Comments (2) | References
April 09, 2008
Maptacular 2.0: a desktop mapping application for AIR
Maptacular was one of the first applications I wrote for AIR. The first version parsed vCards from your local file system, and let you map the addresses it found inside. That was back when AIR was in still in alpha, so I didn't have APIs for things like drag and drop or copy and paste. Now that AIR 1.0 has shipped, I decided to rewrite Maptacular to to have the functionality that I originally envisioned.
I created a screencast of Maptacular 2.0 which you can watch here. If you want to install the app, just click on the badge below. If you want to see the source, it's all available on Google Code.
Maptacular is a good example of the following:
- Custom chrome with transparency.
- Custom application menus (implemented for the Mac only -- when Maptacular runs on Windows, there are no application menus).
- Context menus.
- Drag and drop.
- Copy and paste (system clipboard access).
- Yahoo! Maps for ActionScript 3 (with custom markers).
Posted by cantrell at 09:43 AM. Link | Comments (2) | TrackBack (0) | References
April 02, 2008
Lineup: an Exchange calendar viewer for AIR
I did a screencast of an Exchange calendaring application I wrote for AIR. Click here to watch it.
It's one of the most useful applications I've written so far, and probably the most popular within Adobe. It lets you view your Exchange calendar, and it notifies you of upcoming meetings. It also works offline, so you can view your calendar and get meeting details while you're between internet connections.
Lineup uses all the following open source ActionScript 3 libraries:
- as3corelib: various utilities like advanced date parsing.
- as3exchangelib: talks to Exchange servers.
- as3nativealertlib: a modal alert that appears in its own native window.
- as3notificationlib: creates notification windows, and provides a layer of abstraction on top of OS-specific notifications.
- as3preferenceslib: manages application preference persistence, including encryption when necessary.
The complete source code for Lineup itself is also available on Google Code, or you can simply click on the badge below to install it.
Posted by cantrell at 09:39 AM. Link | Comments (7) | References
March 26, 2008
Tips on getting a code signing certificate
I got my own certificate for signing AIR applications a couple of weeks ago, so I thought I'd share my experience in order to help others more easily navigate the process. My intention is not to provide an exhaustive tutorial on code signing or the process of obtaining a certificate (if that's what you're looking for, see Todd Prekaski's article entitled Digitally Signing Adobe AIR Applications). Rather, I just want to list a few things you should know about before starting the process in order to ensure that it goes smoothly.
I decided to get my certificate from Thawte, but you can also use VeriSign (and soon other Certificate Authorities who Adobe is working with). Both Thawte and VeriSign issue code-signing certificates to organizations as opposed to individuals, so the tips below assume that you already have a corporate entity established. We are currently working with CAs who can issue personal certificates, so if you don't have a business, you will soon be able to get a certificate issued in your own name.
If you decide to get your certificate through Thawte, here are some important things to know:
- Use Firefox. Firefox has a certificate manager that allows you to easily export your certificate as a P12 file which is what you need in order to sign your applications. Yes, it's sort of a strange requirement, but it makes the process much easier.
- Use an email address other than Gmail, Hotmail, or Yahoo. Thawte will not issue a certificate to anyone using an address from a free email service. I tried to talk them into it (I love Gmail), but they wouldn't budge. I ended up having to use my Watch Report email address which they eventually accepted, however they would have rather I used an email address associated with the company's domain.
- Set up a corporate web page. My main business is Watch Report, but my company is called Cantrell Media Company. Since Watch Report is well established, I never bothered setting up a separate corporate web site. Thawte wanted one, so I threw together christiancantrell.com in about five minutes. It's not pretty, but it met the requirement.
- Get a business phone number, and list it publicly. I work out of my home, so I have a business line (I almost always use my mobile phone, but it's nice to have a landline to fall back on). However, when I got the second line, I didn't bother to create a corporate account with Verizon. Rather, I have both my home and business lines listed under my personal name. Thawte doesn't like this. They either want to see a phone bill with your business number and business name on it (which I couldn't produce), or they want to see your business and your business number listed in a public directory. I listed Cantrell Media Company on yellowpages.com which took a few days, but is completely free. Thawte was happy with that. (Here's the listing.)
Those are all the specific issues that caused me problems. If you own a business, and take all four points above into account when applying for your code-signing certificate, you should be able to obtain one within a couple of days with no problem at all.
Posted by cantrell at 10:48 AM. Link | Comments (2) | References
March 13, 2008
Apprise: an RSS aggregator written for AIR
I did a screencast of the RSS aggregator called Apprise that I wrote for AIR. Click here to watch it. I didn't put any effort into designing the app, so it looks pretty plain, but it's very functional.
All the source code for apprise is available here on Google Code. You can install Apprise by clicking on the badge below.
Posted by cantrell at 07:06 AM. Link | Comments (7) | References
