Skip to content
View w0rxbend's full-sized avatar
🎯
Be bold. Change the world
🎯
Be bold. Change the world

Block or report w0rxbend

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
w0rxbend/README.md

Oleksandr Balyshyn

Java/Scala software engineer. Nine years of fault-tolerant distributed systems on the JVM — telecom data platforms, stream processing, cloud infrastructure. Kyiv, Ukraine.

Off the clock: air-quality sensors, ESP32 cameras, OBS Studio tooling and Scala 3 libraries.

Site Streaming tools StandWithUkraine


Day job

Distributed systems that have to stay up. Most recently four years on a platform team building the data infrastructure behind cloud-native SaaS for telecom operators.

Before that: Spring Boot microservices handling 100M+ patient records for a top-3 US healthcare provider, and the core algorithms for a cross-border energy exchange connecting grid operators across six countries.

Scala (Cats, cats-effect, FS2, Akka, http4s, Monix) · Java 17 · Kafka · Kubernetes · Cassandra · Redis · AWS / Azure / GCP


Everything else

None of what follows is commercial. It is unpaid engineering on problems I actually have — which is why most of it carries a real README, a CI pipeline and release binaries rather than a weekend of commits.

📡 Streaming tooling

Control surfaces for OBS Studio, the open-source live-streaming program. Everything below drives it over obs-websocket 5.x, its built-in remote control protocol. The map at obs.worxbend.com shows how the pieces fit together.

Project What it is
scenedeck Linux desktop controller — Rust, GTK4, libadwaita. Scenes, an audio mixer with live meters, scene-dependency inspection. On the Snap Store.
obsctl-rs Terminal dashboard and scriptable CLI in one Rust binary. A daemon owns the OBS connection; the UI and CLI are thin clients over a Unix socket. 29 themes.
obs-stats btop-style live dashboard that answers which stage dropped frames — renderer, encoder or network — rather than only that some were lost.
obsctl The Crystal implementation of the same idea. One-line installer, static binaries.
multistream-manager Set up a Twitch stream and a YouTube broadcast from one terminal form, then press Start Streaming.
twi Keyboard-first Twitch chat in the terminal. Go, 57 themes, OAuth tokens that never reach the logs.
yc YouTube live chat in the terminal, paced so the 10,000-unit daily API quota lasts until reset instead of running dry in three hours.
obs-effects GPU-accelerated PixiJS 8 overlays and animated screens for OBS browser sources.
twitch-voxer Self-hosted text-to-speech bot. Announces chat in the detected language, each chatter keeping a persistent voice.

🌬️ AirGradient & IoT

AirGradient makes open-source indoor air-quality monitors that expose their readings on the local network. I wanted those readings everywhere I look, and none of it going through a cloud account — so the same local endpoint now drives five different clients.

Project Platform
airgradient-cli Rust CLI and live terminal dashboard
airgradient-desktop GTK 4 + libadwaita desktop app
airgradient-gnome-extension GNOME Shell panel indicator
airgradient-android Kotlin + Jetpack Compose
airgradient-papr ESP32 driving a LILYGO T5 4.7" e-paper display — air, weather, forecast
airgradient-observability vmagent → VictoriaMetrics → Grafana, self-hosted

They share one config file, so the CLI, the desktop app and the GNOME extension all point at the same device.

📷 ESP32 cameras and a TCP server

A camera pipeline built from the wire protocol up, because HTTP and WebSocket framing are more overhead than a microcontroller pushing JPEG frames needs.

  • spycam — ESP32-CAM firmware. A camera task fills a single latest-frame slot; a sender task owns all network I/O and reconnects forever with exponential backoff. When the network falls behind, stale frames are dropped rather than queued.
  • spycam-s3 — the same client for ESP32-S3 boards.
  • instachron — the server side. A Go workspace of eight deployable services: the raw TCP receiver that republishes frames on a Unix socket, an HTTP API and web UI, restream proxies with image enhancement, upscaling and YOLOv8 object detection, an H.264 timelapse recorder, and an ffmpeg RTMP streamer.

The protocol is a long-lived raw TCP connection carrying repeated frames — a 16-byte big-endian header (magic, sequence number, payload length, camera timestamp) followed by exactly that many JPEG bytes. No HTTP, no delimiters, no text framing. It is documented precisely enough to write a receiver from scratch.

Also: led-matrix-controller (ESP8266 Wi-Fi TCP firmware driving a WS2812B 8×8 matrix), echo (a Go proxy turning webhooks into light shows on it), echoctl (Scala 3 CLI for that proxy), and deskctl (GTK4 controller for an ESP32-driven standing desk).

🐧 Linux tooling

One YAML profile describing the machine you want, a plan you read before anything happens, then the parts that still need doing.

  • fluxion — Java 25, GraalVM-native. Packages, Flatpaks, scripts, dotfiles, shell tooling, fonts and prebuilt binaries from one profile, with state recorded so reruns skip finished work.
  • fluxion.cr — the Crystal implementation. CLI or TUI.
  • binstaller — binary distributions from a declarative profile, with dry-run plans, SHA-256 verification and a lock file.
  • nerd-fonts-installer — Go, checksum-verified downloads, interactive picker. On the Snap Store.
  • dotbot-scala · dotbot-go — two implementations of the Dotbot dotfiles workflow, both shipping as single native binaries.
  • system-bootstrap — multi-distro dotfiles and workstation setup for Fedora, Arch and openSUSE.

🔺 Scala, JVM & libraries

  • scalacv — a Scala 3 API over OpenCV 4.13. Typed constants instead of magic integers (ColorConversion.BgrToGray, not 6); a Managed[A] that releases native handles exactly once and throws on use-after-release in Scala, before JNI turns the same mistake into a SIGSEGV with no stack trace; genuinely headless, so continuous integration needs no GUI toolkit.
  • glyphora — a terminal UI toolkit written the way Scala wants to be written. Reactive signals, 50+ widgets, composable motion, headless tests, GraalVM native-image builds.
  • gitea-scala-client — Scala 3 client for the Gitea API. ZIO 2, sttp client4, zio-json, with the endpoint surface audited against the Gitea 1.26.2 OpenAPI contract.
  • codeberg4s — Codeberg/Forgejo client with a Future-based API that leaks no effect system onto your classpath, two error rails (exceptions or typed Either), and validated types that make an illegal request path unrepresentable.
  • worxbend — the Mill monorepo the smaller libraries get cut from. Applications, shared libraries, deployment recipes and notes.
  • data-engineering — Kafka, Kafka Connect and Apache Flink experiments, including a custom S3 sink partitioner.

Elsewhere

Account What lives there
@w0rxbend This one. The broadest range — firmware, overlays, libraries, ports.
@worxbend The finished tools. Release binaries, install scripts, docs sites.
@oleksandr-balyshyn Under my own name, kept small.

All 80 projects, searchable, in one place → w0rxbend.github.io/personal-page

📧 oleksandr.balyshyn@gmail.com · 💬 @oleksandr_balyshyn

Pinned Loading

  1. system-bootstrap system-bootstrap Public

    A comprehensive, multi-distro dotfiles and system bootstrap configuration. Designed to set up a premium development environment on Fedora, Arch Linux, and OpenSUSE.

    Shell 4 1

  2. twitch-voxer twitch-voxer Public

    A self-hosted Twitch chat Text-to-Speech bot that streams synthesised audio to an OBS browser source via WebSocket. Every chat message is announced in the detected language, each chatter is automat…

    Python 2

  3. worxbend/airgradient-observability worxbend/airgradient-observability Public

    Self-hosted AirGradient ONE observability stack

    TypeScript

  4. obs-effects obs-effects Public

    A collection of GPU-accelerated PixiJS 8 overlays and animated screens for use as OBS Browser Sources.

    TypeScript

  5. spycam spycam Public

    ESP32-CAM TCP JPEG Client

    C++

  6. instachron instachron Public

    TCP frame server for ESP32-CAM JPEG frames

    Go