Skip to content

Instantly share code, notes, and snippets.

@iand
iand / bounds check results
Created September 25, 2018 13:33
Bounds check elimination in Go
14:24 $ go build -gcflags="-d=ssa/check_bce/debug=1"
# _/home/iand/wip/bounds
./bounds.go:17:12: Found IsSliceInBounds
./bounds.go:18:10: Found IsInBounds
./bounds.go:19:10: Found IsInBounds
./bounds.go:20:10: Found IsInBounds
./bounds.go:21:10: Found IsInBounds
./bounds.go:23:12: Found IsSliceInBounds
./bounds.go:24:11: Found IsInBounds
./bounds.go:25:11: Found IsInBounds
@iand
iand / main.go
Last active December 7, 2017 17:14
How I start writing every command line tool in Go
package main
import (
"flag"
"fmt"
"os"
)
func main() {
flag.Parse()
@iand
iand / gist:2956833
Created June 19, 2012 22:14
Plotinum Example
package main
import (
"code.google.com/p/plotinum/plot"
"code.google.com/p/plotinum/vg"
"code.google.com/p/plotinum/vg/veceps"
"math/rand"
)
func main() {
@iand
iand / README.md
Created June 26, 2014 12:52
Getting started with Cayley
# Show modified files in last commit:
dl = "!git ll -1"
# Show a diff last commit:
dlc = diff --cached HEAD^
# List oneline commits showing relative dates:
ld = log --pretty=format:"%C(yellow)%h\\ %Cred%d\\ %Creset%s\\ %C(green)(%ad)%Cblue\\ [%cn]" --decorate --date=relative
# List oneline commits showing dates
@iand
iand / gist:8581346
Last active January 4, 2016 06:19
Reasons why Go works for me

Some notes on why Go works for me and why it might work for you if you're looking for another language to add to your repetoire. Goes without saying that this reflects my personal taste.

Go features that I particularly like

  • Multicore is the future so I like that Go has concurrency built right into the core. Goroutines and channels provide a very accessible metaphor for thinking about concurrent programming. They're supported by language features that really make Go shine in this area. The select statement, for example, makes it easy to listen to and synchronise events from different concurrent threads.
  • Provides both pointers and value types, but the pointers are safe and managed. Automatic memory management means its safe to return a pointer to a local variable.
  • Interfaces in Go are smooth and unobtrusive. They automatically apply to anything with the right function signature so you can define interfaces that are satisfied by 3rd party code without you having to change it.
  • Errors are signale
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println("Test interrupt nonsense")
@iand
iand / me.squirtle
Created July 10, 2012 22:10 — forked from kierdavis/me.squirtle
Squirtle syntax example
name <http://kierdavis.com/data/me> as me
name <http://kierdavis.com/data/projects> as projects
pattern ?l ?n ?p ?pt { a foaf:OnlineAccount
rdfs:label ?l
foaf:accountName ?n
foaf:accountServiceHomepage ?p
foaf:isPrimaryTopicOf ?pt
} as Account
me { a foaf:Person
foaf:name "Kier Davis"
@iand
iand / gist:2948220
Created June 18, 2012 12:46
A data item that automatically saves data at a maximum rate of once every second, even if the data is changing much faster than that.
// A data item that automatically saves data at a maximum rate of once every second,
// even if the data is changing much faster than that.
// I didn't write this code. It was created by Roger Peppe and sent to the
// go-nuts mailing list. The original version is at http://play.golang.org/p/1LCxri0EXz
package main
import (
"io/ioutil"
@iand
iand / getrdfa.py
Created June 10, 2011 15:29
Command line util for extracting RDFa from a page
#!/usr/bin/python
import sys
import rdflib
g = rdflib.Graph()
g.parse(sys.argv[1], format="rdfa")
print g.serialize(format="turtle")