October 30, 2005

The Week in Links

Filed under: Weekest Link — Cory @ 5:46 pm

I come across some interesting (and weird) stuff on the web over a weeks time, and occasionally I like to share what I find with others. Rather than posting about these every time I find something, I plan to post a collection once a week, maybe each Sunday. Welcome to the first edition of “The Week in Links.” :)

  • Apple iSmack Nano Addresses Concerns over iPod Mugging – “Our product literally beats the crap out of the competition,” says Jobs
  • For sale: Britain’s underground city – WELCOME to Cold War City (population: 4). It covers 240 acres and has 60 miles of roads and its own railway station. It even includes a pub called the Rose and Crown. …
  • A Humiliating Bathroom Experience – That’s not very nice
  • invisibleSHIELD for the Video iPod – my friend Brian has seen this in person and says it is incredible. The coating is the same material used to protect military helicopter blades. I plan to order one soon.
  • Most DNS servers ‘wide open’ to attack – Very scary.
  • Awful 70′s Music Video (Movie) – I have no idea who that is, but it extremely bad. You’ve been warned.
  • iTheater – “iTheater is a media center application for OSX 10.3 and 10.4. Its purpose is to be a frontend for applications such as iTunes, iPhoto and Dvd player so you can listen to your music, view photos and much more – all in one simple program. But thats not all! Using a networkable application called Encore, iTheater will be able to stream media through your home network.”
  • Lubbock Lights – West Texas music documentary, I really want to see this.
• • •

The Ubiquitous Blog Rant

Filed under: General — Cory @ 5:17 pm

This blog has thus far mostly been a way for me to highlight things that I find interesting. But, it is all fun and games until someone gets hurt. I feel it is time to comment on some of the absurdity around us.

Those Clever Oil Companies

Although it is not shocking news by any means, I was thrilled to learn that oil companies are reporting record profits. Some choice quotes from those articles:

  • Exxon Mobil, the world’s largest publicly traded oil company, reported on Thursday that profit rose 75 percent from a earlier, to $9.92 billion. Revenue rose 31.9 percent, to $100.7 billion.
  • “Exxon made more than any other company, as a matter of fact,” says Howard Silverblatt, a market equity analyst with Standard & Poor’s. “Their profits by themselves were more than 492 companies made for the entire year within the S&P 500.”
  • ExxonMobil, which stunned Americans on Thursday by reporting nearly $10 billion in profit for the third quarter, says it has no plans to invest any of those earnings in developing alternative or renewable energy — something other oil companies do. “We’re an oil and gas company. In times past, when we tried to get into other businesses, we didn’t do it well. We’d rather re-invest in what we know,” says Exxon spokesman Dave Gardner.
  • “Our earnings are a function of how well we manage our business,” says the American Petroleum Institute’s chief economist, John Felmy. “We’re also producing record amounts of product, we’re selling record amounts and we cut our cost dramatically. So that really affects the bottom line as much as anything else.”

Record amounts of product? What happened to the rising costs being attributed to refinery limitations and shortages caused by the damage from the hurricanes?

Don’t get me wrong, I am all for making money and the capitalist way, but these guys are in a unique position to screw just about everyone. Even Microsoft’s monopoly only extends to those who choose to use technology. A much larger percentage of the population is dependent upon their gas-powered automobiles to get to work, take the kids to soccer practice, and enjoy vacations. And considering the enormous backlog for alternative-energy powered vehicles in the U.S., most people do not have much of a choice.

Ugh.

Claritin D, Insurance Companies and the Government

I got a prescription for Claritin D back when it was first introduced several years ago. It’s been the only thing that even comes close to helping with my allergies. I paid the co-pay ($20) and had a months work of allergy relief. The problem was that the drug was so effective for so many people, that everyone wanted it. Well, the insurance industry decided that this was no good, since they were actually having to pay the rest of the bill. So, they lobbied and pretty soon the drug was available over-the-counter. This is great news, except that the price is $13 for 10 pills, or around $40 for a months supply. This doubled the cost of the prescription for me, but at least I could buy enough in bulk from Sam’s Club to avoid thinking about it for a couple months.

Well, a month or two ago I went to Sam’s to stock up and noticed that the drug was not available in the normal place. There was a card indicating that I needed to see a pharmacist in order to obtain any drug that contained pseudoephedrine. Huh? I thought over-the-counter meant it was available over the counter. As it turns out, Texas passed Senate Bill 107, House Bill 164 and Senate Bill 66 that place restrictions on the sale of products that contain pseudoephedrine (that second link has one of the best titles ever: “Don’t Meth With Texas”). Along with nearly 40 other states, Virginia recently also passed similar legislation.

While the intentions are noble, the effects are nothing more than annoying. I suspect people who produce (?) Methamphetamine are more clever than your average criminal, and I am pretty sure they will find a way to provide for their clients, since they have an addicted customer base, literally. I could be totally wrong here, as I have no insight into this market, but this situation reminds me of the NRA slogan “If guns are illegal, only criminals will have guns.” The point being that you can make something illegal, but that only affects those who care about the law in the first place.

So, I can no longer buy Claritin D when I am grocery shopping at 10pm on Sunday nights, because there is no pharmacist on duty. Also, I can no longer buy in bulk because the state law limits 2 packages per purchase. Why don’t we just make these drugs available only with a prescription? Oh, right, those pesky insurance companies. :)

• • •

October 28, 2005

Hello Nissan, Goodbye Ford, Hello iPod

Filed under: General,Technology — Cory @ 1:56 am

For the past 10 years I have only really owned and driven two vehicles: a 1988 white Nissan pickup truck, and a 1994 blue and white Ford F-150. Neither of these vehicles had working air conditioners, and both were used and/or wrecked before I got my hands on them. Not having air conditioning in a vehicle doesn’t mean much to people who live in yankee states, but having spent a year in New Orleans and two years in Texas, it was beginning to mean something to me. Still, it wasn’t the driving factor for my decision to finally give up the trusty Ford. Indeed, it was the ridiculously high price of gas that caused me to look elsewhere for truck-love. Spending $250/month on gas is just plain aggrevating. This will not stand, man!

[ Return of the Nissan ]

I wasn’t really looking for anything, but a few weeks ago a guy at work sent out a message to the staff email list advertising a 1996 white Nissan pickup for sale, and relatively cheap too. Having previously owned one of these little trucks, I know how good they are, so I quickly wrote him back and arranged to have a look at the truck. The truck was in great shape and the price was right so I once again became the owner of a white Nissan pickup. The best part? After 10 years of driving in the heat, I finally own a vehicle that has air conditioning. No more sweating on the way to concerts in Austin, no more fearing summer road trips, no more wishing I had A/C!

[ Trusty Old F-150 ]But along with all that frosty happiness comes a little sadness as well. It makes no sense to keep two trucks, so I had to sell my beloved F-150. Despite its cooling deficiency, I really loved this truck. My Dad came across it when I was in my senior year of college after I neglected to put oil in the previous little white Nissan for, oh, a year or something (that was a lesson learned the hard way, sheesh). The old Ford saw me graduate college, towed all my personal possessions to New Orleans and back, carried me through the snowy Virginia winters, and made a heroic effort to get everything out here to Texas in the dead of summer (without question, those were the hottest 4 days of my life). It has been an extremely good truck, and I can’t say enough good things about that model of the Ford F-150. But, I guess at some point everything must move on.

As part of an incentive to sell the Ford, I sent out a staff email and offered my iPod mini along with the truck if I had a buyer before the weekend. Apparently iPods can be used to sell anything, in case you were wondering. Within an hour I had several inquiries, and a little over 24 hours later the title had been signed over and I had cash in my hand. [ Son of iPod ] “Cash”, you say? Yes, and what does a person do when he no longer has an iPod, but has cash? He drives to the nearest Apple Store and buys a new one, of course.

This time I opted for the recently released Video iPod. I’ve had two iPod minis and they were great, but I bought them for the size, not the price. Previous iPod models were just too big, I wanted something I could fit in my pocket. When the new iPods came out I heard that the 30GB model was much smaller, and upon visiting an Apple Store I was excited to see that this was true. In fact, its even thinner than the mini was. So, with all the cool new features and smaller size, I opted for the traditional iPod instead of the much smaller iPod Nano.

I’ve only played around with it for a few minutes so far, but I am already impressed. The only issue I have encounted involves playing “muxed” mpeg files on the iPod. I was trying out Podner for converting movie files into iPod size videos, and I found a FAQ on their site regarding the muxing issue. This macworld thread also discusses how to convert it into a non-muxed video. I don’t know anything about audio or video formats, so this is all new to me.

Sleepy now, good night.

• • •

October 26, 2005

Vegas Comedy Festival

Filed under: General — Cory @ 12:47 am

I would love to be able to go to this.

Dave Chappelle, Jon Stewart, Lewis Black, Bill Maher, Dennis Miller, Larry David, Chris Rock, Garry Shandling, and Jerry Seinfeld will all be part of the star-studded inaugural edition of The Comedy Festival, set to take place Nov. 17-19 in Las Vegas.

I’ll be in Vegas two weeks beforehand, doh!

• • •

October 19, 2005

I’m Back, Sorta…

Filed under: General — Cory @ 11:47 pm

So it’s been a couple months since I last posted here regularly. That’s mainly because the last 8 weeks have been without a doubt the busiest of my life. Between the two trips to Vegas in August, the shelter mission during September, and trips to Richmond VA, Cambridge MA and Atlanta GA this month, well, I’m ready for a break.

It’s been way too long since I spent time with my friends, so I hope to catch up with everyone soon. Hopefully life will return to normal and the next few weeks will see more poker, cigars, guitars and dance halls (that sounds a little too close to a country song, but whatever). I’ve got one more trip to get out of the way in November, and then I am through until the winter holiday.

See everyone soon!

• • •

October 16, 2005

“Shelter Famous”, or, How To Build Disaster Relief Software (with Rails)

Filed under: Friends,General,Technology — Cory @ 8:59 pm

All I wanted was sleep.

It was Labor Day and I had been out late the night before playing “nickel and dime” poker with friends. I probably made it to bed around 4am, and the only thing I had planned for my day off was sleep, and maybe catching up on the book I was reading, The Tipping Point. But my slumber would come to an end around 10:30am, and it would be another 3 weeks before I finally would get a decent night’s sleep.

When my phone rang that morning I quickly awoke and jumped out of bed, as I always do. The caller ID on my phone said “Brett’s Cell,” so I figured he was calling to tell me about a cookout or pool party at The Big E Ranch for the holiday, after all, Brett is known for his parties.

I had only been awake for a matter of seconds so I can’t remember exactly what he said, but it was something like “I need a sysadmin, can you help me?” He proceeded to tell me about the Windsor Park Mall shelter that Rackspace had set up and how a better way to track people was desperately needed. “Sure, I’ll be right there.”

When I arrived at The Ranch Brett told me the rest of the story. I already knew that Rackspace CEO Graham Weston had offered up the old Montgomery Wards building at the Windsor Park Mall for use as an evacuee shelter for victims of hurricane Katrina, and that Racker’s had been working all weekend to get it in condition. Graham bought the building a few years earlier with plans that it would become the next Rackspace headquarters. For various reasons, we relocated elsewhere so by this time the Windsor building had been vacant for around 5 years. The real problem was that evacuees had already begun arriving at the shelter, but to everyone’s amazement, neither the Red Cross nor FEMA had any computerized system in place to record information about who was entering or leaving the shelter. I found this hard to understand, mostly because where I work everything is computerized and automated.

Brett told me that he and Dirk had started working on a web-based application to handle this problem and showed me what they had so far. There was a basic page for registering members of a family and checking them in, but not much more. Dirk was no longer working on the code, and Brett does very little programming, so there was a lot of work that needed to be done. To top it off, they had chosen to use the Ruby on Rails framework, with which I had no experience. I spent the rest of that day learning the language and framework, banging my head against the wall, and wondering how to do things in Ruby. With the growing list of tasks that were piling up, it became clear that we needed to recruit teammates. I paged Brandon and called Will, who were both busy for the holiday but would be available the next day. Brett called Lister, who was ready to help immediately. The team was growing and the deadline was shrinking; the race was on.

I left the Ranch around 1am that Monday night, and returned around 9am the next morning. Will came over to help that day, but had to leave around 6pm. Shortly thereafter Brandon arrived and began redesigning the heart of the application: the family page. We worked until around 2am and then headed home to crash for a few hours. The next morning we reconfigured our work area at the Ranch so that we were all sitting at a tall table, facing each other. This worked much better, and for the next week the Ranch was not only Brett’s home, but also all of ours. Wednesday we worked from 10am until 6:30am on Thursday, only breaking for a vendor sponsored sushi dinner and a midnight caffeine run to Starbucks at the Quarry. I had no idea what time it was until Brandon said, “Crap, now we are going to have to deal with morning traffic.” It finally hit me how much fun I was having: I had completely lost track of time, I was exhausted, I was hungry and most importantly, I did not want to stop. Do I really need to sleep? Sigh.

When you are having this much fun, time completely disappears. We each had special skills to contribute, and everyone’s abilities complemented the others. We were all doing what we do best and we were focused on a single, clear goal. In other words, although each of us was playing a different instrument, we were all in the same key, and the result was harmony. Our “Disaster Orchestra” roster:

  • Brett – our point man, interface designer, blogger and badgemaster. Unlike me, he does not need sleep.
  • Will – DBA extraordinaire, software master, reporting engine. He can ruin your life with a single database view, so don’t tempt him. (Also, he speaks in weird tongues over Google Talk)
  • Brandon – blazingly fast coder, ajax lover, image-rotater. Try finding a problem he can’t solve.
  • Lister – go-to man for anything and everything, wireless ninja, sushi-destroyer. This man is everywhere at the same time.
  • Cory – sysadmin, ruby-newbie turned rails lover, food services. Just don’t ask me to install RT ever again :)

The extended family included Sharon, Tom, Ed, Marcus, Edwin, Debra, Suzy and a cast of about 200 other Rackers.

Back to our story. It is now Thursday morning and we are ready to unleash our software to the shelters. To hold them over, another Racker had written a small CGI application in Perl with MySQL to capture some basic information on the evacuees who were checking into the shelter. We wanted to import this data, so I wrote a script that logged in to his server, dumped the data, imported it on my laptop, generated a Postgres SQL file, uploaded it to our server and imported it into the database, all in one quick run. Around 2pm on Thursday Sept 8, we ran the conversion scripts, enabled our software, shutdown the old CGI script, and starting teaching the volunteers how to use the new application. 1..2..3..deploy!

It had been a few days since the evacuees had begun arriving in San Antonio, and apparently we were not the only people who were developing software to help organize all the information. We had seen volunteers in the shelters using various other applications to search for missing persons, and other systems for tracking the evacuees at the shelters, but none seemed to be as simple to use as ours. This might not seem like a big deal, but when volunteers are coming and going every hour or so, it is imperative that they be able to sit down at a workstation and immediately begin working without waiting for training, or having to read documentation. Other systems we saw required specific operating systems and browsers (Windows/Internet Explorer/ActiveX), but apparently the people who designed them had no idea what type of machines would be available at these shelters. Most workstations were loaned to the shelters by local businesses or individuals, and we even had a few ancient Pentium 166 machines running Windows 95/98. By requiring the latest in Microsoft technology, these other applications were locking out many people who were using these systems. On the other hand, our system was built to work with any system capable of browsing the web.

We were also faster to respond to the users than anyone else. We often worked right from the shelter so when a volunteer suggested a feature or had a problem, we were immediately able to make the changes and update the application. Sometimes we would watch people using the application to see how we could improve the interface, or speed up repetitive processes. It was a hyper-agile development environment, which Rails made possible. The users knew whom to contact if they had a problem, and most of the time we were within 15 feet. Also, people associated the application with us personally, which was really cool because we were proud of our work, and our users were appreciative; how often does that actually happen? ;)

Over the next few days we made many changes and added more functionality to the application. Brandon and Will both had obligations during the first weekend that the app was live, so when they returned we were able to dive back into things and resume development. We began refactoring, cleaning up the code and performing general maintenance for the next few days, that is, until our next assignment knocked on the door the following Thursday.

We were working from the Ranch when Sharon called to tell us that she had promised that we would have an ID badge system in place by Monday morning. Badges? None of us had any idea what was involved in printing ID badge cards, but then again, just a few days earlier none of us knew how to build software to manage shelters filled with evacuees from a natural disaster. Apparently she had been given 10 minutes to decide if we could do it or not, and after seeing what we had done the previous week, she had no reason to believe we couldn’t do this either. Only this time we were quite out of our element, that element being software. So, first things first, a full featured (not-so-cheap) ID card printer was ordered and shipped via next-day air. Then we started trying to figure out how we were going to actually capture pictures of everyone. Our first idea was to use a webcam and have each person step in front of it just long enough to take a picture and then move on. So, we hooked a webcam up to a linux machine and Brandon put together a system to snap pictures and upload them to our webservers. This looked like it was going to work until we realized that the image quality was pretty bad. After much deliberation we decided to look for another solution. Considering that we were running short on time, our only option appeared to be digital cameras. We hopped in Sharon’s truck and drove to CompUSA to buy a couple digital cameras and SD cards (I don’t think any of us will ever forget that painful trip).

We came up with a system where two people would work the cameras and pass off the SD cards to people sitting in front of the application. In addition, we would be able to verify information about the evacuees in the system as the pictures were uploaded. This helped greatly in cleaning up the data, as our initial import required default values for fields that were not being collected with the previous script.

As the volunteers were working their way through everyone in the shelter, we were trying to figure out how to get the necessary information from our system into the AlphaCard software that came with the printer. Because we were using load balanced web servers, we needed to store the image data in the database so that it would be accessible instantly on both web servers (no rsyncing, etc). As an image was uploaded we rotated it, resized it, and base64 encoded it to avoid storing blobs in the database. As it turns out, this worked perfectly for sending the data to AlphaCard. Our resident querymaster, Will, wrote a funky stored procedure (yay PL/PGSQL! not really), and threw together a PostgreSQL view so that we could access all the information about an evacuee in one straightforward query. Meanwhile, Brett had put together a mock-up template ID card with help from the Rackspace marketing department and connected the printer to a machine at shelter. We allowed access to the database from the shelter, pointed AlphaCard to the correct database view, and before you could say “Gimme Shelter” we were in the ID card printing business. Well, not really a business, but we were doing it, and by Tuesday evening we had around 800 ID cards printed. Top that, DMV.

Soon we were hearing stories about how the ID cards were providing the residents with a way to begin rebuilding their lives. Many people had literally lost everything in the flood, including drivers licenses and other important documents. With the ID cards that we provided, residents were able to open checking and savings accounts at banks. It did not take long for the other shelters in town to hear about what we had done. By this time Hurricane Rita was nearing landfall and evacuees had started arriving from the gulf coast. Most of the shelters still did not have net connectivity at this point, much less a usuable shelter management system with ID card printing capabilities. With an incoming rush of evacuees from the new hurricane, they wisely requested our help.

We were asked to deploy our software at the other shelters and begin preparing to print ID cards for around 2,600 evacuees. No problem! Your order will be ready in 6 days.

Previously, the ID cards were taking about 1 minute each to print (double sided, color). If we were able to print 1 card per minute non-stop (without changing ribbons, reloading cards, cleaning the printer, etc), it would take 43 hours to print all 2,600. This wouldn’t be a problem if the process could be automated to the point that a human was not required. Unfortunately, this was not possible. Each picture had to be adjusted and cropped, and the card loader on the printer could only hold 100 cards. Brett changed the printer configuration so that the reverse side of the ID card was black only, and this one small changed cut the print time from 1 minute down to around 35 seconds – almost half. Still, we spent several full days baby-sitting the printer.

After the last batch of cards was printed, things began to slow down for us as we entered maintenance mode. Occasionally we would receive a request for changes to the software, but for the most part the excitement was over.

The project turned out to be a lot of fun, mostly because it was an opportunity to work on an interesting and important problem, with smart, capable people, in an extremely fast-paced environment. I would work for Ramen and Mountain Dew to be able to do this every day.

A couple nice side effects were that we helped people who really needed help, and also that we learned a new development platform in the process (Rails).

Our efforts also received a little attention from the media. Brett usually posted any news stories on the San Antonio Safelist Blog, but the following articles specifically mention our software:

Not only did we have fun and accomplish something, but we also got a little recognition.

The Unifying Rails Dynamo

There have been many nice things said about Ruby on Rails, but there have also been a lot of nice things said about just about every other language and framework as well. It is often difficult to filter out what is actually great from what someone else just thinks is great, but in this case, it was hard to ignore what we were seeing happen right in front of us. In our situation each of the four main developers were previously using a different primary language:

  • Brett – PHP
  • Brandon – Perl
  • Will – Java
  • Cory – Python

Brett and Brandon each had some exposure to Rails, although they were both still new to it. Will and I had never coded in Ruby before, much less Rails. To be honest, the first couple days were frustrating, but I realized later that most of the tribulation came not from learning Ruby or Rails, but rather from unlearning what I already knew. Brett recorded his observations of this process on the San Antonio Safelist Blog, and it was picked up by the official Ruby on Rails Weblog. There were a few other critical tools that we built our software upon, and Brett also did a nice job of covering them on the blog.

Also of note, the Agile Web Programming with Rails book by Dave Thomas and David Heinemeier Hannson is exceptional. We had a couple copies and they went with us everywhere.

So, how do you get web developers using PHP, Perl, Java and Python to agree on a common development platform? Well, from our experience the answer appears to be “Ruby on Rails.”

• • •
Powered by: WordPress • Template by: Priss