Skip to content

Instantly share code, notes, and snippets.

View jorendorff's full-sized avatar

Jason Orendorff jorendorff

View GitHub Profile
# credits to virtualenv
kerl_deactivate()
{
if [ -n "$_KERL_PATH_REMOVABLE" ]; then
PATH=${PATH//${_KERL_PATH_REMOVABLE}:/}
export PATH
unset _KERL_PATH_REMOVABLE
fi
if [ -n "$_KERL_MANPATH_REMOVABLE" ]; then
MANPATH=${MANPATH//${_KERL_MANPATH_REMOVABLE}:/}
$ mix test
Compiling NIF crate :rustler_test (/)...
Compiling lazy_static v0.1.16
Compiling libc v0.2.17
Compiling bitflags v0.7.0
Compiling quote v0.3.5
Compiling winapi v0.2.8
Compiling unicode-xid v0.0.3
Compiling log v0.3.6
Compiling winapi-build v0.1.1
use std::hash::Hash;
use std::collections::{HashSet, VecDeque};
use std::marker::PhantomData;
pub trait Digraph {
type Vertex: std::cmp::Eq;
type Neighbors: IntoIterator<Item=Self::Vertex>;
fn neighbors(&self, Self::Vertex) -> Self::Neighbors;
@jorendorff
jorendorff / incr_json.py
Last active April 16, 2025 17:55
incremental json parser in Python
import unicodedata
# Unique value meaning "not finished parsing"
class TimedOut:
def __repr__(self): return "TimedOut"
TimedOut = TimedOut()
BASIC_ESCAPES = {
// OK so to start with here's the EventHandler trait, just like slack-rs
pub trait EventHandler {
// I don't know what kind of thing EventData should be.
// maybe Json? whatever events actually are in phoenix.
fn on_event(&mut self, channel_name: &str, event_type: &str, event_data: EventData);
fn on_connect(&mut self, ...);
fn on_close(&mut self, ...);
}
fn login_and_run<H: EventHandler>(handler: H, ...) {...}
// usage: ./yep | head -n 1
use std::time::Duration;
use std::thread::sleep;
fn main() {
loop {
println!("y"); // expected: panic
sleep(Duration::new(0, 250000000));
}
//! Some generic code for launching a service.
use std::sync::mpsc::{Sender, channel};
use std::thread::{spawn, JoinHandle};
/// Wrapper around a JoinHandle that automatically joins when dropped.
struct AutoJoinHandle(Option<JoinHandle<()>>);
impl Drop for AutoJoinHandle {
fn drop(&mut self) {

Lambda and the nature of data

The Three Warnings (50s)

Before we begin, a few warnings.

  1. This talk contains code. It contains a lot of code, and you are encouraged to type it in and run it yourself. If you are allergic to code,
// Incomplete channel implementation using a MPSC node-based queue.
//
// Algorithm: <http://www.1024cores.net/home/lock-free-algorithms/queues/non-intrusive-mpsc-node-based-queue>
//
// Differences from `std::sync::mpsc::channel`:
// - blocking `recv` is not implemented
// - closing the channel by dropping senders is not implemented
// - closing the channel by dropping the receiver is not implemented
// - nodes are leaked when the receiver is dropped
~/dev/programming-erlang$ erl
Erlang/OTP 19 [erts-8.0] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V8.0 (abort with ^G)
1> timer:tc(loop, loop_test, [100, 10000]).
spawning processes...
starting test...
done!
{348645,ok}
2> timer:tc(loop, loop_test, [100, 10000]).