Predicting NBA Games Part 3: The Model

This is the third article in a series on predicting NBA Games. Just FYI, this post will be the most technical to date, but I’m more than happy to answer any questions you may have.

Links:
Repository
Predicting NBA Games Part 1: Announcement
Predicting NBA Games Part 2: The How and the Why

Intro

In this post, we’ll overview applied linear regression. We’ll discuss the data set, model, model validation, and results. Consider this an abridged version of a stats 101 section on regression. It won’t cover every detail, but it will touch on the major points.

We will compare the model’s results to betting lines. The betting lines serve as alternative hypotheses we can compare our predictions to. I have not used the model to bet on any games, but you may if you’d like.

To see if we can beat Vegas, this project asks two questions: In a match-up between two NBA teams, which team will win and by how much? And, how does that prediction compare against a betting line? To finish, we’ll examine the 2019 NBA finals where the Raptors won the championship over the Golden State Warriors. Did the model beat Vegas? Read to the bottom to find out.

Model Outline

The regression uses a proven data set and simple model. The data set is derived from Dean Oliver’s four factors. Oliver’s four factors were among the first in basketball’s “moneyball” revolution, and they’ve been solid predictors of teams’ win totals for a season. I’ve not seen an example of the four factors used to predict individual games. So, it’s an opportunity to try a proven data set on a new problem.

The four factors are shooting, rebounding, turnovers, and free throws. Combined, they capture most outcomes of a possession in basketball. Exceptions, like when a team holds the ball at game’s end, are rare.

Each of the four factors is measured by an associated statistic:

FactorStatistic
ShootingEffective Field Goal Percentage (eFG%)
ReboundingRebound Percentage (Offensive: ORB%, Defensive: DRB%)
TurnoversTurnover Percentage (TOV%)
Free ThrowsFree throw rate (FTR)

Basketball Reference explains the factors and provides the formula for these statistics.

Though we call these statistics the “Four Factors”, there are actually eight factors. The Warriors have a turnover percentage, but they also force a percentage of turnovers from their opponents. Thus, we have offensive and defensive turnover percentage factors. Shooting and free throws work the same way. Rebounding is divided into offensive and defensive rebound percentage. Each team then has eight factors which serve as variables in the model.

However, to predict a single game, we need to compare the eight factors from two teams. We then have 16 variables for each game. Yet, we are still missing a key variable: home field advantage. In the NBA, the home team wins 60% of the time, so home court should be in the model. To account for home court, I coded each team’s factors as home (h) or away (a) for each game. With this inclusion, our explanatory variables, with OPP. short for opponent, are as follows:

Home VariablesAway Variables
eFG% H eFG% A
ORB% H ORB% A
TOV% H TOV% A
FTR H FTR A
Opp. eFG% H Opp. eFG% A
DRB% H DRB% A
OPP. TOV% H OPP. TOV% A
OPP. FTR H OPP. FTR A

We use these explanatory variables to determine the Margin of Victory (MOV) for the home team. The away team MOV is the inverse of home MOV. Finally, we have 1325 games from the 2019-2020 NBA season, so N = 1325. With the data set determined, here’s our sample linear model:

\hat{Y_i} = \hat{\beta_0} + \hat{\beta_1} X_i + \dots +  \hat{\beta_1} X_{16} + \hat{\epsilon_i} \ where \ \epsilon_i \approx N(0, \sigma^2)

That formula means we assume the home margin of victory, Y, of each game is the linear combination of an intercept, the sixteen factors (eight per team), and their coefficients, \beta  , plus error \epsilon  .

Results Overview

To evaluate the model, we follow several lines of inquiry. We overview the outputs, check the assumptions of regression, and evaluate the model’s prediction accuracy.

First, the P-value of the F-statistic is approximately 0. This indicates the model is a better estimate of MOV than the average MOV. We know our variables make for effective predictions of a team’s total wins during a season, so it would be strange if the F-statistic was not significant for individual games.

Next, the r-squared (R^2) value of the regression is 0.219 while the adjusted R^2 is 0.209. These stats are estimates of the proportion of variance in MOV captured by the regression. We can read adjusted R^2 as, “The regression captures 20.9% of the variation in home team margin of victory in the data set”

Adjusted R^2 is the preferred statistic. If we throw random variables into the regression, some will randomly help predict MOV. To account for this, adjusted R^2 penalizes the regression for having lots of variables.

Let’s see how the variables affect our predictions. In the following table, we have summary information for each variable. The expectation column holds my expectation for the direction of each coefficient. For example, I expect home effective field goal percentage (eFG%_h) to increase the margin of victory. If it didn’t, we may need to further inspect the model. The coefficients define how a change in a variable would be expected to affect the MOV. In the final two columns, the P-value of each coefficient and it’s significance is shown.

VariableExpectationCoefficientP-Valuep<0.05
constNull -82.860.29
eFG%_h182.930
TOV%_h         -2.160
ORB%_h          0.770
FTR_h         81.740
opp_eFG%_h   -113.220.004
opp_TOV%_h      1.780
DRB%_h          0.520.088
opp_FTR_h    -53.730.101
eFG_pct_a       -153.780
TOV%_a          1.200.046
ORB%_a         -0.250.212
FTR_a          8.000.703
opp_eFG%_a    167.020
opp_TOV%_a     -0.610.215
DRB%_a-0.240.433
opp_FTR_a-6.760.836

Let’s start with the expectations. This is a sanity check to ensure each variable affects MOV how we expect it to. Fifteen out of sixteen variables meet our expectations. That’s a good sign. The exception is FTR away which is +8 versus our negative expectation. I’m not worried about this for three reasons:

  1. The 95% confidence interval for free throw rate is -33 — 48. The true effect of FTR could be negative as expected.
  2. I can create a counterfactual scenario where FTR is positive. The Warriors defense could be skilled at fouling teams when they would otherwise have a wide open layup. This would drop the expected points from the shot attempt and lead to a beneficial outcome from a foul. I cannot create a similar counter factual for eFG%.
  3. Prior research indicates FTR is the least impactful of the four factors and the most likely to have an effect near zero.

Next, I’m inclined to say p-values don’t matter in this context though I welcome alternate interpretations. We are not running an experiment to evaluate if eFG% has a significant effect on MOV. Rather, we aim to predict the outcomes of a set of games. A variable’s significance does not guarantee it’s a better predictor than a less significant alternative..

So far, the model appears to be in good shape.

The Assumptions of Regression

The formula for regression makes four assumptions: Fixed X, Independence, Homoscedasticity, and Normality. To determine if a regression is the right fit for the data, we need to check each assumption.

We have no reason to expect the fixed X or independence assumptions to be violated. Thus, we’ll check them as a group. Then, we’ll handle homoscedasticity and normality. The homoscedasticity and normality assumptions play a key role in making accurate predictions, so we will explore them in more depth.

Fixed X and Independence

The fixed X assumption assumes our variables are measured accurately. If the Raptors eFG% is recorded as 52%, we believe it is actually 52%. We’d have to track this data manually to see if the data’s correct, so I’ll go ahead and trust Basketball Reference gets the stats right. Fixed X: ✅.

Independence assumes there’s not a correlation between residuals. Independence is most important to check when the data is across time or space. Fortunately, our data is neither. But, we still evaluate the independence assumption to make sure it holds.

We’ve two methods for evaluating independence: the Durbin-Watson statistic and a residual independence plot. The Durbin-Watson statistic is a measure of correlation between consecutive residuals. It ranges from 0-4, and 2 indicates independence is met. In our model, the Durbin-Watson statistic equals 1.975. That number is close to 2, so we take that as one sign we’ve met the independence assumption.

The residual independence plot visualizes the relationship between row number and residuals. Does the 121st game in a season correlate with the 122nd? We can see in the residual independence plot below that there’s no clear pattern between row numbers and residuals. That’s exactly what we’re looking for.

Figure 1: The row numbers don’t seem to correlate with the residuals. A good sign we’ve met the independence assumption.

Both the Durbin-Watston statistic and the residual independence plot indicate we’ve met the independence assumption. Independence: ✅.

Homoscedasticity and Normality

Homoscedasticity and normality are related. Together, they make the last term in our linear model: \epsilon_i \approx N(0, \sigma^2) .

Let’s break that down. \epsilon_i represents our residuals. We presume that the residuals are approximately normally distributed, signified by N. In the parentheses, 0 is the mean of the normal distribution, and thus, the residuals. The second term, \sigma^2 , is the variance of the normal distribution.

It’s a property of the regression equation that the mean of the residual distribution is zero. However, the variance can be different for every dataset. The variance determines the width of the normal distribution. Typically, we discuss the width of the normal curve in terms of standard deviation rather than variance. To calculate standard deviation, take the square root of the variance. Thus:

s = \sqrt{\sigma^2}

where s = standard deviation.

In Figure 2, we see how different standard deviations affect the width of normal curves.

Figure 2: Comparison of normal probability density functions with standard deviations of 5 and 20.

In practice, normal curves are centered on the regression line. If our regression predicts the Raptors to beat the Warriors by 15, the normal curve is centered on 15. Here’s where betting lines come in. Let’s say the line is Warriors -5. That means Vegas expects the Warriors to win by 5 (here’s a more thorough explanation of betting lines). The line is 20 points lower than our prediction of Raptors +15. If we used the large standard deviation blue distribution, -20 would seem reasonable. However, if we use the skinny red distribution, -20 might surprise us.

As shown, we compare the distribution of our residuals to the betting line to estimate it’s likelihood. However, the comparison is only valid if the homoscedasticity and normality assumptions are met.

Rather variance is large or small, the homoscedasticity assumption asserts that big predictions (+22), small predictions (-2), or any other prediction (-10) all have the same variance. Referencing figure 2, the blue or red distribution may be valid, but only if the chosen distribution applies to all predictions.

Formally, the homoscedasticity assumption assumes the variance of Y is equal for all values of X. In this model, that means the variance in MOV is the same for every prediction of the model. Residuals are the difference between the true MOV, Y, and our prediction, so we look at the residuals to gauge homoscedasticity.

To evaluate homoscedasticity, we use a residual versus fitted values plot. We look for areas where our predictions are correlated with the error. For example, if every game we predicted as +5 had a real MOV of -6, the homoscedasticity assumption would be violated. The ideal residuals versus fitted plot tends to show an ellipse. And as shown in Figure 2, most of the residuals falls within an ellipse.

Figure 3: Visualizations of our residuals. They appear homoscedastic and follow a normal distribution (red curve).
*The purple ellipse is shown for illustrative purposes only. It does not reflect any property of the residuals.
**In the residual distribution, the X axis for the histogram and normal curve are offset (technical issues: 😑).

Yet, some points fall outside of the ellipse. Are these problematic? The answer is subjective, but I think not. The residuals outside of the ellipse for fitted values less than zero are my only concern. Is there more variance for negative predictions? Maybe. But with just four points out of 1325, I don’t think there’s enough evidence to claim the homoscedasticity assumption has been violated. Thus, homoscedasticity: ✅.

You may have figured out the normality assumption already. But formally, normality assumes the errors are normally distributed for every X value.

We’ve already presented some evidence of normality in figure 3. The residual distribution shows the residuals appear to follow a normal distribution. If the residuals were skewed or bi-modal, we may suspect a violation of normality.

The normal QQ plot, as shown in figure 4, also tests normality. The QQ plot visualizes how close the data follows a normal distribution. If the data is perfectly normal, it will lie on the red line.

Figure 4: Normal QQ Plot. Our values hem close to the red diagonal line indicating normality.

Our dataset isn’t perfectly normal, but it’s darn close. In my estimation, the QQ and residual distribution plots are sufficient to prove normality of the residuals. Thus, normality: ✅.

We’ve validated the assumptions of regression, so we’re confident we have the right linear model for predicting MOV. With the homoscedasticity and normality assumptions, we are confident that our residuals are normal with equal variance. With these assumptions met, we can evaluate a betting line’s likelihood in comparison to our prediction.

Making Predictions

Now, we get to test how well our model predicts games. Our predictions are only valid if the games we predict have not been included in the dataset. In short, if we predict a game on March 22nd, we only use data from March 21st and prior. The system that manages this was not made at the start of the season, so we have to use the subset of games it was available for.

We have two types of predictions we want to evaluate. First, we want to see how many of the winners and losers we correctly predict. We have data for 252 of these games. And second, we want to check our performance against a betting line. We have 248 examples to check against betting lines.

The model predicted the correct winner in ~64% of games. That’s a lot better than a coin flip. But remember, if we just predicted the home team to win every game, we’d be correct ~60% of the time. Does the model just pick the home team? If we take a second look at the coefficient table, the away team variables are less significant than their home team counterparts. But we’ve not checked for multicollinearity, an important step when assessing coefficient significance. We’ll have to answer this question another day

Our R^2 is relatively low at 0.219. That means 78% of the variance in MOV is explained by factors outside the model.

Figure 5: Actual MOV versus Predicted MOV

In Figure 5, we see actual outcomes have a wide dispersion around our predictions as we’d expect given our low R^2. The wide dispersion comes from the residual standard deviation which is approximately 13. If we applied a method to reduce the variance (standard deviation) of the model, we could achieve more precise estimates. However, we often introduce bias into the model when we reduce variance.

We can work through an example to put standard deviation into practical terms. Let’s predict the Raptors to beat the Warriors by 13, and ask what’s the likelihood the actual result is outside of +/- one standard deviation? Since the standard deviation is 13, we have a range, 0-26, within one standard deviation of our prediction. If we calculate the probability of an outcome outside of that range, the result is ~30%. And by extension, there’s a ~15% chance a team projected to win by 13 will lose.

What about the likelihood the score is within +/- 5 of the predicted results? That’s only a ~30% chance. Any given prediction is not likely to get the score right or even be close. If we want more precise estimates, we need something else: a different dataset, more data, a different model, etc.

What about our performance against a spread, a type of betting line? We beat the spread 52.5% of the time. That’s unexpected. Across 248 games, the model performed better than Vegas!

Here’s how a win or loss versus Vegas is calculated. If a spread predicts the Raptors to win by 10 and the model predicts the Raptors to only win by 5, we bet on the Warriors. That means every outcome from Raptors by 9 to Warriors by infinity is in the model’s favor. All outcomes from Raptors by 11 to Raptors by infinity is in Vegas’s favor. A push, where the line equals the result, would occur when the Raptor’s win by 10. That means it’s a tie and no one wins. This happened four times, and we drop these games from the data.

Above, we calculated the likelihood that a game’s MOV would fall in a certain range. With similar methods, we can estimate the likelihood of a spread. We use either a cumulative density function (CDF) or a survival function (SF). CDF ‘s or SF’s return the probability of all outcomes below (CDF) or above (SF) a given point in the distribution.

If the spread is greater than the estimate, such as in Figure 6, we use a SF to calculate the likelihood that the MOV is in Vegas’s favor. If the spread is less than the estimate, we use a CDF to calculate the expected that the MOV is in Vegas’s favor.

Figure 6: The green section is the CDF where the model would win a bet. The red section is the SF for when Vegas would win the bet.

We use a CDF or SF for every game. It could be the case that a betting line far from the estimate will be more likely to result in a win than a line close to the estimate. If one used this model to bet on games, this would be one way to choose which games to bet on. To verify this claim, we could employ logistic regression.

In summary, for every prediction, we expect the actual result to reside in a normal curve centered on the prediction with a standard deviation of 13. Then, we can use a CDF or SF to estimate the likelihood of outcomes in favor of the model or in favor of Vegas. When predicting winners and losers, we perform fairly well. And versus the spread, the model takes the right side of the bet 52.5% of the time.

The Finals

Now that we’ve described the model, let’s look at how it performed in the finals. The following table contains the results for each game:

Home TeamAway TeamLinePredictionP(line)H. MOVResult
1Raptors Warriors-10.50.459W
2Raptors Warriors 20.60.46-5W
3Warriors Raptors 5.53.20.43-14W
4Warriors Raptors 4.53.00.45-13W
5RaptorsWarriors 30.50.42-1W
6Warriors Toronto 2.52.80.49-4L

The model beat the spread in 5 out of 6 games in the finals. That’s good! It’s also lucky. Given the stated probabilities, we’d only expect to get the first 5 games right 5% of the time. In time, the results would regress to the mean. But what is that mean?

For available games, the model beat the spread 52.5% of the time. Is that the mean? That’s a higher number than I’d expect. I’ve a few suspicions that 52.5% may be an invalid number. For one, it seems strange a simple model would beat Vegas, and all its resources, with such consistency. There’s a large array of available variables that the model doesn’t account for: back-to-back games, injuries, trades, or roster changes for a start. Vegas, I’m sure, applies this additional data in their models.

In addition, it’s possible that I predicted games with data that already incorporated the results of prior games. This has to do with database work, and I’ll discuss that in a future post. For now, the results are what they are.

Conclusion

This is the only regression I’ve run that worked straight out of the box. Usually, one of the assumptions of regression gets broken, and it requires some change in the data or the model to fix it. But I’m to use a simple model if it works.

The linear model provides an initial proof of concept: Can we scrape the data, make predictions, and store the results in a database? Those questions have been answered. We can now use this sandbox environment to explore other models and ask new questions.

What will future models look like? For starters, we can change the dataset. The current model uses team statistics, but overall team statistics cannot account for the presence or absence of specific players. We can build a player based model, where we build our explanatory dataset on each player’s performance, to account for this. One obvious advantage is we can account for players’ injuries.

In addition, we need to split our data into training, cross-validation, and test sets. Because of database issues, this was not possible when the linear model was built (again, to be discussed later). Our predictions serve as a test set of sorts. Each day’s games provide us between 1 and 15 tests against games not in the data set. But when the day changes, new data is scraped and the regression rerun. The next day’s game are predicted with a new model. With a true test set, we may train the model on the first 800 games of the season then check its performance on the following 200.

Future methods will require cross-validation data. A cross validation data set is the data we use to decide between models. Once we’ve decided on a model via the cross-validation data, we test the chosen model on the test data. Here, we had one model and didn’t worry too much about if it was right or not. It just happened to be.

Those future models will be machine learning and neural network models. They will bring a new array of challenges. But for now, we’ve got the trusty stead of statistics — linear regression — ready to predict any NBA game we desire.

An NBA Prediction Model part 2: The How and Why

This is the second article in a series on predicting NBA Games:
Repository
An NBA Prediction Model Part 1: Announcement
An NBA Prediction Model Part 3: The Model

In this second piece on the NBA prediction model, we’ll look at the project from a broad perspective. First, I’ll describe how I chose this project and the project’s goals. Afterwards, I will describe the work system that helped me get this product to the finish line. (Inline: I wouldn’t say this is “finished”. But I have accomplished the goals I set out to achieve when I started.)

Project Goals

At the end of a phone overview last November, the interviewer asked for sample code to evaluate. I told him I’d pass something along. I took some old code from work, cleaned it up, and sent it along, but I knew it was not the code to advertise myself with. So, from that interview, I derived the first goal for this project: create code to serve as a resume. Every design choice in the project reflects that goal.

The first step was to choose a programming language. Most of my prior experience is in R, but I knew I’d write this project in Python from the start. Since Python and R are both in wide use in data science, knowledge of only one of the two languages may restrict one’s opportunities. Thus, Python was an easy choice. It builds my resume while also broadening my skill set.

With the language decided, the next step was to ask, “What does a data science product look like?” It’s an intentional choice to frame the project as a product. Products have a key property: they fix users’ problems. In this case, the project provides answers to three questions, “Which team will win? How much will they win by? And, how does that estimate compare to a betting line?” These are the questions I, as the primary user, want answers for.

To answer those questions effectively, the project must satisfy additional criteria. First, the questions require an automatic answer whenever the user asks for them. And second, the predictions must use the most up-to-date data. This adds a dynamic component where the state of the system changes over time. And to make the project dynamic, NBA Bet needs run on a database rather than spreadsheets.

Spreadsheets work fine if one needs predictions from a single set of data, but when the data changes daily, databases allow better quality control over the dataset. Databases are queryable which makes for easier data analysis, and features, like unique constraints and foreign keys, help maintain an interrelated data environment. Yet, this increased functionality also requires the database maintainer to, well, understand databases. Given little prior experience in the subject, effective database design became the hardest challenge in this project.

While the database design took some self-education, it’s a necessary component of a data science product. It reflects the infrastructure any data based company will have, and if this product is to serve as a resume builder, it should reflect real life situations. Further, by using databases, I’ve created an infrastructure that supports new additions over time. This is the result of designing a product. Had I asked the question, “How can I predict NBA games?” I could have created a model in a week. But that model would be neither scalable nor reproducible which makes zero sense for what amounts to a zero-marginal cost service, a service where each additional prediction is “free”.

Instead, I asked, “What does a data science product look like?” The result is a project which checks most every box one could ask a data scientist to check. It’s a flawed product, a minimum viable product, but it’s a scaffold something much bigger can be built on top of. It accomplishes the goals I set for myself when I started: Improve my skills and build my resume.

Work Process

Side projects, such as this one, usually end up in a side project graveyard. We all have our own personal graveyards where ideas go to die. Mine is disturbingly full. Yet, I intended to see this project through to the end, and I’ve done that. Why did this side project stay alive? I attribute the project’s survival to the work system I devised over the course of the project. The system has two key features. First, it “gamifies” work by parceling out small rewards as the project progresses. And second, it forces me to take time to evaluate the project’s status at regular intervals.

Like all new projects, my work on the project began with a flurry of excitement. I’d wake up, work on the project, and enjoy the process. But before long, I began to find problems I couldn’t solve. It’s this moment, where we run into our own limitations, that side projects so often die. They cease to be new and shiny and begin to resemble genuine work. Do we really want to spend nights and weekends on this hard thing after we do hard things all week? We don’t ever provide an explicit answer to that question, but we work on the side project less and less until it’s forgotten, a new tombstone in the side project graveyard.

That moment, when things got hard, birthed my work management system. I’m as happy with this system as I am with the rest of the project. I’ll use it, and refine it, for all projects going forward. The system is not a single document or program but rather a loosely connected hierarchy. There’s three parts: long term objectives, short term goals, and daily tasks.

If you’d like to view the whole process, this outline holds objectives and short term goals while this spreadsheet holds daily tasks. These documents will be explained in detail throughout this post.

The hierarchy helps establish a relationship between each level of the project. And like NBA Bet as a whole, the system seeks to answer a set of questions: What objectives do I need to hit long term, what are the intermediate goals to get there, and what tasks do I complete each day? Each objective is a broad and primary goal. Below objectives, goals are the steps required to complete the objective. My first objective was “Predict a single game.” Below that, some sub-goals for predicting a game were “scrape team data”, “scrape the season”, and “make a model”.

Objectives and goals are kept in a single document subdivided into current, completed, and future sections. The current section holds the current objective. As goals are completed, they’re highlighted green. When all goals are completed, the objective and its goals are then moved to the completed section. The completed section provides perspective on the progress the project has made. The future section is where I put to-do’s that are not associated with the current objective. New ideas pop up daily, but they often distract from the goal at hand, so rather than deviate from the current objective, new ideas are stored in the future section. The objective/goals section has begun to migrate to GitHub’s project feature which integrates with the code base and provides a progress bar. The progress bar, like the green highlights, helps visualize progress.

Daily tasks are recorded in a spreadsheet. Here’s an excerpt:

In this sheet, I keep track of each day I work and the time worked. When I sit down to work, I set a goal for the day. And when I’m done, I document my progress. The next day, I check my prior progress and decide on a new daily goal. Here, on February 23rd, I recognized a significant flaw in how I organized the database. On the 28th, after 16 hours of work, I had rewritten the database, and you can see my excitement.

The notes section provides space to add extra information. In this section, I pat myself on the back for good work on the 25th while I “face palm” on March 5th for not having a method to prevent duplicate entries in the database. At other points, I expound on technical details or note expected delays in the project such as when I drove to New York City. This turns into a project diary, and it provides a few laughs to look back on it.

By recording my goals and work in this manner, I “gamify” the project. For example, there’s a small reward each time I get to highlight a goal in green, and I get a bigger reward when I can move a whole objective to the completed section. With the daily work documentation, I can see when I have a streak of consecutive days worked, and like a streak on Snapchat, there’s a desire to keep the streak alive. It’s a structure that rewards the behavior I want to engage in, namely working on the project. After all, positive incentives help overcome the sense of dread which accompanies an obstacle like a full database redesign.

Next, this method helps determine the most important problem to solve each day. Why is this important? Because if you’re not working on the important problem, what the hell are you working on? As Richard Hamming said, “If you do not work on an important problem, it’s unlikely you’ll do important work.” Hamming’s talking about potential Nobel prize winners. This project does not approach that. Yet, taking Hamming’s advice, I do aim to work on the most important component of the project each day like the database redesign. When I screwed up the database, I didn’t have to fix it. It worked for me. But if this ever becomes a product, the whole system would have crashed. Rather than build more on top of a rotten infrastructure, the easy choice, I did the most important thing: Rebuild the infrastructure.

Yet, how does the system triage the important from the unimportant? It contains scheduled moments to look at the project from a broad perspective. Of these moments, the first step is outline creation which holds the objectives and goals. It’s about identifying necessary steps and possible pitfalls. What needs to get done, where can it go wrong, and how will it fail? The outline helps answer some of these questions and provides an opportunity to preemptively avoid work on the wrong aspects of the project.

Next, I create a daily goal each time I sit down to work. This provides a moment to evaluate the situation and decide what’s most important. It’s easy to get to work on some small part of a project and lose sight of the bigger picture. The daily goal makes sure I take a conscious look at the project as a whole and evaluate what needs to be done. For example, I put some work into creating JSON methods to store information about the database. But one morning, I went to set my daily goal, and I realized all the information I needed was stored in the database anyway. Why was I trying to add another layer of abstraction on top of that? The JSON methods were not important.

This system helps get side projects finished. Positive feedback and incentives help ritualize a regular work schedule. Meanwhile, scheduled moments to evaluate the project help ensure the most important work gets done first. We’ve all started a side project and then watched it wither later on. It’s always exciting at the start, but somewhere along the way, things get complicated. This is where most people, including myself, quit. But with the right system, it’s possible to keep side projects out of our personal side project graveyards.

So, that’s the how and the why of this project. In the next two posts, we’ll get more technical. In one, we’ll look at the model and evaluate it’s quality. And in the other, we’ll look at the code and try to decide what I did well and what needs improvement.

An NBA Prediction Model

Repository
An NBA Prediction Model Part 2: The How and Why
An NBA Prediction Model Part 3: The Model

Somewhere on the road from Salt Lake City to Los Angeles, I realized there’s only so much walking around you can do before it gets boring, even if you’re on the adventure of a lifetime. So, I decided to start this project. Several months later, I’m ready to share it. The goal is simple: Predict NBA games against a betting line. If you’d like to try it, the code and usage instructions are here (I think anyone with a decent understanding of Python can get it working).

This series will explain the work process, statistics, and code used to get this project off the ground. The project is a playground for me to learn and grow in. I’m a big NBA fan who also likes programming and statistics, so this project is right up my alley. The project is not fancy. It uses the simplest statistical tools (linear regression). Computer scientists would have (and hopefully will!) have plenty of criticism for my code. It uses the simplest database available. The list of flaws could be an article by itself.

Despite its flaws, the project’s core competencies now work. It scrapes data from the internet, generates predictions, and stores everything in a database. It’s just a scaffold, but you need scaffolding to build a building, and I think this framework will allow me to build out most features I can think of. In Silicon Valley, this scaffold is referred to as an MVP, a minimum viable product.

The thought is, once you have an MVP, release it into the wild. Users know what they need from a product better than the creator does. Thus, the creator gathers user feedback and tailors the product to the users’ desires. Since the creator can never know all user needs, this is ideal. Work gets done on what is needed rather than what seems right to a single individual.

Now, I don’t know if this product will ever be something I’d sell (it’s not close to monetizable yet) nor do I think it will ever be huge. The project was made first and foremost for myself. Nevertheless, the project aims to function as a product, and the best practice for creating a product is to build an MVP and throw it out in the wild.

So, now the NBA prediction model is in the wild. With any luck, a few people will use it, and I can get some valuable feedback. In the meantime, this series will continue in the coming days and weeks. The next post will look at why this project exists, and how it got made. After that, more technical posts will look at the code and the statistics behind the project.

State of the Blog

It’s been a minute, huh? I’ve been at work on several projects, most of which include writing. However, my current work has drifted into areas outside of the blog’s stated goals. The blog will need to change to hold this new work. So, as the blog moves into a new phase, I want to take time to overview my initial work and preview my future work.

The blog’s initial conception is as follows: [Crockpot Thoughts is] a blog about ideas that are enduring, pervasive, and underrepresented for people who need an alternative to the norms of their time.

I’ve published 10 posts. With varied degrees of success, each post has contributed to the initial thesis. However, my goals at the blog’s inception now differ from my current goals. The initial goals arose from my situation at the same time. I’d found long-term satisfaction with day to day life, and that satisfaction built itself on enduring, pervasive, and underrepresented ideas which seemed, and seem, worth sharing. I’ve continued to rely on these ideas, and my satisfaction with life has continued.

However, those ideas were absorbed over 23 years. They didn’t pop into my head overnight. Some examples include:

The list could go on. These ideas share the common trait of universal applicability. In my opinion, each of us can gain something when our lives are organized around these ideas. Yet, there are only so many universal ideas, and I am not privy to all of them. The ones I know, I’ve written about.

Yet, there are pieces I want to write which are not universal. So, I will change the site. The site will broaden from its initial conception into my digital home where all I write and work on will be stored. The change won’t be rapid, but overtime the site’s design, purpose, and writing will change. I’ll write enduring ideas when I have them, but otherwise, I’ll write what I want to write about. I cannot predict what that will be, but I already know upcoming content will be far different than what’s been on this site previously.

Yet, the blog’s initial conception and initial posts will remain valuable. It’s my first experience making something for anyone who cares to consume it. Most work exists to solve problems. File the paperwork, mow the lawn, or sell the product. The start of this site was different. I create; others choose to consume. The juxtaposition between creation and problem-solving deserves a broader discussion, but I’d point those interested to these notes (page 5 focuses on creativity vs. problem solving) for now. I prefer creation, and this site was my first real opportunity to create in a public manner.

Further, many took the time to reach out as the initial series of posts came online, and I’ll always treasure those messages. It’s not often you get to throw something into the world and get a positive response. Those messages were an affirmation that I’d done the right thing, that all the hours writing were good and worthwhile. What else you can ask of life than to do something and feel it was worth it? So, as this blog evolves into something new, to those who read it from the start, this post is for you. The new content will be of a different ilk, and many will not be that interested. But rather you stay or not, as Marie Kondo suggests, when we move on from something, we should give thanks for the good it did us. So, thank you for your time, and I hope I wrote something you could use along the way. With any luck, you’ll find something useful in the future too.

And the future is soon. Stay on the lookout for new posts in the coming weeks.

What the Limit Looks Like

“I’m not talking a marathon — lots of people do that. It’s more like, climb to the top of the farthest mountain you can see. That’s where I’m gonna go.” -Kyle Korver

Vomit

… never tasted so good. The nausea began where the vomit landed, on the starting line. Fresh off a five mile run through the park, we gather at the track’s start line. Exhausted, I lack the wherewithal to find my proper starting position within the pack. My mistake becomes apparent when we are told to run. I’m at the front of the pack while a stampede behind threatens a Mufasa moment. I cozy up to the front five group as we turn the first corner. We are 6 of the 30 odd people who want to finish this damn conditioning and go home.

We are to run a four lap mile on the track. I would prefer a slower starting pace, but the first lap of a mile is milquetoast. I’ll keep up until the crowd thins then drop back to a more comfortable position in the middle of the pack. But as we cross the quarter mile point, I was still at the front.

Peculiar. This is not a particular challenge. It’s just one lap. If it were a one lap race, I could chop 20 seconds off the pace. Nevertheless, my body will redline at this pace after another lap. My tachometer tacks towards red with each step. In place of an engine’s shrill, my body will signal its redline by alighting the air in my lungs.

This is February of my senior year and three weeks before our final timed mile. As a freshman, I made a vow with myself to be a top-5 runner by my senior year. I broke the top-10 as a sophomore. To prepare for junior year’s conditioning, I added a diabetes diagnosis. Top-5 aspirations were shot for the year after that.

My pancreas did not return to its former form in time for senior year (and is still in need of repairs). And to use the formal terminology, I sucked. The required time for varsity was 5:50, and I had not broken the 6:30 mark all winter. As the lead five crosses the finish line for a second time, they are greeted by the coaches’ “2:45!” to mark the pace. A sixth, myself, remains close behind.

We have a preference for the path of least resistance. People are complacent because complacency is easy. And after a half mile’s traversal around the track, the path of least resistance had its appeal. This was not our last time trial of the day. Complacency implored, “Why exhaust yourself now?” Every day before this one, that voice sounded too sweet to say no to. But today, I grasp on to my position as the lead group’s caboose through a third ellipse.

The Misogi

The misogi is an ancient Japanese concept. And in that context, it refers to a Shinto ritual of purification by immersion in a waterfall (as best I can tell). However, a small group of Americans came to understand the misogi as an annual ritual for expanding one’s boundaries. One member of that group, NBA shooting guard Kyle Korver, explains:

[Misogi] comes from the idea that as we get older we take fewer risks, think more inside the box, get more careful, make more decisions based on fear. To combat this, once a year you do something that you’re not sure you can do. That’s the misogi. I’m not talking a marathon — lots of people do that. It’s more like, climb to the top of the farthest mountain you can see. That’s where I’m gonna go.

Korver has participated in at least two misogis. In the first, Korver’s group paddle boarded 25 miles. And in the second, they ran an underwater 5k carrying boulders. Across the two NBA seasons sandwiched between those misogis, Korver set the record for consecutive games with a made three pointer. After he set the record, Korver reminisced, “ I think I’ve become more serious about my shot. My mechanics. My revolutions. The stroke. That’s what the misogi did.”

As of 2018, Kyle Korver is still in the NBA at 37. He’s among the least athletic players in the league. Yet, he continues to contribute to his team. He maximizes every millimeter a defender tilts in the wrong direction. Every millisecond is accounted for as his shot heads toward the basket. As a result, and despite every physical disadvantage, a Korver shot ends in a swish as often as not. Korver doesn’t have a safety net of athleticism to rely on to correct mistakes. He has a deadly jumper and inches of space to launch it from. If he hadn’t experienced the misogi, if it hadn’t pushed him to refine an element as small as the rotations on his shot, would he still even be in the NBA?

Finished

We complete our third ellipse. It hurts, but it’s only pain. Like any sensation, it can be endured if one decides to. For reasons I don’t understand, I choose pain for the final lap.

The lead group leads, and I follow. I remain in the trail position but maintain contact. They run like gazelles. I wonder if lungs can explode. We turn the final corner and accelerate through the finish line. I clock in at 5:45. It’s 45 seconds quicker than I’ve run all year.1 My lungs remain intact.

The rest of the pack finishes in the following minutes. Afterwards, the coaches herd us back to the start line. I amble into my appropriate and comfortable position in the middle of the pack. As the next run is described, I begin to feel nauseous. Within seconds, I keel over and vomit. “Not on the track! Get in the grass!” my coach chides. I hobble aside to empty my stomach a second time. I’m finished. It’s glorious.

The Limit

“Man has a large capacity for effort. In fact it is so much greater than we think it is that few ever reach this capacity,” said Admiral Rickover. The day I threw up was the first time I ever reached my capacity. The vomit was glorious because it signalled that I’d reached my physical limit. The pain from running and self-doubt from diabetes were mental obstacles that I allowed to dictate my performance until that point. They were insurmountable until they weren’t. Reaching my physical limit taught me that mental limits are only limits if we let them limit us.

Mental limits are resistance. The gap between our capacity and our performance is filled with resistance. Resistance manifests whenever we try to push ourselves outside of what is comfortable. Try to run faster, and resistance tells us it hurts too much. Try to understand a complicated concept, and resistance tells us we’re too dumb. If we are to succeed, in ventures big and small, we must push through resistance.

When we encounter resistance, we are presented with a choice. We can choose to push through resistance, or we can choose to succumb to it.

Top 5

We have two more practice miles before our final timed mile. In each, I run faster (5:40 followed by 5:30). Both runs end with vomit; it’s expelled on the grass as a courtesy. On the final timed mile, I accomplish the goal I had set as a freshman. I finish 5th with a 5:19 time. But I don’t throw up. The limit has moved beyond the horizon.

Timed miles do not fit cleanly with the idea of a misogi. Many people have run timed miles. Yet, after four timed track tortures, the misogi holds the most salient explanation of my experience. The limits I perceived revealed themselves to be no more than resistance. Once I decided to endure pain in that first mile, the limits revealed themselves to be a farce. And my horizons broadened in turn. What I perceived as possible expanded as I did what I thought impossible.

“…You do something that you’re not sure you can do. That’s the misogi.”  And through that process, we become more capable the next time around. And fortunately, the benefits do not accrue solely towards the task at hand. The lesson learned is not that pain must be endured to run a faster mile. It’s broader than that. It applies to everything. The lesson is this:

Our capabilities always lie outside of what we perceive as possible. Therefore, we must trudge through that we perceive as impossible to find the possibilities that lie beyond the horizon. It is, and always has been, our choice to endure or succumb to the obstacles in our path.

Or as Dumbledore explains, “It is our choices, Harry, that show what we truly are, far more than our abilities.”

Inline Notes:

1. To be clear, that’s not fast in any other context.

Until We Meet Again

“Reading, after a certain age, diverts the mind too much from its creative pursuits. Any man who reads too much and uses his own brain too little falls into lazy habits of thinking.” – Albert Einstein

This is basically the postscript to this project. Let me explain why…

The Goal of Crockpot Thoughts

When I started writing last July, I promised myself I would write six pieces before I published anything. If I only wrote one or two pieces before publishing, I would have quit by now (1). Writing has highs and lows, and it is easy to mistake a low as a good place to quit. With a guarantee of six pieces, I made sure I would not half-ass this thing. And I haven’t. I’m confident what I have published approaches the best I’ve got (2). 

Before writing, I designed a central theme for this blog. Following an exercise described in Ryan Holiday’s Perennial Seller, I set out to describe the blog in a single sentence, paragraph, and page. The sentence is the “You’re in an elevator. The person beside you is important. You’ll reach the sixth floor in 14 seconds. Don’t screw it up.” description of your work. My sentence is as follows:

Crockpot Thoughts is a blog about ideas that are enduring, pervasive, and underrepresented for people who need an alternative to the norms of their time.

Enduring, pervasive, and underrepresented are the key operatives. To be enduring, the topic must be applicable regardless of circumstance. If a topic can be made obsolete by a new technology, it does not make the cut. To be pervasive, the topic must be effective. For example, I wrote two articles on habits because habit management is a powerful lever to push our lives in the right direction. Finally, what qualifies as underrepresented is subjective. However, underrepresentation is defined here as ideas which fall outside of the mainstream conversation (3). For example, stoicism, discussed here, has proven to be an enduring and pervasive philosophy to attack life with. Yet, I was clueless on the topic until recently.

Finally, my writing should be for “people who need an alternative to the norms of their time.” Modern life comes with a lot of hamster wheels. Social media is a hamster wheel. Messaging is a hamster wheel. Work can be too. When we’re on a hamster wheel, it feels like we’re moving forward. Yet, we go nowhere. So to contrast all of the hamster wheels we face daily, each idea I propose should be an alternative method to allow us to achieve freedom and fulfillment. Rather it’s 21st century phones or millenia old gossip, we always have the option to live on life’s surface level with everyone else. But we find little unique or interesting at the surface. No one pays us to explore the surface level. The surface does not inspire. The stuff that really matters lies deeper in unexplored territory. I want my writing to reside in these deeper levels. It’s not to be different or unique. It’s to identify enduring and pervasive ideas that apply to us all. And these ideas tend to be the minority options.

These constraints create a high bar to reach. For the most part, I feel I’ve made it pretty close to the level I want my work to be at (if you disagree, please let me know). I am proud of that. But it’s a hard bar to reach consistently. It just takes a lot of work.

Opportunity Costs

As I mentioned, the initial goal was to write six pieces. With the initial salvo published, it’s time to ask if I should continue. There are many variables that go into my choice. Let’s look at them.

First, this takes time. Time is the only resource we cannot get more of, so we better be damn sure we are satisfied with how we use it. Writing takes a lot of time. Hours of reading come before I even think about exploring a topic. After that, I throw away 50% of what I write. Edits take time afterwards. Further still, do not forget publishing. It takes a couple hours to create the associated Facebook posts, tweets, and emails for each piece. Each piece probably takes 10-20 hours all said and done (4). 

Money is a second consideration. This definitely does not support me financially, not that I expected it to. Explore the history of writing focused sites and we’ll find it takes much longer than two months to create a monetizable following. At this point, the money does not matter. But if I continue writing, I need to get compensated for it at some point to make it sustainable. The real question is, “When and how can I make money off this site, and how much could I make?”

These first two considerations are my “costs” of writing. My time is worth something. Time has both a monetary and a personal component. The monetary component is the compensation I could expect to earn when I work on a project. Right now, I earn cents per hour. The job market conservatively values my time around $25.00 an hour. Therefore, the monetary opportunity cost of my time spent on this project is around $-25.00 per hour.

However, we must also consider the personal component of time. First, there is free time I can use to do whatever I want. And second, there is the personal fulfillment I receive from this project. I won’t craft some subjective measure of the value of free time. I’ll just say I want enough free time to have a sufficient social life and some flexibility in my schedule.

The personal fulfillment component of my time does have value though. The site has been visited over 500 times from 17 different countries. I’m a little mind blown by those numbers. I’m smitten that people actually read what I write. I value the personal messages I get each week even more. With every post, I’ve gotten some kind message from someone I didn’t expect. They are heartwarming. They make it clear I’m not shouting into the abyss. With each one, I feel a little bit more responsibility to put more work out there for people. Though it doesn’t simplify into a dollar number, I put a real value on my readership and these personal messages.

Personal growth must also be considered. I get to work on a creative venture. I get to read books. I develop fairly intimate understandings of the topics I write about. Combine all that, and I know I’m better after I’ve written a post than I was before.

To sum the costs and benefits of my time spent on this project, the monetary value of my time is really negative here. However, the personal growth and enjoyment I get from the project is real and significant. If I continue, I’m fairly confident I could start to rectify the monetary component too. For me, the valuation of this project on its own is positive. It’s something I’d like to keep doing.

However, there is a final opportunity cost to consider: Does the cost-benefit of commitment to regular writing outweigh the value of pursuing another project? To this question, I must answer no.

The Hero’s Journey

Joseph Campbell explains why in The Hero with a Thousand Faces. In the book, Campbell chronicles most all of human mythology to show how humans developed the same narrative structures for their myths no matter their culture, location, or religion, hence the thousand-faced hero. To explain the similarity, Sir James G. Frazer is quoted, “More probably the resemblance which may be traced in this respect between the religions of the East and West is no more than what we commonly, though incorrectly, call a fortuitous coincidence, the effect of similar causes acting alike on the similar constitution of the human mind in different countries and under different skies.” Put simply, the differences in our cultures exist mainly at the surface level. Put these differences aside, and we see all cultures and all individuals tend to follow synonymous paths of growth and maturation.

One of these paths is the Hero’s Journey. At a broad level, Campbell divides the hero’s journey into three steps:

  1. “A hero ventures forth from the world of common day into a region of supernatural wonder”
  2. “Fabulous forces are there encountered and a decisive victory is won”
  3. “The hero comes back from this mysterious adventure with the power to bestow boons on his fellow man”

In my life, one journey was to make it where I am now. I spent chunks of my life relatively poor, sad, and incapable of accomplishing much (5). Now? I make 50k a year. I can live comfortably on far less. I kind of just graduated and popped into the middle class. I now know what makes me sad, so I don’t do those things. I know what makes me happy, so I do those things. If there’s something I want to accomplish, I know how to put in the work to make it happen. It’s been quite a journey to get from there to here.

So, I sit at the third stage of Campbell’s hero’s journey. My duty would then be to “bestow boons on [my] fellow man.” By and large, that’s what this site is about, sharing the lessons I’ve learned with other people. But what lessons am I really sharing? All I have really done is make it to the middle class, and I’ve not exactly lifted a lot of other people up on the way. It is presumptuous, perhaps even stupid, to think I can give lessons to take people past my current position. And forgive me if I’m wrong, but most people’s dreams, mine included, weren’t to live a comfortable middle class life. Give me a couple drinks, and I’ll tell you I want to change the world.

Therefore, I must engage in another journey and pursue more ambitious goals. To take that step, to return to step 1 of the hero’s journey, I must leave the 3rd step of my prior journey. It’s infeasible to begin another pursuit yet continue in an attempt to share wisdom with the world. The writing takes time. The journey takes time. I cannot do them both. You fight a two front war if you want to lose on two fronts. Each of us is capable of most anything, but we cannot do everything. We have to make a choice. To write is to stand still, to pursue another journey is to move forward. I choose the latter.

Where to?

Well, it doesn’t matter really. I don’t have a destination in mind. If this were mythology, I’d venture into the supernatural. Unfortunately, I don’t have that option. Instead, I’ll settle for “not here”. I mean that in two ways.

First, I will not accept myself as I am now. That’s not to say I’m dissatisfied or disappointed. Just, what I’m capable of seems to be quite far from where I am now. And I would be disappointed if I didn’t reach out and try to hit that limit.

Second, I will leave “here” physically. I’ve been within 30 minutes of home for 99% of my life. That comes with a lot of comfort. It makes thing easy. But as the saying goes, “You’ve gotta risk it to get the biscuit.” And, frankly, I’m not risking shit right now. My plan? When my current contract is up, I’ll pack up and drive around until I find a new place and a new job.

The Personal Side of Things

On the personal growth front, I have an idea. It will probably fail. I suckered a friend into helping me with it. So far, everything we try is hard. These things aren’t hard in the, “this is a hard test,” type of way. They’re hard in the “I’m lost in a forest with no map. Also, it’s snowing.” type of way. In A Creator’s Manifesto, I said we should pursue big ideas as creators because big ideas, with the possibility of failure, lead us to personal growth. This meets the criteria.

I don’t want to specifically name the idea. It can get easy to talk about something instead of making something. And I don’t want to do that. However, the logic behind this pursuit is worth exploring.

Why work on something that will probably fail? Because it is a moonshot. And as I wrote in my first post, “Moonshots aren’t failed like typical pursuits; if you fail ¼ of the way there, you’ve still made it to space.” In other words, my downside is capped. The longer I work on it the more I learn and grow. Success is not required for me to personally benefit. If I quit, I bet my next employer will hire me because of this project. If I succeed, well, I may not need an employer.

In general, we are risk-averse. But we should put risk into perspective. As Tim Ferriss explains in his TED talk on fear setting, when we define our fears and put the downside in perspective, we will find that there are few pursuits that will absolutely ruin us. Lost time is usually the downside to most things. We can make almost everything else back. We can make new friends, rebuild relationships we tore down, or make back the money we lost.

That logic applies here. Let’s be clear: the worst case scenario of trying and failing is probably a new job. And the best case? Self-employment. What do I have to lose? Nothing. As I mentioned earlier, I made it to the middle-class, but I haven’t done a great job of helping other people along the way. This project is my best guess of how to do that.

The time I spent writing will be transitioned to this project. I have no idea when it’ll grow into something worth talking about. But I hope you hear about it. It’ll mean it worked out.

The Whole Drive Around the Country Thing

I’d like to think I’m brave, adventurous, and all good things for embarking on this adventure. But that’s probably not the case. A year ago, my friend told me he would drive around the country until he found a job. He did. He now lives and works in Portland. And I follow in his footsteps.

In a 2015 New Yorker article on school shootings, Malcolm Gladwell discusses the sociologist Mark Granovetter’s theory that many social interactions are determined by our thresholds. How do mild-mannered citizens devolve into a raucous riot? One by one, they each cross their threshold. Gladwell explains:

In his (Granovetter’s) view, a riot was not a collection of individuals, each of whom arrived independently at the decision to break windows. A riot was a social process, in which people did things in reaction to and in combination with those around them. Social processes are driven by our thresholds—which he defined as the number of people who need to be doing some activity before we agree to join them. In the elegant theoretical model Granovetter proposed, riots were started by people with a threshold of zero—instigators willing to throw a rock through a window at the slightest provocation. Then comes the person who will throw a rock if someone else goes first. He has a threshold of one. Next in is the person with the threshold of two. His qualms are overcome when he sees the instigator and the instigator’s accomplice. Next to him is someone with a threshold of three, who would never break windows and loot stores unless there were three people right in front of him who were already doing that—and so on up to the hundredth person, a righteous upstanding citizen who nonetheless could set his beliefs aside and grab a camera from the broken window of the electronics store if everyone around him was grabbing cameras from the electronics store.

Granovetter has me pegged. A cross country trip never crossed my mind until my friend left on his adventure. But the idea marinated. And one day, it became clear that I was actually going to quit my job and drive around the country. My threshold for cross-country trips is apparently one.

I’m tempted to enumerate the rational reasons for this trip, but those reasons would be specious. There’s little free-will involved here. For however long, subconscious machinations figured out a rationalization for this trip. One day, the rationale slipped from the background to the foreground, from subconscious to conscious. On the idea’s conscious arrival, I grabbed my calculator and threw in some costs. My calculator said, “You can afford it.” And the trip was on.

No matter what I expect from this trip, reality will be different. Not better or worse necessarily, just different. The journey will not teach me the lessons I expect. Rather, it will teach me what I need to know. My only option is to hit the road and see what happens. I expect a positive experience, but that’s not a guarantee. Knoxville would sound like Paris if my car breaks down in New Mexico.

I hope to meet people who make me better, but I may find individuals who make me far worse. I hope to find a new and rewarding job, but I may come back tail-tucked to my current one. The problem with hope is that it comes with desire. And as Naval Ravikant says, “Desire is a contract that you make with yourself to be unhappy until you get what you want.”

To write out reasons for this trip is to set expectations. And expectation is desire. If I hold those desires, I can expect disappointment if they are not met. I think it better to let things come as they may. Both the risks and rewards are evident, but I know not which I will reap. Quoting Steven Pressfield’s The War of Art, “The Bhagavad-Gita tells us we have a right only to our labor, not to the fruits of our labor.” Similarly, I can choose to go on this trip, but I cannot dictate what will happen.

What happens when you sum all of that up? Turns out a large part of the reason for this trip comes from outside influence and subconscious thinking. Similarly, the purpose of this trip is undefined. I’ve spent the majority of the time in the known. I’m ready for the unknown, and I could not be more excited.

So that’s it? It’s done?

Nahhh. I’ll still write when I feel the need to. The urge to write will not go away forever. And now I have a place to put my (crockpot) thoughts.  

Furthermore, the end of writing is not the end of creation. What I am promise to myself and everyone else is that I will keep creating. As Marc Andreessen said, “Smart people make things.” As mentioned, I have a new project.  And I much prefer a creative life than one spent idle. Creation is creation regardless of the medium.

Inline Notes:

  1. The 1 year anniversary of creating this site just came around in May. I didn’t post until April of this year. It took awhile.
  2. Plus, I’ve added two extra posts.
  3. This is subjective too. What I believe to be majority and minority topics are informed by my life experiences. The answers can be different for everyone
  4. Except the 48 Laws of Power Piece. That probably took 50 hours. If I was going to quit, it would have been while writing that. The initial idea was to analyze Trump through the 48 Laws of Power. I still believe that’s an effective prism to view him through. We fail to understand the outlier when our models of the world are trained on what’s normal. Several thousand words of that were trashed in favor of the current piece.
  5. I also spent chunks of my life rather rich. When I was in probably kindergarten or so, my family rented out a house in a cove on the Outer Banks. It had an elevator. A house with a freaking elevator! That’s when I realized we were rich. A lot happened between then and now. And money never has been as present as it was then. I learned a lot from the times when the money was sparse. I learned just as much from miniature life times spent in the lower, middle, and upper classes by the time I was 18. Not many people get that experience.

 

Brief Thoughts on Mental Illness

I fully support everyone who shares suicide prevention phone numbers and encourages people to check on their friends. Without a doubt, those are necessary and helpful.

However, depression comes from within. Outside help can only assuage the symptoms. It cannot cure the disease. Real progress comes when an individual confronts and overcomes their inner demons.

Maybe I was once mentally ill, maybe I wasn’t. I never had a diagnosis. I do know I am much better than I once was.  We all walk through our own emotional wastelands at some point. Perhaps some lessons from my journey could help others on their’s:

  1. Do your best
    1. Your best means your best. Not someone else’s idea of it.
    2. Every time you do your best, your best gets better.
    3. Do better, and you will be better.
  2. Stay present
    1. Depression is past tense decision making
    2. Anxiety is future tense decision making
    3. When we operate in the past or future, we neglect the present.
  3. Keep the long view
    1. Progress cannot be perceived over days. Don’t look for it today.
    2. Progress happens over years.
    3. Reflect on and appreciate progress when you notice it.
  4. When you fail, do your best again, stay present, and try to keep the long view.
  5. When you succeed, do your best again, stay present, and try to keep the long view.

This is simple. It should be. Many just need to make it one more hour. Until their shift is over. Until they get home. Until death’s appeal subsides. Complexity makes recovery appear intractable. Simple goals allow progress no matter how small. We mustn’t worry about the size of our steps.  It may be a long journey, but put one foot in front of the other and we may all traverse the road from here to there.

Your peace is out there.