Joe Conley Tagged pgatour Random thoughts on technology, business, books, and everything in between jpc2.org/name/pgatour Atomic Events and PGAStream <p>Cal Newport, in his book <a href="https://www.goodreads.com/book/show/13525945-so-good-they-can-t-ignore-you?from_search=true&amp;search_version=service">So Good They Can’t Ignore You</a>, uses narratives from successful careers to argue, among other things, that “to maximize your chances of success, you should deploy small, concrete experiments that return concrete feedback”. Iterating quickly on these small bets can lead to inspiration, increase your chances for success and open up new possibilities. One recent wager of mine, <a href="http://www.twitter.com/birdie_bot">BirdieBot</a>, tweets every birdie (or better) for the current PGATour event. I built this with no specific purpose in mind, just wanted to exercise some interesting frameworks and tools (like my own <a href="http://www.datacombinator.com">DataCombinator</a>). One concrete set of feedback I noticed right away is the audience it soon found: Daily Fantasy Sports (DFS) players. However, I noticed the follower count would tend to fluctuate wildly, spiking up and then going almost immediately back down. The reason became quite obvious: the bot, like Twitter, is a firehose of information (I don’t even follow the bot). So, the logical next step (<a href="http://www.josephpconley.com/2016/02/10/monkey-island-innovation.html">adjacent possible</a> time) would be, how could I <strong>filter</strong> BirdieBot to only show the players and scores I cared about?</p> <p>This leads us to bet #2, <a href="http://pga.jpc2.com">PGAStream</a>. This looks very similar to Twitter, yet its stream is a record of every hole completed from every player in the current PGATour event (alongside the leaderboard). The novelty here is that you can filter the stream by player and by score type. Now the DFS players can create a stream with their stable of golfers. Or fans who want to see the best and worst holes can filter scores to only show the extreme outliers. Or maybe there’s other applications I haven’t thought of, especially as I add more filter criteria and track more events of interest like hot/cold streaks or if a golfer is on 59 watch.</p> <p><img src="/assets/PGAStream.png" class="img-responsive img-rounded" alt="PGAStream" /> <br /></p> <p>The bigger point here is that users should be able to customize their data consumption down to an atomic level. The approach should be similar to Excel, which has a few simple concepts yet can act as a <a href="http://www.joelonsoftware.com/items/2012/01/06.html">horizontal platform</a> solving an entire universe of present and future problems. As consumers of information, however, we get little to no control over how we digest data. It’s a very passive experience, we’re constrained by software’s functions which usually only benefit the software itself (think sharing or retweeting on a social network). I want to build and use software that empowers users to have complete control over their data at a very granular level. PGAStream is a small start, I’m hoping to extend this idea to other realms (economic indicators, stock quotes/alerts) such that all of our media consumption can be customized.</p> <p>Tech side note: I figured I’d expand my horizons a bit and learn some new tech in the process, so I built it using Python/Django. Having spent a lot of time in the Play/Scala world, I do appreciate the “batteries included” approach in Python and Django. I certainly get a better sense of the pros and cons of a different language by actually using it rather than reading someone’s blog post, so I’d encourage developers to constantly experiment with other languages. Learning a new language/framework can help revisit your assumptions, understand design decisions better, and maybe spark interest in a new way of thinking.</p> <p>You’re welcome DFS folks, let me know if you have any feedback!</p> Fri, 08 Apr 2016 00:00:00 +0000 jpc2.org/2016/04/08/atomic-events-pgastream.html jpc2.org/2016/04/08/atomic-events-pgastream.html 2014 PGA Championship Preview <p>The <a href="http://www.pga.com/pgachampionship/">2014 PGA Championship at Valhalla Golf Club</a> starts tomorrow amid several interesting storylines. Will Tiger be healthy enough to play (and if so, will he tell us before our fantasy draft starts)? Will Rory continue his dominance and retain his World Number 1 status, or will Adam Scott parlay his strong majors performance and regain the top spot? Or will a past champion like Padraig Harrington or Y.E. Yang reclaim Glory’s Last Shot?</p> <p>As an administrator (and participant) of a Golf Majors pool, I like to know the <a href="http://www.swingstats.com/majors/draft">world rankings and betting odds for the field</a> to help inform the draft and facilitate automated picks. For this last major, I also wanted to know how the field has performed in this year’s prior majors. Here’s how they’ve fared in 2014 (must have played in at least one major).</p> <table class="ui striped compact table"> <thead> <tr> <th>Player</th> <th>The Masters</th> <th>U.S. Open</th> <th>British Open</th> </tr> </thead> <tbody> <tr><td>Rickie Fowler</td> <td>T5</td> <td>T2</td> <td>T2</td></tr> <tr><td>Adam Scott</td> <td>T14</td> <td>T9</td> <td>T5</td></tr> <tr><td>Jim Furyk</td> <td>T14</td> <td>T12</td> <td>4</td></tr> <tr><td>Rory McIlroy</td> <td>T8</td> <td>T23</td> <td>1</td></tr> <tr><td>Jimmy Walker</td> <td>T8</td> <td>T9</td> <td>T26</td></tr> <tr><td>Justin Rose</td> <td>T14</td> <td>T12</td> <td>T23</td></tr> <tr><td>Jordan Spieth</td> <td>T2</td> <td>T17</td> <td>T36</td></tr> <tr><td>Henrik Stenson</td> <td>T14</td> <td>T4</td> <td>T39</td></tr> <tr><td>Chris Kirk</td> <td>T14</td> <td>T28</td> <td>T19</td></tr> <tr><td>Matt Kuchar</td> <td>T5</td> <td>T12</td> <td>T54</td></tr> <tr><td>Jason Day</td> <td>T21</td> <td>T4</td> <td>T58</td></tr> <tr><td>Francesco Molinari</td> <td>50</td> <td>T23</td> <td>T15</td></tr> <tr><td>Louis Oosthuizen</td> <td>25</td> <td>T40</td> <td>T36</td></tr> <tr><td>Martin Kaymer</td> <td>T31</td> <td>1</td> <td>70</td></tr> <tr><td>Brandt Snedeker</td> <td>T37</td> <td>T9</td> <td>T58</td></tr> <tr><td>Bill Haas</td> <td>T21</td> <td>T35</td> <td>T51</td></tr> <tr><td>Kevin Stadler</td> <td>T8</td> <td>T63</td> <td>T39</td></tr> <tr><td>Stewart Cink</td> <td>T14</td> <td>T54</td> <td>T47</td></tr> <tr><td>Gary Woodland</td> <td>T26</td> <td>T52</td> <td>T39</td></tr> <tr><td>Keegan Bradley</td> <td>CUT</td> <td>T4</td> <td>T19</td></tr> <tr><td>Thomas Bjorn</td> <td>T8</td> <td></td> <td>T26</td></tr> <tr><td>Graeme McDowell</td> <td>CUT</td> <td>T28</td> <td>T9</td></tr> <tr><td>Victor Dubuisson</td> <td>CUT</td> <td>T28</td> <td>T9</td></tr> <tr><td>Sergio Garcia</td> <td>CUT</td> <td>T35</td> <td>T2</td></tr> <tr><td>Ian Poulter</td> <td>T21</td> <td>T17</td> <td>CUT</td></tr> <tr><td>Stephen Gallacher</td> <td>T34</td> <td>CUT</td> <td>T15</td></tr> <tr><td>Phil Mickelson</td> <td>CUT</td> <td>T28</td> <td>T23</td></tr> <tr><td>Steve Stricker</td> <td>T31</td> <td>T21</td> <td></td></tr> <tr><td>Brendon Todd</td> <td></td> <td>T17</td> <td>T39</td></tr> <tr><td>Hunter Mahan</td> <td>T26</td> <td>CUT</td> <td>T32</td></tr> <tr><td>Billy Horschel</td> <td>T37</td> <td>T23</td> <td>CUT</td></tr> <tr><td>Ryan Moore</td> <td>CUT</td> <td>T48</td> <td>T12</td></tr> <tr><td>Brendon de Jonge</td> <td>T37</td> <td>T28</td> <td>CUT</td></tr> <tr><td>John Senden</td> <td>T8</td> <td>CUT</td> <td>T58</td></tr> <tr><td>Kevin Na</td> <td></td> <td>T12</td> <td>T54</td></tr> <tr><td>Darren Clarke</td> <td>T44</td> <td>CUT</td> <td>T26</td></tr> <tr><td>Brooks Koepka</td> <td></td> <td>T4</td> <td>T67</td></tr> <tr><td>Hideki Matsuyama</td> <td>CUT</td> <td>T35</td> <td>T39</td></tr> <tr><td>Thongchai Jaidee</td> <td>T37</td> <td>CUT</td> <td>T39</td></tr> <tr><td>Zach Johnson</td> <td>CUT</td> <td>T40</td> <td>T47</td></tr> <tr><td>Russell Henley</td> <td>T31</td> <td>T60</td> <td>CUT</td></tr> <tr><td>Kevin Streelman</td> <td>T42</td> <td>CUT</td> <td>T54</td></tr> <tr><td>Paul Casey</td> <td></td> <td>T56</td> <td>T47</td></tr> <tr><td>Thorbjorn Olesen</td> <td>T44</td> <td></td> <td>T64</td></tr> <tr><td>Bubba Watson</td> <td>1</td> <td>CUT</td> <td>CUT</td></tr> <tr><td>Jonas Blixt</td> <td>T2</td> <td>CUT</td> <td>CUT</td></tr> <tr><td>Erik Compton</td> <td></td> <td>T2</td> <td>CUT</td></tr> <tr><td>Miguel Angel Jimenez</td> <td>4</td> <td>CUT</td> <td>CUT</td></tr> <tr><td>Marc Leishman</td> <td>CUT</td> <td></td> <td>T5</td></tr> <tr><td>Charl Schwartzel</td> <td>CUT</td> <td>CUT</td> <td>T7</td></tr> <tr><td>Lee Westwood</td> <td>7</td> <td>CUT</td> <td>CUT</td></tr> <tr><td>Edoardo Molinari</td> <td></td> <td></td> <td>T7</td></tr> <tr><td>Shane Lowry</td> <td></td> <td>CUT</td> <td>T9</td></tr> <tr><td>Robert Karlsson</td> <td></td> <td></td> <td>T12</td></tr> <tr><td>Jamie Donaldson</td> <td>T14</td> <td>CUT</td> <td>CUT</td></tr> <tr><td>J.B. Holmes</td> <td></td> <td>T17</td> <td>CUT</td></tr> <tr><td>George Coetzee</td> <td></td> <td></td> <td>18</td></tr> <tr><td>Angel Cabrera</td> <td>CUT</td> <td>CUT</td> <td>T19</td></tr> <tr><td>Matteo Manassero</td> <td>CUT</td> <td></td> <td>T19</td></tr> <tr><td>Chris Wood</td> <td></td> <td></td> <td>T23</td></tr> <tr><td>Gonzalo Fernandez-Castano</td> <td>T26</td> <td>CUT</td> <td>CUT</td></tr> <tr><td>Joost Luiten</td> <td>T26</td> <td>CUT</td> <td>CUT</td></tr> <tr><td>Ben Martin</td> <td></td> <td></td> <td>T26</td></tr> <tr><td>Brian Harman</td> <td></td> <td></td> <td>T26</td></tr> <tr><td>Steven Bowditch</td> <td>T26</td> <td></td> <td></td></tr> <tr><td>Kenny Perry</td> <td></td> <td>T28</td> <td></td></tr> <tr><td>David Hearn</td> <td></td> <td></td> <td>T32</td></tr> <tr><td>K.J. Choi</td> <td>T34</td> <td></td> <td>CUT</td></tr> <tr><td>Patrick Reed</td> <td>CUT</td> <td>T35</td> <td>CUT</td></tr> <tr><td>Ernie Els</td> <td>CUT</td> <td>T35</td> <td>CUT</td></tr> <tr><td>Branden Grace</td> <td>CUT</td> <td></td> <td>T36</td></tr> <tr><td>Vijay Singh</td> <td>T37</td> <td></td> <td></td></tr> <tr><td>Marc Warren</td> <td></td> <td></td> <td>T39</td></tr> <tr><td>Koumei Oda</td> <td></td> <td></td> <td>T39</td></tr> <tr><td>Nick Watney</td> <td>T44</td> <td>CUT</td> <td>CUT</td></tr> <tr><td>Webb Simpson</td> <td>CUT</td> <td>T45</td> <td>CUT</td></tr> <tr><td>Danny Willett</td> <td></td> <td>T45</td> <td>CUT</td></tr> <tr><td>Harris English</td> <td>CUT</td> <td>T48</td> <td>CUT</td></tr> <tr><td>Jason Dufner</td> <td>CUT</td> <td>CUT</td> <td>T51</td></tr> <tr><td>Tom Watson</td> <td>CUT</td> <td></td> <td>T51</td></tr> <tr><td>Seung Yul Noh</td> <td></td> <td>T52</td> <td></td></tr> <tr><td>Matt Jones</td> <td>CUT</td> <td>CUT</td> <td>T54</td></tr> <tr><td>Ryan Palmer</td> <td></td> <td>CUT</td> <td>T58</td></tr> <tr><td>Luke Donald</td> <td>CUT</td> <td>CUT</td> <td>T64</td></tr> <tr><td>Boo Weekley</td> <td>CUT</td> <td>66</td> <td>CUT</td></tr> <tr><td>Charley Hoffman</td> <td></td> <td></td> <td>T67</td></tr> <tr><td>Tiger Woods</td> <td></td> <td></td> <td>69</td></tr> <tr><td>Matt Every</td> <td>CUT</td> <td>CUT</td> <td>71</td></tr> <tr><td>Roberto Castro</td> <td>CUT</td> <td>CUT</td> <td>CUT</td></tr> <tr><td>Y.E. Yang</td> <td>CUT</td> <td>CUT</td> <td>CUT</td></tr> <tr><td>Graham Delaet</td> <td>CUT</td> <td>CUT</td> <td>CUT</td></tr> <tr><td>Pablo Larrazabal</td> <td></td> <td>CUT</td> <td>CUT</td></tr> <tr><td>Bernd Wiesberger</td> <td></td> <td>CUT</td> <td>CUT</td></tr> <tr><td>Hyung-Sung Kim</td> <td></td> <td>CUT</td> <td>CUT</td></tr> <tr><td>Scott Stallings</td> <td>CUT</td> <td></td> <td>CUT</td></tr> <tr><td>Ross Fisher</td> <td></td> <td></td> <td>CUT</td></tr> <tr><td>Padraig Harrington</td> <td></td> <td></td> <td>CUT</td></tr> <tr><td>Mikko Ilonen</td> <td></td> <td></td> <td>CUT</td></tr> <tr><td>Richard Sterne</td> <td></td> <td></td> <td>CUT</td></tr> <tr><td>Geoff Ogilvy</td> <td></td> <td>CUT</td> <td></td></tr> <tr><td>Shawn Stefani</td> <td></td> <td></td> <td>CUT</td></tr> <tr><td>Chesson Hadley</td> <td></td> <td></td> <td>CUT</td></tr> <tr><td>Brian Stuard</td> <td></td> <td>CUT</td> <td></td></tr> <tr><td>Chris Stroud</td> <td></td> <td></td> <td>CUT</td></tr> <tr><td>Cameron Tringale</td> <td></td> <td></td> <td>CUT</td></tr> <tr><td>Fredrik Jacobson</td> <td></td> <td></td> <td>CUT</td></tr> <tr><td>Kiradech Aphibarnrat</td> <td></td> <td></td> <td>CUT</td></tr> <tr><td>Rafael Cabrera-Bello</td> <td></td> <td></td> <td>CUT</td></tr> <tr><td>Anirban Lahiri</td> <td></td> <td></td> <td>CUT</td></tr> <tr><td>Tim Clark</td> <td>CUT</td> <td></td> <td></td></tr> <tr><td>George McNeill</td> <td></td> <td></td> <td>CUT</td></tr> <tr><td>Tommy Fleetwood</td> <td></td> <td></td> <td>CUT</td></tr> <tr><td>Brendan Steele</td> <td></td> <td></td> <td>CUT</td></tr> <tr><td>John Daly</td> <td></td> <td></td> <td>CUT</td></tr> <tr><td>Ryo Ishikawa</td> <td></td> <td></td> <td>CUT</td></tr> </tbody> <caption class="text-left"><b>Best Majors Performers in 2014</b></caption> </table> <p>No big surprises here. Rickie Fowler has been sniffing at a major championship all year, falling short to two dominant performances by Kaymer and McIlory. Some other folks have been quietly consistent, like Jimmy Walker and Chris Kirk (haven’t heard their names on the Golf Channel all week). I was surprised to see normally consistent players turn in poor performances for the year (looking at you Jason Dufner and Angel Cabrera).</p> <p>Hope this information helps your golf handicapping/gambling purposes! If you have any other suggestions for stats/blog posts please let me know!</p> Wed, 06 Aug 2014 00:00:00 +0000 jpc2.org/2014/08/06/pga-championship-preview.html jpc2.org/2014/08/06/pga-championship-preview.html