Friday, August 21, 2015

Python on Big Iron: A Challenge for the Future

Python is a fantastic language. It can do just about anything you need, it allows you to write code in a manner that's comfortable for you, and it stays out of your way as much as possible. Over the last few years, I've found myself turning to Python more and more instead of 'traditional' languages like C++, C#, or Java. Python allows me to be more productive than most of these languages, is cross-platforn, and, on modern hardware, it's usually 'fast enough'.

One place where Python falls down hard, however, is on so-called 'Big Iron'. I'm talking about those massively powerful computers used in various industries like the financial, medical, entertainment, and others that require solid, reliable, scalable performance. Mainframes.

While we usually don't think about it, mainframes are still heavily in use around the world. Chances are pretty good that you interact with these beasts every single day and someone is writing code for every single application that runs on them. Unfortunately, that code is not being written in Python. It's written in a variety of other languages like Java, C++, and COBOL, but it's not, almost ever, Python.

Python support on modern mainframes is abysmally shameful. The last time I looked at doing a mainframe project, the latest version of Python I could find was 2.4.1. That's old. Like 2006 old. There's a lot of talk about bringing 2.7 and even the 3.x branches of the language to the IBM mainframe, nobody seems to be making any moves to actually do that (and I'm looking squarely at you, IBM).

Don't get me wrong, I understand that mainframe development is pretty niche. But it's still another mountain that I believe Python should climb and could shine on. It's time our community understands that there's a lot of code being written for the mainframe and we're losing that battle. The mainframe isn't going away anytime soon. In fact, IBM has seen an uptake in sales of its z-Series and OS/390 systems and, as data becomes more and more complex, I suspect the need for large systems is going to increase.

With all the complexity the mainframe brings, opening development to potentially millions of developers by supporting a modern version of Python would benefit both the language itelf and the mainframe vendors themselves. It's an awesome opportunity that I truly hope that both communities focus on in the very near future.

Monday, August 10, 2015

Living the SIP Life: Making and Receiving Calls on the Cheap

Phone bills are crazy these days.  In an industry that hasn't evolved much over the last 20 years, those of us who choose to use traditional telephones (both landline and mobile) are used to paying hundreds and sometimes thousands of dollars a month just to communicate with our customers or our friends. Calling is a huge profit centers for telecommunications providers and an industry where, unfortunately, the consumer often loses.

About a year ago, I decided to try to find a way to lower my phone bill. While I wasn't paying what I thought was a huge amount compared to some of the bills I've seen, I still wanted to see exactly how far I could drive down my costs and still have fairly reliable phone service. For my needs, I don't need to always have phone service but I needed it to be reliable enough to where I didn't have to be paranoid about being stranded somewhere without a way to call for help. My requirements were pretty simple and I felt sure that I could get what I needed easily and for a lot less than I was paying at the time.

For several years, I've played with voice-over-IP calling from my desktop computer using Skype. Voice-over-IP basically uses the Internet to make your calls instead of the traditional telephone network. It allows you to call other people on their PC's, usually for free, and place calls to regular telephone numbers at a reduced cost. It also brings a whole host of features that generally aren't readily available on regular phones like call recording, high quality wideband sound, and the ability to easily control how calls to you are routed. Additionally, if you're making calls to another VoIP user instead of a telephone, you can often enjoy enhanced privacy through the use of strong encryption. All of those features are things that are important to me so I decided to give VoIP a serious try about a year ago,

MY OPTIONS

As you might have already noticed, there are several ways to do VoIP calling. Each of them have their advantages and disadvantages so the first thing I had to do was to decide which route I wanted to go:


SKYPE

My first option was simply to remain with the VoIP system I'd already been using for a few years: Skype. Skype provided very good audio quality, cheap calls, and the ability to call both regular phone numbers for a cheap fee and other Skype users for free. What Skype did not offer was virtually any control over the actual call itself. I couldn't route the call around based on different criteria, I couldn't block certain numbers or forward only certain numbers and, perhaps worst of all, Skype provided no real security for my calls. Yes, they offered casual call encryption but, as we learned from Edward Snowden, that encryption was pretty porous, and could be gotten around. While I'm not exactly exchanging government secrets, I still don't want anyone who isn't part of the call to be able to listen to my call so that, along with other things, quickly made Skype a no-go.


Google Voice / Hangouts

For the last few years, I'd used Google Voice to make calls and receive texts pretty regularly. The service offered a pretty sweet deal: free calling to all of North America, a free incoming phone number, the ability to block and record calls, and call routing options all for free. The trade off?  I would still be feeding data into the Google data pig and the call quality wasn't all that great. Google Voice and Hangouts came very close to the solution I wanted, but didn't quite go all the way. It's still a solution I might recommend to someone completely new to VoIP, just like Skype, but it wasn't right for me. Plus, Google Voice still used my mobile minutes so it wouldn't really help me reduce my bill*.

SIP

SIP has been around for a while and is widely used in the business world. Much like Skype, Google Voice, and other solutions, SIP allows you to do the basics: make and receive calls, send text messages,etc. But the cool thing about SIP is that it is a 'build your perfect solution' type of thing. While I'd deployed SIP solutions for clients in the past, I'd never really used to or even considered it for my own needs.

SIP is a little more complicated than the other solution I'd tried but still not out of reach to normal, non-tech people. The complexity of SIP often comes from the 'roll your own' nature of the solution. When you use Google Voice or Skype or many other calling solutions, the service kind of works like your old phone service: one company provides you both a phone number to receive calls on and handles all of your outbound calls. You really don't get a choice. You can't really tell AT&T, for example, that you want a phone number from them but you'll do your outbound local calling through Sprint.

SIP allows you you to do that.  While you can use one company to handle everything, you don't have to do that. For example, you can go to one company and get an inbound phone number and choose a totally different and unrelated company to handle outbound calling. While it's more complicated, doing it this way has the advantage of not being locked in. For example, if your outbound provider announces a rate hike, you can take your business to another provider who's cheaper and be up and running in a matter of minutes. The same is true with your inbound calls. If your inbound network has a lot of problems, it's trivial to port your number to just about anyone else and leave that provider behind.

Another great thing about SIP is that you're also not bound to a program. If you use Skype, for example, you have to use the Skype program to make Skype calls or receive them. The same is true with Google Hangouts. But with SIP, there are hundreds of programs to choose from. Because SIP is an open standard, anyone can write a compatible program (called a softphone) and make it available to you. You don't even have to use a program at all, in fact. You can purchase inexpensive devices (think: $10) that allow you to connect a regular phone to the Internet and make your SIP calls that way. You can even mix and match. For example, I have a traditional phone connected to my SIP account. But I also have software running on my phone that's also connected to that account. So when someone calls my number, both the phone on my desk rings but so do my mobile phone and tablet. This allows me to answer the call no matter where I am and makes doing that kind of thing amazingly easy.

Of course, we should also talk about features. This is largely provider specific but I chose a provider (Callcentric) that gave me all the call handling options I need. I'm able to route calls to different place based on the number that's calling me, the number they are calling, ,the time of day it is, and a host of other criteria that really allow me to control my calls with a granularity that the traditional phone system would never offer.  Of course, SIP also allows me to call not only phone numbers for a small fee, but other SIP users anywhere in the world on any system (not just Callcentric). That, to me, makes the perfect solution and that's the one I went with. To me, it's heads and tails over Skype, Google Hangouts, and the competition.

MAKING CALLS AND OTHER FEATURES

My next decision came with choosing the company or companies I wanted to use to provide my inbound phone number and my outbound calling. The SIP landscape is literally littered with providers of these services; there are hundreds to choose from all over the world. In the end, I narrowed my choices to three that I think provide the best and most reliable service. Additionally, all three of these service can provide an entire solution (both an inbound phone number in almost any country and outbound, worldwide, calling).

1. VoIP.MS

Voip.MS is a long time provider of SIP services. They've been in the game for a few years and they have a reasonably priced service with good options. They can provide you with a phone number and the ability to call out worldwide and they even allow you to send SMS messages to mobile phone users worldwide. Overall, a pretty decent service that comes highly recommended.

2. Localphone.com

Localphone is a UK based company that offers really basic service: an inbound phone number, outbound calling, and voicemail. That's about it. You can't control a lot about the calls themselves, you can't really route based on a lot of criteria, and their support is often lacking. Their outbound rates are amazing though. For $5 USD a month, you can get 5,000 outbound minutes to the US and Canada. Not a bad deal at all. Unfortunately, because of the problems with tech support, the inability to call PC-to-PC to other SIP users, and a few other things, I don't quite recommend this service as highly as I do the others. If you're looking for a budget deal and don't need a lot of features and tech support though, this might be the service for you.


3. Callcentric.com

Callcentric is a business class VoIP provider. What I mean is that you can reliably set up a business on Callcentric VoIP and never worry about it again. They have a ton of features, great call routing options, voicemail, inbound and outbound calling, the ability to have up to 100 extensions all routed to different places, and even an IVR (the "for accounting, press 1" type of thing). While this might sound like they wouldn't be very useful to a home user, the features can really come in handy sometimes and home users are definitely encouraged to use it.

After narrowing it down to these three providers, I decided to 'roll my own'. No single provider offered everything I wanted (Callcentric came very close but their rates for outbound calling were a little higher than I wanted to pay). In the end, I chose Callcentric for my inbound calling (they provide my phone number and handle all of my call routing) and Voip.MS for my outbound calling (their rates are a penny a minute. I could have gotten cheaper outbound calling. For example, a company called Flowroute offers calling at a tenth of a penny a minute (worth checking out) but, for various reasons (none technical) I chose not to go with them. You might want to though. They are cheap, and rock solid.

With actual call handling done, the last piece of the puzzle was choosing how I was actually going to make and receive calls. That wasn't a difficult choice at all.

  • I needed to be able to make and receive calls on my mobile devices (phone and tablet) when I was not at my computer.
  • I needed to be able to take calls on my computer when I was sitting in front of it.
  • I needed to be able to take calls on a traditional desktop phone I could buy at Walmart or Best Buy.
For mobile calling I tried out a few programs. I use Android devices so I had a lot of choices int he Google Play Store. In the end, I narrowed it down to two of the best: CSipSimple, which was an open source program that had a lot of features and Zoiper, a proprietary software that had even more features and better support.

After trying both for a while, I settled on Zoiper. It's a good program supports encryption, and has a lot of features I like.

I also chose Zoiper for my computer as it works on Windows, Linux, and Mac, (as well as Android and iOS). It was a no brainer. There are a lot of other options for the desktop though so you might want to search out sip desktop programs on Google and try a few before making your final decision.

Lastly for my regular desktop phone needs, I bought a cheap ATA (analog telephone adapter) from Amazon that allowed me to just plug my phone in, answer a few questions (like username and password) and be up and running.  It was cheap, easy to install, and just works.

RESULTS

It's been a little over  year since my experiment began and, I have to say, I'm rather pleased. my total phone bill now is less than $50 a month and I talk a lot. I can take and make calls wherever I am and I have a single phone number for people to reach me.  There have been a few hiccups along the way such as my inbound or outbound provider being down for a few minutes every no and then but, overall, it's been a pretty nice experience.

Will I stick with it? Absolutely. In fact, I'm now looking for  data-only plan so I can get rid of voice costs from my mobile provider altogether. For me, SIP has turned into a great experience with amazing cost savings.

I definitely recommend it. 

Thursday, June 18, 2015

Why we should trust Apple with our data

Earlier this month, Edward Snowden wrote an op-ed piece for the New York Times where he discussed how the world has widely rejected surveillance and how both companies and consumers are starting to understand why privacy matters. People found it interesting that the only company he mentioned by name as trustable was Apple and a lot of folks are wondering how on earth he could trust a company that produces products you can't see exactly what they're doing in your computer or device. Wouldn't it be better to use something like Linux?

I think I understand why he trusts Apple and why they might be as trustable as your friendly Linux distro maker. It comes down to money and reputation.

Unlike companies like Google, Apple's primary goal is to sell you devices and software. They don't care about your data because they aren't really set up in a way that would allow them to monetize it effectively. Everything they do is an effort to increase marketshare and drive more people to use their products. Make no mistake: Apple doesn't particularly care about privacy, not in any meaningful way. But they care about money and selling privacy as a feature, being the only platform that focuses on privacy, it's an awful good way to make more money. People want it and people are willing to pay for it.

Looking at it that way, Apple would be suicidal to push privacy as a feature and still sell us out secretly. The moment that behavior would become public knowledge, there would be absolute hell to pay. Any new customers they get from their huge privacy push would be lost in a few days. More than that, nobody would ever trust them again after such a betrayal.

Overall, I'm starting to trust Apple to get privacy right. They're smart marketers and smart engineers. They are in this fight to win and winning is defined by money and customers. I see no reason not to trust that they will do whatever it takes to get more of both. Privacy is the new hotness.