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

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
博客园 - 三生石上(FineUI控件)
博客园 - 【当耐特】
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
宝玉的分享
宝玉的分享
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
阮一峰的网络日志
阮一峰的网络日志
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
爱范儿
爱范儿
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
S
SegmentFault 最新的问题
博客园 - Franky
博客园_首页
T
Tailwind CSS Blog
雷峰网
雷峰网
罗磊的独立博客

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 - CuriousG102/conference-planner: A self-hostable,...
curiousg · 2026-06-26 · via Hacker News: Show HN

Conference Agenda — a personal planner for CS conferences

A note from the author

This app was almost entirely vibecoded during CVPR to make the CS conference experience easier. You can try out most of the CVPR 2026 version here! But this section of the README.md (and this blog post) has been written from me to you, by hand. It should work for most major conferences, since they share a common framework. Even if you go to a conference that runs on a different framework, my experience was that scraping is a trivial problem in the age of LLMs. The app itself may still be helpful to you, because I improved it over several days as I ran into issues and feedback from other users. So please, fork at will and enjoy!


A self-hostable, mobile-friendly planner for large academic conferences. Pick the tutorials, workshops, oral sessions, keynotes, poster sessions and individual papers you want to attend; add your own parties, booth shifts and meetups; keep private notes and links on anything; sync across devices with one passcode.

It ships as a single Cloudflare Worker with Static Assets (one Worker serves the static site and the /api/state persistence API) — no build step, no framework, vanilla JS.

Why it's portable. Most big CS conferences — CVPR, ICCV, ECCV, NeurIPS, ICML, ICLR and more — run their program on one shared platform (the EventHosts platform, the production descendant of the open-source MiniConf). They all expose the same …/virtual/<year>/calendar page and URL grammar, so the same scraper and the same app work across them with a config edit. See docs/SCRAPING.md.

The reference deployment is CVPR 2026 (Denver · June 2–7); the case study walks through exactly how it was built.

Screenshots

Mobile-first — built to use on the show floor. (Images are generated by the screenshot tests; see Testing.)

Features

  • My Agenda — everything you starred, grouped by day, with your travel pinned in. Items outside your arrival/departure window get flagged. Travel is stored in your synced bucket, not the code.
  • Browse — every session by day; filter by type; full-text search (titles, organizers, speakers, rooms); abstracts inline. Individual talks inside a session are separately starrable.
  • Papers — search all papers/posters by title; star the ones to hunt down (they land on your agenda under their poster session, in board-number order).
  • Per-item notes & links — a private notes box and editable link list on every item, paper, and custom event.
  • Add your own — parties, booth times, networking, meals, travel.
  • Sync — one passcode, every device. Conflict-free per-key merge; works offline; falls back to local-only when no backend is configured.
  • Import — merge a shared/curated set of picks (e.g. an AI-generated shortlist; see Robot Picks).

Quick start

Run it for your conference

  1. Configure (the only conference-specific edits):
    • conference.jsonid, name, year, the platform host/paths, and the days → date map. (Optional programGuides PDFs.)
    • public/config.js — branding (badge, titles, timezone label). Keep id equal to conference.json.
    • wrangler.tomlname + [vars] CONF_NS (same id).
  2. Scrape the schedule into public/data/*.json:
    bash scripts/fetch_sources.sh
    pip install beautifulsoup4 lxml      # + pymupdf only if you use program-guide PDFs
    python3 scripts/extract.py
    docs/SCRAPING.md covers the platform, the calendar HTML, and tuning.
  3. Deploy to Cloudflare Workers (or run static/local-only):
    npx wrangler kv namespace create AGENDA_KV   # put the id in wrangler.toml
    npx wrangler deploy
    docs/HOSTING.md covers hosting modes, sync, custom domains, and limits.

Don't have a Cloudflare account? The site works local-only out of the box (picks in localStorage); KV is only needed for cross-device sync.

Going further: optional enrichment scraping

Steps 1–3 give a complete, working agenda. Everything below is optional — each pass just adds extra fields the UI shows if present, so you can layer them on later (or never). All are documented in docs/SCRAPING.md:

  • Poster board numbers & locationspython3 scripts/scrape_poster_numbers.py adds location + posterNumber to each paper (public, resumable). → SCRAPING.md → The pipeline
  • Project-page links & oral talk listspython3 scripts/enrich.py adds homepage + talks[]; needs a logged-in session cookie jar (CVPR_COOKIES=). → SCRAPING.md → The pipeline
  • Bespoke per-workshop schedules & Zoom links — the finer-grained content that isn't on the platform lives on each workshop's own site. A dynamic agent workflow (one LLM agent per page → a fixed schema) collects it into a wf_results.json, which scripts/merge_scraped.py folds in. → SCRAPING.md → Bespoke linked pages → dynamic agent workflows
  • AI-curated 🤖 Robot Picks — triage thousands of papers down to a personal, ranked shortlist and import it as a private tab. → ROBOT_PICKS_GUIDE.md

Repository layout

public/                  # static site (served by the Worker's [assets] binding)
  index.html, styles.css
  config.js              # ← conference branding/UX (edit this to re-skin)
  app.js                 # all UI logic, vanilla JS, no build step
  data/
    schedule.json        # days + selectable items (generated)
    posters.json         # every paper/poster (generated)
src/index.js             # Worker: serves assets + GET/PUT sync API (KV)
conference.json          # ← conference data-pipeline config (edit to retarget)
wrangler.toml            # Worker entry, static-assets dir, KV binding, CONF_NS var
scripts/
  fetch_sources.sh       # download calendar HTML (+ optional PDFs) per conference.json
  extract.py             # build public/data/*.json from the virtual calendar
  scrape_poster_numbers.py # add poster board locations/numbers (public)
  enrich.py              # AUTHED: project-page links + oral talk lists
  merge_scraped.py       # fold external workshop talk schedules + Zoom links in
docs/
  DATA_FORMAT.md         # the JSON schema the app needs (the real contract)
  SCRAPING.md            # the shared platform + how to scrape any conference
  HOSTING.md             # Cloudflare/static/local hosting + sync + limits
  CVPR_2026_CASE_STUDY.md# the worked, end-to-end example
triage/                  # (optional) the CVPR Robot Picks recommendation pipeline
ROBOT_PICKS_GUIDE.md     # how to build an AI-curated shortlist & import it
docs/ARCHITECTURE.md     # sync design (per-key LWW), invariants, testing approach
test/                    # unit tests (node:test) + e2e/screenshot tests (Playwright)
package.json             # test scripts + dev tooling (the app itself has no build step)

Documentation

Doc What's in it
docs/DATA_FORMAT.md The exact schedule.json / posters.json / import schemas. The contract the app renders. Start here if you scrape your own way.
docs/SCRAPING.md The EventHosts//virtual/<year>/ platform, the calendar HTML anatomy, how to adapt extract.py, and scraping bespoke linked pages (per-workshop talk schedules) with dynamic agent workflows.
docs/HOSTING.md Local-only vs static vs Cloudflare Worker + KV; deploy steps; how sync works; free-tier limits; privacy.
docs/CVPR_2026_CASE_STUDY.md How the reference CVPR 2026 deployment was actually built, wrinkles included.
ROBOT_PICKS_GUIDE.md Build an AI-curated shortlist of papers and import it as a private Picks tab.
docs/ARCHITECTURE.md How cross-device sync works: per-key last-writer-wins merge, the data-loss invariants, and the testing approach.

Testing

Two layers, both runnable from a fresh clone. The app has no build step; the test tooling lives in package.json (npm install pulls only Playwright).

npm test                 # unit tests — node:test, zero dependencies, ~0.3s
npm run test:e2e         # end-to-end + screenshots — Playwright (needs a browser)
npm run shots            # just (re)generate the README screenshots
  • Unit (test/unit/) — runs the real public/app.js in a stubbed vm context (the harness in docs/ARCHITECTURE.md) and the Worker (src/index.js) against an in-memory KV. Covers the conflict-free sync merge (LWW, tombstones, commutativity/idempotence, the data-loss invariants), the v2→v3 migration, the time/sort/escape helpers, and every /api/state branch. No browser required.
  • E2E + screenshots (test/e2e/) — Playwright drives the app at a mobile viewport against a tiny zero-dependency test server (static site + in-memory /api/state + small data fixtures). It asserts the real flows — browse, search, expanding a session to its talk agenda, star → appears on agenda, importing a curated 🤖 Picks file, settings, and a full passcode sync round-trip — and writes the phone-sized screenshots in docs/screenshots/ used above. First run needs npx playwright install chromium.

Notes & caveats

  • All times are conference-local and shown as given — the app does no timezone conversion (it labels them via config.jstimezoneLabel).
  • The sync passcode hashes to the KV key; each passcode is its own private bucket. It is not real auth — pick something unguessable. See docs/ARCHITECTURE.md.
  • Sharing widely? Cloudflare's free KV write cap (1,000/day, account-wide) is the one capacity ceiling; sync degrades gracefully and Workers Paid ($5/mo) removes it. See docs/HOSTING.md.
  • Attendee-only Zoom links are never committed or served publicly; they're delivered as a private, passcode-synced import file (*zoom-links*.json is gitignored).

License

MIT. Built by Miles Hutson. Not affiliated with CVF, the EventHosts platform, or any conference.