Skip to content

Instantly share code, notes, and snippets.

View rberenguel's full-sized avatar

Ruben Berenguel rberenguel

View GitHub Profile
@rberenguel
rberenguel / mu4e_niceties.el
Last active August 29, 2015 14:08
The nicest would be :ft, which shows from/to depending on the source, hence making "sent" a more useful folder (since I'm pretty sure the "From" field in "Sent" is "me"
(setq mu4e-bookmarks
'( ("flag:unread AND NOT flag:trashed AND date:today..now AND maildir:/INBOX" "Today's inbox" ?i)
("date:today..now AND NOT maildir:/INBOX.Sent" "Today's messages" ?t)
("date:30d..now AND maildir:/INBOX.Sent" "Sent last 30 days" ?s)
("date:7d..now" "Last 7 days" ?w)
("mime:image/*" "Messages with images" ?p)
("size:1M..500M" "Big messages" ?b))
)
(add-to-list 'mu4e-header-info-custom
@rberenguel
rberenguel / Instapaper_dumper
Last active August 29, 2015 14:22
Dump (if correctly cleaned up) instapaper links from a folder-category to a folder
csvfix find -e 'Videos' -f 4 ~/Downloads/instapaper-export.csv | csvfix edit -e "s/[ ,.|:'\?]/_/g" -f 2 | csvfix order -f 2,1,3,4 | csvfix printf -fmt "wget --directory-prefix='./%s/' -T 60 -q -p -k %s" > x;cat x;chmod +x x;./x;rm ./x
@rberenguel
rberenguel / friendly_reddit_button.js
Last active December 23, 2015 10:49
A slightly better reddit upvote/downvote button
jQuery(document).ready(function() {
// This is the poor man's way of doing an straightforward, async load.
// I needed the reddit button in our pages, and our technical guy asked me
// to get an async version, since we have a very fast website and we'd rather
// keep it. Since reddit does not offer an async version this is the best I
// could come up after giving it 5 minutes thought. I could probably get
// something better which is actually async. Waiting for document.ready means that
// if something else is "very" blocking, the reddit button may never appear. But
// I'd rather settle for good enough than spend an stupidly long amount of time
// looking for the perfect solution to a minor problem.
@rberenguel
rberenguel / PoorMan$.js
Last active December 25, 2015 17:29
A very poor man's HTML element selector. As much as I tried I couldn't fit it in a tweet, though. The best I could minify it has been to 154 bytes (as $$ below, it would be cool if it could be called ¢...)
function $(s){
z="getElement";n="Name";
a={"#" : z+"ById",
"." : z+"sByClass"+n,
}[s[0]];
a=typeof a==="undefined"?[z+"sByTag"+n,0]:[a,1];
return document[a[0]](s.slice(a[1]));
}
function $$(s){return S="slice",d=document,t=s[0],g="getElement",n="Name",t=="#"?d[g+"ById"](s[S](1)):t=="."?d[g+"sByClass"+n](s[S](1)):d[g+"sByTag"+n](s)}
@rberenguel
rberenguel / view_html.el
Created December 22, 2013 17:51
Small emacs lisp snippet to open email as HTML in default browser. Found it somewhere over the net, but it is so awesome I need to save it for posterity. In a summary buffer use v h (think of it as "view html") to switch to HTML view. It works by generating a temporary file and stripping the html part of the current message into it.
(defun my-gnus-summary-view-html-alternative ()
"Display the HTML part of the current multipart/alternative MIME message
in current default browser."
(interactive)
(save-current-buffer
(gnus-summary-show-article)
(set-buffer gnus-article-buffer)
(let ((file (make-temp-file "html-message-" nil ".html"))
(handle (nth 3 (assq 1 gnus-article-mime-handle-alist))))
(mm-save-part-to-file handle file)
@rberenguel
rberenguel / evil-capitalise.el
Created January 29, 2014 10:35
Defining an operator in evil is easy. Example: evil-capitalise (bound to gc, then followed by a motion or text object)
(evil-define-operator evil-capitalise (beg end type)
"Convert text to lower case."
(if (eq type 'block)
(evil-apply-on-block #'evil-capitalise beg end nil)
(capitalize-region beg end)))
(define-key evil-normal-state-map "gc" 'evil-capitalise)
@rberenguel
rberenguel / fun_with_ast.py
Last active January 8, 2017 17:57
Having some quick fun with the ast (and being really impressed by how grumpy (https://github.com/google/grumpy/tree/master/compiler) manages to do it so neatly for python-go, this is a quick hack to play with ast). Enters a simple (almost hardcoded for this example) class, outputs a scala-valid class that you can try on an interpreter.
from __future__ import print_function
import ast
"""
Save the following in test.py, then execute fun_with_ast.py.
You can paste the output in a Scala interpreter
class something(object):
def __init__(self, value1, value2):
@rberenguel
rberenguel / git_complete.sh
Last active September 3, 2017 09:02
Fzf (see https://github.com/junegunn/fzf) completion for git checkout (which I have aliased to co). See (a previous version without origin removal) in action here: https://asciinema.org/a/DCZH8q4mZHr79uVGZcM5RCtRb
_fzf_complete_git() {
ARGS="$@"
local branches
branches=$(git branch -vv --all | sed "s/remotes\/origin\///g" | sed "s/\*/ /g")
if [[ $ARGS == 'git co'* ]]; then
_fzf_complete "--reverse --multi" "$@" < <(
echo $branches
)
else
eval "zle ${fzf_default_completion:-expand-or-complete}"
@rberenguel
rberenguel / schemaAsScala.scala
Last active March 8, 2018 14:57
Converts a DataFrame schema output (StructType) into something you can paste as a schema, as valid Scala code. Useful when working with Apache Zeppelin or any other REPL.
import org.apache.spark.sql.types._ // You'll need this to evaluate its output
object StructFmt {
def asScala(field: StructField): String = field.dataType match {
case struct: StructType => s"""StructField("${field.name}",""" + asScala(struct) + s", ${field.nullable})"
case _ => s"""StructField("${field.name}", ${field.dataType}, ${field.nullable})"""
}
def asScala(struct: StructType): String = "StructType(Seq(" + (for(field <- struct) yield asScala(field)).mkString(",") + "))"
}

Keybase proof

I hereby claim:

  • I am rberenguel on github.
  • I am rberenguel (https://keybase.io/rberenguel) on keybase.
  • I have a public key ASDoKc_uTbL4lQBaJ4bNh9G-5OkiK2gSxIFF6h0xvuMy8wo

To claim this, I am signing this object: