Skip to content

Instantly share code, notes, and snippets.


Halan Pinheiro halan

View GitHub Profile
View gist:567583fd8f7fb0219b8323ebca5eab62
"countries": [
"country": "Afghanistan",
"states": ["Badakhshan", "Badghis", "Baghlan", "Balkh", "Bamian", "Daykondi", "Farah", "Faryab", "Ghazni", "Ghowr", "Helmand", "Herat", "Jowzjan", "Kabul", "Kandahar", "Kapisa", "Khost", "Konar", "Kondoz", "Laghman", "Lowgar", "Nangarhar", "Nimruz", "Nurestan", "Oruzgan", "Paktia", "Paktika", "Panjshir", "Parvan", "Samangan", "Sar-e Pol", "Takhar", "Vardak", "Zabol"]
"country": "Albania",
"states": ["Berat", "Dibres", "Durres", "Elbasan", "Fier", "Gjirokastre", "Korce", "Kukes", "Lezhe", "Shkoder", "Tirane", "Vlore"]
halan /
Created Mar 25, 2021 — forked from soarez/
How to setup your own CA with OpenSSL

How to setup your own CA with OpenSSL

For educational reasons I've decided to create my own CA. Here is what I learned.

First things first

Lets get some context first.

halan / catamorphism.js
Created Mar 23, 2020
Catamorph structure
View catamorphism.js
Loop = (value, {x, y}) => ({
value: value,
cata: mapping =>
x > y
? value
: Loop(mapping(value, x), {x: x + 1, y})
halan / lens.js
Created Mar 23, 2020
A pure lens implementation strongly based on ramda implementation, made to teaching my internships at
View lens.js
o = { user: { name: 'foo' } }
const get = key => obj => obj[key]
const set = key => (x, obj) =>
({ ...obj, [key]: x })
Identity = v => ({
value: v,
halan / monads.js
Last active Mar 13, 2020
Example of monads to manage validations
View monads.js
// base
const Valid = x => ({
map: f => Valid(f(x)),
chain: f => f(x),
bimap: ({valid}) => Valid(valid(x)),
cata: ({valid}) => valid(x)
const Wrong = x => ({
halan / fantasyland.js
Last active Feb 21, 2020
Fantasy Land // based on the specs described here
View fantasyland.js
// Setoid
a.equals(a) === true // reflexivity
a.equals(b) === b.equals(a) // summetry
a.equals(b) && b.equals(c) == q.equals(c) // transitivity
// Ord
// must also implement the Setoid
a.lte(b) || b.lte(a) === true // totality
halan / accounting.sql
Created Aug 8, 2018 — forked from 001101/accounting.sql
Basic double-entry bookkeeping system, for PostgreSQL.
View accounting.sql
CREATE TABLE accounts(
id serial PRIMARY KEY,
id serial PRIMARY KEY,
description VARCHAR(1024) NOT NULL,
amount NUMERIC(20, 2) NOT NULL CHECK (amount > 0.0),
-- Every entry is a credit to one account...
halan /
Created Mar 12, 2017 — forked from yang-wei/
Elm Json.Decode tutorial and cheatsheet

When receiving JSON data from other resources(server API etc), we need Json.Decode to convert the JSON values into Elm values. This gist let you quickly learn how to do that.

I like to follow working example code so this is how the boilerplate will look like:

import Graphics.Element exposing (Element, show)
import Task exposing (Task, andThen)
import Json.Decode exposing (Decoder, int, string, object3, (:=))

import Http
View elmhelloworld.elm
import Html
main = Html.text "Hello World"
halan / angular.controller.js
Created Mar 2, 2017 — forked from suissa/angular.controller.js
Exemplo de uma função em um controller em ng 1.6
View angular.controller.js
function ListController ( Service, $mdDialog ) {
const vm = this;
vm.list = true;
vm.PATH = MODULE_NAME.toLowerCase();
const hiddenFields= [
, 'password'
, 'automaticLogin'