Open source fails when it most matters

So I was looking for alternatives to the Mantis issue/bug tracking system. I am pretty much fed up with its lackluster usability.  Simple things take several clicks.  There is no ajax anywhere.  You are redirected to pages just to be told that an operation completed (ie, change a user profile), and then you are forced to click on a link to proceed.  You are then redirected to an irrelevant page (usually).  Very unusable, very amateur design.  Functionally, though, it has what you need in an issue tracker, so I suppose people do not mind clicking like crazy because in the end you can get your job done.

Anyway, I was looking for alternatives to Mantis.  I ran into eTraxis, and it sure does look good, judging from the three screenshots their site provides, along with the vague feature list to go along with it (why the fuck bother to list “Advanced filters” as a feature?  That tells me nothing about the filters, other than they are not trivial.  Whood-de-freekin’ do.  Every feature I implement is “advanced” too).

Suffice it to say, from the three screenshots (because the feature list was so damn useless) I gathered that this could be a product I could use, and recommend to my clients when they need an issue tracker to have on their own.  I needed to try it out.

There is a “Demo” link on the site, which seemed to be exactly what I wanted:  Let me try it out quickly, let me be wowed by the interface and usability.

No dice. For the eTraxis people, it seemed to be a better idea that you download a 50MB package with bynaries for XAMPP so that you can try the thing in your own damned machine.  I’m sure on paper it seems like a good idea:  Why have an instance running on our site that everyone is messing with?  Why not just have everyone download a copy of the thing, and run it on their own computer?  They could do whatever they want, and it would be lag free on top of it!

Well, of course, the thing does not work.  Here is what I get when I try to run the server on my own Windows 7 x64 development machine:

Fail under Windows 7

“xampp” is not started is the only feedback I get.  All you see above is all the feedback I got.  I am expected to figure out why it did not start, since these brainiacs seem to think error descriptions are for pussies.  Where would I start to look for the cause and explanation of the error?  Apache on Windows is an afterthought, so I would not expect debugging this would be as easy as if the error had occurred on Linux.

Ok, so I am a computer programmer, and I have a bunch of virtual machines lying around that I use for testing (hint to the xampp/eTraxis people: You might want to give testing a try one of these days).  What more typical an O/S to run software on is there than a 32-bit US English version of Window XP?  So I restore my last snapshot, on that has absolutely nothing on it than a completely blank, patched up version of XP 32 bit.

Things only improved marginally:

Capture2

So it still fails, but now it tells me the name of the executable it tried to run.

By this time I am done with this.  I don’t care why it did not work. All I know is that the xampp thing sis not run even in the most plain-vanilla, unmodified Windows version you could have.  I wonder if anyone has ever been able to run this demo. Anyway, if this is how the eTraxis demo works, then imagine the quality of the product itself.

Open source people have got to learn to close the sale.  They do all of these thousands of hours of work into a project, and then drop the ball at the 99.99% mark, thinking that’s enough. A sale is a sale.  Even if your price is $0, you still have to get people to buy into your product.

Bottom line: I did not try out eTraxis.  I did not even consider switching to it. I just wasted some time with it, and I am pissed off, so I am writing an entry about it. Open source is its own worst enemy.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • BarraPunto
  • Blogosphere News
  • DotNetKicks
  • kick.ie
  • LinkedIn
  • Live
  • Ping.fm
  • Pownce
  • Slashdot
  • Technorati
  • Tumblr

Post to Twitter Tweet This Post

Tags:

No Comments

Hotmail POP3 & SMTP connections – Or how to use Outlook with a Hotmail account

If you could point to a problem that a great many people have had over the years with different solutions and no clear answers, it is the problem of configuring Outlook (or any other email client) to access your Hotmail account.
There are plug-ins, conflicting settings, unclear instructions, and differing requirements (ie, pay versus no-pay accounts) have been spread out over the years.
I aim to end the chaos :-) .
As of this writing (September 2009), you can access all Hotmail accounts, even free accounts. The servers and port numbers to use for Hotmail are the following:
POP3 Server:
Server: pop3.live.com
Port: 995
Encryption: SSL
SMTP Server:
Server: smtp.live.com
Port: 587
Encryption: TLS
Server requires authentication
For both servers, the login username is your complete email address.

If you could point to a problem that a great many people have had over the years with different solutions and no clear answers, it is the problem of configuring Outlook (or any other email client) to access your Hotmail account.

There are plug-ins, conflicting settings, unclear instructions, and differing requirements (ie, pay versus no-pay accounts) have been spread out over the years.

I aim to end the chaos :-) .

As of this writing (September 2009), you can access all Hotmail accounts, even free accounts. The servers and port numbers to use for Hotmail are the following:

POP3 Server:

  • Server: pop3.live.com
  • Port: 995
  • Encryption: SSL

SMTP Server:

  • Server: smtp.live.com
  • Port: 587
  • Encryption: TLS
  • Server requires authentication

For both servers, the login username is your complete email address.

Outlook Configuration

Here is the series of steps you need to follow:

On the main account configuration window:

Outlook Main Account Configuration Page

On this screen, enter the server names as shown, and your username (full Hotmail email address) and password.

Click on “More Settings…”

Internet Email Settings Window

OutlookOutgoingServer

On this window, go to the “Outgoing Server” tab, then change the settings as shown

Go to the “Advanced” tab next…

OutlookAdvanced

…And put the settings as shown above.

You’re done!  Now to test your changes.  Press “OK” and you will go back to the main account configuration window.

On that window press “Test Account Settings…” and it will perform a test:

OutlookTestSuccess

If you set everything correctly, you will see the two status values as “Completed”.  Congratulations, now you have access to your Hotmail account via Outlook!

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • BarraPunto
  • Blogosphere News
  • DotNetKicks
  • kick.ie
  • LinkedIn
  • Live
  • Ping.fm
  • Pownce
  • Slashdot
  • Technorati
  • Tumblr

Post to Twitter Tweet This Post

Tags: ,

No Comments

C#: Working with Images, image files, and PictureBoxes

One of the most frustrating things you run into when working with image files, Images objects, and PictureBoxes is that once you release your application, some users will get “file locked” errors when trying to manipulate files that you have displayed onto the screen via a picturebox. Finding a workaround can be downright maddening: It is sometimes hard to replicate the problem, and it is difficult to open an image and display it without displaying the image you have just opened from a file :smile: .

It does not help that on some machines the problem manifests itself as an “unknown GDI+ error,” so you might spend many hours chasing this unknown error only to realize it’s the same as the “file in use by another process” error you get from other machines.

Microsoft makes the problem worse, giving misinformation in Knowledge Base articles such as these: http://support.microsoft.com/kb/311754. This article gives a work around that does not fix the problem everywhere and it goes on to state this behavior is “by design.” Putting aside the issue of how someone could put in bugs such as these “by design,” the fact that the behavior is not consistent makes this a bug anyway.

If you do a search for the problem you might run into these suggested fixes:

  • Dispose of the Image object before saving a file
  • Dispose of the Image object before saving a file, and then call the garbage collector to make sure the Image really is disposed
  • Make a copy of the Image before attaching it to the PictureBox (It seems .NET is way too smart to fall for that one and somehow still tracks where the image came from)
  • Use the Image.Clone() method to make a copy of the Image before attaching to the PictureBox
  • Use a FileStream to open the image

There are many, many posts on this issue all over the internet, and believe me, I read all of them, and none gave me a full answer, although all pointed me in the right direction: The less “connected” the image file was to the Image object, the better off everyone would be.

So how do we fix it? This seems to be a bug in Windows since at least the VB6 days, so we might as well work around for it.

After much hair pulling and trial and error, here is what finally worked for me: Open the file containing the image, and, in the most indirect, sneaky way possible, assign the file contents to the Image object which you will use to display the image in a PictureBox. Do the same when saving an Image to a file. Do not mix Image objects and files and everyone will be happy. Here are the general steps:

  • To open an image file:
    • Open the graphic file, but not into an Image object, open the file into a byte array.
    • Convert the byte array into an Image object (the conversion will figure out which format (PNG, JPG, etc…) the file is using)
    • Use that Image object to assign to a PictureBox to display to the user
    • Do NOT call the Image’s .Save() method, as that ties the Image to a file. See below…
  • To save an image file:
    • Clone the image via the Image.Clone() method
    • Save the cloned image to a MemoryStream, using your preferred encoding (PNG, JPG, etc…)
    • Convert the stream to a byte array
    • Save the byte array to a file

Here is some code that might help you:

To read the file:

public static Image NonLockingOpen(string filename) {
	Image result;

	#region Save file to byte array

	long size = (new FileInfo(filename)).Length;
	FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
	byte[] data = new byte[size];
	try {
		fs.Read(data, 0, (int)size);
	} finally {
		fs.Close();
		fs.Dispose();
	}

	#endregion

	#region Convert bytes to image

	MemoryStream ms = new MemoryStream();
	ms.Write(data, 0, (int)size);
	result = new Bitmap(ms);
	ms.Close();

	#endregion

	return result;
}

To write the file:

public static void NonLockingSave(Image img, string fn, ImageFormat format) {
	// Delete destination file if it already exists
	if (File.Exists(fn))
		File.Delete(fn);

	try {

		#region Convert image to destination format

		MemoryStream ms = new MemoryStream();
		Image img2 = (Image)img.Clone();
		img2.Save(ms, format);
		img2.Dispose();
		byte[] byteArray = ms.ToArray();
		ms.Close();
		ms.Dispose();

		#endregion

		#region Save byte array to file

		FileStream fs = new FileStream(fn, FileMode.CreateNew, FileAccess.Write);
		try {
			fs.Write(byteArray, 0, byteArray.Length);
		} finally {
			fs.Close();
			fs.Dispose();
		}

		#endregion

	} catch {
		// Delete file if it was created
		if (File.Exists(fn))
			File.Delete(fn);

		// Re-throw exception
		throw;
	}
}

And finally, here is an extension method that will make your life easier:

public static void SaveViaStreams(this Image img, string fn, ImageFormat format) {
	NonLockingSave(img, fn, format);
}

Once I used these methods to handle file opens/saves all my file locking errors went away, on all computers that used my system. Hope this helps you as well!

kick it on DotNetKicks.com

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • BarraPunto
  • Blogosphere News
  • DotNetKicks
  • kick.ie
  • LinkedIn
  • Live
  • Ping.fm
  • Pownce
  • Slashdot
  • Technorati
  • Tumblr

Post to Twitter Tweet This Post

Tags: , , ,

2 Comments

Wedding pictures online (finally!)

Here are the pictures of our wedding.  The photographer took 925 pics, we still have to select 140 of them (a very difficult task, actually!) so they can be optimized/retouched/etc…  Click on the picture below for the gallery:

Gabriel & Mili's Wedding

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • BarraPunto
  • Blogosphere News
  • DotNetKicks
  • kick.ie
  • LinkedIn
  • Live
  • Ping.fm
  • Pownce
  • Slashdot
  • Technorati
  • Tumblr

Post to Twitter Tweet This Post

Tags: ,

No Comments

Twitter links powered by Tweet This v1.6.1, a WordPress plugin for Twitter.