PullMonkey Blog

24 Jan

VIN API – fair pricing model

It can't be a shock to any of you that after many months (wait - more like a full year) of running VIN API completely free and out-of-pocket, it is time to monetize. As I am sure most of you know, the back-end data is quite pricey. For example, a monthly subscription for a "lite" data set (your typical year, make, model, engine type, etc) at one of the better known distributors would run you about $260.00 a month for ~800 VIN decodings. This is some very expensive data at 32.5 cents a VIN. Some of you that use our API are running 50,000+ VINs through in a weekend, that is $16,000! Wow!

Ok, so what did we decide to do? Well first, and most importantly, we decided to keep the service up and running; for a while there it was looking pretty bleak and if you take a second to look at the numbers (financially) you can understand why. Anyway, to be as fair as possible, we did not feel this could be monetized as a subscription-based product, some months you need 500,000 VINs and some only a 1,000. Looking at the data for year, we had many questions - what plan would you pick? should the plan rollover it's unused decodings?

We discovered a lot of complexity in the subscription model, so we decided to setup the pay as you go plan, where you buy your decodings at various bulk levels. For instance, you could buy in groups of 1,000 or 10,000 or 100,000 such that you would realize savings on a price-per-VIN basis the larger the group you purchase. There is no use policy either, so you can sit on the VINs for as long as you want, or you can even buy decodings the day (even the minute) before you need them. No monthly credit card bill, no rollovers, just simple "buy what you need," and if you buy in bulk, you save.

Another consideration in doing this was having to maintain soft limits. For example, if the user purchases the 5,000 VINs per month plan, and the their site does well this month and they need 6000 VINs, should they have chosen the 10,000 VIN plan? We didn't think so, we figured no hard limit, just soft limits, and after the soft limit is hit, we would charge the additional VINs at the current rate per VIN to the user's next month's bill. We tried to explain this to a few current users that are helping us come up with reasonable rates and they were not all that thrilled about it. So we had a problem, we did not want users to pay for what they did not need, but at the same time we did not want to cut users off in the middle of a month when they hit their limit. That entire idea had to be scrapped and along with it went the idea behind the subscription plan itself. We like it though, it's simple now - buy your decodings and use your decodings, we will email you if you are getting low and may want to add decodings to your account.

Subscription models are great for static resources and static services, but not a single one of our customers decodes the same number of VINs each month, so it just won't work. So onward and upward, pay as you go and regardless of how the other API providers offer their service, we are excited to be a little different and lot cheaper as you will soon find out.


21 Apr

Got a real mountain bike

Kona Hei Hei 2-9

2008 Kona Hei-Hei 2-9

Albuquerque just had its annual bike swap this last weekend.  I bought another bike (!) - making the total count: 2 road bikes and 5 mountain bikes.  It's a 2008 Kona Hei-Hei 2-9.  It's a pretty studdly bike - 20" frame, 29" wheels, full suspension, hydraulic disk brakes and great components.  It puts my last mountain bike to shame.

06 Jan

POST OFC Graph as Image

I was asked recently (well sort of) to give an example of saving an image to the server. If you look at teethgrinder's example for this, you will see that he has made available an external interface to do just that - POST your graph as png raw data to your server for storage. This has many benefits such as saving the image for use in a PDF report or for printing, since we know at times it is a bit troublesome to print the embedded flash object.
I think the main problem people are having with this is the receiving of the image data post - see the upload_image method below. Also, teethgrinder's example never really says where to make the post_image() call. So I touch on both in the code below.
Here is an example of the png that is saved when I did this for the chart in the previous example:
OFC Saved Image

Well, let's just get right in to the code.
The controller contains the same code as my last post with only a few minor changes to the index method and the addition of the upload_image method.
In the controller, I have this:

class TestItController < ApplicationController
  def index
    # note the user of open_flash_chart_object_from_hash instead of just open_flash_chart_object
    # this allows you to pass in the id of the div you want the the chart to be in
    # this is useful for when we need to findSWF by this id
    @graph = open_flash_chart_object_from_hash("/test_it/chart", :div_name => "my_chart")

  # added to recieve the post data for the OFC png image of the OFC graph
  def upload_image
    name = "tmp_image.png" || params[:name]
    # the save_image method that is provided by the OFC swf file sends raw post data, so get to it like this
    data = request.raw_post
    File.open("#{RAILS_ROOT}/tmp/#{name}", "wb") { |f| f.write(data) } if data
    render :nothing => true

  def chart
    # same code from here - http://pullmonkey.com/2010/01/05/open-flash-chart-ii-x-axis-date-and-time/ 

So just note the use of open_flash_chart_object_from_hash() in the index method, this way we can pass in the id of the div.
In the view, I have this:

<%= javascript_include_tag 'swfobject.js' %>
<%= @graph %>
<%= save_as_image("http://localhost:3000/test_it/upload_image?name=tmp.png", :id => "my_chart") %>
<%= button_to_function "Save Image", "post_image()" %>

Really the only difference from what we would normally have in our view is that I am using the save image setup method that was added to the open flash chart ruby on rails plugin in the last couple hours (as of this post). The save_image method takes some arguments, mainly the url to post the image data to and the id of the chart we setup in the controller.

18 Oct

Got a road bike


Well, after months of riding my mountain bike everywhere, I decided it was time to buy a road bike.

There is way too much to know about purchasing a road bike, especially when I realized I was not going to get it for $30.00 like my mountain bike. For the last couple weeks I started researching a few things about road bikes, starting with the best one to get. That lead me down more and more bunny trails. One thing I learned that wound up being very important was fit and the size of the bike.

The size of the bike is measured in centimeters, so based on a few charts, I found out that I should have a bike that is about 61 cm. WOW! My mountain bike is tiny. It is 42 cm, smallest road bike I found was 48 cm, so maybe that isn't right, but again the mountain bike is too small for me and it was time to upgrade before I hurt myself. Apparently if your knee does not extend far enough, you will get pain in the front of your knee and if your knee extends too far, you will get pain in the back of you knee. Not only is my mountain bike too small it is a mountain bike and is a freaking tank weighing in at 40 lbs or so, far too heavy.

Anyway, back to buying the road bike. After researching what I could, I went shop to shop to shop, about 10 shops in town, here are the ones I remember:

  • High Desert Bicycles
    Hands down the BEST bike shop in Albuquerque. They are open EVERY day and are the friendliest group of people you will ever meet. The owners are there every day too and they are very knowledgeable, I picked their brains for many hours and on multiple occasions. It didn't stop at the shop, we actually exchanged a few emails about all kinds of things (more on this below). This is where I wound up buying my bike. You will read more about them below.
  • Fat Tire Cycles
    Highly recommended around town and it was obvious why, I really liked it, but it didn't have as good of deals as some of the other places. I would recommend them for service and tune ups though for sure.
  • Two Wheel Drive
    Not too bad, lots of Bianchis and for cheap too. Nothing my size that I liked.
  • Kickstand
    First place I went, they really pushed Giant. But they have Bianchi too, I really liked the C2C 928 that I tried, what a freaking awesome bike!
  • Albuquerque Bicycle Center
    Treks galore. I tried a few and despite their name didn't actually approve, sort of a rougher ride compared to the other bikes I was interested in.
  • Cycle Cave
    Mom and Pop shop, didn't have my size in anything I was interested in, but was still very informational.
  • Bike World
    They don't deserve a link. It had to be a joke, this place was flat out awful! Never go to a bike world if you want good service or any service really and I went to two of them in town just in case.
  • Performance Bikes
    They don't deserve a link either. Walked in and waited for about 20 minutes, looking at bikes no one even spoke to me, so I left, wasn't what I was expecting at all.

So after all of this, the question I have to ask myself is did I pick the shop or the bike? I would like to think that it was coincidental that the BEST shop with only two brands was where I ended up finding the BEST bike for me. Is that possible?

Yah, well obviously it is possible, I wouldn't get a bike that I didn't like.

So let's start from the beginning. My shopping around started with Kickstand on Friday of last week with the Giant Defy for cheap. I knew nothing about components, barely knew what shimano was and definitely didn't know if dura ace was better than sora. I really thought - "Ah heck, I am going to go buy a bike real quick, buy a nice one for $500.00 and move on." So it was a slow start. For those that didn't know, there aren't any real road bikes for $500.00, well not in the retail stores anyway. Real road bikes start at around $800.00 and go up with varieties of componentry and frames. So the Giant Defy was Amazing compared to the mountain bike I was used to, but at $1,050.00, I found out that I had a lot to consider and learn. Plus I only road the bike around their parking lot, not really a good test before spending over a thousand dollars. This meant I had to go home without a road bike and with a ton of questions.

Ok, so Saturday rolls around and we hit all the shops in town - Kickstand (again), Two Wheel drive, Cycle Cave, Fat Tire Cycles, etc, the others aren't really worth mentioning again, luckily I got them out of the way early. I tried a dozen different bikes, I really didn't want to stay at any one shop for too long. I sort of had it in my mind that I would do the "Tour de Cookie" the next morning (Sunday) and I needed a road bike. But Saturday came and went and still no road bike. Ok, so instead of doing the "Tour de Cookie" I wound up at High Desert Bikes, the only bike shop open on Sunday, so I thought, "why not?".

Ok, so why Specialized and why High Desert Bikes?

Well, from the first second I walked in to High Desert Bicycles I was greeted promptly and measured for size and fit almost immediately. Ok, not too different from the other shops, everyone was all about "fit". But, next when they found a bike in my size, they mounted it on a trainer and had me get on. I sat on the bike and they measured the angles of my knees and placement of my hands, etc. I felt like an athlete that was being studied. Oh ... and my wife was with me and they fit her the same way they did me to a bike her size JUST so she could ride around with me.

The bike they put me on was the Specialized tarmac comp double (rival componentry). After getting fit and measured, etc, I took it for a spin. They positioned their bike shop along a bike path ... didn't see that much anywhere else. I took the bike out for about 30-40 minutes, just riding up and down hills. It was fun, it was effortless, I feel in love and as far as I was concerned at the time it was $$ expensive $$. Too expensive I thought and took off. I did research and found out that it wasn't all that expensive really; 2010, full carbon frame, high end components, perfect fit. Well, never-the-less I continued my search, back to a few of the same bike shops throughout the week, but now with a higher price range in mind and better bikes to look at. So I tried a whole new range of bikes and the close second was the 2009 Bianchi 928, full carbon, ultegra parts, from Kickstand. I road the 928 one day then the tarmac the next, then the 928 again and then the tarmac again ... back and forth for the rest of the week. I knew I was going to get one of them, just wasn't sure which one.

Well, it came down to the tarmac, and I'll tell you why. First, the bike felt just a slight bit better, but what really did it for me was actually the shop. I knew that if I had any problems the team at High Desert Bicycles would take care of it and make everything better. So just yesterday (Friday, a week later from when the search started), I went in to High Desert Bicycles and found the guy I've been dealing with the whole time to make a deal, to see what my options were. I left feeling like I got a great deal, they charged me for the bike and threw in everything else I could have asked for, for free, no additional cost. I left with some winter biking gloves, bicycling shorts, water bottles, pedals, cup holders, etc.

I took the bike out that night, road it until dark and everything was perfect. I highly recommend the Specialized Tarmac and if you live in Albuquerque or near by, you have to check out High Desert Bicycles, they really did good by me.

By the way, some of the questions and concerns I had for getting a full carbon are as follows (and this may help some of you make your decision):

  1. Can I put a rack on it, like for commuting?
    Well, the answer is yes, but with some concerns. High Desert Bicycles contacted Specialied to talk about a rack I had found that connected to the rear hub and the rear brake - meaning most importantly that it did not clamp to the frame itself. They suggested to get an aluminum seat post and connect there instead of the rear brake mount.
  2. Can I use the current car bike rack that I have? And I only have cars, so it is this bike rack that attaches with rubber hooks around the trunk, nothing special - it has two arms that come out with velcro straps. Reading the forums, I found lots of scepticism and people claiming that it could damage the carbon frame when the car went over bumps. Specialized and High Desert Bicycles both suggested a wheel or front fork mounting system but said that the bicycle rack I had wouldn't do much if any damage. The only thing they were concerned about were scratches since there is a cable for rear components that goes along the bottom of the top tube. So apparently it is no big deal, but for now I just take the front wheel off and lay the bike gently in my trunk.
  3. Can I mount my cyclocomputer (uses zipties) to the frame? (yah, I was pretty naive) Anyway, they said that is not a problem at all, and so far, so good.

Can't wait to get out and ride ...

27 Sep

Routes I did over the weekend

32 miles round trip from my friend's house to work.

25 miles to Los Lunas from downtown Albuquerque, and then we road the train back.

Comments Off on Routes I did over the weekend Filed under: biking, me Tags: , , ,
19 Sep

Getting pretty serious now

It has only been a few weeks of riding to and from work and I am obsessed.  I bought the Cateye v3.  It's a cyclocomputer that measures pretty much everything.  It measures the current, max and average for cadence (crank revolutions), speed, and heart rate.  Not to mention distance, time, and calories.  It took about 5 minutes to setup and getting everything securely fastened and operational.

So far it seems to work just fine.

If I could have justified it, I would have gone with a garmin cyclocomputer (probably the garmin edge 705).  But for $700 bucks it didn't make much sense knowing that my bike was $30 bucks.  I would have loved to ghost race myself, such that the cyclocomputer would have tracked/stored a previous lap or trip and then I would see a dot representation of both my current self and my previous self, kind of like mario kart.   That would have definitely kept me motivated.

For a little over $100.00, I couldn't beat the cateye, so I am going to give it a thorough test tomorrow, see what it can really do.  I hope it is a positive experience.

05 Sep

Biking to work


I started biking to work every day (approximately 6 miles one-way), and every morning it is a breeze, it takes about 15 - 20 minutes.  On the way back home, it is near impossible, and takes 45 - 60 minutes.  bikely's got this awesome tool that will show you the elevation for your route.  According to the graph I climb 134 ft on the way to work, and descend 594 ft, but on the way home it is reversed and boy do I feel it.

I bought my bike out of my work's classifieds for $30 USD and in the first 2 weeks of biking to and from work, I have had to do a number of things to my bike.   I didn't realize it for the longest time but my back tire had a slow leak and was sitting at about 20 psi, which was no big deal on the way to work, but made it pretty difficult to get home.  My tires are now both around 55 - 60 psi.   I also spent a good couple of hours learning about derailleurs, cogs, chainrings, sprockets, etc ....  My bike would jump gears, slip gears, fail to shift at all, it was a mess.  But I love it now - free exercise and I don't have to deal with too much traffic.

Here's my bike -


It is a GT Timberline (8-10 years old), all tuned up now and looking good, I have definitely gotten my money's worth.

4 Responses Filed under: biking, me Tags: , ,
07 Oct

MacroMovers, Inc.

I own a small moving company that does local moves in Albuquerque, NM and the surrounding areas.
We are approaching the end of our first year, and will soon be one year old 🙂
I run this business on the side with two friends and we have successfully grown it from the ground up.
When we first started it was just the three of us, trying to get a few extra bucks and have some fun.
We started out just doing jobs on the weekend, and over the holidays.
We soon realized how much work it really was and decided that the first order of business would be to hire a couple of guys to do the work for us :). We hired people rather quickly, all through the paper and craigslist. Over this year we have hired, fired, and promoted over 40 people in the Albuquerque area, believe it or not, there is a huge turn around rate.
We have one scheduler, they have been with us since day one, I think the first or second guy we hired. He is awesome and has brought a lot of success our way. He handles the customers, the workers, and tracks all of our day to day, he has taken over EVERYTHING, well except for sending out paychecks, we continue to meet and pay our workers every couple weeks, or in some cases when necessary.

If you are looking to move to, from or within Albuquerque, go to MacroMovers.com.

15 May


RailsConf 2007.
I leave for Portland tomorrow! Check out my schedule here.

1 Response Filed under: Home, me, rails, railsconf, ruby
24 Apr

Happy Birthday to me!

Yup, I made it another year. Hurray!

“if you don't do it this year, you will be one year older when you do.”
- quote from Warren Miller (favorite snowboarding video Fifty)

7 Responses Filed under: Home, me