Skip to content

Instantly share code, notes, and snippets.

Christopher Smith cbsmith

  • Ticketmaster
View GitHub Profile
cbsmith / random_selection.cpp
Last active Jul 5, 2020
Hopefully serves as a reference implementation on how to do random selection of an element from a container.
View random_selection.cpp
// -*- compile-command: "clang++ -ggdb -o random_selection -std=c++0x -stdlib=libc++ random_selection.cpp" -*-
//Reference implementation for doing random number selection from a container.
//Kept for posterity and because I made a surprising number of subtle mistakes on my first attempt.
#include <random>
#include <iterator>
template <typename RandomGenerator = std::default_random_engine>
struct random_selector
//On most platforms, you probably want to use std::random_device("/dev/urandom")()
cbsmith /
Created Apr 16, 2012
Makefile dependency generator plugin for protoc.
# Save this file as protoc-gen-depends, put it in your path (executable) and add "--depends-out=/whatever/path" to your protoc invocation
from google.protobuf.compiler.plugin_pb2 import CodeGeneratorRequest,CodeGeneratorResponse
from sys import stdin,stdout
req = CodeGeneratorRequest()
res = CodeGeneratorResponse()
cbsmith / fmapp.hpp
Created Sep 5, 2018
A handy implementation of fmap that is apparently missing in the standard.
View fmapp.hpp
#include <optional>
namespace nonstd {
template <typename F, typename T>
auto fmap(F f, std::optional<T> x) -> std::optional<decltype(f(std::forward<T>(*x)))> {
return (x.has_value()) ?
std::make_optional(f(std::forward<T>(*x))) :
cbsmith /
Created Mar 19, 2018
Proving who I am

Keybase proof

I hereby claim:

  • I am cbsmith on github.
  • I am cbsmith ( on keybase.
  • I have a public key ASBCAABS7zQnEiWafsyLC0dowkNMrEEANe1AoVsuiwZ0BAo

To claim this, I am signing this object:

cbsmith /
Created Feb 25, 2018
A pythonic/portable password generator for when you're in a pinch
Generic xkcd style ( password generator, because you never know when you're going to need a new password.
Usage: <num_words> <dictionary_path>
from random import SystemRandom
from os.path import join, isfile
import sys
cbsmith /
Last active Oct 16, 2017
An example on how to do idempotent PATH manipulation.
#How to manipulate the path in an intelligent fashion with bash. Note: this doesn't work with Bourne shell.
function idempotent_path_add {
if [[ ! "$PATH" =~ (^|:)"$DIR"(:|$) ]]
if [ $PREPEND ]
cbsmith /
Created Apr 4, 2017
Python to generate all possible permutations of config options
from itertools import chain, ifilter, product
# These first few functions are just to sanitize data structures to deal with huamns
# providing data in ways that are convenient for their minds.
def is_iterable(x):
return hasattr(x, '__iter__')
def as_config_values(values):
cbsmith /
Last active Mar 26, 2017
Live tail of a file
Live tail of a file. Uses mmap to try to be efficient with memory.
Requires fsmonitor:
...which unfortunately lacks a decent monitor for non-Windows/Linux
systems, so burns up CPU unnecessarily on those platforms. Despite its
reputation, python makes it surprisingly difficult to write clean and
correct code.
cbsmith /
Last active Mar 26, 2017
First pass at doing a live "cat" in python
Live cat of file. Uses mmap to try to be efficient with memory,
though reads a byte at a time, so it burns through CPU by hitting the
python interpreter loop N times. We could add buffering, but that
would just make the code more complex, and who wants that?
stdout gets the default buffering, so consider invoking with
-u flag/PYTHONBUFFERED environment variable if not writing to
a file.
cbsmith /
Created Nov 23, 2016
This is what looks like from Southwest.
<!doctype html>
<head><link href="" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src=""></script>
<script type="text/javascript">var r44_btime=new Date();var r44_smu_time=1479876620.446</script>
<script type="text/javascript" src=""></script>
<title>Example Domain</title>
You can’t perform that action at this time.