Skip to content

Instantly share code, notes, and snippets.

View erwinv's full-sized avatar

Erwin Dee Villejo erwinv

View GitHub Profile
@erwinv
erwinv / README.txt
Created May 13, 2016 06:19 — forked from reinareyes/README.txt
Philippine 2016 VP Election Results Animation
This gist contains the plotting script and source dataset used to make the Philippine 2016 VP Election Results animation
posted on Facebook on May 12, 2016 at this link:
>> https://www.facebook.com/reinabelle/posts/10153876907008855?notif_t=like&notif_id=1463020148550623
and also available at:
>> http://giphy.com/gifs/labanleni-3oEjHTx26SAc2O3E2s
Election tally data were taken (manually) from the GMA News site:

Keybase proof

I hereby claim:

  • I am erwinv on github.
  • I am edjv (https://keybase.io/edjv) on keybase.
  • I have a public key ASAjIlDL7fnaGAxAOeyoJawY-1_E7D5gWOtJiekjMJTLuAo

To claim this, I am signing this object:

@erwinv
erwinv / getbackuppathsAsync.js
Last active February 8, 2019 22:57
backup paths exercise
#!/usr/bin/env node
const fs = require('fs')
const path = require('path')
const readline = require('readline')
const promisify = require('util').promisify || function(fn) {
return function(...args) {
return new Promise((resolve, reject) => {
fn(...args, (err, ...results) => {
if (err) reject(err)
@erwinv
erwinv / getbackuppathsRx.js
Last active February 9, 2019 05:25
backup paths exercise (FRP version)
#!/usr/bin/env node
const fs = require('fs')
const path = require('path')
const readline = require('readline')
const R = require('ramda')
const Bacon = require('baconjs')
const Promise = require('bluebird')
@erwinv
erwinv / PKGBUILD
Created February 19, 2019 05:33
lift-cli
# Maintainer: Erwin Villejo <erwin.villejo@gmail.com>
pkgname=lift-cli
pkgver=0.1
pkgrel=1
pkgdesc="Java libraries and command line tools for the 'Algorithms, 4th Edition' Princeton course."
arch=('any')
url="https://lift.cs.princeton.edu"
license=('unknown')
depends=('jdk-openjdk' 'sh' 'bash')
source=('https://lift.cs.princeton.edu/java/linux/lift-cli.zip')
@erwinv
erwinv / main.cpp
Created June 20, 2019 07:43
How to correctly capture subscription pointer returned by service on the susbcription callback
#include <functional>
#include <iostream>
#include <memory>
#include <deque>
class Subscription
{
public:
Subscription() : active_(true)
{
@erwinv
erwinv / netmask.cpp
Created June 20, 2019 09:57
Netmask from subnet size
#include <cstdint>
#include <optional>
#include <string>
std::optional<std::string> getNetMaskFromSubnetSize(uint64_t subnetSize)
{
auto isPowerOf2 = [](uint64_t num) { return num > 0 and (num & (num - 1)) == 0; };
if (not isPowerOf2(subnetSize))
return std::nullopt;
@erwinv
erwinv / main.cpp
Created June 20, 2019 09:58
Deferred call to weak bound member function
#include <functional>
#include <iostream>
#include <memory>
using namespace std;
class A : public enable_shared_from_this<A>
{
public:
A() : data_(make_unique<int>(0))
@erwinv
erwinv / index.js
Created June 20, 2019 10:00
Simulate binary (compressed) logger
const fs = require('fs')
const readline = require('readline')
const zlib = require('zlib')
function simulateBinaryLogger(filename, done) {
const outputFile = fs.createWriteStream(filename + '.gz', 'binary')
const gzip = zlib.createGzip()
gzip.pipe(outputFile)
outputFile.on('close', done)
@erwinv
erwinv / memberDetector.cpp
Last active September 16, 2022 09:49
Check if member exists via std::enable_if (SFINAE)
#include <iostream>
#include <string>
#include <type_traits>
#include <vector>
using StringVec = std::vector<std::string>;
namespace
{