Data-Driven Practice for Golf Improvement

Posted on

I got a new toy tool. It’s called ArcCos golf, and it gathers data on all of the golf I’m playing this summer. I’m using it to guide my practice, and so far it’s working well.

For example, I used to buy heavily into the “Drive for show, putt for dough” mentality. Warming up for a round I’d hit 2-3 drives on the range, but I never really practiced it like I did putts or 100-yard shots. Then I saw this:

This chart of my drives made it painfully obvious that my drives were leaving me with long approaches from the rough (and often, through a tree line). I’ve devoted a few hours of range time to straight, consistent driving, and it’s paying dividends. Here’s a more recent dispersion:

I’ve picked up an average of 16 yards (1-2 clubs), and I’m hitting more than 2x the fairways (and the dispersion is tighter). This means easier approaches and more birdie putts.

I’m also making better club decisions on approach shots, and finding weak spots to work on.

I’m hitting more greens and missing by smaller distances. There’s a lot of work ahead (The #100 PGA Tour pro gets on 66.5% of greens in regulation), but it’s progess. The #100 PGA Tour pro hits 60% of fairways in regulation, for the record.

My ambitious goal is to match one of those stats by the end of the year. Halfway there.

It Wasn’t All Intuitive

Posted on

Today I started volunteering in a local elementary school, helping students with disabilities. I know, you can’t learn that much in 90 minutes, but I was definitely surprised by a few things on day 1. Most pertinent:

It wasn’t all intuitive. I was continually surprised by the things that we have to be taught, that I’d assumed were just ideas we picked up by intuition. First and foremost: Fact vs opinion. I forgot that schools have formal exercises for this, though given our current political discourse, I’m really glad we do train children in this distinction.

Other interesting takeaways:

  • Technology invades the classroom:
    • Students are scored in real-time by their teachers using a mobile app, and analysis of their behavior and their education is immediately available to parents. Real-time report cards are here.
    • E-libraries: Students in the classroom I was working in read from a library of interactive e-books tailored to their reading level. I think these technologies are great for making up-to-date books more accessible/available, and their interactive nature makes them great educational tools. Kids listen to the book as they read. Words are highlighted in-sync. If a student doesn’t know a word, they can highlight it for a definition and pronunciation. I don’t know if the presentation of the books is that effective for improving literacy; there are probably only 10-15 words per page. I do think it’s a good start though.
  • Odd relics:
    • Even as tech invades, some things just won’t go away: Pencils and red pens. Notebooks, and letters to the teacher as exercises. Things that I remember from my education, and that I would bet my parents and grandparents remember, are still very-much a part of the curriculum.

“Your Name” Is a Film Good Enough to Watch with Subtitles

Posted on

Some context about me: I despise subtitles. I find they get in the way of my appreciation of almost any film or TV show, and thus I avoid them as often as I can.

That said, a friend dragged me to the Japanese animated filme “Your Name” the other day, and I can say that the quality of the film justified the labored reading required to follow the story-line (Ok, it wasn’t that bad, but it wasn’t fun).

First of all, the scenery was brilliant. At some times exotic and aspirational, and at others intricate and photorealistic, it was enjoyable to watch, but it didn’t get in the way of the plot (ala “Dunkirk”). Second of all, the plot was engaging. Without spoiling it, I’ll say that some parts of the story caught me off guard, which is hard to do in a film constrained by so many norms (of animation, Japanese cinema, etc.). I also appreciated the excellent incorporation of culture into the plot. It wasn’t just there an element apart from the plot. Japanese culture drove this plot.

It was reported in September that JJ Abrams will remake the film for American audiences, in live actions. It will be interesting to see how his remake compensates for parts of the original that were tailormade for animation and Japanese culture. I look forward to it.

Butter in Coffee: Paula Dean’s Dream or Health Hack?

Posted on

Today I came across a really odd idea that’s spreading among the health-food crowd: Butter coffee. Not just butter coffee. Butter + coconut oil coffee. Sounds horribly unhealthy, doesn’t it? It sounds like a Paula Dean pipe-dream, or a Gitmo enhanced interrogation technique.

Apparently it’s the opposite: Proponents say it allows for a more even spread of energy throughout the day (eliminating caffeine crashes), and eliminates mid-day hunger. See the experiment from Sally Tamarkin at Buzzfeed here.

I’m not one for lifehacks, but I do never find caffeine to last long enough, so I might just try this one….

My favorite excerpt of Sally’s buzzfeed post below:

OK, but is this real? Or am I just super susceptible to placebos?

Is it all in my head that I am in fact functioning at a Bradley-Cooper-in-Limitless level?

I decided to run the apparent benefits by some experienced experts to see which ones (if any) were supported by science or their own clinical experience. Here’s what they said about each of my takeaways:

• Lasting, level, jitter-free energy:

According to Matheny, “The caffeine is released more slowly because fat slows down digestion,” says Matheny. So fatty coffee means a “slower release [of caffeine], less intense energy spike, and longer-duration energy.”

• Satiety and a suppressed appetite:

“Taking in a fatty meal in the morning is definitely going to make you fuller quicker,” says Dr. Lisa Ganjhu, D.O., associate professor of medicine at NYU Langone Medical Center in New York City. And because the fat slows down gastric motility (aka filling and, ahem, emptying of the digestive system), you feel fuller for longer.

That said, Brian St. Pierre, registered dietitian and director of performance nutrition at Precision Nutrition, points out that butter coffee’s effect on satiety has yet to be proven: Only 1 in 14 studies on medium-chain triglycerides (aka MCT oil) found that it had a positive effect on satiety.

• Alertness/mental boost:

St. Pierre and Ganjhu explained that the way MCT oil is processed by the body could make you feel an energy boost more quickly. Basically, it bypasses the normal multi-step digestion process and is transported directly to the liver, where it is converted into energy. So our body’s response to MCT oil is closer (in how we feel its effects) to medication and alcohol than to other foods, says St. Pierre. Perhaps for some people (like me), the combination of quick-hitting caffeine and long-lasting energy translates to enhanced alertness and performance.

• I didn’t track this, but I know people are interested: enhanced calorie-burning and weight loss:

If butter coffee is enhancing your satiety to the point that you’re eating fewer calories overall, well, then you will lose weight.

But as far as MCT oil directly impacting weight loss, the effect may be minimal, says St. Pierre. He cited a 2012 review of the MCT oil literature which found six studies that showed weight loss in participants. However, the review concluded that further controlled studies with standardized amounts of MCT were needed before any legit claims could be made about its impact on weight loss.


Lessons: The Value of a Microservice Architecture For Quick Projects

Posted on

Yesterday I took 2nd-place in Northwestern University’s Wildhacks hackathon. It was my best finish in a hackathon to date, but the success masked the fact that I was debugging my project, Tweetscan, on-the-fly as I demo’ed it. When one judge came, the whole project was down and I had to show him a cached version,as I debugged the real app. Several times during the last few hours of the 36-hour event, I made a little tweak which ended up taking down the entire service. Debugging was painful, because my project was hundreds of lines of code long, and the exhaustion of a hackathon doesn’t exactly make for readable/well-documented.

Today I did a little mental post-mortem, and came up with a solution I’ll be using for every hackathon in the future: It’s based on this post I read recently on Netflix’s Microservices architecture, using a reverse-proxy. Basically, as follows:

  • Every endpoint of the API I write will be contained in its own individual file, and run on its own, though they will all be on the same server. Less code per file means a much more maintainable app.
  • All of the endpoints will be accessed through a reverse-http proxy. This will handle errors, so if one microservice goes down, the rest of the app will stay up. This means more reliable demoing, and that I’ll have more time to work during the hackathon, because I don’t have to worry about

The code for the top-layer reverse-proxy (using ‘HTTP-Proxy’ and Express) looks like this

var express = require('express');
var app = express();
var httpProxy = require('http-proxy');
var apiProxy = httpProxy.createProxyServer();
/// Below is the critical section. It catches errors, so the rest of the services stay up.
apiProxy.on('error', function (err, req, res) {
console.log(err);
res.writeHead(500);
res.end();
});
/// Each service runs on its own port.
var serverOne = 'http://localhost:3001',
 ServerTwo = 'http://localhost:3002',
 ServerThree = 'http://localhost:3003';
 
app.all("/app1/*", function(req, res) {
 console.log('redirecting to Server1');
 apiProxy.web(req, res, {target: serverOne});
});

app.all("/app2/*", function(req, res) {
 console.log('redirecting to Server2');
 apiProxy.web(req, res, {target: ServerTwo});
});

app.all("/app3/*", function(req, res) {
 console.log('redirecting to Server3');
 apiProxy.web(req, res, {target: ServerThree});
});

app.listen(80);

Letting Go

Posted on

I’ve spent most of my free time over the last three weeks building a project called 1 Million Words. The code I started with as a basis for that was probably another two months of free time for me. I built, I tested and I iterated. I spent long hours debugging, and refining the experience based on feedback from beta users.

About 30 minutes ago I “launched” it on Product Hunt. Now comes the hard part: letting go.

Of course I want 1 Million Words to do well. I think it’s a cool idea that could help a lot of people. There’s definitely a chance it fails though. People may not “get” it. It may be too complicated, or the wrong product for the market. It may be the perfect product, but launched at the wrong time.

If it does well, great, but if it fails I need to have the dispasionate perseverence to keep building. I need to remind myself that what I learned from building this was worth the time I put it, and that I had fun writing the code and searching for the bugs. I’ve done all I can do, and now I need to let the market decide, and if the decision is that it fails, I need to build something that more people think are worth using. I’m prepared to do that, because building things is what I love. If the bitter moment comes in a few hours where I realize the launch has failed, I need to remember that.

Let’s go.

 

A New Theory On Blogging-For-Dough

Posted on

I’ve written a lot on here about the journalism machine I’ve been building. Early this month I completed the prototype, and tested out the first article generated by machine on Reddit.

The post got 29 upvotes, 16 comments, and generated about 180 visits (on a sub-reddit of about 6,000 users). Topping a sub-reddit with a machine-generated article is great. It confirmed my thinking on dominating niches. The rest of the data wasn’t so good though. The average session duration was 27 seconds. A number of the comments were not pleased with the relevence of the list, despite the relevent title. More importantly, I kept struggling with the knowledge that writing quality articles quickly is only half the battle. Getting them consistent, quality traffic isn’t some easy afterthought.

So, despite having a perfectly functional prototype, I’m starting from scratch. I’m changing my strategy from almost fully autonamous content generation, to speedy quality human content generation. I want to remove the structuring/editing needs from writing my most popular types of blog post, while still writing the post by hand (to retain that human, relevent touch the prototype pieces were missing).

I am also going to be launching these new articles on The App Store Chronicle, where a long-developed Search reputation makes it much easier to top a SERP and get lasting traffic. The App Store Chronicle is consistently bringing in $40-50 in profit a month from the articles I wrote from 2011-2015, but I believe that with more, more search-ready articles, TASC can bring in 10x that, at least.

The articles that have brought TASC traffic consistently for years at a time have been the popular unanswered questions of the internet. These are questions too small for Engadget or Recode to write an article about, that still have 1-2000 people looking for answers in a month.

For example, today I wrote an article on TASC about Tinder’s recent logo change. Within minutes, this article was ranking high on the first page of Google, and bringing in traffic.

Writing about interface changes for popular apps always bring in a fair amount of traffic. Sometimes, they bring in a lot of traffic.

Thank You Snapchat
Thank You Snapchat Interface Designers

Every time I write one of these posts though, it takes time to structure and edit it. I have to think “How do I go about writing this change up?” Being able to select “interface change”, fill in a few blanks, and have a great article would allow me to save enough time to write 10x the articles. With 10x the articles, I have 10x the chance of hitting that big winner that sends 20,000 readers.

I’ll end this ramble here, but you get the idea.

The Best/Simplest Search Option For Jekyll Right Now

Posted on

I love Jekyll. It’s simple, fast, and secure. It’s also lacking in databases though (unlike WordPress), which makes search slightly more challenging. There are a few options for setting up site search in Jekyll, but one is ultimately superior: Lunr.js.

Lunr.js is a simple, open-source (read: free) option for adding search to static sites. It runs on the client-side (in-browser), and using some Jquery magic, it returns results in real-time. No need to press a search button.

There are a number of ways to actually use Lunr.js with Jekyll, but the easiest I’ve found is this open-source plugin. The whole setup process requires copy-pasting 4-5 code snippets into your gemfile, _config.yml, and default.html, and running a few things in the command line. The process took me 20 minutes. Once it’s set up, it will re-index your search engine automatically whenever you update your site. It’s also super-easy to customize the user experience with just a few more lines of HTML/CSS.

The other option I considered for search was Algolia, a really beautiful 3rd-party search service. They have all kinds of cool bells and whistling (i.e ways to weight/filter searches, data), and a Jekyll plugin. Ultimately though, I couldn’t get it working 100%, and I didn’t need the power they were offering for my little sites. If you’re running a Jekyll site with at least 1000 pages or 50,000 uniques per month, or you need some type of complex search feature, Algolia might be a good option for you though.

For now, Lunr does all I need, offering a really nice way to quickly integrate real-time contextual search.

Filling your shelves: Being prepared on the golf course

Posted on

Lately, as golf season heats up, I’ve been thinking a lot about my strategy on the golf course. My irons are great right now. I have the shots to be shooting at least 10 strokes lower than I am.  The challenge has been building a mental/strategic game to match my physical game.

My latest approach centers on corner bodegas. Bodegas don’t carry nearly as many products as regular supermarkets, and their product selection would be a rounding error amongst Amazon’s 480 million products. We all still shop at them though, because they carry the essentials. They compete by carrying the essentials consistently.

For the foreseeable future I am not going to be able to match the execution of creative shots achieved by players such as Phil Mickelson and Bubba Watson. I don’t have the time nor the talent. If I pare my shot selection down to the essentials, I think I can come much closer though.

That’s why I’ve decided on 15 shots that I’m going to master this summer. Whenever I practice, I’ll practice these 15 shots. Whenever I play, I’ll try to hit some variation of these 15 shots on every swing. If the strategy works, 99% of the time I’ll be hitting a shot that I’ve practiced and pre-qualified for the situation, with a goal in mind for each shot.

Here is the list of shots I’ve chosen, along with the tolerances (left-right) I think it’s feasible to achieve for each, and what I think they’re good for.

  1. 230-yard drive. Carries just about anything. Long enough to reach most par-4s in 2. Easy enough to be consistent. Margin-of-error of +- 20 yards L/R
  2. 215-yard hybrid. For long approach shots, limited drives. Margin-of-error of +- 10 yards L/R
  3. 190-yard 6-iron. Par-3s, Par-5 middle shots. Super-straight. Margin-of-error of +- 8 yards L/R
  4. 165-yard 8-iron. Par-3s, mid-range approach shots and layups. Margin-of-error of +- 8 yards L/R
  5. 140-yard Pitching Wedge: Soft, short approach shots. Short par-3s. Margin-of-error of +- 6 yards L/R
  6. 120-yard Gap wedge: Softer, higher approach shot. Margin-of-error of +- 4 yards L/R
  7. 100-yard 56-degree: High, short-range approach shot. Margin-of-error of +- 4 yards L/R

  8. 50-yard flop: Get over bunkers, small water hazards, and land downhill shots onto fast greens. Margin-of-error of +- 3 yards L/R

  9. 50-yard runner. Safely roll your ball to the cup. Play breaks and bounces. Get under trees. Margin-of-error of +- 3 yards L/R
  10. 20-yard hop-n-stop: Mid-height chip. A little bit of height to land at your chosen spot, slow down, but less than a flop. Margin-of-error of +- 2.5 yards L/R

  11. 10-yard flop: Stop chips near the flag with consistency. Margin-of-error of +- 2 yards L/R

  12. Basic (stock) bunker shot: Margin-of-error of < +- 4 yards L/R
  13. 25-foot Lag putt: Get within 3 feet. Margin-of-error of < +- 1.5 yards L/R

  14. 10-foot mid-range putt: Get within 3 feet. Margin-of-error of < +- 1.0 yards L/R

  15. 3-footer: Hit all of these. Margin-of-error of < 0.10 yards L/R

The drive is much shorter than my maximum capability. On a good day, I can consistently put it out there 260. Driver consistency has always been a challenge for me though. If I can develop a driver swing that goes 230 in a consistently straight direction (as defined by my margin of error) I’d be perfectly happy.

Shots number 2-7 give me a wide array of second-shot options, as well as driving options for par threes. On shorter par-4s I see pairing #2 as a drive and #3 as an approach shot, or #1 as a drive and #6 as an approach shot. These options give me the flexibility to play anything from 445 to 240 in two shots, with a high probability of landing it on the green. Shots #3-5 also serve as consistent second shots on par-5s, allowing me to hit to a spot where I can use #5-7 to approach.

With the three included putts, the goal is to 2-putt 100% of the time. #13 is the putt I expect to see most often from approach shots #3-5 (themselves my most common approach shot). Practicing this provides me a practiced putt for confidently getting within range of #15. #14 ‘s goal is also to get within range of #15, but it is more likely to result from shots 7-10 (the short game). #15 will be my most practiced putt. I’m cheating a bit with 15, because it represents all  putts from 3 feet and in, not one specific putt. It does represent a specific type of putt that I expect to see a lot though, and can feasibly practice well for.

Shots #8-12 represent my stock short-game shots for when I miss the green. Yes, these four shots cover just three distances, but they should provide me with just enough flexibility to consistently provide myself with #13 and #14 putts (and in the case of the short chip, #11, hopefully lots of #15 putts). One of the hardest shots in golf is the arbitrary-length chip, the 27-footers, the 52-footers, because I don’t specifically practice these lengths, so every time I approach one I need to devise a new way of playing it. Playing to a specific, well-practiced distance should yield better results, even if it isn’t a 100% accurate distance. Being 10-15 feet from the cup and putting 80% of the time is better than being 5 feet from the cup 30% of the time, but off the green another 30% of the time.

For now this is just an intellectual exercise. I haven’t had the range time to actually practice these shots or test them out. I do think that limiting oneself to 15 specific shots provides great opportunity though. It simplifies on-course decisionmaking (and decreases mental uncertainty – since you’ve played each shot dozens of times before). It provides simple guidance in practice, and in warming up. It’s just a theory, but I think it might work.

——— Some Theoretical holes:

Thinking through my home-course:

  1. A dogleg-right 522 yard par-5. #1. 230-yard drive. #3. 190-yard 6-iron. #7. 100-yard 56-degree wedge. This should leave us within range of a #14 or #15 putt for birdie.
  2. A straight 372 yard par-4. #2. 215-yard hybrid. #4. 165-yard 8-iron. This should leave us within range of a #14 or #15 putt for birdie.
  3. 201-yard par-3. Either #2 or #3 based on wind. It’s 201 to the center, but only 190-ish to the front, and maybe 220 to the back. Either shot should leave a #13 or #14 putt for birdie.
  4. 389-yard par-4, down 30 yards, then up 15. Call it essentially 370. The #2, #4 combo from hole 2 should work just as well. If the wind’s blowing, maybe 1-4 or 3-3 instead.
  5. 326-yard par-4, uphill 30 yards. #2 leaves about 140 (accounting for elevation). #5 should leave us putting.

I’ll stop there, but I think my point is evident: even 15 shots is highly versatile, and it’s much easier to prepare 15 good shots than 100, or 1000. Now, to actually play and put these into practice!

—– Addendums:

  •  Yeah, I know I didn’t invent the idea of “stock” shots, to be clear. This is just my own expansion of the idea to an all-encompassing course-management strategy.
  • Open question: As distances change (as I get stronger or weaker) should the clubs change, or the shot length? I’m tempted to say the following for now: +- 10 yards, stick with the same club. The value of consistently practicing the same club will outweigh the benefit of switching. Once a club is 10 or 20 yards longer or shorter than its designated range, it’s time to consider a change.
  • On the driver: If I only need 230-240 yards, do I even need a driver? This summer I was already planning to demo drivers, but now I’m also going to look for a 3-wood I can consistently hit 230-240 straight.
  • Why 15 shots? It seemed like a reasonable number to practice/master in a summer and consistently keep in my head. Over a longer period I could see increasing it to 20, 25 if you’re really serious and good at memorization. More than that is overkill though. If I could add shots, I would probably add a longer driver with a larger margin of error for long holes with wide-open fairways, I would space out the mid-length approach shots more, and I would add another pitch shot and another putt.
  • It’s not clear how specialty shots play into this yet (i.e through trees, fairway bunkers). This system should hopefully reduce the need for such shots, but I think that in most scenarios you can still use these 15 shots, with tiny adjustments. Fairway bunkers would just be stock shots played towards the back of one’s stance, with some allowance for the size of the bunker lip. From trees, the 50-yard runner (#9) and a slightly modified hybrid (#2) are good options.
  • Potential App idea: If this system works, it would be super-simple to code up a little pocket caddy. I could enter in the length of the hole and receive a few possible game plans combining these shots to reach the target distance. It wouldn’t account for hazards or carries, but it would be a nifty little tool.

 

Learning to Ship Again

Posted on

Lately, I’ve done a lot of little experiments. Some, like my quest to fix restaurant reviews, I’ve published here. I haven’t really shipped any long-term projects since the fall though (I launched a chatbot somewhere around November).

Shipping takes concentration, motivation, and a thick skin. You need to be dedicated to getting your product out there, finding users, and listening to feedback. And often it’s worth it. It’s rewarding to see a product/project do well.

When a long-term projects flops though (the chatbot did), the energy you burned can leave you exhausted. “All that for nothing?” I was so certain the chatbot would do well. I worked on it for months. I tested it, and gathered feedback. And it flopped.

So I huddled with my laptop. I worked on lots of little things that interested, and avoided baring my soul in the form of a product. It was a refreshing period of experimentation, but I know that eventually I have to get back on my horse and launch something bigger than a little algorithm.

I’ve hinted on this blog as to what that project is, but I look forward to finally launching it (and launching a project again) in a few weeks.