惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
Scott Helme
Scott Helme
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
LINUX DO - 最新话题
S
Security @ Cisco Blogs
Webroot Blog
Webroot Blog
S
Security Affairs
H
Hacker News: Front Page
TaoSecurity Blog
TaoSecurity Blog
W
WeLiveSecurity
G
GRAHAM CLULEY
T
Tenable Blog
Schneier on Security
Schneier on Security
S
Securelist
Cyberwarzone
Cyberwarzone
P
Privacy International News Feed
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Schneier on Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
Recent Commits to openclaw:main
Recent Commits to openclaw:main
O
OpenAI News
N
News and Events Feed by Topic
AWS News Blog
AWS News Blog
C
Cisco Blogs
T
Threat Research - Cisco Blogs
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
C
Check Point Blog
The GitHub Blog
The GitHub Blog
G
Google Developers Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
美团技术团队
Martin Fowler
Martin Fowler
Microsoft Security Blog
Microsoft Security Blog
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
D
DataBreaches.Net
博客园_首页
MyScale Blog
MyScale Blog
博客园 - 叶小钗
博客园 - 三生石上(FineUI控件)
P
Proofpoint News Feed
J
Java Code Geeks
SecWiki News
SecWiki News
P
Palo Alto Networks Blog
Know Your Adversary
Know Your Adversary
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org

Show HN

GitHub - flightdeckhq/flightdeck: Observability and control plane for AI agents. CSP Radar GitHub - Light-Heart-Labs/DreamServer: Turn your PC, Mac, or Linux box into an AI server. LLM inference, chat UI, voice, agents, workflows, RAG, and image generation. GitHub - Diplomat-ai/diplomat-agent-ts: What can your TypeScript AI agent do to the real world? Scan your code. See which tool calls have zero checks Code Block Selector - Visual Studio Marketplace Prometheus dependency graph — interactive showcase | Riftmap Show HN: I made a vi-like modal keyboard plugin for Figma GitHub - run-llama/liteparse: A fast, helpful, and open-source document parser GitHub - dalemyers/Roar: A macOS CLI tool for notifications GitHub - district-solutions/open-agent-tools-coder: Enables small-to-large self-hosted ai models to use local source code when running tool-calling agentic workloads. We actively data mine 20,900+ (2+ TB) popular github repos using large and small ai models to create reuseable: json, markdown and parquet files for local-first tool-calling models. GitHub - progapandist/stripeek: A local TUI proxy for real-time Stripe API debugging, built for navigating complex payloads fast. GitHub - sir1st/hermes-desktop: All-in-one cross-platform desktop app for Hermes Agent — bundles Python + hermes-agent + hermes-web-ui GitHub - astefanutti/shaderbang: Shebang for Shaders Show HN: Generate Claude Code Workflows using Spec Driven Development approach GitHub - nixys/nxs-universal-chart: The Helm chart you can use to install any of your applications into Kubernetes/OpenShift Show HN: AI agents for UK GDAD PCF roles and their skills The Two Pillars: Mixer Mode and Meta-Software in the Reorganization of Software Work After AI GitHub - JaiCode08/teleport-env What 1,000+ Harness Experiments Taught Me About Self-Improving Agents Show HN: Liiists, a Markdown-first, iOS and CLI list app SwiperTab – Get this Extension for 🦊 Firefox (en-US) GitHub - kouhxp/fftext: Summarize, explain, fact-check, or translate any text, URL, or file. No GPU. No cloud. One command GitHub - sweetpad-dev/sweetpad: Develop Swift/iOS projects using VSCode GitHub - dogmaticdev/IRON: IRON a.k.a. Intermediate Representation Object Notation is a Interpreter/Database that is used to create Programming Languages. GitHub - sjhalani7/vaen: Package your AI coding harness into a portable .agent file, and share it across repos, teams, & the community without ever having to copy-paste instructions, skills, MCP config, or secrets. Show HN: Gandalf the Grader Show HN: Citadeld – replay any CI failure locally from a single file GitHub - tdortman/cuSBF: High-Performance GPU Super Bloom Filter coral-ai/claude-code-token-xray at main · Coral-Bricks-AI/coral-ai GitHub - ulyssestenn/funes: Funes is a Git-based framework for LLM-managed knowledge work: an AI Librarian ingests raw sources, builds an interlinked Markdown knowledge base, and uses it to produce cited reports, analyses, and other outputs. GitHub - ThatXliner/gah: Git Add Hunk, built for agents to use GitHub - harmont-dev/harmont-cli: Command-line client for the Harmont CI platform GitHub - brooksmcmillin/mcp-authflow: OAuth 2.0 Authorization Server framework for MCP servers GitHub - javaid-codes/audit-supply-chain-agents GitHub - amorey/gochan: A small library of common channel architectures for Go, inspired by Rust GitHub - arifozgun/OpenGem: Free, Open-Source AI API Gateway with Gemini, OpenAI & Anthropic Compatibility in 1 file GitHub - Pranesh950/BioPetals: 🌸 Run BIOxAI models at home, BitTorrent-style. Fine-tuning and inference up to 10x faster than offloading GitHub - cnguyen14/bounty-doctor: Diagnose a GitHub bounty issue before you waste hours: detects honeypot scam repos, AI-bot attempt swarms, and stale contests. Show HN: CoreMCP – MCP Server for On-Prem DBs Show HN: KittyHTML – Render HTML/CSS as an inline image in your terminal GitHub - bingud/filemat: Web-based file manager Show HN: TruthLens – Free multi-signal deepfake image detector GitHub - apexlocal-jz/claude-usage-tray: Windows system-tray app showing your Claude Code rate-limit usage at a glance. Zero deps, ~300 lines of PowerShell. Cross-IDE (works regardless of VS Code, Cursor, plain terminal). Release v0.1.2.1 · kouhxp/yapsnap GitHub - noopolis/moltnet: Self-hostable chat network for AI agents. Pre-built bridges for Claude Code, Codex, and the Claws. Rooms, DMs, history. No Slack bots, no Matrix, no glue code. GitHub - tamerh/enju: Coordinating Humans, AI Agents, and Compute as Peers on a Shared Workflow Graph Show HN: Continuity-auth – Respect-weighted rate limits for the open web GitHub - luml-ai/luml: AI lifecycle platform where engineers and agents track experiments, train models, and ship to production. GitHub - mrdanielcasper/CoreTex: A UNIX-inspired, biomimetic, flat-file AI harness and knowledge engine. GitHub - clemg/pierre-github: Pierre's diffs.com and trees.software for Github GitHub - lyriks-io/unspaghettit: Behavior-driven AI development without prompt spaghetti. GitHub - sofumel/claude-handoff-revive: Resume Claude Code work after rate/usage/context limits without replaying the prior transcript. Auto-saves at 90%/95% usage. Plugin-installable, 10 languages. GitHub - dotexorg/saferpc: Typed, end-to-end encrypted RPC over any bidirectional channel. GitHub - BeeZeeAgent/beezee: Agent harness orchestration Legato Next.js Boilerplate for Internal Tools · CoreUI GitHub - clark-labs-inc/clark-hash: Clark Hash, 32x smaller searchable sketches for embeddings GitHub - ZeroPointRepo/youtube-mcp: The fastest YouTube transcript + YouTube search MCP for AI agents. Try for free. Typing Mastery — climb toward 100+ WPM, deliberately GitHub - Andebugulin/Awareen GitHub - fayzan123/claude-workflow-composer: Visual desktop app for composing multi-agent coding workflows. Drag agents, attach skills and MCPs, wire handoffs, export to .claude/ GitHub - harshaneel/humanize: Best static AI text humanizer. Two research-grounded skills that work in any LLM (Claude, ChatGPT, Gemini, Codex): humanize beats perplexity-based detectors, ai-check produces forensic scoring with evidence-quoted flags. Nine levers, 50+ peer-reviewed sources, 2024-2026 detection literature. GitHub - StackOneHQ/stack-nudge GitHub - nodes-app/swift-markdown-engine: A native AppKit Markdown editor for macOS, built on TextKit 2 and bridged to SwiftUI. We hardened an LLM agent. Each defense we added made it more exploitable. GitHub - alkait/WhatsKept: Agent-queryable WhatsApp history from an iOS backup — a single Go binary. GitHub - octelium/cordium: Open-source, general-purpose sandbox platform for devs and AI agents that provides identity-based secure access to infrastructure without credentials. WAR.GOV/UFO Microfilm5 GitHub - scosman/videowright: Build animated explainer videos with your coding agent GitHub - dipankar/dscode: The code editor you can take apart. GitHub - zoharbabin/web-researcher-mcp: MCP server (Go) for AI assistants: web search, content extraction, academic/patent/news research. Multi-provider routing, 4-tier scraping, search lenses. Works with Claude, Cursor, and any MCP client. GitHub - ruvnet/RuView: π RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video. GitHub - scanaislop/aislop: Catch the slop AI coding agents leave in your code: narrative comments, swallowed exceptions, as-any casts, dead code, oversized functions. 50+ rules across 7 languages (TypeScript, JavaScript, Python, Go, Rust, Ruby, PHP). Sub-second, deterministic, no LLM at runtime. MIT-licensed. GitHub - kouhxp/cheap-im: CPU-only voice agent approximating Thinking Machines' Interaction Models demo GitHub - unprovable/OrchidMantis: Orchid Mantis — standalone framework for Zero-Knowledge Proofs of eXploit (ZKPoX). GitHub - MarcellM01/TinySearch: Shrink the web for your local LLMs! GitHub - pileax-ai/pileax: PileaX is an all-in-one AI knowledge base system. 🍀 GitHub - TangibleResearch/Halgorithem: A Algo designed to detect AI Hallucitions GitHub - DO-SAY-GO/freelang: I love freelang GitHub - CarpseDeam/Aura-IDE: An AI coding harness that shaped itself - Planner/Worker agents, repo awareness, surgical edits, validation, recovery, and safe diff approvals. GitHub - chojs23/concord: A feature-rich TUI client for Discord GitHub - tommyjepsen/awesome-ux-skills: UX & AI Product designs skills you can use today in Claude Code GitHub - aerf-spec/aerf: Agent Evidence Receipt Format (AERF) — an open specification for tamper-evident, independently verifiable records of AI agent actions. GitHub - kklimuk/docx-cli: CLI for AI agents (Claude, Codex) to read, edit, and comment on .docx files with full format fidelity. GitHub - Jwrede/tokentoll: Catch LLM cost changes in code review. Infracost for LLM spend. GitHub - samchon/ttsc: A `typescript-go` toolchain for compiler-powered plugins and type-safe execution + 500x faster lint integrated into compiler GitHub - Higangssh/homebutler: 🏠 Manage your homelab from chat. Single binary, zero dependencies. GitHub - olalie/tapmap: See where your computer connects and what stands out on a live world map. GitHub - matisiekpl/neond: DX-focused control plane for Postgres dedicated to non-critical workloads. Your postgres:latest replacement 🐘 GitHub - Diplomat-ai/diplomat-agent: What can your AI agent do to the real world? Scan your code. See which tool calls have zero checks GitHub - Bajusz15/beacon: Open-source agent for secure remote access, monitoring, and deploys across home-lab and self-hosted machines like Raspberry Pi, N100, or any Linux server. Open web based TTY or tunnel Home Assistant and other local services securely without opening ports. BigTech AI News - Chrome 应用商店 GitHub - vinhnx/VTCode: VT Code is an open-source coding agent with LLM-native code understanding and robust shell safety. Supports multiple LLM providers with automatic failover and efficient context management. GitHub - michaelaz774/decision-engine: A decision operating system for startup founders, powered by Claude Code. Synthesizes wisdom from 25+ legendary founders and investors into interactive AI-driven decision frameworks. GitHub - Chrilleweb/dotenv-diff: Validate environment variable usage in your codebase GitHub - Lumen-Labs/brainapi2: BrainAPI is a knowledge graph–powered AI memory layer that transforms unstructured data into structured knowledge, enabling intelligent search, recommendations, and contextual memory for AI agents and applications. GitHub - familiar-software/familiar: Let AI watch you work. Familiar lets your AI update its memory, skills, and knowledge by watching your screen. GitHub - skorotkiewicz/rudo: A small, elegant dock for Wayland GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. make sidebar/address bar rounded corner toggleable
How Putt Dojo Tracks a Real Golf Ball — Putt Dojo Dev Log
Gayan · 2026-06-23 · via Show HN

I'm not a golfer. I've never played a round in my life. But I've spent over three years obsessing over what happens in the tenth of a second after a putter strikes a golf ball — because that window turned out to be the key to building something new and useful that did not exist before.

I’ve been digging deep into a specific technical design challenge: how to bring a real, physical ball into mixed reality. My motivation has never been to build a cool tech demo or a flashy video; I wanted to push the boundaries of mixed reality design and build a product with genuine utility.

My app, Putt Dojo, is the result of this work. It uses a custom computer vision algorithm applied to the passthrough camera data of the Meta Quest 3/3S to calculate the speed and direction of a real golf ball the moment it’s struck with a putter. Once the initial motion is determined, the app replaces the physical ball with a simulated version that continues the ball's trajectory into a virtual environment. The trick is the handoff: making the player believe the real ball has simply rolled through a magic window onto a virtual golf green.

This is the story of the design and development process that led to Putt Dojo.

Just get it working

The path to building this product involved a long period of trial and error, learning, and refinement. When I began this work in 2023, the Meta Quest Pro had recently launched. It was the first consumer headset to support color passthrough, but Meta had not yet given developers a way to access the raw onboard camera data. At that stage I did not have a particular product in mind that I wanted to build. I just wanted to get a firsthand sense of the potential value that real-ball tracking has in mixed reality. I wanted to get something working without concerning myself with the constraints of an easy end-user product experience, so I rigged up a pair of external webcams and a separate computer and set out to make a prototype of real-ball tracking in a headset.

Early prototypes: 1) tracking a colored ball (blob tracking) in a single webcam, and 2) a tennis ball tracked using two external webcams, triangulated into 3D space. Recorded in a Meta Quest Pro headset at Stone & Chalk Adelaide Startup Hub.

Using this basic approach, I was able to get a fairly accurate and low-latency 3D ball position, and begin to explore different ways of using a tracked ball in mixed reality experiences. This work helped me understand how a ball could look in the headset, get a feel for the limitations and latency, and make more grounded judgments about potential products that could be made.

A portal into a virtual world

I quickly found that the spatial arrangement of having a “portal into a virtual world” provided a nice balance: it kept the user feeling present and comfortable in their physical space while still retaining a strong sense of scale and immersion that mixed reality headsets excel at. With an appropriate backstop set up, hitting tennis balls and kicking soccer balls through this portal felt incredibly physical and compelling. This was something fundamentally cool that nobody had ever seen before: an interactive mixed reality experience that used a real ball.

Hitting balls through a portal into a virtual scene in a mixed reality headset.

When I showed these early prototypes to people in industry and academia, the response was positive. Many people expressed excitement about the potential of real-ball tracking, and I had some interesting conversations about the different directions this work could go in. These conversations helped me refocus on my original goal. I wanted to build a new kind of product that people would actually use, not just a tech demo that looked cool in a video. It was then that I decided to find a more concrete problem to solve. I needed to find a customer.

Why golf?

That’s when I turned to golf. Those who play golf love to practice wherever they happen to be, and there are many who already train putting indoors using a putting mat or carpet. The right mixed reality app could meet them exactly where they are, transforming a limited practice setup into a more varied and fun training system. So I decided to turn the ball-tracking prototype into a putting simulator for the Meta Quest 3. Putt Window (now Putt Dojo) was born.

Focusing on putting simplified the tracking problem considerably. The ball starts stationary, the important motion is limited to the ground plane, and the spin of the ball is largely irrelevant. These reduced requirements meant that I could use a single webcam rather than two, but the first version of the app, launched in October 2024, was still clumsy. The additional camera and computer requirement, as well as a manual alignment step, made the app pretty tedious to use. Almost no one used these early versions of the app, as the setup friction was much too high.

An early version of Putt Dojo circa 2024 using an external webcam and computer to track the ball.

Reducing friction

If I wanted to build a product that people would actually use, I had to make it as easy as possible to get started. Wearing a headset is already a barrier to entry. Every extra requirement I added on top of that meant fewer people would make it through to the part where the app became valuable. A significant part of developing Putt Dojo was removing those barriers one by one: less setup, less equipment, less friction between the value of the app and the person trying to use it.

A key moment in this journey came in the first half of 2025, when Meta opened up access to the onboard passthrough camera data. Suddenly, a much simpler product design was possible. If the headset could see the ball directly, I could remove the external camera and computer entirely. That would be a huge win for the user, but getting there was far from straightforward. It took months of intense experimentation to adapt the tracking system to run natively on the headset, followed by ongoing work to handle edge cases and refine the setup process until it felt reliable and easy for the end user.

One of the first challenges with using the onboard cameras is that they are constantly moving. With an external webcam, I could ask the player to place the camera close to the ball in order to maximize the useful resolution, and I could rely on the camera staying still. With the headset cameras, those assumptions no longer hold. The camera moves with the player's head, the ball occupies only a small part of the image, and the tracking system has to keep working even as the view changes from frame to frame.

The passthrough cameras are designed for a wide field of view, which means the ball takes up only a small part of the overall image. For a tracking algorithm, that is a problem. Tracking is a constant battle against noise, and the more irrelevant image data the algorithm has to process, the higher the chance of it making a bad decision. One of the key insights was to define a spatial region of interest and ignore everything outside it. Instead of asking the algorithm to understand the whole camera feed, I could make it focus on the only part that really matters for putting: a small patch of ground at and ahead of where the ball is placed. This reduces the number of things that can go wrong and constrains the problem to 2D tracking along the ground plane.

Headset camera feed with tracking mask applied Raw headset camera feed

Camera feed Tracking mask

Drag to compare the raw headset camera feed with the tracking mask applied. The algorithm focuses only on the highlighted region.

The algorithm also had to work across different lighting conditions and surfaces. My first approach was similar to the early prototypes: track the ball by color. In a well-lit room this worked nicely, but it became unreliable in low light. I experimented with letting the user adjust the color thresholds manually, but that pushed too much of the problem onto the player. It made the app feel fiddly, which was exactly what I was trying to avoid. The better approach was to rely less on the ball's color and more on what I already knew about it. I used the Circle Hough Transform to lock on to the known size and circular shape of a golf ball, then sampled its color after finding it. This was more complex, but it made the system much more robust across a wider range of rooms and surfaces. It also meant people could use different colored golf balls, which was a nice bonus for user choice.

Latency was another critical problem. The whole app depends on the illusion that the real ball moves seamlessly into the virtual environment, so any mismatch during that handoff is immediately noticeable. There is a delay involved in capturing the passthrough image, and the tracking system needs a couple of frames before it can confidently estimate the ball's trajectory. In practice, the total delay is about 100-130 milliseconds. That does not sound like much, but for a moving golf ball it is enough time for the physical ball to be well on its way before the simulated ball can even appear.

The Meta Quest passthrough cameras use a rolling shutter, which means different parts of the image are captured at slightly different times. A ball near the top of the frame is recorded a little earlier than a ball near the bottom. By combining the camera frame timestamps with the ball's position inside the image, I could get a pretty good estimate of when the ball actually started moving. Then, instead of spawning the simulated ball at the current time and letting it lag behind, I spawned it at the original position and stepped the simulation forward by the estimated latency. The result is that the player never sees a significant mismatch between the real ball and the simulated one, which helps preserve the illusion that the ball has simply rolled through a portal into the virtual world.

Latency correction demo: comparison of putting with and without latency correction.

Finally, all of this had to run on the Quest 3's mobile chipset, while still leaving enough performance headroom for the rest of the app. I ended up breaking the algorithm down into a series of GPU operations implemented as compute shaders. The Quest 3 passthrough cameras top out at 1280x1280 resolution, but pushing high-resolution image data through the GPU has a real performance cost. By aggressively downsampling, optimizing, and removing unnecessary steps, I eventually pushed the app past the 90 frames per second target I was aiming for. After working through each challenge one by one, I had an accurate, reliable real-ball putting system running natively on the Quest 3. A major barrier between the user and the value of the product was gone, and the app started to gain more traction.

Today, Putt Dojo runs entirely standalone on the Meta Quest 3/3S, delivering an experience at 90 frames per second that can turn a living room into a putting green with no external camera, no computer, and no awkward calibration ritual. That is the part I care about most: the technology fades into the background, and the player just gets to putt. Building that required more than a good tracking algorithm. It required craft in the setup flow, in the performance work, and in the careful arrangement of the physical and virtual elements so the player does not have to think about where one ends and the other begins.

The current version of Putt Dojo, running natively on the Quest 3. Recorded in a Meta Quest 3 headset at GameDevHub Bangkok

The road ahead

Recently, I’ve started seeing similar designs show up in other golf products across the mixed reality space, so I think it's worth documenting where this version of the idea came from. When you spend years working through a problem from first principles, the finished design can look obvious in hindsight, so it's important to reflect on the process. That is how good product ideas tend to move. Once a design works, it starts to feel inevitable.

I do not want the foundational work behind Putt Dojo to get lost in that noise. This app is the product of a long, sometimes messy process of making a real physical ball work inside mixed reality in a way that is accurate, comfortable, and simple enough for normal people to actually use. That foundation now feels complete. The tracking works. The setup works. The physical-to-virtual handoff works. The next challenge is not to keep proving the core idea, but to build something more distinctive on top of it.

That is where Putt Dojo goes next. I still do not think of myself as a golfer, but I have learned to appreciate how much serious practice depends on repetition, feedback, and motivation. The opportunity now is to make that practice feel more engaging without making it less useful: to use mixed reality not just to simulate a green, but to create better reasons to keep putting. The product design problem is mostly solved. Now it is time to focus on the experience built on top of it.


If you’d like to follow what comes next — or share what you’d like to see in the app — the Putt Dojo Discord is the best place to do it.