provenance:writing:conferences
Differences
This shows you the differences between two versions of the page.
| provenance:writing:conferences [2026/08/27 14:06] – Working log for writing:conferences: corpus queries, CFP/h5/ICORE fetches, review freeze and accept/reject log. Authored by Claude karel.kubicek.claude | provenance:writing:conferences [2026/08/27 14:15] (current) – Host venue_rates.py here; content page is now submit-here plus CFPs. Authored by Claude karel.kubicek.claude | ||
|---|---|---|---|
| Line 130: | Line 130: | ||
| * Improve the stub rather than split into '' | * Improve the stub rather than split into '' | ||
| - | * Lead with crawl-rate ranking, not ICORE. | + | * Lead with "where to submit and why", then a CFP table. Crawl-rate ranking |
| * Keep H5, but in a fallback section, with Scholar-only numbers, and call out the stub's Scimago mix-up. | * Keep H5, but in a fallback section, with Scholar-only numbers, and call out the stub's Scimago mix-up. | ||
| * Organise by decision (what you measured) then tables, which closes " | * Organise by decision (what you measured) then tables, which closes " | ||
| Line 140: | Line 140: | ||
| ===== Embedded script ===== | ===== Embedded script ===== | ||
| - | * '' | + | '' |
| + | |||
| + | <file python venue_rates.py> | ||
| + | # | ||
| + | """ | ||
| + | |||
| + | The seven-venue extraction is not a web-measurement corpus. This script is | ||
| + | the reprint on provenance: | ||
| + | do not have extract/ | ||
| + | many crawled, how many are empirical, how many recruited human participants. | ||
| + | |||
| + | Fails if extract/ | ||
| + | the crawled definition disagrees with lib.mjs (crawlConfig present OR | ||
| + | automated-web-crawl in studyTypes). | ||
| + | |||
| + | Usage: | ||
| + | uv run python pages/ | ||
| + | """ | ||
| + | |||
| + | from __future__ import annotations | ||
| + | |||
| + | import json | ||
| + | from pathlib import Path | ||
| + | |||
| + | ROOTS = [ | ||
| + | Path("/ | ||
| + | Path("/ | ||
| + | ] | ||
| + | |||
| + | VENUE_ORDER = [" | ||
| + | VENUE_LABEL = { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | |||
| + | |||
| + | def data_root() -> Path: | ||
| + | for root in ROOTS: | ||
| + | if (root / " | ||
| + | return root | ||
| + | raise FileNotFoundError( | ||
| + | " | ||
| + | + ", " | ||
| + | ) | ||
| + | |||
| + | |||
| + | def is_crawled(p: | ||
| + | return p[" | ||
| + | |||
| + | |||
| + | def is_empirical(p: | ||
| + | return p[" | ||
| + | |||
| + | |||
| + | def is_human_subjects(p: | ||
| + | return len(p[" | ||
| + | |||
| + | |||
| + | def pct(n: int, d: int) -> str: | ||
| + | if d == 0: | ||
| + | raise ZeroDivisionError(" | ||
| + | return f"{100 * n / d: | ||
| + | |||
| + | |||
| + | def main() -> None: | ||
| + | path = data_root() / " | ||
| + | rows: list[dict] = [json.loads(line) for line in path.read_text().splitlines() if line] | ||
| + | if not rows: | ||
| + | raise RuntimeError(f" | ||
| + | |||
| + | by_venue: dict[str, list[dict]] = {v: [] for v in VENUE_ORDER} | ||
| + | for p in rows: | ||
| + | v = p[" | ||
| + | if v not in by_venue: | ||
| + | raise RuntimeError(f" | ||
| + | _year = p[" | ||
| + | _slug = p[" | ||
| + | if _year is None or _slug is None or _slug == "": | ||
| + | raise RuntimeError(f" | ||
| + | by_venue[v].append(p) | ||
| + | |||
| + | crawled = [p for p in rows if is_crawled(p)] | ||
| + | print(f" | ||
| + | print() | ||
| + | header = ( | ||
| + | f" | ||
| + | ) | ||
| + | print(header) | ||
| + | print(" | ||
| + | for v in VENUE_ORDER: | ||
| + | g = by_venue[v] | ||
| + | n = len(g) | ||
| + | cr = sum(1 for p in g if is_crawled(p)) | ||
| + | emp = sum(1 for p in g if is_empirical(p)) | ||
| + | hs = sum(1 for p in g if is_human_subjects(p)) | ||
| + | print( | ||
| + | f" | ||
| + | f" | ||
| + | f" | ||
| + | f" | ||
| + | ) | ||
| + | missing = [v for v in VENUE_ORDER if len(by_venue[v]) == 0] | ||
| + | if missing: | ||
| + | raise RuntimeError(f" | ||
| + | |||
| + | |||
| + | if __name__ == " | ||
| + | main() | ||
| + | </ | ||
| + | |||
| + | Real output, | ||
| + | |||
| + | < | ||
| + | extracted 5859 crawled 1120 (19.1% of extracted) | ||
| + | |||
| + | Venue Papers | ||
| + | -------------------------------------------------------------------------------------- | ||
| + | The Web Conference | ||
| + | PETS / PoPETs | ||
| + | IMC | ||
| + | NDSS 701 | ||
| + | ACM CCS | ||
| + | USENIX Security | ||
| + | IEEE S& | ||
| + | </ | ||
| ===== Report script output (unedited) ===== | ===== Report script output (unedited) ===== | ||
| Line 549: | Line 679: | ||
| * **Accepted (minor).** This log was empty while the generic pass was in flight. This paragraph is the disposition. | * **Accepted (minor).** This log was empty while the generic pass was in flight. This paragraph is the disposition. | ||
| * **Rejected (minor).** '' | * **Rejected (minor).** '' | ||
| + | |||
| + | === Post-publish edit (2026-08-27) === | ||
| + | |||
| + | The content page was rewritten so it is a submission map: where to send the paper, and the current CFP with dates. '' | ||
provenance/writing/conferences.txt · Last modified: by karel.kubicek.claude
