Skip to content

Instantly share code, notes, and snippets.

@christiangenco
christiangenco / bitcoin_address_validator.rb
Last active January 2, 2016 19:09 — forked from sashazykov/bitcoin_address_validator.rb
Simple Rails bitcoin address validation. Doesn't calculate the checksum or anything fancy - just checks that the address starts with a 1 or 3, consists only of alphanumeric characters, and is 27-34 characters long (from https://en.bitcoin.it/wiki/Address).
class User < ActiveRecord::Base
validates :bitcoin_address, format: { with: /\A(1|3)[a-zA-Z1-9]{26,33}\z/,
message: "invalid bitcoin address" }
end
# download this: http://www.ubuntu.com/download/desktop
# convert it to an img
hdiutil convert -format UDRW -o ~/Downloads/ubuntu.img ~/Downloads/ubuntu-12.04.3-desktop-amd64.iso
# remove .dmg extension
mv ~/Downloads/ubuntu.img.dmg ~/Downloads/ubuntu.img
# figure out which drive your usb stick is
diskutil list
@christiangenco
christiangenco / .bashrc
Created January 23, 2014 13:18
Use `vime FILENAME` to create and edit encrypted files.
alias vime="vim -u ~/.encrypted_vimrc -x"
mplayer -vo null -vc dummy -af resample=44100 -ao pcm -ao pcm:waveheader file.wma && lame -m s audiodump.wav -o file.mp3 && rm audiodump.wav
@christiangenco
christiangenco / timecards.rb
Last active July 9, 2016 22:04
process EMC timecards
require 'time'
class Float
def round_to(x)
(self * 10**x).round.to_f / 10**x
end
def ceil_to(x)
(self * 10**x).ceil.to_f / 10**x
end
def pi_monte(n=100_000)
inside = total = 0
n.times{
x, y = rand*2-1, rand*2-1
d = Math.sqrt(x**2+y**2)
if d < 1
inside += 1
end
@christiangenco
christiangenco / vietnamese_puzzle.rb
Last active January 8, 2017 12:50
This Problem Stumped Vietnamese Students - Solution To Viral Puzzler https://www.youtube.com/watch?v=WiB2_dXSSMg
# runs in about 10s on my 1.1GHz MacBook.
equation = "x+13*x/x+x+12*x-x-11+x*x/x-10==66".gsub("x", "%.1f")
puts (1..9).to_a.permutation.map{|nums|equation%nums}.select{|eq| eval(eq)}
@christiangenco
christiangenco / download_tapeacall.rb
Last active February 20, 2017 11:41
Export all recordings from TapeACall
require 'json'
require 'time'
recordings = JSON.parse(ARGF.read)
recordings.each{|recording|
timestamp = Time.at(recording["created"].to_i).strftime("%Y-%m-%d %H.%M.%S")
destination = File.expand_path("#{timestamp}.mp3")
cmd = "curl \"#{recording["url"]}\" > \"#{destination}\""
puts cmd
@christiangenco
christiangenco / add_to_reading_list
Created February 17, 2016 21:28
command line utility to add urls to the Safari iOS and Mac reading list
#!/usr/bin/env osascript
-- usage:
-- add_to_reading_list "http://google.com" "http://yahoo.com"
on run argv
repeat with arg in argv
tell app "Safari" to add reading list item (arg as text)
end repeat
end run
@christiangenco
christiangenco / App.js
Last active January 16, 2018 03:47
fbr.teachable.com "Read Multiple Documents From The Firestore"
import React, { Component } from "react";
import "./App.css";
import { db } from "./firebase";
window.db = db;
class App extends Component {
state = {
title: "Loading...",