"Scripting Language", My Shiny Metal Arse shtoom voice over IP, in python and occasional cheap shots what's VoIP? telephony over the internet why is VoIP interesting? cheap calls use IP network for voice as well as data take the telephone network away from the telcos ... it's not like they're doing much with it enable the next round of cool voice applications VoIP clients hardware phones software phones gateways VoIP protocols a short and biased summary first, there was H.323 it sucks a lot don't let telcos design internet protocols this goes double for the ITU from cheapshot import X.400, X.500 SIP IETF does telephony SIP is complex the problem is complex fortunately, we don't need all of it UDP based, client-server SIP is just for control setup, negotiation, call control RTP a little lump of audio in each UDP packet every 20ms multiple audio formats or video RTP is just the transport SIP+RTP = phone TIME 7:00 other protocols standards will win even if they're not all that good TIME 8:00 shtoom why on earth did I attempt this? a scriptable phone make my H.323 pain go away from cheapshot import c++ hopefully help stamp out ignorance "it's just a scripting language" "only suitable for prototyping" existing software phones not so good so write a better one other voice applications (voice applications <> voice recognition) TIME 11:00 why choose python? hopefully you all know the answers to that one a few additional reasons twisted nice UI toolkit many of them so why not use python? performance it's just a scripting language, after all timing and performance TIME 12:20 timing? an audio packet, every 20ms but PC clocks run at 100Hz miss by a fraction -> 10ms delay this is very noticeable approaches to timing approach #1: setitimer approach #2: reset the timer approach #2b: cheat approach #3: LoopingCall LoopingCall works, and works well performance? audio processing audio mixing a pile of mathematics raw python psyco numeric pyrex reimplement the performance critical bits duh... audioop use the standard library the best optimization is one that someone else already wrote and the winner is... and again, for the managers but I prefer this one "scripting language", my arse is this fast enough? audio encoding other people have done this already so use their work ULAW, GSM 06.10, G.72x, speex wrapping C code is easy yay (again) for Pyrex TIME 21:00 shtoom today second major release cross-platform kde/qt, gnome/gtk, tk, cocoa (soon), wx (soon), command-line software phone usable firewall discovery and traversal (an aside: UPnP) from cheapshot import Microsoft other applications doug, the application server conclusions python isn't just "a scripting language" python is fun VoIP is very cool right now VoIP in python is cool therefore, python is cool no, really read the paper use the phone shtoom questions, abuse, anyone I forgot to insult?