programming

Intro to Distributed Hash Tables (DHTs)

Posted on by irrlab

“We introduce the idea of the Chord DHT from scratch, giving some intuition for the decisions made in the design of Chord…”

www.freedomlayer.org/articles/dht_intro.html

Introducing Proxygen, Facebook’s C++ HTTP framework

Posted on by irrlab

We are excited to announce the release of Proxygen, a collection of C++ HTTP libraries, including an easy-to-use HTTP server. In addition to HTTP/1.1, Proxygen (rhymes with “oxygen”) supports SPDY/3 and SPDY/3.1. We are also iterating and developing support for HTTP/2.

Proxygen is not designed to replace Apache or nginx — those projects focus on building extremely flexible HTTP servers written in C that offer good performance but almost overwhelming amounts of configurability. Instead, we focused on building a high performance C++ HTTP framework with sensible defaults that includes both server and client code and that’s easy to integrate into existing applications. We want to help more people build and deploy high performance C++ HTTP services, and we believe that Proxygen is a great framework to do so. You can read the documentation and send pull requests on our Github site…”

https://code.facebook.com/posts/1503205539947302/introducing-proxygen-facebook-s-c-http-framework/

A Comparison of Image hashing Libraries

Posted on by irrlab

“We present in this post the empirical comparison of two image hashing libraries: libpuzzle and pHash. We expose the results we found and the motivation to pick one over the other for production usage…”

totems.co/blog/comparison-image-hashing-libraries/

A programmable alarm clock using systemd

Posted on by irrlab

“So, it’s a programmable alarm clock that doesn’t need the laptop to be left turned on to work…”

joeyh.name/blog/entry/a_programmable_alarm_clock_using_systemd/

Bloom Filters

Posted on by irrlab

“The basic bloom filter supports two operations: test and add.

Test is used to check whether a given element is in the set or not. If it returns:

– false then the element is definitely not in the set.
– true then the element is probably in the set. The false positive rate is a function of the bloom filter’s size and the number and independence of the hash functions used.

Add simply adds an element to the set. Removal is impossible without introducing false negatives, but extensions to the bloom filter are possible that allow removal e.g. counting filters…”

www.jasondavies.com/bloomfilter/

Essential Patterns in Go

Posted on by irrlab

“The Golang tutorial and Effective Go will get you up to speed on the basics, but goroutines, channels, and interfaces make much more complex algorithms easier to implement (not to mention more readable) in Go. Here I’ve compiled some nifty Golang patterns from various talks, websites, etc. and made them a bit easier to understand at a glance. Hopefully everyone finds it helpful to have them in one place and beginner-friendly-ified!…”

seetravisblog.com/essential-patterns-in-go

Eight Docker Development Patterns

Posted on by irrlab

“Here I will outline some patterns that have started to show up repeatedly in my use of Docker. I don’t expect any of them to be particularly novel or any big surprises, but I hope some can be useful, and I would very much like to hear from others about patterns you come across while working with Docker.

A foundation for all of my Docker experiments, is keeping state that should persist in volumes, so that the Docker containers themselves can be re-created at will without data loss (unless I’ve been naughty and modified container state without updating the Dockerfile’s – and regularly rebuilding the containers helps stop that bad habit).

The examples Dockerfiles below are all focused on that: Creating containers where the containers themselves can be replaced at any time without having to think about it.

The more regularly the containers are recreated; the more habitual this becomes, the more it reinforces a habit of avoiding state outside of clearly defined locations that are explicitly persisted…”

www.hokstad.com/docker/patterns