The problem with VOIP Protocols and NAT

I read this article with disbelief it discusses how nearly all the VOIP protocols like SIP and MGCP were not designed with NAT routing in mind. So where are the people who designed them so we can take them out and shoot them.


The story doesn’t end there because of a lack of native NAT traversal support lots of companies are developing solutions (proprietary solutions) that work over NAT. What a complete mess that is going to be.


So what does this mean for your average company? Well basically if you want to switch to VOIP using a generic protocol like MGCP you can’t use a NAT router and your going to need an Internet IP address for each phone! I think that SIP is the most NAT friendly of the protocols and is moving in the right direction.


We are trailing a VOIP service offered by Voxicon it took several weeks to get the phones about five support calls to set them up and we can only use one because we only have one spare internet IP address. We are also trailing SkypeIn / Out, it took two minutes to download and we ordered a couple of USB phones over the web which arrived in two days. So far Skype is off to a better start, it lacks some of the Hunt group and Call Forwarding and Faxing features that the Voxicon solution offers but it is a lot cheaper, about £150 a year per phone cheaper.

If skype comes up with the features that old skool PBX’s offer then there is no reason for companies like our can’t switch to using Skype.

Using IF UPDATE(column) in Triggers in SQL Server 2000

We use a set of three triggers to Audit all Insert, Update and Delete activity on every table in our database. We have a piece of SQL that auto generates trigger create scripts for each table automatically. This means that every time we make a structural alteration to a table we must re-run the script for that table and update the triggers as part of the release.


In the tables with lots of columns we noticed poor performance during updates, looking in Query Analyser at the Execution Plan revealed that for each update there were multiple scans of the Inserted and the Deleted pseudo tables.


This was happening because the Update Audit trigger had an Insert statement in it for each column in the table. The Insert statement caused the scan of the Inserted and Deleted pseudo tables. I remembered reading in the books online that you can use IF UPDATE (column) to test if a column has been updated, by placing this statement around each Insert statement we were able to greatly increase the speed with which the trigger operates, because the Inserted/Deleted scans were only happening for the columns that had been updated.


I dedicate this blog post to Kimberly Tripp’s interview on .Net Rocks, it was a great show full of invaluable SQL Server performance tuning advice.


 


 

Google AdSense Tips

Chris Pirillo podcast interviewed Joel Comm of World Village and talked about how they both dramatically increased the revenue AdSense generated from their sites. If you are running a popular site and drowning in the overheads you should check out the show.


Joel has created a downloadable online book with detailed information on all the tips and tricks needed to maximise adsense revenue. In the interview he claims to be earning US$ 15,000 a month from adsense revenue, check it out. (cost $99.00)


If you devote a lot of your spare time to a popular community site but have resigned yourself to keeping the day job it seems you ought to take another look, maybe you could turn your passion into a career!

Use RSS to find a new Job

More and more Job sites are putting RSS Job feeds on there sites. CW Jobs have there feeds organised by type Permie or Contract and then by skill which works well for the techie’s like me.


UKLug is a site that aggregates jobs from 19 other sites and allows you to search using keywords and then use your RSS aggregator subscribe to your search. An example search: +london +chef


If your in the job adverstising business and don’t have an RSS feed on your site then you had better add one quick!