So, what’s been going on with Feed-Squirrel recently? Well plenty thanks….
You may have seen a few days ago that Ben Forta had posted that feed-squirrel.com (my main aggregator site) had migrated to CF8. For me, this is a key step that the site needed to take in order for me to try some new and interesting stuff in the near future. But enough of that, let’s get into the nitty gritty of what’s changed…
- Overall performance. Hopefully regular users will have noticed significant increases in the performance of the site. This is for a number of reasons
- Coldfusion 8. Although it’s difficult to quantify, it’s make an improvement to overall speed.
- Caching improvements – Lots more of the site is cached, meaning a lot less work required on the data tier (which is one of a not so nice parts of an aggregator)
- No more Model-Glue – Now that may suprise a lot of you, but I’ve effectively gone for the anti-framework. All parts of the site are now built in a fairly bespoke way suited to performance and maintainability. There is still a central data object but everything else is split out in a very lightweight MVC style. This has meant that I have been able to get rid of a lot of the bloat that a complex framework brings, and reap the performance benefits. Also, I never really got on with Model-Glue. I found it got in my way.
- CFFeed. This tag alone makes my life a lot easier. Unless you’ve ever tried to write some RSS aggregation code you would not beleive how many different feed dialects there are out there. Out of the 1,200 odd feeds the site aggregates, I’ve come across around 1,200 different ways of presenting feed data. It would appear Atom vs RSS is only the top of the iceberg. You may notice that some previously dormant blogs are now aggregating successfully….This is down to CFFeed.
- CFThread. Another superb tag. Right down in the bowels of this site is some import code, this code runs through every feed on a regular basis checking for new items. Due to the fact there are so many, CFThread now means I can check all the feeds on a more regular basis without having the long running requests that I previously would have had.
- CFLayout. Check out the “Watched Feeds” and “Create Custom Category” pages. These used to be one huge list of feeds. Now, by using the CFLayout tag, this page has been reduced in size greatly, and even makes it easier to find what you are looking for.
So, all’s good then. Well, as with all migrations there are small problems. I had three significant ones which were:
- Corrupt Table.This is an error that Coldfusion started returning was load was placed on the server. After some quick tracing, I tracked down the problem to cached queries. It appears that sometimes a cached query can go a bit screwy and force the server to return this error every time the cached query is used. Strangely I found that the error was still returned after I removed the cachedWithin attribute from the query. The only way I could find to get of the error was to flush all cached objects from the server with the CFObjectCache tag. Unfotunately I have not seen this since so I can’t really tell you anymore.
- Cannot create a new thread because the task queue has reached it maximum limitI started getting this error on the importer. A server restart was the only way to fix the issue and I’m a little unsure as to what the problem might have been. After thinking about it for a while I beleive that there is a thread limit built into CF and that that threshold had been met with entirely unresponsive threads. It would appear then that once this thread pool is full, CF just returns this error.
- CFFeed limitationsI said before CFFeed is a great tag, and it is, but for me there is one limitation. CFFeed can go off and retreive feeds for you, but for some reason Adobe have left out some of the key functionality of the CFHttp tag which is useful from a resilience point of view. Primarily is the timeout attribute – that the tag should stop trying to read the feed after x seconds. Secondly, CFFeed doesn’t play well with Http Authentication. Whilst in development, I uncovered a situation whereby CF was sat spinning a thread due to the fact that the CFFeed tag had tried to retrieve a feed that required Http Authentication. Instead of failing out as you’d expect, CF just sits there for ever and ever, never timing out, and never returning an error. As far as I can tell the only way to kill the thread is via a server restart. There is a workaround though. Simply use the CFHTTP tag to retreive the contents of the feed, before passing it into CFFeed to deserialize.
So, overall hopefully you guys find the site is more pleasent to use and some small touches make it more useful to you. When you consider that the site’s ground up re-write from blank to now took me around four hours, thats not bad going…
Now, on to the new features. Watch this space….












You say you are now using a home grown framework. Are you still using anything like ColdSpring/Reactor/Transfer or is the hole thing bespoke?
All bespoke Andy. The framework is one that I developed back circa 1999 and is incredibly simple. So simple in fact, that some might not see it as a framework.
For more info, see the YACF category top left.