Visualizing MLB Team Payroll Spending


Partly in an effort to learn Tableau a little better, partly in an effort to see what the Nat’s historical payroll looks like, and partly because I hadn’t seen a tool like this before, I put together a Tableau Public graphic detailing each MLB team’s payroll spending since the turn of the millenium. Check it out! Shoutout to Baseball Prospectus and Cot’s Contracts for supplying the underlying yearly data.

Read More

Explore the World's Most Nutritious Foods with Shiny


Nutritious Foods

A recent study by food scientists titled “Uncovering the Nutritional Landscape of Food” ranked the world’s healthiest foods, focusing on options which will help fulfill, but not exceed, your daily nutritional requirements. In this context, foods which are nutritionally well-rounded and adaptable to a variety of diets rate out highly, while more “one sided” foods slip down the rankings.

Luckily for us, the researchers also published the data they used for the study, allowing us to view and manipulate the information. I’ve built a tool using R and Shiny to get a quick-and-dirty look at the data, so that users can quickly and easily see the healthiest options available when looking for protein, fat, or carb-centric foods.

Read More

Hosting your Own RStudio and Shiny Servers in the Cloud


Amazon Lightsail, Shiny, and RStudio

I’ve been mucking around in R quite a bit lately and have grown tired of all the annoying configuration changes that are required to take your data/analysis from one machine to another. Even with my code in a Git repository, I was still dealing with package inconsistencies across R environments, differing file paths, and more - needless issues that took me away from the analysis at hand.

Read More

Visualizing Historical NBA All Star Game Scoring with Tableau


This year’s All Star Game pitting Team LeBron vs Team Steph was an unexpected delight - seemingly the first time in years that any actual defense was played (thanks Joel Embiid!) and the players truly cared about the outcome. Accordingly, the total points scored dropped from last year’s all time high of 374 to a more “normal” 293.

That’s still a ton of points though - certainly a lot more than any old regular season basketball game… which got me thinking - was the All Star Game always like this? Take a peek at the Tableau visualization I put together to take a look at the question - it’s clear that there has been rampant score inflation over the last 5 or 6 years after a long period of relative stability. We’ll have to see if this year is any indicator of All Star Games to come, but at the very least it was a blast to see Team LeBron and Team Steph go down to the wire.

Read More

The Cavs Blow It Up: 2018 Trade Deadline Edition


LeBron and Isiah

Overview

Last time I posted about the Cavs, they were on the mend and in the midst of a 13-game winning streak. Since? Not great. The Cavs have been one of the worst teams in the league since, posting the NBA’s 5th worst Net Rating of -4.5, ahead of only the Magic, Nets, Kings, and Suns. Poor company for a team that fancied itself a perennial contender and Eastern Conference hegemon.

Read More

NBA Hot Takes: Trades and Injuries Edition


Blake Griffin

Trading Blake makes the Clippers Better

There’s already a general consensus amongst NBA talking heads that the Blake trade was a smart move for the Clippers - getting off the nearly $140 million remaining on his contract will dramatically increase their flexibility in building for the future. What makes this deal especially interesting, though, is that I also think it makes this Clippers better, this season.

It’s common wisdom in the NBA that the team getting the best player usually wins the trade… not so here. With the Clippers battling injuries up and down the lineup (Gallinari and Beverly in particular), acquiring Tobias Harris and Avery Bradley gives them two new options who can both space the court and create for themselves as needed.

Read More

Using the AWS IoT Button and Lambda to Receive On-Demand Daily Briefings


AWS IoT Button

Backstory

A little while ago, I impulse purchased one of Amazon’s $20 “AWS IoT Buttons”. These devices, which are really just souped-up and customizable versions of Amazon’s extremely popular Dash Buttons, allow developers to connect to and trigger actions within Amazon Web Services (AWS). As you might imagine - people much smarter than myself have found about a million things to do with these little guys: everything from ordering pizza and Sweetgreen to triggering IFTTT (If This Then That) actions.

Read More

Defense, Rest, and No D-Rose: The Cavs' Remarkable Turnaround


Cavs

Down in the Dumps

On November 9th, the Cleveland Cavaliers lost to the Houston Rockets 113-117, pushing their already-disappointing record down to 5-7 on the year. After kicking off the season with an impressive win over the (admittedly Hayward-less) Celtics, the Cavs went 4-7 against a slate of mostly weak Eastern Conference teams.

Perhaps even more concerning for the Cavs’ outlook, lineup and rotation changes threatened to disrupt their veteran chemistry. For a team that prides themselves on “flipping the switch”, all did not seem well in the Land.

Read More

Automating Deployment of your Hugo Site to S3 using AWS CodePipeline


AWS CodePipeline

Recap

A few days ago, I wrote a post outlining how I use Hugo and Amazon S3 to create a severless blog hosting platform. While this solution works awesome for hosting the site, publishing is still a bit of a pain. After a few too many rounds of drag-and-drop uploading, I set out to find a better publishing workflow.

Intermediate Solution

My first breakthrough was a quick terminal command using the AWS CLI to automatically upload the public directory that Hugo generates. The sync parameter is used instead of upload to make sure that the source and target directories match, and the --delete modified is appended to make sure that any files removed from the source directory are also removed from the target (S3) directory. This ensures that any outdated images or documents are removed! Finally, the -- acl public-read modifier makes sure that the uploaded files are public readable (this should be redundant if you have a public bucket policy, but never hurts).

Read More

Deploying a Static Website to S3 using Hugo


Hugo

After deciding to launch this blog a few months ago, I was faced with the choice of how to best host and run a small website. Luckily for me, I found a whole host of options using a bunch of different technologies. Ultimately, I decided to use Hugo - a popular static site generator. What’s awesome about Hugo is that it can be used as part of a severless architecture that keeps everything cheap and super fast - let’s take a look at how to set it up!

Read More