Projects
Here you can find the list of projects I have been working on.
ben
ben is a CLI tool written in Golang. The idea behind it is that you can configure it to run your benchmark code under multiple hardware specs and environments, eg:
- ubuntu:16.04 + golang:1.11 + 2vCPU + 8GB RAM
- ubuntu:16.04 + golang:1.10.1 + 2vCPU + 8GB RAM
It would then spin up two short-lived containers using the hyper.sh cloud, run your benchmarks and generate a report comparing both results for you.
I intend to go back to work on it this year, implementing support for Kata Containers/Firecracker MVMs, since hyper.sh cloud has shutdown.
dogstatsd-local
dogstatsd-local is a simple UDP Service written in Ruby. It is meant to help when adding instrumentation with DataDog to your project, by acting as a sidecar container printing all incoming metrics to STDOUT in a JSON prettified format.
Adding to your project, via docker-compose:
version: '3.4'
services:
dogstatsd-local:
image: drish/dogstatsd-local
ports:
- 8125:8125/udp
Watch the logs:
~/drish/ » docker run -p 8125:8125 drish/dogstatsd-local
INFO -- : initialized dogstatsd-local 0.0.0.0:8125
INFO -- : waiting for statsd datagrams..
Send metrics using any statsD client
require 'datadog/statsd'
statsd = Datadog::Statsd.new('dogstatsd-local', 8125)
statsd.increment('page.views')
Will log:
I, [2019-09-18T18:44:38.221440 #1] INFO -- : {"path":"page.views","namespace":"page","name":"views","value":1}
benchparser
benchparser is a Ruby gem that parses multiple languages benchmark outputs, e.g:
a Golang benchmark output:
goos: darwin
goarch: amd64
pkg: github.com/drish/parser
BenchmarkFib1-8 1000000000 2.48 ns/op 0 B/op 0 allocs/op
PASS
ok github.com/drish/parser 9.960s
"
Now to parse that:
require 'benchparser'
Bp.parse(data).functions.first[:iterations] # 1000000000
cloak
cloak is a super simple CLI encryption tool written in Golang, it aims to help you encrypting files using passphrases. It uses the incredible scrypt algorithm by Colin Percival for key derivation and NaCL box for the actual encryption.
I have a long list of TODOs I would like to see implemented on it, eg:
- key splitting using shamir algorithm
- hashicorp’s vault integration.
It shouldn’t be used in production since this tool has never been formally validated by a cryptographer, like all crypto software should be.
hyperb
hyperb was the official Ruby Gem for of Hyper.sh cloud API. It supported almost 95% of their API. Unfortunately they had to shutdown, their team is currently working on Kata Containers, which seems to be a really interesting project.
franz cloud
franz cloud is a platform still WIP, I am currently planning and designing it. More details to come soon !!
library
collection of papers I’m interested on.
~