Update: This equipment worked less effectively than I had thought when I originally wrote this review. See this post for an update.

Update 2: Since some people don’t seem to be interested in clicking the above ‘update’ link, I’ll put some detail here. This hardware is crap, don’t buy it. Not only is it ridiculously slow, it drops connections all the time making your network useless for transferring large files (or streams). I unloaded the powerline gear and replaced it with Multimedia over Coax (MoCA) hardware, which allows you to use your Cable TV coax for networking (in addition to TV).


When we first moved into the new house, I initially set up a single WRT54G access point (running dd-wrt) in the office in the back of the house. I quickly learned, however, that this location didn’t provide much signal to the rooms in the front of the house, most notably, the living room. Fortunately, I had a second WRT54G lying around as well as a good place to hide it in the dining room, so I set up WDS and used it to extend the network to the front of the house. This has been our basic network configuration for almost two years now. The equipment in the front of the house which requires network, such as the Xbox 360 and the Tivo, all have wireless adapters which are served by this second access point.

This was mostly dandy for your everyday bullshit web browsing and checking email. But as I started to put more demand on the network by pulling HD content off the Tivo, renting HD movies on the 360, as well as things like Netflix streaming, it started to creak. Truth was that not only was the signal between the office and the dining room pretty lousy, but just using WDS halved the bandwidth available to wireless clients. It was time to find a better solution.

The obvious solution is to use wired ethernet to distribute the network around the house. Unfortunately, our condo is the middle floor of a 3 story house, which means no access directly below or above us to easily run Cat5. While it wouldn’t be impossible to get some Cat5 snaked through the walls into the basement, it wouldn’t be easy or fun. If I took on this project, it would turn into a complete mess. If we hired someone to do it it’d likely be prohibitively expensive. Neither Corinna nor myself are interested in running Cat5 visibly around the house, so that’s not an option either.

Unable to come up with a true solution to this problem, I shelved it, accepting the status quo. A few days ago it occurred to me that there had been some companies developing equipment to send data over the electrical wiring of a home. Reviews on this equipment seemed to be pretty mixed, though. Some people raved about how brain-dead simple it was and how well it worked. Others complained it didn’t work at all. After some hemming and hawing, I decided to just give it a shot and if the equipment sucked I could always just resell it. I ended up ordering the Netgear HDXB111 Powerline HD Plus kit. It advertised a top speed of 200Mbps, but of course, actual data rates may vary…

I received the equipment yesterday and spent part of the evening doing some basic testing. First off, the actual setup of this equipment is just as brain-dead as advertised. I plugged each of the units in on opposite sides of the house and within a few seconds had link. That was it, it just worked right out of the box, no configuration, software, or anything else required. There was one other optional, but important, step, which was to ‘randomize’ the encryption keys used by the device. Out of the box, the key is set to a default value, but there is a ‘pairing’ procedure which generates a ‘random’ key and distributes it among the devices. You hold the “Security” button on the first device, and it goes through some motions and decides it is the primary device and generates a key. Then you hold the button on that device again, a light starts blinking, and you have 30 seconds to hold the button on another device. This distributes the key to the second device and you are, in theory, more secure. It apparently uses 3DES, but that requires trusting Netgear, so as always, it’s in your best interests to never rely on it. There is also some Windows-only (ick) management software you can install if you wish to use your own keys. Either way, it’s a pretty simple procedure and when you are done, you have link.

Before I started testing the speed of this equipment, though, I figured it was wise to benchmark the existing setup. I created an empty 1GB file to use for testing. 1GB might seem excessive, but I wanted to make sure I had enough time to get past TCP’s slow start and get a good idea of the maximum speeds involved. So the first set of benchmark numbers are sending data from my MacBook Air in the Office connected via 802.11g to Corinna’s Powerbook G4 in the Living Room connected via 802.11g to the second AP:

milgrim\\$ time nc -v -v -n pbook 2222 < big-file.bin
Connection to pbook 2222 port [tcp/*] succeeded!
968.65 real 9.04 user 44.13 sys

(1,073,741,824 bytes) / (968.65 seconds) = 8.45713106 Mbps

So the performance of my existing setup using WDS was so much worse than I had imagined. I had never really bothered to test it before, and was truly surprised at how slow it was. Next up, I plugged in the first Powerline adapter in the office and patched it into the WRT54G’s switch. I set up the second Powerline adapter in the Living Room and connected the Powerbook directly to it:

milgrim\\$ time nc -v -v -n pbook 2222 < big-file.bin
Connection to pbook 2222 port [tcp/*] succeeded!
545.85 real 7.88 user 65.73 sys

(1,073,741,824 bytes) / (545.85 seconds) = 15.007786 Mbps

For those keeping score at home, 15Mbps is much slower than 200Mbps. Even though I had never expected to get anywhere close to the advertised bandwidth, I was pretty disappointed. While 15Mbps was almost twice as fast as my existing setup, it was still rather slow. I tried removing some equipment from the equation, connecting the MacBook Air directly to the office powerline adapter (so the two laptops were, in theory, “directly connected”), but I got very similar numbers. I then wired both laptops directly into the same 100Mbps switch and re-ran the test, and got around 60Mbps, so the laptops themselves were not the limiting factor. I also tried placing the two endpoints in the same room, using different power outlets on the same wall, and the speed went up a bit closer to 25Mbps, although I managed to lose the hard numbers.

So where do I stand on this technology? Disappointed, but likely sticking with it for the time being. Even though the throughput is MUCH lower than I had hoped, it is still better than what I had. And until I can figure out a way to get real Cat5 between the two rooms, I don’t really see any other solution on the horizon. I’m certain that the slow speed is due to some noise in my wiring, but being that the wiring is new within the past 5 years, I’m guessing it is some device creating the noise. I guess I could try to figure out what it is, but I probably won’t. I’ll likely keep dicking around with the devices to see if I can get them to run any faster, and until then I’ll take what I can get. Someday I’ll either get physical wire between the two rooms or find another solution, and then I’ll unload the equipment.. But until then I guess it will have to do.

My Schnozz

grahams - - 2 mins read

I’ve been having difficulty with my nose/sinuses for some time now, and it gets much worse in the dry winter months. So after some prodding from friends, i finally went this morning to consult with an Ear, Nose, and Throatdoctor.

He examined all of those areas with various implements, the craziest being an fiber optic camera he shoved up into my nostrils. He determined that my septum was slightly deviated, but did not require surgery. This slight deviation was responsible for the discomfort I was feeling though… Apparently, the deviation is causing turbulence in my nose (disrupting the laminar flow of air). In the dry months, this is causing my nose to dry out, and much like dry hands, the walls along my septum eventually crack and bleed. This causes scabs to form, mucus attaches to the scabs, and it starts a kind of feedback loop. Blow out the mucus, it takes some of the scabs with it, you bleed, rinse, repeat.

He said that I have nickel-to-quarter sized patches of dryness and scabs in each nostril along the septum. I had been using a Neti Pot to treat the dryness, and he said that provides immediate relief, but the water is absorbed and evaporates so quickly that after a few hours things are back to the same, never giving the damaged patches time to heal. So he told me to apply “gobs” of bacitracin each night before bed for a month. I should feel relief within 3-4 days, but I have to keep at it for a whole month so things heal properly. Then I will cut back to weekly or so maintenance, depending on the time of year and how dry it is. The whole thing sounds pretty gross, but much less so than surgery, so I guess I should be relieved.

I’m not huge fan of Jay Leno, but this is a great summary of some of the cool aspects of 3D scanning and 3D printers. He uses a scan/print setup to reproduce a part for an old steam car which hasn’t been made since 1910. But in my mind, he missed the most revolutionary aspect of this production system.

Sure, you can make a 3D model of a part you already possess, but that’s just an evolution of 2D scanning techniques. And 3D printers, with their ability to make these 3D models into physical, plastic objects, are simply amazing. But for the most part it is just an evolution of the same techniques used in plotters like the ones I used in drafting class in high school. Both of these technologies are amazing, and I’m not trying to downplay how cool it is to see a functional copy of a physical object made.. When this technology is truly affordable, I’m sure I’ll be tempted to dive in and screw around with it. But there is nothing particularly revolutionary about any of this.

In my mind, what is revolutionary is that after you take this physical, tangible, object and scan it into the machine, it becomes content. Content which can be shared just like movies, music, writings, ideas, and source code online. Sure, it’s cool as hell that Jay Leno can reproduce a broken steam valve a century after production was ceased and restore his car to working order. But what is even cooler is that once he is confident in his copy, he can share that 3D model online with anyone else interested in this part, who (with access to a CNC), can create their own replacement part.

Once the information is in the computer, it is just as malleable as other digital media. While it’s not as cool as the Linux Kernel or The Grey Album, one could envision a hacker in his garage taking that 3D model and trying to improve it. This hacker is able to use a common 3D modeling package to tweak the existing part, printing up their own plastic test piece to test it for fit, and taking it to a CNC to cut one out of metal to actually test it in operation. If it does happen to improve the part, they can then go ahead and share their changes with the world again. They could even take their improved model, 3D print it, then take a mold from it for mass-production, selling the parts to people without all this equipment.

Maybe this is just obvious to me and others with a particularly nerdy perspective.. I still find it amazing though how computers and networking are fundamentally changing the way with think of information. Hell, it’s fundamentally changing what we consider information. The 3D scanner takes something physical and turns it into information. And as we’ve seen time and time again, once something is information it will find a life online which no one had imagined.

If the nanotech vision of The Diamond Age ever comes to fruition, where even the idea of matter itself becomes information we can manipulate, things are going to get rather interesting.

2008 Films in Review

grahams - - 2 mins read

Another great year for film.. Trying to pick my favorites this year might have even been harder than in 2007.

To reinforce my tradition of not placing importance of one film over another in each category, I decided to alphabetize the lists this year.

Watertown Burger King BS

grahams - - 1 min read

Watertown Burger King BS Originally uploaded by seangraham

(Spotted at the Burger King at the Arsenal Mall food court)

So let me get this straight, Watertown Town Council President Clyde Younger:

It’s a SAFETY issue that you can’t offer cups of ice or water to customers, and has nothing to do with you trying to save a buck? Do you use some kind of magical, safe ice and water when I order a soft drink? Of course you don’t, you are just not interested in giving out free cups of water to your customers. If that’s your decision, fine, but don’t try and pass it off as some sort of bogus safety issue!

Bizarre Dream

grahams - - 2 mins read

Last night, I dreamed that I had lost/stolen my MacBook Air. In the dream (as in real life), I knew I had good backups, so I was less upset about the loss as I was about the cost of replacing it. Continuing this uniquely rational dream logic, I decided that I needed a larger salary to be able to afford to replace it. I instantly found myself in the lobby of my former employer, Goodrich Surveillance and Reconnaissance Systems. I told the guard in the SRS lobby that I was here to see my old boss, who wasn’t expecting me. I told the guard to tell Brian that I was looking for a job, so he’d obviously want to talk to me immediately.

At this point, Sue, who is in charge of HR at my current company, met me in the lobby; she was apparently working at SRS in this dream. She began to show me around the building, which was odd, because I had worked there for 2.5 years. Of course, the building looked completely different, and we came upon this large room with glass walls which looked more like one of the GCCIS labs at RIT. It was here where I ran into an old friend from High School, Doug Palermo. I haven’t seen Doug in ~14 years, and while I did buy his aforelinked book, I haven’t read it yet. In the dream, I asked Doug if he was working for SRS, and he replied no, he was just visiting.

Finally, I ran into an former coworker, Ed, who I chatted with for a few minutes before waking up. What amused me most about the dream was, once I first appeared in the SRS lobby, how strongly I rejected the notion of going back to work there. Before I had even talked to the guard I had decided there was no way I was going to come back and work there, but figured I’d play along so I could see some old friends. I wasn’t banking on seeing old friends from High School…

ljdump -> Wordpress conversion tool

grahams - - 3 mins read

I spent some time this weekend hacking together a python tool that will take an archive from ljdump and massage it into something the Wordpress LiveJournal importer can digest.

The WP importer seems to be expecting XML in the format used by ljArchive. ljdump also stores each entry in a separate file, and comments for each entry in another file still. The WP importer is a web form which allows you to submit an XML file, and doing this once for each entry would be excruciating. Furthermore, there are some differences in the structure of the XML used by ljArchive and ljdump, so some restructuring was necessary.

My script, ‘convertdump.py’ is still a little rough around the edges, but it seems to work (with some caveats listed below). I’m going to hold off on a ’less geeky’ release until I polish it up a bit, but for those of you who want to grab it now and start testing or playing with it, you can clone my repository here:

git://donkey.csh.rit.edu/ljdump.git

A few things to be aware of:

  • There are two arguments required on the command-line:
  1. username of the archive to process
  2. a number of entries to limit the resultant xml to. WP tends to time out on large files, so for people who can’t adjust their PHP timeouts and file upload size parameters, they can create several smaller archives as opposed to one large one
  • My script is currently messing up when processing the security information for posts. Therefore it will make public any private or friends only entries. I also think that even if I was processing this information correctly, the WP importer would ignore them anyway and still import them as public entries. I’m going to look further into this, but my plan in the short term is to add a command line argument which omits protected/private entries from the archive file.
  • WP doesn’t do any of the special LJ tags (such as <lj user=…>), so I think I’ll modify the script to convert some of these special tags into normal hrefs. I probably won’t try to do anything special with lj-cut, however, because that could turn into a can of worms.. :)

Anyway, if this is useful to you, and you aren’t afraid of hacked together, barely tested software, give it a swing. I’m happy to hear about bugs, feature requests, or accept patches. :)

Update:

A few other things to know:

  • I’m a git newbie, so I very well may have messed things up
  • I’m (mostly) a python newbie, so this might not be the most elegant/neat/efficient python code ever produced
  • I’m not planning on abandoning LJ any time soon, I’m just preparing a set of contingencies “just in case”. My plan is to be read to replace sean-graham.com with little effort and incident in the case of LJ’s early demise.