Skip to content

Instantly share code, notes, and snippets.

View anowell's full-sized avatar

Anthony Nowell anowell

View GitHub Profile
@anowell
anowell / wkhtmltopdf-release-segfault.rs
Created July 21, 2016 16:49
Minimal wkhtmltopdf snippet that works in debug but segfaults in --release
extern crate libwkhtmltox_sys as libwkhtmltox; // https://github.com/anowell/libwkhtmltox-sys
use libwkhtmltox::*;
use std::ffi::{CString, CStr};
use std::os::raw::{c_char, c_int, c_uchar};
unsafe extern fn finished_callback(converter: *mut wkhtmltopdf_converter, val: c_int) {
println!("finished_callback: {}", val);
// Read the PDF output
@anowell
anowell / bench_json_zeroes.rs
Last active November 1, 2016 06:30
Basic microbench of decoding large arrays of zeroes
#![feature(test)]
extern crate serde_json;
extern crate json;
extern crate test;
#[cfg(test)]
mod tests {
use json::{self, JsonValue};
use serde_json::{self, Value};
use test::Bencher;
@anowell
anowell / algo_entrypoint.rs
Last active November 13, 2016 16:59
First draft experiment at reducing boilerplate for algorithm entrypoint
/*
Example usage:
Note: in all of these cases, the return value must be `Result<T, E>` where:
- `T` has a conversion to `AlgoOutput` (e.g. String, Vec<u8>, JsonValue, (), or anything Serializeable)
- `E` has a conversion to `Box<Error>` (e.g. String or any custom type that `impl Error`)
-------------Text-----------------------
algo_entrypoint! { text => hello }
fn hello(input: &str) -> Result<String, String> {
Ok(format!("Hello {}", input))
@anowell
anowell / gist:144f2a4b4e699a35536b0c09a43485ce
Created November 23, 2016 21:16
algorithmia_nginx_proxy
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
@anowell
anowell / all-the-filters.sh
Created December 18, 2016 08:09
For a single image, generate every DeepFilter style transfer variant of that image
#!/bin/bash
set -e
function die {
echo >&2 $1
exit 1
}
command -v algo >/dev/null 2>&1 || die "Have you installed the Algorithmia CLI"
@anowell
anowell / random-filters.rb
Last active December 21, 2016 20:53
Apply random deep style filters to a bunch of images
#!/usr/bin/env ruby
#
# Takes an arbitrary number of files as arguments
# and randomly generates PER_IMAGE filtered versions
# of each image while using each filter an equal
# number of times (approx).
#
# It uses batch inputs to minimize API calls,
# but still expect at least 1 API call per filter
#
@anowell
anowell / todo.rs
Last active January 23, 2017 19:24
Quasar To Do Concept (using maud templating)
use quasar::*;
struct TodoItem {
label: String,
complete: bool,
}
struct TodoList {
items: Vec<TodoItem>,
}
@anowell
anowell / Cargo.toml
Last active February 12, 2017 04:27
My preferred rust template for Algorithmia algorithms
# You'll need at least these dependencies
[dependencies]
algorithmia = "2.0.0"
base64 = "0.3.0"
serde = "0.9.0"
serde_derive = "0.9.0"
serde_json = "0.9.0"
error-chain = "0.9.0"
@anowell
anowell / current.rs
Last active September 7, 2017 17:58
Quasar codegen idea
// Current example without codegen
impl Component for TodoList {
fn onload(view: &View<Self>) {
view.query("button").expect("missing todo list button")
.on(EventType::Click, |mut evt| {
match evt.app.query("#message") {
Some(node) => {
let item = TodoItem::new(&node.get("value"));
evt.binding.data_mut().items.push(item);
}
@anowell
anowell / Cargo.toml
Last active April 29, 2018 08:13
Calculating equity positions
[dependencies]
csv = { git = "https://github.com/BurntSushi/rust-csv.git" } #"1.0.0-beta.6"
serde = "1.0.38"
serde_derive = "1.0.38"
chrono = { verstion = "0.4.2", features = ["serde"] }
decimal = "2.0.4"