🛰️ ping · clockdiff · tracepath · arping, reimagined

BSH iputils — Bright Spacetime Networking Tools

Modernized Linux networking tools for the Bright Spacetime era. bping, bclockdiff, btracepath, and barping — all output and accept BrightDate and are engineered for universal spacetime coordinates.
One sortable, timezone-free, and location-aware scalar — everywhere.

# files modified after BD 9600 (≈ Sep 2025) — no date parsing, no TZ
$bfind . -after 9600 -name '*.log' -printf '%Wt %p\n'
9628.195697 ./app.log
9615.320041 ./audit.log
# how old is the newest source file? — plain float subtraction
$age=$(bfind . -name '*.c' -printf '%Wt\n' | sort -rn | head -1)
$echo "newest: BD $age — $(echo "($age - 9628) * 86400 / 3600" | bc) h old"
newest: BD 9628.197104 — 4.7 h old
# database-backed search; DB timestamp shown as BD
$blocate kernel | head -3
Database: /var/db/locate.database (BD 9628.12) 6 423 144 entries
$ brew install → View on GitHub BSH — the BrightShell

Why BrightDate? Why new findutils?

find's time predicates — -mtime, -newer, -newermt — are a perennial source of confusion: -mtime -1 means "within the last 24 hours, rounded down to integer days," -newermt needs an ISO 8601 string with the right timezone, and the results differ on Linux vs macOS because stat's timestamp resolution and epoch handling differ subtly between the two. Every script that filters files by recency carries this invisible complexity.

BSH (BrightShell) showed that the fix is not a better date-parsing library — it's a better time representation. BrightDate is a single Float64: decimal days since the astronomical epoch J2000.0, on a TAI substrate. No timezone. No leap-second jumps. b − a = elapsed days, always.

This fork carries that same fix into the findutils layer. If your shell prints BrightDate (BSH, or any shell using $BRIGHTEPOCH), and your file-search tool speaks BrightDate, there is no translation step anywhere in the pipeline. The number in your prompt is the number you pass to -after, which is the number printed by -printf '%Wt'.

In one sentence: BrightDate is a timezone-free SI-day count since J2000.0 (2000-01-01T11:58:55.816 UTC). BD 0.0 = the standard astronomical epoch. BD 9628 ≈ May 2026. b − a = elapsed days, no date library required.

🔎 Old find pain

Problem What goes wrong
-mtime -1 Rounds to integer days from "now", not a clean boundary
-newermt "2026-01-01" Needs TZ; differs on macOS vs Linux
-printf "%T+" Locale-dependent, not sortable as-is
Duration math Requires date -d, gdate, or Python
Daystart Midnight in local timezone — silently wrong in UTC+N

✨ bfind fix

Feature What it does
-after 9600 Files whose mtime > BD 9600 — universal, exact
-before 9628 Files whose mtime < BD 9628 — same scalar
%Wt / %Wa / %Wc / %WB Print mtime/atime/ctime/btime as BrightDate decimal
-daystart Floors to BD integer — same on every machine
-newerXY 9600 All -newer variants accept BD literals

BrightDate across the whole pipeline.

Every time-sensitive surface in findutils now speaks the same float. The changes are surgical: all four binaries are renamed (b prefix) so they coexist with system find/locate/xargs.

Why Bright Spacetime? Forensic Utility

In a world of decentralized nodes and "trusted" identities, Ping vs. Distance is your ultimate truth-detector. If bsh knows its coordinates, it stops treating the internet like a magic cloud and starts treating it like a physical network of silicon and light.

The "Why" (Forensic Utility): Standard networking tells you Latency, but it doesn't tell you Efficiency.

  • The Cheat Check: If a node in the BrightChain swarm claims to be "Local" (in D.C.) but returns a ping of 120ms, the math in bsh instantly flags it. Because 1 mbm = 1 ms, a node 16 mbm away cannot physically respond faster than 16 ms. If it's slower than that, you're seeing routing overhead. If it's faster (which is impossible), you know the node is spoofing its location.
  • The Routing Audit: You can finally see how much "Legacy Debt" your ISP is costing you. If you're pinging a server 1 mbm away and getting a 40 ms response, you know your data is taking a massive, inefficient detour through legacy copper.

The bsh Integration (The "How"): For bsh to handle this, it needs to be able to pipe coordinate data into its networking tools.

The bping Command

Instead of just showing time, bping provides the Spacetime Efficiency Ratio:

bping node-01.brightchain.org
            
9628.194201 ./find/brightdate.c
# find C files modified since BD 9625 and run clang-format on them
$bfind src -after 9625 -name '*.c' -print0 | bxargs -0 clang-format -i
# age of every log — float subtraction in awk, no date library
$bfind /var/log -name '*.log' -printf '%Wt %p\n' \

Math:

  • 1 mbm = 1 ms at light speed (in fiber/vacuum)
  • If latency < physical minimum, the node is lying
  • If latency ≫ minimum, you see routing overhead
| awk '{printf "%.4f days old %s\n", 9628.2 - $1, $2}'
0.0042 days old /var/log/system.log
3.1804 days old /var/log/install.log

Install in seconds.

1

Add the tap (once)

brew tap digital-defiance/tap
2

Install the tools

brew install digital-defiance/tap/findutils-brightdate

This installs bfind, blocate, bupdatedb, and bxargs into $(brew --prefix)/bin. They coexist with system find/locate/xargs without shadowing them.

3

Try it

bfind ~ -maxdepth 2 -type f -printf '%Wt %p\n' | sort -rn | head -5

Build from source

A

Prerequisites

A C compiler (clang or gcc), autoconf, automake ≥ 1.16, and gettext. macOS, Linux, and *BSD all work.

B

Clone & build

git clone https://github.com/Digital-Defiance/findutils-brightdate.git
cd findutils-brightdate
autoreconf -fi
./configure --prefix=/usr/local --disable-nls
make -C gl && make -C lib
make -C find bfind
make -C locate blocate bupdatedb
make -C xargs bxargs
C

Install

sudo cp find/bfind locate/blocate locate/bupdatedb xargs/bxargs /usr/local/bin/

Note: BSH is not required to use these tools — they work in any shell. But if you want BrightDate throughout your whole shell, install BSH (BrightShell), a zsh-compatible shell where date, ls -l, stat, history -d, and $BRIGHTEPOCH all speak the same float. bfind and bping fit right in.

The BrightDate ecosystem.

🐚

BSH — the BrightShell

A zsh-compatible shell with BrightDate woven into every time-related surface: date, ls -l, stat, history -d, sched, and $BRIGHTEPOCH.
Not required for bping, bfind, or any BSH iputils — but makes them even more seamless.

bsh.brightchain.org · GitHub

🦀

crates.io — brightdate

The Rust crate powering BSH internally. Also ships standalone CLI tools (bdate, btime, buptime, bcal, bwatch) via the Homebrew tap.

crates.io · GitHub

📦

npm — @brightchain/brightdate

TypeScript/JavaScript library. Same J2000.0 / TAI semantics, same epoch. Works in Node.js, Deno, and the browser.

npm · GitHub

🍺

Homebrew tap

All Digital Defiance BrightDate tools in one tap. Install bfind, the Rust CLI tools, and BSH itself from a single tap.

brew tap digital-defiance/tap
brew install bright-iputils
brew install bdate btime buptime bcal bwatch bsh