A collection of somewhat random thoughts.

Writing your first riak test test (yes I know there are two tests there)

As promised in a previous post I'll talk a bit about writing tests for riak_test. To start with the obvious it's pretty simple and pretty awesome. riak_test gives you the tools you've dreamed of when testing distributed riak_core applications: a backchannel to communicate and execute commands on the nodes. a nice and way to bring up and tear down the test environment. helper functions to deal with the riak_core cluster. Read more →

Getting started with riak_test and riak_core

If you don't know what riak_core is, or don't have a riak_core based application you'll probably not take too much practical use of this posts you might want to start with Ryan Zezeski's “working” blog try try try and the rebar plugin. That said if you have a riak_core app this posts should get you started on how to test it with riak_test. We'll not go through the topic of how to write the tests itself, this might come in a later post also the riak_kv tests are a good point to start. Read more →

Plugins with Erlang

Preamble Lets start with this, Erlang releases are super useful they are one of the features I like most about Erlang - you get out an entirely self contained package you can deploy and forget, no library trouble, no wrong version of the VM no trouble at all. BUT (this had to come didn't it) sometimes they are limiting and kind of inflexible, adding a tiny little feature means rolling out a new release, with automated builds that is not so bad but ‘not so bad’ isn't good either. Read more →

A vow to create tickets

I've had some open source projects before, actually quite some, but Project FiFo is by far the most successful one. And aside from the technical perspective I've learned a tremendous amount of new things already, one of which I want so share since. It sounds simple but I never looked at it this way before: Tickets. The project has caught on momentum so fast that at ‘rush hours’ people come with questions, bug reports and feature requests at rate that it's they pile up faster then we can help or answer, the channel and community already does a great job ‘filtering’ out easy to answer topics but enough are complicated to a point where a developer has to look at them. Read more →

Erlang and more DTrace

Some nice additions to the little Erlang DTrace demo. For once I've added a filed to input custom scripts which are run on the server which is pretty neat since it allows running all kind of (l)quantize based scripts from the server and get a nice heatmap. Like how about the heatmap of how Erlang function call times? The script used (also included in the repository): erlang*:::global-function-entry { self->funcall_entry_ts[copyinstr(arg1)] = vtimestamp; } erlang*:::function-return { @time[copyinstr(arg1)] = lquantize((vtimestamp - self->funcall_entry_ts[copyinstr(arg1)] ) / 1000, 0, 63, 2); } Now that is already cool but there is more, in addition to there is a page now that allows to show list based queries (as count or sum) so for example it would be very easy to get a profiling of an Erlang program like this: Read more →

Erlang and DTrace

As part of Project FiFo I've invested some time to research into DTrace and Erlang, not the probes that are there since some time but a DTrace consumer - letting you execute DTrace scripts from within Erlang and read the results. The result of this research is the erltrace a consumer for DTrace implemented as a Erlang NIF. The NIF is based on the node.js and and python implementations - many thanks to them! Read more →

A new start

Now it has been a while, it's surprisingly hard to find a decent way to blog in the end I landed with Octopress. Lets see how that turns out, so far after a slightly bumpy bumpy start it seems decent enough. Read more →