2023-12-26 Weekly Links
2023-12-26 Weekly Links
Enjoy some fresh weekly links!
via MikeTroy81
A new year is upon us. The links below reflect that. Until we have a LeBron, the rest of us need to plan and work. Happy 2024!
To achieve great things, two things are needed; a plan, and not quite enough time.
- Leonard Bernstein.
1. Screenwriting Tips From A Tune-up Legend
How a Script Doctor Found His Own Voice | The New Yorker - Link - DB
A profile of Scott Frank, a prolific screenwriter who gets up to $300k per week to fix scripts. Another nod to writing being more workman-like and less enchanted inspiration. It also highlights that not having a unique voice (think Sorkin) may actually be a benefit.
My work doesn’t so much change the aesthetic as it does provoke adjectives like ‘solid’ and ‘dependable.’
Screenwriting is also tedious and demands clarity of character and dialogue.
how can he introduce a character with a few deft strokes so that the audience is immediately invested in what happens to her? He has devoted entire months just to cracking an opening scene. But he also excels at endings.
Additional References
- Process Over Product. My satisfaction is in the writing, in the solving of the problem while I'm writing....the process, for me, is the most satisfying aspect of everything. Scott Frank interview | Tom Lazarus - Link - DB.
- Just Be Authentic. It’s okay to write something just for the money, and it’s also okay to write something just because you want to. Scott Frank Delivers his BAFTA Screenwriters' Lecture | BAFTA - Link - DB and Full Text of Lecture - Link - DB.
- A Conversation with A WALK AMONG THE TOMBSTONES Writer/Director Scott Frank - Screenwriter's Utopia - Link- DB
2. Planning The Year
How to Plan Your Life When the Future Is Foggy at Best - Link - DB
Planning sucks. According to “science”, 92% of people don’t achieve their goals. See Science Says Only 8 Percent of People Actually Achieve Their Goals. Here Are 7 Things They Do Differently | Inc.com - Link - DB. But planning and writing your goals down then reviewing them often leads to a much higher likelihood of success.
The benefits of planning - even if you don’t perfectly stick to the plan - are worth it.
Having a plan is one of the best stress-reduction strategies out there. As humans, we crave feeling like we’re in control and that we have certainty. In fact, research shows that a sense of control helps us stave off symptoms of depression and anxietyand can even decrease mortality risk
The key to overcome planning anxiety? Microplanning!
Micro-planning is simple. It takes a larger vision and breaks it down into yearly, quarterly, monthly, weekly, and daily check-in practices to plan and adjust as necessary.
Breaking down the year into smaller, manageable chunks is the focus of the book The 12 Week Year.
Completing a weekly review and then keeping score plus being accountable is crucial.
Focusing on little efficiencies can also add up. For example, saving 30 minutes on a task you do weekly adds up to 5 full days over a 5 year period.
Here are some boots on the ground examples of how people plan and track their year:
- How to Plan Your Ideal Year. “Five days a week, I read my goals… | by Michael Karnjanaprakorn | Personal Growth | Medium - Link - DB
Additional References
- 30X Likelihood of Success By Writing Goals. "(the study) revealed remarkable statistics relating to goal setting and success: 83% of the population do not have goals; 14% have a plan in mind, but goals are unwritten; and 3% have goals written down. The study found that the 14% who have goals are 10 times more successful than those without goals. The 3% with written goals are three times more successful than the 14% with unwritten goals. Writing your goals down sets you up to be exponentially more successful.” Can You Believe This Goal-Setting Statistic? — Stitch & Shutter Leather Goods - Link - DB
3. How Stern Does Interviews
Why Howard Stern Is The King of All Interviewers - Tracy Johnson Media Group - Link - DB
Hate him or love him, you can’t argue with Stern’s success. The article does a good job of categorizing why he is so good at getting people to open up. Much like a therapist, he does his prep work, makes guests comfortable, asks direct questions and actually listens.
Prep work is key. Have an organized workflow and stick with it.
Great interviewers aren’t necessarily clever, but do a good job of asking the right questions in the right context. See The Interview Magic of Stern, Gross, Simmons, Glass, & More: 9 of Their Best Questions - Link - DB. Listeners don’t necessarily want entertainment as much as they want connection and emotion.
Guests and listeners are smart and can easily spot phonies. The best interviewers are genuinely interested in their subjects and the topics they ask about. See What Makes Howard Stern a Great Communicator? - Therapy Spot - Link - DB.
Trying to connect with another person is the real key - not because you want listens or views, but because it allows the audience to feel voyeuristic and engaged. See 7 Ways To Make Your Interviews As Good As Howard Stern And Charlie Rose | by Mitch Joel | Medium - Link - DB.
Additional References
- 3-to-1 Ratio of Prep to Interview Time. How to conduct a podcast interview that leads to superior content - Link - DB
- Think of Each Interview Like A Story. Podcast Structure: The 3 Acts Of Every Great Podcast Episode | Castos - Link - DB
4. Dropping Log(Books)
Logbook Your Year. I’ve been keeping a logbook since 2014… | by Mike Rohde | Medium - Link - DB
Tryna actually keep a daily log, since I forget EVERYTHING. Is 2024 my year?
Logging IS NOT simply keeping a journal or writing in a diary.
Logging IS:
- Daily Tasks
- Health data points like sleep quality, weight, water intake, and exercise
- List of activities (in or out of order)
- The five “Ws” of the Day - who/what/when/where/why
- Weather
- A Subjective Ranking of the Day
Be creative, do you.
Additional References
- SPIEGEL Interview with Umberto Eco: 'We Like Lists Because We Don't Want to Die' - DER SPIEGEL - Link - DB
- The Daily Plan Bar. This past year I’ve started using a… | by Mike Rohde | Rohdesign | Medium - Link - DB
5. Odds Change Notifier
How to Use GitHub Actions with R to Run Code Automatically - Link - DB
I am in search of an app that will notify me of a change in odds from the open for specific leagues. For example, a favorite opens at -7 then moves to -3.
Main features I am looking for:
- Opening Odds For a specific league (NBA, NFL etc), notification when odds are offered by a specific bookmaker across all games.
- Odds Movement Notification when odds change across all games for a specific league.
Options currently available:
- OddsNotifier - Get Real-Time Sports Odds Alerts - Link. Offers both features via Telegram notifications. Also has a Google sheets add-in to track bets.
- OddsAlert - Odds Change Notification - Link. Free option that allows you to get email notification by Match (rather than by league).
- New in The Action Network App: Line Move Alerts - Link. Action network allows you to set line movement alert (for free) but only by game. There are no global options for all games in a given league. See also Line Watcher | Sports Insights - Link.
- Current & Historical Sports Betting Odds on Desktop | DonBest - Link. Comprehensive but expensive.
Of course, none of these options match the goal features that I want. So why not create our own! Here are the rough steps to implement:
- Setup a github repository and github action to run an R file on a defined chron schedule. See Running R Scripts on a Schedule with GitHub Actions | Simon P. Couch - Link - DB and GitHub - r-lib/actions: GitHub Actions for the R community - Link.
- Odds and game information will be sourced from The Odds API - Link
- The Odds API provides a free account with up to 500 requests per month.
- “A single request returns live and upcoming games for a given sport, betting market, and bookmaker region. Each game includes a start time, participants, and bookmaker odds for the specified region. Example: if you request odds for basketball NBA, from US-region bookmakers, and moneyline betting markets, the API will return live and upcoming NBA games, showing moneyline odds from US bookmakers. This will count as 1 request from your plan's usage quota.“ See FAQs on The Odds API - Link.
- Updates prior to game time occur roughly every 2 minutes. See Odds API Update Interval - Link
- The R file will connect to The Odds API using either:
- an R package called oddsapiR - Link
- the httr2 package - Perform HTTP Requests and Process the Responses - Link
- Region Selection. Select a list of US bookmakers to monitor. Bookmaker APIs - Link.
- Sport Selection. Select a list of sports to monitor. Sports APIs - Link.
- Market Selection. Select from a list of betting markets to monitor. List of API Betting Markets - Link.
Reviewing The Odds API Documentation:
- The URL is in the format
https://api.the-odds-api.com/v4/sports/{sport}/odds/?apiKey={apiKey}®ions={regions}&markets={markets}
- All endpoints return JSON data.
For example, the R code might look like this:
# load libraries
library(httr)
library(tidyverse)
library(jsonlite)
library(rvest)
# save the odds api key
api.key <- '{insert_api_key}'
# general API call function
fn.api.call <-
function(url){
res <- httr::RETRY("GET", url)
json <-
res$content %>%
rawToChar() %>%
jsonlite::fromJSON(simplifyVector = T)
return(json)}
# call to sports odds
fn.sports.odds <-
function(sport.key,
regions='us',
markets = 'totals',
odds.format = 'decimal',
date.format = 'iso'){
base.url = glue::glue('https://api.the-odds-api.com/v4/sports/{sport.key}/odds')
query.params <- list(
apiKey = as.character(api.key),
regions = regions,
markets = markets,
oddsFormat = odds.format,
dateFormat = date.format)
toa.endpoint <- httr::modify_url(base.url, query = query.params)
tryCatch(
expr = {
resp <-
fn.api.call(url = toa.endpoint) %>%
tidyr::unnest("bookmakers") %>%
dplyr::rename(
"bookmaker_key" = "key",
"bookmaker" = "title",
"bookmaker_last_update" = "last_update") %>%
tidyr::unnest("markets") %>%
dplyr::rename(
"market_key" = "key",
"market_last_update" = "last_update") %>%
tidyr::unnest("outcomes", names_sep = "_") %>%
tidyr::as_tibble()
},
error = function(e) {
message(glue::glue("{Sys.time()}: Invalid arguments provided"))
},
warning = function(w) {
},
finally = {
}
)
return(resp)
}
Additional References
- An R package for tools for sports betting. GitHub - papagorgio23/bettoR: R Package for Sports betting - Link