Skip to content

Instantly share code, notes, and snippets.

@coderanger
coderanger / make_diecut.py
Created September 6, 2016 03:05
Automatically extract diecut paths for an image.
#!/usr/bin/env python2
from __future__ import print_function
import argparse
import re
import sys
import attr
import cv2
import numpy
@coderanger
coderanger / example.rb
Created June 15, 2016 22:31
Example of subclassing the Unicorn resource
module MyUnicorn
# Subclass the resource.
class Resource < PoiseApplicationRuby::Resources::Unicorn::Resource
# Give it a new name so we can find it.
provides(:my_unicorn)
# Add a new property. Could do more here.
property(:listen)
end
# Subclass the provider.
@coderanger
coderanger / file.rb
Created May 18, 2016 00:20
File transport API sketch.
# Remote file or directory proxy object.
#
# @since 1.0.0
class File
# Create a proxy object. All data is lazy-loaded so this does very little.
#
# @param connection [Airlift::Connection] Connection object to use for
# operations.
# @param path [String] File or directory path.
# @param follow_symlink [Boolean] Follow symlinks when getting file info.

Keybase proof

I hereby claim:

  • I am coderanger on github.
  • I am coderanger (https://keybase.io/coderanger) on keybase.
  • I have a public key whose fingerprint is AF25 8FBF 2D56 96D9 5764 0543 445B 6255 C512 B26E

To claim this, I am signing this object:

@coderanger
coderanger / readme.md
Created February 25, 2016 03:23
ChefConf 2016 Proposal Ideas

Anyone Can Cook: Writing Good Cookbooks as a Beginner

Abstract

Learning to write high-quality Chef cookbooks can be a daunting prospect. There are few resources and little documentation. Let's dive in to the best practices to build usable, maintainable, and delightful Chef cookbooks. We'll cover the structure of great cookbooks for new and experienced Chefs alike.

Outline

@coderanger
coderanger / talk.md
Last active December 28, 2015 02:58
PyCon 2016 Submission

Behind Closed Doors: Managing Passwords in a Dangerous World

Description

A modern application has a lot of passwords and keys floating around. Encryptions keys, database passwords, and API credentials; often typed in to text files and forgotten. Fortunately a new wave of tools are emerging to help manage, update, and audit these secrets. Come learn how to avoid being the next TechCrunch headline.

Abstract

Secrets come in many forms, passwords, keys, tokens. All crucial for the operation of an application, but each dangerous in its own way. In the past, many of us have pasted those secrets in to a text file and moved on, but in a world of config automation and ephemeral microservices these patterns are leaving our data at greater risk than ever before.

@coderanger
coderanger / django.rb
Created August 7, 2015 21:12
Rails vs. Django deployment
application '/srv/myapp' do
git 'https://github.com/example/myapp.git'
virtualenv
pip_requirements
django do
database 'sqlite:///test_django.db'
secret_key 'd78fe08df56c9'
migrate true
end
gunicorn do
@coderanger
coderanger / editor.rb
Last active October 14, 2015 20:20 — forked from Sauraus/editor.rb
Unity cookbook
require 'chef/resource'
require 'chef/provider'
module Unity
module Resources
module UnityEditor
# A 'unity_editor' resource to install and uninstall Unity Editor.
class Resource < Chef::Resource::LWRPBase
self.resource_name = :unity_editor
@coderanger
coderanger / next.rb
Last active August 29, 2015 14:23
What properties could look like.
#
# Copyright 2015, Noah Kantrowitz
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
@coderanger
coderanger / glim_farming.py
Created June 6, 2015 04:40
Monte carlo simulation for Glim Farming in with Lyme.
import math
import random
import statistics
def run_Take_on_a_Clay_Pupil(state):
state['cp'] = 1
def run_Reading_and_writing(state):
"""Requires Pygmalion 1."""
state['glim'] += 105