Friday, October 11, 2013

My Wireless Sucks!

The WiFi at my house has been somewhat slow and unreliable lately, so I decided to look into it. I did a lot of experiments with Speakeasy's Speed Test. I also upgraded my wireless access point from a Linksys WRT54GL to a ASUS RT-AC56U, although that wasn't strictly necessary. I fixed it to the point where my DSL connection is once again my bottleneck. Here's what I learned.

First of all, the "wireless neighborhood" I live in is very different these days than when I first setup my wireless access point. When I first set it up, I only had 1-2 devices connected to it, and there were no other wireless access points in the neighborhood. These days, I have 3 wireless devices connected to my TV, 7 Nexus 7s, 2 laptops, 2 phones, and a Rasberry Pi all connected to the same access point. Furthermore, there are 5-7 wireless access points in my neighborhood (which is still low compared to some neighborhoods). Since wireless bandwidth is a shared resource, I'm sure there's quite a lot of contention these days.

Another thing I noticed is that a lot of the APs were using channel 6. Simply switching to channel 11 made my wireless stop sucking. My guess is that newer APs are better at picking the best channel than older APs are, but I don't know that for certain.

Furthermore, I suspect that my Linksys WRT54GL was dying. Since I have a 100 year old house, devices tend to die from time to time. Hence, I've had to buy a couple Linksys APs over the years. Sometimes doing a factory reset and then reconfiguring it is enough to fix the problem. However, this time, even though I could log into the device, when I tried to do a factory reset, it didn't work. I wonder if that could possibly do with old flash memory.

Here's another trick. My buddy at work, Chris Dudte, pointed out that almost everyone has 2.4Ghz devices and APs these days, whereas very few people use 5Ghz, even though the 802.11a standard has been around forever. If you're confused by the different frequencies and the different 802.11 wireless standards (as I was), check out this useful overview. I was able to setup a 5Ghz network for my wife and I (since we have laptops and phones that support 5Ghz), whereas the kids are on a 2.4Ghz network (since their Nexus 7s don't support 5Ghz).

As I mentioned, I upgraded my wireless access point and router from a Linksys WRT54GL to an ASUS RT-AC56U. The guy at work who's in charge of wireless gave me a thumbs up when I told him that, so I assume it was the right decision. Although I was able to fix my problems with the Linksys WRT54GL simply by changing channels, I'm excited about the ASUS RT-AC56U for a few reasons. My favorite feature is that I can use one device to run a 5Ghz protected network, a 2.4Ghz protected network, and a completely open, but segregated guest network. Previously, I was only using a 2.4Ghz completely open network (because I'm a fan of open networks). It's nice to be able to continue to provide an open network, while segregating and protecting the rest of my house. There are a ton of other features as well, such as the ability to plug in USB hard drives and USB printers, but I haven't tried any of those features yet. I'm also excited to try the new 802.11ac wireless standard that it supports, but I don't have any other devices that support it yet.

Since DSL is still the bottleneck, you might wonder why faster wireless speeds matter. When all of your devices only talk to the internet and rarely talk to each other, it probably doesn't matter. However, once in a while, I need to transfer things from one laptop to another. With the Linksys WRT54GL, transferring files between laptops over wireless was ridiculously slow. With the ASUS RT-AC56U, it's much better. Of course, I prefer to keep a cross-over cable handy when I move large amounts of data between laptops, but it's nice to have the wireless network if I only need to transfer a couple gigs.

Since I've mentioned DSL multiple times, you might wonder why I don't switch to cable. One reason is that I don't want to run cable to my house. I just spent a lot of money putting new siding on my house, and I don't want the cable guy to mess it up trying to punch a whole through it. However, the biggest reason I don't want to switch to cable is that Comcast cable is well known for being one of the most disliked companies out there. It routinely has the lowest customer satisfaction ratings. Hence, I stick with DIRECTV and AT&T DSL (which was originally SBC Yahoo DSL).

By the way, one thing that surprised me was that I can actually get faster download speeds over my T-Mobile phone (while on BART) than I can over DSL. However, the T-Mobile coverage at my house sucks, as does AT&T, Sprint, and Verizon.

If you're interested in the raw data for all of my tests, here it is:

Linksys WRT54GL (several years old):
  Download: 5.13Mbps
  Upload: 0.59Mbps
 Wireless (originally channel 6):
  Download: 1.33Mbps
  Upload: 0.43Mbps
 Wireless (changed to channel 11):
  Download: 5.13Mbps
  Upload: 0.60Mbps
 Downloading 1.1GB from one laptop to another over wireless: 15-20mins
ASUS RT-AC56U ($200, new at Frys):
 Wireless 5Ghz (with QoS enabled, on top of my microwave):
  Download: 5.19Mbps
  Upload: 0.58Mbps
 Same on 2.4Ghz.
 Downloading 1.1GB from one laptop to another over 5Ghz wireless: 2-3mins
Using my T-Mobile Android phone as a personal HotSpot (over 3G, I think):
 Download: 8.35Mbps
 Upload: 0.53Mbps

Thursday, October 10, 2013

Books: Programming Elixir

I started reading Programming Elixir by Dave Thomas, the same guy who wrote "Programming Ruby" and who co-authored "The Pragmatic Programmer". So far, I'm really enjoying it!

Here's a quote from p. 24 that I think is particularly compelling:

This is a book about thinking differently; about accepting that some of the things that folks say about programming may not be the full story.

  • Object-Orientation is not the only way to design code.
  • Functional programming need not be complex or mathematical.
  • The foundations of programming are not assignment, if statements, and loops.
  • Concurrency does not need locks, semaphores, monitors, and the like.
  • Processes are not necessarily expensive resources.
  • Metaprogramming is not just something tacked onto a language.
  • Even if it is work, programming should be fun.

Of course, I’m not saying that Elixir is a magic potion (well, technically it is, but you know what I mean). There isn’t the ONE TRUE WAY to write code. But Elixir is different enough from the mainstream that learning it will give you more perspective and it will open your mind to new ways of thinking about programming.

So let’s start.

And remember to make it fun.

Wednesday, October 09, 2013

Pimsleur Spanish Phases 1-3

I just finished Pimsleur Spanish phases 1-3 which I bought on In short, I thought they were fantastic!

Each phase consists of 30 units, each about 30 minutes long. Hence, I did 90 units altogether. That sounds like a lot, but I did almost all of them while driving to and from work when I worked in Mountain View. I streamed them from my phone through my stereo using bluetooth.

Before I started, I already had a decent grasp of Spanish. However, I started Pimsleur Spanish from scratch. I'm normally a very visual learner, and Spanish is a pretty easy language to learn visually since it's so phonetic. However, I needed something to do while driving upwards of three hours a day, and this fit the bill. I really like how conversational it is. It constantly pushes you to say new things in new situations using your existing knowledge of vocabulary and grammar.

I know that some people have said that they thought Pimsleur Spanish was a little boring compared to Rosetta Stone. However, Rosetta Stone requires you to be in front of a computer, and I needed something that I could do while driving. By the way, I recommend only attempting this on long, fairly boring freeway trips. It takes up a little too much mental bandwidth to attempt on city streets.

After studying Spanish for several months, I was able to give a technical talk in Spanish in Mexico City. Doing the talk live was terrifying, and I'll admit that my voice was shaking quite a bit. However, later I did a screencast of it, Esto es Dart. That went pretty well.

Updated: I had to disable comments because this blog post was getting too many spammy comments.