Files
timban c08fc277a9 Initial commit: NetworkCity — network traffic as a neon city
A native macOS network monitor that renders live traffic as a top-down
neon city: your Mac is downtown, remote orgs are glowing districts, and
traffic is cars of light driving the roads.

Architecture:
- NetworkCityCore: swappable data layer behind a ConnectionSource protocol
  (nettop-backed today), plus pure/tested logic — traffic diffing, org
  classification (reverse-DNS + CIDR), traffic classes, hub-and-spoke
  expansion policy, label anti-overlap, and latency→distance layout.
- NetworkCityApp: SwiftUI + SpriteKit city — auto-expanding districts,
  protocol-coloured cars, click-to-inspect panel, and latency-as-distance
  (districts glide to their measured RTT).
- nettop-probe: CLI proof of the data layer.

44 tests passing.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 08:43:32 -07:00

18 lines
729 B
Swift
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import Foundation
import CoreGraphics
/// Maps a measured round-trip time (ms) to a radial distance from downtown.
/// A log curve so the busy near range (150ms LAN/CDN) spreads out instead of
/// bunching at the center, while the long tail (transcontinental) saturates.
public enum LatencyLayout {
public static let minRadius: CGFloat = 150
public static let maxRadius: CGFloat = 560
public static let rttCeiling: Double = 250 // ms mapped to the outer edge
public static func radius(forRTT rtt: Double) -> CGFloat {
let clamped = max(0, min(rtt, rttCeiling))
let norm = log10(1 + clamped) / log10(1 + rttCeiling)
return minRadius + CGFloat(norm) * (maxRadius - minRadius)
}
}