Experiments › Experiment Template
Notes · the whole page
  • Reader. A robotics researcher who has never seen your code. No run IDs, Hydra/YAML config names, W&B group names or CLI flags in the prose; say what each setup does ("the policy also sees fingertip contact forces"). Load writing:style before writing.
  • Title. Names what the experiment measures, never its result: "How much does fingertip tactile input help in-hand reorientation?" not "Tactile input doubles success". The homepage card uses the same title.
  • Language. English only, for now.
  • Write last. No standfirst and no Takeaways until right before publishing. The Takeaways sentence is also copied into <meta name="description">. Cards carry no text.
  • The draft is a dashboard. While runs go on, every running or planned figure is already on the page with its axes, legend and a status word in the middle (Running, Queued, Planned), and fills in when its runs finish. A figure whose runs are dropped is deleted. Publish only when no placeholder is left.
  • Order. The page opens with the cover animation alone: no heading, no caption, not in the contents. Then: Setup, Experiments, Takeaways, Related work, Acknowledgements, Experiment record, Citation. The side contents lists every section and, under Experiments, every question.
  • Cards on the homepage. Newest first; the grey template card stays last. A card is the cover picture, the date and the title, nothing else.
[Date of publishing, e.g. Nov 2, 2026]

[What the experiment measures, phrased as a question or a topic]

[Standfirst: empty while drafting. Right before publishing: two or three sentences with the answer, negatives included.]

By Qixuan Huang
Notes · cover
  • What it shows. A schematic of the setup, never a result. It carries the whole setup: the embodiment (arm, hand, DoF), the object, what the policy observes, what it outputs, and the one variable the page compares, so a reader can tell the experiment from the picture alone. A row of unrelated icons is not enough.
  • Format. Inline SVG, 1600×1000 (16:10), no text. If it moves: a 10–15 s seamless loop drawn on a canvas or SVG with a render(t) function, or an exported MP4 at 1920×1080 under 3 MB.
  • Palette. Navy ground #051E39; gold #B39051 for what moves or matters (the controlled links, fingers, the varied component); cream #F9F6E5 for inputs and observations (camera, object pose, touch); light gold #DEBD88 for goals and targets; slate #5f6b7a for fixed parts (table, base, walls). Flat fills, 2 px outlines, no gradients or shadows.
  • One style. Every other drawing on the page (setup panels, step-by-step explainers) uses this palette and line weight, with moving dots instead of arrows and as few labels as possible.
  • Card. The homepage card shows a still frame of the cover.
The two-link arm above is a stand-in.

Setup

[The baseline by its exact name, linked to the original paper and code at a fixed commit or release, e.g. "the Allegro-hand reorientation task from Isaac Lab v2.x, trained with PPO from rsl_rl". Then: what we change, and the metric. One or two paragraphs.]

baseline compute_reward() → ours (simplified)Code
# simplified for reading; the Code link has the real code
rot_dist = quat_angle(obj_rot, goal_rot)
- reward = -rot_dist
+ # [what this step does, in words]
+ reward = -rot_dist + [our term]
Notes · setup
  • Text. One or two paragraphs: the baseline by exact name with a link pinned to a commit or release; the embodiment (robot or hand model, DoF, sensors); simulator and version, physics step and control frequency; the task and what counts as success (e.g. "within 0.1 rad of the goal for 10 consecutive steps"); what we change; the metric. Define the compute axis once here (see Experiments). Sizes, step counts and seeds go in the figures, not here.
  • Diff. One diff of the core change and of any switch the figures compare, rewritten for reading: baseline lines red, ours green, both simplified alike, one comment per changed step, a header saying it is simplified, and a Code link to the real file.
  • Controls without code changes (domain-randomization ranges, number of parallel envs, action scale) go in the captions of the figures that use them.
  • Real robot. If any result is on hardware, say which, the robot and cameras, and the number of trials per setting.
  • End with a link to the exact public commit the runs used.
Notes · publishing the code
  • One branch per experiment on a public repo under github.com/k33ronng, named after the slug, carrying the history as it was run.
  • Before any public push, scrub cluster details from contents, file names and commit messages: PACE usernames, /storage/home/hcoda1/… and scratch paths, Slurm account and partition names, W&B entity names and API keys. Scan every file until nothing is left. Keep the unscrubbed original private.
  • A .gitignore block keeps credentials, wandb/, Slurm logs, checkpoints and raw videos out. Checkpoints and long videos go to a GitHub Release or Hugging Face, linked from the page.
  • Push only with the owner's approval. Code links go live after the push.

Experiments

Notes · experiments
  • By question. Each subsection is titled with the question its figures answer, in the order the questions came up, so the page shows how the work went. A tag before the title gives its status: AnsweredRunningQueuedPlanned
  • Answer first. An Answered question is followed at once by its answer: one or two sentences in words, at the level the figures support ("Yes, but only once the object is in grasp."), without supporting numbers. The tag alone is not enough.
  • Setup panels. Each subsection opens with a schematic, in the cover style, of the setups it introduces: one panel per setup, each with its name and one sentence. Tags mark the main setup Main and the one it is measured against Baseline. A setup drawn earlier is not drawn again.
  • Figure order. The first figure compares every setup on the raw metric with the baseline. Each later figure makes one point. Once the page settles on a setup, later variants follow that setup only.
  • Titles name what is plotted, never an axis or the comparison ("Reorientation success", not "Success vs. env steps against baseline").
  • Axes. Compute axis: environment steps summed over all parallel envs, or GPU-hours when wall-clock matters; say which. Success rate: the fraction of N evaluation episodes per seed (state N, and deterministic or stochastic actions), shown as the mean with a ±1 s.d. band over at least 3 seeds, 5 preferred.
  • Data, not typing. Charts are drawn from a generated data file (exported from W&B), never typed numbers, under the writing:plot rules. No running text lists numbers or restates a figure.
  • Captions state, in order: why this figure comes now, what is plotted, and what it shows in words. A placeholder's caption states the motivation and what it will test.
  • Videos. When a rollout shows something a curve can't (a slip, a regrasp, a recovery), add clips beside the figure: same camera and same seed across setups, muted, looping, ≤10 s, MP4 (H.264) with a poster frame, under 5 MB each, labelled by setup in the caption.

Running[First question, e.g. Does fingertip touch speed up learning in-hand reorientation?]

[Answer in one or two sentences once Answered.]

SETUP SCHEMATIC
[Setup name]Baseline
[One sentence on what it does.]
SETUP SCHEMATIC
[Setup name]Main
[One sentence on what it does.]
[Reorientation success]Running
Running · 3 of 5 seeds
0[Environment steps][max]
[Main][Baseline]
ROLLOUT · BASELINE
ROLLOUT · MAIN

[Why this figure comes now. What is plotted: success rate over N evaluation episodes per seed, mean ± 1 s.d. over 5 seeds, against environment steps. What it shows, in words.]

Planned[Question the results raised]

[What is plotted]Planned
Planned
[x-axis]

[Why this question came up, and what the figure will test.]

Takeaways

[Empty while drafting.]

Notes · takeawaysRight before publishing: one precise sentence with the result, negatives included. The same sentence goes into the page's meta description.

[Work, Authors Year]: [what it did, in one sentence]. [How this experiment relates to it: the same idea in a new setting, a test of its claim, or a different answer.]

Notes · related workThree to five of the closest works, not a survey: a link, what it did, and its relation to this experiment. Every reference is real and checked (open the paper; don't cite from memory).

Acknowledgements

[Thanks to people, names in alphabetical order. Delete this line if there are none.]

Thanks to Georgia Tech’s PACE team for the computing resources that made these experiments possible.

Notes · acknowledgementsThanks to people first, names in alphabetical order. Then the one PACE line, the same on every page; delete it if no PACE cluster was used.

Experiment record

Setup[Varied variable]SeedsGPUsHoursFiguresCodeW&B
[Setup in words][value]5[1× H100][6.2]1[commit]run
[Baseline in words][value]5[1× H100][5.8]1[commit]run
Main runs: [X] GPU-hours ([GPU type]), [N] jobs
Other compute: [X] GPU-hours, [N] jobs
Notes · experiment record
  • No text above the table. One row per training run behind the page, generated by a script from the W&B export (finished runs) and Slurm sacct on PACE (queued and running jobs), never typed. Only main runs get rows.
  • Columns follow the topic: the setup in words, then each variable the page varies in a column of its own, then seeds, GPUs (count × type, e.g. H100, A100, L40S), hours, figures, code and W&B. No status column.
  • Two closing lines count from sacct over every GPU job of the project (GPU-hours = GPUs × elapsed): "Main runs" covers jobs that belong to a row, every resumed segment included; "Other compute" covers everything else: smoke tests, debug runs, superseded and abandoned runs. Together they are everything the page cost.
  • Links. Figures link to the figure on the page; Code to the public commit the run used; W&B links are absolute and open in a new tab. Every finished run links both. Never create a W&B page before the run exists.
  • Every finished run appears in at least one figure; a run in no figure gets a figure or leaves the table.
  • On phones no column is hidden: the setup column narrows and wraps, and the table fits at 375 px without sideways scrolling.

Citation

@misc{huang2026[slug],
  title        = {[Title]},
  author       = {Huang, Qixuan},
  year         = {2026},
  howpublished = {Blog post},
  url          = {https://qixuanhuang.com/exps/[slug].html}
}

Page format adapted from Wenhao Chai's Experiments.