layout | title |
---|---|
page |
Your Preferences |
We have attempted to decompose our themes into several axes depending on your accessibility needs:
This control responds to prefers-color-scheme
Auto Light Dark White Paper Night MidnightThis control responds to prefers-contrast
Auto Low High Default 🌈 ✊🏿 🎃 🏳️🌈 🏳️⚧️ 🇦🇺 <script> function savePrefs() { // Convert this into a hash var prefs = {}; [...document.querySelectorAll(".theme-control")] .map(x => { return [x.id, x.value]}) .forEach(x => { prefs[x[0]] = x[1] }) gtnLocalSet('theme2', JSON.stringify(prefs)) processTheme2(); if(prefs.theme === "straya"){ document.body.classList.add('downunder'); setTimeout(function(){ document.body.classList.remove('downunder'); }, 8000); } } function restorePrefs(){ var prefs = JSON.parse(gtnLocalGet("theme2")) || {}; Object.keys(prefs).forEach(k => { document.getElementById(k).value = prefs[k] }) processTheme2(); } restorePrefs(); </script>While some of our fonts are available on Google Fonts, we do not use Google Fonts to serve them.
Default (Atkinson Hyperlegible) Open Dyslexic Comic SansFont for code blocks:
Default Comic Sans Mono <script> function saveFont(){ gtnLocalSet("fontMain", document.getElementById("font").value); gtnLocalSet("fontCode", document.getElementById("font-code").value); document.body.dataset["font_main"] = document.getElementById("font").value document.body.dataset["font_code"] = document.getElementById("font-code").value } document.getElementById("font").value = gtnLocalGet("fontMain"); document.getElementById("font-code").value = gtnLocalGet("fontCode"); </script>We collect the following information on visitors:
- Device information
- Location (country granularity)
- Page visited
We do not have information correlating visits across pages, we cannot identify if you visit one page, or many pages in a single visit.
You can see the aggregate collected information in Plausible.
We do not have access to more granular data.
However, if you wish you may opt out of these aggregate statistics.
What you provide
- Device information
- Location (country granularity)
- Page visited {: .code-in}
How we use it
- Helps us request Grant Funding
- Helps us know who is using our tutorials
- Makes authors happy to know people love their tutorial! {: .code-out} {: .code-2col}
Opt out from plausible: Opt-in Opt-out
When something breaks on the GTN in the UI, we collect information about how that happened to help our developers fix problems within the GTN.
What you provide
- Device information
- Page
- Stack trace
- GTN Javascript variables {: .code-in}
How we use it
- Fixing JavaScript Bugs
- Especially from unusual platforms which we cannot test on. {: .code-out} {: .code-2col}
Opt out from sentry: Opt-in Opt-out
<script> function savePrivacy() { gtnLocalSet('sentry-opt-out', document.getElementById("sentry-opt-out").value) gtnLocalSet('plausible-opt-out', document.getElementById("plausible-opt-out").value) if(document.getElementById("plausible-opt-out").value === "opt-in") { localStorage.removeItem("plausible_ignore") } else { localStorage.setItem("plausible_ignore", "true") } } // restore from prefs document.getElementById("sentry-opt-out").value = gtnLocalGet("sentry-opt-out") || "opt-in"; document.getElementById("plausible-opt-out").value = gtnLocalGet("plausible-opt-out") || "opt-in"; if(navigator.doNotTrack === "1"){ document.getElementById("sentry-opt-out").disabled = true document.getElementById("plausible-opt-out").disabled = true document.getElementById("sentry-opt-out").innerHTML = `Opted-out (Do not track is set in your browser)` document.getElementById("plausible-opt-out").innerHTML = `Opted-out (Do not track is set in your browser)` } </script>Here we expose the several types of data storage that browsers offer, so you can easily see what data this website creates and uses:
This data is never transferred to the server
${window.localStorage[k]}
`;
document.getElementById("settings-data").appendChild(dt);
document.getElementById("settings-data").appendChild(dd);
})
if(gtnSettingsKeys.length === 0){
document.getElementById("settings-data").innerHTML = `There is no data.`;
}
</script>
This data is never transferred to the server, and is deleted when your browser window closes.
${window.sessionStorage[k]}
`;
document.getElementById("session-data").appendChild(dt);
document.getElementById("session-data").appendChild(dd);
})
if(gtnSessionKeys.length === 0){
document.getElementById("session-data").innerHTML = `There is no data.`;
}
</script>
This data is automatically transferred to the server. You can clear it using your browser's tools:
<script> if(document.cookies !== undefined){ document.getElementById('cookies-data').innerHTML = document.cookies; } else { document.getElementById('cookies-data').innerHTML = "No cookies have been set."; } </script>