Skip to content

New landing page design #119

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 80 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
f0feb32
first part of new landing page (#1)
simonsteiger Oct 22, 2024
606e0d1
Add code examples (#2)
simonsteiger Oct 23, 2024
1917b9d
Add news (#3)
simonsteiger Oct 25, 2024
05f9d6d
better alignment
simonsteiger Oct 25, 2024
c9897ce
add resources / "learn more" section
simonsteiger Oct 27, 2024
9f71dc3
Improved colours (#4)
simonsteiger Oct 28, 2024
1070b05
better navbar text contrast
simonsteiger Oct 28, 2024
805520e
Add SVG header (#5)
simonsteiger Oct 28, 2024
75f8b65
fix "learn more" hover text-deco
simonsteiger Oct 28, 2024
4d6dadb
style team page for dark mode
simonsteiger Oct 29, 2024
396b2fe
more relevant links at top of page
simonsteiger Nov 25, 2024
e225786
mirror gaussians and title
simonsteiger Nov 25, 2024
8c91941
add css for code in dark mode
simonsteiger Nov 25, 2024
beb1766
shorten footer for better fit on mobile
simonsteiger Nov 28, 2024
57a4285
underline links in footer
simonsteiger Nov 28, 2024
30aca92
responsive header size
simonsteiger Nov 28, 2024
93d130c
content placeholders on landing page
simonsteiger Nov 28, 2024
400c7cd
Apply suggestions from code review
simonsteiger Dec 5, 2024
36e1f6b
fix "logo" display by removing h1
simonsteiger Dec 15, 2024
cd61adb
_quarto.yml: comments rewritten
shravanngoswamii Apr 14, 2025
e8e2bf0
Turned HTML to Quarto Markdown and added _includes to keep the main p…
shravanngoswamii Apr 17, 2025
e9e14d5
moved news to _included & added News section sliding animation
shravanngoswamii Apr 18, 2025
c7eacc8
fix-merge-conflicts
shravanngoswamii May 29, 2025
4933d64
Improve news animation
shravanngoswamii May 29, 2025
4f11da4
removed new styles from this PR but added similar new theme in old fo…
shravanngoswamii Jun 9, 2025
9a549ae
Removed new styles of Simon, Updated tons of CSS to match new theme
shravanngoswamii Jun 9, 2025
c84674d
Merge branch 'main' of https://github.com/TuringLang/turinglang.githu…
shravanngoswamii Jun 9, 2025
f09f326
fixed search results color in dark mode
shravanngoswamii Jun 9, 2025
5c9a49e
Added citations and commented placeholder text
shravanngoswamii Jun 12, 2025
9d17561
fix new height & copy button css in dark mode
shravanngoswamii Jun 13, 2025
5e9b40e
Updated News section to have fixed height & updated landing page codes
shravanngoswamii Jun 16, 2025
b4a3dd6
added arrows for moving forward and backward in news
shravanngoswamii Jun 16, 2025
7f94990
Experiment another approach on news carousel
shravanngoswamii Jun 16, 2025
8718612
speeding news carousel
shravanngoswamii Jun 16, 2025
1fbe6fd
don't highlight tutorials button
penelopeysm Jun 18, 2025
107ef76
update placeholder text
penelopeysm Jun 18, 2025
37e92a1
move tutorial button
penelopeysm Jun 18, 2025
4da6b58
fix unclosed div
penelopeysm Jun 18, 2025
3c69714
fix buttons properly
penelopeysm Jun 18, 2025
9945107
polish text
penelopeysm Jun 18, 2025
3f8d59f
delete whatever i wrote
penelopeysm Jun 18, 2025
0855fc3
fix unclosed div etc
penelopeysm Jun 18, 2025
61ce38b
refresh news
shravanngoswamii Jun 22, 2025
c7eb5e6
Merge branch 'main' of https://github.com/TuringLang/turinglang.githu…
shravanngoswamii Jun 22, 2025
0425c64
using quarto listing for news carousel
shravanngoswamii Jun 22, 2025
fdea4b8
Updated news carousel
shravanngoswamii Jun 22, 2025
0075b73
Mouse scroll in news works fine now
shravanngoswamii Jun 22, 2025
d1a8435
Updated lot of things, yet to remove news section
shravanngoswamii Jun 22, 2025
ce8d857
fix urls
shravanngoswamii Jun 22, 2025
2794877
Removed news section, added brands, improvded citations and other parts
shravanngoswamii Jun 23, 2025
f75d89f
added brands id
shravanngoswamii Jun 23, 2025
1bebdd9
fix team theme in dark mode
shravanngoswamii Jun 24, 2025
f5b636b
trying custom page-layout
shravanngoswamii Jun 24, 2025
2aa49fd
added side-space
shravanngoswamii Jun 24, 2025
0c36f0a
fix libraries page in dark mode
shravanngoswamii Jun 25, 2025
b1e00fe
few more fixes
shravanngoswamii Jun 25, 2025
dcbb02d
brands text update
shravanngoswamii Jun 26, 2025
e041046
Add Alan Turing Institute Logo
shravanngoswamii Jul 4, 2025
74a39f8
fix ATI url
shravanngoswamii Jul 4, 2025
7fdc59c
Add maX width as suggested by @simonsteiger
shravanngoswamii Jul 5, 2025
573bc34
Add News and Tutorials on Landing Page
shravanngoswamii Jul 8, 2025
5003445
remove logo animation, add news and tuturials, add core packages, imp…
shravanngoswamii Jul 9, 2025
24873f3
Updated logo and Added New Logo in Header
shravanngoswamii Jul 10, 2025
1af1f29
add on hover border on all boxes
shravanngoswamii Jul 10, 2025
cf49551
fix colors in dark mode
shravanngoswamii Jul 10, 2025
eed4576
Add custom footer, improve citations, fix responsiveness, update them…
shravanngoswamii Jul 11, 2025
476c2ff
rewrite raw html in quarto markdown, update footer text, core package…
shravanngoswamii Jul 11, 2025
05c5043
update citation icons and footer text
shravanngoswamii Jul 11, 2025
621c12d
Add on hover tooltip for citation icons
shravanngoswamii Jul 11, 2025
f43d184
improve citations icon
shravanngoswamii Jul 11, 2025
c1e8c3b
Update header text
shravanngoswamii Jul 11, 2025
638b375
commit suggestions
shravanngoswamii Jul 11, 2025
d63b97e
apply suggestions
shravanngoswamii Jul 11, 2025
21d41b7
Minor Styling Fixes
shravanngoswamii Jul 11, 2025
d2cd2b6
save Cambridge University logo in assets
shravanngoswamii Jul 11, 2025
693c7fe
update .gitignore
shravanngoswamii Jul 11, 2025
f6c3f9b
dark mode news improvs
shravanngoswamii Jul 12, 2025
f491a60
update my photo in team page
shravanngoswamii Jul 12, 2025
5c5fde3
Merge branch 'main' of https://github.com/TuringLang/turinglang.githu…
shravanngoswamii Jul 12, 2025
6281b8d
latest newsletter on landing page
shravanngoswamii Jul 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 19 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@

*.tmp
*.aux
*.log
*.out
*.tex
Testing/
/*/*/jl_*/
.vscode
_freeze
_site
.quarto
/.quarto/
_site/
.venv
venv

404.html
site_libs
.DS_Store
index_files
digest.txt
52 changes: 52 additions & 0 deletions _includes/card-listing.ejs
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
```{=html}
<div class="unified-card-grid">
<% for (const item of items) { %>
<a href="<%- item.href ? item.href : item.path %>" class="unified-card box">
<div class="unified-card-body">
<h5 class="unified-card-title"><%- item.title %></h5>
<p class="unified-card-text"><%- item.description %></p>

<% if (item.category) { %>
<div class="unified-card-categories">
<% if (Array.isArray(item.category)) { %>
<% item.category.forEach(function(cat) { %>
<span class="category-tag"><%- cat %></span>
<% }); %>
<% } else { %>
<span class="category-tag"><%- item.category %></span>
<% } %>
</div>
<% } %>
</div>

<% if (item.author || item.date || item['reading-time']) { %>
<div class="unified-card-footer">
<div class="unified-card-meta">
<% if (item.author) { %>
<span class="unified-card-author">
<% if (Array.isArray(item.author)) { %>
<%= item.author.map(a => a.name || a).join(', ') %>
<% } else { %>
<%= item.author %>
<% } %>
</span>
<% } %>
<% if (item.date) { %>
<span class="unified-card-date">
<%= new Date(item.date).toLocaleDateString('en-US', {
year: 'numeric',
month: 'short',
day: 'numeric'
}) %>
</span>
<% } %>
</div>
<% if (item['reading-time']) { %>
<span class="unified-card-reading-time"><%- item['reading-time'] %></span>
<% } %>
</div>
<% } %>
</a>
<% } %>
</div>
```
221 changes: 221 additions & 0 deletions _includes/citation/cite.qmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,221 @@
```{=html}
<div class="citation-container">
<h3 id="cite" class="pb-1 text-center">Turing.jl is an <a href="https://github.com/TuringLang/Turing.jl/blob/main/LICENCE" class="turing-license-link"><code>MIT</code></a> Licensed Open Source Project</h3>
<p class="text-center">If you use Turing.jl in your research, please consider citing our papers.</p>

<ul id="citation-list" class="citation-list">
<!-- Citations will be dynamically injected here -->
</ul>
</div>

<style>
.citation-icon-btn[data-tooltip]:hover::after {
content: attr(data-tooltip);
position: absolute;
bottom: 108%;
left: 50%;
transform: translateX(-50%);
background-color: rgba(0, 0, 0, 0.85);
color: #fff;
padding: 6px 12px;
border-radius: 4px;
font-size: 13px;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
white-space: nowrap;
z-index: 9999;
opacity: 0;
visibility: hidden;
transition: opacity 0.2s ease, visibility 0.2s ease, transform 0.2s ease;
transform: translateX(-50%) translateY(5px);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}

.citation-icon-btn[data-tooltip]:hover::after {
opacity: 1;
visibility: visible;
transform: translateX(-50%) translateY(0);
}

.citation-icon-btn {
position: relative;
}
</style>

<script>
// DATA: Add new BibTeX entries here
const bibtexData = [
`@article{10.1145/3711897,
author = {Fjelde, Tor Erlend and Xu, Kai and Widmann, David and Tarek, Mohamed and Pfiffer, Cameron and Trapp, Martin and Axen, Seth D. and Sun, Xianda and Hauru, Markus and Yong, Penelope and Tebbutt, Will and Ghahramani, Zoubin and Ge, Hong},
title = {Turing.jl: a general-purpose probabilistic programming language},
year = {2025},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3711897},
doi = {10.1145/3711897},
abstract = {Probabilistic programming languages (PPLs) are becoming increasingly important in many scientific disciplines, such as economics, epidemiology, and biology, to extract meaning from sources of data while accounting for one's uncertainty. The key idea of probabilistic programming is to decouple inference and model specification, thus allowing the practitioner to approach their task at hand using Bayesian inference, without requiring extensive knowledge in programming or computational statistics. At the same time, the complexity of problem settings in which PPLs are employed is steadily increasing, both in terms of project size and model complexity, calling for more flexible and efficient systems. In this work, we describe Turing.jl, a general-purpose PPL, which is designed to be flexible, efficient, and easy to use. Turing.jl is built on top of the Julia programming language, which is known for its high performance and ease-of-use. We describe the design of Turing.jl, contextualizing it within different types of users and use cases, its key features, and how it can be used to solve a wide range of problems. We also provide a brief overview of the ecosystem around Turing.jl, including the different libraries and tools that can be used in conjunction with it. Finally, we provide a few examples of how Turing.jl can be used in practice.},
note = {Just Accepted},
journal = {ACM Trans. Probab. Mach. Learn.},
month = feb,
keywords = {Probabilistic Programming, Probabilistic Programming Languages, Probabilistic Inference, Bayesian Inference, Markov Chain Monte Carlo, Variational Inference, Sequential Monte Carlo, Uncertainty Quantification, Modeling Methodologies, Latent Variable Models, Maximum a Posteriori Modeling, Software Libraries and Repositories, Bayesian Computation, Variational Methods, Sequential Monte Carlo Methods}
}`,
`@InProceedings{pmlr-v84-ge18b,
title = {Turing: A Language for Flexible Probabilistic Inference},
author = {Ge, Hong and Xu, Kai and Ghahramani, Zoubin},
booktitle = {Proceedings of the Twenty-First International Conference on Artificial Intelligence and Statistics},
pages = {1682--1690},
year = {2018},
editor = {Storkey, Amos and Perez-Cruz, Fernando},
volume = {84},
series = {Proceedings of Machine Learning Research},
month = {09--11 Apr},
publisher = {PMLR},
pdf = {http://proceedings.mlr.press/v84/ge18b/ge18b.pdf},
url = {https://proceedings.mlr.press/v84/ge18b.html},
abstract = {Probabilistic programming promises to simplify and democratize probabilistic machine learning, but successful probabilistic programming systems require flexible, generic and efficient inference engines. In this work, we present a system called Turing for building MCMC algorithms for probabilistic programming inference. Turing has a very simple syntax and makes full use of the numerical capabilities in the Julia programming language, including all implemented probability distributions, and automatic differentiation. Turing supports a wide range of popular Monte Carlo algorithms, including Hamiltonian Monte Carlo (HMC), HMC with No-U-Turns (NUTS), Gibbs sampling, sequential Monte Carlo (SMC), and several particle MCMC (PMCMC) samplers. Most importantly, Turing inference is composable: it combines MCMC operations on subsets of variables, for example using a combination of an HMC engine and a particle Gibbs (PG) engine. We explore several combinations of inference methods with the aim of finding approaches that are both efficient and universal, i.e. applicable to arbitrary probabilistic models. NUTS—a popular variant of HMC that adapts Hamiltonian simulation path length automatically, although quite powerful for exploring differentiable target distributions, is however not universal. We identify some failure modes for the NUTS engine, and demonstrate that composition of PG (for discrete variables) and NUTS (for continuous variables) can be useful when the NUTS engine is either not applicable, or simply does not work well. Our aim is to present Turing and its composable inference engines to the world and encourage other researchers to build on this system to help advance the field of probabilistic machine learning.}
}`
];

/**
* A BibTeX parser.
* Extracts key-value pairs from a BibTeX string.
* @param {string} bibtex - The raw BibTeX string.
* @returns {object} - An object with parsed data.
*/
function parseBibtex(bibtex) {
const data = { raw: bibtex };
const regex = /(\w+)\s*=\s*[\{"']([^"'}]+)[\}"']/g;
let match;
while ((match = regex.exec(bibtex)) !== null) {
data[match[1].toLowerCase()] = match[2];
}
return data;
}

/**
* Creates an HTML string for a single citation entry.
* @param {object} bibData - The parsed BibTeX data.
* @returns {string} - The HTML string for the list item.
*/
function generateCitationHTML(bibData) {
const { author, title, journal, booktitle, year, note, url, doi, raw } = bibData;

let publicationInfo = '';
if (journal) {
publicationInfo += `<em>${journal}</em>.`;
} else if (booktitle) {
publicationInfo += `In <em>${booktitle}</em>.`;
}
if (note) {
publicationInfo += ` ${note}.`;
}

const viewUrl = url || (doi ? `https://doi.org/${doi}` : '#');

// The author string is now used directly from the bibtex data without formatting.
const authorsFormatted = author || 'N/A';

return `
<li class="citation-entry box">
<div class="citation-content">
<p class="citation-text">
${authorsFormatted} (${year}). <span class="citation-title">${title}.</span> ${publicationInfo}
</p>
</div>
<div class="citation-actions">
<a href="${viewUrl}" target="_blank" rel="noopener noreferrer" class="citation-icon-btn" aria-label="View Paper: ${title}" title="View Paper" data-tooltip="View Paper">
<i class="bi bi-box-arrow-up-right"></i>
</a>
<button class="citation-icon-btn copy-bibtex-btn" aria-label="Copy BibTeX for ${title}" title="Copy BibTeX" data-tooltip="Copy BibTeX">
<!-- Custom SVG for citation icon -->
<svg fill="currentColor" height="135px" width="135px" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 191.029 191.029" xml:space="preserve"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path d="M44.33,88.474v15.377h38.417v82.745H0v-82.745h0.002V88.474c0-31.225,8.984-54.411,26.704-68.918 C38.964,9.521,54.48,4.433,72.824,4.433v44.326C62.866,48.759,44.33,48.759,44.33,88.474z M181.107,48.759V4.433 c-18.343,0-33.859,5.088-46.117,15.123c-17.72,14.507-26.705,37.694-26.705,68.918v15.377h0v82.745h82.744v-82.745h-38.417V88.474 C152.613,48.759,171.149,48.759,181.107,48.759z"></path> </g></svg>
</button>
</div>
<pre class="citation-bibtex-data" style="display:none;">${raw}</pre>
</li>
`;
}

function copyBibtex(buttonElement) {
const citationEntry = buttonElement.closest('.citation-entry');
if (!citationEntry) return;

const bibtexPreElement = citationEntry.querySelector('.citation-bibtex-data');
if (!bibtexPreElement) return;

const bibtexText = bibtexPreElement.textContent.trim();

if (navigator.clipboard && window.isSecureContext) {
navigator.clipboard.writeText(bibtexText)
.then(() => showSuccess(buttonElement))
.catch(err => {
console.error('Async copy failed, falling back:', err);
fallbackCopy(bibtexText, buttonElement);
});
} else {
fallbackCopy(bibtexText, buttonElement);
}
}

function fallbackCopy(text, buttonElement) {
const textArea = document.createElement('textarea');
textArea.value = text;
textArea.style.position = 'fixed';
textArea.style.top = '-9999px';
textArea.style.left = '-9999px';
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
try {
const successful = document.execCommand('copy');
if (successful) {
showSuccess(buttonElement);
} else {
showError(buttonElement);
}
} catch (err) {
console.error('Fallback copy failed:', err);
showError(buttonElement);
}
document.body.removeChild(textArea);
}

function showSuccess(buttonElement) {
const originalIcon = buttonElement.innerHTML;
buttonElement.innerHTML = '✓';
buttonElement.classList.add('citation-copied');
buttonElement.disabled = true;

setTimeout(() => {
buttonElement.innerHTML = originalIcon;
buttonElement.classList.remove('citation-copied');
buttonElement.disabled = false;
}, 2000);
}

function showError(buttonElement) {
const originalIcon = buttonElement.innerHTML;
buttonElement.innerHTML = 'X';
buttonElement.disabled = true;
setTimeout(() => {
buttonElement.innerHTML = originalIcon;
buttonElement.disabled = false;
}, 2000);
}

document.addEventListener('DOMContentLoaded', () => {
const container = document.getElementById('citation-list');
if (!container) return;

// Generate and inject HTML
const allCitationsHTML = bibtexData.map(bib => generateCitationHTML(parseBibtex(bib))).join('');
container.innerHTML = allCitationsHTML;

container.addEventListener('click', function(event) {
const button = event.target.closest('.copy-bibtex-btn');
if (button) {
copyBibtex(button);
}
});
});
</script>
```
20 changes: 20 additions & 0 deletions _includes/featured-tutorials.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
- title: "Get Started with Turing.jl"
href: "https://turinglang.org/docs/getting-started/"
description: "Our step-by-step tutorials will guide you from installation to your first probabilistic models."
category:
- "Basics"
- "Getting Started"

- title: "Introduction: Coin Flipping"
href: "https://turinglang.org/docs/tutorials/coin-flipping/"
description: "Learn the basic concepts of Bayesian modeling by working through a simple coin-flipping example."
category:
- "Basics"
- "Modeling"

- title: "Core Functionality"
href: "https://turinglang.org/docs/core-functionality/"
description: "This article provides an overview of the core functionality in Turing.jl, which are likely to be used across a wide range of models."
category:
- "Basics"
- "Features"
13 changes: 13 additions & 0 deletions _includes/header.qmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
```{=html}
<div class="hero-section">
<div class="hero-content text-center">
<img src="./assets/logo/turing-logo-light.svg" alt="Turing Logo" class="hero-logo hero-logo-light">
<img src="./assets/logo/turing-logo-dark.svg" alt="Turing Logo" class="hero-logo hero-logo-dark">
<p class="hero-subtitle">Bayesian inference with probabilistic programming</p>
<div class="hero-cta-buttons">
<a href="https://turinglang.org/docs/getting-started/" class="button btn-lg button--fill">Get Started</a>
<a href="https://github.com/TuringLang/Turing.jl" class="button btn-lg">View on GitHub</a>
</div>
</div>
</div>
```
Loading