Skip to content

Instantly share code, notes, and snippets.

## this...
original_filename = os.path.basename(
os.path.splitext(photo.raw_path)[0]
)
file_ext = os.path.splitext(photo.raw_path)[1]
## could be...
file_name, file_ext = os.path.splitext(os.path.basename(photo.raw_path))
@campaul
campaul / gist:983ce9daee4b6fb1057a
Created January 10, 2015 05:08
What the import function looks like now
def import_photos(self, path, notify=None, imported=None,
copy_photos=True, delete_originals=False):
photo_list = self.discover(path)
progress = Progress(len(photo_list))
for photo in photo_list:
if notify:
notify(os.path.basename(photo.raw_path))
@campaul
campaul / gist:56ec0703428e5f644291
Created December 10, 2014 00:06
Potential Distro JSON Format
distros = {
'Ubuntu': {
'12.04': {
'Desktop': {
'i386': {
'DVD': {
'torrent': 'foo',
'magnet': 'bar',
'direct': 'baz',
'project': 'quux'
@campaul
campaul / gist:71f32a577fe39c388c31
Last active August 29, 2015 14:09
Potential Octave Stack Operations

Interrupt State

000 00 : HALT (wait for interrupt)
000 01 : IDT[HIGH] <- R0
000 10 : IDT[LOW] <- R0
000 11 : IENABLE <- R0 // 1 bit for each device, so IENABLE 0 disables interrupts

Function Operations

001 00 : CALL
001 01 : RET
001 10 : TRAP

@campaul
campaul / octave-isa
Last active August 29, 2015 14:08
Octave ISA
========
Core ISA
========
000 : Jump MEM[RS] NZP (previous operation)
This is a relative jump.
0010 : LoadIH R0 <- I (Load 4 bit immediate into R0 lower bits)
0011 : LoadIL R0 <- I (Load 4 bit immediate into R0 upper bits)
0100: Add RD <- RD + RS
@campaul
campaul / gist:d15833a5a5f0f5712ac3
Created November 4, 2014 17:25
Enabling interrupts without an interrupt enable instruction
push INTENABLE
icall
push DONE
ret
INTENABLE:
iret
DONE:
@campaul
campaul / tilt_eq_frequency.py
Created August 27, 2014 06:17
Calculate the Pivot Frequency of a Tilt Equalizer
from math import pi, sqrt
# Part labels based on the schematic from
# http://www.edn.com/design/analog/4368935/Implement-an-audio-frequency-tilt-equalizer-filter
RF = float(input('RF: '))
P1 = float(input('P1: '))
C = float(input('C: '))
R = float(input('R: '))
pivot = sqrt(P1 + 2 * RF) / (2 * pi * C * sqrt(RF - R) * sqrt(P1 * (R + RF) + 2 * R * RF))
@campaul
campaul / synth.c
Created July 25, 2014 06:22
Blind attempt at controlling the frequency of a 555 timer
int pin = 0; // The pin we will read the audio signal from
volatile int last = 0; // The time of the last sample
volatile int expected = 2272; // Roughly 440Hz
volatile int data = 0; // The direction to change the digi-pot
void setup() {
pinMode(pin, INPUT);
last = micros();
attachInterrupt(0, adjust, FALLING);
@campaul
campaul / http-server.rs
Created July 1, 2014 00:08
First attempt at responding to HTTP
use std::io::{Acceptor, Listener};
use std::io::net::tcp::TcpListener;
use std::io::net::ip::SocketAddr;
use std::from_str::from_str;
use std::io::File;
use std::io::IoError;
use std::io::{BufferedReader, BufferedWriter};
fn read_file(path: Path) -> Result<~str, IoError> {
let mut file = match File::open(&path) {
@campaul
campaul / raw_bucketer.py
Created June 8, 2014 19:44
Bucket CR2 files by date
from datetime import datetime
from os import walk
import sys
from wand.image import Image
def get_bucket(filename):
date = get_date(get_exif(filename)['DateTimeOriginal'])
return (str(date), filename)