The NeverFail Messenger
Hours: ~300. Produced: 2008.

The NeverFail Messenger Contacts List
I was, am, and probably will be always DISGUSTED by all Instant Messaging solutions! Yahoo is horrible and full of bugs, Skype and Pidgin lack important features, Trillian is not free, MSN’s message delivery system is buggy, etc! So, as any good critic, I took my words and put them where my Visual Studio was!
Continue to read this post if you’re interested in the text & images approach, or, if you prefer videos, check the NeverFail Messenger Presentation Video. You can even install NeverFail yourself! I got a nice clean NSIS installer ready for demo purposes. Contact me if you want access.
The NeverFail (Instant) Messenger is my attempt to even the score with some of the horrible products out there. Naturally, since I didn’t have a team or any investors behind me, I was only able to take this product to a “Proof Of Concept” stage. It’s a very advanced proof of concept, mind you, but it’s still not complete enough to be used comfortably. However, the roots are solid, I believe, as, so much hate against the IM programs out there was very motivating! ::- D.
So, “what’s with the name” you ask? I named it like this because of the biggest problem with a lot of IMs out there: failure to deliver the messages! For fuck’s sake, a messenger is supposed to DELIVER MESSAGES, how the hell is it that most of them fail exactly in that regard!? I will tell you how: because of (extremely) poor coding and (horribly) misguided server architecture.
Excuse my harsh language, but I’m still enraged against all IM solutions. There isn’t a single IM that has it all right. Yahoo has very nice features (custom invisibility settings comes to mind) but they dumb it down version by version. Lately, they started storing the archive on their already broken servers. Don’t get me started how completely screwed any Yahoo archives are now.
That being said, the “NeverFail” name has a very important reason behind it: this Messenger should Never Fail ::- ). And it doesn’t. The NeverFail Messenger works on the assumption that the entire Universe is conspiring so that your messages fail to reach their destination. And it is prepared to do battle with said Universe ::- D.
Technical Aspects
The bulletproof and meteorproof armor of the NeverFail Messenger is a a redundant database system: server-side *and* client-side. Once a message is written, it will first go to a client-side repository: in case the internet connection dies, the message will never get lost. Not even if you lose power as soon as you hit your “Send Message” key (Enter by default).
Then, the message goes to the server, where it is stored in a database together with a unique SSH hash of the message and a UTC timestamp. It is then sent to its intended destination. If the receiver does NOT confirm receiving the message by returning the unique SSH hash, the message will CONTINUE to be sent AGAIN and AGAIN until the receiver confirms it or disconnects from the system (in which case, any messages will wait for the receiver’s return).

The NeverFail Messenger Contact List
If the receiver somehow receives the same SSH/UTC stamp message twice (due to network lags or problems), it will again tell the server that it has received it, but will not duplicate the message on the screen.
The SSH hash makes sure that not even a single letter of your messages is corrupted by an internet transfer. The entire system is made so that it’s almost impossible to lose a message you typed. The only narrow case is if your computer has a complete hardware failure after you pressed your “Send Message” key. Complete hardware failure = unrecoverable hard disk with no further hope of connecting to the Internet.
All this is built on a custom Socket Server, written in C# which runs as a Windows Service. The database is MySQL, a solution I picked for its cheap hosting alternatives. More redundant database nodes can be established across the network.
Since the target demographic of NeverFail is very wide, I had to make sure it has a nice User Interface. I achieved this in two ways. First of all, I used DevExpress controls, which enrich the UI experience and provide a wealth of functionality to .Net Developers, speeding up development time. I’m no DevExpress evangelist, but they really do rock ::- ).
Secondly, I added a highly flexible Skinning system, combined with full Internationalization support. Skins and Languages can be swapped during runtime, without any restart required. All modifications are applied instantly on all opened windows.
I’m not such a great designer, my talent is with the keyboard. That aside, the NeverFail Messenger is one of the prettiest projects I ever built. And you wanna know why? Because it was a gift for my girlfriend ::- ). I hated how we sometimes had communication issues because of crappy commercial software, so I built this one just for us. I presented it to her on her birthday in 2008. She loved it ::- D.
Short Presentation
Now that I’ve told you a bit about NeverFail’s insides, let’s take a look at how it looks and what functionalities it provides the user. I already shown you the Skins (aka Themes). The Skins are XML files which describe what colors, images and User Interface style to apply to the Application. New Skins can be created by anybody and NeverFail will read them as soon as it starts up. No installation is required. And here is how you select your themes.

NeverFail Messenger Themes Selection
And, to quote my own words: what good is a Messenger without friends? This is how you add them. Invitations can be refused or ignored by the invited party. Even more, taking a decision can be delayed for the next time the invited party starts the program, when the Server will remind them about the invitation.

The NeverFail Messenger Add Friends Screen
Another aspect I wanted to improve on in the field of Instant Messaging software is grouping. First of all, like with any respectable IM (not Skype), you can create any number of Groups in which to add your Contacts. However, one improvement over any other IM is that you can have duplicates in your groups. You can have a friend both in your “Programmers” group as well as in the “Close Friends” group and in the “Stockholm” group.
I had in plan to even implement a Group organization based on “Jobs”, “Locations”, “Relation” or any kind of customizable tab. I haven’t had the time to code that though.

The NeverFail Messenger Group Management Screen
I managed only to add basic Preferences to the NeverFail Messenger. By the way, you might have noticed the pretty icons everywhere. Those are not DevExpress. It’s the IconShock library, the Lumina series to be precise. I bought the library in 2008, an investment that helps me even today.

The NeverFail Messenger Preferences Screen
But how does the actual Instant Messaging looks like? I guess after all you’ve seen, it’s going to be rather anti-climatic when you see the simple IM window. But that is by design. I could have added lots of “rich” design to the chat window, but I chose to keep it ultra-clean and simple. It doesn’t even have emoticons, but I admit that this was purely a time constraint rather than a design choice.
The chat window uses IEFrame, the well-known Windows OS browser control. So everything that goes on is in HTML. I used C#-generated CSS classes to customize the browser’s control scrollbar, and C#-injected JavaScript to create smooth scrolling and other nice features.

The NeverFail Instant Message Window
The End?
I never got to implementing the archive, but I can say this: it would have been, by default, stored on the local storage media or, by user choice, 7zip-encrypted and ultra-compressed and sent to the server in a binary format. Also, it would include Export and Import functionalities and a decent Archive browser. This is something not a single IM has. All archive functionalities are apalling.
Even more, I wanted to implement basic white-board and syntax coloring functionalities for programmers. And if I don’t stop writing soon, I might come up with too many new ideas, I’ll over-enthuse myself and I’ll start work at The NeverFail Messenger again – something I don’t have time for.
But who knows, maybe someday, we’ll all be using NeverFail Messengers, *grin*, isn’t that a scary thought? Hehe. See you!

The NeverFail Messenger Login Screen
