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

推荐订阅源

云风的 BLOG
云风的 BLOG
The Last Watchdog
The Last Watchdog
L
Lohrmann on Cybersecurity
P
Proofpoint News Feed
I
Intezer
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Cisco Talos Blog
Cisco Talos Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threat Research - Cisco Blogs
S
Schneier on Security
罗磊的独立博客
AWS News Blog
AWS News Blog
S
Securelist
J
Java Code Geeks
月光博客
月光博客
V
Vulnerabilities – Threatpost
博客园 - 【当耐特】
有赞技术团队
有赞技术团队
G
GRAHAM CLULEY
Project Zero
Project Zero
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
DataBreaches.Net
The Hacker News
The Hacker News
Know Your Adversary
Know Your Adversary
The GitHub Blog
The GitHub Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Scott Helme
Scott Helme
博客园 - Franky
S
Security Affairs
Cyberwarzone
Cyberwarzone
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Forbes - Security
Forbes - Security
K
Kaspersky official blog
Martin Fowler
Martin Fowler
Schneier on Security
Schneier on Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
宝玉的分享
宝玉的分享
腾讯CDC
Application and Cybersecurity Blog
Application and Cybersecurity Blog
G
Google Developers Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
美团技术团队
MyScale Blog
MyScale Blog
L
LangChain Blog
V
V2EX
N
News | PayPal Newsroom
N
News and Events Feed by Topic
aimingoo的专栏
aimingoo的专栏
Blog — PlanetScale
Blog — PlanetScale
IT之家
IT之家

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店 GitHub - EdoardoBambini/Agent-Armor-Iaga: AI agents are getting tool access — shell, file system, databases, APIs, secrets. But **nobody is governing what they actually do with it**. Frameworks like LangChain, CrewAI, AutoGen, and Claude Code give agents the power to execute. Agent Armor gives you the power to control, audit, and approve every single action before it happens. HN Vibes — Week 15, Apr 7–13 2026 GitHub - chojs23/ec: Easy terminal-native 3-way git mergetool vim-like workflow GitHub - SethPyle376/hiraeth: Local AWS emulator focused on fast integration testing, with SQS support, SQLite-backed state, and a debug-friendly web UI. GitHub - JakOb-dotcom/cloud-sandbox-security-analysis: Technical analysis and Proof of Concept (PoC) regarding environment variable exfiltration in containerized cloud sandboxes via side-channel data leaks. Springboards - Flint Alpha Show HN: A simpler coding agent harness GitHub - audiodude/sudomake-friends GitHub - 256thFission/mini-mythos: OSS clone of Anthropic’s Mythos harness to locate C/C++ memory vulnerabilities Show HN: OpenParallax: OS-level privilege separation for AI agent execution Hacker News Sorted - Chrome 应用商店 Show HN: How to Install Docker on Ubuntu 24.04 LTS: Complete 2026 Guide GitHub - himanshudongre/smriti GitHub - sverrirsig/claude-control: macOS desktop dashboard for monitoring and managing multiple Claude Code sessions GitHub - ory/dockertest: Write better integration tests! Dockertest helps you boot up ephermal docker images for your Go tests with minimal work. Chiral - Chrome 应用商店 Show HN: Two Claudes collaborating through shared memory on a $100 mini-PC GitHub - pmichaillat/latex-cv: Minimalist LaTeX template for academic CVs GitHub - oguzbilgic/posse: A web UI for Anthropic Managed Agents. GitHub - sshiraz/depsly: Dependency risk analysis tool for npm packages ABI Add safari/agent-harness — Safari browser automation via safari-mcp by achiya-automation · Pull Request #212 · HKUDS/CLI-Anything GitHub - Halfblood-Prince/trustcheck: Verify PyPI package attestations and improve Python supply-chain security GitHub - oguzbilgic/kern-ai: Agents that do the work and show it. GitHub - bruits/satteri: High-performance Markdown and MDX processing for the JavaScript ecosystem GitHub - tylergibbs1/feedstock: High-performance web crawler and scraper for TypeScript, powered by Bun and Playwright GitHub - Grimm67123/grimmbot: The self-improving sandboxed and open-source AI agent. With persistent memory and scheduling. GitHub - whitevanillaskies/whitebloom: Local whiteboard that blooms. GitHub - hwdsl2/docker-whisper: Docker image for a self-hosted Whisper speech-to-text server with speaker diarization and OpenAI-compatible transcription and translation APIs. Powered by faster-whisper. Supports all Whisper models, NVIDIA GPU (CUDA) acceleration, JSON/SRT/VTT output, SSE streaming, offline mode, and multi-arch (amd64, arm64). GitHub - yisding/reviewwiggum GitHub - MarwanAlsoltany/serrors: Structured errors for Go: sentinel hierarchies, typed data, custom formatting, and slog integration. GitHub - soatok/age-php GitHub - Luthiraa/markitme GitHub - stagas/rtdiff: realtime git diff gui and AI-assisted commits GitHub - tombedor/excalicharts GitHub - wh1le/excalidraw-edit: Open and edit .excalidraw files from the terminal. Offline, auto-saves to disk. MalExt Sentry - Malicious Extension Scanner - Chrome 应用商店 GitHub - syi0808/asciianimesvg: Generate animated ASCII art SVGs from text. CLI, Rust library, WASM, and web editor. GitHub - zaina-ml/ml_forge: A visual-based graph node editor for training computer vision models. GitHub - anakin87/llm-rl-environments-lil-course: 🌱 A little course on Reinforcement Learning Environments for evaluating and training Language Models GitHub - takaakit/superpowers-uml: Superpowers-UML modifies Superpowers to ensure a software development workflow in which AI agents design through UML modeling. AdriByte Studio - Sviluppo Web e Soluzioni Digitali GitHub - chouligi/angel-copilot: Your personalized Angel Investment Advisor Show HN: MoodSense AI (ML and FastAPI and Gradio, Deployed on Hugging Face) Moodsense Ai - a Hugging Face Space by aman179102 GitHub - agenteractai/lodmem: Level Of Detail Context Management for Agents GitHub - ostefani/subnetlens: A fast, concurrent network scanner with a TUI and plain-text CLI, built in Go. It discovers live hosts on your network, scans their open ports, resolves hostnames, and fingerprints operating systems—delivered. Cyber Pulse: Agentic Intel - Apps on Google Play Whisper API: Self-Hostable Speech to Text Transcription The Agent-Web Protocol Stack: A Research Thesis GitHub - msmarkgu/RelayFreeLLM: A restful API designed to route user prompts to various AI model providers. Show HN: Provepy – A Python decorator that proves your code using Lean and LLMs Show HN: Pardonned.com – A searchable database of US Pardons GitHub - patrickdappollonio/dux: Dux is a terminal UI that lets you run multiple AI coding agents side by side, each in its own git worktree, with full companion terminals, macros, commit generation, and a command palette that knows more tricks than you do. kMC Crystal Simulator Show HN: HyperFlow – A self-improving agent framework built on LangGraph GitHub - stef41/vibescore: 🎵 Grade your vibe-coded project. One command, instant letter grade across security, quality, dependencies, and testing. GitHub - stef41/lmscan: 🔍 Detect AI-generated text and fingerprint which LLM wrote it. Open-source GPTZero alternative. Zero dependencies, works offline. imgur.com GitHub - visionscaper/collabmem: Enabling long-term collaboration with Agentic AI - building up episodic and world model memory over time with in-context awareness 在 Steam 上购买 FriedrichAI: Offline AI 立省 10% GitHub - atripati/ark: AI Runtime Kernel — a context operating system for AI agents. Eliminates tool bloat, loads only what’s needed, and gives LLMs their reasoning space back. GitHub - nowork-studio/toprank: Open-source Claude Code skills for SEO, SEM, Google Ads GitHub - tacomanator/sash: Lightweight macOS menu bar app for reliably cycling through windows of the current application. Appents | Social Media Management for Product-First Teams GitHub - pnhoang/youtube-spam-blocker: Automatically detects and hides spam messages in YouTube Live chat. Set rate limits, keyword filters, and block repeat offenders. GitHub - decisionnode/DecisionNode: CLI + Local MCP - A shared structured memory store across Claude Code, Cursor, Windsurf, Antigravity, and every MCP client. Semantically queryable. GitHub - AvaCodeSolutions/django-email-learning: An open source Django app for creating email-based learning platforms with IMAP integration and React frontend components. The $100K Gap in Kubernetes Security Tooling Function Calling Harness: From 6.75% to 100%
How Putt Dojo Tracks a Real Golf Ball — Putt Dojo Dev Log
Gayan · 2026-06-23 · via Hacker News: 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.