Archive

Archive for the ‘Technology’ Category

Buying Dell servers? Consider the hidden costs.

September 25th, 2009

The time is currently 5:30am.  Normally, this would be the sort of time that I would enjoy sleeping.  However, I have instead spent this evening, or morning, or whatever-you- call-it, working with our hosting team to fix a server that refused to start after installing a replacement part given to us by Dell.  We finally got the server running again about an hour ago, and I’m now waiting for our slave database (corrupted during the crash) to re-sync.  If I’m lucky I’ll hit the sack before sunrise.

While it’s always difficult to conclusively assign blame with a hardware problem, I think it is pretty safe to blame this predicament on a replacement Dell part we installed about two days ago.  Prior to installing the replacement, this server would crash every 2-4 weeks, stating that its disks had become detached.  We had an identical server, with identical software, that has yet to crash since we purchased it, so a hardware failure was the most reasonable explanation.  Google search results on our error corroborated this.  So, hesitantly, I picked up the phone and dialed Dell support.

The worst-case scenario would be that they spend hours arguing with me and making me go through rote debugging tasks despite the numerous facts I’d accumulated that all pointed squarely at RAID controller.  The best-case scenario was that they looked at my purchasing history of almost $20k in hardware over the last year, noted that this is the first time I have ever asked for a replacement part, and give me the benefit of the doubt just this once.

Dial Dell.  Quick arrival at support guy.  Explain situation to support guy.  Support guy starts reading debugging script.  D’oh!  Worst-case scenario begun.

As any business owner/IT manager can tell you, there is a very tangible time/cost equation that can be applied to any hardware debugging scenario.  The question that one has to ask oneself, when entering into a support debugging script they know is unnecessary, is whether the 2-3 hours it will take to complete the tasks, multiplied by the uncertainty that the support person will agree a replacement is necessary, is less than the cost of just re-buying the part.  When my hard drive failed on my Dell desktop, the answer quickly became “no” after I spent an hour on the phone with the tech over a hard drive that was probably worth $100 (I ordered the part off Amazon and my computer has worked fine since).  It was my cautious hope that my buying history might earn me a more dignified treatment this time around.  But after an hour on the phone with the tech, it quickly became clear that I was yet again headed down a multiple-hours debugging path for a part that would cost only $200-$300.

Then, a break of light.  I learned of the Dell FastTrack program, which, after a test “certifies” that a person isn’t a dunce, allows them to order their own parts without the support script.  A great solution to a hard problem.  I quickly signed up for the program.  Though it took me probably about 5 hours to complete it, I justified the time expense as a pre-payment on a lifetime of savings in support scripts.

Shortly thereafter, I became certified, ordered my replacement part, and it arrived only two days later. Great turnaround!

Then, today happened.  Here is my rough table of the different paths I could have taken to get our server problem fixed:

Option Initial Cost Future cost Total cost
Buy a new RAID card. $250 None. Because new parts work. $250
Persuade Dell support person that you deserve a replacement part 2-3 hours of time 5-10 hours of IT debugging time * $100-$200 (after refurbished part fails) 2-3 hours of life + $500-$2000
Get Dell certified, order replacement part 5 hours of time 5-10 hours IT debugging time * $100-$200 hour (after the refurbished part fails) 5 hours of life + $500-$2000

The most maddening part of this story? That it makes perfect economic sense for Dell. Other than customer fury (which generally has no tangible cost), what does it matter to them if the replacement part doesn’t work?  Why not just ship every returned part out to another customer, just to be sure that it is “really” defective?  They kill two birds with one stone:  they don’t have to spend money on a new replacement part, or in the worst-case scenario, they get a free test of their hardware from the unwitting consumer.  Heck, maybe they send the replacement part, which fails, and the consumer gets so frustrated they start buying new parts instead of bothering their support team.  They save time and make money.

Unfortunately, today I was the unwitting consumer.  Rather than spending the $250 to buy a new part, I believed that Dell would send me a replacement that worked.  Instead, it failed catastrophically two days after we installed it, and I was out 5 hours of certification time, plus $500-$2000 in IT time for fighting the problem.  Not to even factor in the costs of site downtime, 10 hours of stress, and all the energy put into fixing the stuff that broke when the site crashed.

If the best part of the Internet is that justice can be served, I would like nothing more than to see Dell be served justice by consumers that are tired of refurbished parts, support personnel bent on denying necessary parts, and a general lack of benefit of doubt to the customer.  5:30am is not a time where I belong.

Bill Technology

Bonanzle: “The Best eBay Alternative They’ve Seen”

July 31st, 2008

An incredible accolade for a site that’s still technically in beta, Ecommerce Guide just named Bonanzle “The Best eBay Alternative They’ve Seen” in four years of reviewing eBay alternatives.  Pessimistic side of me says that an article this effusive is an open invitation for every Tom, Dick and Harry to quibble and point out the faults of Bonanzle (of which there are admittedly still several… we’re haven’t even officially launched yet, people), or question how Bonanzle can be called an “eBay alternative” when it doesn’t even do auctions.

That said, it’s hard to imagine this project going much better than it has so far.  While I’m fully aware that the hundreds of PHP eBay lookalikes are going to slowly start nibbling at what are now Bonanzle-only features, it’s comforting to know that they’re going to have to program those features in PHP (or maybe Java).

If you haven’t already, pay a visit to Bonanzle and cast your vote that Rails is an unfair advantage.

Bill Progress, Technology

Craigslist Buyer and Seller Paradise

May 21st, 2008

Bonanzle is aiming to be the Seattle Craigslist seller paradise by offering two sweet new features:

  1. Item importing. Items can be imported directly from Seattle Craigslist (or any other Craigslist, for that matter) by following the link to our Seattle Craigslist offer.
  2. 0 red tape account setup. You can test drive what it’s like to sell on Bonanzle without even setting up an account. I don’t think it could get much more simple if we tried.

Visit the link to see what Bonanzle is all about. The more people on the site, the more fun and addictive it shall become.

What is Bonanzle?

Bonanzle is an online marketplace for buying and selling goods faster while having more fun. We also aim to create the marketplace that is the most simple, yet powerful choice around.

Is Bonanzle a real word?

It is now. And it’s a verb. Bonanzle combines the wealth and excitement inherent in Bonanza (a large pocket of valuable mineral, or a source of prosperity), and the action implicit in -le (as in babble, burble, bustle). To Bonanzle is to spend quality time at an online space buying and selling goods, and meeting people.

What’s the launch plan?

In the month of May, we get as many items as possible on the site. Hopefully more than a thousand, hopefully from eBay and Craigslist refugees that are sick of complexity/fees, and who want a more immersive experience, respectively. On June 14th, the site opens to buyers. On June 21st, the great Bonanzle Bonanza happens (where as many booths as possible have a Bonanza on the same day). Sometime thereafter, we officially launch, depending on when the site achieves consistent stability and zippiness.

I care about the environment.  Does Bonanzle? 

Well that’s a loaded question if ever I heard one!  We run a carbon-offset surplus. At Bonanzle, our goal is to offset twice the carbon we create, so that we will actively reduce CO2 levels. And when you consider that environmental watchdog ClimateCounts.org gave both eBay and Amazon.com its lowest score for online businesses, it is pretty important that we go beyond offsetting just our own use. We know of no other online marketplace committed to offsetting double the carbon it uses. We believe this makes us the environmental leader amongst online sellers. And we feel pretty good about that.   But not so good that we’re going to relegate ourselves to advertising as a foofy environmental site.

Bill Progress, Technology , , , ,

Rails Internet Explorer Integration Guide

April 21st, 2008

After about nine months of blissful Firefox-only development, Bonanzle finally started down the long road to Internet Explorer-compatibility a couple months ago. Though I’ve met few web developers who like the process of supporting IE, browser statistics show that fully 50% of users are still on some version of it (IE 6 has about 30%, IE 7 around 25%), so it’s something we have to deal with. Having just about wrapped up our backporting, I thought I’d share a few observations and tips on the process.

First of all, for background, I had never really touched web development of any sort until about 9 months ago. At the beginning of the backport, we had nary opened IE to see how our site would fare in it. As you might guess, the answer was “not well.” Because Bonanzle is rife with rich Javascript, and we use CSS-based layouts, few of our 30-ish pages were IE-compatible at the start of our backport. Many of our most substantial pages could not even render in IE without spewing 10+ JS errors.

But with a couple tools and rules, the process of moving toward IE compatibility ended up becoming relatively straightforward, and even our most complex and nuanced functionality has now been coerced into IE compliance.

The most important lesson I would impart to aspiring web applications: use a Javascript library. Like all young Rails sites, we started with Prototype. Once we were ready to take the training wheels off, we started using jQuery. Our backport revealed that only about half of our handwritten JS code worked in IE without modification. Some but not all of our Prototype worked. And almost all the jQuery did.

There are plenty of pages already out on the web dedicated to the comparison of jQuery to Prototype, but suffice to say for our purposes, my relationship with Javascript was an antagonistic one until I met jQuery. Now, I almost look forward to writing JS. Being able to batch select elements using pure CSS selectors, not needing to check for nulls when accessing selectors, and being able to concisely make complex behaviors happen with concatenated method calls are all big reasons. The rich plugin architecture is an even bigger reason. There seemed to be no task too large or small for a cross-browser jQuery plugin. Some of our heavily utilized plugins included the drag and drop ui-*.js, the jqModal plugin, and the jquery delegate plugin. We also worked with a contractor who custom-wrote some jQuery plugins for us that, like all jQuery I’ve encountered, “just worked” in IE (well, after they worked in Firefox, but that’s easy to make happen with Firebug).

If you do choose to go the jQuery route in writing your site, do yourself a favor and look into the JS QueueSpring plugin — it’s discussed in the previous blog, and is ideal for binding jQuery behaviors with your DOM elements in a clean and fast-loading way.
As far as CSS goes, there is no easy way to sum up means by which to write CSS that is IE6/7 compatible. I think that for all but the most experienced web developers, it is an iterative process. What I can recommend are some tools to speed up your iterations. First of all, if you’re on Windows, you’ll need to be able to install the version of IE you don’t have (6 or 7). This is most easily done by downloading the IE virtual machines Microsoft provides on their site. These provide an out-of-the-box solution for running IE6 and IE7 side-by-side on your machine (not otherwise possible). They also come bundled with some of the best tools available for figuring out what you’re looking at in IE: the Web Developer toolbar and the Script debugger. The former is basically a wussy version of Firebug that allows you to mouse over elements and see their properties, but not modify those properties dynamically, the way Firebug allows. The latter is a fairly lame way to see what’s going on in your JS when IE encounters errors. For both IE6 and IE7, you’ll need to ensure that you allow Script Debugging, which is under Tools -> Internet Options -> Advanced.

If you’ve got a big project on your hands, you’ll probably find the Script Debugger to be too barren… from what I’ve seen, it doesn’t allow you to set breakpoints in an arbitrary file, it has no watch window, and you can’t edit code from within it. A better choice is to install Visual Studio and use that as your JS debugger. If you don’t have it, you can download a free, “text only” version of Visual Studio with Ruby in Steel. You can then uninstall the RiS if it’s not your cup of tea (though it should be), leaving Visual Studio installed.

That’s the basic framework of what we’ve used to get our site from IE crashfest to lovable huggable puppy dog. Hopefully this may start off you other intrepid cross-browser souls on your journey as well. May you be strong, and repeat after me… “only 12-20 months until IE6 is obsolete.”

Bill Progress, Rails, Technology

Delete DOS Directories Recursively

January 23rd, 2008

Windows XP doesn’t include my old standby “deltree,” and there is no combination of options that “del” can take to delete hidden directories recursively (yeah, I’m talkin bout you, .svn directories!)

After some rooting around the web and two tablespoons of experimentation, I’ve finally come up with the following Windows Powershell command that can recurisvely delete hidden directories and their contents:

get-childitem . -include .svn -force -recurse | foreach ($_) {remove-item -force $_.fullname}

The first “.” after the get-childitem is the base directory you want to start in. The parameter after “-include” is the pattern you want to operate on. In my case, the wretched Subversion directories (.svn)

Unfortunately, this script still prompts me for each directory I want to delete, but that’s only a tweak or two away from perfection.

Bill Technology

Inflection Point

August 30th, 2007

2-3 weeks.  That is apparently about how long it takes to reach the productivity inflection point with AJAX/Ruby on Rails/Javascript.  After spending many a day stumped on various problems that seemed like they ought to be “minor,” I found myself today refactoring our most complex controller from top to bottom, fixing a couple bugs, and having the damn thing improbably work.  Cool.  Maybe there’s something to this language.

In seriousness, most all of this week’s interviewees have expressed considerable curiosity in how RoR differs from the other scripting languages, and why we chose it.  I don’t know that I’m entirely qualified to compare it to “other languages” since my experience in both ASP and PHP has been purely C-like procedural goop written before I had OOP experience.  Though that does hint at the first difference I can confidently draw between the three languages:  whereas other languages tempt you at every turn to write ugly code, RoR takes MVC architecture and unit testing into its own hands to minimize the initial time penalty for writing clean code.

The database model conventions and migrations took some getting used to, but I am growing to appreciate them more as well.  There is sense and utility in having a memory version of your class that mirrors the database version of the class.  And it’s convenient to be able to quickly and easily commit a class instance in memory into its database counterpart.  I have never even attempted to do that in another language, but I know that last time I used ASP it wouldn’t have been easy, and I imagine that is probably still the case with them.

I’m also very fond of the gem packaging system that is used to add plugins to RoR.  Even with lowly DOS, installing a new plugin for one’s site is often as easy as “gem install pluginname.”

These are amongst the more superficial differences between the languages, but some of the easier ones to describe.  It feels a little bit jurassic to be debugging with a console again after having used Visual Studio debugging, but it works and you get used to it.   An applicant who I asked about PHP debugging wasn’t even sure if/what PHP debuggers existed, so I can’t imagine that the situation is radically better for PHP.  Though I doubt it’s worse.

So, on balance, I’m giving a thumbs up to the advantages of RoR over the other languages we could have chosen.  And this is after using it but a couple weeks.  I’m very much looking forward to seeing what I can get done with it once I truly learn to start think like a Ruby programmer.

Bill Progress, Technology

Books for a Better World, Pt. 1

July 23rd, 2007

There are a couple books (literally, two) that I find myself quoting from on a very regular basis. Today, I come to speak of the book that takes about an hour to read and years to fully assimilate.

But before I reveal the identity of this book, a question: when was the last time you started using a new application (for the sake of this blog, “applications” includes web sites) and felt like the architect of said application truly cared about your experience?

Speaking from personal experience, it never occurred to me why certain applications felt “better” and “worse” to use. Nor did I ask myself why frustrating applications had ended up being designed as they were. Now I reflect on both regularly, and the reason is Don’t Make Me Think by Steve Krug.

Before I go any further, I should probably throw in fair warning: after reading this book, my reaction to using poorly designed software has changed from a mix of frustration and confusion to simple anger. If I waste more than five minutes finding a basic piece of functionality in an application, this now generally leads to severe annoyance. There is a fair chance that you, too, will revile the authors of your poorly designed software after reading this book. Therefore, if you are a person of action with a strong sense of justice, think twice before reading a text this potent.
dontmakemethink.jpg
But if you think you can deal with the truth, here’s what you’ll learn:

The premise of the book centers around the fact that users are very busy people who have neither the time nor the will to give an application as much attention as designers think they will. Krug asserts that when encountering a new application, the human impulse is to scan a page in about 1-3 seconds, make a best guess what will get them where they want to go (in Krug’s words, “satisfice”), and muddle along from there. He points out that designers should take care not to waste users’ milliseconds through making unclear links or leave them stranded in an application without a clear sense of where they are. He goes on to do some exercises where the reader sees examples of well-organized sites (i.e., Amazon) and poorly organized sites (buy the book and see them).

What’s more, the book is chock full of pictures and great examples. As I’ve come to know other Internet entrepreneurs within the community, I have found myself repeatedly citing examples in this book, as it seems to take most applications at least an iteration or two before they can get enough user feedback to create a UI layout that makes sense. Without this book and a strong sense of responsibility to your user, an application can quite easily never get things right.

With this book explained, you can now look forward to hearing the exasperated tales of applications that drive me bonkers, like TopStyle. This application earned itself an express ticket to my bad side today when, after handily reporting files with CSS errors in them, it provides no clear path of how to fix (or even view) these errors. Clicking on a specific error in a list of errors just jumps directly to the top of the file that the error resides in, not to the error itself. Brilliant.

Bill Design, Rants, Technology, Tough Decisions, User Experience

Close Call

June 14th, 2007

Holy smokes, folks! I avoided catastrpohe by the skin of my teeth this evening. I feel like I should learn something from it, or at least help somebody else learn something from it. Geek advisory forthcoming: this catastrophe was computer-centric and I’m about to get a little (or a lot) geeky in explaniing it.

explosion-22.JPGThe trouble started when I got home from work this evening and rebooted my computer per Windows XP’ insistence. Upon rebooting, I was dismayed to find my computer booting to its old partition (the half-installed Vista partition that came with this laptop before I installed XP). I had tried to remove this partition previously, but it’s been hanging around like mustachioed hotshots at the roller rink, reliably causing a BSOD whenever the laptop chooses to boot that partition. Unfortunately, as of this evening, the still-unidentified laptop demons decided that this evil partition would become the only bootable partition available on my disk.

I started the built-in Windows XP Recovery Tool (which I highly recommend…if you like fake DOS clones that serve no purpose), and it indicated that I had a block of unpartitioned space about the size of what my hard drive had been. Not good. I tried making it into a partition to see if I could boot from it, but no dice: the partition that the Recovery Tool created was an extended partition that couldn’t be booted from.

Long story short, I proceeded through the Dell MediaDirect Repair disk, Cute Partition Manager, and Partition-Recover, before finally finding the freeware app Test Disk. Now, I should be clear in my Test Disk review that it is basically a text-only app that is sparse on instruction and generally pretty black-boxy, as opposed to Partition-Recover, which has a reasonably-well laid out interface (for a DOS app) and a clear path to follow. But Partition Recover costs greater than $0, whereas Test Disk costs exactly $0. So Test Disk won. And finally, after about four hours of trial and error, I have fully recovered my deleted partition after about five button presses with Test Disk.
tortoise.png
This was an experience that made me rethink what I would lose if my primary computer got wiped with no prior notice. Of the many potential backup options to reduce the risk of this happening, my favorite one so far is Tortoise Subversion. Subversion is a free CVS-like source control application. Tortoise offers a Windows Explorer skin to the source control. As you can hopefully, sort of see in the picture at right, Tortoise provides a graphical indication on each indexed file showing whether it is up to date or not.

But here’s the most awesome part of all: you can create your own source control repository from scratch in less than five minutes. Right click on a folder, there is literally a “Create Repository” option within the Tortoise choices, fill out a couple fields, and you have both a ready-made backup system and source control. I’ve been using it to keep my three home computers in sync, and to get revision history for my documents that I might want to look back at later on. I can’t imagine a much easier solution. It’s only real drawback as a backup solution is that you have to transfer files over your home network, which probably won’t have the throughput of a USB 2.0 flash drive. But it can always run in the background. I’m doing my backup as I write this.

Bill Productivity, Technology

Synergy: Beyond the Buzzword

May 21st, 2007

“Synergy.” It’s one of those words that resides alongside “Web 2.0″ as business jargon whose power is diluted from misuse and overuse. But, linguistic connotation notwithstanding, I think it is a critical component of sites that are going places in the 2000’s. Don’t buy it? Observe:

Etsy. A site that, at its core, is doing the same thing as eBay: selling crafts between users. Given, they have done it with a better interface, but a blind decapitated monkey could create a better UI than eBay. Most sites have. What has made Etsy so much more successful than nice-looking sites like MightyBids.com is the synergy it generates between items and artists. The preponderance of well-photographed (and thus visually attractive) items on the site exist because artists tend to be better photographers than the average user. Many of Etsy’s most unique and successful features “work” because the site is designed for abstract-minded individuals. Their “time machine” is a perfect example of this. The “time machine” is a flash application on Etsy that scrolls items of decreasing newness toward you through space. This feature succeeds resoundingly because of the synergies wherein A) people expect artsy features on an artsy site and B) art-related items are much more arbitrarily chosen than eBay items, so it is relevant to see random pieces presented. If eBay tried to do the same, you would get toasters and broken laptops and Nigerian get-rich-quick scams flying toward you.  And it would not help you shop more effectively.

Biznik. A site that takes one part business, one part indy, and seasons to taste with charm. As Etsy::Classifieds, Biznik::Networking — that is, the world doesn’t need another business networking site. But powerful synergies exist when you take friendly, benevolent, like-minded indy service providers, and mix them with users possessing business acumen. The result is monthly get-togethers like “Biznik Happy Hour” which is a networking event advertised as “Not a room of business card pushing suits,” and which, over the course of the last six months, has nearly tripled in size, to the point that the event has outgrown the otherwise-terrific Liberty Cocktail bar. Why does Biznik work so well? Because its users naturally want to talk to and help each other, and if you’re talking to and helping someone, you want to get to know them, and if you get to know them, you’ll more likely to want to help them. And every time this cycle happens, the site itself becomes better because more people join and more advice is posted. The bottom line is that Biznik fosters an environment that perpetuates helpfulness, and is led by founders who embody the generous, user-first indy spirit that is manifest in so many members of the site.

As I continue to gather data and start putting the words into Business Plan 2.0, it has become very clear to me that this type of synergy is exactly the reason that Bonanzle will work. The classified ads sector is saturated, and the online auction space is beyond saturated. For a new site to make any significant inroads in this environment, there must be a strong synergistic undercurrent that leads users to the site and the site to users and users to users and the site to other sites. Fortunately, that is precisely how the plan is working out.

Bill Entrepreneurship, Progress, Technology

Seattle Entrepreneur Blogs

May 11th, 2007

I set an objective this week to get a feel for the Seattle Entrepreneurial blogging landscape, and have picked my three favorites from John Cook’s list of good ‘uns.

A Sack of Seattle: A. Sack (aka Andy Sack of Judy’s Book) is an honest guy with good observations. He’s also set up a forum for Seattle entrpreneurs to meet up over coffee, which is a benevolent gesture for an individual who has reached the “investment capital secured” promise land from which few bloggers return, and fewer still retain accessibility. Plus, his blog carries an extra bit of drama as he is currently in the process of trying to reinvent his site to capture a completely different niche (coupons) than it grew up on (reviews). Sounds like a hell of a trick to me, but I bet there are those who would say the same about taking on a $48 billion behemoth named eBay. Morons. They’ll obviously never topple eBay with that attitude.

Geeking With Greg: Greg is both a lucid and prolific blogger. He also seems to share my interests for Artificial Intelligence (I’ve architected the AI systems for most every game I’ve worked on for the last four years / he is making a web site that learns what kind of RSS you like and gives it to you) and productivity (I blog about it every other post / he blogs about it every other every other post). And if that weren’t enough, there is a funny quote about how engineers are leaving Google because MBAs have declared it their employer of choice.

Curious Office: Made by the founder of Imagekind, this site seems to fall into the “investment capital secured, accessibility retracted” collection. Comments are disabled on most posts. But you don’t have to be buddies with the writer to appreciate the piles of wisdom lying in plain site on here. In particular, there is a Steve Pavlina-esque article on their approach to getting funded. I like how he proposes that we wait until the investors come to us, rather than investing time on finding investors when there’s development to be done. Spoken like a true programmer. And you can bet that the story about the investor who tracked you down to give you $5 million is going to make for a great blog post/party story/pickup line when you can pull it off.

Anyone else got a local favorite local entrepreneurial blog not mentioned here? I’ve found that the defining characteristics of my favorites so far have been bloggers with experience and similar interests, who respect their readers and answer comments. It’s quite a treat when I uncover such a blog. The information that is readily accessible on any number of blogs these days (on the steps to getting investment, or generally being entrepreneurially minded) is stuff that simply didn’t exist 10 years ago. Let alone for free and in relatively unlimited quantities.

Bill Entrepreneurship, Technology