A lightweight, self-updating list of upcoming conferences and workshops relevant to the Wheeler Lab: bioinformatics, ML for biology, genomics, and protein structural modeling.
Live site: https://wheelerlab.org/conferences/
data/conferences.jsonis the single source of truth. Each entry has a machine-readablestart/end(ISO dates, used for sorting and pruning), a human-readabledates_display, plusname,url,location,paper_deadline, andposter_deadline.index.html/app.js/style.cssrender the data as a static page. The page splits entries into Upcoming (end date ≥ today) and a collapsed Past section entirely in the browser — no build step.scripts/prune.pymoves entries whoseenddate has passed out ofconferences.jsonand intodata/archive.json, which the page loads for its Past conferences section, and refreshes theupdatedfield.
- Archiving —
.github/workflows/prune.ymlrunsprune.pyweekly (Mondays) and commits the result, so the Upcoming list never shows finished meetings (they move todata/archive.jsonfor the Past section). It can also be run on demand from the repo's Actions tab. - Discovery — a scheduled Claude agent runs every two weeks, searches the
web for new relevant conferences within the next ~12 months, adds them to
data/conferences.json(de-duplicating on name), and commits directly. SeeDISCOVERY_PROMPT.mdfor the exact instructions it follows.
Easiest: click + Add a conference on the site. Paste a URL or type a
short description (e.g. Asilomar Repbase/Dfam retreat - Sept 13-16 at Asilomar (Monterey)) — one per line, mix freely — and submit. Each line is
appended to add-conferences.txt; on its next run (hourly) the discovery
agent fetches URLs, interprets descriptions, verifies details against the real
site, adds an entry to data/conferences.json, and removes the line. (The button
uses the same GitHub token as attendees.)
You can also edit add-conferences.txt directly and commit — same result. To
process immediately instead of waiting, open the routine at
https://claude.ai/code/routines and click Run now.
Click Edit at the end of a conference's row and describe the change in plain
English (e.g. poster deadline should be October 5, 2026). The request is
appended to edit-requests.txt; on its next run the discovery agent finds
the entry, applies the change (your stated value wins; it may verify against the
site), and removes the line. You can also edit data/conferences.json directly
for an instant change.
Click the ✕ at the end of a conference's row and confirm. Its name/URL is
added to data/hidden.json; the page hides anything listed there, and the
discovery agent won't re-add it. To bring it back, delete its entry from
data/hidden.json.
The Attending column lists lab members going to each upcoming meeting. Add
yourself right from the site: click + Add in a conference's row, type a name,
and Save. The change is committed to data/attendees.json and appears on the
page within ~1 minute.
The first time you add someone, the page asks for a GitHub fine-grained
personal access token with Contents: Read and write on this repo. It is
stored only in your browser (localStorage) and sent only to GitHub — never
embedded in the page. Use the footer GitHub token… link to change or clear
it. You can also edit data/attendees.json by hand (keys are conference names,
matched case-insensitively).
Add or correct an entry directly in data/conferences.json and commit. Keep
start/end as valid YYYY-MM-DD dates so sorting and pruning work.
python3 -m http.server 8000
# then open http://localhost:8000/