<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator>
  <link href="https://dwgong.github.io/feed.xml" rel="self" type="application/atom+xml" />
  <link href="https://dwgong.github.io/" rel="alternate" type="text/html" />
  <updated>2026-09-26T00:00:00+00:00</updated>
  <id>https://dwgong.github.io/feed.xml</id>
  <title type="html">Your Name</title>
  <subtitle>Notes, experiments, and progress logs from a physics PhD student applying machine learning to experimental science.</subtitle>
  <author>
    <name>Your Name</name>
  </author>
  <entry>
    <title type="html">Agentic quantum many-body physics</title>
    <link href="https://dwgong.github.io/blog/2026/agentic-quantum-many-body-physics/" rel="alternate" type="text/html" title="Agentic quantum many-body physics" />
    <published>2026-09-26T00:00:00+00:00</published>
    <updated>2026-09-26T00:00:00+00:00</updated>
    <id>https://dwgong.github.io/blog/2026/agentic-quantum-many-body-physics</id>
    <content type="html" xml:base="https://dwgong.github.io/blog/2026/agentic-quantum-many-body-physics/">&lt;p&gt;Our agentic AI system consists of two interacting loops: a &lt;strong&gt;scientist loop&lt;/strong&gt; that
decides what to investigate, and an &lt;strong&gt;engineer loop&lt;/strong&gt; that keeps the experiment
running.&lt;/p&gt;

&lt;figure class=&quot;figure&quot;&gt;&lt;a class=&quot;figure-zoom&quot; href=&quot;/assets/img/figure-2-loops.png&quot; title=&quot;Open at full size&quot;&gt;
      &lt;img src=&quot;/assets/img/figure-2-loops.png&quot; alt=&quot;Two concentric cycles. The outer scientist loop runs knowledge to hypothesis to experiments to conclusions and back, improving knowledge. The inner engineer loop runs error syndromes to diagnosis to action to apparatus, stabilising it. The two meet where the experiments run on the apparatus&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; /&gt;
    &lt;/a&gt;&lt;figcaption&gt;Figure 2. The scientist loop and the engineer loop, and how they interact. The experiments the outer loop designs run on the apparatus the inner loop keeps stable.&lt;/figcaption&gt;&lt;/figure&gt;

&lt;h2 id=&quot;the-scientist-loop&quot;&gt;The scientist loop&lt;/h2&gt;

&lt;p&gt;The scientist loop follows the logic of experimental research: ask a question,
formulate a hypothesis, design and conduct an experiment, and use the results to
decide what to investigate next.&lt;/p&gt;

&lt;p&gt;Closing this loop requires both creativity and scientific judgment — especially
the ability to identify which experiment would teach us something new. Improving
its capabilities requires broad understanding and reasoning in quantum many-body
physics.&lt;/p&gt;

&lt;p&gt;While current LLMs can carry out parts of this process with appropriate context
engineering, they do not yet consistently demonstrate the depth of insight that
leading physicists bring to scientific discovery. We believe fine-tuning on
experimental experience could help bridge this gap.&lt;/p&gt;

&lt;h2 id=&quot;the-engineer-loop&quot;&gt;The engineer loop&lt;/h2&gt;

&lt;p&gt;The engineer loop makes such scientific exploration possible. It monitors the
apparatus, diagnoses faults from their symptoms, chooses and applies a fix, and
checks whether normal operation has been restored.&lt;/p&gt;

&lt;p&gt;This requires detailed knowledge of the particular experiment — the practical
experience that researchers often describe as intuition. We have already
demonstrated this kind of autonomous troubleshooting on our working experiment
through context engineering.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;Previously: &lt;a href=&quot;/blog/2026/neutral-atom-arrays-and-ai/&quot;&gt;Neutral-atom arrays and AI, in both directions&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</content>
    <author><name>Your Name</name></author>
    <category term="rydberg" />
    <category term="ai-for-science" />
    <category term="agents" />
    <category term="research-notes" />
    <summary type="html">Two interacting loops: a scientist loop that decides what to investigate, and an engineer loop that keeps the apparatus running.</summary>
  </entry>
  <entry>
    <title type="html">Neutral-atom arrays and AI, in both directions</title>
    <link href="https://dwgong.github.io/blog/2026/neutral-atom-arrays-and-ai/" rel="alternate" type="text/html" title="Neutral-atom arrays and AI, in both directions" />
    <published>2026-09-24T00:00:00+00:00</published>
    <updated>2026-09-24T00:00:00+00:00</updated>
    <id>https://dwgong.github.io/blog/2026/neutral-atom-arrays-and-ai</id>
    <content type="html" xml:base="https://dwgong.github.io/blog/2026/neutral-atom-arrays-and-ai/">&lt;p&gt;Neutral-atom tweezer arrays let us hold individual atoms with laser light, arrange
them into patterns, and control how they interact
(&lt;a href=&quot;https://doi.org/10.1126/science.aah3778&quot;&gt;Barredo et al., 2016&lt;/a&gt;;
&lt;a href=&quot;https://doi.org/10.1126/science.aah3752&quot;&gt;Endres et al., 2016&lt;/a&gt;;
&lt;a href=&quot;https://doi.org/10.1038/s41567-021-01357-2&quot;&gt;Kaufman &amp;amp; Ni, 2021&lt;/a&gt;). This makes them
powerful tools for studying quantum many-body physics: how interacting quantum
particles collectively produce behavior that cannot be understood by considering
each particle alone
(&lt;a href=&quot;https://doi.org/10.1038/s41567-019-0733-z&quot;&gt;Browaeys &amp;amp; Lahaye, 2020&lt;/a&gt;). These
collective effects underlie phenomena such as magnetism and superconductivity,
making their study important for understanding materials and developing future
quantum technologies (&lt;a href=&quot;https://doi.org/10.1038/nphys4302&quot;&gt;Keimer &amp;amp; Moore, 2017&lt;/a&gt;).
They also raise fundamental questions about how complex behavior emerges from
simple physical laws — questions that can become extraordinarily difficult for
conventional computers to answer
(&lt;a href=&quot;https://doi.org/10.1103/RevModPhys.86.153&quot;&gt;Georgescu, Ashhab &amp;amp; Nori, 2014&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Rydberg arrays have already realized many-body dynamics and quantum phases at the
scale of hundreds of atoms
(&lt;a href=&quot;https://doi.org/10.1038/nature24622&quot;&gt;Bernien et al., 2017&lt;/a&gt;;
&lt;a href=&quot;https://doi.org/10.1038/s41586-021-03582-4&quot;&gt;Ebadi et al., 2021&lt;/a&gt;;
&lt;a href=&quot;https://doi.org/10.1038/s41586-021-03585-1&quot;&gt;Scholl et al., 2021&lt;/a&gt;), including
signatures of topological spin liquids
(&lt;a href=&quot;https://doi.org/10.1126/science.abi8794&quot;&gt;Semeghini et al., 2021&lt;/a&gt;) and continuous
symmetry breaking in the dipolar XY model
(&lt;a href=&quot;https://doi.org/10.1038/s41586-023-05859-2&quot;&gt;Chen et al., 2023&lt;/a&gt;).&lt;/p&gt;

&lt;figure class=&quot;figure&quot;&gt;&lt;a class=&quot;figure-zoom&quot; href=&quot;/assets/img/figure-1-apparatus.png&quot; title=&quot;Open at full size&quot;&gt;
      &lt;img src=&quot;/assets/img/figure-1-apparatus.png&quot; alt=&quot;Block diagram centred on an array of trapped Yb atoms, branching to optical tweezers, atom source and vacuum, control electronics, imaging, monitoring, cooling and imaging lasers, Rydberg excitation, and magnetic and electric fields, each expanded into its component hardware&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; /&gt;
    &lt;/a&gt;&lt;figcaption&gt;Figure 1. The basic building blocks of a typical neutral Yb atom array system. Click to open at full size.&lt;/figcaption&gt;&lt;/figure&gt;

&lt;h2 id=&quot;ai-for-science&quot;&gt;AI for science&lt;/h2&gt;

&lt;p&gt;In Figure 1, we outline the basic building blocks of a typical neutral Yb atom
array system. Behind the precisely controlled atomic qubits is a complex
apparatus. Lasers, electronics, and imaging systems must work together with
precise timing, while experimental conditions must remain stable. Keeping this
apparatus operating reliably requires sustained attention from experienced
engineers and physicists, making round-the-clock operation demanding in both time
and personnel.&lt;/p&gt;

&lt;p&gt;Maintaining and running the experiment with the help of AI is therefore a natural
idea, with early demonstrations already in cold-atom experiments
(&lt;a href=&quot;https://doi.org/10.1038/srep25890&quot;&gt;Wigley et al., 2016&lt;/a&gt;), and is itself a
frontier problem at the interface of AI and physical science
(&lt;a href=&quot;https://doi.org/10.1103/RevModPhys.91.045002&quot;&gt;Carleo et al., 2019&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The more ambitious step is from operating the experiment to doing science. An
autonomous scientist would need to ask important questions, choose experiments
that distinguish between possible answers, interpret the results, and revise its
understanding when the evidence disagrees. Our long-term goal is to connect these
abilities into a continuous loop, allowing AI to explore a quantum system at a
rate never seen before in pursuit of new discoveries.&lt;/p&gt;

&lt;p&gt;A first step toward this loop is to give the AI a learned model of the experiment
itself, one that it can query millions of times while the apparatus runs only the
most informative experiments. This rests on a division of labor: classical machine
learning makes predictions and proposes protocols cheaply
(&lt;a href=&quot;https://doi.org/10.1038/nphys4035&quot;&gt;Carrasquilla &amp;amp; Melko, 2017&lt;/a&gt;), while the
quantum simulator verifies them against physical reality, including in regimes
where no classical check exists. Theory supports this split, since for local
observables the difficulty lies in generating the data rather than in learning
from it (&lt;a href=&quot;https://doi.org/10.1126/science.abk3333&quot;&gt;Huang, Kueng et al., 2022&lt;/a&gt;;
&lt;a href=&quot;https://doi.org/10.1103/PRXQuantum.4.040337&quot;&gt;Huang, Chen &amp;amp; Preskill, 2023&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The dipolar XY model shows why this matters. Its phase diagram on frustrated
lattices is rich and largely beyond classical methods
(&lt;a href=&quot;https://doi.org/10.1038/s41567-017-0030-7&quot;&gt;Yao et al., 2018&lt;/a&gt;), yet experimental
realizations are noisy, with finite temperature, positional disorder, and
imperfect state preparation. A model trained on the device learns the physics and
the noise together, which lets us separate the two
(&lt;a href=&quot;https://doi.org/10.48550/arXiv.2603.28294&quot;&gt;Ito et al., 2026&lt;/a&gt;) and design
experiments that reach the phases of interest despite these imperfections.&lt;/p&gt;

&lt;h3 id=&quot;a-concrete-target&quot;&gt;A concrete target&lt;/h3&gt;

&lt;p&gt;Recent numerical studies predict that the dipolar XY model on a breathing kagome
lattice hosts a gapped chiral spin liquid (CSL), a topological phase that has not
yet been observed
(&lt;a href=&quot;https://doi.org/10.48550/arXiv.2603.25784&quot;&gt;Machado, Chern, Zaletel &amp;amp; Yao, 2026&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;We use our Yb Rydberg quantum simulator, which offers tunable geometry and
site-resolved addressing, to train a machine-learning model on the map from local
control parameters (site-resolved fields and triangle-level breathing) to measured
local observables, including scalar spin chirality on each triangle. Following
&lt;a href=&quot;https://doi.org/10.1038/s41467-024-45014-7&quot;&gt;Lewis et al. (2024)&lt;/a&gt;, the model
exploits geometric locality. For gapped ground states within a single phase, this
makes the required number of training configurations grow only logarithmically
with system size.&lt;/p&gt;

&lt;p&gt;Where tensor-network results exist, they serve as a calibration benchmark for the
full pipeline. Because the model is trained on the actual device, it also captures
non-idealities such as residual temperature, positional disorder, and diabatic
errors. We then use it to design preparation protocols — local-field ramps,
anyon-pinning potentials, and edge geometries — that bring the experiment into the
CSL regime and extend studies beyond the reach of classical simulation.&lt;/p&gt;

&lt;h2 id=&quot;science-for-ai&quot;&gt;Science for AI&lt;/h2&gt;

&lt;p&gt;But the relationship can also run in the other direction: quantum many-body
experiments using neutral atom arrays can help us train better AI.&lt;/p&gt;

&lt;p&gt;AI’s progress in mathematics
(&lt;a href=&quot;https://doi.org/10.1038/s41586-023-06747-5&quot;&gt;Trinh et al., 2024&lt;/a&gt;) motivates a
natural next challenge: learning science through interaction with the physical
world. A practical obstacle is the time required to obtain experimental feedback.
Many materials-synthesis and biological workflows involve waiting for samples to
form, reactions to finish, or organisms to grow
(&lt;a href=&quot;https://doi.org/10.1038/s41586-023-06734-w&quot;&gt;Szymanski et al., 2023&lt;/a&gt;). These
processes constrain how quickly an AI can test its ideas and accumulate
experience.&lt;/p&gt;

&lt;p&gt;Neutral-atom arrays offer a different experimental rhythm. Integrated hardware and
electronic control allow experimental conditions to be changed through software
and measurement sequences to be repeated automatically. The system has the
potential of producing high-quality snapshots of quantum evolution at rates from
10 Hz (&lt;a href=&quot;https://doi.org/10.1126/science.adz9952&quot;&gt;Li et al., 2026&lt;/a&gt;) to 1000 Hz
(&lt;a href=&quot;https://doi.org/10.48550/arXiv.2608.17189&quot;&gt;Zeng et al., 2026&lt;/a&gt;). Together with
records of the controls and conditions that produced them, these measurements
could provide a rich, rapidly growing resource for training scientific models.&lt;/p&gt;

&lt;p&gt;Our aim is to use this experimental experience to fine-tune capable open-weight
models and develop reinforcement-learning methods grounded in measured outcomes
(&lt;a href=&quot;https://doi.org/10.1038/s41586-025-09422-z&quot;&gt;Guo et al., 2025&lt;/a&gt;), turning
experience into lasting improvements in the models themselves. Improved models
would guide further experiments, whose results would support subsequent rounds of
training. Recent work on verifiable LLM agents for quantum many-body simulation
(&lt;a href=&quot;https://doi.org/10.48550/arXiv.2604.00149&quot;&gt;Deng et al., 2026&lt;/a&gt;) suggests that
grounding in checkable physical outcomes is key to making such models reliable.&lt;/p&gt;

&lt;p&gt;This combination of scientific depth, programmable control, and high data
throughput makes quantum many-body physics a compelling setting for training
scientific AI. Beyond advancing the field itself, we want to explore whether
learning how collective behavior emerges from microscopic interactions can help
models develop a deeper understanding of the physical world beyond humankind. How
broadly that understanding might transfer remains an open question, but the
possibility of gaining new insights into complex real-world systems is a central
motivation for this effort.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;Next: &lt;a href=&quot;/blog/2026/agentic-quantum-many-body-physics/&quot;&gt;Agentic quantum many-body physics&lt;/a&gt;,
on the two loops that make this work.&lt;/em&gt;&lt;/p&gt;</content>
    <author><name>Your Name</name></author>
    <category term="rydberg" />
    <category term="ai-for-science" />
    <category term="research-notes" />
    <summary type="html">Why Rydberg tweezer arrays are a good place to put AI to work — and why they might also be a good place to train it.</summary>
  </entry>
  <entry>
    <title type="html">Example: a weekly progress log</title>
    <link href="https://dwgong.github.io/blog/2026/example-progress-log/" rel="alternate" type="text/html" title="Example: a weekly progress log" />
    <published>2026-09-18T00:00:00+00:00</published>
    <updated>2026-09-18T00:00:00+00:00</updated>
    <id>https://dwgong.github.io/blog/2026/example-progress-log</id>
    <content type="html" xml:base="https://dwgong.github.io/blog/2026/example-progress-log/">&lt;p&gt;&lt;strong&gt;This is a placeholder showing one format that works well for progress logs.&lt;/strong&gt;
Rewrite it with real content and delete this line. The structure below —
question, attempt, result, next step — is worth keeping: it’s fast to write
weekly, and it stays readable months later when you’ve forgotten the details.&lt;/p&gt;

&lt;h2 id=&quot;the-question&quot;&gt;The question&lt;/h2&gt;

&lt;p&gt;[What were you actually trying to find out this week? One or two sentences.
Being specific here is what makes the post worth re-reading later.]&lt;/p&gt;

&lt;p&gt;For context: [the minimum background a reader outside your group needs — what
the apparatus does, what the measurement is]. The problem is that
[the specific failure mode or bottleneck].&lt;/p&gt;

&lt;h2 id=&quot;what-i-tried&quot;&gt;What I tried&lt;/h2&gt;

&lt;p&gt;[The approach, at the level of detail you’d tell a labmate at the whiteboard.]&lt;/p&gt;

&lt;p&gt;The model is a [architecture] trained on [data — how much, collected how],
minimising&lt;/p&gt;

\[\mathcal{L} = \sum_{i} \left( y_i - \hat{y}_i \right)^2 + \lambda R(\theta)\]

&lt;p&gt;where [define your terms]. Training details: [optimiser, learning rate, epochs,
hardware, wall-clock time].&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# The bit that mattered, not the whole script.
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;model&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;build_model&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;n_features&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shape&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hidden&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;history&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;X_train&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y_train&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;validation_data&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;X_val&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y_val&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;epochs&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;callbacks&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;EarlyStopping&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;patience&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;restore_best_weights&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)],&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;what-happened&quot;&gt;What happened&lt;/h2&gt;

&lt;p&gt;[The result. Include the number, and include the error bar.]&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Configuration&lt;/th&gt;
      &lt;th&gt;[Metric]&lt;/th&gt;
      &lt;th&gt;Note&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Baseline&lt;/td&gt;
      &lt;td&gt;[value]&lt;/td&gt;
      &lt;td&gt;[what it is]&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;This week&lt;/td&gt;
      &lt;td&gt;[value]&lt;/td&gt;
      &lt;td&gt;[what changed]&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;!-- Once you have a plot, save it to assets/img/ and uncomment:
&lt;figure class=&quot;figure figure-wide&quot;&gt;&lt;a class=&quot;figure-zoom&quot; href=&quot;/assets/img/result.png&quot; title=&quot;Open at full size&quot;&gt;
      &lt;img src=&quot;/assets/img/result.png&quot; alt=&quot;[Describe the trend the plot shows, not just its type]&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;
    &lt;/a&gt;&lt;figcaption&gt;[What the reader should take away. Note the axes and error bars.]&lt;/figcaption&gt;&lt;/figure&gt;

--&gt;

&lt;p&gt;[Then the honest part: what’s still wrong, what you don’t trust yet, which
control you haven’t run. Posts that only report wins are much less useful to
your future self than ones that record the doubts.]&lt;/p&gt;

&lt;h2 id=&quot;whats-next&quot;&gt;What’s next&lt;/h2&gt;

&lt;ul class=&quot;task-list&quot;&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;[Concrete next step]&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;[Another one]&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;[The control experiment you know you’re avoiding]&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;open-questions&quot;&gt;Open questions&lt;/h2&gt;

&lt;p&gt;[Things you’d genuinely like an answer to. If anyone ever reads this blog,
this is the section that gets you an email.]&lt;/p&gt;</content>
    <author><name>Your Name</name></author>
    <category term="lab-notes" />
    <category term="example" />
    <summary type="html">The shape a lab log post can take — question, what I tried, what happened, what&apos;s next. Replace this with a real one.</summary>
  </entry>
  <entry>
    <title type="html">How to write a post on this site</title>
    <link href="https://dwgong.github.io/blog/2026/how-to-write-a-post/" rel="alternate" type="text/html" title="How to write a post on this site" />
    <published>2026-09-05T00:00:00+00:00</published>
    <updated>2026-09-05T00:00:00+00:00</updated>
    <id>https://dwgong.github.io/blog/2026/how-to-write-a-post</id>
    <content type="html" xml:base="https://dwgong.github.io/blog/2026/how-to-write-a-post/">&lt;p&gt;This post is a reference. Everything below renders on the live site, so you can
compare what you see here against the source in
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_posts/2026-09-05-how-to-write-a-post.md&lt;/code&gt;. Delete it whenever you like.&lt;/p&gt;

&lt;h2 id=&quot;making-a-new-post&quot;&gt;Making a new post&lt;/h2&gt;

&lt;p&gt;Create a file in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_posts/&lt;/code&gt; named &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;YYYY-MM-DD-some-slug.md&lt;/code&gt;. &lt;strong&gt;The date in the
filename is required&lt;/strong&gt; — Jekyll uses it to order posts and to build the URL.
Start the file with a front matter block between &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;---&lt;/code&gt; lines:&lt;/p&gt;

&lt;div class=&quot;language-yaml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nn&quot;&gt;---&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;Your&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;here&quot;&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;description&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;One&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;sentence.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;Shows&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;the&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;blog&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;and&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;in&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;link&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;previews.&quot;&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;date&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;2026-09-05&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;tags&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pi&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;calibration&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;ml&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;math&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;true&lt;/span&gt;      &lt;span class=&quot;c1&quot;&gt;# only if the post contains equations&lt;/span&gt;
&lt;span class=&quot;nn&quot;&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Only &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;title&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;date&lt;/code&gt; are strictly required. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;description&lt;/code&gt; is worth writing
every time: it’s what people read on the index page and what appears when
someone shares the link.&lt;/p&gt;

&lt;p&gt;A post is a &lt;strong&gt;draft&lt;/strong&gt; as long as its date is in the future — it won’t appear on
the site until that date arrives. To keep a genuinely unfinished post out of
the build, put it in a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_drafts/&lt;/code&gt; folder instead and preview it with
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundle exec jekyll serve --drafts&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;math&quot;&gt;Math&lt;/h2&gt;

&lt;p&gt;Set &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;math: true&lt;/code&gt; in the front matter, then write LaTeX between &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$$&lt;/code&gt; delimiters.
Keep it on one line inside a sentence and you get inline math, like
\(E = mc^2\) here. Put it in its own paragraph and you get a centred display
equation:&lt;/p&gt;

\[\mathcal{L}(\theta) = \frac{1}{N} \sum_{i=1}^{N}
  \left\| y_i - f_\theta(x_i) \right\|^2 + \lambda \|\theta\|^2\]

&lt;p&gt;Environments work too, so you can align multi-line derivations:&lt;/p&gt;

\[\begin{aligned}
  \langle \hat{H} \rangle &amp;amp;= \int \psi^* \hat{H} \psi \, dx \\
                          &amp;amp;= \sum_n E_n |c_n|^2
\end{aligned}\]

&lt;p&gt;Note that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$$&lt;/code&gt; is the delimiter for &lt;strong&gt;both&lt;/strong&gt; inline and display math here —
unlike some LaTeX setups, a single &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$&lt;/code&gt; does nothing. Whether you get inline or
display output depends only on whether the math sits inside a paragraph or
stands alone as its own block.&lt;/p&gt;

&lt;p&gt;Rendering is done by &lt;a href=&quot;https://katex.org&quot;&gt;KaTeX&lt;/a&gt;, which is fast but supports a
smaller command set than full LaTeX — &lt;a href=&quot;https://katex.org/docs/supported.html&quot;&gt;check the list of supported
functions&lt;/a&gt; if something doesn’t render.
A command KaTeX doesn’t know shows up in red rather than breaking the page.&lt;/p&gt;

&lt;p&gt;Because nothing here treats a lone &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$&lt;/code&gt; as math, dollar signs in prose and in
code are safe: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;echo &quot;$HOME&quot;&lt;/code&gt; renders literally, and so does a bare $5.&lt;/p&gt;

&lt;h2 id=&quot;code&quot;&gt;Code&lt;/h2&gt;

&lt;p&gt;Fence a block with triple backticks and name the language for syntax
highlighting:&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;numpy&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;np&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;scipy.optimize&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;curve_fit&lt;/span&gt;


&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;lorentzian&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gamma&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;amplitude&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;offset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;s&quot;&gt;&quot;&quot;&quot;Single Lorentzian lineshape, the usual parameterisation.&quot;&quot;&quot;&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;offset&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;amplitude&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gamma&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;**&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gamma&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;


&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;fit_resonance&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;freqs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;signal&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;guess&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;popt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;pcov&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;curve_fit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lorentzian&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;freqs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;signal&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;p0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;guess&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# Diagonal of the covariance matrix gives the 1-sigma parameter errors.
&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;perr&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;np&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sqrt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;np&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;diag&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pcov&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;popt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;perr&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Inline code uses single backticks: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;curve_fit&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;figures&quot;&gt;Figures&lt;/h2&gt;

&lt;p&gt;Put images in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;assets/img/&lt;/code&gt;, then use the figure include, which handles the
caption and the accessibility text for you:&lt;/p&gt;

&lt;div class=&quot;language-liquid highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;{%&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;figure.html&lt;span class=&quot;err&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;   &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;/assets/img/loss-curve.png&quot;&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;   &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;alt&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Validation loss against training step, falling steeply then flattening&quot;&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;   &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;caption&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Validation loss across three seeds. Shaded band is ±1σ.&quot;&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;   &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;wide&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;%}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;width&lt;/code&gt; is optional: omit it for text-column width, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;wide&quot;&lt;/code&gt; to spill past the
column (good for plots), &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;full&quot;&lt;/code&gt; for edge-to-edge.&lt;/p&gt;

&lt;p&gt;Always write the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;alt&lt;/code&gt; text. Describe &lt;strong&gt;what the figure shows&lt;/strong&gt;, not that it’s
an image — “validation loss falls then plateaus after 3k steps” is useful;
“plot” is not. It’s what screen readers announce and what search engines index.&lt;/p&gt;

&lt;p&gt;A plain Markdown image works too, without the caption:
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;![description](/assets/img/thing.png)&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;tables&quot;&gt;Tables&lt;/h2&gt;

&lt;p&gt;Numbers get tabular alignment automatically, so columns line up:&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Method&lt;/th&gt;
      &lt;th&gt;RMSE (mK)&lt;/th&gt;
      &lt;th&gt;Runtime (s)&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Linear baseline&lt;/td&gt;
      &lt;td&gt;12.40&lt;/td&gt;
      &lt;td&gt;0.3&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Gaussian process&lt;/td&gt;
      &lt;td&gt;4.15&lt;/td&gt;
      &lt;td&gt;88.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Small MLP&lt;/td&gt;
      &lt;td&gt;4.02&lt;/td&gt;
      &lt;td&gt;2.1&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;other-bits&quot;&gt;Other bits&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;Blockquotes are good for pulling out a result, or quoting a paper you’re
arguing with.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Lists work as you’d expect:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Ordered lists for procedure.&lt;/li&gt;
  &lt;li&gt;Second step.
    &lt;ul&gt;
      &lt;li&gt;Nested items are fine.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;hr /&gt;

&lt;p&gt;You can also drop in raw HTML anywhere, which is how the callout box on the
About page is built:&lt;/p&gt;

&lt;div class=&quot;callout&quot;&gt;
  &lt;p&gt;&lt;span class=&quot;callout-label&quot;&gt;Note&lt;/span&gt;
The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;markdown=&quot;1&quot;&lt;/code&gt; attribute is the important part — without it, kramdown
leaves the contents of an HTML block alone and your &lt;strong&gt;Markdown&lt;/strong&gt; won’t render.&lt;/p&gt;
&lt;/div&gt;

&lt;h2 id=&quot;previewing-before-you-publish&quot;&gt;Previewing before you publish&lt;/h2&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;bundle &lt;span class=&quot;nb&quot;&gt;exec &lt;/span&gt;jekyll serve &lt;span class=&quot;nt&quot;&gt;--livereload&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Then open &lt;a href=&quot;http://localhost:4000&quot;&gt;http://localhost:4000&lt;/a&gt;. Pages rebuild as you save. The one exception
is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_config.yml&lt;/code&gt; — changing that needs a restart.&lt;/p&gt;</content>
    <author><name>Your Name</name></author>
    <category term="meta" />
    <summary type="html">A working reference for every formatting feature here — math, code, figures, tables. Delete this post once you&apos;ve got the hang of it.</summary>
  </entry>
</feed>
