Skip to content

Instantly share code, notes, and snippets.

View mdwhatcott's full-sized avatar

Michael Whatcott mdwhatcott

View GitHub Profile
@mdwhatcott
mdwhatcott / html_compile.py
Created September 17, 2012 22:39 — forked from anglepoised/html_compile.py
Python script to compile .shtml files with server side includes down to flat HTML suitable for hosting on S3 or where SSIs aren't supported.
#! /usr/bin/env python
import os
import re
import shutil
from os.path import splitext
SOURCE = os.getcwd() + "/www/"
TARGET = os.getcwd() + "/compiled/"
if not os.path.exists(TARGET):
@mdwhatcott
mdwhatcott / validate_struct.go
Last active November 4, 2015 23:05
One way to validate struct fields that are strings, and that have a struct tag with a regex.
package web
import (
"bytes"
"reflect"
"regexp"
"fmt"
"errors"
"strings"
)
Tweaks to Intellij:
Load Golang SDK
Mark Golang SDK as default
---
Keyboard Shortcuts:
Go to end of file
@mdwhatcott
mdwhatcott / logger.py
Created June 13, 2013 15:28
Write log messages to the console (sys.stdout) and to a log file, all managed as a context manager.
import sys
class Logger(object):
"""
Write log messages to the console (sys.stdout) and to a log file,
all managed as a context manager:
>>> with Logger('log_file.txt'):
... print "Hello, World!" # goes to stdout and to the log file
@mdwhatcott
mdwhatcott / mnemonic.py
Last active January 2, 2016 01:29
Here's some Python code to convert a passage of text into first-letter sequences to facilitate memorization:
def first_letter_mnemonic(text):
words = text.split()
letters = []
for word in words:
letters.append(word[0])
if word[-1] in ',-': # inline punctuation
letters.append(word[-1])
elif word[-1] in '.;:?!': # delimiting punctuation
@mdwhatcott
mdwhatcott / goconvey-v2-example.go
Last active January 4, 2016 07:59
Detailed example of the 2.0 update to GoConvey
// NOTE: This is examples code which never actually became valid because we found a better way.
func TestScoring(t *testing.T) {
Convey("Subject: Bowling Game Scoring", t, func(c Context, so Assertion) {
var game *Game // Whatever you do, don't do this: game := NewGame()
// Otherwise nested closures won't reference the correct instance
Convey("Given a fresh score card", c, func() {
game = NewGame()
@mdwhatcott
mdwhatcott / Default (OSX).sublime-keymap
Created November 29, 2016 16:35
sublime keyboard shortcuts
[
{ "keys": ["super+k", "super+w"], "command": "toggle_setting", "args": {"setting": "word_wrap"}},
{ "keys": ["super+k", "super+m"], "command": "toggle_minimap" },
{ "keys": ["super+k", "super+t"], "command": "delete_trailing_spaces" }
]
@mdwhatcott
mdwhatcott / Preferences.sublime-settings
Created November 29, 2016 16:36
sublime preferences
{
"close_windows_when_empty": true,
"color_scheme": "Packages/Dayle Rees Color Schemes/sublime/darkside.tmTheme",
"draw_white_space": "all",
"font_face": "Source Code Pro",
"font_size": 19,
"ignored_packages":
[
"Vintage"
],
@mdwhatcott
mdwhatcott / path.py
Created March 31, 2018 17:35
Dynamic attribute resolution to mimic a directory tree on a file system (either real or contrived).
class Path(object):
"""
This nifty class uses dynamic attribute resolution to mimic a directory
tree on a file system (either real or contrived).
"""
def __init__(self, root, enforce_real_paths=False):
self.root___ = str(root)
self.navigation___ = []
self.enforce___ = enforce_real_paths
if self.enforce___ and not os.path.exists(self.root___):
@mdwhatcott
mdwhatcott / binary.py
Last active February 23, 2019 23:08
Chunks the bit groupings in bytes if the specified length is divisible by 8.
def main():
print ' 42 in 32 bits:', bits(42, 32)
print '-42 in 32 bits:', bits(-42, 32)
print '-42 in 20 bits:', bits(-42, 20)
print
def bits(number, size_in_bits):
"""
The bin() function is *REALLY* unhelpful when working with negative numbers.