Skip to content

Instantly share code, notes, and snippets.

Avatar

Matthew Lincoln mdlincoln

View GitHub Profile
@mdlincoln
mdlincoln / rstudio-cc.yml
Last active Jun 15, 2021
cloud-config script to setup Rstudio server and Shiny server on Ubuntu 14.04 on Digital Ocean
View rstudio-cc.yml
#cloud-config
# In order to access RStudio server via the web interface, you must log on with
# a user account that allows password access. This script does not add that user
# by default. You may either ssh as root into the server and `adduser` as
# normal, or script a user addition here:
# users:
# - name: # username #
# lock-passwd: false # allow login with password
@mdlincoln
mdlincoln / search.html
Created Mar 19, 2020
lunr search template
View search.html
---
layout: page
title: Search
noindex: true
---
<script src="https://unpkg.com/lunr/lunr.js"></script>
<script>
const BUFFER = 30 // Number of characters to show for kwic-results
@mdlincoln
mdlincoln / Nested.vue
Created Oct 5, 2019
Recursive nested list Vue component
View Nested.vue
<template>
<span>
<ol v-if="Array.isArray(value)">
<li v-for="(item, index) in value" :key="index">
<Nested :value="item" />
</li>
</ol>
<ul v-else-if="typeof value == 'object' && !!value">
<li v-for="(val, name) in value" :key="name">
{{ name }}:
@mdlincoln
mdlincoln / row_rep.R
Created Nov 6, 2015
dplyr-friendly verb: replicate the rows of a data_frame n times
View row_rep.R
row_rep <- function(df, n) {
df[rep(1:nrow(df), times = n),]
}
@mdlincoln
mdlincoln / ffmpeg.sh
Last active Sep 9, 2019
Basics to convert .mov to .gif
View ffmpeg.sh
ffmpeg -i input.mov -t 12 -vf "fps=20,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 output.gif
@mdlincoln
mdlincoln / aat
Last active Jul 29, 2019
Getty open refine strings
View aat
'http://vocab.getty.edu/sparql.json?query=select+distinct*{?x+skos:inScheme+aat:;(xl:prefLabel|xl:altLabel)/gvp:term"' + escape(value, 'url') + '"@en}'
@mdlincoln
mdlincoln / ceteicean_hypothesis_annotation.json
Last active Oct 1, 2018
Response from the hypothes.is API to a page rendered by CeTEIcean
View ceteicean_hypothesis_annotation.json
{
"updated": "2018-10-01T18:16:02.140402+00:00",
"group": "__world__",
"target": [
{
"source": "http://teic.github.io/CETEIcean/EEBOTest.html",
"selector": [
{
"conformsTo": "https://tools.ietf.org/html/rfc3236",
"type": "FragmentSelector",
@mdlincoln
mdlincoln / downsample_pdf.sh
Created Sep 25, 2015
ghostscript command to downsample a pdf
View downsample_pdf.sh
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=OUTPUT.pdf INPUT.pdf
@mdlincoln
mdlincoln / prefName.r
Created Mar 1, 2018
Get ULAN prefName for a given ID from the Getty Vocabularies SPARQL endpoint
View prefName.r
library(tidyverse)
library(httr)
get_prefname <- function(id) {
message(id)
endpoint <- "http://vocab.getty.edu/sparql.csv?query="
query <- URLencode(str_interp("SELECT ?prefName WHERE {
?person dc:identifier '${id}';
xl:prefLabel [xl:literalForm ?prefName ] .
} LIMIT 1"))
@mdlincoln
mdlincoln / letter_position.r
Created Feb 9, 2018
How many columns does this spreadsheet have?
View letter_position.r
letter_position <- function(s) {
comp_str <- stringr::str_split(stringr::str_to_lower(s), "")
purrr::map_int(comp_str, alpha_index)
}
alpha_index <- function(s) {
i <- purrr::map_int(s, ~ which(. == letters))
purrr::reduce(i, function(x, y) {
x * length(letters) + y
})