Skip to content

Instantly share code, notes, and snippets.

View wpcarro's full-sized avatar

William Carroll wpcarro

  • internet
View GitHub Profile
fn main() {
let mut rng = thread_rng();
println!("Vector");
for size in [1_000, 10_000, 50_000].into_iter() {
let mut xs = Vec::with_capacity(size);
for _ in 0..size {
xs.push(rng.gen_range(0..size));
}
@wpcarro
wpcarro / main.rs
Created December 31, 2024 22:12
Use evolutionary solver to assign Jobs to Machines in a factory.
//! Factory scheduling
use std::collections::HashMap;
use galapagos::{Config, Goal};
use rand::{thread_rng, Rng};
use textplots::{Chart, Plot};
type JobId = i32;
type MacId = i32;
@wpcarro
wpcarro / main.rs
Created December 23, 2024 05:21
Thread supervisor with restarts (multiple threads)
#[derive(Debug, Clone, Copy)]
enum ThreadState {
Unstarted,
InProgress,
Panicked,
Success,
}
fn main() {
let mut init = Vec::with_capacity(3);
@wpcarro
wpcarro / main.rs
Created December 23, 2024 04:45
Thread supervisor with restarts
#[derive(Debug, Clone, Copy)]
enum ThreadState {
Unstarted,
Panicked,
Success,
}
fn main () {
let x = Arc::new(Mutex::new(ThreadState::Unstarted));
@wpcarro
wpcarro / main.py
Created December 18, 2024 17:20
More durability experiments: read state from disk at startup with data integrity checks
import signal
import time
import random
import json
import os
import threading
import hashlib
lock = threading.Lock()
@wpcarro
wpcarro / main.py
Created December 18, 2024 17:03
More durability experiments (background thread, state mutations, locking)
lock = threading.Lock()
state = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def persist_state():
print("Persisting state...")
tmp = "/tmp/buffer.json"
dst = "/tmp/dump.json"
with lock:
content = json.dumps(state)
with open(tmp, "w") as f:
@wpcarro
wpcarro / main.py
Last active December 18, 2024 17:02
Durable state (signal handling)
import signal
import time
import json
import os
state = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def persist_state():
print("Persisting state...")
tmp = "/tmp/buffer.json"
@wpcarro
wpcarro / main.py
Created December 18, 2024 16:32
Durable state
import time
import os
import json
state = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
tmp = "/tmp/buffer.json"
dst = "/tmp/dump.json"
# periodically dump application state to disk atomically
// HINT: Definitely use ts-result for this.
type Result<A, B> = { success: true, data: A } | { success: false, error: B };
function Ok<A>(x: A): { success: true; data: A; } {
return { success: true, data: x };
}
function Err<B>(e: B): { success: false; error: B; } {
return { success: false, error: e };
}
@wpcarro
wpcarro / generate.jsonnet
Last active July 8, 2024 17:20
Proof of concept for type-generation from jsonnet.
////////////////////////////////////////////////////////////////////////////////
// Helpers
////////////////////////////////////////////////////////////////////////////////
local string = {
typescript: 'string',
python: 'str',
psql: 'VARCHAR',
};