Skip to content

Instantly share code, notes, and snippets.

View schickling's full-sized avatar
Making the web better

Johannes Schickling schickling

Making the web better
View GitHub Profile
@schickling
schickling / SIGTRAP-REPRO.md
Created January 21, 2026 10:36
LiveStore + Bun SIGTRAP crash reproduction guide

SIGTRAP Crash Reproduction: LiveStore + Bun + WASM SQLite

This document provides comprehensive context for reproducing and debugging a SIGTRAP crash that occurs when using LiveStore with Bun.

Problem Description

When creating and destroying ~100-180 LiveStore instances sequentially (each backed by SQLite WASM via wa-sqlite), Bun crashes with a SIGTRAP signal (Trace or breakpoint trap).

Key Characteristics

Devenv + flake path input interop (.devenv.flake.nix)

Problem (short)

When a repo is used as a path flake input inside another repo’s devenv, devenv expects <input>/.devenv.flake.nix to exist. If that file is untracked, it is not included in the flake snapshot, so devenv shell fails with:

error: '/nix/store/<...>/effect-utils/.devenv.flake.nix' does not exist
@schickling
schickling / playwright-duplicate-loading.md
Created January 19, 2026 07:58
Playwright duplicate loading investigation

Playwright duplicate loading in dotdot setups

Status

Active investigation. The root cause is understood but the final workaround is not selected.

Problem statement

Playwright throws Error: Requiring @playwright/test second time when a shared config or helper package is linked via file: and both the consumer and the linked package resolve their own physical copies of @playwright/test. The Playwright runner enforces a singleton load and errors on the second physical path.

@schickling
schickling / gist-report.md
Last active January 14, 2026 16:44
Nix dirty workspace experiments (effect-utils)

Nix Dirty Workspace Experiments (effect-utils)

Scope and Goals

We need a fast, reliable, pure way to build Bun-based native CLIs from TypeScript that:

  • works with dirty/uncommitted changes,
  • avoids copying large trees like node_modules,
  • works in flakes and devenv,
  • keeps dirty builds close to clean build performance.
@schickling
schickling / pi5-chromium-hw-decode-gist.md
Last active January 6, 2026 10:57
Raspberry Pi 5 + Chromium hardware video decode question

Raspberry Pi 5 + Chromium Hardware Decode: Is This Possible?

Problem Summary

I’m investigating hardware-accelerated video decode on Raspberry Pi 5 using Chromium (Wayland). The goal is smooth playback (no frame drops) and a Chromium-based UI. So far, Chromium appears to run software-only for video decode/compositing on Pi 5, despite extensive flag and VA-API attempts.

Environment

  • Hardware: Raspberry Pi 5 (BCM2712)
  • OS/Display: Wayland (Sway/Wlroots)
  • Browser: Chromium (aarch64)
  • GPU: V3D

UniFi Scheduler Usage

This doc captures how we access the UniFi controller via the local tunnel and query client stats with unifi-scheduler.

Prerequisites

  • SSH jump host: homepi
  • Controller IP: 192.168.1.39
  • Local tunnel (must be running while you use the CLI):
@schickling
schickling / EXPLANATION.md
Created December 28, 2025 12:26
Effect RPC handler type-safety pitfall repro

Effect RPC handler type-safety pitfall (repro)

Summary

When RpcGroup.toLayer is called with Effect.succeed(handlers), the handler effect’s requirements (R) are erased. This compiles even if a handler uses a service that is never provided, and it fails at runtime with “Service not found”.

This repro shows:

  • Unsafe pattern: compiles, but fails at runtime
@schickling
schickling / livestore-leader-exit-handoff-stall.md
Created December 25, 2025 11:58
LiveStore: Leader-Exit Handoff Stall - Root Cause Analysis

LiveStore: Leader-Exit Handoff Stall - Root Cause Analysis

Executive Summary

When a leader session exits while a follower has pending events, the follower's attempt to become the new leader stalls indefinitely. This is caused by the Effect Worker mechanism not detecting worker termination and propagating it to pending streams.

Impact: Pending events remain stuck, GetLeaderSyncState times out after 1s.

Root Cause: Effect Worker streams don't error out when the underlying worker terminates, causing the SharedWorker to block new requests while old ones hang.

@schickling
schickling / research.md
Created December 16, 2025 16:25
Analysis: Durable Streams as a LiveStore sync provider - challenges and limitations

Durable Streams Sync Provider - Research

Overview

This document analyzes the feasibility of creating a LiveStore sync provider targeting Durable Streams, an open HTTP-based protocol for real-time sync developed by Electric.

Durable Streams Architecture

Core Concepts

@schickling
schickling / README.md
Created December 16, 2025 14:18
Static Hermes + Effect Framework Compatibility Report - December 2025

Static Hermes + Effect Experiment

This experiment tests the compatibility of Effect framework with Static Hermes, Facebook's ahead-of-time JavaScript compiler.

Summary

Effect works with Static Hermes in both interpreted and native binary compilation modes. This enables Effect-based applications to be compiled to standalone native executables.

Setup