Skip to content

Instantly share code, notes, and snippets.

View jtuple's full-sized avatar

Joseph Blomstedt jtuple

  • Facebook
  • Seattle, WA
View GitHub Profile

Stevey's Google Platforms Rant

I was at Amazon for about six and a half years, and now I've been at Google for that long. One thing that struck me immediately about the two companies -- an impression that has been reinforced almost daily -- is that Amazon does everything wrong, and Google does everything right. Sure, it's a sweeping generalization, but a surprisingly accurate one. It's pretty crazy. There are probably a hundred or even two hundred different ways you can compare the two companies, and Google is superior in all but three of them, if I recall correctly. I actually did a spreadsheet at one point but Legal wouldn't let me show it to anyone, even though recruiting loved it.

I mean, just to give you a very brief taste: Amazon's recruiting process is fundamentally flawed by having teams hire for themselves, so their hiring bar is incredibly inconsistent across teams, despite various efforts they've made to level it out. And their operations are a mess; they don't real

Today was my last day at Basho, just 3 weeks shy of 4 years.

Looking back, I'm thrilled how much we've accomplished, both with Riak itself but also the impact Basho has had on the greater distributed systems community.

I'm proud that my work on improving Riak's clustering system in Riak 1.0 ended up inspiring how Akka Clustering was built.

I'm forever grateful for being given the opportunity to build

Today was my last day at Basho, just 3 weeks shy of 4 years.

Looking back, I'm thrilled how much we've accomplished, both with Riak itself but also the impact Basho has had on the greater distributed systems community.

I'm proud that my work on improving Riak's clustering system in Riak 1.0 ended up inspiring how Akka Clustering was built.

I'm forever grateful for being given the opportunity to build

The specific issue we care about is previously written data silently being corrupted by disk (eg. bit rot)

Consider paxos+log or Raft style approach. Once value is committed from log to replicated state/DB, it's assumed to be stable. But, there's no guarantee the disk doesn't lose that data later. While the current approach in Riak doesn't use traditional propose/commit log, the underlying problem is the same.

Example of problem we want to avoid.

We have 3-replicas, A/B/C with the following committed state (no other operations in flight):
A: a=100, b=200 (currently offline/partitioned)
dvvset.erl:157: Invalid type specification for function dvvset:update/2. The success typing is ({[{_,non_neg_integer()}],[any(),...]},_) -> {[{_,non_neg_integer()},...],[]}
dvvset.erl:169: Invalid type specification for function dvvset:update/3. The success typing is ({[{_,non_neg_integer(),[any()]}],[any(),...]},{[{_,non_neg_integer(),[any()]}],[any()]},_) -> {[{_,non_neg_integer()},...],[any()]}
riak_core_metadata.erl:190: The call riak_core_metadata:itr_default({_,_}) does not have an opaque term of type riak_core_metadata:iterator() as 1st argument
riak_core_metadata.erl:215: The call riak_core_metadata:itr_default({_,_}) does not have an opaque term of type riak_core_metadata:iterator() as 1st argument
<html>
<body>
Testing
</body>
</html>

A Glimpse Into The Future of Riak at RICON 2012

On October 10th, the two-day RICON 2012 conference kicks off with a focus on distributed systems. Yes, there will be a large focus on Riak. The talk schedule makes that clear. However, the focus on the conference is really about distributed systems and getting smart people to come together and hang out for a couple days. Like many conferences, the most memorable element is going to be the people you meet and the side conversations over coffee and beer.

$ ./dev/dev2/bin/riak-admin join dev1@127.0.0.1
The 'join' command has been deprecated in favor of the new
clustering commands provided by 'riak-admin cluster'. To continue
using the deprecated 'join' command, use 'join -f'
$ ./dev/dev2/bin/riak-admin cluster
Usage: riak-admin cluster <command>
The following commands stage changes to cluster membership. These commands
do not take effect immediately. After staging a set of changes, the staged
$ ./dev/dev2/bin/riak-admin join dev1@127.0.0.1
The 'join' command has been deprecated in favor of the new
clustering commands provided by 'riak-admin cluster'. To continue
using the deprecated 'join' command, use 'join -f'
$ ./dev/dev2/bin/riak-admin cluster
Usage: riak-admin cluster <command>
The following commands stage changes to cluster membership. These commands
do not take effect immediately. After staging a set of changes, the staged
$ /tmp/rt/dev/dev3/bin/riak-admin cluster plan
=============================== Staged Changes ================================
Action Nodes(s)
-------------------------------------------------------------------------------
join 'dev30@127.0.0.1'
force-replace 'dev3@127.0.0.1' with 'dev30@127.0.0.1'
-------------------------------------------------------------------------------
WARNING: All of 'dev3@127.0.0.1' replicas will be lost