PageSourceSearch

https://choxos.github.io/

html choxos.github.io collected 2026-10-03 08:47:35 UTC 41,700 bytes, 582 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<meta name="viewport" content="width=device-width, initial-scale=1">
6<title>Ahmad Sofi-Mahmudi · choxos</title>
7<meta name="description" content="Ahmad Sofi-Mahmudi: dentist turned research methodologist and R developer. Evidence synthesis, indirect treatment comparisons, meta-research, open science, and GNU/Linux.">
8<meta name="author" content="Ahmad Sofi-Mahmudi">
9<meta name="color-scheme" content="dark light">
10<meta name="theme-color" content="#0b0d0c">
11<meta property="og:type" content="profile">
12<meta property="og:title" content="Ahmad Sofi-Mahmudi · choxos">
13<meta property="og:description" content="R packages, evidence synthesis, meta-research, and open science tooling.">
14<meta property="og:url" content="https://choxos.github.io/">
15<meta name="twitter:card" content="summary">
16<meta name="twitter:site" content="@asofimahmudi">
17<link rel="canonical" href="https://choxos.github.io/">
18<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='6' fill='%230b0d0c'/%3E%3Ctext x='5' y='22' font-family='monospace' font-size='17' font-weight='700' fill='%23ffb454'%3E%3E_%3C/text%3E%3C/svg%3E">
19<link rel="preconnect" href="https://fonts.googleapis.com">
20<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
21<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,400;0,500;0,700;0,800;1,400&display=swap">
22<link rel="stylesheet" href="css/style.css">
23<script>
24  // Apply the saved theme before first paint.
25  try { var t = localStorage.getItem('theme'); if (t) document.documentElement.dataset.theme = t; } catch (e) {}
26</script>
vendor: 1 bytes, line 26
26
27<script type="application/ld+json">
28{
29  "@context": "https://schema.org",
30  "@type": "Person",
31  "name": "Ahmad Sofi-Mahmudi",
32  "url": "https://choxos.github.io/",
33  "email": "mailto:[email protected]",
34  "jobTitle": "Research Associate, Comparative Effectiveness",
35  "worksFor": {"@type": "Organization", "name": "Cytel"},
36  "alumniOf": [
37    {"@type": "CollegeOrUniversity", "name": "McMaster University"},
38    {"@type": "CollegeOrUniversity", "name": "Shahid Beheshti University of Medical Sciences"}
39  ],
40  "address": {"@type": "PostalAddress", "addressLocality": "Toronto", "addressRegion": "ON", "addressCountry": "CA"},
41  "sameAs": [
42    "https://github.com/choxos",
43    "https://orcid.org/0000-0001-6829-0823",
44    "https://scholar.google.com/citations?user=gTWPaFYAAAAJ",
45    "https://www.linkedin.com/in/asofimahmudi/",
46    "https://twitter.com/asofimahmudi",
47    "https://choxos.medium.com"
48  ]
49}
50</script>
50
51</head>
52<body>
53<a class="skip" href="#about">Skip to content</a>
54
55<!-- ============================== HERO ============================== -->
56<header class="hero" id="top">
57  <div class="wrap">
58    <p class="prompt" aria-hidden="true"><span class="ps1">ahmad@choxos</span><span class="ps-sep">:</span><span class="ps-path">~</span><span class="ps-dollar">$</span> <span id="typed">whoami</span><span class="cursor"></span></p>
59    <h1 class="name">Ahmad <br>Sofi&#8209;Mahmudi<span class="blink">_</span></h1>
60    <p class="tagline">Dentist turned research methodologist. I write <b class="hl-r">R packages</b> for evidence synthesis, build <b class="hl-c">meta-research</b> pipelines that audit how open science really is, and ship interactive tools on <b class="hl-g">GNU/Linux</b>.</p>
61
62    <div class="hero-grid">
63      <section class="win" aria-label="System summary">
64        <div class="win-bar"><span class="dots"><i></i><i></i><i></i></span><span class="win-title">~ : neofetch</span></div>
65        <div class="neofetch">
66<pre class="tooth" aria-hidden="true">   .-'''-.   .-'''-.
67  /       '-'       \
68 |                   |
69 |                   |
70  \                 /
71   |               |
72   |     .---.     |
73   |    /     \    |
74    \  |       |  /
75     '-'       '-'</pre>
76          <dl class="nf">
77            <div class="nf-head"><span class="k">ahmad</span>@<span class="k">choxos</span></div>
78            <div class="nf-rule" aria-hidden="true">-------------</div>
79            <div><dt>OS</dt><dd>GNU/Linux, since 2010</dd></div>
80            <div><dt>Host</dt><dd>Cytel · Comparative Effectiveness</dd></div>
81            <div><dt>Kernel</dt><dd>DDS 2019 · MSc HRM 2024</dd></div>
82            <div><dt>Uptime</dt><dd><span data-uptime>17</span> years of open source</dd></div>
83            <div><dt>Packages</dt><dd><span data-stat="cran">7</span> (cran), <span data-stat="dev">2</span> (dev), <span data-stat="repos">62</span> (git)</dd></div>
84            <div><dt>Shell</dt><dd>R · Stan · Python · Julia</dd></div>
85            <div><dt>Methods</dt><dd>NMA · MAIC · STC · ML-NMR</dd></div>
86            <div><dt>Citations</dt><dd><span data-stat="citations">5,225</span> · h <span data-stat="h">18</span> · i10 <span data-stat="i10">23</span></dd></div>
87            <div><dt>Locale</dt><dd>ku · fa · en_CA · fr</dd></div>
88            <div><dt>Location</dt><dd>Toronto, Canada</dd></div>
89            <div class="swatches" aria-hidden="true"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
90          </dl>
91        </div>
92      </section>
93
94      <figure class="win net-win">
95        <div class="win-bar"><span class="dots"><i></i><i></i><i></i></span><span class="win-title">evidence_network.R</span><button class="win-btn" id="net-shake" type="button" title="Perturb the network">jitter()</button></div>
96        <canvas id="net" aria-label="Interactive network of research topics. Node size shows how many papers and repositories mention a topic; edges show topics that appear together." role="img"></canvas>
97        <figcaption><b>Fig. 1.</b> My work as a network meta-analysis. Node area ∝ papers + repos on a topic; edge width ∝ co-occurrence. Fitted live from this site's data. Drag a node.</figcaption>
98      </figure>
99    </div>
100
101    <p class="hint">Press <kbd>`</kbd> for a real shell, <kbd>?</kbd> for keys, <kbd>1</kbd>…<kbd>8</kbd> to jump.</p>
102  </div>
103</header>
104
105<main>
106<!-- ============================== ABOUT ============================== -->
107<section id="about" class="sec">
108  <div class="wrap">
109    <div class="sec-head">
110      <p class="cmd"><span class="ps-path">~</span><span class="ps-dollar">$</span> cat README.md</p>
111      <h2>About</h2>
112    </div>
113    <div class="about-grid">
114      <article class="readme">
115        <p class="md-h"># whoami</p>
116        <p>I trained as a dentist in Tehran, practiced as a community dentist in Kurdistan, and then followed the questions upstream: how do we know a treatment works, and can we trust the papers that say so? That took me to an MSc in Health Research Methodology at McMaster and into evidence synthesis for good.</p>
117        <p>Today I run pairwise and network meta-analyses and population-adjusted 
117indirect treatment comparisons (MAIC, STC, ML-NMR) as a Research Associate in Comparative Effectiveness at <b>Cytel</b>. Outside the day job I turn methods into software: CRAN packages, open textbooks, and browser tools that anyone can rerun and audit.</p>
118        <p>I have used GNU/Linux since 2010, translated <i>A Byte of Python</i> into Persian in 2009, and have served Cochrane for most of a decade, from Cochrane Iran to the Cochrane Council.</p>
119        <p class="md-h">## current focus</p>
120        <ul class="md-list">
121          <li>Population-adjusted indirect treatment comparisons and disconnected evidence networks</li>
122          <li>Target trial emulation and causal inference for real-world evidence</li>
123          <li>Research integrity tooling: retractions, citations, DOIs, and transparency indicators</li>
124          <li>Interactive teaching tools for anatomy, mathematics, and statistics</li>
125        </ul>
126      </article>
127      <aside class="principles">
128        <p class="md-h">## research software should be</p>
129        <ol>
130          <li><b>Reproducible</b> enough for another analyst to rerun it.</li>
131          <li><b>Transparent</b> enough for a reviewer to audit it.</li>
132          <li><b>Documented</b> enough for a tired user to understand it.</li>
133          <li><b>Small and boring</b> where possible; cleverness is not a substitute for reliability.</li>
134        </ol>
135        <p class="motto">Open science over closed claims.<br>Reproducible code over screenshots.<br>Useful tools over vanity metrics.</p>
136      </aside>
137    </div>
138  </div>
139</section>
140
141<!-- ============================== PACKAGES ============================== -->
142<section id="packages" class="sec">
143  <div class="wrap">
144    <div class="sec-head">
145      <p class="cmd"><span class="ps-path">~/r-pkgs</span><span class="ps-dollar">$</span> Rscript -e 'library(help = "choxos")'</p>
146      <h2>R packages</h2>
147      <p class="lede">On CRAN, documented with pkgdown, and tested. Indirect comparisons, responder analysis, and the plumbing of research integrity.</p>
148    </div>
149    <div class="console" id="install">
150      <div class="console-bar"><span>R console</span><button class="copy" type="button" data-copy-from="install-code">copy</button></div>
151      <pre><code id="install-code"><span class="c-prompt">&gt;</span> install.packages(c(<span class="c-str">"mlumr"</span>, <span class="c-str">"respondeR"</span>, <span class="c-str">"retraction"</span>, <span class="c-str">"rfair"</span>, <span class="c-str">"rtransparency"</span>, <span class="c-str">"krt"</span>, <span class="c-str">"sysreqr"</span>))</code></pre>
152    </div>
153    <div class="pkg-grid" id="pkg-grid" aria-live="polite"></div>
154
155    <h3 class="sub">Shiny apps <span class="muted">· shinyapps.io</span></h3>
156    <ul class="apps">
157      <li><a href="https://choxos.shinyapps.io/metanalysis/" target="_blank" rel="noopener"><b>metanalysis</b><span>A point and click app for all kinds of pairwise meta-analysis.</span></a></li>
158      <li><a href="https://choxos.shinyapps.io/RoB2/" target="_blank" rel="noopener"><b>RoB2</b><span>Risk of Bias 2 (RoB 2) assessment for randomized trials.</span></a></li>
159      <li><a href="https://choxos.shinyapps.io/responder_analysis/" target="_blank" rel="noopener"><b>responder_analysis</b><span>Impute responder proportions and risk differences from continuous data, four methods.</span></a></li>
160      <li><a href="https://choxos.shinyapps.io/meastimate/" target="_blank" rel="noopener"><b>meastimate</b><span>Impute means and SDs when extracting data for meta-analyses.</span></a></li>
161    </ul>
162  </div>
163</section>
164
165<!-- ============================== PLAYGROUND ============================== -->
166<section id="playground" class="sec">
167  <div class="wrap">
168    <div class="sec-head">
169      <p class="cmd"><span class="ps-path">~/www</span><span class="ps-dollar">$</span> ls --live</p>
170      <h2>Playground</h2>
171      <p class="lede">Things you can open right now. No accounts, no backends; most of them fit the model in your browser.</p>
172    </div>
173    <div class="play-grid">
174      <a class="play big" href="https://omfatlas.xera.ac" target="_blank" rel="noopener" style="--c:var(--amber)">
175        <span class="play-kind">3D atlas · WebGL</span>
176        <span class="play-name">OMF Atlas</span>
177        <span class="play-desc">Interactive 3D atlas of oral and maxillofacial anatomy for dental education: 643 BodyParts3D meshes plus 77 schematic nerves, vessels, glands, and sinuses fitted to the skull's own landmarks.</span>
178        <span class="play-foot"><span data-stars="OMFAtlas"></span>omfatlas.xera.ac ↗</span>
179      </a>
180      <a class="play big" href="https://choxos.github.io/Mathematics-of-ITC/" target="_blank" rel="noopener" style="--c:var(--purple)">
181        <span class="play-kind">Textbook · Coq</span>
182        <span class="play-name">Mathematics of ITC</span>
183        <span class="play-desc">A graduate pure-mathematics textbook on indirect treatment comparisons, from linear algebra to MAIC, STC, and ML-NMR. Every result proved, with a machine-checked Coq companion.</span>
184        <span class="play-foot"><span data-stars="Mathematics-of-ITC"></span>read online ↗</span>
185      </a>
186      <a class="play" href="https://nmaviz.xera.ac" target="_blank" rel="noopener" style="--c:var(--cyan)">
187        <span class="play-kind">Network meta-analysis</span>
188        <span class="play-name">NMAViz</span>
189        <span class="play-desc">Fits the graph-theoretical NMA model in your browser and draws the evidence eight ways: flow, contributions, a Hodge split of inconsistency, diffusion, and springs.</span>
190        <span class="play-foot">nmaviz.xera.ac ↗</span>
191      </a>
192      <a class="play" href="https://choxos.github.io/autometaresearch/" target="_blank" rel="noopener" style="--c:var(--green)">
193        <span class="play-kind">Meta-research · LLM</span>
194        <span class="play-name">autometaresearch</span>
195        <span class="play-desc">Meta-research studies designed, run, and reviewed by language models, published in full: the search, the code, and the independent reviews.</span>
196        <span class="play-foot">read the studies ↗</span>
197      </a>
198      <a class="play" href="https://metacan.xera.ac" target="_blank" rel="noopener" style="--c:var(--red)">
199        <span class="play-kind">Bibliometrics · bilingual</span>
200        <span class="play-name">MétaCan</span>
201        <span class="play-desc">A provenance-tracked map of Canadian metaresearch, with a reproducible pipeline and a bilingual web app.</span>
202        <span class="play-foot">metacan.xera.ac ↗</span>
203      </a>
204      <a class="play" href="https://catigraphy.xera.ac" target="_blank" rel="noopener" style="--c:var(--orange)">
205        <span class="play-kind">CT atlas</span>
206        <span class="play-name">Catigraphy</span>
207        <span class="play-desc">An interactive CT atlas of the domestic cat, rebuilt from twelve published scans of one specimen. Rotate it, section it.</span>
208        <span class="play-foot">catigraphy.xera.ac ↗</span>
209      </a>
210      <a class="play" href="https://howthingswork.xera.ac" target="_blank" rel="noopener" style="--c:var(--cyan)">
211        <span class="play-kind">3D lessons</span>
212        <span class="play-name">How Things Work</span>
213        <span class="play-desc">Walk a neighborhood of everyday machines, open them up, turn the controls, and follow the motion.</span>
214        <span class="play-foot">howthingswork.xera.ac ↗</span>
215      </a>
216      <a class="play" href="https://milleviz.xera.ac" target="_blank" rel="noopener" style="--c:var(--purple)">
217        <span class="play-kind">Mathematics</span>
218        <span class="play-name">MilleViz</span>
219        <span class="play-desc">The seven Millennium Prize Problems, explained from the picture up, with figures that compute what they show.</span>
220        <span class="play-foot">milleviz.xera.ac ↗</span>
221      </a>
222      <a class="play" href="https://fracgen.xera.ac" target="_blank" rel="noopener" style="--c:var(--green)">
223        <span class="play-kind">Generative art</span>
224        <span class="play-name">FracGen</span>
225        <span class="play-desc">Draw a line, move its points, and watch it become a fractal. Export an image or an animation.</span>
226        <span class="play-foot">fracgen.xera.ac ↗</span>
227      </a>
228      <a class="play" href="https://geowords.xera.ac" target="_blank" rel="noopener" style="--c:var(--amber)">
229        <span class="play-kind">Etymology · globe</span>
230        <span class="play-name">Geography Words</span>
231        <span class="play-desc">English words with a place hidden inside. Search <i>denim</i> and the globe flies to Nîmes.</span>
232        <span class="play-foot">geowords.xera.ac ↗</span>
233      </a>
234      <a class="play" href="https://choxos.github.io/game-of-life/" target="_blank" rel="noopener" style="--c:var(--red)">
235        <span class="play-kind">Life tables</span>
236        <span class="play-name">Game of Life</span>
237        <span class="play-desc">How much of your life is actually yours? Your remaining weeks from UN life tables, minus sleep, work, and commuting.</span>
238        <span class="play-foot">open ↗</span>
239      </a>
240      <a class="play" href="https://choxos.github.io/OralHealthBook/" target="_blank" rel="noopener" style="--c:var(--orange)">
241        <span class="play-kind">Open book</span>
242        <span class="play-name">The Evidence Behind</span>
243        <span class="play-desc">An audit of the UK's <i>Delivering Better Oral Health</i>: does the evidence each recommendation cites answer the question it asks?</span>
244        <span class="play-foot">read ↗</span>
245      </a>
246      <a class="play" href="https://choxos.github.io/ITC-open-problems/" target="_blank" rel="noopener" style="--c:var(--cyan)">
247        <span class="play-kind">Catalog</span>
248        <span class="play-name">Open problems in ITC</span>
249        <span class="play-desc">An audited catalog of unsolved methods problems in indirect comparisons, each with a verification verdict. It has a sibling for target trial emulation.</span>
250        <span class="play-foot">browse ↗</span>
251      </a>
252    </div>
253  </div>
254</section>
255
256<!-- ============================== PROJECTS ============================== -->
257<section id="projects" class="sec">
258  <div class="wrap">
259    <div class="sec-head">
260      <p class="cmd"><span class="ps-path">~</span><span class="ps-dollar">$</span> gh repo list choxos --source</p>
261      <h2>Repositories</h2>
262      <p class="lede">Public repositories I authored (stubs without a README are skipped), freshest first. Filter by language or grep the descriptions and topics.</p>
263    </div>
264    <div class="toolbar">
265      <label class="grep"><span class="ps-dollar">$</span> grep -i "<input id="repo-q" type="search" placeholder="stan, retraction, 3d…" autocomplete="off" spellcheck="false" aria-label="Filter repositories">"</label>
266      <div class="chips" id="repo-langs" role="group" aria-label="Language filter"></div>
267      <div class="chips" role="group" aria-label="Sort">
268        <button class="chip" type="button" data-sort="updated" aria-pressed="true">--sort=updated</button>
269        <button class="chip" type="button" data-sort="stars" aria-pressed="false">--sort=stars</button>
270      </div>
271    </div>
272    <div class="ls" id="repo-list" aria-live="polite"></div>
273    <button class="more" id="repo-more" type="button" hidden></button>
274  </div>
275</section>
276
277<!-- ============================== PAPERS ============================== -->
278<section id="papers" class="sec">
279  <div class="wrap">
280    <div class="sec-head">
281      <p class="cmd"><span class="ps-path">~/papers</span><span class="ps-dollar">$</span> SELECT * FROM openalex WHERE author = 'A5075399321';</p>
282      <h2>Publications</h2>
283      <p class="lede">Refreshed from <a href="https://openalex.org/A5075399321" target="_blank" rel="noopener">OpenAlex</a>. Consortium papers (the Global Burden of Disease collaborations) are counted too, which is why the citations run high. Also on <a href="https://scholar.google.com/citations?user=gTWPaFYAAAAJ" target="_blank" rel="noopener">Google Scholar</a> and <a href="https://orcid.org/0000-0001-6829-0823" target="_blank" rel="noopener">ORCID</a>.</p>
284    </div>
285
286    <div class="stats" id="pub-stats">
287      <div><b data-stat="citations">5,225</b><span>citations</span></div>
288      <div><b data-stat="h">18</b><span>h-index</span></div>
289      <div><b data-stat="i10">23</b><span>i10-index</span></div>
290      <div><b data-stat="works">69</b><span>papers &amp; preprints</span></div>
291      <div><b data-stat="first">27</b><span>first-authored</span></div>
292    </div>
293
294    <figure class="spark">
295      <div class="spark-bars" id="spark" role="img" aria-label="Papers per year"></div>
296      <figcaption>papers per year <span class="muted">· click a bar to filter</span></figcaption>
297    </figure>
298
299    <div class="tabs" role="tablist" aria-label="Output type">
300      <button role="tab" class="tab" aria-selected="true" aria-controls="tab-papers" id="t-papers">papers</button>
301      <button role="tab" class="tab" aria-selected="false" aria-controls="tab-talks" id="t-talks" tabindex="-1">talks</button>
302      <button role="tab" class="tab" aria-selected="false" aria-controls="tab-books" id="t-books" tabindex="-1">books</button>
303    </div>
304
305    <div role="tabpanel" id="tab-papers" aria-labelledby="t-papers">
306      <div class="toolbar">
307        <label class="grep"><span class="ps-dollar">$</span> grep -i "<input id="pub-q" type="search" placeholder="meta-research, caries, migraine…" autocomplete="off" spellcheck="false" aria-label="Filter publications">"</label>
308        <div class="chips" role="group" aria-label="Publication filter">
309          <button class="chip" type="button" data-pf="all" aria-pressed="true">--all</button>
310          <button class="chip" type="button" data-pf="first" aria-pressed="false">--first-author</button>
311          <button class="chip" type="button" data-pf="cited" aria-pressed="false">--cited&gt;=20</button>
312          <button class="chip" type="button" data-pf="preprint" aria-pressed="false">--preprints</button>
313        </div>
314      </div>
315      <p class="count" id="pub-count" aria-live="polite"></p>
316      <ol class="pubs" id="pub-list"></ol>
317      <button class="more" id="pub-more" type="button" hidden></button>
318    </div>
319
320    <div role="tabpanel" id="tab-talks" aria-labelledby="t-talks" hidden>
321      <ol class="pubs static">
322        <li><span class="y">2026</span><div><p class="pt">Assessing the impact of missingness in treatment effect modifiers on bias in anchored and unanchored MAIC</p><p class="pm">ISPOR 2026 · <i>Value in Health</i> abstract MSR249</p></div></li>
323        <li><span class="y">2025</span><div><p class="pt">Retractions and Democracy Index scores across 167 countries</p><p class="pm">10th International Congress on Peer Review and Scientific Publication</p></div></li>
324        <li><span class="y">2024</span><div><p class="pt">Research transparency in 59 fields of medical and health sciences</p><p class="pm">2nd Global Evidence Summit, Prague</p></div></li>
325        <li><span class="y">2024</span><div><p class="pt">COVID-19-related research data availability and quality according to the FAIR principles</p><p class="pm">2nd Global Evidence Summit, Prague</p></div></li>
326        <li><span class="y">2024</span><div><p class="pt">Diversity in Cochrane Reviews authorship</p><p class="pm">2nd Global Evidence Summit, Prague</p></div></li>
327        <li><span class="y">2023</span><div><p class="pt">Transparency of COVID-19-related research</p><p class="pm">27th Cochrane Colloquium, London · HEI Research Day, McMaster</p></div></li>
328        <li><span class="y">2022</span><div><p class="pt">Open science practices in oral health research: implications and importance</p><p class="pm">5th Congress of the Iranian Association of Community Oral Health</p></div></li>
329        <li><span class="y">2019</span><div><p class="pt">Frequency and risk of bias of randomized controlled trials included in Cochrane Oral Health systematic reviews</p><p class="pm">26th Cochrane Colloquium, Santiago</p></div></li>
330      </ol>
331    </div>
332
333    <div role="tabpanel" id="tab-books" aria-labelledby="t-books" hidden>
334      <ol class="pubs static">
335        <li><span class="y">2026</span><div><p class="pt"><a href="https://choxos.github.io/Mathematics-of-ITC/" target="_blank" rel="noopener">Mathematics of Indirect Treatment Comparisons</a></p><p class="pm">Open textbook, with a Coq companion</p></div></li>
336        <li><span class="y">2026</span><div><p class="pt"><a href="https://choxos.github.io/OralHealthBook/" target="_blank" rel="noopener">The Evidence Behind: what we actually know about looking after your teeth</a></p><p class="pm">Open book</p></div></li>
337        <li><span class="y">2021</span><div><p class="pt">Sugars and Dental Caries</p><p class="pm">Persian translation · Dandane, Tehran</p></div></li>
338        <li><span class="y">
3382021</span><div><p class="pt">Caries Prevention Partnership: Making Prevention a Priority</p><p class="pm">Persian translation · Dandane, Tehran</p></div></li>
339        <li><span class="y">2021</span><div><p class="pt">Oral Cancer: Prevention and Patient Management</p><p class="pm">Persian translation · Dandane, Tehran</p></div></li>
340        <li><span class="y">2020</span><div><p class="pt"><a href="https://fa.testingtreatments.org/book/" target="_blank" rel="noopener">Testing Treatments</a></p><p class="pm">Persian translation, with Bita Mesgarpour · Farhameh, Tehran</p></div></li>
341        <li><span class="y">2017</span><div><p class="pt"><a href="http://dahaan.ir/book" target="_blank" rel="noopener">Delivering Better Oral Health: an evidence-based toolkit for prevention</a></p><p class="pm">Persian translation · Dandane, Tehran</p></div></li>
342        <li><span class="y">2015</span><div><p class="pt"><a href="https://github.com/choxos/ubuntubook" target="_blank" rel="noopener">Ubuntu for Newbies</a></p><p class="pm">Persian, with Sasan Namirian and Nava Ajdari · Narmafzar, Tehran</p></div></li>
343        <li><span class="y">2009</span><div><p class="pt">A Byte of Python</p><p class="pm">Persian translation · Narmafzar, Tehran</p></div></li>
344      </ol>
345    </div>
346  </div>
347</section>
348
349<!-- ============================== RESUME ============================== -->
350<section id="resume" class="sec">
351  <div class="wrap">
352    <div class="sec-head">
353      <p class="cmd"><span class="ps-path">~/cv</span><span class="ps-dollar">$</span> git log --graph --all --date=short</p>
354      <h2>Resume</h2>
355      <p class="lede">Three branches that keep merging: <span class="lane-key work">work</span> <span class="lane-key svc">service</span> <span class="lane-key edu">education</span>. <span class="no-print"><button class="linkish" type="button" id="print-cv">lp resume.pdf</button> prints a clean copy.</span></p>
356    </div>
357
358    <ol class="gitlog">
359      <li class="c work head">
360        <span class="hash">a7c3f10</span><span class="refs">(HEAD -&gt; work)</span><span class="range">2024-04..HEAD</span>
361        <h3>Research Associate, Comparative Effectiveness</h3>
362        <p class="org">Cytel Inc. · remote</p>
363        <p>Pairwise and network meta-analyses and indirect treatment comparisons, including anchored and unanchored MAIC and STC and multilevel network meta-regression. Methods consulting for clients.</p>
364      </li>
365      <li class="c edu">
366        <span class="hash">5e19b2d</span><span class="refs">(tag: v2.0-msc)</span><span class="range">2022-09..2024-08</span>
367        <h3>MSc, Health Research Methodology</h3>
368        <p class="org">McMaster University · Hamilton</p>
369        <p>Thesis: <a href="https://hdl.handle.net/11375/30210" target="_blank" rel="noopener">Identifying an optimal strategy for converting pain as a continuous outcome to a responder analysis</a>. It became the <code>respondeR</code> package.</p>
370      </li>
371      <li class="c work">
372        <span class="hash">c40d8e1</span><span class="range">2022-10..2024-04</span>
373        <h3>Research Assistant</h3>
374        <p class="org">McMaster University · Hamilton</p>
375        <p>Led systematic reviews and network meta-analyses in pain and migraine, and methodological research on meta-analytic estimation.</p>
376      </li>
377      <li class="c work">
378        <span class="hash">91fa2c7</span><span class="range">2022-09..2024-04</span>
379        <h3>Teaching Assistant</h3>
380        <p class="org">McMaster University · Hamilton</p>
381        <p>Population and Public Health Epidemiology (PUBHLTH 701), Strategic Writing for Health Professionals (HM 732), Epidemiology (LIFESCI 3G03), Introduction to Data Science (LIFESCI 3LA3).</p>
382      </li>
383      <li class="c work">
384        <span class="hash">3b7e0a4</span><span class="range">2021-10..2022-08</span>
385        <h3>General Dental Practitioner</h3>
386        <p class="org">Kurdistan University of Medical Sciences · Seqiz</p>
387        <p>Named top community dentist in the network after coverage rose 22% and patient satisfaction rose 34%.</p>
388      </li>
389      <li class="c svc">
390        <span class="hash">d2e6c93</span><span class="refs">(svc)</span><span class="range">2021-09..HEAD</span>
391        <h3>Associate Editor</h3>
392        <p class="org">BioMed Central · BMC Oral Health, BMC Research Notes</p>
393        <p>Handled more than 15 manuscripts through to publication.</p>
394      </li>
395      <li class="c svc">
396        <span class="hash">7f0b5aa</span><span class="range">2021-05..2023-12</span>
397        <h3>Representative for the Early Career Professionals Network</h3>
398        <p class="org">Cochrane Council · global</p>
399        <p>Brought the priorities of early career researchers, especially from low and middle income countries, into Cochrane's governance.</p>
400      </li>
401      <li class="c work">
402        <span class="hash">e8a41d6</span><span class="range">2020-07..2021-09</span>
403        <h3>Research Assistant</h3>
404        <p class="org">Deputy of Research and Technology, Ministry of Health and Medical Education · Tehran</p>
405        <p>Designed and ran the oral health analysis of the PERSIAN cohort, the country's largest longitudinal dataset, to inform national policy.</p>
406      </li>
407      <li class="c svc">
408        <span class="hash">60c2f19</span><span class="range">2019-07..HEAD</span>
409        <h3>Steering Group Member and Vice-chair</h3>
410        <p class="org">Cochrane Early Career Professionals Network · global</p>
411        <p>Started Cochrane's first fully automated diversity research, mapping country, region, language, and gender across review authorship.</p>
412      </li>
413      <li class="c work">
414        <span class="hash">2ad9e70</span><span class="range">2019-06..2021-09</span>
415        <h3>Research Assistant</h3>
416        <p class="org">Non-Communicable Diseases Research Center, Tehran University of Medical Sciences</p>
417        <p>Quality of Care Index studies from the Global Burden of Disease, a national special care dentistry guideline, and the 2021 STEPS country report for Iran.</p>
418      </li>
419      <li class="c edu">
420        <span class="hash">b61e4c2</span><span class="refs">(tag: v1.0-dds)</span><span class="range">2012-09..2019-06</span>
421        <h3>Doctor of Dental Surgery</h3>
422        <p class="org">Shahid Beheshti University of Medical Sciences · Tehran</p>
423        <p>Selected Student of the University (2018). Organized TEDxSBMU and TEDMEDLive SBMU. Founded Dahaan, a knowledge translation project for dental evidence.</p>
424      </li>
425      <li class="c svc">
426        <span class="hash">f3d07b8</span><span class="range">2018-09..2021-08</span>
427        <h3>Steering Group Member and Translation Manager</h3>
428        <p class="org">Cochrane Iran · Tehran</p>
429        <p>Translated review summaries, books, news, and podcasts into Persian; ran the website and social channels.</p>
430      </li>
431      <li class="c svc root">
432        <span class="hash">0c1a9d5</span><span class="range">2018-02..2022-08</span>
433        <h3>Translator</h3>
434        <p class="org">Informed Health Choices Network · Oslo</p>
435        <p>Translated <i>The Health Choices</i> book and the That's a Claim pamphlets into Persian and Kurdish; planned a trial of critical thinking about health claims in Iranian schools.</p>
436      </li>
437    </ol>
438
439    <div class="cv-grid">
440      <div class="file">
441        <div class="file-bar">DESCRIPTION</div>
442<pre><code><span class="k">Package:</span> ahmad
443<span class="k">Title:</span> Dentist Turned Research Methodologist
444    and R Developer
445<span class="k">Version:</span> 2026.9.0
446<span class="k">Authors@R:</span> person("Ahmad", "Sofi-Mahmudi",
447    role = c("aut", "cre"),
448    comment = c(ORCID = "0000-0001-6829-0823"))
449<span class="k">Depends:</span> R (advanced), Stan
450<span class="k">Imports:</span> Python, Julia, Stata, SPSS, SAS
451<span class="k">Suggests:</span> GNU/Linux, Bash, Zsh, LaTeX,
452    Quarto, R Markdown, Git, Tableau
453<span class="k">Methods:</span> pairwise MA, NMA, cNMA, MAIC,
454    STC, ML-NMR, ML-UMR, TTE, GRADE
455<span class="k">Language:</span> ku, fa (native); en (C1);
456    fr (A2)
457<span class="k">License:</span> CC BY 4.0</code></pre>
458      </div>
459      <div class="file">
460        <div class="file-bar">NEWS.md</div>
461        <div class="news">
462          <p class="md-h"># awards</p>
463          <ul>
464            <li><b>2021</b> Lifetime Member, International Society for Evolution, Medicine &amp; Public Health</li>
465            <li><b>2019</b> Cochrane 30 Under 30</li>
466            <li><b>2017</b> First-ranked gold medalist, National Health System Management Olympiad, Iran</li>
467            <li><b>2012</b> Ranked 206th of 449,955 (top 0.05%) in Iran's national university entrance exam</li>
468            <li><b>2012</b> Ranked 57th of 10,908 (top 0.5%) in the foreign languages entrance exam</li>
469            <li><b>2010</b> Lifetime Member, Ubuntu GNU/Linux Iranian LoCo Team</li>
470          </ul>
471          <p class="md-h"># grants</p>
472          <ul>
473            <li><b>2022</b> NIMAD, Iran: Evidence Gaps in Dentistry, Phase 1 (co-investigator, USD 11,500)</li>
474            <li><b>2022</b> McMaster University Research Scholarship (CAD 19,400 per year, two years)</li>
475            <li><b>2023</b> McMaster HRM Visa Tuition Scholarship (CAD 6,000)</li>
476            <li><b>2023</b> McMaster Global Experience Award, Cochrane Colloquium London</li>
477          </ul>
478        </div>
479      </div>
480    </div>
481  </div>
482</section>
483
484<!-- ============================== WRITING ============================== -->
485<section id="writing" class="sec">
486  <div class="wrap">
487    <div class="sec-head">
488      <p class="cmd"><span class="ps-path">~</span><span class="ps-dollar">$</span> curl -s choxos.medium.com/feed | xq</p>
489      <h2>Writing</h2>
490      <p class="lede">Essays on statistics, dentistry, and how research gets made, on <a href="https://choxos.medium.com" target="_blank" rel="noopener">Medium</a>.</p>
491    </div>
492    <ol class="posts" id="post-list" aria-live="polite"></ol>
493  </div>
494</section>
495
496<!-- ============================== CONTACT ============================== -->
497<section id="contact" class="sec">
498  <div class="wrap">
499    <div class="sec-head">
500      <p class="cmd"><span class="ps-path">~</span><span class="ps-dollar">$</span> finger ahmad</p>
501      <h2>Contact</h2>
502      <p class="lede">Collaborations on evidence synthesis methods, R packages, or meta-research are always welcome.</p>
503    </div>
504    <div class="contact">
505      <div class="mail">
506        <code><span class="c-prompt">$</span> mail -s "hello" <a href="mailto:[email protected]">[email protected]</a></code>
507        <button class="copy" type="button" data-copy="[email protected]">copy</button>
508      </div>
509      <ul class="links">
510        <li><a href="https://github.com/choxos" target="_blank" rel="me noopener"><svg viewBox="0 0 16 16" aria-hidden="true">
510<path fill="currentColor" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"/></svg><span>github</span><em>choxos</em></a></li>
511        <li><a href="https://orcid.org/0000-0001-6829-0823" target="_blank" rel="me noopener"><svg viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="7.5" fill="none" stroke="currentColor"/><path fill="currentColor" d="M5 6.2h1.1v5H5zM5.55 4.2a.65.65 0 110 1.3.65.65 0 010-1.3zM7.2 6.2h2c1.6 0 2.6 1 2.6 2.5s-1 2.5-2.6 2.5h-2zm1.1 1v3h.9c1 0 1.5-.6 1.5-1.5s-.5-1.5-1.5-1.5z"/></svg><span>orcid</span><em>0000-0001-6829-0823</em></a></li>
512        <li><a href="https://scholar.google.com/citations?user=gTWPaFYAAAAJ" target="_blank" rel="me noopener"><svg viewBox="0 0 16 16" aria-hidden="true"><path fill="currentColor" d="M8 1L0 6.5l3 2V12c0 1.7 2.2 3 5 3s5-1.3 5-3V8.5l1.5-1V12h1V6.5zm0 1.2l6.2 4.3L8 10.8 1.8 6.5zM4 9.2l4 2.8 4-2.8V12c0 1-1.7 2-4 2s-4-1-4-2z"/></svg><span>scholar</span><em>gTWPaFYAAAAJ</em></a></li>
513        <li><a href="https://www.linkedin.com/in/asofimahmudi/" target="_blank" rel="me noopener"><svg viewBox="0 0 16 16" aria-hidden="true"><path fill="currentColor" d="M0 1.15C0 .52.52 0 1.17 0h13.66C15.48 0 16 .52 16 1.15v13.7c0 .63-.52 1.15-1.17 1.15H1.17C.52 16 0 15.48 0 14.85zm4.95 12.24V6.17H2.55v7.22zM3.75 5.18c.84 0 1.36-.55 1.36-1.25-.02-.71-.52-1.25-1.35-1.25-.82 0-1.36.54-1.36 1.25 0 .7.52 1.25 1.33 1.25zm4.9 8.21V9.36c0-.22.02-.43.08-.58.17-.43.57-.88 1.23-.88.87 0 1.21.66 1.21 1.63v3.86h2.4V9.25c0-2.22-1.18-3.25-2.76-3.25-1.27 0-1.84.7-2.16 1.19v.02h-.01l.01-.02V6.17h-2.4c.03.68 0 7.22 0 7.22z"/></svg><span>linkedin</span><em>asofimahmudi</em></a></li>
514        <li><a href="https://twitter.com/asofimahmudi" target="_blank" rel="me noopener"><svg viewBox="0 0 16 16" aria-hidden="true"><path fill="currentColor" d="M12.6.75h2.45L9.7 6.87 16 15.25h-4.93l-3.86-5.05-4.42 5.05H.34l5.73-6.55L0 .75h5.06l3.49 4.62zm-.86 13.03h1.36L4.32 2.15H2.86z"/></svg><span>x</span><em>@asofimahmudi</em></a></li>
515        <li><a href="https://choxos.medium.com" target="_blank" rel="me noopener"><svg viewBox="0 0 16 16" aria-hidden="true"><ellipse cx="4.5" cy="8" rx="4.5" ry="4.5" fill="currentColor"/><ellipse cx="11.6" cy="8" rx="2.2" ry="4.3" fill="currentColor"/><ellipse cx="15.1" cy="8" rx=".8" ry="3.9" fill="currentColor"/></svg><span>medium</span><em>choxos</em></a></li>
516        <li><a href="https://cran.r-project.org/web/checks/check_results_a.sofimahmudi_at_gmail.com.html" target="_blank" rel="noopener"><svg viewBox="0 0 16 16" aria-hidden="true"><path fill="currentColor" d="M8 2C3.6 2 0 4.2 0 7c0 2.4 2.6 4.4 6.2 4.9V14h2.4v-2h1.8l1.4 2H15l-1.8-2.6C15 10.5 16 9 16 7c0-2.8-3.6-5-8-5zm0 1.6c3.3 0 6 1.5 6 3.4 0 1.2-1 2.2-2.6 2.8-.3-.6-.9-1-1.6-1H6.2v1.6C3.8 10 2 8.6 2 7c0-1.9 2.7-3.4 6-3.4zm.6 5.9h1.1c.4 0 .6.2.6.5s-.2.5-.6.5H8.6z"/></svg><span>cran</span><em>7 packages</em></a></li>
517        <li><a href="https://openalex.org/A5075399321" target="_blank" rel="noopener"><svg viewBox="0 0 16 16" aria-hidden="true"><circle cx="4" cy="4" r="2" fill="currentColor"/><circle cx="12" cy="5" r="2" fill="currentColor"/><circle cx="7" cy="12" r="2" fill="currentColor"/><path d="M4 4l8 1-5 7z" stroke="currentColor" fill="none"/></svg><span>openalex</span><em>A5075399321</em></a></li>
518      </ul>
519    </div>
520  </div>
521</section>
522</main>
523
524<footer class="foot">
525  <div class="wrap">
526    <p><span class="muted">#</span> Hand-written HTML, CSS, and vanilla JS. No frameworks, no analytics, no cookies.</p>
527    <p><span class="muted">#</span> Data refreshed <span data-stat="updated">2026-09-18</span> by <a href="https://github.com/choxos/choxos.github.io/blob/main/update_data.py" target="_blank" rel="noopener">update_data.py</a> from OpenAlex, GitHub, CRAN, and Medium.</p>
528    <p><span class="muted">#</span> © 2026 Ahmad Sofi-Mahmudi · <a href="https://github.com/choxos/choxos.github.io" target="_blank" rel="noopener">view source</a></p>
529  </div>
530</footer>
531
532<!-- tmux-style status bar navigation -->
533<nav class="tmux" aria-label="Sections">
534  <span class="tmux-session">[choxos]</span>
535  <ol class="tmux-wins" id="tmux-wins">
536    <li><a href="#top" data-win="top">0:~</a></li>
537    <li><a href="#about" data-win="about">1:about</a></li>
538    <li><a href="#packages" data-win="packages">2:packages</a></li>
539    <li><a href="#playground" data-win="playground">3:playground</a></li>
540    <li><a href="#projects" data-win="projects">4:repos</a></li>
541    <li><a href="#papers" data-win="papers">5:papers</a></li>
542    <li><a href="#resume" data-win="resume">6:resume</a></li>
543    <li><a href="#writing" data-win="writing">7:writing</a></li>
544    <li><a href="#contact" data-win="contact">8:contact</a></li>
545  </ol>
546  <span class="tmux-right">
547    <button type="button" id="open-term" title="Open terminal (`)">&gt;_</button>
548    <button type="button" id="theme-toggle" title="Toggle light and dark">theme</button>
549    <span class="clock" id="clock" title="Toronto time">--:--</span>
550  </span>
551</nav>
552
553<!-- Drop-down terminal -->
554<div class="term" id="term" role="dialog" aria-modal="true" aria-label="Terminal" hidden>
555  <div class="term-inner">
556    <div class="term-bar"><span>[email protected]: ~ (bash)</span><button type="button" id="term-close" aria-label="Close terminal">×</button></div>
557    <div class="term-out" id="term-out" aria-live="polite"></div>
558    <form class="term-line" id="term-form" autocomplete="off">
559      <label for="term-in"><span class="ps1">ahmad@choxos</span>:<span class="ps-path" id="term-cwd">~</span>$</label>
560      <input id="term-in" type="text" spellcheck="false" autocapitalize="off" autocomplete="off">
561    </form>
562  </div>
563</div>
564
565<!-- Keyboard help -->
566<div class="keys" id="keys" role="dialog" aria-modal="true" aria-label="Keyboard shortcuts" hidden>
567  <div class="keys-inner">
568    <p class="md-h"># keybindings</p>
569    <dl>
570      <div><dt><kbd>`</kbd></dt><dd>open the terminal</dd></div>
571      <div><dt><kbd>1</kbd>…<kbd>8</kbd></dt><dd>jump to a section</dd></div>
572      <div><dt><kbd>0</kbd></dt><dd>back to top</dd></div>
573      <div><dt><kbd>/</kbd></dt><dd>grep the publications</dd></div>
574      <div><dt><kbd>t</kbd></dt><dd>toggle theme</dd></div>
575      <div><dt><kbd>Esc</kbd></dt><dd>close this</dd></div>
576    </dl>
577  </div>
578</div>
579
580<script src="js/main.js" defer></script>
580
581</body>
582</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.