Skip to content

Instantly share code, notes, and snippets.

View thoolihan's full-sized avatar

Tim Hoolihan thoolihan

View GitHub Profile
@thoolihan
thoolihan / path_check.bash
Created February 12, 2024 14:57
Check for duplicates in your $PATH variable
#!/usr/bin/env bash
RAW_PATH_TMP=`mktemp`
CLEAN_PATH_TMP=`mktemp`
echo $PATH | sed 's/:/\n/g' | sort > $RAW_PATH_TMP
cat $RAW_PATH_TMP | uniq > $CLEAN_PATH_TMP
declare -i LINES=$(( `diff $RAW_PATH_TMP $CLEAN_PATH_TMP | wc -l` / 2 ))
WITH cteRevenueDays(Orders, StoreDate, Revenue) AS (
SELECT COUNT(SalesOrderID) AS Orders
,CAST(OrderDate AS DATE) as [StoreDate]
,SUM(SubTotal) AS Revenue
FROM [AdventureWorks2019].[Sales].[SalesOrderHeader]
WHERE DATEPART(YEAR, CAST(OrderDate as DATE)) = 2011
AND DATEPART(MONTH, CAST(OrderDate as DATE)) = 7
GROUP BY CAST(OrderDate as DATE)
) SELECT
StoreDate
@thoolihan
thoolihan / target_encode.py
Created November 30, 2017 15:08
TargetEncoder
import numpy as np
import pandas as pd
from sklearn.base import BaseEstimator, TransformerMixin
# Adapted from https://www.kaggle.com/ogrellier/python-target-encoding-for-categorical-features
class TargetEncoder(BaseEstimator, TransformerMixin):
def __init__(self, columns, noise_level = 0):
self.columns = columns
self.maps = {}
@thoolihan
thoolihan / main.cpp
Created November 23, 2016 03:31
Poisson Probability Mass Function in C++
#include <iostream>
#include <iomanip>
#include "math.h"
using namespace std;
float pmf(int k, double lambda) {
// https://en.wikipedia.org/wiki/Poisson_distribution#Definition
return pow(M_E, k * log(lambda) - lambda - lgamma(k + 1.0));
}
@thoolihan
thoolihan / install_rcodetools.rb
Last active May 1, 2021 10:20
script to make sure you have rcodetools installed for all rvm rubies
#!/usr/bin/env ruby
rubies = `rvm list`.split(/\s+/).find_all{|s| s.include? "ruby"}
def fetch_for(rvm_spec)
system "rvm use #{rvm_spec}"
system "gem install rcodetools"
end
def valid_gemset?(name)
@thoolihan
thoolihan / clip.R
Last active October 10, 2020 14:33
data <- -10:10
lims <- range(data)
x <- sample(data, 50, replace = TRUE)
par(mfrow=c(1, 5))
plot(x, ylim=lims, main="initial data")
# only positive
plot(pmax(x, 0), ylim=lims, main="clip bottom")
@thoolihan
thoolihan / ord.R
Created October 22, 2019 16:12
creating ordinal numbers
# casting as integer
int_cyl <- as.integer(mtcars$cyl)
int_cyl
# creating a factor
factor_cyl <- as.factor(mtcars$cyl)
factor_cyl
# flag columns / dummy variables
library(caret)
@thoolihan
thoolihan / two_sixes.R
Created October 22, 2019 15:28
Probability of getting exactly 2 6's out of 4 dice rolls
library(tidyverse)
ROLLS <- 4
SIMS <- 10000
#calculate
ncombos <- choose(ROLLS,2)
two_sixes <- 1/6 * 1/6 * 5/6 * 5/6
print(sprintf("choose(4, 2) * 25/(6^4) = %f", ncombos * two_sixes))
@thoolihan
thoolihan / minecraft_server_info.py
Created September 30, 2019 14:31
A simple example using mcstatus to query a minecraft server
from mcstatus import MinecraftServer
import argparse
import json
parser = argparse.ArgumentParser()
parser.add_argument("server", help="server name or ip", nargs='?', type=str, default="localhost")
parser.add_argument("port", help="server port", nargs='?', type=int, default=25565)
args = parser.parse_args()
print("Querying server host: {} port: {}".format(args.server, args.port))
@thoolihan
thoolihan / args.R
Last active July 19, 2019 13:57
Run `Rscript args.R` to see how R command line arguments work
args <- commandArgs()
trailing_args <- commandArgs(trailingOnly = TRUE)
print(args)
writeLines("\n====Just Trailing====\n\n")
print(trailing_args)