Software engineer at Astranis
on the network and payload software team — tools to operate and monitor micro GEO satellites.
Request Trace
Real per-request data — client IP, geo lookup, User-Agent, pod identity.
Cluster
Real cluster telemetry — CPU/mem/disk/pod/node metrics, historical
24h series, Ceph health, network insights, GitOps status, backup Job
status, cloudflared tunnel stats, and the Claude audit log, all ported
from the real src/components/cluster_stats.rs. Most of
this is Prometheus-backed (PROMETHEUS_URL) — GitOps and
backup status go through the k8s API directly; network insights,
spike config, and the Claude audit log are Postgres-backed.
0
CPU %
0
Mem GB
0
Disk GB
0
Pods
0
Nodes Ready
0
RX Mbps
0
TX Mbps
Nodes
%cpu
G mem
Ceph
health
mon quorum/
osd up/
pg clean/
Flux GitOps
Backup Jobs
Network Insights
Mbps
Top Network Pods
tx
rx
Cloudflared Tunnel
HA connections
req/s
error rate
Claude Audit Log
Security Audit
deps advisories
Last scan
Visitors
Real Postgres-backed visitor analytics — every request to this site is logged here.
0
total visits (30d)
0
unique IPs
0
countries
Recent visits
Lighthouse
Here is a programmatically generated lighthouse report
for every deploy
that gets kicked off as part of a k8s job for every new deploy of this site.
Satellites
Real 3D orbital mechanics: the actual CelesTrak "active" TLE group
(~16,000 objects), real sgp4 propagation over a real
288-step/5-minute rolling 24h window — ported from the real
satellite_calculations.rs/satellite_renderer.rs/
satellite_tracker.rs. The WebGL2 shader/matrix/camera
pipeline is a line-for-line port. Propagation itself runs server-side
once per tick (shared by every visitor) instead of in-browser WASM —
see src/satellites.rs for why — and the client
interpolates smoothly between real snapshots.
0 satellites tracked
Time: --:-- UTC
Speed:
Filter:
Conjunction Screening
Real screening: Hoots altitude-band pre-filter, true SGP4 propagation,
a 288-step/5-minute rolling 24h window scan for local distance minima,
ternary-search TCA refinement, rayon-parallelized pair scanning —
ported from the real src/components/conjunction.rs.
Persisted to the real conjunction_screenings/
conjunction_events tables. Foster only owns the button's
idle/started label; the real pass is a background job polled
independently (static/conjunction.js).
Status: idle
Conway's Game of Life
Plain requestAnimationFrame canvas. Auto-plays when
scrolled into view and pauses when scrolled away — per-visitor state
like the real site's own local signal, not shared server state.
Pathfinding Algorithms
Seven algorithms racing from start (green) to end (amber) on the same
random 2048×2048 obstacle grid, each rendered via its own WebGL2
canvas (R8 state texture) — ported line-for-line from the real
src/components/path_search.rs. Run/pause (auto-plays
when scrolled into view, same as the real site) and all seven
algorithm runners are plain per-visitor client state, not a Foster
machine — this is the same per-visitor UI state Foster's shared
server model isn't the right fit for, same as Life and theme.
Blind Search
Explores without knowing the destination location.
BFS
DFS
Corner
Wall
Random Walk
Informed Search
Uses heuristics toward the destination to guide exploration.