Never do business with Long of Chattanooga

When I first bought my 2005 Volvo S40 T5 in December of 2004, everything was great. The dealership (then Prebul) was outstanding and bent over backwards to make sure we were happy with the car. Even at the 50,000-mile scheduled maintenance, they gave me a loaner car for 2 days at no charge (at least not a line item on the invoice!). They washed the car at every oil change. Service and support was top notch and probably couldn’t be beat, even by the BMW dealership.

And then the Prebul fraud scandal happened. All of the Prebul dealerships were shut down abruptly and sold off, one by one, to other local dealerships. I think Volvo was the last brand to be picked up, and it was picked up by Long of Chattanooga. At that point, I knew I wasn’t going to be dealing with Prebul-quality service that I was used to. I knew they bought it for pennies on the dollar, and since I didn’t buy directly from them, there was no sort of customer loyalty. That, I expected, but I also expected some modicum of professionalism and courtesy. I was wrong…

Since I had purchased everything for my car through the Prebul Volvo dealership, when my car needed new tires, I called the dealership. I called a week in advance and got a quote on tires. They said they would order them and the entire process would take, at most, 2 hours. When I arrived at the service department at 7:30 AM on the day of the appointment, they did not have the tires in stock. When they called their supplier in Chattanooga, they were also out of the tires. Instead of telling me to come back at another day, they let me sit and wait. They had all the wheels off the car and the car jacked up before they told me that there was a delay. The guy working on the car had taken his lunch break, and the tires were on their way from Atlanta. When the tires arrived, they said it would only take them an hour tops to get me ready to go. Well, they got busy and several customers came and went. The excuse was that they were busy and there was a delay. Too bad I made an appointment to show up at 7:30 AM, waited until well after lunch for the tires to arrive, and then get pushed to the back of the queue because some old man who didn’t make an appointment wanted an oil change. After all was said and done, my car was done and ready to drive off, shortly after 3:00 PM. I didn’t have cash to get a snack from the vending machine. Never received an offer on a ride, a cab, or a complimentary car. Nothing. Abso-freaking-lutely horrible. That was the first and last time that I would deal with them.

Then, some amount of time later, my dad had to take his 2004 Volvo S40 for some sort of problem. They had to order some special part to fix it. So, my dad had a rental car while he waited for 2 weeks. As it turns out, they had parked the car somewhere in the back with the windows down for 2 weeks. When he had come by at one point to check on it, he asked them to roll up the windows. They did not. So, the windows remained down while rain showers came and went. Needless to say, that was also my dad’s first and last time visiting Long of Chattanooga. He wound up buying a Subaru to replace his Volvo.

Fast-forward to November 1, 2011. My car started making horrible sounds on my commute to work. Grinding metal, sounds of something dragging, scraping, etc. I knew it was either my clutch or transmission or both. Since Tuesdays are meeting days at work, I didn’t have a choice but to go in. I left early that day to avoid rush hour traffic and basically hobbled my car home in 3rd and 4th gears for 99% of the commute. Wednesday morning, I tried taking my car to Firestone, but was informed they do not work on transmissions and that I would have to take it somewhere else. The next closest service center that I knew of was Long of Chattanooga. My car made it… but barely. I accidentally pulled in too soon and wound up in the Mercedes service center. As I was making the turn, the clutch and transmission gave out on me and the car locked up 20 feet from the service pull-through. I managed to slowly coax the car into the pull-through, but the woman behind the counter said that I could not park my car there. I asked if this was still Long of Chattanooga. She said yes, but that it was the Mercedes service center and I would have to find a way to get it to the Volvo service center. No offers of help. No ifs, ands, or buts. If you’re an elitist Mercedes owner, you’re in luck because that uncaring elitism extends all the way through to the service center. After that confrontation, I got back in my car and basically got it to roll in 1st gear on hopes and dreams the extra 100 feet to the Volvo service center. *whew* I dropped the keys off with a description of the problems with the guy at the Volvo service center desk. He took it in and was generally pleasant about it. I received a call from him later that day and said that the clutch was totally shot to the tune of roughly $1,900 for parts, labor, and taxes. He said that they would have to replace the clutch to test the transmission, so I gave him the go-ahead. The next morning, I received a call that they had simply drained the transmission fluid and metal chunks and shavings came out with it, and that the transmission would have to be replaced. This raised the total of the bill to $4,747.46 for everything. I told him not to do anything else until I had a chance to think about it and check what my options were. So, we wound up buying a new car on Saturday and leveraged an approximate value of the Volvo minus clutch and transmission as part of a trade deal. Ford just needed to go see the Volvo in person before everything was officially finalized. We called Long to tell them not to replace the transmission and put the car back together and to expect the guys from Ford to come pick up the Volvo. Initially, the bill was $100 plus tax for the diagnostics. A couple of hours later, we received another call and that they “forgot” to charge us $1,098 plus tax for the labor involved, and they had not replaced the clutch as they had said. The guy gave me a “deal” and cut the labor cost in half for $548.07. My take on this is that I paid for services NOT rendered. The fact that they “forgot” the charge is a bunch of bull. I paid the bill over the phone just to get it over with and say good riddance to any connections with any Long of Chattanooga dealerships. I haven’t dealt with anyone else but the service department, but all I can assume is that everyone else working in those dealerships are just as bad, if not works, than the crooks and shiesters that actually “work” on the cars brought in for service.

I’m now driving a 2012 Ford Focus and am not looking back. I loved that Volvo, but the honeymoon was over after dealing with the new Volvo dealership in town. The fact that the cost of repairs from 11/10 to 11/11 almost added up to $8,000 (the Kelley Blue Book estimated trade-in value of the car) didn’t help, either. I’ll miss the car and the joy it was to drive it, but I will not miss the cost of maintaining it. I was 10,300 miles short of getting into the 100,000-mile club, and every single mile of that was my driving. I literally peeled some of the delivery plastic off the hood of the car when I bought it. It’s a little depressing and frustrating, but I guess I’ll have to get used to driving another brand new car that had a whole 22 miles on it at the time of purchase. I think I can deal. ;-)

Posted in General | Leave a comment

GUI Programmer Compliment?

I thought this little exchange between a coworker and myself was funny:

Mike: i don’t know how you front end guys deal with all that stuff, it’s like you gotta be a coder and hand write .docx files at the same time
Mike: i guess that’s a compliment!
Garrett: For what it’s worth, it’s MUCH easier to write .DOCX files by hand instead of .DOC files.
Mike: hahahaha binary vs xml?
Garrett: .DOCX is a zip file filled with plain-text XML ;-)

Posted in Geek Stuff | Leave a comment

Easy Object->Array Conversion in PHP

Are you ever working in a “mixed environment” where some things (like the Simple XML Element) return objects and some things like to work with arrays? If so, there’s a really easy way to convert all those objects into arrays without having to build some sort of ridiculous recursive function. Assuming you are using PHP 5.3 or newer, you can use the json_encode() and json_decode() functions to do the conversion for you. Here’s the simple one-liner to make that happen:

$your_array = json_decode(json_encode($your_object), TRUE);
Posted in Geek Stuff | Leave a comment

New Parent Tip #1 – Visitation Hours

appointment We’ve been new parents for a whole 8 days, but the biggest tip we can share is to schedule “visitation hours” and stick to them. While everyone outside your household is used to a routine with work, sleep, eat, etc, it’s tough for new parents to establish the same sort of routine with a newborn who barely has any concept of night and day.

Everyone tells new moms to sleep when your baby sleeps, but it’s difficult to do when visitors want to come over all the time. It’s tough to schedule visitors on anybody else’s schedule but the newborn’s. Lola sleeps when she’s sleepy and eats when she’s hungry. That can be anywhere from every half hour or so during a cluster feeding, or up to 3 hours with a good nap. We still can’t schedule those things as they are always on-demand. The best we can seem to do is allot a block of time each day for visitors. That way, we can wake Lola beforehand and feed her so she’s not crying to be fed while people are over. Otherwise, Amy has to nurse with a bunch of people in the room. Amy is not particularly modest about it, but it is awkward for others.

Be sure to schedule visitors like appointments. You don’t want 10 people in your house and have to worry about cleaning up for people to move around or find places to sit. We try to keep our visitors from 2-4 people per day to maintain peace and order to an otherwise chaotic living space. Our living room has become our newborn nursery for the time being since it’s closer to the master bedroom, kitchen, and bathroom than the real nursery. We have a changing area on the dining table (don’t worry, it’s protected with all sorts of pads, towels, and burp cloths), an activity time blanket on the floor (for Lola to do her “exercises” such as stretching, tummy time, and “swimming”), a nursing station, a boppy lounger for sleeping on the couch, and all sorts of other stuff scattered throughout the room. We do have some order to the chaos and has worked out pretty well for us, but it’s not so inviting and convenient for guests. We do have to balance visitors so that one person or couple sees her every day and gives everyone equal opportunity to see her.

It’s also helpful for people to announce when they are ready to visit. This is particularly helpful for family and friends you don’t mind asking favors from. If someone is on their way over, you may see if they don’t mind picking up a prescription, bananas, or diapers. Grandmothers are particularly well suited to in-house babysitting to watch Lola and keep her busy while Amy and I try to do housework, eat, or shower. Our preferred method of communication is via text message. It may be inconvenient for some, but it keeps things a little quieter when anyone is trying to sleep or a response can be put off while changing a diaper or holding a fussy infant. It’s not always easy to talk on the phone when there is a crying baby in your arms!

With all that being said, our personal visitation hours are roughly between 5:00 PM and 7:00 PM every day. Of course, that is just a general guideline. It may float around a bit as we all know what Lola wants, Lola gets!

Posted in Lola | 1 Comment

Hello World

At 6:06 PM on April 15th, 2011, we welcomed our little Lola to the world outside her mommy. She weighed in at 7 pounds, 2 ounces and 20 inches. The birth and life since has been great.

Lola

Our perfect baby girl

This past Thursday, April 14, Amy was at 4 cm dilated and 90% effaced. Lola was at station -1. The joke over the past few weeks has been that the day following our weekly Thursday check-ups with our OB/GYN, Dr. Radpour, that Lola would poke and prod the same areas that he was checking. Little did we know . . .

Starting Friday morning, Amy was trying to open her usual protein shake when we heard a click that was not the cap opening. Instead, her water broke! Knowing that water breakage does not necessarily mean you are going into labor, we sat back down and enjoyed a little bit of the morning before getting ready for work. At some point, I made her laugh and a little more water trickled out. At that point, we called and e-mailed our employers to let them know that today might be a big day. Amy called her doula, Lori, and said that her water had broken. Lori said it may not mean much, but she would come over and check.

For the next couple of hours, we took it slow and easy. We had our new washer and dryer set delivered around 9:30 AM, and Lori drove up in the next hour or so. By 11:00 AM, Amy was experience some light contractions that were tight, but not painful. We started packing bags and getting things ready to go to the hospital. At about noon, Amy stopped packing and leaned over a chair at the dining table. Lori said she knew that at that point, things were about to get rolling. For the next 3 hours, the contractions came on stronger and more frequently. Amy mentioned that she was feeling nauseous and went to lay her head down on the toilet. She blamed the nausea on the yogurt Lori made her eat earlier. Instead, she was actually in “transition”, which basically meant her cervix was opening up. Each contraction brought on deeper breathing but nothing loud or really audible to anyone unless you were close by. At one point Lori asked Amy if she was still having contractions. Amy’s response was a slight whisper, “oh yeah”.

Around 3:00 PM, Amy said that she wanted to go to the hospital. If the contractions got any stronger, she was afraid she wouldn’t make it to the car. Lori checked Amy and she was already at 8 cm! I immediately started throwing things in the car and putting towels down. We were fortunate that the all-day rain on Friday had let up for just that little span of 10 minutes to get into the car and checked in at Erlanger Women’s East. I parked the car as Amy was checking in. After signing more paperwork (even after the pre-registration forms had already been completed), Amy had to sign more. We wheeled up to the 1st floor (the entry floor is considered ground level) and were taken into the tiny triage room as every other room was occupied. This triage room is incredibly tiny and even shares a bathroom with an adjacent room. It was nothing like any of the other rooms we had seen from prior friends’ births! I personally felt a bit miffed at that, but Amy didn’t care. She was having strong contractions and fluids were flowing.

The attending nurse, Libby, got us a little situated and left for about 10-15 minutes. When she came back, she asked if Amy had been checked. Lori informed her Libby that Amy was at approximately 8 cm when we left the house. Libby checked and Amy was roughly 9 cm! That really got the ball rolling. The fetal monitor was attached and vitals were taken. More forms were signed and initialed and it looked like we may have been stuck in the triage closet! Fortunately, a room cleared up within a couple of minutes and they wheeled Amy in that direction. Every time we rounded a corner and saw a nurse, they would mention that the floors were still wet. We didn’t care. We just wanted something more comfortable! Heck, the hallway was roomier than the triage closet!!

We got wheeled into the Holly Hock Suite (yeah, they have other names like Pansy Suite and whatnot) and the resident doctor, Dr. Mitchell, came in to take a look at everything and do his doctorly check. He confirmed Libby’s measurements and left for a little bit. After 15 minutes or so, he came back and Amy was feeling some slight urges to push. Amy continued her pushing and barely got above a whisper when saying “okay, okay” through each contraction. Dr. Mitchell would watch the monitor for the contractions, but the peaks barely made it to the halfway point on the graph. They came in somewhat slowly and tapered off gently. Every time Amy was about to push, I had to tell Dr. Mitchell as he was too busy trying to read the graphs. All the while, Libby was doing gentle massaging and saying “Puuuuushh push-push-push-push-push”. She seemed to be able to read how Amy was able to push and synchronized perfectly and helped sustain the pushing.

After almost an hour of pushing, a flood of nurses appeared poured through the doorway and the room suddenly transformed into a very efficient machine. The end of the bed disappeared as it was raised and stirrups came from nowhere. Seemingly innocent tiles in the ceiling turned into spotlights and an oxygen mask came out of the wall! Once things were situated with all the tools and dropcloths in place, the delivery doctor, Dr. Brown, came in and took charge of the room in the way a well-educated Southern Gentleman would. Dr. Radpour was unavailable at the time and Dr. Brown was on-call. Even though we had never met or heard of Dr. Brown before that moment, his charisma, confidence, and charge won us over.

Even though it seemed slow-going, Amy was making progress with each push. As 6:00 PM came closer and closer, we were starting to visibly see Lola making her way. Amy was relieved to know that after months and months of acid reflux, Lola had a very full head of hair! As Lola was about to crown, Dr. Brown made a small episiotomy cut. Very shortly after the cut, Lola slid right out!

All the while, I was right there in the front row watching her come out. One hand was holding Amy’s foot and the other, her leg. In a bit of comedic geekery, I had Amy’s FlipHD camera in my left hand (the foot hand) shooting video, and my iPhone in my right hand (the leg hand) taking still shots. We didn’t notice the signs in the hall stating no videography or cameras in the delivery rooms. Ooops!

When Lola came out, she was zombie gray, which put me into a slight panic. That was the only point where I almost lost it. As it turns out, the gray is a sheen of vernix covering and protecting the baby in the womb and on her way out. After a couple seconds of stimulation, you could see the pink quickly spread all over Lola and she had come to life! As requested, the doctors waited until the umbilical cord stopped pulsing before clamping it, and I was given the honor to cut the cord! Several people have asked what it’s like to cut the cord. With my one-shot experience, it was like cutting a little vinyl tubing soaked in vegetable oil. A little tough, but nothing a nice pair of surgical snips couldn’t handle!

The nurses took Lola to get cleaned off, measured, and scored. While they did that, the doctors worked on getting the placenta out. I’ve heard several times that it is the most disgusting part about birth. What I saw wasn’t all that disgusting, but fascinating. I really wanted to see the sack that was nurturing my baby girl for the past 39 weeks! When it came out, it looked like a liquid-filled eggplant wrapped in transparent cabbage. Yup. That’s right. A purple, eggplant-shaped balloon, in a transparent, veiny wrap.

Once the placenta was delivered, the episiotomy was stitched up (albeit slowly–Dr. Brown was giving Dr. Mitchell some pointers), and Lola was brought over to her mommy. Lola was wide-eyed and alert. She had barely cried during cleanup (and they tried as best as they could). When she was placed on Amy’s chest, she latched onto Amy’s breast perfectly and began her very first suckle. It was magical to say the very least. To this day (all of 5 days later) and after watching the video, I am still in absolute awe of what Amy accomplished. She delivered a vaginal, nearly 100% natural birth. The episiotomy was the only un-natural part, but she was going to tear anyways, so we consider it a negligent trade-off.

After everything was settled and the delivery roomed transformed back into a 5-star hotel suite, the doctors and nurses were commenting on and complimenting Amy on how amazingly she handled everything. Dr. Mitchell even commented that women on epidurals and at only 2 cm dilated would scream louder than Amy. The loudest Amy ever got were a few grunts at the very end, but they were hardly screams. Nobody could believe what she did and how she managed to stay so calm and collected through the entire experience.

Needless to say, it was an amazing birth that I never thought could have been so perfect and (relatively) easy. Sure, there was lots of pain and fluids all over the place, but it was nothing like what you see on TV or in the movies. It all went quite well with a slow, rainy Friday. When all was quiet, you could hear the rain pattering on the sunlight. And when I first held my daughter, my life flipped upside-down and head-over-heels.

There are lots of details that I missed in this whole post, but then we wouldn’t have any more excuses to share our birth stories with everyone. I’ll be posting several more updates about the first few nights with Lola and some new dad tips and experiences that I have had with my daughter.

Posted in Lola | Leave a comment

Quick Composting Primer

Since I’ve done a brain dump of my composting habits for a couple of friends, I figured I’d go ahead and post it out on the web in case anyone else is interested. It’s just some of the tools and resources that I have personally used over the last couple of years for my composting experiments. This is essentially copied and pasted from an e-mail, so pretend I sent it in an e-mail to you. ;-)

Here’s some linkage for all my composting stuff. The first are just a couple of pictures of my original compost barrel, which is a 55-gallon soap barrel from a car wash. It was pretty easy to do. Just drill 4 corners for an opening, use a jigsaw to cut out the square, then screw it all back together with a couple of hinges and a latch.

“Let It Rot” by Stu Campbell — A pretty quick read on composting. Nothing earth-shattering or any exact sciences, but mostly how compost works (at the micro level) and how the different materials and additives help with the whole process. The author tends to prefer a compost pile as opposed to tumblers, but I recommend tumblers. They’re pricey and don’t hold as much, but they keep everything contained, make it easier to turn, and keep the varmints out.

Stainless Steel Compost Keeper — A handle little pail to store your kitchen scraps in. The filter does a great job at suppressing the odors and still allows the stuff inside to “breath” and not liquify (too much) into a nasty soup. Plus, if a bag leaks, it’s easy to clean out. The inside is one solid piece, so there aren’t any gaps or cracks for it to leak out onto your countertop.

Compostable Bags — I’ve only tried these, but they seem to get the best reviews on Amazon. If things get too soupy, they can leak, but I think that’s to be expected if you want the bags to be compostable. They have to be able to break down relatively quickly in under a year instead of before 3010. Just be sure to get the 2.5 gallon bags instead of the 30 gallon bags!

Mini Compost Tumbler — This is the mini version of what I have. It’s easy to turn, and it collects the drippings from the compost in the bottom as “compost tea”, which is a sort of homemade fertilizer that is a byproduct of the composting. It’s really good to have handy if you want to keep things going in the winter, and plain tap water doesn’t help replace the nutrients in the soil. This one is 17 gallon (per what I can read on the packaging box on their site (http://www.envirocyclesystems.com/Med/English/picture_04.html).

Bigger Compost Tumbler — This is the one I have. I think it’s roughly 7 cubic feet, which equates to roughly 52 liquid gallons, so it’s close to my converted 55 gallon drum.

Both tumblers are pretty nice. You can really only use about 50-75% of the total capacity before it gets too full to actually tumble anything. Some people complain that the larger version is difficult to turn, but mine is already at 50% capacity, and I don’t have any problems. Well, it was tough at first until you learn the secret to the tumble! Basically, give it a good heave to start the rotation. When you get to the end of however much you can rotate it, just hold it for a few seconds and give things time to shift around. It makes it MUCH easier than trying to constantly rotate it in one go. I call it the “pull-and-hold” method.

I’d also recommend an aerator. Not the rolling kind with spikes or the ones you put on your faucets, but a tool that you stab at the soil (or compost) and turn to aerate. This helps rip open any compost bags and churn the stuff in the middle of the compost. Something similar to this compost aerator or this manual tiller.

To get things started in the compost, you really don’t have to do anything. You can bootstrap things a little by getting compost activator or be cheap and just dig up a shovel full of soil from your yard, and it should already have some of the microbes to get you started. If you build it, they will come. A good rule of thumb with adding stuff to the pile is that greens provide nitrogen and browns provide carbon. There are other things you can add like fire ashes (not charcoal) that will provide potassium. To keep things in balance, it seems that everyone recommends more carbon than nitrogen in the mix, but I just kinda eyeball things and toss in some random dead leaves or plants from the yard to keep things in check. It also helps to aerate and “fluff” the compost as a lot of the kitchen scraps and greens have a lot of moisture and can make things soupy.

I’m no expert at all of this, and I don’t think it’s an exact science. I can tell you that my plants sure do seem to appreciate it, though. A couple of trials that I ran with identical plants in identical pots did have the plant planted in the soil amended with compost grow at 25-30% the rate of the other one. Once they got well established, they both slowed down to about the same place. I guess it helps speed up the first growth and establishment process a little faster. I’ll try to keep up with it and add some of the tea to one plant and give plain water to the other to see how they do this spring and summer.

Posted in Gardening | Tagged | 2 Comments

Definition of Football


(Click image for source)

Posted in Hockey | Leave a comment

Hard Drive Benchmarking

I’ve been playing a lot of Minecraft lately. I host my server out of my closet at home on a little 1.66 GHz Intel Atom CPU with 2 GB of DDR2. Whenever the hard drive starts getting hammered, you can hear it grinding in the closet, which actually amplifies the sound and makes it sound like fireworks way off in the distant. I’ve noticed that when 2 or more people are playing on the server in different chunks at the same time and/or are traveling via mine cart, the hard drive really gets a good lashing and things can slow down or get jerky for the players. Since receiving an SSD drive from my wife for Christmas, I suddenly want ALL my hard drives to be super-fast SSD or better. After one particularly annoying grind-a-thon last night, I decided to benchmark my various hard drives and options. I even went so far as to test out a RAM drive created using software. The results are below. Or you can view them outside of the iframe here.

I don’t have the exact specs for the RAM used in each computer, and I don’t care to take apart either one to check. Just assume it’s moderately cheap RAM that meets the minimum requirements for each motherboard chipset.

A little note about the SSD: It’s a little slower than the top drives on the market. However, it is 240GB at an affordable price ($420 at the time of purchase). Either way, it’s a HUGE improvement over a little 2.5″ SATA drive.

Posted in Geek Stuff | Leave a comment

Directory junctions, Symlinking, and DropBox

Sometimes applications will not let you choose where to put their stored files and settings (for game saves, profiles, etc). But, sometimes you’d like to synchronize those directories outside of DropBox without changing the “root” of your DropBox folder. In that case, you can use symlinking in *nix or Mac OS X, or you could use directory junctions in Windows (at least Vista and 7). Here’s how:

On *nix, Mac OS X:
ln -s /path/to/source /path/to/dropbox/destination

On Windows Vista/7:
mklink /j C:\path\to\source C:\path\to\dropbox\destination

In my case, I’ve been playing Minecraft, and, as far as I know, I can’t change the directory used for saved games. Since it’s a cross-platform game, I’d like to be able to keep my saved games syncronized across all of my computers. By setting up a Minecraft saved games folder in my Dropbox directory, I was able to symlink on my MacBook Pro and a directory junction on my Windows 7 PCs.

Windows 7 (my DropBox being my user profile directory and not “My Documents”):
C:\>mklink /j "%appdata%\.minecraft\saves" "%user_profile%\my dropbox\minecraft\saves"

Mac OS X (DropBox being in my ~ directory):
ln -s ~/Library/Application\ Support/minecraft/saves ~/Dropbox/Minecraft/saves

Now my DropBox saved are synchronized across all my computers! Now, back to the blocks…

Posted in Geek Stuff | 3 Comments

Virtual Graph Paper

I’m a geek. I know this. And it is because of this that I want things like “virtual” graph paper. And I want it online. And in a browser. So, after impatiently shrugging off the first page of Google search, I decided to try my hand at making one of my own using nothing but the fancy new HTML5 canvas and some JavaScript. It’s nothing over-the-top, and I’m sure there are bugs, but I think it’s pretty cool and has great potential for future expansion (saving, shapes, fills, labels, etc). I’ve testing in Chrome and Firefox on my Mac. Safari will presumably work as well. Internet Explorer will not work at all. I’ll probably hack on it more in the future, but for now, here it is: Virtual Graph Paper.

PS – It’s totally “open source”. Just view source to get the code.

Posted in Geek Stuff | Tagged , , , , , | 60 Comments