.NET Developer in a Linux world

Friday, March 31, 2006

VoIP call quality

So we did a bit of testing last week. Spoke with Sean over VoIP with my ATCOM-320 SIP/IAX2 phone calling his home PSTN phone. Voice quality seemed pretty good using the 711a codec (8KB/s I believe) but there was some real stuttering going on. Most of the time it was smooth but there was enough stuttering to get a bit annoying. I think once I can figure out what is causing that, we will have good call quality. Unfortunately I'm not a network guru so where the problem lies should be interesting to find out.

What we know of the network is:
- Server end currently is 3Mbit DSL on a Linksys WRT54G
- My home is 4Mbit DSL on a Linksys WRT54G

Placing one call between these two via the 711a codec @ 8KB/s shouldn't be a problem. Especially since the two are on the same ISP which via a ping to the PSTN provider is 35ms. Is this acceptable for VoIP? I don't know but it doesn't sound like a bad ping response to me.

Testing the ATCOM-320 and our Softphone software built into Nexxia, results in the same kind of stuttery/packet missing kind of sound. So it can't be the phone nor the software.

Will have to devise a way to do some network analysis.

More to come soon!

Tuesday, March 28, 2006

Digging into VoIP

Well I've recently started to ramp up the testing of VoIP technologies. I decided my immediate goals are:

1. Buy a SIP/IAX capable phone to test our servers and communication to Nexxia's soft phone software.
2. Buy an account from a PSTN provider (so we can dial out to real world phones).
3. Buy a DID (incoming phone #) so the real world can dial into Nexxia and the SIP/IAX hard phone.
4. Test between all those to evaluate reliability of the server, the software and the quality of the call audio.

I've basically now have all that in place except #3 as I'm having a bit of difficulty with Globotech's instructions.

I'm pretty happy with the reliability so far. Calls seem to go through every time. So far I'm a bit dissapointed with the call quality though. I need to do further testing of audio codecs though.

Latency doesn't seem to be too much of an issue but the audio does get choppy at times so I'm not sure whats causing that. Be it the connection between me and our provider, or if its the codecs used on the SIP/IAX hard phone, or the codecs used in Nexxia.

I hope to setup some tests so Sean and myself can evaluate it further. Perhaps get some others involved for further feedback.

Thanks go out to Matt O'Gorman for helping out with the Asterisk configuration.

Wednesday, March 22, 2006

Nexxia Linux Progress

I've been redesigning Nexxia Messenger to be more platform independant. I have been doing much testing on open source .NET runtimes that run on other operating systems.

My goal is to make the Linux version (and hopefully OSX) to look as identical to the Windows version as possible. Also the goal is to maintain 1 code base, and allow 1 executable run on all platforms. So far I have been able to achieve this.

Currently theres an issue with Jabber.NET threads and Control.Invoke, I'm trying to narrow these down this week.

If anyone is interested in what Nexxia Messenger is, I've started explaining the service I am trying to build in one of my blogs here.

I have been working on Nexxia Messenger and the services related with my buddy Sean who has been involved since the early days of the VB 6 version. We're making some really good headway lately.

Please leave some comments! I'm looking for feedback of what people think.


And finally the current versions on .NET and Mono compared:

Also just so everyone can see the great effort the Winforms team is doing, here are some of the bugs they have been fixing lately which I had reported/tested for them many of which are represented in the screenshots. There are many more!

Bug 77220 Bug 77669 Bug 76648
Bug 77279 Bug 77718 Bug 77219
Bug 77729 Bug 77526 Bug 77673
Bug 77659 Bug 77671 Bug 77672

Great work from Peter Dennis Bartok, Jackson Harper and the rest of the Winforms gang.

Wednesday, March 15, 2006

Intro to Nexxia Messenger

Well to start it all off. Business Week just published an article the other day that basically sums up what I have been working on in Nexxia Messenger for the last 3+ years of my free time.


Aside from that, Nexxia Messenger is really 2 things:

1. An Instant Messenger / VOIP soft phone desktop application client.
2. IM / VOIP service offering a tightly integrated communications platform.

Nexxia Messenger
This is mostly the client software. The thing I tried to achieve in this software is to make it as flexible as possible. Most plugin driven apps are designed in a way that the main part of the application is accessible via plugins. This meaning plugins are really an addon OF the main application. My goal was to make a system where the plugins ARE the application.

What does this mean? This means the meat of the application is implemented in the plugins, not the executable. This also means that any part of the application is replacable. The main window is a dynamically loaded plugin, so is the chat window, etc.

I feel this gives more of a IM platform that is very flexible. This allows users to install whichever plugins they wish. If your not happy with the chat window, replace it!

This is the C# Winforms application which has the goal of being as portable as possible. It is basically a Jabber client and IAX client which connects to a Jabber server and Asterisk server at the same time.

On the server side the Jabber server and Asterisk server are tightly integrated via server components. This gives Jabber the ability to receive phone system notifications etc.

Where I come from and where I'm going

I began getting started with .NET and C# in 2002 after I graduated from College. Pretty much liked it from the very beginning.

I have a personal project called Nexxia Messenger (which I will explain in greater detail in another blog) which was a VB 6 application. I decided to start this project from scratch in C#.

I had always enjoyed open source, although not getting involved too much. After hearing about the possibility of C# being a portable language I got much more interested at that point. This could ultimately make my application port to other operating systems.

I got involved in the Portable.NET open source implementation of the .NET CLI/CLR. Mainly the Winforms implementation where I wrote a few of the controls.

So thats where I began. Posts in the future will most definately come from the technologies I use in my quest to make a cross platform C# Winforms application.

The technologies you will hear me speak of generally will be: Portable.NET, .NET, C#, Jabber, Asterisk, IAX, Jingle and Mono.

I believe any company putting their future in .NET technologies should look at portability options. Many companies probably don't even know it but your application could most likely gain a broader client base via your product running on Linux or OSX and others.

Hopefully this blog will shed some light into what I go through trying to achieve portability in my application. Explain what goes smoothly, what does not go smoothly, and the progression as more pieces come together.

My first blog!

Alright for anyone listening out there this is my first blog! I've been a fan of blogs for a long time. I've been reading blogs almost daily but I guess I just never figured I had much to say, or if I did who would be interested in listening? Well I think its time to begin talking!

This blog first and foremost I think will be a blog about my development projects I work on as a software developer. From time to time I will probably speak about some things I enjoy in my personal life as well.

I am a CTO at a small IT company, so I deal with technology every day. I also work on many projects on my spare time which I think will be the main focus for this blog.

Please comment! I would love to hear what people think about anything I say. So lets have some fun!

Stay tuned...