finds.dev

// weekly digest · 5 picks

This week: Jekyll's staying power, a Raft course in Go, and a CEP engine

This week's list is a mix of old guards and odd ducks. Jekyll is still the default answer for 'how do I make a static site without thinking too hard,' even as faster tools nip at it. SmartTube is a reminder that beloved sideload apps live dangerous lives. And if you've ever wanted to actually understand Raft instead of just nodding along to the paper, eliben/raft is the closest thing to a guided tour you'll find in code.

We also went a little off the beaten path with an AI-agent-driven text-adventure engine and a CEP engine that's been quietly running production workloads at WSO2 for a decade. None of these are flawless. All of them are worth the hour it takes to read the README and decide for yourself.

  1. 01jekyll
  2. 02SmartTube
  3. 03advjs
  4. 04raft
  5. 05siddhi

★ 51,723RubyMIT

Jekyll is the long-standing Ruby static site generator that powers GitHub Pages, turning Markdown and Liquid templates into static HTML. It's aimed at developers who want a blog or docs site without a database or backend, and who are comfortable with Ruby tooling.

Jekyll earns its place by being the thing that just works for a huge number of people — GitHub Pages native support means you can get a blog live with zero config, and the docs are so thorough that the docs site itself is basically a Jekyll tutorial. A decade of stability in the plugin API means themes and tooling from years ago mostly still work.

What to know going in: build times fall off a cliff once you're past a few thousand posts, and the incremental build flag has known correctness bugs, so don't trust it blindly. Ruby's native-extension gems (sass-converter especially) are still a pain on Windows and fresh Mac installs. If you're on GitHub Pages you're also locked to an old whitelisted gem set unless you build in CI yourself. For a basic blog it's still a solid default; for anything bigger, know that Hugo and Eleventy exist for a reason.

★ 35,231JavaMIT

SmartTube is a free, open-source YouTube client built for Android TV boxes and sticks, letting people watch without ads, without a Google account, and with SponsorBlock baked in. It's for Android TV owners comfortable sideloading apps outside the Play Store — not a general-purpose YouTube alternative and explicitly unsupported on phones or tablets.

SmartTube does one thing really well: it's a genuinely ad-free, Google-account-free YouTube client for Android TV with SponsorBlock built in as a real feature, not an afterthought. It runs on hardware with no Google Play Services at all, and the device coverage — from ancient Android 4.3 boxes to recent Shields — is wider than you'd expect from a single-maintainer project.

What to know going in, and this is a big one: the README currently discloses the maintainer's dev machine was infected with malware, which means recent builds and signing keys could be compromised. That's not a minor caveat — it's a supply-chain risk you should weigh before sideloading anything right now. Beyond that, it's reverse-engineered YouTube internals, so it breaks whenever Google changes something server-side, there's no real auto-update, and the build toolchain requires an old OpenJDK version. Worth watching, maybe not worth installing this week.

★ 328TypeScriptMPL-2.0

ADV.JS is a Markdown-based text-adventure/visual-novel engine aimed at AI-agent-driven authoring: you describe a game, an agent (Codex/Claude Code/Cursor) scaffolds it via CLI, you polish it in a local editor, then build and deploy to Cloudflare Pages. It's for developers building narrative games or wanting to embed a lightweight dialogue runtime into an existing web game, not for non-technical writers.

The idea here is sharp: describe a game, let an agent like Claude Code or Codex scaffold it from Markdown, then polish it in a local editor. The CLI is actually built for that workflow, not retrofitted — structured JSON output, MCP install commands, the works. The compiler/runtime split also means you can embed just the lightweight runtime in an existing game instead of swallowing the whole engine, and there's a real Swift port of the engine for iOS with parity tests against the JS version, which is more cross-platform rigor than you'd expect from a 328-star project.

What to know going in: this is a sprawling monorepo for its size — engine, Electron app, native iOS app, a CloudBase backend with billing, and a mobile SaaS studio all live together, which is a lot for whatever team is behind it. The docs themselves warn that the embeddable runtime is unstable and that you should pin a verified version yourself. Browser support is Chromium-only for now. Promising, but treat it as a moving target, not a stable dependency.

★ 1,434GoUnlicense

An instructional, from-scratch Raft implementation in Go by Eli Bendersky, built incrementally across a 5-part blog series: leader election, log replication, persistence, and finally a working key/value store with exactly-once delivery semantics. It's for developers who want to actually understand Raft by reading and running code, not for anyone who needs a production consensus library.

This is the rare project that teaches by being honest about its own structure: each of the five parts is a complete, dependency-free Go module, so you can read the leader-election code in part1 without any of the later persistence or KV-store logic leaking in. The included log-visualization tool turns test runs into an HTML timeline, which is genuinely useful for making Raft's hardest-to-debug races — split elections, stale leaders — visible instead of theoretical. And it doesn't stop at toy election logic; by part5 you've got a working KV store with exactly-once delivery semantics.

What to know going in: the code is deliberately duplicated across parts rather than factored into a shared library, so a bug fix in part2 won't propagate — you have to go patch it in parts 3 through 5 yourself if you're following along for real. There's no cluster membership change support anywhere in the series, which is one of the trickier pieces of real-world Raft. It's a teaching tool, explicitly not meant for production, and it doesn't benchmark against hashicorp/raft or etcd/raft, so you won't come away knowing exactly where it diverges from what you'd actually run.

★ 1,596JavaApache-2.0

Siddhi is a Java-based Complex Event Processing and stream processing engine with its own SQL-like query language for matching patterns, sequences, and windows over live event streams. It targets JVM developers who need real-time analytics or anomaly detection and would rather write declarative stream queries than hand-roll windowing and pattern-matching logic.

Siddhi's query language is the real draw — sliding windows, event sequences, pattern matching, and stream joins are all built in, which saves you from hand-rolling windowing logic that's easy to get subtly wrong. It's flexible about deployment too: embed it in a JVM process, wrap it from Python, or run it standalone as a Docker/Kubernetes service. A decade of production use at WSO2 and CNCF sandbox status back up the claim that its semantics are well exercised rather than theoretical.

What to know going in: the query language is a proprietary DSL, not SQL, so you're trading lock-in and thin IDE support for that expressiveness — Flink SQL or ksqlDB will feel more familiar if that matters to you. The codebase still carries WSO2/OSGi-era module structure that shows its age, and Kubernetes-native operational tooling (autoscaling, state management at scale) lags well behind Flink or Kafka Streams. Star and fork counts are modest for a project this old, so lean on the docs and your own testing rather than expecting a big community to lean on.

If you want this kind of rundown in your inbox every week, sign up below — no spam, just the picks and the honest take.

// past digests

Every public digest stays up, picks and takes as they were published.

The archive →