Skip to content

Instantly share code, notes, and snippets.

View mdwhatcott's full-sized avatar

Michael Whatcott mdwhatcott

View GitHub Profile
@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" }
]
Tweaks to Intellij:
Load Golang SDK
Mark Golang SDK as default
---
Keyboard Shortcuts:
Go to end of file
@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"
)
@mdwhatcott
mdwhatcott / echo_server.go
Created September 21, 2015 21:44
HTTP server that dumps the over-the-wire HTTP request it serves.
package main
import (
"fmt"
"log"
"net/http"
"net/http/httputil"
)
func main() {
@mdwhatcott
mdwhatcott / testing.go
Created August 13, 2015 17:29
golang testing package improvements
package something
import "testing"
type MyFixture struct {
*testing.T
sut Something // stuff under test
}
@mdwhatcott
mdwhatcott / traverse.go
Created July 29, 2015 21:06
Recursively find a value in a JSON object that can contain fields and values, as long as all values are only JSON objects with similarly defined objects with fields and values.
// traverse recursively finds a value in a JSON object that can contain fields and values,
// as long as all values are only JSON objects with similarly defined objects with fields and values.
// This works with structures like the US and International Street APIs.
// example: traverse(d, "components", "primary_number) // will return the primary number of the candidate)
func traverse(i interface{}, keys ...string) interface{} {
var (
found bool
object map[string]interface{}
)
object, found = i.(map[string]interface{})
@mdwhatcott
mdwhatcott / custom_json.go
Created July 29, 2015 17:15
Example of implementing MarshalJSON and UnmarshalJSON to serialize and deserialize custom types to JSON in Go. Playground: http://play.golang.org/p/7nk5ZEbVLw
package main
import (
"bytes"
"encoding/json"
"fmt"
"strconv"
)
func main() {
package utils
// toInt is a port of the little endian path of the .Net BitConverter.ToInt32
// function. It does exactly what toIntReversed (below) does but it operates
// on a slice that is already in the expected order. If your slice is in
// reverse order, use toIntReversed (below) instead.
// For 4-byte integers the gist of this algorithm is:
// return int(b[0]) | int(b[1])<<8 | int(b[2])<<16 | int(b[3])<<24
// The for loop implementation allows byte slices of arbitrary length
// (up to 4 bytes because we return an int) to be converted to integer
@mdwhatcott
mdwhatcott / exhaust_waitgroup_hack.go
Created February 24, 2015 05:45
Don't ever do this (but it works).
package main
import (
"fmt"
"strings"
"sync"
)
func main() {
var waiter sync.WaitGroup
@mdwhatcott
mdwhatcott / gtd_next_actions.py
Created October 30, 2014 04:57
Gather all actions across all projects in a directory and group them according to their context. Helps with GTD.
"""
# Dependencies:
- https://github.com/russross/blackfriday-tool
- http://wkhtmltopdf.org/
TODO: this whole thing should be put under test.
TODO: it would be great to know how long a project (or task) is taking
"""