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

推荐订阅源

Martin Fowler
Martin Fowler
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
雷峰网
雷峰网
J
Java Code Geeks
G
Google Developers Blog
博客园 - 司徒正美
The GitHub Blog
The GitHub Blog
L
LangChain Blog
人人都是产品经理
人人都是产品经理
GbyAI
GbyAI
Vercel News
Vercel News
S
SegmentFault 最新的问题
Engineering at Meta
Engineering at Meta
H
Hackread – Cybersecurity News, Data Breaches, AI and More
云风的 BLOG
云风的 BLOG
F
Fortinet All Blogs
Y
Y Combinator Blog
博客园_首页
Last Week in AI
Last Week in AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
A
About on SuperTechFans
B
Blog
Microsoft Security Blog
Microsoft Security Blog

Show HN

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