is that all their rest areas along interstate highways have free wifi. I discovered this over the weekend. Very, very nifty.
Apparently I missed the news about this last year.
is that all their rest areas along interstate highways have free wifi. I discovered this over the weekend. Very, very nifty.
Apparently I missed the news about this last year.
Probably the most unexpected result of purchasing a Motorola v551 phone is finding out about The Linux Link Tech Show. (One of the people involved had e-mailed me asking about bluetooth under Linux on that phone.)
I’ve listened to about 2 hours of back episodes now. It’s great. I can’t believe it’s been 2 years that they’ve been doing this and I just now learn of it.
They’ve invited me to be a guest on the show next Wednesday evening, September 21. I think it’ll be a lot of fun.
Plus, they’ve got an Asterisk setup. Always like the opportunity to do something cool with Asterisk.
Autrijus Tang is well-known for developing the first working Perl 6 interpreter, Pugs. Pugs is written in Haskell, my new favorite language. Perl.com has an interview with Autrijus, and page 2 of that interview gets particularly interesting. Here are some quotes from Autrijus:
Haskell . . . is faster than C++, more concise than Perl, more regular than Python, more flexible than Ruby, more typeful than C#, more robust than Java, and has absolutely nothing in common with PHP.
(If it has nothing in common with PHP, it must be great, right?)
Haskell is a pure functional language optimised for conciseness and clarity. It handles infinite data structures natively, and offers rich types and function abstractions that give Haskell programs a strong declarative flavor–the entire Pugs compiler and runtime is under 3000 lines of code.
Most languages require you to pay a “language tax”: code that does nothing with the main algorithm, placed there only to make the computer happy. [Java, anyone? — jgoerzen]
On the other end of spectrum, we often shy away from abstracting huge legacy code because we are afraid of breaking the complex interplay of flow control and global and mutable variables. Besides, the paths leading to common targets of refactoring–those Design Patterns–are often non-obvious.
Because Haskell makes all side effects explicit, code can be refactored in a safe and automatic way. Indeed, you can ask a bot on #haskell to turn programs to its most abstracted form for you.
Go check out the interview (page 2) for more, including a demo program that Autrijus wrote to show off Haskell.
Thanks to metaperl for the link.
From PBS’s Bob Cringely, NerdTV episode 1 is here! The site describes it as “Charlie Rose for geeks.” You can download it online in one of many formats.
Episode 1 downloading now…
From the netmaze package tracking page:
Back when I first got my digital camera (a Canon Digial Rebel), I knew I had to find some sort of program to keep track of my photos. I looked at many different programs on Linux, but none of them really did what I wanted. I’ve used some iView software on the Mac some times. While it can do what I want, its database is proprietary, which annoys me. It means, among other things, I can’t write my own programs to pull data from that database.
Lately I’ve been checking out the Linux photo management scene again, and I’ve got to say that digiKam is quite the impressive piece of work.
It has a versatile database, nice interface, and loads of features. Its database uses sqlite, so writing my own programs to work with it will be a snap. I’ve been using version 0.7.x, and it looks like the 0.8.x beta will address all of my few remaining complaints.
I’m moving everything over to digiKam.
Kudos to the digiKam deveopers.
It seems that everywhere I turn on the web these days, people are excited about Google Talk and/or Skype. “Real voice conversations over the Internet for free,” people say.
True.
But, at least in the case of Skype, you are hooked into a single vendor, and at the mercy of that vendor. (I don’t know about Google Talk’s network specifically.) Neither one has done anything really innovative, either. Neither has any features that SIP doesn’t.
Really, both Google Talk and Skype are “been there, done that” technologies. And what’s more, far superior technologies exist.
So in response to all this undeserved hype, I would like to take this opportunity to talk about SIP and why I find it much more exciting for voice conversations.
What SIP Is
Put very simply, SIP, in its most common incarnation, is a protocol for carrying voice conversations over IP networks. It is used for everything from calling the kids in college from a home PC, to massive telecommunications infrastructure by some of the largest multinational corporations in the world. Wikipedia has a technical description of SIP, and you may note that some other protocols (such as RTP) are involved. For most purposes, though, these types of calls are called just “SIP”.
SIP is an open industry standard. They are players of all sizes in the SIP marketplace — from giants like Cisco, to “home VOIP” companies like Vonage, to small non-profits offering free calling services.
First, let’s take a look at some use cases for SIP. Then, I’ll describe all the variety available in the SIP marketplace, and give some examples of why it beats out Skype so easily.
SIP for free IP-to-IP calling
If you are using Skype or Google Talk on your PC, to talk to someone else over the Internet also using a PC, you are using what I’ll call “IP-to-IP” calling. That is, your call never hits the traditional (PSTN — Public Switched Telephone Network) phone system. It is carried 100% on the Internet.
This is trivial with SIP. At its most rudimentary, you can connect to someone else by giving their IP address and a “phone number” to connect to at that IP. In practice, this is rather inconvenient and is rarely used.
Rather, most people use a service such as Free World Dialup (FWD) for IP-to-IP calls. It’s completely free and works with any SIP phone. You just sign up and get how ever many FWD “phone numbers” you want. You can be as simple as you like, and treat it like Skype, or you can set up voicemail, PBX systems, whatever. A little-known fact about FWD is that they have peering agreements with many commercial VOIP providers, letting you call into and out of the FWD network for free if you’re a customer of one of these providers (or know one).
SIP for IP-to-PSTN calling
Many people are using SkypeOut, which lets you place a call from your PC to a phone on the PSTN (traditional phone network). They charge approximately $0.023/min USD for this service. With Skype, this is pretty much your only choice.
If you’re using SIP, you have — and this is no exaggeration — hundreds or thousands of choices. Personally, I use and recommend Voxee, which charges $0.011/min USD for this service, and that’s without any sort of bulk buying arrangements. SkypeOut is more than twice as expensive.
There are plenty of other options — Vonage is one that targets residential customers, and there are others that target large corporations that sell minutes in blocks of 1 million.
In SIP lingo, a company that provides IP-to-PSTN calling is known as a “termination provider” — that is, they “terminate” your call onto the PSTN.
SIP for PSTN-to-IP calling
As far as I know, Skype does not support this. (Update: there are some sketchy details on SkypeIn; see comments below.)
Many of the SIP providers linked to above also provide the reverse: they will, for a small monthly rate (often under $5), sell you a local number. When someone calls that number, the call is routed over the Internet to your VOIP system as if someone had called from another VOIP node on the Internet. Rates are usually quite low on these as well, even for 800 numbers.
In SIP lingo, companies that provide this service are said to provide “DID” (Direct Inward Dial) service.
In addition to the above, there are some other general purpose PSTN-to-IP gateways. IPKall, for instance, links regular PSTN numbers into the FWD network.
SIP Phones
With Skype, any device that you are using must be used with a PC that is running the Skype software. That may not seem like a problem to you, but it can be a surprising limitation.
Of course, there are plenty of PC-based phones available for SIP. They are called “softphones”, and there are dozens available.
You can also find “hardphones”, which are implemented in hardware. These phones require no PC to operate. They typically have an RJ-45 Ethernet jack only, and all they need is a network connection and the name of a server (or two) to go. A person could have no PC in the house at all and have a working SIP hardphone, no problem.
There are dozens of these available as well. I personally have several Sipura SPA-841 phones, which sell for about $80. Very nice. Work right out of the box, but also highly configurable.
There are also a few of SIP hardphones that use 802.11b Wifi instead of Ethernet. This market is growing.
SIP Analog Telephone Adapters
Perhaps you’d rather keep the traditional analog phone that you already have, instead of buying a new phone. No problem, you can buy SIP Analog Telephone Adapters (ATAs). ATAs for personal use sell for under $100. They typically have two ports: an RJ-45 Ethernet port, and an RJ-11 phone port. Plug in the Ethernet and phone, point it at the appropriate server(s), and you’re set. They provide dialtone, caller ID, ring voltage, etc. as appropriate to the analog phones. Once again, no need for a PC.
In more advanced settings (see below), you can also use a different type of ATA to go the other way: to integrate a line from the PSTN into your VOIP setup. More on that below.
Be Your Own Provider
You can run professional, industrial-strength PBX systems in your own home with a program such as Asterisk. This gives you all the features you’d expect from a “business” phone system: multiple extensions, voice mail, automatic call routing using least expensive lines, etc.
I’ve written about my Asterisk setup and given some details on Asterisk before, so I won’t go into a whole lot of detail here.
Suffice it to say that you can really go places with SIP and Asterisk. You can use an ATA to let your outgoing VOIP calls get routed over a PSTN line, or the Internet, depending on costs and whether the appropriate lines are available. You can get bulk concentrators, connecting dozens or hundreds of analog phone lines to a VOIP server at once. There are a bunch of options.
Common Questions
Here are some questions you may have:
What is the sound quality of SIP?
There are many different protocols, some compressed, some not, that are frequently used with SIP. In general, over my DSL link, I find SIP calls to sound better than calls I place with a traditional phone.
Is it hard to set up?
A basic setup, similar to what you would use with Google Talk or Skype, is really very easy. FWD has a nice Quick Start Guide that you might want to check out.
Obviously, if you are setting up a PBX with Asterisk on Linux, you will need a bit more expertise.
Is SIP here to stay?
Unquestionably yes. There are very big names (Linksys, Cisco, Nortel, Earthlink, SBC, etc.) using SIP. There are also community organizations that use it. It will be here for a long time.
Where can I find more information?
If you have some basic questions, you can post comments here and I will try to help you out. (I will not reply to e-mailed questions.) I highly recommend the VOIP Wiki at Voip-Info.Org. It is a thorough and amazing resource that I have referred to on many occasions.
Is it available globally?
Yes, all over the world. VoIP User, for instance, is a community-run PSTN termination service in the UK. Public and private organizations exist all over, though.
The first issue of Haskell Weekly News was posted yesterday. It’s amazing how much the Haskell community is growing, and I’m glad to be able to contribute in some small way. New Darcs and GHC versions are not far away, also.
I’ve been busy coding lately. Here’s what I’m up to:
I’m looking for a text-mode widget library. Something that has dialog-boxes, etc. for text-mode (curses/console/xterm) programs.
I’ve looked at these so far:
I want something with a C library, that supports *nix and Windows, and has support for things like menus, dialog boxes, etc. Any suggestions?