Skip to content

Instantly share code, notes, and snippets.

View ssaavedra's full-sized avatar

Santiago Saavedra ssaavedra

View GitHub Profile
@ssaavedra
ssaavedra / 5_cpu_percent
Created September 5, 2016 16:32
Get the CPU usage as a percentage. Great for use inside byobu/tmux, but can be used standalone.
#!/bin/bash
#
# 5_cpu_percent: get the global CPU usage as a percentage
#
# Copyright (C) 2016 Santiago Saavedra
#
# Authors: Santiago Saavedra <santiagosaavedra@gmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ssaavedra
ssaavedra / operator.hs
Created November 7, 2016 13:30
Haskell and higher-order polymorphism. Intuitionstic logic and type theory.
{-# LANGUAGE RankNTypes #-}
module Operator
where
(***) f g (x1, x2) = (f x1, g x2)
f :: [a] -> [a]
f = snd . splitAt 1
type GType a = ([a], [a])
@ssaavedra
ssaavedra / using-emacs-to-write-clir-files.md
Last active November 18, 2016 16:40
How to use Emacs to write CLIR files

This is a Beginners Guide to writing CAVI-ART's CLIR files using Emacs, for people who has never used Emacs.

Introduction to Emacs

Emacs is a editor very leaned to using the keyboard as the primary input method. Thus, most commands on Emacs can be entered through the keyboard, although most can also be entered through the toolbar with the mouse.

@ssaavedra
ssaavedra / create-aws-repo.sh
Created May 10, 2017 12:32
Create an AWS ECR repository and add a policy to it from an already existing repo.
#!/bin/bash
# Author: Santiago Saavedra
# License: CC0
# Usage: $0 --help
POLICY_REPOSITORY=${AWS_DEFAULT_ECR_POLICY_REPOSITORY:-policy-repo}
usage () {
cat <<-EOF | awk 'NR==1 && match($0, /^ +/){n=RLENGTH} {print substr($0, n+1)}'
Usage: $0 <aws-repository-name>
@ssaavedra
ssaavedra / fix-vodafone-router.user.js
Last active March 19, 2018 18:49
Fix Vodafone's router UI to be able to auto-fill the user/password again
// ==UserScript==
// @name Fix dumb "new" Vodafone router page
// @namespace http://192.168.1.1//
// @include /http:\/\/(192\.168|10\.(\d{1,3})|172\.(\d+))\.(\d+).1\/login.html/
// @license https://opensource.org/licenses/MIT
// @grant none
// ==/UserScript==
// Uses a regex so that your router can be configured on any local IP.

Keybase proof

I hereby claim:

  • I am ssaavedra on github.
  • I am ssaavedra (https://keybase.io/ssaavedra) on keybase.
  • I have a public key whose fingerprint is 7346 F19D 9BB3 A08C 7532 E0E6 92CB A518 CBD9 18D9

To claim this, I am signing this object:

@ssaavedra
ssaavedra / utils.sh
Created July 26, 2018 18:07
Get latest offset from a Kafka topic
get_latest_offset () {
kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list "$KAFKA_BROKER_LIST" --topic "$1" |cut -d: -f3 | sort | head -1
}
Caused by: com.oracle.svm.core.jdk.UnsupportedFeatureError: Code that was considered unreachable by closed-world analysis was
reached
at java.lang.Throwable.<init>(Throwable.java:265)
at java.lang.Error.<init>(Error.java:70)
at com.oracle.svm.core.jdk.UnsupportedFeatureError.<init>(UnsupportedFeatureError.java:31)
at com.oracle.svm.core.jdk.Target_com_oracle_svm_core_util_VMError.unsupportedFeature(VMErrorSubstitutions.java:109)
at com.oracle.svm.core.snippets.SnippetRuntime.unreachedCode(SnippetRuntime.java:199)
at scala.collection.mutable.ResizableArray.swap$(ResizableArray.scala:111)
at scala.collection.mutable.PriorityQueue$ResizableArrayAccess.p_swap(PriorityQueue.scala:66)
at scala.collection.mutable.PriorityQueue.fixUp(PriorityQueue.scala:87)
@ssaavedra
ssaavedra / pre-commit
Last active September 19, 2018 13:29
Setup a repo pre-commit hook to use scalafmt
#!/bin/sh
# Licensed under CC0 in jurisdictions where this is not directly in the Public Domain
# Authored by Santiago Saavedra (github.com/ssaavedra)
git scalafmt --test || exit 1
# If there are whitespace errors, print the offending file names and fail.
exec git diff-index --check --cached $against --
@ssaavedra
ssaavedra / org-clock-back.el
Last active October 1, 2018 11:59
Convert orgmode clocktable time to numbers
;; Receive time as a string like "9d 11:28"
;; Outputs the number of minutes in that
;; The regex works with and without days.
;; MIT License
(defun my-minutes-in-org-time (time)
(let ((re "\\(\\([0-9]+\\)d \\)?\\([0-9]+\\):\\([0-9]+\\)")
(values '(2 3 4)))
(save-match-data
(catch 'exit
(if (not (string-match re time))