Wednesday, November 28, 2012

Evaluating CLEAR Wireless Internet

Here's my current situation: I have Cox High Speed Internet at home in Fairfax County, Virginia, and I have a Verizon Wireless smart phone with the HotSpot feature enabled. I've been intrigued by Clearwire for a while, and I'm always on the hunt for improving my Internet access at home and on the road. Though I've been fairly happy with HotSpot access through Verizon (though not so happy with my HTC Rezound, but that's a story for another time), Clear has a 15-day money back guarantee, and no contract, so it seemed like a no brainer to try them out. Also, I checked their coverage and I should get a good signal at my house.

I think in an ideal world I'd like to decouple my smart phone and my mobile Internet. I'd like to have a smart phone with minutes and texting, and connect it to the Internet (as well as other devices) through a mobile HotSpot, like Clear. However, it doesn't look like that plan is going to come to fruition any time soon. For one thing, Verizon won't allow me to have a smart phone on their network without some kind of data plan.

How does Clear stack up?

The experience signing up for and using Clear has been really great. (I'll let you know how it goes returning the device and getting my money back...but I'm getting ahead of myself.)

I signed up on their website, and received the device the next day. I plugged in the device and it connected to the 4G network. I was able to connect my computer to the HotSpot device without any problems at all.

I tested the "4G Internet Basic" plan which has an advertized speed of 1.5Mbps down and 500Kbps up for $34.99 per month. According to I was getting 1.92Mbps down and 460Kbps up with a ping of 72ms.

It looks like you get what you pay for, and the experience is very smooth, but for me the price/speed isn't as good as I can get elsewhere. The HotSpot on my smart phone gives me 9.93Mbps down and 3.21Mbps up with a ping of 58ms for $30 on top of my unlimited data plan. (I'm grandfathered in on the Verizon plan I'm on. I'm not sure what the numbers would look like if I were to sign up today.) And my Cox High Speed Internet gives me 39.48Mbps down and 12.33Mbps up with a ping of 18ms for $40 per month.

Clear has a "4G Internet Plan" which has an advertized speed of 6Mbps down and 1Mbps up for $49.99 per month, but that is getting on the steep side for me, and the analysis doesn't help Clear.

Comparing my options, $1 will purchase 1Mbps from Cox, 0.333Mbps from Verizon, 0.059Mbps from the 1.5Mbps Clear plan, and 0.122Mbps from the 6Mbps Clear plan.


I would really like to use a service like Clear, and I have no complaints about the Clear experience. However, it is not the best value for me. If Clear was charging $6 per month for their 6Mbps plan, I'd be all over it, maybe even if they charged $10 per month for their 6Mbps plan. However, as it is, I'm going to pass.

Friday, November 9, 2012

"Low Level" Programming

Given the type of work that many programmers do, it is hard to find value in studying such "low level" concepts as operating systems, garbage collection, digital signal processing, etc. These are solved problems. There are libraries for them, and they most certainly are not relevant to designing web applications.

This is like the age old "why do I have to study calculus since I'll never use it?" conundrum. I believe it just requires the right perspective to see the value in studying low level programming concepts.

Consider two problems. First, imagine you are working at an e-mail archiving company. Since many of your customers are businesses (not necessarily individuals), you are storing some e-mails that are sent from someone inside the business to others inside the business. In this case you decide to de-duplicate the e-mails in your archive, and only store a single copy of such e-mails.

However, you want to be able to delete the e-mail when all of the associated users have deleted it, so you need to keep track of which users are connected to each e-mail, and when they have cut their association with it.

Does this problem sound familiar? It should. It is very similar to automatic memory management. You have an object and many pointers to it, and you want to know when you can delete the object. Maybe automatic memory management doesn't match this problem at every point, but there is probably much to gain from studying garbage collection algorithms.

Now consider a second problem (and more tenuous connection :)). Imagine that at this e-mail archiving company you want to synchronize a directory tree (like an LDAP directory) of users and groups. You will take snapshots of a customer's directory and store them, and then, for purposes of searching, use the information to determine whether a user was part of a particular group at some point in time.

You could certainly find the snapshot closest to the time in question, and see whether the user was part of a particular group. This is one way of interpolating between data points. Perhaps this problem is similar to reconstructing an analog audio signal from digital samples, or regression analysis. I admit this connection is more tenuous, but it may be there are techniques to be gleaned from work in these other areas.

The algorithms and data structures that we create in Computer Science are abstract, and I think with the right perspective they can be applied in many different situations. The next time you are sorting a deck of playing cards, use quicksort!