Having been using FeedDemon for about a week now, I’ve been impressed with the speed and stability, and decided to buy a licence this morning, which is definitely good value for money, at a mere ?20.
My decision to go with FeedDemon was partly based on the fact that it’s all written in native code and does not use the .NET framework like SharpReader, RSS Bandit and SauceReader which I think offers better performance (though time may prove me wrong).
Having already bought a FeedDemon licence, I’ve still decided to install RSS Bandit and SauceReader anyway and try them out for a while, as they each have some nice features. RSS Bandit has a cool remote storage feature, allowing its list of feeds to be stored remotely (ie. on an FTP server) which is great for people reading blogs on multiple machines. Sauce Reader downloads blog comments along with blog entries.
However, despite these cool features, both appear to exhibit the same behaviour which influence my decision to drop SharpReader: excessive RAM usage. I’ve rarely seen the memory usage for FeedDemon go above 25mb. SharpReader was regularly hitting 70mb. Sauce Reader and RSS Bandit don’t seem to be as bad, though they aren’t as light as FeedDemon. However, I haven’t been using them long enough to form an opinion about them yet.
I’ve been using SharpReader for some months now as my preferred RSS reader, though as the number of blogs I read has grown, the application has grown slower and slower, and I’ve started looking at alternatives.
It was with great interest then, that I checked out Newsgator Web Edition which is also free. Although I don’t use the Newsgator Outlook plug-in, I have tried it, but prefer to keep my RSS feeds and email seperate (though I’ve been tempted to try using it again as Mark speaks of it so highly!).
So far, I’m quite impressed. It’s great being able to access my feeds from my machines at home and at work, as well as keep my blogroll [on the right] automatically up-to-date. On my personal homepage maintaining my blogroll is a little more cumbersome, requiring me to export my subscriptions from SharpReader into an OPML file and FTP it upto my website, where some ASP code converts it into HTML.
However, I’m still thinking about an application-based solution, and am currently trying out FeedDemon, which appears to be much quicker than SharpReader.
Both Newsgator and FeedDemon go for about $30, and if I find that Newsgator Web Edition doesn’t meet my needs, then I’m sure I’ll be going for one or the other.
Any RSS reader recommendations would be appreciated. Ideally something that copes well with 200+ feeds.
The Disability Discrimination Act (DDA) is an act passed by the government making it unlawful for a service provider to discriminate by refusing to provide any service which it provides to members of the public. From a web perspective, this means that companies offering services to the public have to have accessible websites.
One interesting way of checking how well a website renders in the lowest level of browser is by downloading LYNX, which is a text only browser. This gives a good indication of how accessible it is.
For more information, check out the DDA website. For further details on how this relates to accessible websites, check out the Disability Discrimination Act (DDA) & web accessibility article on webcredible.
During development, I often find myself inserting tons of test data into SQL Server tables, which keeps incrementing the identity field up. When going live, we don’t really want the first rows of data entered by the client to have ID’s of 12439, or some other silly number…
Although the TRUNCATE TABLE command can be used to clear down tables, it cannot be used on tables which have constraints, in order to maintain referential integrity.
In this case, using the DBCC CHECKIDENT(tblname, RESEED, 0) command comes in handy. This allows us to reset the identity field on the specified table, without affecting the table constraints. Using this in conjunction with the DELETE FROM tblname command, we can emulate the behaviour of TRUNCATE TABLE.
Google have released a desktop search product called Google Desktop which allows you to Find your email, files, web history and chats instantly, View web pages you’ve seen, even when you’re not online, and Search as easily as you do on Google.
The application is a small download (447k) and takes seconds to install. The initial indexing process can take a while, during which searching will return incomplete results. However, once the initial indexing is complete, searching should be quick, though you’ll have to keep the application in your system tray so that the index is kept up-to-date.
I’m gonna try it out for a few days, and see how it goes. Of course, I’m sure we’ll be seeing Microsoft getting into desktop search, and probably blinkx too. Time will tell as to how these products compare.
A short while ago, Jeff Atwood wrote a blog called double-click must die about a problem his team was experiencing with a smart client application, which came down to the user double-clicking a button on a web form.
The proposed solution was to disable to submit button upon being clicked, so that the user could not click it again. I’ve used this method a lot in web applications built using ASP and PHP, with much success.
However, when using the same method in ASP.NET applications, there is a fundamental problem. If a button is disabled when clicked, the server-side event doesn’t fire. Presumably, this is because when the button is disabled, it’s name/value is not posted back, resulting in the server not knowing which button was pressed, and therefore unable to fire the corresponding event.
Therefore, we can’t use this technique to stop double clicks in ASP.NET. But, we can still use Javascript to implement the same concept.
window.isFormSubmitted = false;
function formSubmitted()
{
if (!window.isFormSubmitted)
{
window.isFormSubmitted = true;
return true;
}
else
{
alert("form already submitted");
return false;
}
}
We then add this to our form tag:
<form id=form1 method=post runat=server onsubmit=”return formSubmitted()”>
…and voila, that is how you can stop double-clicking users from causing problems with your web application
There’s a security vulnerability in ASP.NET which can allow an attacker to send malformed URL’s to a website and bypass forms based authentication or windows authorisation configurations. There’s more information at Microsoft. Developers can make changes to the Global.asax for each web application (see Ken Cox’s newsgroup post), though they’ve also released an HttpModule fix, which can be downloaded here, and there’s also a related knowledge base note.
According to Scott Galloway, machines configured properly using URLScan for IIS5 or IIS6 (which incorporates much of URLScan) aren’t affected. Thumbs down to Microsoft for not making this clear on the security bulletin.
Should we be trusting Microsoft’s authentication methods [in ASP.NET] to secure our web applications? I do wonder sometimes. How long is it going to be before we see more serious security vulnerabilities in ASP.NET?
Will be keeping a close eye on this one.
Transforming an XML document using an XSLT stylesheet is a little different in .NET. Here’s how to do it. Thanks to Matt for this one.
XPathDocument doc = new XPathDocument(Server.MapPath("doc.xml"));
System.IO.MemoryStream stream = new System.IO.MemoryStream();
XslTransform trans = new XslTransform();
trans.Load (Server.MapPath("doc.xsl"));
trans.Transform (doc, null, stream, null);
stream.Seek (0, System.IO.SeekOrigin.Begin);
System.IO.StreamReader reader = new System.IO.StreamReader (stream);
string result = reader.ReadToEnd();
reader.Close();
stream.Close();
I’ve been wanting to start a blog focusing on my experience with .NET for a long time, but have never got round to it, and simply merged blogs relating to development into my personal blog at munsplace.com. But, after some screaming and shouting from Nick, and as I’m doing more .NET development now, I thought it would be cool to share some of my experiences with the world, as well as create a repository of issues and cool code I come across, to refer back to in future.