Skip to content

Instantly share code, notes, and snippets.

@paulvictor
paulvictor / config
Created June 7, 2017 09:40
i3-config
# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout some time, delete
# this file and re-run i3-config-wizard(1).
#
# i3 config file (v4)
#
# Please see http://i3wm.org/docs/userguide.html for a complete reference!
@paulvictor
paulvictor / ForeignObjectHelper.purs
Created April 7, 2017 11:41
Getting data from JS objects
module Object where
import Prelude
import Data.Foreign
import Data.Foreign.Class
import Data.String
import Data.List (List(..), fromFoldable)
import Data.List.Types
import Data.Either
import Control.Monad.Except.Trans
@paulvictor
paulvictor / retryAff.purs
Created March 21, 2017 10:59
Retrying an Aff
module Main where
import Control.Monad.Aff
import Control.Monad.Eff.Console
import Control.Monad.Eff
import Network.HTTP.Affjax
import Network.HTTP.StatusCode
import Data.Functor
import Network.HTTP.Affjax.Response
import Control.Monad
@paulvictor
paulvictor / retry.purs
Created March 21, 2017 10:11
Retrying in purescript
retry' :: ∀ e a. Eff e a → (a → Boolean) → Int → String → ExceptionableEff e a
retry' action cond i errMsg = ExceptT $ retry'' action cond i errMsg
where retry'' action cond i errMsg | i <= 0 = map (\_ → Left errMsg) action
| otherwise = do
res ← action
if cond res then pure $ Right res else retry'' action cond (i-1) errMsg
@paulvictor
paulvictor / gist:e8625977cda8e4d8a10cde90e9dbd87e
Created February 22, 2017 09:18
Monadic composition of screens
flow = do
_ <- splashScreen
l <- languageSet
pure(l ? npciSplashScreen : ChooseLanguageScreen)
npciSplashScreen = do
_ <- wait 0
permission <- checkPermission
pure(permission ? postPermission : showPermission)
@paulvictor
paulvictor / cvimrc
Last active February 5, 2019 06:51
My temporary cvimrc
set nohud
set smoothscroll
"set noautofocus " The opposite of autofocus; this setting stops
" sites from focusing on an input box when they load
set typelinkhints
set dimhintcharacters
let scrollstep = 70
let zoomfactor = 0.1
let scrollduration = 350
let searchlimit = 500
@paulvictor
paulvictor / ObservableEither.js
Created February 18, 2016 06:51
Monad Transformer combining Observable and Either to handle non-determinism, async and error handling
"use strict"
var R = require("ramda");
var Sequelize = require("sequelize");
var Either = require("fantasy-eithers");
var Left = Either.Left
var Right = Either.Right
var Observable = require("rx").Observable;
var rx = require("rx");
var EitherHelpers = require("fantasy-contrib-either")
@paulvictor
paulvictor / ObservableT.js
Created January 28, 2016 09:06
Demonstrate how to use monadTransformers to combine monads(Observerable and IO in this case) to form higher order monads
"use strict"
var m = require("monet");
var MonadT = m.MonadT;
var IO = m.IO;
var Observable = require("rx").Observable;
class IOObs {
constructor(ioObservable){
this.value = ioObservable;
}
@paulvictor
paulvictor / id_rsa.pub
Created July 2, 2014 04:31
Paul's public key
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDs/OqkjP+BkZAqppcifbiK93yFd4QznkbY7NVVrt4VaQFwn24X66I0h5k1b+e4TPBA5KHP1iZPMYlX22TCg/zu2H7ldoEANbQO2HgOnQttkYg0y3y14FEQ3i2URohASaMsKV6+SMse3Eg8RN6Am2V8xQbZDxE3XFbddamCWfcLDEeMnf7sVhmSB5d1p1X/KioeZJTbP8bq/F2UXscbXybQBLwv6jjptgfiKmuHAvzVIV8vjk3AClOKkweFb/AONNqfQQZkRXUvaqbgjo3US1VYiBApz3JbQk6rlbOlwRWmQVJegRZmegng+qyD8/+nK2dLzKiYsG2UgLnbG60orGfZ paul@AllSpark.local
@paulvictor
paulvictor / zpop.rb
Created August 30, 2012 07:53
Ruby script for a Redis zpop
require 'redis'
get_and_rem_script = <<EOF
local resp = redis.call('zrangebyscore', KEYS[1], '-inf', '+inf', 'LIMIT', '0', '1');
if (resp[1] ~= nil) then
local val = resp[# resp]
redis.call('zrem', KEYS[1], val)
return val
else
return false