HNHacker News
TopNewBestAskShowJobs

natebrennand

24 karma · joined September 18, 2013

Building realtime data systems for Usage Based Billing at Metronome
submissionscomments
natebrennand··on Corrosion
> Finally, let’s revisit that global state problem. After the contagious deadlock bug, we concluded we need to evolve past a single cluster. So we took on a project we call “regionalization”, which creates a two-level database scheme. Each region we operate in runs a Corrosion cluster with fine-grained data about every Fly Machine in the region. The global cluster then maps applications to regions, which is sufficient to make forwarding decisions at our edge proxies.

This tier approach makes a lot of sense to mitigate the scaling limit per corrosion node. Can you share how much data you wind up tracking in each tier in practice?

How concise is the entry for each application -> [regions] table? Does the constraint of running this on every node mean that this creates a global limit for number of applications? It also seems like the region level database would have a regional limit for the number of Fly machines too?

natebrennand··on The fastest Postgres inserts
None of these tests seem to run for longer than a minute? Drawing conclusions from experiments like this is fraught.
natebrennand··on Ask HN: In what creative ways are you using Makefiles?
We use Makefile "libraries" to reduce the amount of boilerplate each of our microservices have to contain. This then allows us to change our testing practices in bulk throughout all our repos.

https://github.com/Clever/dev-handbook/tree/master/make

natebrennand··on Clarifications about Redis and Memcached
The group behind Arrakis did some testing by bypassing the kernel through NIC's and the results were pretty amazing. They also made modifications to memcached and got similarly great results FWIW.

https://www.usenix.org/system/files/conference/osdi14/osdi14...

natebrennand··on Projects the Hard Way – Coding Projects for Early Coders
Zed's said on twitter that he's been messing with Go. It might be somewhere on his work queue to write about it.
natebrennand··on RethinkDB 2.0 is amazing
There's been some talk of it but they haven't committed to anything.

https://groups.google.com/forum/#!searchin/rethinkdb/meteor/...

natebrennand··on “Go’s design is a disservice to intelligent programmers”
The flag package might not be perfect but the author wasn't even using it properly so it's hard to judge it based off of this example.
natebrennand··on Show HN: Simple wiki server written in Go
FWIW, the Golang core developers regret using the old UNIX conventions in packages. I don't think it's viable at this stage to take them back, but they do agree that it doesn't fit the language well.

http://gophercon.sourcegraph.com/post/83845316771/panel-disc...

natebrennand··on Ex-Googlers CockroachDB: A Scalable, Geo-Replicated, Transactional Datastore
Their chosen solutions to the GC issues are in this roadmap. [0]

[0]: https://docs.google.com/document/d/16Y4IsnNRCN43Mx0NZc5YXZLo...

natebrennand··on GitHub Student Developer Pack
generally they just rely on you having a .edu email address so I suspect you have access to the discounts.
natebrennand··on Neovim Newsletter – Issue #1 – A New Hope
It's worth noting they appear to be working closely [1] with Valloric to ensure that vim plugins will easily work with NeoVim.

[1] https://github.com/neovim/neovim/pull/582

natebrennand··on An Introduction to Programming in Go
it looks like they copied in the entire sqlite3 library which skewed the language makeup.

https://github.com/drone/drone/search?l=c

natebrennand··on Speed memory access by arranging data to take advantage of CPU caching
There are some interesting implications on databases in terms of column-stores vs row-stores due to CPU caching. Besides the I/O improvements, column-stores benefit greatly from better CPU usage because the data is iterated over by type (column by column), so the same operators stay in the cache. This allows data to be pipelined in to the CPU and processed very quickly relative to traditional row-stores. It can even be efficient to operate on compressed data [1] if the relevant decoding data can be kept in the cache.

In case you missed it, there was a relevant article last week about how B-Trees benefit by reducing the number of cache requests.

[1]. http://db.lcs.mit.edu/projects/cstore/abadisigmod06.pdf

[2]. http://www.me.net.nz/blog/btrees-are-the-new-black/

natebrennand··on PostgreSQL Columnar Store for Analytic Workloads
That's pretty accurate. Column-stores also make data compression significantly more effective because they are storing many values of the same type together [1].

The improvements to your first two points are typically 1-2 magnitudes faster with column-stores [2].

[1] http://db.lcs.mit.edu/projects/cstore/abadisigmod06.pdf

[2] http://db.csail.mit.edu/projects/cstore/abadi-sigmod08.pdf

natebrennand··on GitHub's language detection is broken
They actually have a set of files and libraries that they ignore (.DS_Store/jquery/boostrap/etc)

https://github.com/github/linguist/blob/master/lib/linguist/...

natebrennand··on Beat This Level, Get A Programming Job
This seems pretty incredible that CodeCombat has already reached the point where they're placing people into jobs. It's supposed to be Codecademy's goal [1] to do that eventually but they've been around much longer.

1. http://bits.blogs.nytimes.com/2011/09/14/codecademy-offers-f...

natebrennand··on How to Hire
I suspect it's to do with the 100% uptime they should be aiming for. They might have some other interesting stuff they're working on as well.