Skip to content

Instantly share code, notes, and snippets.

View blyxxyz's full-sized avatar

Jan Verbeek blyxxyz

View GitHub Profile
@blyxxyz
blyxxyz / boompjes.wat
Created December 23, 2025 12:00
Info AoC '25 in WebAssembly
;; Deze oplossing is geschreven in WebAssembly Text Format (WAT).
;;
;; Je kent WebAssembly misschien als een manier om andere programmeertalen dan
;; JavaScript te gebruiken in de browser. Je kunt er ook losstaande
;; programma's mee schrijven. Dan heb je wel een runtime nodig.
;;
;; Installeer de `wabt` package en assemble het programma:
;;
;; wat2wasm boompjes.wat -o boompjes.wasm
;;
@blyxxyz
blyxxyz / stackmachine.rs
Created December 24, 2024 08:30
JIT-compiled oplossing voor de Infi Advent of Code 2024 puzzel
/*
Deze oplossing implementeert een JIT compiler met Cranelift, een compiler backend
oorspronkelijk gemaakt voor wasmtime.
De input wordt naar machine code gecompiled en daarna uitgevoerd. In principe kan
het ieder programma aan in de taal beschreven in de Infi opdracht, maar er worden
speciale optimizations gebruikt om nog efficiënter met de echte input om te gaan.
Op mijn PC worden alle blokjes berekend in 900µs, dus 33 nanoseconden per blokje.
Daar gaat wel 450ms compile time aan vooraf.
@blyxxyz
blyxxyz / pakjes.py
Last active December 25, 2024 06:11
Infi Advent of Code 2023 oplossing
#!/usr/bin/env python3
from __future__ import annotations
import ast, itertools, math, operator, sys, dataclasses
@dataclasses.dataclass(frozen=True)
class Point:
x: float = 0.0
y: float = 0.0
@blyxxyz
blyxxyz / tracking_iterator.rs
Created July 17, 2021 11:18
Keeping track of argument position in lexopt
use std::cell::RefCell;
use std::rc::Rc;
struct TrackingIterator<T>(Rc<RefCell<(u64, T)>>);
impl<T> TrackingIterator<T> {
fn new(inner: T) -> Self {
Self(Rc::new(RefCell::new((0, inner))))
}
@blyxxyz
blyxxyz / es_export.py
Created July 25, 2018 13:54
Export all events from an EventStore stream
# Painlessly get all events from an EventStore stream.
# Useful for exporting data, not very useful for real-time processing.
import json
import requests
def get_stream(name, host='localhost', port=2113, start=0, step=2000):
events = []