Central Email Storage

I’ve been looking for a good email storage solution for many years now.
I’ve been wrestling with the problem that anybody who owns and uses
multiple computers has probably encountered at one time or another. How
do you keep your email synced between multiple computers? Nothing is
worse than needing to reference an email while working on your laptop,
and realizing that the email in question is on your desktop.

I’ve been looking for solution that would do the following for me:

  • Make copies of my email available to all of my computers.
  • Makes it easy to backup my mail.

Until now, I’ve been running my own local IMAP server. This works fairly
well when I am on my local network, but is useless when I am somewhere
else. Not to mention, the care and feeding on an IMAP server for one
person is more trouble that it’s worth. Luckily, I found the following
post from Jeremy Zawodny. Using a variation on his setup, I now have
my email available on all my computers, I have backups, and I even have
it available via webmail.

For anyone who cares, this is how my setup works. My primary email
address is actually a forwarding alias. I’ve changed the alias to point
to my GMail account. From there, GMail forwards a copy of every
message to my ISP mailbox. Then, I download my mail via POP to my local

So far, this setup is great. I can read and manage my email with
KMail, and I have running backups and webmail access through GMail.
In a word, awesome.

Tags: Internet Email

Microsoft To Mono: Not Without A License

Microsoft has announced that they will not permit alternative .NET
implementations (Mono) to create their own versions of Avalon and
Indigo without a license. Since the terms of said license will most
likely conflict with the terms of the
GPL and
LGPL, these
technologies will not be available in Mono.

This is the kind of thing that really kills my interest in Microsoft
products. The primary reason I became interested in .NET was the premise
of an open, cross-platform development environment.

Thank you Microsoft for giving me one more reason not to upgrade to

Tags: Programming Microsoft Longhorn .NET

Aspect-Oriented Programming

Lately I’ve been trying to learn how to use aspects in .NET. So far, I
haven’t had much success. Most of the AOP tools that are available for
.NET are either incomplete, or extremely complicated. To date, I’ve
looked at Aspect#, and AspectDNG. I can’t get Aspect# to
actually work, and AspectDNG has me totally confused. I’m not real sure
where to begin.

Recently, I discovered that there is a port of the Java Spring framework
called Spring.NET. (shocking!) It also has an AOP component that
might be worth checking into.

RSS Bandit

I’m switching my Windows RSS/ATOM reader from SharpReader to RSS
. SharpReader has served me well these past few years, but now
it’s time to move on. SharpReader hasn’t been updated in what feels like
eons, and I have outgrown it’s rather basic feature set. RSS Bandit
supports search folders, (a big plus for people who subscribe to more
than 100 feeds) is open source, and has an active developer community.

If your looking for a no-frills reader, then I would suggest
SharpReader. Once you figure out the basics, then I suggest you get
something else. For now, that’s going to be RSS Bandit on Windows. For
anybody who cares, my favorite reader on Linux is Akregator. I use
the reader plugin that integrates it with Kontact.

If anybody has suggestions for other readers on Linux (KDE) or Windows I
would love to hear them.

Cool VS.NET Add-In

From Scott Hanselman’s List of Ultimate Visual Studio.NET AddIns,
CopySourceAsHtml. This little gem allows you to copy code from the
Visual Studio.NET editor to the clipboard complete with HTML formatting.
If you have ever wanted to easily create HTML documents with code
examples or post code snippets on your blog, then this is the tool for
you. Take a look.

using System;
namespace MyHtmlApp
/// <summary>
/// An example class illustrating the joy of CopySourceAsHtml.
/// </summary>
public class MyClass
private int _someVariable;
public MyClass()
_someVariable = 0;
public void SomeMethod()
public int SomeVariable
get { return _someVariable; }
set { _someVariable = value; }

Very nice. Highly recommended.

Gentle.NET Follow-up

After being side-tracked by some pressing issues, I’ve finally had a
chance to play around with Gentle.NET. For the most part, it is a
fairly straightforward and easy to understand framework. I only
encountered two problems while working with it. First, use caution when
naming your database fields. For reasons unknown certain words, like
“state”, get wrapped in square brackets. Gentle.NET doesn’t compensate
for the square brackets when it builds a query, and as you might guess,
those queries will fail. This led to an extended session of pulling out
my hair as I attempted to figure out why my test program wouldn’t work.
My other problem is with the lack of documentation. The source code
comes with a complete set of unit tests, but I would prefer a nice
tutorial outlining the major features and how to use them. If you find
yourself in need of a mapping framework, I recommend that you give
Gentle.NET a look.

With that said, I won’t be using it anytime soon. I’ve come to the
conclusion that Gentle.NET, and object/relational mapping in general, is
a clear violation of YAGNI. For now I will continue to use and
refine the data layer I originally designed for my project. Maybe in the
future, I will have need of something with more features. If/When that
occurs I will be sure to give Gentle.NET another look.