Hire Me! I'm currently looking for my next role in developer relations and advocacy. If you've got an open role and think I'd be a fit, please reach out. You can also find me on LinkedIn.

Ok, the title should be your warning. I'm only posting this because it is Sunday night and I'm bored. I'm working on a demo for my jQuery video (did I mention I'm working on a jQuery video?) that mimics a typical car dealership inventory search. As we just upgraded our car I'm pretty familiar with these. The demo will focus on building the UI to create a search engine that can filter cars by model, trim, color, price, and features. In order to actually have something to search against, I wrote a script that creates an inventory of cars. Here is that script. Enjoy.

/**
 * Returns a random integer between min and max
 * Using Math.round() will give you a non-uniform distribution!
 */
function getRandomInt (min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

/* A utility to create my car data.

We have models Models have trims (which they all share) cars have a color and an array of features from a list of possible ones */

var models = ["Alpha", "Beta", "Gamma", "Delta", "Epsilon"]; var trims = ["XT", "XTE", "Super", "Ultimate"]; var colors = ["Red", "Blue", "Silver", "Gold", "Black", "White"]; var features = ["Air Conditioning", "Cruise Control", "Backup Camera", "Power Steering", "Internet", "Sat Radio", "4WD", "Moon Roof"];

var inventory = [];

/* Ok, loop over each model. Each model will have 5-20 (rnd) of each trim. Each car will have a random color. Each car will have a random chance of having a feature with higher trims having a better chance of having it. Each car will have a price btn 20K-40K with each level of trim adding +10k to make them, normally, higher

*/ for(var i=0; i < models.length; i++) { var model = models[i]; for(var k=0; k < trims.length; k++) { var trim = trims[k]; var numberToAdd = getRandomInt(8, 23); console.log("Going to make "+numberToAdd+" "+model+" "+trim);

for(var j=0; j<numberToAdd; j++) { var car = { model:model, trim:trim }; car.color = colors[getRandomInt(0, colors.length-1)]; car.price = getRandomInt(20000, 40000) + (k*10000); car.features = []; for(var z=0; z<features.length; z++) { if(getRandomInt(1,10) + k > 6) { car.features.push(features[z]); car.price += (car.features.length+1)*1000; } } inventory.push(car); }

} }

//so i can see it console.table(inventory); //so i can copy it console.log(JSON.stringify(inventory));

In case you're curious, I'm going to write a simple module that wraps calls to this data so that I don't have to use an application server to serve it up.