- Dynamo: Amazon’s Highly Available Key-value Store - https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf
- Data Store: Thamani
- Replication Model: TODO
pragma solidity ^0.5.11; | |
contract MyContract { | |
string public myString = "Hello World"; | |
} |
I'm currently reading the Amazon Dynamo paper. As an aid to internalising and retaining the concepts, I will attempt to implement them in a piecemeal fashion. The first of these will be a very simple key-value store that I've named Thamani, the Swahili word for "value". It implements a simple API over TCP, consisting of two methods
put(key: byte array, value: byte array) -> timestamp: 64 bit unix timestamp
get(key: byte array) -> value: byte array, timestamp: 64 bit unix timestamp
class Welcome(Handler): | |
def handle(self, request): | |
if request.user.is_logged_in: | |
return request.redirect('Feed') | |
else: | |
return request.redirect('SignIn') | |
class SignIn(Handler): | |
/* Do stuff here */ | |
next_handler = 'Feed' |
{ | |
"$schema": "http://json-schema.org/draft-04/schema#", | |
"title": "Vega Visualization Specification Language", | |
"defs": { | |
"axis": { | |
"type": "object", | |
"properties": { | |
"type": { | |
"enum": [ | |
"x", |
(ns n01se.externs-for-cljs | |
(:require [clojure.java.io :as io] | |
[cljs.compiler :as comp] | |
[cljs.analyzer :as ana])) | |
(defn read-file [file] | |
(let [eof (Object.)] | |
(with-open [stream (clojure.lang.LineNumberingPushbackReader. (io/reader file))] | |
(vec (take-while #(not= % eof) | |
(repeatedly #(read stream false eof))))))) |
#!/bin/bash | |
## You should really be using ZSH, but who am I to judge? :-) | |
quicklispDir="~/libs/clisp/quicklisp" # Replace this with a directory of your choice | |
mkdir $quicklispDir -p && cd $quicklispDir | |
wget http://beta.quicklisp.org/quicklisp.lisp | |
sbcl --load quicklisp.lisp |
import re | |
from hashlib import md5 | |
def gfm(text): | |
# Extract pre blocks. | |
extractions = {} | |
def pre_extraction_callback(matchobj): | |
digest = md5(matchobj.group(0)).hexdigest() | |
extractions[digest] = matchobj.group(0) | |
return "{gfm-extraction-%s}" % digest |
One of my favorite past times is to look at the notebooks of famous scientists. Da Vinci's notebook is well known, but there plenty others. Worshipping Da Vinci like no other, I bought a Think/Create/Record journal, used it mostly to keep jot down random thoughts and take notes. This was great in the beginning, but the conformity of lines drove me nuts. Only moleskines made blank notebooks, so I had to buy one.
At the same time I started a freelance project. The project itself is irrelevant, but suffice to say it was very complex and spanned several months. It seemed like a perfect opportunity to use the moleskine. Looking back, all my entries fell under few categories: