Skip to content

Instantly share code, notes, and snippets.

Daniel Sager dsager

Block or report user

Report or block dsager

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@dsager
dsager / look_at_images.rb
Created Feb 6, 2017
Google Cloud Vision: Devex Article Images 2016
View look_at_images.rb
# Script to get Google CLoud Vision annotations for a bunch of images
# Images in /images are expected to be also present in the specified GCS bucket
#
# setup:
# gem install google-cloud-vision
# export GOOGLE_CLOUD_PROJECT="XX-XX"
# export GOOGLE_CLOUD_KEYFILE="~/path/to/XX-XX.json"
#
require 'google/cloud/vision'
@dsager
dsager / wb_themes.rb
Created Oct 25, 2016
world-bank theme classifier
View wb_themes.rb
#
# script to load project data from the world bank and generate a training set
# for a classifier
#
# Get a list of projects from the world bank and filter out projects w/o abstracts & themes
#
# curl -s 'http://search.worldbank.org/api/v2/projects?format=json&fl=project_name,project_abstract,theme_namecode&source=IBRD&rows=50000'
# | jq '[.projects[] | select(.project_abstract? and .theme_namecode?)] | map({"text": [.project_name, .project_abstract.cdata] | join(" - "), "themes": .theme_namecode | map(.code)})'
# > wb-projects.json
#
@dsager
dsager / idea-backup.sh
Last active Apr 25, 2017
Shell Script to backup IntelliJ IDEA project settings
View idea-backup.sh
#! /bin/bash
BAKDIR="${HOME}/Dropbox/config-backup/intellij/project-settings"
BAKFILE="${BAKDIR}/idea-folders.txt"
#create backup folder
mkdir -p "${BAKDIR}"
# find all `.idea` folders in home
if [ ! -e "${BAKFILE}" ]; then
@dsager
dsager / parse_git_repo_def.sh
Last active Aug 29, 2015
small script to parse a string containing a git repository definition with multiple remotes.
View parse_git_repo_def.sh
#!/usr/bin/env bash
FIELD_SEP="|"
ROW="src/foo\ bar | git@github.com:foo/foobar.git foo | git@github.com:bar/foobar.git bar | git@github.com:baz/foobar.git baz |"
# cut out the directory first
DIR=${ROW%%${FIELD_SEP}*}
TRIMMED_DIR="$(echo -e "${DIR}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"
ROW="${ROW#*${FIELD_SEP}}"
echo "> dir: $DIR"
@dsager
dsager / devex_news_lab.md
Last active Jun 13, 2017
The Devex NewsLab: Using Google Docs as a CMS
View devex_news_lab.md

The Devex NewsLab: Using Google Docs as a CMS

Note: This post was originally published on the Devex Tech Blog

This article describes our current content management solution and gives some insight on the parts of the implementation we think are interesting.

As you might know a big part of our website is dedicated to News content covering various aspects of international development. At Devex we usually publish around 10 articles per day which are sometimes planned and worked on several days or even weeks in advance. There are different people involved in the process including both internal and external writers, editors, researchers or marketing folks. Some of them contribute to the article's content while others just need to be aware what is going on to coordinate their own work like social media campaigns.

@dsager
dsager / one_has_many.md
Last active Aug 29, 2015
One in a has_many - Access Special Association Objects in ActiveRecord
View one_has_many.md

One in a has_many - Access Special Association Objects in ActiveRecord

ActiveRecord models that define a has_many association often need access to a specific entry of this list. Think of an user that has many email addresses but only one that is his primary address. Or a Blog post with many comments of which one is featured.

How a lot of people do it

A pattern that seems to be quite common is to [extend the association by implementing a method that gets you the specific record][ar-ass-extension]:

class User < ActiveRecord::Base
@dsager
dsager / get_gists.php
Created Sep 14, 2014
Small script to fetch a list of a user's Gists on GitHub
View get_gists.php
<?php
/**
* Small script to fetch a list of a user's Gists on GitHub
*
* Copyright (c) 2014 Daniel Sager
* License: MIT, https://gist.github.com/dsager/0edcbf806b5b86e78455#file-2014
*/
date_default_timezone_set('UTC');
$url = 'https://gist.github.com/dsager.atom';
@dsager
dsager / 2014
Created Sep 14, 2014
MIT License
View 2014
The MIT License (MIT)
Copyright (c) 2014 Daniel Sager
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
@dsager
dsager / mobile_detection.php
Last active Aug 29, 2015
Some PHP functions to detect if a UA is mobile/tablet
View mobile_detection.php
<?php
/**
* Inspired by the neat Browser Gem for Ruby: https://github.com/fnando/browser
*
* Copyright (c) 2014 Daniel Sager
* License: https://gist.github.com/dsager/0edcbf806b5b86e78455#file-2014
*/
/**
* @param null|string $ua
@dsager
dsager / keybase.md
Created Jun 13, 2014
Keybase proof
View keybase.md

Keybase proof

I hereby claim:

  • I am dsager on github.
  • I am dsager (https://keybase.io/dsager) on keybase.
  • I have a public key whose fingerprint is F92D 43DC 3A9E 32EC CF94 BB12 1CCF DB6B B557 139A

To claim this, I am signing this object:

You can’t perform that action at this time.