Skip to content

Instantly share code, notes, and snippets.

@viperscape
viperscape / github.clj
Created November 16, 2014 20:00
get gist and git src via github api
(ns github
"pull in github source files and gist content
malformed api calls, invalid resource uri, and rate-limiting should return nil"
(:require [cheshire.core :as json]
[clojure.string :as string])
(:import (org.apache.commons.codec.binary Base64 StringUtils)))
(defn get-gist [gist-uri]
(let [gist-id (last (string/split gist-uri #"/+")) ;;just need id for git api
gist-resp (try (slurp (str "https://api.github.com/gists/" gist-id))
@viperscape
viperscape / nasa-apod.py
Created November 16, 2014 20:11
nasa-apod download
import urllib.request
address = 'http://apod.nasa.gov/apod/astropix.html'
file = urllib.request.urlopen(address) #read in the site and hunt for the image url
html = file.read()
data = html.decode('utf-8')
#print (data)
s = data.find("<a href=\"image")+14 #find the first instance of the image hyperlink
@viperscape
viperscape / promise.rs
Last active August 29, 2015 14:10
latch and promise sync primitives
use std::sync::atomic::{AtomicBool,Ordering};
use std::sync::{Arc, RWLock};
struct Latch {
latch:Arc<AtomicBool>,
}
impl Latch {
fn new () -> Latch {
Latch {latch:Arc::new(AtomicBool::new(false))}
@viperscape
viperscape / rng.rs
Created February 25, 2015 19:18
range in rust, without the need to think about range direction
#![feature(core)]
extern crate core;
use self::core::num::Int;
fn rng<T:PartialEq+Int, F:FnMut(T)> (d:T,dt:T,mut f:F) {
if d>dt { for n in (dt..d).rev() { f(n); } }
else { for n in (d..dt) { f(n); } }
}
fn main () {
@viperscape
viperscape / night-mode.el
Created September 18, 2015 13:14
flips between solarized dark/light on keypress
(set 'nitemode nil)
(defun toggle-nitemode ()
"toggles nitemode"
(interactive)
(cond ((not nitemode)
(load-theme 'solarized-dark t)
(set 'nitemode 1))
((eq 1 nitemode)
(load-theme 'solarized-light t)
(set 'nitemode nil))))
@viperscape
viperscape / maps defentity's to the table listing in sql
Last active December 20, 2015 12:59
information schema to defentity in korma
(defentity INFORMATION_SCHEMA.tables)
(def tables (map #(get % :TABLE_NAME)
(select 'INFORMATION_SCHEMA.tables (fields :TABLE_NAME)
(where {:TABLE_TYPE "BASE TABLE"})))) ;notice the quote
(prn tables)
;(map #(def %) tables) ;additional concept
(map #(defentity %) tables) ;not sure this is required anymore
(select (first tables))
@viperscape
viperscape / config.rs
Last active December 21, 2015 19:05
toml parser for key bindings, example
/// toml parser and config for keybindings, etc.
use toml::{Parser,Value};
use std::fs::File;
use std::io::Read;
use glium::glutin::VirtualKeyCode;
use std::collections::{HashMap,BTreeMap};
#[derive(Debug)]
pub struct Bindings(HashMap<String,VirtualKeyCode>);
@viperscape
viperscape / matrix operations for 3d graphics.clj
Last active December 25, 2015 23:09
using core.matrix, perform some 3d graphics-related functions lookat, perspective projection, and building translation and rotation matrices; 'left' in the function name specifies left-handed coordinates
;; (ns somenamespace
;; (:refer-clojure :exclude [* - + == /])
;; (:use clojure.core.matrix)
;; (:use clojure.core.matrix.operators)
;; (:gen-class))
(defn inv [n] "returns the inverse, (* -1 n)" (* -1 n))
(defn projection [l r b t, n f, aspect fov]
@viperscape
viperscape / peek-drain.clj
Last active December 28, 2015 08:39
Quickly look at a core.async channel with only momentary blocking, pulls the data if it exists and thus alters the channel.Drain! will repeatedly call peek! until a maximum number of elements is pulled or until the channel is empty.
;;uses core.async and refers chan, >!, go, alts!! and timeout functions
(def c (chan))
(go (>! c {:msg "hi"}))
(defn peek! [ch & args]
"quickly looks at a channel for new incoming data, pulls it if it exists, quits otherwise;
returns seq if specifying max elements to pull"
(if-not (nil? args)
// .. //
static VERT_SRC: &'static str = r"
#version 140
in vec3 pos;
in vec3 norm;
uniform mat4 transform;
uniform vec3 size;
uniform vec3 color;