Golf Score Predictor

I have not added functionality in a long time but last week I decided now was the time! I added a feature to the stats menu called “Projected Scores”. Basically this takes your handicap and estimates what you will shoot based on the course and tee. It provides five estimates:

  • Real Bad (-20%)
  • Bad (-10%)
  • Expected
  • Good (+10%)
  • Real Good (+20%)

The expected number is based on your handicap. If you were to shoot your handicap then that would be the score that you should put up. The +/- numbers are a percentage above or below your handicap. The USGA has a cool little table that helps identify a sandbagger based on the odds of you shooting +/- your handicap. (http://www.usga.org/handicapping/articles_resources/Odds-of-an-Exceptional-Tournament-Score/)

Using that table and using me as an example and Royal Ontario Blue Tees as the course/tee:

Handicap: 21
Good: 95 (-3 of my handicap)
Real Good: 92 (-5 of my handicap)

So the odds of me actually shooting these scores are as follow:

Good: 21 to 1
Real Good: 174 to 1

This really puts things into perspective in terms of how hard it is to improve drastically and how golf is a game of small gains.

Digital Ocean from Linode

Was checking out VPS hosts as I do periodically to make sure that I still have the best service for my dime.

Stumbled across a VPS host called Digital Ocean, their offerings have 2x the ram of Linode for a quarter of the cost. So instead of hosting off of a single 512mb server I was able to get a 512mb server for an app server and another 512mb server to host the database and only pay half what I was paying before.

Digital Ocean charges by the hour too so I can have a development server that is an image of the production server and can spin it up/down as needed rather than trying to run a development instance on my production server in the limited linode memory.

I think the only downside to this is that Linode gives you up to 4 CPU’s (depends on how busy the server you are on is) where as Digital Ocean only provides a single CPU. For me currently I think memory was my bottleneck so I don’t think being limited on CPU will impact me drastically and if it does then I can still spin up a few more instances and introduce more app servers.

I was worried about how long the migration would take but it was actually only a few hours of work. The worst part was trying to get Bluepill and RVM to play nicely together and start correctly on reboot. Other than that it was pretty smooth sailing… :-)

5 Handicap vs. 20 Handicap

I went through the exercise of comparing a 5 handicapper to a 20 handicapper. The first thing that jumps out is the number of rounds that a 5 handicapper is playing.  In this comparison the 5 handicapper has played 26 rounds over a 2 month period while the 20 handicapper has played only 4. If you are going to get better you need to practice and play more.

Putting (2.5 strokes)
33.5 putts per round vs 36 putts per round

You always read that improving your putting can drastically lower your score. In this comparison the 5 handicapper putts on average 2.5 putts less a round than the 20 handicapper. While I am sure everyone would like to shave 2 or 3 strokes off their round but this isn’t a massive difference.

Iron Play and Chipping (17.3 strokes)
To get a sense of the importance of iron play we are going to look the holes where drivers do not factor in (Par 3’s). Our 5 handicapper averages 3.4 strokes per par 3 while our 20 handicapper averages 4.5 strokes per par 3. If we take that average and apply it to a whole round (18 holes) that is 61.2 for the 5 handicapper and 81 for the 20 handicapper. Now we take the putts off of this and it becomes 27.7 and 45 respectivly. This is a difference of 17.3 strokes.

This also explains the large difference in greens in regulation (50.45% vs 12.5%). If you hit better approach shots you will hit more greens in regulation.

Driving (1.8 strokes)
To assess driving we are going to look at par 4s then take away the expected number of iron strokes and putting strokes (par3 averages).  The 5 handicapper averages 4.45 on par 4s and the 20 handicapper averages 5.65 on par 4s. The average over 18 holes for the 5 handicapper is 61.2, while the average over 18 holes for the 20 handicapper is 101.7. If we take the iron strokes from “Iron Play and Chipping” out of this we end up with 18.9 for the 5 handicapper and 20.7 for the 20 handicapper. This means that driving only accounts for roughly 1.8 of the strokes per round.

Driving clearly has an impact on iron play and chipping stats as well. If a player hits a long and accurate drive then more often than not they will have a shorter iron with a good lie for their approach shot.

Interestingly even though there was not a large difference in the par 4 stats (with par 3 taken out) there was a slight difference in the fairway %.  The 5 handicapper hit 64.1% of fairways while the 20 handicapper hit 47.25% of fairways.

So to recap it appears that iron play and chipping is the biggest difference between a 20 handicapper and a 5 handicapper.

Links:
Golf Handicap Tracker
5 handicapper (my dad)
20 handicapper  (me)

New Relic is Pretty Awesome

I know it is pretty early to be looking at application performance as I haven’t even released a beta but I decided that I wanted to play around with something to break up the coding and testing. From reading StackOverflow and other places I already knew that New Relic was pretty highly regarded in terms of being able to visualize and diagnose performance issues.

So I figured I would give them a try and play around with their product on my development environment and maybe it would surface some problems. Step one for installing their monitoring was creating an account on NewRelic.com. To my delight they were offering a free copy of The Lean Startup as a reward for signing up. The rest of the install was dead simple (install a gem, copy a yaml file to the server and make a few tweaks to the yaml file) the whole process only about 5 minutes from signup to the first data from my application showing up on the reports.

I will touch a bit on their reporting in a bit but before I get into that I just wanted to mention how they do free trial right. A lot of these free trials require you to put in a credit card and unless you remember to cancel they will bill you or at the very least shutdown your account. New Relic doesn’t do anything sleezy like that, instead they gracefully move you from the full featured professional version to the lite (free) version after your 14 day trial ends. They also take the time for a member of their sales team to reach out to you (I am sure the motive is to qualify you as a lead but still it gives the trial a personal touch) and ask you about your planned usage. Just for replying to their email they extended my free trial by 3 months.

On to their features…Since I am still in development mode I don’t really care about the server monitoring portion of their offering. I am more interested in their application monitoring. I love the web transactions features as they can show your controllers by average response time and you can then dive into the controller and see what is slowing things down.

So based on the controller average response time I can see that my RoundsController#update is taking 135ms more than any of my other controllers on the list.

Controller List

The performance breakdown for that action looks like this:

Controller Performance Breakdown

Compared to my TeesController#update (which runs at 55.8ms):

Controller Breakdown

I am obviously doing something really expensive in the controller which I need to take a look at. I also might be able to optimize by reducing the calls to Hole#find as I am calling this 18 times and it is probably a lot quicker to get all the holes in a collection and just iterate through the collection. At this point I am not too worried about it though as this stuff might solve itself in pre-production. Just interesting to see where I might have potential problems.

I hope that golfingstat is successful enough that I can justify spending money on application/server monitoring, if I am lucky enough to make some money on this thing then there is no question that I will choose to use New Relic. Their product is great and as I mentioned above their customer service is excellent.