diff --git a/.github/workflows/quarto-pr-preview.yml b/.github/workflows/quarto-pr-preview.yml
new file mode 100644
index 0000000..50ce515
--- /dev/null
+++ b/.github/workflows/quarto-pr-preview.yml
@@ -0,0 +1,28 @@
+name: Build Quarto PR preview
+
+on:
+ pull_request:
+ branches: [main]
+
+permissions:
+ contents: read
+
+jobs:
+ render:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: quarto-dev/quarto-actions/setup@v2
+
+ - name: Render website
+ run: quarto render
+
+ - name: Upload rendered website
+ uses: actions/upload-artifact@v4
+ with:
+ name: qmcsoftware-site-pr-${{ github.event.pull_request.number }}
+ path: _site
+ if-no-files-found: error
+ retention-days: 14
diff --git a/AGENTS.md b/AGENTS.md
index 9e41d64..acdbe8d 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -2,17 +2,17 @@
## Repository purpose
-This repository contains the public-facing QMCPy website. It is a Quarto
-website intended for project introductions, community information, news and
-events, and blog content.
+This repository contains the public-facing QMCSoftware organization website.
+It is a Quarto website intended for software introductions, publications,
+community information, news and events, and blog content.
-QMCPy's technical documentation remains in the `QMCSoftware` repository and
-continues to be built with MkDocs. Link to that documentation; do not migrate,
-duplicate, or replace it from this repository.
+Each project's technical documentation remains with its software repository.
+Link to that documentation; do not migrate, duplicate, or replace it from this
+repository.
## Repository boundaries
-- Write only within `qmcpy-website` unless the user explicitly changes the
+- Write only within `qmcsoftware-website` unless the user explicitly changes the
scope.
- `QMCSoftware` may be inspected for authoritative project information,
existing documentation, and later blog-migration planning, but must not be
diff --git a/PLAN.md b/PLAN.md
index 6c6768b..b9e7f46 100644
--- a/PLAN.md
+++ b/PLAN.md
@@ -1,21 +1,22 @@
-# QMCPy Website Prototype Plan
+# QMCSoftware Website Prototype Plan
## Purpose and architecture
-This repository will provide the public-facing QMCPy website. Quarto source
-lives on `main`, renders to `_site/`, and is published by GitHub Actions to the
-`gh-pages` branch. The custom domain is `qmcpy.org`.
+This repository will provide the single public-facing website for the
+QMCSoftware organization. Quarto source lives on `main`, renders to `_site/`,
+and is published by GitHub Actions to the `gh-pages` branch. The existing
+custom domain, `qmcpy.org`, remains in place temporarily.
-The existing technical documentation remains in `QMCSoftware`, continues to
-use MkDocs, and is linked prominently from this site. The website adds a public
-entry point; it does not replace the package documentation.
+Technical documentation remains with each software repository and is linked
+from this site. The website adds a shared public entry point; it does not
+replace project documentation.
## Guiding principles
- Keep the prototype small, navigable, and easy to maintain.
- Reuse proven structural and deployment ideas without importing course or
slide architecture.
-- Treat maintained QMCPy sources as authoritative and avoid speculative copy.
+- Treat maintained project sources as authoritative and avoid speculative copy.
- Separate source from generated output and validate each phase before adding
complexity.
- Make later content migration explicit and reviewable.
@@ -26,7 +27,7 @@ entry point; it does not replace the package documentation.
- [x] Confirm the repository roles, source branch, output directory, publish
branch, custom domain, and scope exclusions.
-- [x] Inspect the starting `qmcpy-website` files.
+- [x] Inspect the starting QMCPy-only prototype files.
- [x] Inspect relevant Quarto and deployment patterns in `MATH565Fall2026`.
- [x] Confirm the maintained documentation and GitHub destinations from
`QMCSoftware`.
@@ -41,7 +42,7 @@ entry point; it does not replace the package documentation.
- [x] Avoid unnecessary runtime dependencies; no `requirements.txt` is needed
for the current non-executable content.
-### Phase 2A — Establish the site skeleton
+### Phase 2A — Establish the original site skeleton
- [x] Configure a Quarto website that renders to `_site/`.
- [x] Add Home, Blog, News & Events, Community, Documentation, and GitHub
@@ -58,10 +59,21 @@ entry point; it does not replace the package documentation.
responsive button treatment.
- [x] Keep the styling local and independent of classroom-specific styles.
- [ ] Review the prototype with collaborators and align it with any approved
- QMCPy visual identity or assets.
+ QMCSoftware visual identity or assets.
- [ ] Complete browser-based responsive and accessibility review.
-### Phase 3 — Develop the homepage
+### Phase 3 — Convert to the QMCSoftware umbrella
+
+- [x] Replace the QMCPy-specific homepage with an organization-wide homepage.
+- [x] Add a Software section for QMCPy, QMCToolsCL, QuasiMC.jl, and LDData.
+- [x] Add a Publications prototype without inventing a complete bibliography.
+- [x] Update shared navigation, metadata, footer, and organization-wide copy.
+- [x] Keep each project's detailed documentation in its maintained repository.
+- [x] Retain `qmcpy.org` and the existing `CNAME` during the transition.
+- [ ] Decide the long-term domain, custom-domain settings, and redirects.
+- [ ] Approve an organization-level visual identity and navbar mark, if any.
+
+### Phase 4 — Refine the homepage
- [x] Add a concise prototype introduction and primary documentation/GitHub
actions.
@@ -70,8 +82,14 @@ entry point; it does not replace the package documentation.
- [ ] Add approved imagery, examples, or impact highlights if they provide
clear value.
-### Phase 4 — Migrate the blog
+### Phase 5 — Migrate the blog
+- [x] Migrate “Why Add Q to MC?” as the first self-contained Quarto post,
+ preserving its authorship, mathematical explanation, equations, figures, and
+ captions.
+- [x] Revise “Why Add Q to MC?” as a living article with one last-revised date,
+ qualified convergence claims, and practical guidance.
+- [x] Establish listing metadata and a discoverable Blog index.
- [ ] Inventory the existing 18 posts and their assets without modifying the
source repository.
- [ ] Define Quarto post metadata, URL preservation, authorship, categories,
@@ -80,14 +98,16 @@ entry point; it does not replace the package documentation.
- [ ] Verify dates, authors, links, code, mathematics, images, and legacy URLs.
- [ ] Publish the complete archive only after collaborator review.
-### Phase 5 — Build news and events
+### Phase 6 — Build news and events
- [x] Add the section entry page without invented announcements.
+- [x] Add a sourced prototype news item and a discoverable News & Events
+ listing.
- [ ] Define lightweight metadata and archive conventions.
- [ ] Add only confirmed news, talks, workshops, releases, and events.
- [ ] Decide how past and upcoming events should be presented.
-### Phase 6 — Develop community content
+### Phase 7 — Develop community content
- [x] Link to maintained community and contribution resources.
- [ ] Agree on the intended audience and approved community narrative.
@@ -96,17 +116,29 @@ entry point; it does not replace the package documentation.
- [ ] Review names, roles, affiliations, and acknowledgements with
collaborators before publication.
-### Phase 7 — Integrate documentation pathways
+### Phase 8 — Integrate documentation pathways
-- [x] Add prominent links to the existing MkDocs documentation.
-- [x] State clearly that technical documentation remains a separate maintained
- site.
-- [ ] Review cross-links from both sites and identify any minimal reciprocal
- navigation changes for a separately authorized `QMCSoftware` task.
+- [x] Add links to maintained project documentation and repositories.
+- [x] State clearly that technical documentation remains with each project.
+- [ ] Review reciprocal links from the software repositories and documentation.
- [ ] Verify that users can distinguish public, learning, API-reference, and
contribution destinations.
-### Phase 8 — Test the site
+### Phase 8A — Develop publications
+
+- [x] Add a selected local YAML publication catalog.
+- [x] Render ordinary publication records directly from YAML on the
+ Publications page, without per-publication folders or QMD files.
+- [x] Sort the curated website catalog by year descending and title ascending,
+ grouping ordinary publications under year headings.
+- [x] Add a reviewed prototype publication with publisher, DOI, and arXiv
+ links as a hand-written featured introduction.
+- [x] Document the one-record YAML contribution convention.
+- [ ] Correct and enrich the corresponding AcademicLib record in a separately
+ authorized AcademicLib task.
+- [ ] Agree on bibliography scope, review ownership, and migration priorities.
+
+### Phase 9 — Test the site
- [x] Validate the Quarto configuration and a complete local render.
- [x] Inspect generated page structure, internal destinations, external
@@ -116,7 +148,7 @@ entry point; it does not replace the package documentation.
content.
- [ ] Test from a fresh clone with the documented Quarto setup.
-### Phase 9 — Validate deployment
+### Phase 10 — Validate deployment
- [x] Add GitHub Actions rendering from `main` to `_site/` and publishing to
`gh-pages`.
@@ -125,10 +157,10 @@ entry point; it does not replace the package documentation.
- [ ] Trigger the workflow on GitHub and verify the `gh-pages` branch contents.
- [ ] Verify HTTPS and `qmcpy.org` after deployment.
-### Phase 10 — Collaborator review and prototype decision
+### Phase 11 — Collaborator review and prototype decision
- [ ] Review information architecture, visual direction, and provisional copy
- with QMCPy collaborators.
+ with QMCSoftware collaborators.
- [ ] Record requested changes and resolve launch-blocking issues.
- [ ] Agree on ownership and cadence for blog, news, and community updates.
- [ ] Approve the prototype before beginning the 18-post blog migration.
diff --git a/README.md b/README.md
index 527f88e..c7b48cf 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,16 @@
-# QMCPy website
+# QMCSoftware website
This repository contains the public-facing website for
-[QMCPy](https://qmcpy.org), built with [Quarto](https://quarto.org/).
+[QMCSoftware](https://github.com/QMCSoftware), built with
+[Quarto](https://quarto.org/). It is an umbrella site for the organization's
+software, publications, blog, news and events, and community information.
-Technical package documentation remains in the
-[QMCSoftware repository](https://github.com/QMCSoftware/QMCSoftware) and is
-published separately with MkDocs at
-[qmcsoftware.github.io/QMCSoftware](https://qmcsoftware.github.io/QMCSoftware/).
+Technical documentation remains with each software repository. The website
+links to maintained project documentation instead of duplicating it.
+
+The existing `https://qmcpy.org` site URL and `CNAME` remain in place
+temporarily while the organization decides its long-term domain and redirect
+strategy.
## Local preview
diff --git a/STATUS.md b/STATUS.md
index e74eba4..a4bb8b9 100644
--- a/STATUS.md
+++ b/STATUS.md
@@ -1,19 +1,33 @@
-# QMCPy Website Status
+# QMCSoftware Website Status
## Complete
- [x] Confirmed Quarto-on-`main`, `_site/`, `gh-pages`, and `qmcpy.org`
architecture.
- [x] Replaced the standalone HTML landing page with one Quarto source site.
-- [x] Added Home, About, Blog, News & Events, and Community source pages.
-- [x] Added the requested navigation and authoritative external links.
+- [x] Converted the QMCPy-only prototype into an umbrella QMCSoftware site.
+- [x] Added Software pages for QMCPy, QMCToolsCL, QuasiMC.jl, and LDData.
+- [x] Added a Publications prototype and organization-wide navigation.
+- [x] Migrated and revised “Why Add Q to MC?” as a living article, preserving
+ its mathematical explanation, figures, captions, and authorship while adding
+ qualified convergence and practical-use guidance.
+- [x] Added a sourced 2026 SIAM Fellow news item.
+- [x] Added a hand-written featured publication and a one-record YAML catalog
+ convention for ordinary publications.
+- [x] Documented the separation between the broad AcademicLib registry,
+ website-curated publication records, and blog-local citations; catalog
+ display order no longer depends on YAML record order.
+- [x] Added working Blog, News & Events, and Publications listings.
+- [x] Preserved Home, About, Blog, News & Events, and Community pages.
+- [x] Added authoritative project documentation and repository links.
- [x] Added a restrained responsive visual foundation.
-- [x] Integrated the existing QMCPy logo in the navbar and homepage hero with
- responsive sizing and accessible alternative text.
+- [x] Retained the QMCPy logo asset for possible project-specific use while
+ removing it from organization-level branding.
- [x] Added GitHub Actions rendering and `gh-pages` publication with explicit
`CNAME` preservation.
- [x] Added repository guidance, roadmap, ignore rules, and local instructions.
-- [x] Rendered locally and inspected the generated site structure and links.
+- [x] Rendered the complete 13-page site and verified local link targets and
+ rendered `CNAME` preservation.
## Underway
@@ -24,16 +38,21 @@
## Next recommended task
-- [ ] Review the rendered prototype with QMCPy collaborators and approve the
- visual direction and public copy before adding content or migrating posts.
+- [ ] Review the rendered umbrella prototype with QMCSoftware collaborators and
+ approve the visual direction and public copy before adding content or
+ migrating posts.
## Decisions and scope boundaries
-- Technical documentation stays in `QMCSoftware` and continues to use MkDocs.
-- The primary GitHub link targets `QMCSoftware/QMCSoftware`; community links
- may also point to maintained pages within that project.
-- The existing 18 blog posts are not imported in this prototype.
-- No Reveal.js project, repository rename, speculative infrastructure, or
- Python dependency file is included.
+- Technical documentation stays with each software project.
+- The primary GitHub link targets the QMCSoftware organization; project pages
+ link to their respective repositories and documentation.
+- The site continues to use `qmcpy.org` temporarily; DNS, Pages settings, and
+ redirects have not been changed.
+- One earlier blog post is migrated as a pattern; the remainder of the archive
+ is outside the current prototype.
+- No Reveal.js project, speculative infrastructure, or Python dependency file
+ is included.
- Generated `_site/` output remains outside the `main` branch.
-- No commit or push is part of the current work.
+- The completed prototype is maintained on a review branch until it is approved
+ for merge into `main`.
diff --git a/_quarto.yml b/_quarto.yml
index 9cfb5a2..cbcdc13 100644
--- a/_quarto.yml
+++ b/_quarto.yml
@@ -6,34 +6,37 @@ project:
- "blog/**/*.qmd"
- "news/**/*.qmd"
- "community/**/*.qmd"
+ - "software/**/*.qmd"
+ - "publications/**/*.qmd"
resources:
- CNAME
- assets/**
+ - data/**
website:
- title: "QMCPy"
+ title: "QMCSoftware"
site-url: https://qmcpy.org
- description: "Public website for QMCPy, quasi-Monte Carlo community software in Python."
+ description: "Open-source software and shared resources for quasi-Monte Carlo methods."
navbar:
background: "#073b4c"
- logo: assets/logos/qmcpy_logo.png
- logo-alt: "QMCPy logo"
left:
- href: index.qmd
text: Home
+ - href: software/index.qmd
+ text: Software
- href: blog/index.qmd
text: Blog
+ - href: publications/index.qmd
+ text: Publications
- href: news/index.qmd
text: News & Events
- href: community/index.qmd
text: Community
right:
- - href: https://qmcsoftware.github.io/QMCSoftware/
- text: Documentation
- - href: https://github.com/QMCSoftware/QMCSoftware
+ - href: https://github.com/QMCSoftware
text: GitHub
page-footer:
- left: "QMCPy — quasi-Monte Carlo community software in Python"
+ left: "QMCSoftware — open-source quasi-Monte Carlo software"
right:
- href: about.qmd
text: About this site
diff --git a/about.qmd b/about.qmd
index fc2fc1c..aeffed4 100644
--- a/about.qmd
+++ b/about.qmd
@@ -1,13 +1,16 @@
---
title: "About this site"
-description: "How the QMCPy public website relates to the technical documentation."
+description: "How the QMCSoftware public website relates to its software projects."
---
-This site is the public-facing home for QMCPy. It is intended to make project
-news, community information, and learning pathways easier to find.
+This site is the public-facing home for the QMCSoftware organization. It
+provides a shared entry point for the organization's open-source quasi-Monte
+Carlo software, publications, news, events, and community information.
-The detailed package documentation is maintained separately in the
-[QMCSoftware repository](https://github.com/QMCSoftware/QMCSoftware) and
-published with MkDocs at the
-[QMCPy documentation site](https://qmcsoftware.github.io/QMCSoftware/). This
-website links to that documentation rather than duplicating it.
+Detailed technical documentation remains with each
+[software project](software/index.qmd). This website links to those maintained
+sources rather than duplicating them.
+
+The umbrella prototype is temporarily served at `qmcpy.org` so that the
+existing deployment continues to work while the organization decides its
+long-term domain and redirect strategy.
diff --git a/blog/index.qmd b/blog/index.qmd
index b950619..3447428 100644
--- a/blog/index.qmd
+++ b/blog/index.qmd
@@ -1,11 +1,23 @@
---
title: "Blog"
-description: "QMCPy articles and project updates."
+description: "Articles and project updates from QMCSoftware."
+listing:
+ contents:
+ - "*/index.qmd"
+ type: default
+ sort: "date desc"
+ fields:
+ - image
+ - date
+ - title
+ - author
+ - description
+ - categories
---
-The QMCPy blog archive will be added in a later migration phase. Existing posts
-have not been copied or converted for this prototype.
+The QMCSoftware blog shares accessible introductions, project updates, and
+technical perspectives from across the community.
-In the meantime, visit the
-[technical documentation](https://qmcsoftware.github.io/QMCSoftware/) for
-guides and examples.
+This first migrated article establishes the pattern for bringing the earlier
+QMCPy blog archive into the umbrella site. Additional posts will be reviewed
+and migrated incrementally.
diff --git a/blog/why-add-q-to-mc/figures/iid_uniform_pts.png b/blog/why-add-q-to-mc/figures/iid_uniform_pts.png
new file mode 100644
index 0000000..c82f010
Binary files /dev/null and b/blog/why-add-q-to-mc/figures/iid_uniform_pts.png differ
diff --git a/blog/why-add-q-to-mc/figures/lattice_pts.png b/blog/why-add-q-to-mc/figures/lattice_pts.png
new file mode 100644
index 0000000..0bb525e
Binary files /dev/null and b/blog/why-add-q-to-mc/figures/lattice_pts.png differ
diff --git a/blog/why-add-q-to-mc/index.qmd b/blog/why-add-q-to-mc/index.qmd
new file mode 100644
index 0000000..f0fa39c
--- /dev/null
+++ b/blog/why-add-q-to-mc/index.qmd
@@ -0,0 +1,85 @@
+---
+title: "Why Add Q to MC?"
+author: "Fred J. Hickernell"
+date: 2026-07-29
+date-format: "MMMM D, YYYY"
+language:
+ title-block-published: "Last revised"
+description: "Why more evenly spread quasi-Monte Carlo points can improve numerical integration over IID sampling."
+categories:
+ - Quasi-Monte Carlo
+ - Monte Carlo
+ - QMCPy
+image: figures/lattice_pts.png
+---
+
+This post motivates quasi-Monte Carlo by comparing IID sampling with more evenly spread points for numerical integration.
+
+Quasi-Monte Carlo (QMC) methods can sometimes speed up simple Monte Carlo (MC) calculations by orders of magnitude. What makes them work so well?
+
+MC methods use computer-generated random numbers to generate various scenarios. When computing financial risk, the scenarios may be possible financial market outcomes. When assessing the resiliency of the power grid, the scenarios represent power demand and power grid failures under different future weather conditions.
+
+If $Y$ is the quantity of interest, e.g., profit (or loss) one month from now, and $Y_1, \ldots, Y_n$ are its possible values under the possible scenarios generated by a stochastic model, then we can estimate the *mean* or average quantity of interest from these computer-generated data as follows
+
+$$
+\mu = \mathbb{E}(Y) \approx \frac{1}{n} \bigl ( Y_1 + \cdots + Y_n \bigr) = \hat{\mu}_n.
+$$
+
+The sample mean based on $n$ scenarios approximates the true mean, which is based on an infinite number of scenarios.
+
+Simple MC chooses $Y_1, \ldots, Y_n$ to be independent and identically distributed (IID). Intuitively, this means that any $Y_i$ bears no relationship to any other $Y_k$, and all $Y_i$ come from the same probability distribution or scenario-generating model.
+
+This is good, but we can do better. By choosing $Y_1, \ldots, Y_n$ to be more representative of the infinite number of possible scenarios, we can make $\hat{\mu}$ a better estimate of the mean, $\mu$.
+
+The model that generates $Y$ is often written as $Y= f(\boldsymbol{X})$, where $\boldsymbol{X}$ is a uniformly distributed vector in the $d$-dimensional unit cube $[0,1]^d$. If $Y_i = f(\boldsymbol{X}_i)$ for IID $\boldsymbol{X}_i$, then we have simple MC. Figure 1 shows a picture of IID uniform $\boldsymbol{X}_1, \ldots, \boldsymbol{X}_{64}$ in two dimensions. Because the points are IID, there are gaps and clusters.
+
+
+
+ Figure 1: 64 IID standard uniform points in 2 dimensions.
+
+
+Figure 2 gives an example of $\boldsymbol{X}_1, \ldots, \boldsymbol{X}_{64}$ used in QMC methods. These points are called integration lattice points. Note that they more evenly fill the square than the IID points in Figure 1.
+
+
+
+ Figure 2: 64 shifted lattice points in 2 dimensions.
+
+
+Because these QMC points are more even, they can sometimes reduce integration error much faster than IID sampling. In favorable cases, one may observe an error rate near $\mathcal{O}(n^{-1})$, while the typical statistical error for simple MC decreases like $\mathcal{O}(n^{-1/2})$. The rate $\mathcal{O}(n^{-1})$ is an illustration, not a guarantee: actual convergence depends on both the integrand and the QMC construction. That potential improvement is the reason to add Q to MC.
+
+QMCPy [1] is our open source Python library that implements QMC methods, including point generators, cubatures, and stopping criteria. A tutorial on QMC is given in [2]. This blog introduces you to QMC and QMCPy.
+
+## When does QMC help?
+
+More evenly distributed points can substantially improve integration accuracy,
+but the size of the improvement depends on the problem. QMC tends to work best
+when the integrand is sufficiently smooth or regular and when most of its
+variation is driven by a relatively small number of important variables or
+low-order interactions—what is often called low *effective dimension*.
+
+How a problem is formulated also matters. Transformations, the ordering of
+variables, and other modeling choices can make important structure easier or
+harder for a QMC rule to exploit. The low-discrepancy point set should suit the
+problem, and randomization is useful when repeated estimates are needed to
+assess error. Thus, neither even spacing nor a nominal dimension alone
+determines the convergence rate.
+
+## How QMCPy makes QMC practical
+
+QMCPy brings the pieces of a QMC computation into one framework. It provides:
+
+- low-discrepancy sequences and lattices,
+- randomized constructions,
+- transformations for probability distributions,
+- integrands and applications, and
+- stopping criteria and error assessment.
+
+A future revision or companion post will include a short, runnable QMCPy
+comparison of IID Monte Carlo and randomized QMC.
+
+## References
+
+1. S.-C. T. Choi, F. J. Hickernell, R. Jagadeeswaran, A. Jain, and A. Sorokin, QMCPy: a quasi-Monte Carlo Python library (version 2.3), DOI: 10.5281/zenodo.20297697
+
+2. F. J. Hickernell, N. Kirk, and A. G. Sorokin, Quasi-Monte Carlo methods: what, why, and how?
+In C. Lemieux and B. Feng, editors, Monte Carlo and quasi-Monte Carlo methods: MCQMC, Waterloo, Canada, August 2024, Springer, Cham, 2026
diff --git a/community/index.qmd b/community/index.qmd
index e6d8080..73a4db2 100644
--- a/community/index.qmd
+++ b/community/index.qmd
@@ -1,14 +1,16 @@
---
title: "Community"
-description: "Ways to learn about and contribute to QMCPy."
+description: "Ways to learn about and contribute to QMCSoftware projects."
---
-QMCPy is developed in the open. For the current contributor information,
-project governance, and acknowledgements, use these maintained resources:
+QMCSoftware projects are developed in the open. Each project maintains its own
+technical and contributor information:
+- [QMCSoftware organization on GitHub](https://github.com/QMCSoftware)
- [QMCPy community documentation](https://qmcsoftware.github.io/QMCSoftware/community/)
-- [Contributing guidelines](https://qmcsoftware.github.io/QMCSoftware/CONTRIBUTING/)
-- [QMCSoftware repository](https://github.com/QMCSoftware/QMCSoftware)
+- [QMCPy contributing guidelines](https://qmcsoftware.github.io/QMCSoftware/CONTRIBUTING/)
+- [QMCToolsCL contributing guidelines](https://github.com/QMCSoftware/QMCToolsCL/blob/main/CONTRIBUTING.md)
+- [QuasiMC.jl contributing guidelines](https://github.com/QMCSoftware/QuasiMC.jl/blob/develop/CONTRIBUTING.md)
Additional public community content will be developed after collaborator
review.
diff --git a/data/publications.yml b/data/publications.yml
new file mode 100644
index 0000000..92ae213
--- /dev/null
+++ b/data/publications.yml
@@ -0,0 +1,23 @@
+- key: hickirsor_2026_qmc_tutorial
+ cite: HKS26
+ short: "Hickernell, Kirk, Sorokin (2026)"
+ title: "Quasi-Monte Carlo Methods: What, Why, and How?"
+ authors:
+ - Fred J. Hickernell
+ - Nathan Kirk
+ - Aleksei G. Sorokin
+ year: 2026
+ type: inproceedings
+ venue: "Monte Carlo and Quasi-Monte Carlo 2024"
+ series: "Springer Proceedings in Mathematics & Statistics"
+ volume: 522
+ pages: "3–40"
+ doi: "10.1007/978-3-032-10590-5_1"
+ doi_url: "https://doi.org/10.1007/978-3-032-10590-5_1"
+ arxiv: "arXiv:2502.03644"
+ arxiv_url: "https://arxiv.org/abs/2502.03644"
+ publisher_url: "https://link.springer.com/chapter/10.1007/978-3-032-10590-5_1"
+ tags: [qmc, tutorial]
+ related_projects: [QMCPy, QuasiMC.jl]
+ featured: true
+ description: "A tutorial on what quasi-Monte Carlo is, why it can improve upon ordinary Monte Carlo, and how problems can be formulated to benefit from QMC."
diff --git a/index.qmd b/index.qmd
index 041760d..aaa1dc2 100644
--- a/index.qmd
+++ b/index.qmd
@@ -5,52 +5,96 @@ toc: false
---
::: {.hero}
-:::: {.grid .align-items-center}
-::: {.g-col-12 .g-col-lg-8 .hero-copy}
-## Quasi-Monte Carlo methods in Python (QMCPy)
+::: {.hero-copy}
+## Open software for quasi-Monte Carlo
-An open-source Python library for quasi-Monte Carlo sampling and integration
+QMCSoftware brings together open-source projects for quasi-Monte Carlo methods:
+libraries for Python and Julia, sequence generators in OpenCL and C, and shared
+low-discrepancy construction data.
:::{.hero-actions}
-[Read the documentation](https://qmcsoftware.github.io/QMCSoftware/){.btn .btn-primary}
-[View QMCPy on GitHub](https://github.com/QMCSoftware/QMCSoftware){.btn .btn-outline-primary}
+[Explore the software](software/index.qmd){.btn .btn-primary}
+[Visit QMCSoftware on GitHub](https://github.com/QMCSoftware){.btn .btn-outline-primary}
:::
:::
+:::
+
+## The QMCSoftware family
+
+:::: {.software-grid}
+::: {.software-card}
+### QMCPy
-::: {.g-col-12 .g-col-lg-4 .hero-mark}
-
+Quasi-Monte Carlo community software in Python, with modular point generators,
+measure transforms, integrands, and adaptive stopping criteria.
+
+[Explore QMCPy →](software/qmcpy.qmd)
:::
-::::
+
+::: {.software-card}
+### QMCToolsCL
+
+Quasi-Monte Carlo sequence generators implemented in OpenCL and C.
+
+[Explore QMCToolsCL →](software/qmctoolscl.qmd)
:::
-## Explore QMCPy
+::: {.software-card}
+### QuasiMC.jl
+
+A Julia port of QMCPy for quasi-Monte Carlo point generation, measure
+transforms, and adaptive high-dimensional integration.
-:::: {.grid}
-::: {.g-col-12 .g-col-md-4}
-### Learn
+[Explore QuasiMC.jl →](software/quasimc-jl.qmd)
+:::
+
+::: {.software-card}
+### LDData
-Use the existing technical documentation for installation, examples, demos,
-and the package reference.
+Low-discrepancy generating vectors and matrices, together with proposed simple
+text formats for sharing them.
-[Open the documentation →](https://qmcsoftware.github.io/QMCSoftware/)
+[Explore LDData →](software/lddata.qmd)
:::
+::::
-::: {.g-col-12 .g-col-md-4}
-### Follow
+## Explore the community
-The [blog](blog/index.qmd) and [news and events](news/index.qmd) sections will
-collect project updates as the site develops.
+:::: {.pathway-grid}
+::: {.pathway-card}
+### Blog
+
+Articles and updates from across the QMCSoftware projects.
+
+[Read the blog →](blog/index.qmd)
+:::
+
+::: {.pathway-card}
+### Publications
+
+A developing guide to publications and software citation resources.
+
+[Browse publications →](publications/index.qmd)
:::
-::: {.g-col-12 .g-col-md-4}
-### Participate
+::: {.pathway-card}
+### News & Events
+
+Confirmed announcements, releases, talks, workshops, and events.
+
+[See news and events →](news/index.qmd)
+:::
+
+::: {.pathway-card}
+### Community
+
+Find maintained contribution resources and ways to connect with the projects.
-Visit the [community page](community/index.qmd) for established ways to learn
-about and contribute to the project.
+[Visit the community page →](community/index.qmd)
:::
::::
::: {.callout-note appearance="simple"}
-This public website is an early prototype. QMCPy's maintained technical
-documentation continues to live at the documentation link above.
+This umbrella website is an early prototype. Technical documentation remains
+with each software project and is linked from its page.
:::
diff --git a/news/fred-hickernell-siam-fellow/index.qmd b/news/fred-hickernell-siam-fellow/index.qmd
new file mode 100644
index 0000000..b53c3a0
--- /dev/null
+++ b/news/fred-hickernell-siam-fellow/index.qmd
@@ -0,0 +1,25 @@
+---
+title: "Fred Hickernell Named a 2026 SIAM Fellow"
+date: 2026-04-27
+description: "Illinois Tech professor recognized for innovations in high-dimensional integration and approximation and for scientific leadership."
+categories:
+ - Recognition
+ - Community
+---
+
+Illinois Tech Professor Fred Hickernell was named to the 2026 class of Fellows
+of the Society for Industrial and Applied Mathematics (SIAM). The distinction
+recognizes his mathematical and statistical innovations in high-dimensional
+integration and approximation, as well as his scientific leadership.
+
+The Illinois Tech article also highlights the open-source software developed by
+Hickernell's research group and collaborators, including
+[QMCPy](../../software/qmcpy.qmd), which makes quasi-Monte Carlo methods
+available in Python.
+
+::: {.callout-note appearance="simple"}
+**Source:** Illinois Institute of Technology, April 27, 2026.
+
+[Read the original Illinois Tech
+article](https://www.iit.edu/news/applied-mathematics-professor-honored-siam-fellow){.btn .btn-primary}
+:::
diff --git a/news/index.qmd b/news/index.qmd
index c3d77b9..2a65ef3 100644
--- a/news/index.qmd
+++ b/news/index.qmd
@@ -1,7 +1,17 @@
---
title: "News & Events"
-description: "News and events from the QMCPy project."
+description: "News and events from the QMCSoftware projects."
+listing:
+ contents:
+ - "*/index.qmd"
+ type: default
+ sort: "date desc"
+ fields:
+ - date
+ - title
+ - description
+ - categories
---
-This section is ready for confirmed QMCPy announcements and event information.
-No placeholder stories or dates have been added.
+Confirmed announcements, releases, talks, workshops, and events from the
+QMCSoftware community.
diff --git a/publications/README.md b/publications/README.md
new file mode 100644
index 0000000..fc77c29
--- /dev/null
+++ b/publications/README.md
@@ -0,0 +1,58 @@
+# Publication data convention
+
+The website uses three deliberately separate citation conventions:
+
+1. Blog citations remain ordinary, hard-coded Markdown within each blog post.
+ Do not create or use a shared BibTeX file for blogs at this stage.
+2. `HickernellAcademicLib/classlib/quarto/metadata/hickernell-papers.yml`
+ remains the broad shared scholarly reference registry.
+3. This repository's `data/publications.yml` is the website-owned, curated
+ catalog. It contains only publications selected for the QMCSoftware
+ website.
+
+Relevant AcademicLib records may be copied manually into the website catalog.
+Before adding them, verify and correct the bibliographic metadata and add
+website-specific fields such as an original summary, related projects, tags,
+and featured status. The website does not read from AcademicLib at build time,
+and no synchronization machinery is part of this prototype.
+
+Quarto reads `data/publications.yml` directly and formats the general catalog
+on `publications/index.qmd` with `publications/catalog.ejs.md`. Display order is
+independent of the records' physical YAML order: publications are sorted by
+year descending and then title ascending within each year. The template groups
+ordinary publications under year headings.
+
+## Record convention
+
+Each record should have a stable key, preferably matching its AcademicLib key
+when one exists. It should include:
+
+- verified bibliographic fields, an `authors` list, and authoritative URLs;
+- tags and related QMCSoftware projects;
+- an optional `featured` status;
+- an original `description` used as the website's short summary.
+
+An ordinary publication needs only one YAML record. Do not add a slug, rendered
+path, publication folder, or separate QMD page. The custom catalog template
+prints the title, authors, year, venue, volume and pages when present, links,
+tags, and related projects directly on the Publications page.
+
+The introductory tutorial is written by hand as the featured item on
+`publications/index.qmd`. Its YAML record remains for catalog consistency and
+has `featured: true`, so it is omitted from the general catalog and is not
+displayed twice.
+
+## Contribution workflow
+
+1. Add one verified record to `data/publications.yml`.
+2. Render the complete site with `quarto render`.
+3. Confirm the publication appears correctly on the Publications page.
+
+That single YAML edit is the complete source change required for an ordinary
+publication.
+
+The AcademicLib record `hickirsor_2026_qmc_tutorial` should later be enriched
+with the website's structured fields and corrected to replace its current
+arXiv DOI with the final Springer DOI,
+`10.1007/978-3-032-10590-5_1`. AcademicLib is not modified as part of this
+website task.
diff --git a/publications/catalog.ejs.md b/publications/catalog.ejs.md
new file mode 100644
index 0000000..717e76f
--- /dev/null
+++ b/publications/catalog.ejs.md
@@ -0,0 +1,40 @@
+::: {.publication-catalog}
+
+<% let currentYear = null; %>
+<% for (const item of items) { %>
+
+<% if (item.year !== currentYear) { currentYear = item.year; %>
+### <%= item.year %>
+<% } %>
+
+::: {.publication-item}
+
+#### <%= item.title %>
+
+**<%= item.authors.join(", ") %>**
+
+*<%= item.venue %>*<% if (item.series) { %>, <%= item.series %><% } %><% if (item.volume) { %>, volume <%= item.volume %><% } %><% if (item.pages) { %>, pages <%= item.pages %><% } %>, <%= item.year %>.
+
+<% if (item.doi_url || item.publisher_url || item.arxiv_url) { %>
+:::{.project-links}
+<% if (item.doi_url) { %>[DOI](<%= item.doi_url %>){.btn .btn-primary}<% } %>
+<% if (item.publisher_url) { %>[Publisher](<%= item.publisher_url %>){.btn .btn-outline-primary}<% } %>
+<% if (item.arxiv_url) { %>[arXiv](<%= item.arxiv_url %>){.btn .btn-outline-primary}<% } %>
+:::
+<% } %>
+
+<%= item.description %>
+
+<% if (item.tags && item.tags.length) { %>
+**Tags:** <%= item.tags.join(", ") %>
+<% } %>
+
+<% if (item.related_projects && item.related_projects.length) { %>
+**Related projects:** <%= item.related_projects.join(", ") %>
+<% } %>
+
+:::
+
+<% } %>
+
+:::
diff --git a/publications/index.qmd b/publications/index.qmd
new file mode 100644
index 0000000..3a3c199
--- /dev/null
+++ b/publications/index.qmd
@@ -0,0 +1,67 @@
+---
+title: "Publications"
+description: "Publication and citation resources for QMCSoftware projects."
+listing:
+ id: publication-catalog
+ contents:
+ - "../data/publications.yml"
+ template: catalog.ejs.md
+ sort:
+ - "year desc"
+ - "title asc"
+ exclude:
+ featured: true
+ sort-ui: false
+ filter-ui: false
+---
+
+This section collects reviewed publications connected with QMCSoftware and
+quasi-Monte Carlo methods. It will grow incrementally rather than attempting
+to infer a complete bibliography.
+
+Each item has a short, original description and links to authoritative
+publication records or accessible preprints. Structured citation metadata is
+kept locally in [`data/publications.yml`](../data/publications.yml), which
+drives the general catalog below.
+
+## Featured introduction
+
+::: {.featured-publication}
+### Quasi-Monte Carlo Methods: What, Why, and How?
+
+**Fred J. Hickernell, Nathan Kirk, and Aleksei G. Sorokin**
+
+*Monte Carlo and Quasi-Monte Carlo 2024*, Springer Proceedings in Mathematics
+& Statistics, volume 522, pages 3–40, 2026.
+
+:::{.project-links}
+[DOI](https://doi.org/10.1007/978-3-032-10590-5_1){.btn .btn-primary}
+[Springer](https://link.springer.com/chapter/10.1007/978-3-032-10590-5_1){.btn .btn-outline-primary}
+[arXiv](https://arxiv.org/abs/2502.03644){.btn .btn-outline-primary}
+:::
+
+This paper is a tutorial on what quasi-Monte Carlo is, why it can improve upon
+ordinary Monte Carlo, and how problems can be formulated to benefit from QMC.
+:::
+
+## Publication catalog
+
+Additional publications will appear here as verified records are added to the
+YAML catalog.
+
+::: {#publication-catalog}
+:::
+
+## Scope
+
+The collection may include publications that describe QMCSoftware projects,
+develop methods implemented in them, or demonstrate relevant applications.
+All metadata should be checked against the publisher or another authoritative
+record before publication.
+
+## Software citation resources
+
+- [QMCPy citation file](https://github.com/QMCSoftware/QMCSoftware/blob/main/cite_qmcpy.bib)
+- [QuasiMC.jl citation file](https://github.com/QMCSoftware/QuasiMC.jl/blob/develop/cite_quasimcjl.bib)
+- [QMCToolsCL repository](https://github.com/QMCSoftware/QMCToolsCL)
+- [LDData repository](https://github.com/QMCSoftware/LDData)
diff --git a/software/index.qmd b/software/index.qmd
new file mode 100644
index 0000000..428617f
--- /dev/null
+++ b/software/index.qmd
@@ -0,0 +1,48 @@
+---
+title: "Software"
+description: "Open-source quasi-Monte Carlo software and data from QMCSoftware."
+---
+
+QMCSoftware brings together projects that support quasi-Monte Carlo work
+across programming languages, sequence generation, numerical integration, and
+shared low-discrepancy construction data.
+
+:::: {.software-grid}
+::: {.software-card}
+### QMCPy
+
+Quasi-Monte Carlo community software in Python, with modular point generators,
+measure transforms, integrands, and adaptive stopping criteria.
+
+[Explore QMCPy →](qmcpy.qmd)
+:::
+
+::: {.software-card}
+### QMCToolsCL
+
+Quasi-Monte Carlo sequence generators implemented in OpenCL and C.
+
+[Explore QMCToolsCL →](qmctoolscl.qmd)
+:::
+
+::: {.software-card}
+### QuasiMC.jl
+
+A Julia port of QMCPy for quasi-Monte Carlo point generation, measure
+transforms, and adaptive high-dimensional integration.
+
+[Explore QuasiMC.jl →](quasimc-jl.qmd)
+:::
+
+::: {.software-card}
+### LDData
+
+Low-discrepancy generating vectors and matrices, together with proposed simple
+text formats for sharing them.
+
+[Explore LDData →](lddata.qmd)
+:::
+::::
+
+Technical details, installation instructions, and contribution guidance remain
+with each project and are linked from its page.
diff --git a/software/lddata.qmd b/software/lddata.qmd
new file mode 100644
index 0000000..486ac11
--- /dev/null
+++ b/software/lddata.qmd
@@ -0,0 +1,27 @@
+---
+title: "LDData"
+description: "Low-discrepancy generating vectors, matrices, and file formats."
+---
+
+::: {.project-summary}
+LDData collects low-discrepancy generating vectors and matrices and proposes
+standard text formats for describing lattice rules, polynomial lattice rules,
+digital nets, and Sobol' points.
+:::
+
+:::{.project-links}
+[GitHub repository](https://github.com/QMCSoftware/LDData){.btn .btn-primary}
+:::
+
+## What the project provides
+
+The project aims to make construction data straightforward to share and read
+across programming languages. Its README describes simple, relatively compact
+text formats with human-readable headers and no more than one data line per
+dimension.
+
+The repository is the maintained source for the proposed formats, examples,
+and data files.
+
+- [Format descriptions and data](https://github.com/QMCSoftware/LDData)
+- [Repository contents](https://github.com/QMCSoftware/LDData)
diff --git a/software/qmcpy.qmd b/software/qmcpy.qmd
new file mode 100644
index 0000000..f4abb32
--- /dev/null
+++ b/software/qmcpy.qmd
@@ -0,0 +1,33 @@
+---
+title: "QMCPy"
+description: "Quasi-Monte Carlo community software in Python."
+---
+
+::: {.project-summary}
+QMCPy is a Python framework for quasi-Monte Carlo sampling and integration. Its
+plug-and-play components cover discrete distributions, measure transforms,
+integrands, and stopping criteria.
+:::
+
+:::{.project-links}
+[Documentation](https://qmcsoftware.github.io/QMCSoftware/){.btn .btn-primary}
+[GitHub repository](https://github.com/QMCSoftware/QMCSoftware){.btn .btn-outline-primary}
+:::
+
+## What the project provides
+
+QMCPy is designed around the interacting components of a quasi-Monte Carlo
+integration problem. The shared interfaces allow developers to add sampling
+schemes, integrands, and stopping criteria, while practitioners can combine
+implemented components for applications.
+
+The maintained documentation includes installation instructions, a package
+reference with doctests, mathematical descriptions, and rendered example
+notebooks.
+
+## Start with the maintained resources
+
+- [QMCPy documentation](https://qmcsoftware.github.io/QMCSoftware/)
+- [Installation and quick-start resources](https://qmcsoftware.github.io/QMCSoftware/)
+- [Contributing guidelines](https://qmcsoftware.github.io/QMCSoftware/CONTRIBUTING/)
+- [Citation information](https://github.com/QMCSoftware/QMCSoftware/blob/main/cite_qmcpy.bib)
diff --git a/software/qmctoolscl.qmd b/software/qmctoolscl.qmd
new file mode 100644
index 0000000..1ec8f50
--- /dev/null
+++ b/software/qmctoolscl.qmd
@@ -0,0 +1,24 @@
+---
+title: "QMCToolsCL"
+description: "Quasi-Monte Carlo sequence generators in OpenCL and C."
+---
+
+::: {.project-summary}
+QMCToolsCL provides quasi-Monte Carlo sequence generators implemented in
+OpenCL and C.
+:::
+
+:::{.project-links}
+[Documentation](https://qmcsoftware.github.io/QMCToolsCL/){.btn .btn-primary}
+[GitHub repository](https://github.com/QMCSoftware/QMCToolsCL){.btn .btn-outline-primary}
+:::
+
+## Maintained resources
+
+The project's technical documentation and source repository are the
+authoritative places for supported generators, interfaces, installation, and
+development information.
+
+- [QMCToolsCL documentation](https://qmcsoftware.github.io/QMCToolsCL/)
+- [Source code](https://github.com/QMCSoftware/QMCToolsCL)
+- [Contributing guidelines](https://github.com/QMCSoftware/QMCToolsCL/blob/main/CONTRIBUTING.md)
diff --git a/software/quasimc-jl.qmd b/software/quasimc-jl.qmd
new file mode 100644
index 0000000..71e0833
--- /dev/null
+++ b/software/quasimc-jl.qmd
@@ -0,0 +1,32 @@
+---
+title: "QuasiMC.jl"
+description: "Quasi-Monte Carlo community software in Julia."
+---
+
+::: {.project-summary}
+QuasiMC.jl is a Julia port of QMCPy. It provides quasi-Monte Carlo point
+generators, measure transforms, integrands, and adaptive stopping criteria for
+high-dimensional numerical integration.
+:::
+
+:::{.project-links}
+[Documentation](https://qmcsoftware.github.io/QuasiMC.jl/){.btn .btn-primary}
+[GitHub repository](https://github.com/QMCSoftware/QuasiMC.jl){.btn .btn-outline-primary}
+:::
+
+## What the project provides
+
+QuasiMC.jl follows the same component model as QMCPy: a discrete distribution,
+a true measure, an integrand, and a stopping criterion. The repository
+describes these as plug-and-play implementations whose components compose
+naturally within the Julia library.
+
+The maintained documentation includes API references, doctests, and rendered
+demo notebooks.
+
+## Start with the maintained resources
+
+- [QuasiMC.jl documentation](https://qmcsoftware.github.io/QuasiMC.jl/)
+- [Source and installation instructions](https://github.com/QMCSoftware/QuasiMC.jl)
+- [Contributing guidelines](https://github.com/QMCSoftware/QuasiMC.jl/blob/develop/CONTRIBUTING.md)
+- [Citation information](https://github.com/QMCSoftware/QuasiMC.jl/blob/develop/cite_quasimcjl.bib)
diff --git a/styles/custom.scss b/styles/custom.scss
index 23959fd..12830e3 100644
--- a/styles/custom.scss
+++ b/styles/custom.scss
@@ -53,7 +53,7 @@ main.content {
}
.hero h2 {
- max-width: 16ch;
+ max-width: 18ch;
margin-top: 0;
font-size: clamp(2.2rem, 6vw, 4.25rem);
line-height: 1.05;
@@ -61,7 +61,7 @@ main.content {
}
.hero-copy > p {
- max-width: 48rem;
+ max-width: 54rem;
font-size: 1.375rem;
}
@@ -108,6 +108,82 @@ main.content {
margin-top: 0;
}
+.software-grid,
+.pathway-grid {
+ display: grid;
+ gap: 1.25rem;
+ margin: 1.5rem 0 2.75rem;
+}
+
+.software-grid {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+}
+
+.pathway-grid {
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+}
+
+.software-card,
+.pathway-card {
+ display: flex;
+ flex-direction: column;
+ padding: 1.5rem;
+ border: 1px solid rgba(7, 59, 76, 0.16);
+ border-radius: 0.75rem;
+ background: #ffffff;
+ box-shadow: 0 0.4rem 1.2rem rgba(7, 59, 76, 0.06);
+}
+
+.software-card {
+ border-top: 0.3rem solid #0b6e69;
+}
+
+.software-card h3,
+.pathway-card h3 {
+ margin-top: 0;
+}
+
+.software-card p:last-child,
+.pathway-card p:last-child {
+ margin-top: auto;
+ margin-bottom: 0;
+ padding-top: 0.5rem;
+ font-weight: 650;
+}
+
+.project-links {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.75rem;
+ margin: 1.5rem 0 2rem;
+}
+
+.project-summary {
+ padding: 1.25rem 1.5rem;
+ border-left: 0.3rem solid #0b6e69;
+ background: rgba(11, 110, 105, 0.06);
+}
+
+.featured-publication,
+.publication-item {
+ margin: 1.25rem 0 2rem;
+ padding: 1.5rem;
+ border: 1px solid rgba(7, 59, 76, 0.16);
+ border-radius: 0.75rem;
+ background: #ffffff;
+ box-shadow: 0 0.4rem 1.2rem rgba(7, 59, 76, 0.06);
+}
+
+.featured-publication {
+ border-top: 0.3rem solid #0b6e69;
+}
+
+.featured-publication h3,
+.publication-item h3,
+.publication-item h4 {
+ margin-top: 0;
+}
+
@media (max-width: 575.98px) {
.hero {
padding: 2rem 1.35rem;
@@ -125,4 +201,15 @@ main.content {
.hero-actions .btn {
width: 100%;
}
+
+ .software-grid,
+ .pathway-grid {
+ grid-template-columns: 1fr;
+ }
+}
+
+@media (min-width: 576px) and (max-width: 991.98px) {
+ .pathway-grid {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
}