One of the recurring conversations I’m having is on whether vessel is a Merkle DAG or Merkle Tree/Trie, and every time I have to start over with explaining that it is not. And this is a deliberate choice.
In this post, I’d like to explore the differences – and this post will also kick off a mini series on how vessel and it’s sibling project wyrd together form a DAG-based conflict-free, replicated data type (CRDT) akin to a Merkle CRDT.
Merkle Trees
But first things first. What is a Merkle tree, or trie, or directed acyclic graph (DAG)?
It’s an elegant concept by which you can easily identify arbitrarily large data. It goes like this:
- Chop up the data into …
The recent issues with Google’s WEI proposal have provided for a few more views of this blog and website, which makes it worth diving into our work a little again.
The previous post on resource access is quite old at this stage, after all.
Quick Recap
Under different grants, we’ve been working on a bunch of loosely related technologies. The highlights are:
- Channeler – a protocol that has can switch between UDP-like lossy and TCP-like lossless modes of connection, as well as novel modes suitable for live broadcast. Channeler can run on top of UDP, on top of IP, or conceivably on top of Ethernet (though this would require some additional routing protocol).
- Vessel – a …
Previously, I wrote about how to use Valgrind for debugging memory issues – and today, I’d like to go into how to use the tool for profiling.
As I wrote before, Valgrind is an instrumentation framework that provides a collection of tools. For profiling, we’ll look at the Callgrind tool together a GUI application called KCachegrind. As a quick historical note, the predecessor to Callgrind is called Cachegrind, and was mostly for examining CPU cache usage – but Callgrind was developed out of that. KCachegrind, on the other hand, kept the old name.
Example Code #1
Let’s again start with some example code.
#include <cstdint>
#include <string>
#include …A recent thread on social media reminded me that some of the development tools I take for granted are not widely known. Veteran game developer Martin Linklater asked about profiling on Linux, which prompted me to mention my favourite Valgrind, which prompted a question about its use. I offered to write up a quick tutorial on it.
But thinking about it a little more, quick, introductory tutorials to the tools we use makes for a useful addition to this section of the blog.
In the first part of this miniature series, I’d like to introduce Valgrind and its Memcheck tool.
Valgrind bills itself as an “instrumentation framework”, which means it provides a collection of tools that …