01 Oct 2007

Anything For Sale By Owner

1 Comment Uncategorized

Anything For Sale By Owner LogoAs I alluded in a post a couple of weeks ago, I have been a bad blogger. And I have neglected my community of readers. However I would like to tell you what I have been doing in the last couple of months while I have been neglecting my blog.

I recently got involved in creating a startup as the lead developer for an online classifieds site called Anything For Sale By Owner. From the ground up this was conceived as a middle-ground between craigslist and ebay where every listing would be charged at a static rate of $1.00/month. The $1.00 is a way to week out the crap from craigslist and the death-by-fees from ebay.

The description is pretty straight forward but the more interesting tid-bits that I know my readers are interested in are as follows:

.NET/C#

We choose .NET mostly because it is what I knew and .NET for me has always been stable, predictable, and performed really well on server-side applications. The alternative was PHP and even through we wrote many of the processing layers by our self (i.e. REST Web Service Handler) the time to deployment was greatly accelerated because of all the work the Microsoft ASP.NET Team has put in to the product. The user of Master Pages and Web Services made for an easy separation between content and display.

MySQL

We choose MySQL for a whole host of reasons mostly based around the costs associated with a single Microsoft SQL Server Standard Edition license. Other reasons we choose MySQL was for scalability, because not only could we install 5 database servers (hardware included) for the same price we could purchase 1 MSSQL database server for but also because the master/slave replication of the databases seemed to be an easier process when we needed to scale horizontally.

REST Web Services/AJAX

We followed the Digg Model for exposing web services and each web service could be changed around to provide output through JSON, RSS, ATOM, KML (where applicable), and XML. I even did a write up about a month ago on the JSON Serializer that I developed for this website. This was very important for the AJAX we needed to control many aspects of the user experience.

Open Search

Open search was one of the value add features that wasn’t in the original spec but was an easy add-on because we already had the Web Services in place to leverage. You can view our open search XML definition file here. If you are unfamiliar with Open Search this is how A9.com defines it:

OpenSearch is a set of simple formats for the sharing of search results. Any website that has a search feature can make their results available in OpenSearch format. Other tools can then read those search results.

So that little search box in the upper right hand corner of your browser is an example of an Open Search client.

SEO

Search Engine Optimization is a very important part of any website today. Because for most new sites and even some of the older ones, Google is going to be the largest most ignored user of the site. Not only will Google look at every single page on your site every week, which I dare any human to try and accomplish, they will also be the largest organic promoter of your site.

One of the corner stones of SEO is easily readable URL’s that contain descriptive keywords. This means you have to have a good URL Rewriter in place. We choose Ionic’s ISAPI Rewriter that integrated nicely with IIS 6.0. However that left a big gap between using Visual Studio’s Intigrated Web Server (which doesn’t support ISAPI) and a full blown IIS Server. The benifits are pretty obvious for running the Intigrated Web Server that comes with Visual Studio, for one you don’t always have to have IIS that comes with Windows XP always running and the host of security problems that comes with it, two I was running Windows Vista and IIS 7.0 has some huge differences from IIS 6.0.

So I sat down one night and wrote my own Apache mod_rewrite compatible HttpModule for running the same rule-set that I defined for Ionic’s ISAPI Rewriter, to fill in the gap and make developing on my local machine as close as running the live web site on IIS 6.0.

If anybody is interested I offer the Url Rrewriter as a free download:

Front End Design

I am a software developer and usually don’t get invovled in the artsy end of the web site design. So I will let my co-worker Tom Lauck describe how he developed the front-end for Anything For Sale By Owner.

So all in all I believe that this website has a very good chance of making in the Wild Wild West that the Internet is, however that is probably just the ramblings of a proud father. Be on the look out for some major marketing campaigns in the NYC Times Square region.

24 Jul 2007

Why Linux Has Failed on the Desktop

No Comments Uncategorized

I found this great article about Con Kolivas on Slashdot today:

Linux is burdened with ‘enterprise crap’ that makes it run poorly on desktop PCs, says kernel developer Con Kolivas. Kolivas recently walked away from years of work on the kernel in despair. APCmag.com has a lengthy interview with Kolivas, who explains what he sees is wrong with Linux from a performance perspective and how Microsoft has succeeded in crushing innovation in personal computers.

This article is personally the first time I have heard of Con Kolivas, but in the article he makes many great points about performance and usability that every software developer should be concerned with. He also talks about the disconnect that the Linux Kernel Developers have with the common user and the weight corporations hold over the changes that go in to the Linux Kernel.

17 May 2007

My Job Interview 2.0 Experience

No Comments Uncategorized

Recently I read a post by Alex over at The Daily WTF… err… I mean Worse Than Failure. The article explained many of the tactics that the industry now uses to weed out candidates by giving them brain teasers during an interview. Alex explained in only a way that Alex can that, having a candidate that builds a water displacement scale for a Boeing 747 to measure its weight instead of just calling Boeing is probably not the guy that you want working on your project. The programmer that solved the riddle of how to find out the weight of a Boeing 747 probably fits in to the category of “A Complicator”. A complicator is basically a person that takes the most simplest problem and turns it in to an engineering disaster.

The job interview that Alex posted as an example was:

During a screening interview, I was asked how I would design a bike fit for someone visually impaired. I responded something to the effect of, “What, like, for blind people?”, and she answered yes.

I thought for a moment and then I responded, “Well.. a blind person riding a bike doesn’t sound like a very safe idea, so I would make the bike stationary, maybe with a fan blowing in the person’s face. He probably wouldn’t even know the difference.”

She was speechless.

The reason why I am blogging about this is because I had a similar experience, in my Senior year at Penn State, to the one that Alex posted about. I like all other students was looking to find my first job and I was going on interview after interview with big and small companies a like. The one interview that I remember the most was an interview with Microsoft, mostly because at the time I thought somebody was playing a horrible joke on me.

I met with a representative from Microsoft that had a very think Indian accent, so it was very hard enought to understand the questions he was asking me. So I needed to ask him to repeat the question 3 or 4 times each and every time. For the life of me I don’t understand why Microsoft would send a representative, of the company, out to interview candidates, that obviously had trouble communicating to the majority of the population in the United States. That wasn’t the issue I was blogging about, but I thought I would explain the full interview. After a few basic questions about my resume he got in to the brainteaser question.

If you could design a better gas pump, what would you do?

Before I start with the explanation I gave him. The Fall semester of my Senior year my professor gave the class the exact same question verbatim, as a design project for the class. After much thought about how you would design a better gas pump the whole class didn’t have any ideas. You could only redesign the actual gas pump, none of the back room features or anything like that. So it is obviously a tough question, and even my professor that asked the question really didn’t have a good answer, and the question was pretty much scrapped and we were given a much smaller assignment that could be completed with the month we had left in the class.

So back to the interview. I gave all the stupid answers that you might think of, Color Display, Robotic Arm, Touch Screen, etc, nothing really mind blowing. Even ventured some good ideas for the back room such as automatic police notification of license plates that were wanted in relation to a crime, however like in my class I could only deal with the actual physical pump. I also asked the interviewer what he would do, but he dodged the question. Or at least I thought he did because I still couldn’t really understand him.

I didn’t get the job and my only regret was that I didn’t tell him that a class full of very intelligent Senior IST students and one professor couldn’t come up with an answer in 2 months.

So my advice to my readers is that if you ever come across a similar situation give the practical approach as Alex describes, because a good coder uses the simplest solution to a problem, not the most complex.