We are avid supporters of open-source at VividCortex and of our team when they contribute to the open-source world. It’s a win for us and a win for the community. While we are an early stage startup, we’re happy to make this one of our priorities. We wanted to thank all our team members for their awesome contribution and for setting a big record at VividCortex: six open-source projects in six weeks!
Without further ado, here are the projects:
The major need we have is reproducible builds: we want to be able to freeze a build’s dependencies so we can re-fetch exactly the specified versions later and build exactly the same binary, and we want the specification of dependencies to be included in the source code itself. Johnny Deps does that for us, encoding dependencies and their versions in a godeps file.
The short version is that although Go uses errors for error handling, it also has something analogous to exceptions: panic(). But unlike languages that force you to either declare or handle the exception, Go lets you decide. A panic() can be caused by — for example — accessing out of an array’s bounds. If not handled, it crashes your program.
This is eminently sensible once you’ve learned the Go-ish way of doing things. Go also has an eminently sensible way to handle panics: defer recover(). And there’s a great example of how to use it in the Go standard library, in the built-in HTTP server. Each request runs in a separate goroutine, and if it crashes, it’s recovered so it won’t crash the whole HTTP server.
Which brings us to robustly, a little library I wrote a while ago, to help run programs in the same fashion without having to write the code yourself.
Go Database SQL Tutorial: *Self *Explanatory (GitHub)
This is a tutorial on Go’s database/sql package (http://golang.org/pkg/database/sql/). The package’s documentation tells you what everything does, but it doesn’t tell you how to use the package. We find ourselves wishing for a quick-reference and a “getting started” orientation. This repo is an attempt to provide that. Contributions are welcome.
A low CPU, low memory, zero warm-up period implementation of exponentially weighted moving averages in Go.
We’ve decided to implement histograms based on those found in “A Streaming Parallel Decision Tree Algorithm.” These histograms are dynamic, compressed, and offer efficient quantile approximations. They’re dynamic in that they do not have fixed bin values, and bins adapt to the data that streams in. The histograms also have a fixed maximum bin count, so resource usage stays constant regardless of how many values stream in.
Angular reCaptcha (GitHub)
Use this directive to be able to submit with XHR a form that contains a reCaptcha.
Be sure to keep following us for more updates and a lot more open source contribution!