Browse Source

Links

master
David Larlet 7 months ago
parent
commit
f7f44011ca
Signed by: David Larlet <david@larlet.fr> GPG Key ID: 3E2953A359E7E7BD

+ 194
- 0
cache/2023/20d288eb47779c4f1b3f36fb86aa7108/index.html View File

@@ -0,0 +1,194 @@
<!doctype html><!-- This is a valid HTML5 document. -->
<!-- Screen readers, SEO, extensions and so on. -->
<html lang="fr">
<!-- Has to be within the first 1024 bytes, hence before the `title` element
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
<meta charset="utf-8">
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
<!-- The viewport meta is quite crowded and we are responsible for that.
See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
<meta name="viewport" content="width=device-width,initial-scale=1">
<!-- Required to make a valid HTML5 document. -->
<title>File over app - Steph Ango (archive) — David Larlet</title>
<meta name="description" content="Publication mise en cache pour en conserver une trace.">
<!-- That good ol' feed, subscribe :). -->
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
<!-- Generated from https://realfavicongenerator.net/ such a mess. -->
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
<link rel="manifest" href="/static/david/icons2/site.webmanifest">
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
<meta name="msapplication-TileColor" content="#f7f7f7">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)">
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)">
<!-- Documented, feel free to shoot an email. -->
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<script>
function toggleTheme(themeName) {
document.documentElement.classList.toggle(
'forced-dark',
themeName === 'dark'
)
document.documentElement.classList.toggle(
'forced-light',
themeName === 'light'
)
}
const selectedTheme = localStorage.getItem('theme')
if (selectedTheme !== 'undefined') {
toggleTheme(selectedTheme)
}
</script>

<meta name="robots" content="noindex, nofollow">
<meta content="origin-when-cross-origin" name="referrer">
<!-- Canonical URL for SEO purposes -->
<link rel="canonical" href="https://stephango.com/file-over-app">

<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">


<article>
<header>
<h1>File over app - Steph Ango</h1>
</header>
<nav>
<p class="center">
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
</svg> Accueil</a> •
<a href="https://stephango.com/file-over-app" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<p><em>File over app</em> is a philosophy: if you want to create digital artifacts that last, they must be files you can control, in formats that are easy to retrieve and read. Use tools that give you this freedom.</p>

<p><em>File over app</em> is an appeal to tool makers: accept that all software is ephemeral, and give people ownership over their data.</p>

<hr>

<p>In the fullness of time, the files you create are more important than the tools you use to create them. Apps are ephemeral, but your files have a chance to last.</p>

<p>The ancient temples of Egypt contain hieroglyphs that were chiseled in stone thousands of years ago. The ideas hieroglyphs convey are more important than the type of chisel that was used to carve them.</p>

<p>The world is filled with ideas from generations past, transmitted through many mediums, from clay tablets to manuscripts, paintings, sculptures, and tapestries. These artifacts are objects that you can touch, hold, own, store, preserve, and look at. To read something written on paper all you need is eyeballs.</p>

<p>Today, we are creating innumerable digital artifacts, but most of these artifacts are out of our control. They are stored on servers, in databases, gated behind an internet connection, and login to a cloud service. Even the files on your hard drive use proprietary formats that make them incompatible with older systems and other tools.</p>

<p>Paraphrasing something <a href="https://obsidian.md/blog/new-obsidian-icon/" target="_blank">I wrote recently</a></p>

<blockquote>
<p>If you want your writing to still be readable on a computer from the 2060s or 2160s, it’s important that your notes can be read on a computer from the 1960s.</p>
</blockquote>

<p>You should want the files you create to be durable, not only for posterity, but also for your future self. You never know when you might want to go back to something you created years or decades ago. Don’t lock your data into a format you can’t retrieve.</p>

<p>These days I write using an app I help make called <a class="internal-link" href="/obsidian">Obsidian</a>, but it’s a delusion to think it will last forever. The app will eventually become obsolete. It’s the plain text files I create that are designed to last. Who knows if anyone will want to read them besides me, but <em>future me</em> is enough of an audience to make it worthwhile.</p>
</article>


<hr>

<footer>
<p>
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
</svg> Accueil</a> •
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use>
</svg> Suivre</a> •
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use>
</svg> Pro</a> •
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use>
</svg> Email</a> •
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use>
</svg> Légal</abbr>
</p>
<template id="theme-selector">
<form>
<fieldset>
<legend><svg class="icon icon-brightness-contrast">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use>
</svg> Thème</legend>
<label>
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
</label>
<label>
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé
</label>
<label>
<input type="radio" value="light" name="chosen-color-scheme"> Clair
</label>
</fieldset>
</form>
</template>
</footer>
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
<script>
function loadThemeForm(templateName) {
const themeSelectorTemplate = document.querySelector(templateName)
const form = themeSelectorTemplate.content.firstElementChild
themeSelectorTemplate.replaceWith(form)

form.addEventListener('change', (e) => {
const chosenColorScheme = e.target.value
localStorage.setItem('theme', chosenColorScheme)
toggleTheme(chosenColorScheme)
})

const selectedTheme = localStorage.getItem('theme')
if (selectedTheme && selectedTheme !== 'undefined') {
form.querySelector(`[value="${selectedTheme}"]`).checked = true
}
}

const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
window.addEventListener('load', () => {
let hasDarkRules = false
for (const styleSheet of Array.from(document.styleSheets)) {
let mediaRules = []
for (const cssRule of styleSheet.cssRules) {
if (cssRule.type !== CSSRule.MEDIA_RULE) {
continue
}
// WARNING: Safari does not have/supports `conditionText`.
if (cssRule.conditionText) {
if (cssRule.conditionText !== prefersColorSchemeDark) {
continue
}
} else {
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
continue
}
}
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
}

// WARNING: do not try to insert a Rule to a styleSheet you are
// currently iterating on, otherwise the browser will be stuck
// in a infinite loop…
for (const mediaRule of mediaRules) {
styleSheet.insertRule(mediaRule.cssText)
hasDarkRules = true
}
}
if (hasDarkRules) {
loadThemeForm('#theme-selector')
}
})
</script>
</body>
</html>

+ 27
- 0
cache/2023/20d288eb47779c4f1b3f36fb86aa7108/index.md View File

@@ -0,0 +1,27 @@
title: File over app - Steph Ango
url: https://stephango.com/file-over-app
hash_url: 20d288eb47779c4f1b3f36fb86aa7108

<p><em>File over app</em> is a philosophy: if you want to create digital artifacts that last, they must be files you can control, in formats that are easy to retrieve and read. Use tools that give you this freedom.</p>

<p><em>File over app</em> is an appeal to tool makers: accept that all software is ephemeral, and give people ownership over their data.</p>

<hr>

<p>In the fullness of time, the files you create are more important than the tools you use to create them. Apps are ephemeral, but your files have a chance to last.</p>

<p>The ancient temples of Egypt contain hieroglyphs that were chiseled in stone thousands of years ago. The ideas hieroglyphs convey are more important than the type of chisel that was used to carve them.</p>

<p>The world is filled with ideas from generations past, transmitted through many mediums, from clay tablets to manuscripts, paintings, sculptures, and tapestries. These artifacts are objects that you can touch, hold, own, store, preserve, and look at. To read something written on paper all you need is eyeballs.</p>

<p>Today, we are creating innumerable digital artifacts, but most of these artifacts are out of our control. They are stored on servers, in databases, gated behind an internet connection, and login to a cloud service. Even the files on your hard drive use proprietary formats that make them incompatible with older systems and other tools.</p>

<p>Paraphrasing something <a href="https://obsidian.md/blog/new-obsidian-icon/" target="_blank">I wrote recently</a></p>

<blockquote>
<p>If you want your writing to still be readable on a computer from the 2060s or 2160s, it’s important that your notes can be read on a computer from the 1960s.</p>
</blockquote>

<p>You should want the files you create to be durable, not only for posterity, but also for your future self. You never know when you might want to go back to something you created years or decades ago. Don’t lock your data into a format you can’t retrieve.</p>

<p>These days I write using an app I help make called <a class="internal-link" href="/obsidian">Obsidian</a>, but it’s a delusion to think it will last forever. The app will eventually become obsolete. It’s the plain text files I create that are designed to last. Who knows if anyone will want to read them besides me, but <em>future me</em> is enough of an audience to make it worthwhile.</p>

+ 189
- 0
cache/2023/7458294e070577c610294f8ec927c30d/index.html View File

@@ -0,0 +1,189 @@
<!doctype html><!-- This is a valid HTML5 document. -->
<!-- Screen readers, SEO, extensions and so on. -->
<html lang="fr">
<!-- Has to be within the first 1024 bytes, hence before the `title` element
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
<meta charset="utf-8">
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
<!-- The viewport meta is quite crowded and we are responsible for that.
See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
<meta name="viewport" content="width=device-width,initial-scale=1">
<!-- Required to make a valid HTML5 document. -->
<title>Why are websites embarrassing? (archive) — David Larlet</title>
<meta name="description" content="Publication mise en cache pour en conserver une trace.">
<!-- That good ol' feed, subscribe :). -->
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
<!-- Generated from https://realfavicongenerator.net/ such a mess. -->
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
<link rel="manifest" href="/static/david/icons2/site.webmanifest">
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
<meta name="msapplication-TileColor" content="#f7f7f7">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)">
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)">
<!-- Documented, feel free to shoot an email. -->
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<script>
function toggleTheme(themeName) {
document.documentElement.classList.toggle(
'forced-dark',
themeName === 'dark'
)
document.documentElement.classList.toggle(
'forced-light',
themeName === 'light'
)
}
const selectedTheme = localStorage.getItem('theme')
if (selectedTheme !== 'undefined') {
toggleTheme(selectedTheme)
}
</script>

<meta name="robots" content="noindex, nofollow">
<meta content="origin-when-cross-origin" name="referrer">
<!-- Canonical URL for SEO purposes -->
<link rel="canonical" href="https://robinrendle.com/notes/why-are-websites-embarrassing/">

<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">


<article>
<header>
<h1>Why are websites embarrassing?</h1>
</header>
<nav>
<p class="center">
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
</svg> Accueil</a> •
<a href="https://robinrendle.com/notes/why-are-websites-embarrassing/" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<p>A few years ago I walked into a bookstore and noticed something peculiar: I found that every book was okay. In fact, books had gotten pretty damn good! A random book in a random bookstore is likely to have an interesting cover with good typography inside. They’re not beautiful objects or anything and, sure, the paper is ehhhh and okay yes they’re using the same boring book fonts that you’ve seen ten million times but there’s nothing about these books that get in the way of my reading. So the baseline for modern book design is pretty high.</p>
<p>This made me wonder why the same isn’t true for websites.</p>
<p>The baseline for websites is not great. Okay, fine: most websites are pure, unadulterated, straight-up bad. Bad from top to bottom, bad from left to right. There’s no denying it, as much as I might want to. And I do want to! I want to hold up the field of web design and say that it’s en par with what musicians and painters and everyone else is doing in every other field. I’ve dedicated my life to this thing and so when I find a beautiful website, something that pushes the whole thing forwards, I want to loudly celebrate it.</p>
<p>I truly want every website to be worthy of our browsers.</p>
<p>But modern websites are not worthy. They’re slow, hard to navigate, and plagued with visual crap; pop-ups, bad typography, newsletter modals, and everything else imaginable. And that’s just the baseline. When I use a website on my phone I likely won’t trust it to show me the same information, I won’t trust interactions when I click buttons or fill in forms or even when I try to navigate elsewhere.</p>
<p>I don’t even trust the back button any more.</p>
<p>It’s so bad that visiting a website in 2023 is like falling into a blackhole and being hit by a bunch of random junk on your way to being crushed into an infinite nothing in the center. No, I don’t want to give you permission about cookies, no I don’t want to sign up to your newsletter, no I don’t want to talk with some half-baked chatbot.</p>
<p>No, no, no.</p>
<p>This low bar for web design is what makes me embarrassed to call myself a web designer. If you tell a stranger that you make websites for a living then their first thought is likely “<em>that sounds lame.</em>” Would they think the same of a book designer? Or a graphic designer? They might not be interested, they might yawn, but they wouldn’t be embarrassed for you.</p>
<p>And yet! I do truly believe that a website can be as well designed as any book, just as thoughtful, just as brilliant. Yet in 2023 it feels like we’ve let websites be one of two things: either confused, junky bloatware or simple white posters with black text and a big checkout button. But the web can be so much more!</p>
<p>When I find a website that doesn’t hijack the scroll, or a website with pleasantly sized text, or a website that loads in under 300ms then it makes me bolt upright in my chair. I wonder at what tech they’re using under the hood, what kind of conversations they had in those rooms, I try to imagine what kind of grueling process the team went through to make something so quiet and simple. All the things they had to say no to.</p>
<p>The other day Chris Coyier mentioned that <a href="https://chriscoyier.net/2023/08/01/other-peoples-busted-software-is-an-opportunity/">bad software is an opportunity</a>: if everyone else is making stuff that sucks and you don’t, you’ll have a leg up. And I get that, I think it’s true. If people look at your software as stable and reliable and trustworthy then you’ve already kinda won. But still, I can’t help feel that bad software is also an excuse. Everyone else’s websites don’t load in under 1 second, so why should mine? I don’t use my website on mobile, so who cares for those who do? Fixing this accessibility problem will only help one person, how does that make us money?</p>
<p>It matters because of the baseline! Every decision we make sets expectations of what is acceptable and what ain’t. Every time we say yes to shitty design and inaccessible text inputs we lower the floor for the whole profession, the whole art form of web design. Saying yes to one terrible new analytics script opens the door to ten thousand more.</p>
<p>So why is web design embarrassing? Why is the floor so low? And why do folks not see the web the same way I do, as a place to be treasured and cared for in the same way as a beautiful book?</p>
<p>I have two reasons beyond the obvious answers.</p>
<p>First, I think great web design requires discipline. And that’s really the hardest thing about making a website. In this field there are a thousand yes’s for every no because, and here’s the second reason: it’s impossible to hold a website in your hand. It’s hard and sometimes tedious to see all the variations of your work across the infinitude of devices and circumstances that might touch your site. When making a website it sometimes feel like you’re thinking in four dimensions instead of three.</p>
<p>But really the baseline of web design is so low because there’s a lack of tenderness, care, and empathy. It’s because we don’t see the making of a website as a worthy profession. It’s because we hope to squeeze the last bit of juice from the orange by mulching people in between modals and pop ups and cookie banners.</p>
<p>So how do we do better? How do we take better care of our websites?</p>
</article>


<hr>

<footer>
<p>
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
</svg> Accueil</a> •
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use>
</svg> Suivre</a> •
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use>
</svg> Pro</a> •
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use>
</svg> Email</a> •
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use>
</svg> Légal</abbr>
</p>
<template id="theme-selector">
<form>
<fieldset>
<legend><svg class="icon icon-brightness-contrast">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use>
</svg> Thème</legend>
<label>
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
</label>
<label>
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé
</label>
<label>
<input type="radio" value="light" name="chosen-color-scheme"> Clair
</label>
</fieldset>
</form>
</template>
</footer>
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
<script>
function loadThemeForm(templateName) {
const themeSelectorTemplate = document.querySelector(templateName)
const form = themeSelectorTemplate.content.firstElementChild
themeSelectorTemplate.replaceWith(form)

form.addEventListener('change', (e) => {
const chosenColorScheme = e.target.value
localStorage.setItem('theme', chosenColorScheme)
toggleTheme(chosenColorScheme)
})

const selectedTheme = localStorage.getItem('theme')
if (selectedTheme && selectedTheme !== 'undefined') {
form.querySelector(`[value="${selectedTheme}"]`).checked = true
}
}

const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
window.addEventListener('load', () => {
let hasDarkRules = false
for (const styleSheet of Array.from(document.styleSheets)) {
let mediaRules = []
for (const cssRule of styleSheet.cssRules) {
if (cssRule.type !== CSSRule.MEDIA_RULE) {
continue
}
// WARNING: Safari does not have/supports `conditionText`.
if (cssRule.conditionText) {
if (cssRule.conditionText !== prefersColorSchemeDark) {
continue
}
} else {
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
continue
}
}
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
}

// WARNING: do not try to insert a Rule to a styleSheet you are
// currently iterating on, otherwise the browser will be stuck
// in a infinite loop…
for (const mediaRule of mediaRules) {
styleSheet.insertRule(mediaRule.cssText)
hasDarkRules = true
}
}
if (hasDarkRules) {
loadThemeForm('#theme-selector')
}
})
</script>
</body>
</html>

+ 22
- 0
cache/2023/7458294e070577c610294f8ec927c30d/index.md View File

@@ -0,0 +1,22 @@
title: Why are websites embarrassing?
url: https://robinrendle.com/notes/why-are-websites-embarrassing/
hash_url: 7458294e070577c610294f8ec927c30d

<p>A few years ago I walked into a bookstore and noticed something peculiar: I found that every book was okay. In fact, books had gotten pretty damn good! A random book in a random bookstore is likely to have an interesting cover with good typography inside. They’re not beautiful objects or anything and, sure, the paper is ehhhh and okay yes they’re using the same boring book fonts that you’ve seen ten million times but there’s nothing about these books that get in the way of my reading. So the baseline for modern book design is pretty high.</p>
<p>This made me wonder why the same isn’t true for websites.</p>
<p>The baseline for websites is not great. Okay, fine: most websites are pure, unadulterated, straight-up bad. Bad from top to bottom, bad from left to right. There’s no denying it, as much as I might want to. And I do want to! I want to hold up the field of web design and say that it’s en par with what musicians and painters and everyone else is doing in every other field. I’ve dedicated my life to this thing and so when I find a beautiful website, something that pushes the whole thing forwards, I want to loudly celebrate it.</p>
<p>I truly want every website to be worthy of our browsers.</p>
<p>But modern websites are not worthy. They’re slow, hard to navigate, and plagued with visual crap; pop-ups, bad typography, newsletter modals, and everything else imaginable. And that’s just the baseline. When I use a website on my phone I likely won’t trust it to show me the same information, I won’t trust interactions when I click buttons or fill in forms or even when I try to navigate elsewhere.</p>
<p>I don’t even trust the back button any more.</p>
<p>It’s so bad that visiting a website in 2023 is like falling into a blackhole and being hit by a bunch of random junk on your way to being crushed into an infinite nothing in the center. No, I don’t want to give you permission about cookies, no I don’t want to sign up to your newsletter, no I don’t want to talk with some half-baked chatbot.</p>
<p>No, no, no.</p>
<p>This low bar for web design is what makes me embarrassed to call myself a web designer. If you tell a stranger that you make websites for a living then their first thought is likely “<em>that sounds lame.</em>” Would they think the same of a book designer? Or a graphic designer? They might not be interested, they might yawn, but they wouldn’t be embarrassed for you.</p>
<p>And yet! I do truly believe that a website can be as well designed as any book, just as thoughtful, just as brilliant. Yet in 2023 it feels like we’ve let websites be one of two things: either confused, junky bloatware or simple white posters with black text and a big checkout button. But the web can be so much more!</p>
<p>When I find a website that doesn’t hijack the scroll, or a website with pleasantly sized text, or a website that loads in under 300ms then it makes me bolt upright in my chair. I wonder at what tech they’re using under the hood, what kind of conversations they had in those rooms, I try to imagine what kind of grueling process the team went through to make something so quiet and simple. All the things they had to say no to.</p>
<p>The other day Chris Coyier mentioned that <a href="https://chriscoyier.net/2023/08/01/other-peoples-busted-software-is-an-opportunity/">bad software is an opportunity</a>: if everyone else is making stuff that sucks and you don’t, you’ll have a leg up. And I get that, I think it’s true. If people look at your software as stable and reliable and trustworthy then you’ve already kinda won. But still, I can’t help feel that bad software is also an excuse. Everyone else’s websites don’t load in under 1 second, so why should mine? I don’t use my website on mobile, so who cares for those who do? Fixing this accessibility problem will only help one person, how does that make us money?</p>
<p>It matters because of the baseline! Every decision we make sets expectations of what is acceptable and what ain’t. Every time we say yes to shitty design and inaccessible text inputs we lower the floor for the whole profession, the whole art form of web design. Saying yes to one terrible new analytics script opens the door to ten thousand more.</p>
<p>So why is web design embarrassing? Why is the floor so low? And why do folks not see the web the same way I do, as a place to be treasured and cared for in the same way as a beautiful book?</p>
<p>I have two reasons beyond the obvious answers.</p>
<p>First, I think great web design requires discipline. And that’s really the hardest thing about making a website. In this field there are a thousand yes’s for every no because, and here’s the second reason: it’s impossible to hold a website in your hand. It’s hard and sometimes tedious to see all the variations of your work across the infinitude of devices and circumstances that might touch your site. When making a website it sometimes feel like you’re thinking in four dimensions instead of three.</p>
<p>But really the baseline of web design is so low because there’s a lack of tenderness, care, and empathy. It’s because we don’t see the making of a website as a worthy profession. It’s because we hope to squeeze the last bit of juice from the orange by mulching people in between modals and pop ups and cookie banners.</p>
<p>So how do we do better? How do we take better care of our websites?</p>

+ 204
- 0
cache/2023/ba42826808418339bdc0364586bea5bf/index.html View File

@@ -0,0 +1,204 @@
<!doctype html><!-- This is a valid HTML5 document. -->
<!-- Screen readers, SEO, extensions and so on. -->
<html lang="fr">
<!-- Has to be within the first 1024 bytes, hence before the `title` element
See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
<meta charset="utf-8">
<!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
<!-- The viewport meta is quite crowded and we are responsible for that.
See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
<meta name="viewport" content="width=device-width,initial-scale=1">
<!-- Required to make a valid HTML5 document. -->
<title>Ask vs guess culture (archive) — David Larlet</title>
<meta name="description" content="Publication mise en cache pour en conserver une trace.">
<!-- That good ol' feed, subscribe :). -->
<link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
<!-- Generated from https://realfavicongenerator.net/ such a mess. -->
<link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
<link rel="manifest" href="/static/david/icons2/site.webmanifest">
<link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
<link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
<meta name="msapplication-TileColor" content="#f7f7f7">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)">
<meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)">
<!-- Documented, feel free to shoot an email. -->
<link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
<!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
<script>
function toggleTheme(themeName) {
document.documentElement.classList.toggle(
'forced-dark',
themeName === 'dark'
)
document.documentElement.classList.toggle(
'forced-light',
themeName === 'light'
)
}
const selectedTheme = localStorage.getItem('theme')
if (selectedTheme !== 'undefined') {
toggleTheme(selectedTheme)
}
</script>

<meta name="robots" content="noindex, nofollow">
<meta content="origin-when-cross-origin" name="referrer">
<!-- Canonical URL for SEO purposes -->
<link rel="canonical" href="https://jeanhsu.substack.com/p/ask-vs-guess-culture">

<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">


<article>
<header>
<h1>Ask vs guess culture</h1>
</header>
<nav>
<p class="center">
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
</svg> Accueil</a> •
<a href="https://jeanhsu.substack.com/p/ask-vs-guess-culture" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<p>Have you had someone ask you for a favor that seemed unreasonable — a referral you didn’t want to make, a long-term stay at your place, a sizable cash loan? But because they asked, you felt obliged to seriously consider it, to try to meet their request, even if it put you in a space of discomfort? Maybe you carry out the favor, but it sours your relationship, and when it all comes out, that person says, “Well why’d you agree to it? You could have just said no!”</p>
<p>But you feel resentful that that person even put you in a position to have to say, “Sorry we’re a bit busy that week so don’t have space for you to stay with us,” or “I can’t loan you that money at the moment”?</p>
<p>Congratulations, you’ve just encountered a clash between ask culture and guess culture.</p>
<p><span>The idea of ask vs guess culture was </span><a href="https://ask.metafilter.com/55153/Whats-the-middle-ground-between-FU-and-Welcome#830421" rel>shared online</a><span> in 2007 by a user </span><em>tangerine</em><span> on Metafilter. When I first read it years ago, a lightbulb moment went off, and many frustrations and conflicts I had while growing up made much more sense in this framework. </span></p>
<p>Despite this idea’s longevity, I find that it’s still a new-to-many and incredibly useful concept to revisit, so here’s a little exploration of ask vs guess culture at home and at work.</p>
<p><span>Ask culture and guess culture are </span><em>vastly</em><span> different in behavior and expectations. Here are some highlights:</span></p>
<ul><li><p>Ask for what you want, even if it seems out of reach or like a big unreasonable request</p></li><li><p>Take care of your own needs, and others will take care of theirs</p></li><li><p>It’s fine to make requests that people will probably say no to</p></li><li><p>People say yes to requests that they truly feel good about, say no to ones they don’t</p></li></ul>
<ul><li><p>Only ask for something if you’re already pretty sure the other person will say yes</p></li><li><p>Read an abundance of indirect contextual cues to determine if your request is reasonable to make</p></li><li><p>It’s rude to put someone in a position where they have to say no to you</p></li><li><p>If the appropriate feelers and context are set, you will never have to make your request at all.</p></li></ul>
<p>It’s easiest to understand the differences between ask culture and guess culture through examples, so here are two examples with a moving situation — you’re moving soon and hope to save a few bucks with the help of your friends.</p>
<p>You post on Facebook sharing that you’re moving and make a list of things you could use help with: moving boxes and tape, packing help, usage of a truck/van, and physical labor on moving day. You reach out to a few local friends asking if they’re available on moving day. A few people respond on Facebook with moving supplies, and a friend comes over to help with packing, but no one is available to help on moving day, so you end up renting a moving van and hiring a few movers.</p>
<p>Your friend is typically free on the weekends, so you ask them if they’re available to help you on moving day. You ask another friend what they’re up to, and they have family visiting, so you don’t mention that you need help with moving. Another friend has access to a pickup truck, and you dropped off some soup recently when they were sick, so you mention that you’re moving next weekend. They ask if you’d like to borrow their truck, which you defer saying you don’t want to inconvenience them, but when they offer again, you accept.</p>
<p><hr></p>
<p>Depending on whether you gravitate more towards ask or guess culture as your default, one of these scenarios may sound very uncomfortable. </p>
<p>If you’re more a guess-culture person, asking people for help without knowing their circumstances can feel rude or intrusive. Broadcasting publicly your need for help can feel awkward and vulnerable.</p>
<p>If you’re more of an ask-culture person, the guess-culture example of juggling everyone’s specific scenarios and the historical context of favors probably seems exhausting. Dropping hints in the hopes that you won’t even have to make your request can feel extra passive and manipulative.</p>
<p>I probably operate somewhere in-between ask and guess culture — defaulting to guess culture when I’m low-functioning but aspiring to be more and more ask-culture. </p>
<p>I was raised deeply in guess culture, as many Asians and Asian-Americans are. The Japanese proverb that “the nail that sticks up gets nailed down” reinforces the idea of social collectivism and keeping your individual needs and wants to yourself — values that are shared by many Asian culture. My parents rarely had to make explicit asks of me, because the expectations around values and behavior were communicated through indirect messaging, often by tone of voice or through stories about other people. </p>
<p>Western society is very much ask culture. A classic example can be found in proverbs. “A squeaky wheel gets the grease” is an American proverb, enforcing the ideas of individualism and that asking for what you want will benefit you. </p>
<p>The generational clash between ask and guess culture can be frustrating and exhausting. Years ago, my brother and I were in San Diego visiting our aunt and uncle. The plan was for my grandma to come down from Los Angeles, so we could all spend time together, but our grandma had last minute minor surgery to recover from and had to stay put in LA. “So we should drive up to see her, right?” my brother and I discussed. But all of the older relatives insisted we did not, suggesting that instead we see the sights in San Diego, that we take the kids to Sea World, that the traffic would be awful and that a 2 hour drive would turn into 5 hours, that it’d be dangerous. </p>
<p><span>This all seemed ridiculous to us, so instead we drove the two hours, keeping our plan </span><em>secret</em><span> until we pulled up into our grandma’s driveway, so that no one could resist and thwart our plan. We had a lovely visit, and my mom later thanked us for making the drive. </span></p>
<p>This is guess culture — and it’s a lot of saying not really what you actually want, and it’s a lot of reading between the lines to try to figure out what people want.</p>
<p><span>Deciding what to eat for dinner with guess-culture people isn’t as simple as asking people what they want to eat for dinner, because they will not tell you what they </span><strong>actually</strong><span> want to want to eat for dinner. They will say “oh, whatever you want,” or “whatever is easiest.” And when you insist that you really really want to know what they want to eat for dinner, and if it’s too much work, you’ll do something else instead, the response you receive will already be a compromised version of what they want, taking into account the preferences of everyone else in the house, what the kids will eat, and the leftovers in the fridge.</span></p>
<p>Thoughtful? Yes. But frustrating if you actually want an honest answer of what someone wants. You may be better off listing options and gauging their response to each one.</p>
<p>For guess-culture people, thinking about what it is you want can feel absolutely foreign, and for me, it’s been a years-long practice to continue to tap into and understand what I want, before I then try to take others’ needs into account.</p>
<p>At a high level, western corporate work operates almost entirely in ask culture. But people working at these companies often operate in or were raised in guess culture, which as you might expect, is ripe for feeling misunderstood and frustrated.</p>
<p><span>Last week, I shared about normalizing </span><a href="https://jeanhsu.substack.com/p/do-you-keep-your-wishes-secret" rel>sharing what we want in life and at work</a><span>, so that they might actually be supported in coming true. Ask vs guess culture is another lens at looking at asking for what you want at work.</span></p>
<p>Being guess-culture in an ask-culture work environment looks like hoping someone will tap you to become a manager because you’re clearly the best person for the job. </p>
<p>It also looks like being frustrated when others loudly express enthusiasm about taking on a new project on the roadmap and are given the opportunity to lead it, when you were also interested in it and maybe dropped some hints about it being somewhat interesting.</p>
<p>At a certain point, guess culture is not going to work for you, and you’ll feel under-acknowledged and overlooked. If you want to get more of what you want out of your work situation, you’ll have to lean more into ask culture. </p>
<p>But ask culture is vulnerable, because the requests you’re making are ones that feel out of reach, and requires being ok with people saying no to you, often. It requires putting things out there that you want help with, and trusting that people will say no to you instead of helping you resentfully.</p>
<p>Maybe just understanding the framework is already helpful, but here are a few small ways you can start to nudge yourself into ask culture.</p>
<ul><li><p>Ask for help on something you’re feeling stuck on. Guess-culture people will worry that they’re interrupting someone, or someone will be annoyed if they’re in the middle of something. If it feels more comfortable, you could say, “Let me know when is good for a half-hour working session today or tomorrow.”</p></li><li><p>Want to publish something on the company blog or give a talk at an upcoming event? Try asking. If “Hey can I give a talk at the next event?” feels too uncomfortable, try “Hey I’m really interested in giving a talk at a future event. What are you looking for?” or “I’d love to give a talk about &lt;topic&gt;, what do you think?”</p></li><li><p>Get more comfortable with people saying no to you. If people are not saying no to you, you’re probably still only asking for things that you already know people will say yes to (which is guess culture). Ask for more budget, ask for an uncomfortable amount of PTO, ask for professional development budget, ask to purchase only vaguely-work-related books on your company card.</p></li><li><p><span>Ask yourself, </span><a href="https://jeanhsu.substack.com/p/if-you-could-have-your-way" rel>“If I could have my way…”</a><span>, which is a useful hack to bypass thinking about others’ needs and honing in on exactly what you want. Use this to think about your role, your next project, your work schedule, your title, your salary and equity, your team. From that thought exercise, ask for some things you want.</span></p></li></ul>
<p><em>Does this framework behind ask vs guess culture provide any clarity to you around past or current frustrations? When have you experienced clashes between ask and guess culture?</em></p>
</article>


<hr>

<footer>
<p>
<a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
</svg> Accueil</a> •
<a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use>
</svg> Suivre</a> •
<a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use>
</svg> Pro</a> •
<a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use>
</svg> Email</a> •
<abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use>
</svg> Légal</abbr>
</p>
<template id="theme-selector">
<form>
<fieldset>
<legend><svg class="icon icon-brightness-contrast">
<use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use>
</svg> Thème</legend>
<label>
<input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
</label>
<label>
<input type="radio" value="dark" name="chosen-color-scheme"> Foncé
</label>
<label>
<input type="radio" value="light" name="chosen-color-scheme"> Clair
</label>
</fieldset>
</form>
</template>
</footer>
<script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
<script>
function loadThemeForm(templateName) {
const themeSelectorTemplate = document.querySelector(templateName)
const form = themeSelectorTemplate.content.firstElementChild
themeSelectorTemplate.replaceWith(form)

form.addEventListener('change', (e) => {
const chosenColorScheme = e.target.value
localStorage.setItem('theme', chosenColorScheme)
toggleTheme(chosenColorScheme)
})

const selectedTheme = localStorage.getItem('theme')
if (selectedTheme && selectedTheme !== 'undefined') {
form.querySelector(`[value="${selectedTheme}"]`).checked = true
}
}

const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
window.addEventListener('load', () => {
let hasDarkRules = false
for (const styleSheet of Array.from(document.styleSheets)) {
let mediaRules = []
for (const cssRule of styleSheet.cssRules) {
if (cssRule.type !== CSSRule.MEDIA_RULE) {
continue
}
// WARNING: Safari does not have/supports `conditionText`.
if (cssRule.conditionText) {
if (cssRule.conditionText !== prefersColorSchemeDark) {
continue
}
} else {
if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
continue
}
}
mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
}

// WARNING: do not try to insert a Rule to a styleSheet you are
// currently iterating on, otherwise the browser will be stuck
// in a infinite loop…
for (const mediaRule of mediaRules) {
styleSheet.insertRule(mediaRule.cssText)
hasDarkRules = true
}
}
if (hasDarkRules) {
loadThemeForm('#theme-selector')
}
})
</script>
</body>
</html>

+ 5
- 0
cache/2023/ba42826808418339bdc0364586bea5bf/index.md
File diff suppressed because it is too large
View File


+ 6
- 0
cache/2023/index.html View File

@@ -103,6 +103,8 @@
<li><a href="/david/cache/2022/927159a754f4d7d9e176f5f8397dbf02/" title="Accès à l’article dans le cache local : ce qui est passé">ce qui est passé</a> (<a href="https://www.la-grange.net/2023/01/07/passe" title="Accès à l’article original distant : ce qui est passé">original</a>)</li>
<li><a href="/david/cache/2022/ba42826808418339bdc0364586bea5bf/" title="Accès à l’article dans le cache local : Ask vs guess culture">Ask vs guess culture</a> (<a href="https://jeanhsu.substack.com/p/ask-vs-guess-culture" title="Accès à l’article original distant : Ask vs guess culture">original</a>)</li>
<li><a href="/david/cache/2022/04ad9e0f254b2d6111aef95102654f7d/" title="Accès à l’article dans le cache local : Maybe the Book Doesn’t Need to Be “Disrupted” in the First Place?">Maybe the Book Doesn’t Need to Be “Disrupted” in the First Place?</a> (<a href="https://countercraft.substack.com/p/maybe-the-book-doesnt-need-to-disrupted" title="Accès à l’article original distant : Maybe the Book Doesn’t Need to Be “Disrupted” in the First Place?">original</a>)</li>
<li><a href="/david/cache/2022/4d9148b9d78455c2d67051e467d2e824/" title="Accès à l’article dans le cache local : I assume I’m below average">I assume I’m below average</a> (<a href="https://sive.rs/below-average" title="Accès à l’article original distant : I assume I’m below average">original</a>)</li>
@@ -127,6 +129,8 @@
<li><a href="/david/cache/2022/b5acd8bbf209345ff300ea8c10c44181/" title="Accès à l’article dans le cache local : Retiring Pinafore">Retiring Pinafore</a> (<a href="https://nolanlawson.com/2023/01/09/retiring-pinafore/" title="Accès à l’article original distant : Retiring Pinafore">original</a>)</li>
<li><a href="/david/cache/2022/7458294e070577c610294f8ec927c30d/" title="Accès à l’article dans le cache local : Why are websites embarrassing?">Why are websites embarrassing?</a> (<a href="https://robinrendle.com/notes/why-are-websites-embarrassing/" title="Accès à l’article original distant : Why are websites embarrassing?">original</a>)</li>
<li><a href="/david/cache/2022/8f76362de8331d4dc5d3e0e0a882606e/" title="Accès à l’article dans le cache local : Sennheiser HD 555 to HD 595 Mod">Sennheiser HD 555 to HD 595 Mod</a> (<a href="http://mikebeauchamp.com/misc/sennheiser-hd-555-to-hd-595-mod/" title="Accès à l’article original distant : Sennheiser HD 555 to HD 595 Mod">original</a>)</li>
<li><a href="/david/cache/2022/ca3e313992d7ac7e4aeaece85e7f4b6a/" title="Accès à l’article dans le cache local : William Shatner: My Trip to Space Filled Me With Sadness - Variety">William Shatner: My Trip to Space Filled Me With Sadness - Variety</a> (<a href="https://variety.com/2022/tv/news/william-shatner-space-boldly-go-excerpt-1235395113/" title="Accès à l’article original distant : William Shatner: My Trip to Space Filled Me With Sadness - Variety">original</a>)</li>
@@ -185,6 +189,8 @@
<li><a href="/david/cache/2022/230f8f7224199132de4ce030458536de/" title="Accès à l’article dans le cache local : The mounting human and environmental costs of generative AI">The mounting human and environmental costs of generative AI</a> (<a href="https://arstechnica.com/gadgets/2023/04/generative-ai-is-cool-but-lets-not-forget-its-human-and-environmental-costs/" title="Accès à l’article original distant : The mounting human and environmental costs of generative AI">original</a>)</li>
<li><a href="/david/cache/2022/20d288eb47779c4f1b3f36fb86aa7108/" title="Accès à l’article dans le cache local : File over app - Steph Ango">File over app - Steph Ango</a> (<a href="https://stephango.com/file-over-app" title="Accès à l’article original distant : File over app - Steph Ango">original</a>)</li>
<li><a href="/david/cache/2022/9718ae2062146285e1c4f406240e04af/" title="Accès à l’article dans le cache local : An update on Robust Client-Side JavaScript">An update on Robust Client-Side JavaScript</a> (<a href="https://molily.de/update-on-robust-javascript/" title="Accès à l’article original distant : An update on Robust Client-Side JavaScript">original</a>)</li>
<li><a href="/david/cache/2022/63654b08ad9eda03b6bea8d1f82e2843/" title="Accès à l’article dans le cache local : Yearnotes #3 • détour.studio">Yearnotes #3 • détour.studio</a> (<a href="https://détour.studio/yearnotes/3/" title="Accès à l’article original distant : Yearnotes #3 • détour.studio">original</a>)</li>

Loading…
Cancel
Save