My aggregated monorepo of OCaml code, automaintained

Update site build: remove sidebar from site pages, add universe step, redesign homepage

Site pages (blog, notebooks) don't need the reference sidebar — it's only
for @doc output. Also adds the opam universe build step to deploy-site.sh,
copies odoc.support into the site tree, and refreshes the homepage with
recent entries and an about section.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

+38 -145
+9 -2
deploy-site.sh
··· 45 echo " site built → $SITE_HTML/" 46 47 echo "" 48 - echo "=== Step 3: Build reference docs ===" 49 dune build @doc 2>&1 | tail -5 || true 50 echo " reference docs built → $DOC_HTML/reference/" 51 52 echo "" 53 - echo "=== Step 4: Merge reference docs into site ===" 54 # Copy @doc reference output into the site's reference/ directory. 55 # The site build already creates reference/index.html from reference/index.mld; 56 # we add the API docs packages alongside it. 57 cp -r "$DOC_HTML/reference/"* "$SITE_HTML/reference/" 58 echo " merged reference docs into site tree" 59 60 echo ""
··· 45 echo " site built → $SITE_HTML/" 46 47 echo "" 48 + echo "=== Step 3: Build universes for interactive code cells ===" 49 + jtw opam astring brr note mime_printer fpath rresult \ 50 + opam-format bos odoc.model tyxml yojson uri jsonm -o "$SITE_HTML/_opam" 51 + echo " universe built → $SITE_HTML/_opam/" 52 + 53 + echo "" 54 + echo "=== Step 4: Build reference docs ===" 55 dune build @doc 2>&1 | tail -5 || true 56 echo " reference docs built → $DOC_HTML/reference/" 57 58 echo "" 59 + echo "=== Step 5: Merge reference docs into site ===" 60 # Copy @doc reference output into the site's reference/ directory. 61 # The site build already creates reference/index.html from reference/index.mld; 62 # we add the API docs packages alongside it. 63 cp -r "$DOC_HTML/reference/"* "$SITE_HTML/reference/" 64 + cp -r "$DOC_HTML/odoc.support" "$SITE_HTML/odoc.support" 65 echo " merged reference docs into site tree" 66 67 echo ""
+3 -4
site-builder/gen_rules.ml
··· 130 prl " (target (dir _html))"; 131 prl " (deps"; 132 List.iter (fun rel -> prl " %s" (odocl_target rel)) mld_files; 133 - prl " _odoc/sidebar.odoc-sidebar"; 134 List.iter (fun asset -> prl " %s" asset) assets; 135 prl " )"; 136 prl " (action"; ··· 138 (* HTML generate *) 139 List.iter 140 (fun rel -> 141 - prl 142 - " (run odoc html-generate --shell jon-shell --sidebar \ 143 - _odoc/sidebar.odoc-sidebar -o _html %s)" 144 (odocl_target rel)) 145 mld_files; 146 (* Support files *)
··· 130 prl " (target (dir _html))"; 131 prl " (deps"; 132 List.iter (fun rel -> prl " %s" (odocl_target rel)) mld_files; 133 + (* sidebar.odoc-sidebar is generated but not used — reference docs 134 + (built via @doc) have their own sidebar; site pages don't need one. *) 135 List.iter (fun asset -> prl " %s" asset) assets; 136 prl " )"; 137 prl " (action"; ··· 139 (* HTML generate *) 140 List.iter 141 (fun rel -> 142 + prl " (run odoc html-generate --shell jon-shell -o _html %s)" 143 (odocl_target rel)) 144 mld_files; 145 (* Support files *)
+1 -135
site/dune.inc
··· 1198 _odoc/notebooks/oxcaml/page-local.odocl 1199 _odoc/projects/page-index.odocl 1200 _odoc/reference/page-index.odocl 1201 - _odoc/sidebar.odoc-sidebar 1202 static/assets/jon.jpg) 1203 (action 1204 (progn ··· 1207 html-generate 1208 --shell 1209 jon-shell 1210 - --sidebar 1211 - _odoc/sidebar.odoc-sidebar 1212 -o 1213 _html 1214 _odoc/blog/2025/03/page-code-block-metadata.odocl) ··· 1217 html-generate 1218 --shell 1219 jon-shell 1220 - --sidebar 1221 - _odoc/sidebar.odoc-sidebar 1222 -o 1223 _html 1224 _odoc/blog/2025/03/page-index.odocl) ··· 1227 html-generate 1228 --shell 1229 jon-shell 1230 - --sidebar 1231 - _odoc/sidebar.odoc-sidebar 1232 -o 1233 _html 1234 _odoc/blog/2025/03/page-module-type-of.odocl) ··· 1237 html-generate 1238 --shell 1239 jon-shell 1240 - --sidebar 1241 - _odoc/sidebar.odoc-sidebar 1242 -o 1243 _html 1244 _odoc/blog/2025/04/page-index.odocl) ··· 1247 html-generate 1248 --shell 1249 jon-shell 1250 - --sidebar 1251 - _odoc/sidebar.odoc-sidebar 1252 -o 1253 _html 1254 _odoc/blog/2025/04/page-meeting-the-team.odocl) ··· 1257 html-generate 1258 --shell 1259 jon-shell 1260 - --sidebar 1261 - _odoc/sidebar.odoc-sidebar 1262 -o 1263 _html 1264 _odoc/blog/2025/04/page-ocaml-docs-ci-and-odoc-3.odocl) ··· 1267 html-generate 1268 --shell 1269 jon-shell 1270 - --sidebar 1271 - _odoc/sidebar.odoc-sidebar 1272 -o 1273 _html 1274 _odoc/blog/2025/04/page-odoc-3.odocl) ··· 1277 html-generate 1278 --shell 1279 jon-shell 1280 - --sidebar 1281 - _odoc/sidebar.odoc-sidebar 1282 -o 1283 _html 1284 _odoc/blog/2025/04/page-semantic-versioning-is-hard.odocl) ··· 1287 html-generate 1288 --shell 1289 jon-shell 1290 - --sidebar 1291 - _odoc/sidebar.odoc-sidebar 1292 -o 1293 _html 1294 _odoc/blog/2025/04/page-this-site.odocl) ··· 1297 html-generate 1298 --shell 1299 jon-shell 1300 - --sidebar 1301 - _odoc/sidebar.odoc-sidebar 1302 -o 1303 _html 1304 _odoc/blog/2025/05/page-ai-for-climate-and-nature-day.odocl) ··· 1307 html-generate 1308 --shell 1309 jon-shell 1310 - --sidebar 1311 - _odoc/sidebar.odoc-sidebar 1312 -o 1313 _html 1314 _odoc/blog/2025/05/page-docs-progress.odocl) ··· 1317 html-generate 1318 --shell 1319 jon-shell 1320 - --sidebar 1321 - _odoc/sidebar.odoc-sidebar 1322 -o 1323 _html 1324 _odoc/blog/2025/05/page-index.odocl) ··· 1327 html-generate 1328 --shell 1329 jon-shell 1330 - --sidebar 1331 - _odoc/sidebar.odoc-sidebar 1332 -o 1333 _html 1334 _odoc/blog/2025/05/page-lots-of-things.odocl) ··· 1337 html-generate 1338 --shell 1339 jon-shell 1340 - --sidebar 1341 - _odoc/sidebar.odoc-sidebar 1342 -o 1343 _html 1344 _odoc/blog/2025/05/page-oxcaml-gets-closer.odocl) ··· 1347 html-generate 1348 --shell 1349 jon-shell 1350 - --sidebar 1351 - _odoc/sidebar.odoc-sidebar 1352 -o 1353 _html 1354 _odoc/blog/2025/05/page-ticks-solved-by-ai.odocl) ··· 1357 html-generate 1358 --shell 1359 jon-shell 1360 - --sidebar 1361 - _odoc/sidebar.odoc-sidebar 1362 -o 1363 _html 1364 _odoc/blog/2025/06/page-index.odocl) ··· 1367 html-generate 1368 --shell 1369 jon-shell 1370 - --sidebar 1371 - _odoc/sidebar.odoc-sidebar 1372 -o 1373 _html 1374 _odoc/blog/2025/06/page-week23.odocl) ··· 1377 html-generate 1378 --shell 1379 jon-shell 1380 - --sidebar 1381 - _odoc/sidebar.odoc-sidebar 1382 -o 1383 _html 1384 _odoc/blog/2025/07/page-index.odocl) ··· 1387 html-generate 1388 --shell 1389 jon-shell 1390 - --sidebar 1391 - _odoc/sidebar.odoc-sidebar 1392 -o 1393 _html 1394 _odoc/blog/2025/07/page-odoc-3-live-on-ocaml-org.odocl) ··· 1397 html-generate 1398 --shell 1399 jon-shell 1400 - --sidebar 1401 - _odoc/sidebar.odoc-sidebar 1402 -o 1403 _html 1404 _odoc/blog/2025/07/page-retrospective.odocl) ··· 1407 html-generate 1408 --shell 1409 jon-shell 1410 - --sidebar 1411 - _odoc/sidebar.odoc-sidebar 1412 -o 1413 _html 1414 _odoc/blog/2025/07/page-week27.odocl) ··· 1417 html-generate 1418 --shell 1419 jon-shell 1420 - --sidebar 1421 - _odoc/sidebar.odoc-sidebar 1422 -o 1423 _html 1424 _odoc/blog/2025/07/page-week28.odocl) ··· 1427 html-generate 1428 --shell 1429 jon-shell 1430 - --sidebar 1431 - _odoc/sidebar.odoc-sidebar 1432 -o 1433 _html 1434 _odoc/blog/2025/08/page-index.odocl) ··· 1437 html-generate 1438 --shell 1439 jon-shell 1440 - --sidebar 1441 - _odoc/sidebar.odoc-sidebar 1442 -o 1443 _html 1444 _odoc/blog/2025/08/page-ocaml-lsp-mcp.odocl) ··· 1447 html-generate 1448 --shell 1449 jon-shell 1450 - --sidebar 1451 - _odoc/sidebar.odoc-sidebar 1452 -o 1453 _html 1454 _odoc/blog/2025/08/page-ocaml-mcp-server.odocl) ··· 1457 html-generate 1458 --shell 1459 jon-shell 1460 - --sidebar 1461 - _odoc/sidebar.odoc-sidebar 1462 -o 1463 _html 1464 _odoc/blog/2025/08/page-week33.odocl) ··· 1467 html-generate 1468 --shell 1469 jon-shell 1470 - --sidebar 1471 - _odoc/sidebar.odoc-sidebar 1472 -o 1473 _html 1474 _odoc/blog/2025/09/page-build-ids-for-day10.odocl) ··· 1477 html-generate 1478 --shell 1479 jon-shell 1480 - --sidebar 1481 - _odoc/sidebar.odoc-sidebar 1482 -o 1483 _html 1484 _odoc/blog/2025/09/page-caching-opam-solutions.odocl) ··· 1487 html-generate 1488 --shell 1489 jon-shell 1490 - --sidebar 1491 - _odoc/sidebar.odoc-sidebar 1492 -o 1493 _html 1494 _odoc/blog/2025/09/page-caching-opam-solutions2.odocl) ··· 1497 html-generate 1498 --shell 1499 jon-shell 1500 - --sidebar 1501 - _odoc/sidebar.odoc-sidebar 1502 -o 1503 _html 1504 _odoc/blog/2025/09/page-giving-hub-cl-an-upgrade.odocl) ··· 1507 html-generate 1508 --shell 1509 jon-shell 1510 - --sidebar 1511 - _odoc/sidebar.odoc-sidebar 1512 -o 1513 _html 1514 _odoc/blog/2025/09/page-index.odocl) ··· 1517 html-generate 1518 --shell 1519 jon-shell 1520 - --sidebar 1521 - _odoc/sidebar.odoc-sidebar 1522 -o 1523 _html 1524 _odoc/blog/2025/09/page-odoc-bugs.odocl) ··· 1527 html-generate 1528 --shell 1529 jon-shell 1530 - --sidebar 1531 - _odoc/sidebar.odoc-sidebar 1532 -o 1533 _html 1534 _odoc/blog/2025/11/page-foundations-of-computer-science.odocl) ··· 1537 html-generate 1538 --shell 1539 jon-shell 1540 - --sidebar 1541 - _odoc/sidebar.odoc-sidebar 1542 -o 1543 _html 1544 _odoc/blog/2025/11/page-index.odocl) ··· 1547 html-generate 1548 --shell 1549 jon-shell 1550 - --sidebar 1551 - _odoc/sidebar.odoc-sidebar 1552 -o 1553 _html 1554 _odoc/blog/2025/12/page-an-svg-is-all-you-need.odocl) ··· 1557 html-generate 1558 --shell 1559 jon-shell 1560 - --sidebar 1561 - _odoc/sidebar.odoc-sidebar 1562 -o 1563 _html 1564 _odoc/blog/2025/12/page-claude-and-dune.odocl) ··· 1567 html-generate 1568 --shell 1569 jon-shell 1570 - --sidebar 1571 - _odoc/sidebar.odoc-sidebar 1572 -o 1573 _html 1574 _odoc/blog/2025/12/page-index.odocl) ··· 1577 html-generate 1578 --shell 1579 jon-shell 1580 - --sidebar 1581 - _odoc/sidebar.odoc-sidebar 1582 -o 1583 _html 1584 _odoc/blog/2025/page-index.odocl) ··· 1587 html-generate 1588 --shell 1589 jon-shell 1590 - --sidebar 1591 - _odoc/sidebar.odoc-sidebar 1592 -o 1593 _html 1594 _odoc/blog/2026/01/page-index.odocl) ··· 1597 html-generate 1598 --shell 1599 jon-shell 1600 - --sidebar 1601 - _odoc/sidebar.odoc-sidebar 1602 -o 1603 _html 1604 _odoc/blog/2026/01/page-weeknotes-2026-03.odocl) ··· 1607 html-generate 1608 --shell 1609 jon-shell 1610 - --sidebar 1611 - _odoc/sidebar.odoc-sidebar 1612 -o 1613 _html 1614 _odoc/blog/2026/01/page-weeknotes-2026-04-05.odocl) ··· 1617 html-generate 1618 --shell 1619 jon-shell 1620 - --sidebar 1621 - _odoc/sidebar.odoc-sidebar 1622 -o 1623 _html 1624 _odoc/blog/2026/02/page-index.odocl) ··· 1627 html-generate 1628 --shell 1629 jon-shell 1630 - --sidebar 1631 - _odoc/sidebar.odoc-sidebar 1632 -o 1633 _html 1634 _odoc/blog/2026/02/page-weeknotes-2026-06.odocl) ··· 1637 html-generate 1638 --shell 1639 jon-shell 1640 - --sidebar 1641 - _odoc/sidebar.odoc-sidebar 1642 -o 1643 _html 1644 _odoc/blog/2026/page-index.odocl) ··· 1647 html-generate 1648 --shell 1649 jon-shell 1650 - --sidebar 1651 - _odoc/sidebar.odoc-sidebar 1652 -o 1653 _html 1654 _odoc/blog/page-index.odocl) ··· 1657 html-generate 1658 --shell 1659 jon-shell 1660 - --sidebar 1661 - _odoc/sidebar.odoc-sidebar 1662 -o 1663 _html 1664 _odoc/drafts/page-index.odocl) 1665 - (run 1666 - odoc 1667 - html-generate 1668 - --shell 1669 - jon-shell 1670 - --sidebar 1671 - _odoc/sidebar.odoc-sidebar 1672 - -o 1673 - _html 1674 - _odoc/page-index.odocl) 1675 (run 1676 odoc 1677 html-generate 1678 --shell 1679 jon-shell 1680 - --sidebar 1681 - _odoc/sidebar.odoc-sidebar 1682 -o 1683 _html 1684 _odoc/notebooks/foundations/page-foundations1.odocl) ··· 1687 html-generate 1688 --shell 1689 jon-shell 1690 - --sidebar 1691 - _odoc/sidebar.odoc-sidebar 1692 -o 1693 _html 1694 _odoc/notebooks/foundations/page-foundations10.odocl) ··· 1697 html-generate 1698 --shell 1699 jon-shell 1700 - --sidebar 1701 - _odoc/sidebar.odoc-sidebar 1702 -o 1703 _html 1704 _odoc/notebooks/foundations/page-foundations11.odocl) ··· 1707 html-generate 1708 --shell 1709 jon-shell 1710 - --sidebar 1711 - _odoc/sidebar.odoc-sidebar 1712 -o 1713 _html 1714 _odoc/notebooks/foundations/page-foundations2.odocl) ··· 1717 html-generate 1718 --shell 1719 jon-shell 1720 - --sidebar 1721 - _odoc/sidebar.odoc-sidebar 1722 -o 1723 _html 1724 _odoc/notebooks/foundations/page-foundations3.odocl) ··· 1727 html-generate 1728 --shell 1729 jon-shell 1730 - --sidebar 1731 - _odoc/sidebar.odoc-sidebar 1732 -o 1733 _html 1734 _odoc/notebooks/foundations/page-foundations4.odocl) ··· 1737 html-generate 1738 --shell 1739 jon-shell 1740 - --sidebar 1741 - _odoc/sidebar.odoc-sidebar 1742 -o 1743 _html 1744 _odoc/notebooks/foundations/page-foundations5.odocl) ··· 1747 html-generate 1748 --shell 1749 jon-shell 1750 - --sidebar 1751 - _odoc/sidebar.odoc-sidebar 1752 -o 1753 _html 1754 _odoc/notebooks/foundations/page-foundations6.odocl) ··· 1757 html-generate 1758 --shell 1759 jon-shell 1760 - --sidebar 1761 - _odoc/sidebar.odoc-sidebar 1762 -o 1763 _html 1764 _odoc/notebooks/foundations/page-foundations7.odocl) ··· 1767 html-generate 1768 --shell 1769 jon-shell 1770 - --sidebar 1771 - _odoc/sidebar.odoc-sidebar 1772 -o 1773 _html 1774 _odoc/notebooks/foundations/page-foundations8.odocl) ··· 1777 html-generate 1778 --shell 1779 jon-shell 1780 - --sidebar 1781 - _odoc/sidebar.odoc-sidebar 1782 -o 1783 _html 1784 _odoc/notebooks/foundations/page-foundations9.odocl) ··· 1787 html-generate 1788 --shell 1789 jon-shell 1790 - --sidebar 1791 - _odoc/sidebar.odoc-sidebar 1792 -o 1793 _html 1794 _odoc/notebooks/foundations/page-index.odocl) ··· 1797 html-generate 1798 --shell 1799 jon-shell 1800 - --sidebar 1801 - _odoc/sidebar.odoc-sidebar 1802 -o 1803 _html 1804 _odoc/notebooks/page-index.odocl) ··· 1807 html-generate 1808 --shell 1809 jon-shell 1810 - --sidebar 1811 - _odoc/sidebar.odoc-sidebar 1812 -o 1813 _html 1814 _odoc/notebooks/oxcaml/page-local.odocl) ··· 1817 html-generate 1818 --shell 1819 jon-shell 1820 - --sidebar 1821 - _odoc/sidebar.odoc-sidebar 1822 -o 1823 _html 1824 _odoc/projects/page-index.odocl) ··· 1827 html-generate 1828 --shell 1829 jon-shell 1830 - --sidebar 1831 - _odoc/sidebar.odoc-sidebar 1832 -o 1833 _html 1834 _odoc/reference/page-index.odocl)
··· 1198 _odoc/notebooks/oxcaml/page-local.odocl 1199 _odoc/projects/page-index.odocl 1200 _odoc/reference/page-index.odocl 1201 static/assets/jon.jpg) 1202 (action 1203 (progn ··· 1206 html-generate 1207 --shell 1208 jon-shell 1209 -o 1210 _html 1211 _odoc/blog/2025/03/page-code-block-metadata.odocl) ··· 1214 html-generate 1215 --shell 1216 jon-shell 1217 -o 1218 _html 1219 _odoc/blog/2025/03/page-index.odocl) ··· 1222 html-generate 1223 --shell 1224 jon-shell 1225 -o 1226 _html 1227 _odoc/blog/2025/03/page-module-type-of.odocl) ··· 1230 html-generate 1231 --shell 1232 jon-shell 1233 -o 1234 _html 1235 _odoc/blog/2025/04/page-index.odocl) ··· 1238 html-generate 1239 --shell 1240 jon-shell 1241 -o 1242 _html 1243 _odoc/blog/2025/04/page-meeting-the-team.odocl) ··· 1246 html-generate 1247 --shell 1248 jon-shell 1249 -o 1250 _html 1251 _odoc/blog/2025/04/page-ocaml-docs-ci-and-odoc-3.odocl) ··· 1254 html-generate 1255 --shell 1256 jon-shell 1257 -o 1258 _html 1259 _odoc/blog/2025/04/page-odoc-3.odocl) ··· 1262 html-generate 1263 --shell 1264 jon-shell 1265 -o 1266 _html 1267 _odoc/blog/2025/04/page-semantic-versioning-is-hard.odocl) ··· 1270 html-generate 1271 --shell 1272 jon-shell 1273 -o 1274 _html 1275 _odoc/blog/2025/04/page-this-site.odocl) ··· 1278 html-generate 1279 --shell 1280 jon-shell 1281 -o 1282 _html 1283 _odoc/blog/2025/05/page-ai-for-climate-and-nature-day.odocl) ··· 1286 html-generate 1287 --shell 1288 jon-shell 1289 -o 1290 _html 1291 _odoc/blog/2025/05/page-docs-progress.odocl) ··· 1294 html-generate 1295 --shell 1296 jon-shell 1297 -o 1298 _html 1299 _odoc/blog/2025/05/page-index.odocl) ··· 1302 html-generate 1303 --shell 1304 jon-shell 1305 -o 1306 _html 1307 _odoc/blog/2025/05/page-lots-of-things.odocl) ··· 1310 html-generate 1311 --shell 1312 jon-shell 1313 -o 1314 _html 1315 _odoc/blog/2025/05/page-oxcaml-gets-closer.odocl) ··· 1318 html-generate 1319 --shell 1320 jon-shell 1321 -o 1322 _html 1323 _odoc/blog/2025/05/page-ticks-solved-by-ai.odocl) ··· 1326 html-generate 1327 --shell 1328 jon-shell 1329 -o 1330 _html 1331 _odoc/blog/2025/06/page-index.odocl) ··· 1334 html-generate 1335 --shell 1336 jon-shell 1337 -o 1338 _html 1339 _odoc/blog/2025/06/page-week23.odocl) ··· 1342 html-generate 1343 --shell 1344 jon-shell 1345 -o 1346 _html 1347 _odoc/blog/2025/07/page-index.odocl) ··· 1350 html-generate 1351 --shell 1352 jon-shell 1353 -o 1354 _html 1355 _odoc/blog/2025/07/page-odoc-3-live-on-ocaml-org.odocl) ··· 1358 html-generate 1359 --shell 1360 jon-shell 1361 -o 1362 _html 1363 _odoc/blog/2025/07/page-retrospective.odocl) ··· 1366 html-generate 1367 --shell 1368 jon-shell 1369 -o 1370 _html 1371 _odoc/blog/2025/07/page-week27.odocl) ··· 1374 html-generate 1375 --shell 1376 jon-shell 1377 -o 1378 _html 1379 _odoc/blog/2025/07/page-week28.odocl) ··· 1382 html-generate 1383 --shell 1384 jon-shell 1385 -o 1386 _html 1387 _odoc/blog/2025/08/page-index.odocl) ··· 1390 html-generate 1391 --shell 1392 jon-shell 1393 -o 1394 _html 1395 _odoc/blog/2025/08/page-ocaml-lsp-mcp.odocl) ··· 1398 html-generate 1399 --shell 1400 jon-shell 1401 -o 1402 _html 1403 _odoc/blog/2025/08/page-ocaml-mcp-server.odocl) ··· 1406 html-generate 1407 --shell 1408 jon-shell 1409 -o 1410 _html 1411 _odoc/blog/2025/08/page-week33.odocl) ··· 1414 html-generate 1415 --shell 1416 jon-shell 1417 -o 1418 _html 1419 _odoc/blog/2025/09/page-build-ids-for-day10.odocl) ··· 1422 html-generate 1423 --shell 1424 jon-shell 1425 -o 1426 _html 1427 _odoc/blog/2025/09/page-caching-opam-solutions.odocl) ··· 1430 html-generate 1431 --shell 1432 jon-shell 1433 -o 1434 _html 1435 _odoc/blog/2025/09/page-caching-opam-solutions2.odocl) ··· 1438 html-generate 1439 --shell 1440 jon-shell 1441 -o 1442 _html 1443 _odoc/blog/2025/09/page-giving-hub-cl-an-upgrade.odocl) ··· 1446 html-generate 1447 --shell 1448 jon-shell 1449 -o 1450 _html 1451 _odoc/blog/2025/09/page-index.odocl) ··· 1454 html-generate 1455 --shell 1456 jon-shell 1457 -o 1458 _html 1459 _odoc/blog/2025/09/page-odoc-bugs.odocl) ··· 1462 html-generate 1463 --shell 1464 jon-shell 1465 -o 1466 _html 1467 _odoc/blog/2025/11/page-foundations-of-computer-science.odocl) ··· 1470 html-generate 1471 --shell 1472 jon-shell 1473 -o 1474 _html 1475 _odoc/blog/2025/11/page-index.odocl) ··· 1478 html-generate 1479 --shell 1480 jon-shell 1481 -o 1482 _html 1483 _odoc/blog/2025/12/page-an-svg-is-all-you-need.odocl) ··· 1486 html-generate 1487 --shell 1488 jon-shell 1489 -o 1490 _html 1491 _odoc/blog/2025/12/page-claude-and-dune.odocl) ··· 1494 html-generate 1495 --shell 1496 jon-shell 1497 -o 1498 _html 1499 _odoc/blog/2025/12/page-index.odocl) ··· 1502 html-generate 1503 --shell 1504 jon-shell 1505 -o 1506 _html 1507 _odoc/blog/2025/page-index.odocl) ··· 1510 html-generate 1511 --shell 1512 jon-shell 1513 -o 1514 _html 1515 _odoc/blog/2026/01/page-index.odocl) ··· 1518 html-generate 1519 --shell 1520 jon-shell 1521 -o 1522 _html 1523 _odoc/blog/2026/01/page-weeknotes-2026-03.odocl) ··· 1526 html-generate 1527 --shell 1528 jon-shell 1529 -o 1530 _html 1531 _odoc/blog/2026/01/page-weeknotes-2026-04-05.odocl) ··· 1534 html-generate 1535 --shell 1536 jon-shell 1537 -o 1538 _html 1539 _odoc/blog/2026/02/page-index.odocl) ··· 1542 html-generate 1543 --shell 1544 jon-shell 1545 -o 1546 _html 1547 _odoc/blog/2026/02/page-weeknotes-2026-06.odocl) ··· 1550 html-generate 1551 --shell 1552 jon-shell 1553 -o 1554 _html 1555 _odoc/blog/2026/page-index.odocl) ··· 1558 html-generate 1559 --shell 1560 jon-shell 1561 -o 1562 _html 1563 _odoc/blog/page-index.odocl) ··· 1566 html-generate 1567 --shell 1568 jon-shell 1569 -o 1570 _html 1571 _odoc/drafts/page-index.odocl) 1572 + (run odoc html-generate --shell jon-shell -o _html _odoc/page-index.odocl) 1573 (run 1574 odoc 1575 html-generate 1576 --shell 1577 jon-shell 1578 -o 1579 _html 1580 _odoc/notebooks/foundations/page-foundations1.odocl) ··· 1583 html-generate 1584 --shell 1585 jon-shell 1586 -o 1587 _html 1588 _odoc/notebooks/foundations/page-foundations10.odocl) ··· 1591 html-generate 1592 --shell 1593 jon-shell 1594 -o 1595 _html 1596 _odoc/notebooks/foundations/page-foundations11.odocl) ··· 1599 html-generate 1600 --shell 1601 jon-shell 1602 -o 1603 _html 1604 _odoc/notebooks/foundations/page-foundations2.odocl) ··· 1607 html-generate 1608 --shell 1609 jon-shell 1610 -o 1611 _html 1612 _odoc/notebooks/foundations/page-foundations3.odocl) ··· 1615 html-generate 1616 --shell 1617 jon-shell 1618 -o 1619 _html 1620 _odoc/notebooks/foundations/page-foundations4.odocl) ··· 1623 html-generate 1624 --shell 1625 jon-shell 1626 -o 1627 _html 1628 _odoc/notebooks/foundations/page-foundations5.odocl) ··· 1631 html-generate 1632 --shell 1633 jon-shell 1634 -o 1635 _html 1636 _odoc/notebooks/foundations/page-foundations6.odocl) ··· 1639 html-generate 1640 --shell 1641 jon-shell 1642 -o 1643 _html 1644 _odoc/notebooks/foundations/page-foundations7.odocl) ··· 1647 html-generate 1648 --shell 1649 jon-shell 1650 -o 1651 _html 1652 _odoc/notebooks/foundations/page-foundations8.odocl) ··· 1655 html-generate 1656 --shell 1657 jon-shell 1658 -o 1659 _html 1660 _odoc/notebooks/foundations/page-foundations9.odocl) ··· 1663 html-generate 1664 --shell 1665 jon-shell 1666 -o 1667 _html 1668 _odoc/notebooks/foundations/page-index.odocl) ··· 1671 html-generate 1672 --shell 1673 jon-shell 1674 -o 1675 _html 1676 _odoc/notebooks/page-index.odocl) ··· 1679 html-generate 1680 --shell 1681 jon-shell 1682 -o 1683 _html 1684 _odoc/notebooks/oxcaml/page-local.odocl) ··· 1687 html-generate 1688 --shell 1689 jon-shell 1690 -o 1691 _html 1692 _odoc/projects/page-index.odocl) ··· 1695 html-generate 1696 --shell 1697 jon-shell 1698 -o 1699 _html 1700 _odoc/reference/page-index.odocl)
+25 -4
site/index.mld
··· 1 {0 jon.recoil.org} 2 3 - Welcome to jon.recoil.org. This site is built with OxCaml. 4 5 - {1 Sections} 6 7 {ul 8 - {- {{!/jon-site/blog/page-index}Blog}} 9 - {- {{!/jon-site/notebooks/page-index}Notebooks}} 10 }
··· 1 {0 jon.recoil.org} 2 3 + Built using {{:https://github.com/ocaml/odoc}odoc}, the OCaml documentation generator. Because when you have a hammer... 4 5 + {1 Recent entries} 6 7 {ul 8 + {- {{!blog/2026/02/page-"weeknotes-2026-06"}Weeknotes for week 6}} 9 + {- {{!blog/2026/01/page-"weeknotes-2026-04-05"}Weeknotes for weeks 4-5}} 10 + {- {{!blog/2026/01/page-"weeknotes-2026-03"}Weeknotes for week 3}} 11 + {- {{!blog/2025/12/page-"claude-and-dune"}Claude and Dune}} 12 + {- {{!blog/2025/12/page-"an-svg-is-all-you-need"}An SVG is all you need}} 13 + {- {{!blog/2025/11/page-"foundations-of-computer-science"}Foundations of Computer Science}} 14 + {- {{!blog/2025/09/page-"caching-opam-solutions2"}Caching opam solutions - part 2}} 15 + {- {{!blog/2025/09/page-"odoc-bugs"}Odoc bugs}} 16 + {- {{!blog/2025/09/page-"caching-opam-solutions"}Caching opam solutions}} 17 + {- {{!blog/2025/09/page-"build-ids-for-day10"}Build IDs for Day10}} 18 } 19 + 20 + {1 About me} 21 + 22 + {%html: <img src="/static/assets/jon.jpg" style="border-radius: 50%; margin-bottom: 1rem; display: block; max-width: 150px;" >%} 23 + 24 + Fellow of {{:https://www.chu.cam.ac.uk/}Churchill College}, SRA at {{:https://www.cl.cam.ac.uk/}Department of Computer Science and Technology}, 25 + member of {{:https://www.cst.cam.ac.uk/research/eeg}Energy and Environment Group}, Bookfighter at the {{:https://nevermoor.fandom.com/wiki/Gobleian_Library}Gobleian Library}, 26 + Professional Old Dude at {{:https://tarides.com/}Tarides}. 27 + 28 + Something something something... OCaml wins! 29 + 30 + {1 About this site} 31 + See {{!blog/2025/04/page-"this-site"}this-site} for more information about this site.