Browse Source

More links

master
David Larlet 3 years ago
parent
commit
905c685e1e

+ 405
- 0
cache/2021/0c45751cd69748ca779b1442b26ad6c3/index.html View File

@@ -0,0 +1,405 @@
<!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>
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>Lux Year 4: Doubling Down (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="#f0f0ea">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f0f0ea">
<!-- 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://lux.camera/lux-year-4-doubling-down/">

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

<article>
<header>
<h1>Lux Year 4: Doubling Down</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.svg#icon-home"></use>
</svg> Accueil</a> •
<a href="https://lux.camera/lux-year-4-doubling-down/" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<p>Four years ago, we launched <a href="http://halide.cam">Halide</a> from a kitchen dinner table in Sebastiaan’s apartment in San Francisco. We didn’t have huge ambitions when we built and launched our little camera app: we had made something that was great for our own needs. Perhaps, we thought, a few others would like it too. Four years later, it’s not a little app anymore. It’s now a business. A company!</p>

<figure class="wp-block-gallery columns-3 is-cropped"><figcaption class="blocks-gallery-caption">Halide 1.0’s Launch, May 2017</figcaption></figure>

<p>Four years is a major milestone for a new company. At startups, this is when employees start facing existential questions. Do you want to stick around another few years? Are you happy doing what you’re doing? Do you believe in the future of the company? </p>

<p>We aren’t startup employees. We came here chasing our passions, not profit. The ultimate question is whether we can continue pursuing those passions. After the success of our second app, Spectre, we asked ourselves, “What do we want to be when we grow up?”</p>

<p>We talked many a late night and came up with a roadmap of our ambitions: three apps.<a href="https://lux.camera/lux-year-3-the-end-of-the-beginning/"> We teased them last year</a>:</p>

<figure class="wp-block-image size-large"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap.jpeg" alt="" class="lazy lazy-hidden wp-image-5400" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap.jpeg 1024w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap-450x225.jpeg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap-800x400.jpeg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap-900x450.jpeg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap-768x384.jpeg 768w" sizes="(max-width: 1024px) 100vw, 1024px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap.jpeg" alt="" class="wp-image-5400" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap.jpeg 1024w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap-450x225.jpeg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap-800x400.jpeg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap-900x450.jpeg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap-768x384.jpeg 768w" sizes="(max-width: 1024px) 100vw, 1024px"></noscript></figure>

<p>We know everyone will love these apps, but there’s one small problem: our two existing apps fill all the hours in our day. While we delegate some work (like promotional sites) to contractors (thank you, Jonathan!), we need to build out our core team to build out our core products. We needed to rev on the company.</p>

<p>We decided to spend 2020 tackling our most ambitious (and possibly-controversial) dream product: “Stark”. We knew this was going to be a big project, not only technically, but one personal and close to our hearts. Stark would launch as <a href="https://lux.camera/pro-camera-action-introducing-halide-mark-ii/">Halide “Mark II”</a>.</p>

<p>We knew Mark II would define our fourth year, and if everything went according to plan, it would carry us through to the next phase. So how did it go?</p>

<p>This retrospective tells all. It explains why Mark II laid the groundwork for the company. We’ll cover its development and launch, the user reaction, and finally touch on financials. Read to see our moments of fear, joy, and everything in between…</p>

<h2>Why Halide 2.0?</h2>

<p>Why double down on an existing product? After three years, Halide was doing extremely well. It had become a well-known name: you could spot it on the home screen in a tech website’s review of the latest iPhones, catch it in the wild being used by professional and amateur photographers alike, and see it featured in every country the App Store is available. </p>

<figure class="wp-block-image size-large is-style-full-width"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1424x712.jpg" alt="" class="lazy lazy-hidden wp-image-5670" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1424x712.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1536x768.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-2048x1024.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-450x225.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1600x800.jpg 1600w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1360x680.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-800x400.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-2000x1000.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-900x450.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-768x384.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1424x712.jpg" alt="" class="wp-image-5670" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1424x712.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1536x768.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-2048x1024.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-450x225.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1600x800.jpg 1600w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1360x680.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-800x400.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-2000x1000.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-900x450.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-768x384.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript></figure>

<p>Halide was designed and built as a passion project. We launched it with no idea it would develop a big following, and we never thought we’d be adding features for years. </p>

<p>From a design perspective, Halide 1.0 was born on home-button iPhones; a redesign let us perfect it for the latest devices and old ones alike, and future-proof it for many more years of updates. From an engineering perspective, we had ambitious ideas to engineer the best photography tools available by a mile, and to really take advantage of the latest technologies.</p>

<p>Then there’s the money part. Halide experienced solid revenue growth for years, despite giving away huge, free updates for three years. We believe deeply in goodwill, and thinks it makes the best marketing. We didn’t want to chop-up Halide so we could hide features behind additional in-app purchases. It was all going well, so why mess with what works? </p>

<p>Well, in the words of Ed Catmull, “Success hides problems.”</p>

<figure class="wp-block-image size-large"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1424x949.png" alt="" class="lazy lazy-hidden wp-image-5532" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1424x949.png 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1536x1024.png 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-2048x1365.png 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-450x300.png 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1200x800.png 1200w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1360x907.png 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-800x533.png 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-2000x1333.png 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-900x600.png 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-768x512.png 768w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1424x949.png" alt="" class="wp-image-5532" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1424x949.png 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1536x1024.png 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-2048x1365.png 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-450x300.png 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1200x800.png 1200w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1360x907.png 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-800x533.png 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-2000x1333.png 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-900x600.png 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-768x512.png 768w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript></figure>

<p>While gross revenue more than doubled from 2018 to 2019, we did not owe that to Halide. We owed that to the launch of our second app, Spectre. Not only was the launch a massive success, but Apple awarded it <a href="https://www.apple.com/newsroom/2019/12/apple-celebrates-the-best-apps-and-games-of-2019/">iPhone App of the Year</a>. This had a halo effects on Halide thanks to our multi-app bundle. We were beyond proud of 2019 — but it would be dangerous for us to confuse a few home runs with building a sustainable business.</p>

<p>As a two person company, Halide development slowed down while we built Spectre. Sure, we could chase another home run by starting a third app, but now we’d have to shelve both Halide and Spectre. This is the tradeoff of a Pay-Once model: you’re incentivized to ship big new apps that draw headlines, rather than investing in your existing portfolio, and improving the lives of your users.</p>

<p>Users noticed Halide updates slowing during Spectre’s development. We kept fielding questions from our die-hard Halide users asking about our plans for the next update. A few even asked if it was abandoned! It was clear users craved more from Halide, but that’s not all: <em>we</em> wanted to keep building Halide. </p>

<p>There was just no way to build new apps without growing our little team. To do that, we need stable revenue.</p>

<p>As a Bay Area company, we know one approach is venture capital. But we built Halide as a passionate, opinionated project, and well… it is <em>very</em> hard to bring on VCs without compromising on the things that makes our apps great. </p>

<p>Another way to increase revenue is to—hear me out here—<em>charge more</em>. </p>

<p>We always felt Halide was underpriced. We launched in 2017 back when many “pro” apps cost $3. Halide stood in a class of its own, so we felt we comfortable charging $6. It worked. It worked so well, in fact, that by 2019 all the camera apps (including a free one) went up to match its price. Meanwhile, our most passionate users told us, “I wish I could pay you more.”</p>

<p>We knew Mark II would raise the bar, and with the work we were putting in it was looking more and more like a new app than an upgrade. This felt to us as the best time to release it as a new app, reset our price—or introduce a new business model. We’ll get to that in a second. </p>

<p>A second issue that stood in the way of hiring someone: revenue volatility. Consider this breakdown of 2018:</p>

<figure class="wp-block-image size-large"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-1424x579.png" alt="" class="lazy lazy-hidden wp-image-5685" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-1424x579.png 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-1536x625.png 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-450x183.png 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-1360x553.png 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-800x326.png 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-900x366.png 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-768x313.png 768w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy.png 1843w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-1424x579.png" alt="" class="wp-image-5685" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-1424x579.png 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-1536x625.png 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-450x183.png 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-1360x553.png 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-800x326.png 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-900x366.png 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-768x313.png 768w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy.png 1843w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript><figcaption>2018 Revenue by Month. New hardware drops in Spring and Fall, causing sales spikes</figcaption></figure>

<p>During the Holidays, we earn 4x the revenue of summer months. That’s expected and fine for ephemeral products, like video games, but users expect camera app updates year-round. Oh, and we need to pay employees year-round. It’s scary to grow a company with this volatility; one bad winter, and everything falls apart. If we hire people, we want them to be able to count on us to be able to pay them. </p>

<p>Remember, this is 2020. As a pandemic suddenly happened, people stopped going on photography trips and started baking sourdough. Revenue dipped — so low, in fact, that we slightly panicked about hiring another developer. Revenue recovered a month later, when Apple launched the iPhone SE2, but it was a still wakeup call. If we want to grow the team, we can’t bet so much on an unending stream of new users that show up.</p>

<p>We wanted to keep building Halide. Our users wanted us to keep building Halide. And we wanted to expand the team. The path seemed clear: After years of free updates, it was time to dip our toes into into recurring revenue. When I was growing up, we called them “Paid Upgrades,” but the App Store… complicates things.</p>

<h3>Enter Subscriptions</h3>

<p>The App Store lacks any native concept of a paid upgrade. The closest it offers are subscriptions. It isn’t our ideal solution, but on the bright side, subscriptions can reduce volatility. For example, rather than $24 for an annual upgrade, you could charge $2 a month. We decided to start considering a Halide subscription model.</p>

<figure class="wp-block-image size-large is-style-full-width"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1424x817.jpg" alt="" class="lazy lazy-hidden wp-image-5540" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1424x817.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1536x881.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-2048x1175.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-450x258.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1395x800.jpg 1395w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1360x780.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-800x459.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-2000x1147.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-900x516.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-768x441.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1424x817.jpg" alt="" class="wp-image-5540" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1424x817.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1536x881.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-2048x1175.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-450x258.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1395x800.jpg 1395w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1360x780.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-800x459.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-2000x1147.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-900x516.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-768x441.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript></figure>

<p>We realized there were immediate benefits. There’s powerful App Store features only supported though subscriptions: a paid app has one price, that is more or less the same around the world. With subscriptions, you can set per-country pricing. That 30% fee Epic complains so much about? If your retain a subscriber for a year, Apple reduces their cut from 30% to 15%. Want to offer free trials? It only takes a few clicks.</p>

<p>All those benefits aside, with stable recurring revenue lets us invest in updates that serve our active users, rather than splashy updates to bring in new users. Subscriptions also open the door to products with ongoing costs, such as servers. We don’t pre-announce products, so we’ll just leave that there…</p>

<p>That all sounds great. However, as I mentioned, we love goodwill, and a lot of people wince when they hear “subscription.” The first thing that pops up in a user’s head are scammy companies that make cancellation a nightmare, like multi-level marketing schemes, gym memberships, and Adobe. The App Store prevents these shenanigans: you get a reminder email before renewal, and you can cancel within the <em>Settings</em> app in seconds. Whenever a company offers a subscription, I always try to buy it through the App Store.</p>

<p>Some folks absolutely loathe subscriptions on <em>principle,</em> and will never rent something if they can own it. This is not unreasonable. Halide is like a camera, and while <a href="https://www.borrowlenses.com">professionals are used to renting gear</a>, most consumers own their camera.</p>

<p>We wish the App Store offered more options than subscriptions. We’d love something similar to the Sketch licensing model; if you don’t renew Sketch every year, it still works, but you stop receiving updates. Few can argue against the fairness of that, but since that doesn’t exist on the App Store, the best we could offer is a separate Pay-Once option in Halide.</p>

<p>Note I said ‘few’ can argue against the fairness. Unfortunately, there’s that vocal minority of users that fill with rage at sight of subscriptions, pay-once option or not. We can never please them. These folks will leave one star reviews and toxic internet comments. On a personal level, you have to brace yourself for negativity. On a strategic level, you need to prepare for an angry mob that will amplify outrage over any changes or mistakes. I will admit that we were afraid of having a potential angry mob on our hands.</p>

<p>We figured the ultimate rebuttal and pitchfork mob deterrent is to just offer a pay-once option at a sustainable price point. Which leaves us with the question: what are the right price points for Pay-Once and Subscriptions?</p>

<h3>A Crash Course in Pricing</h3>

<p>When I was young and looking for my first job, I asked my dad, who majored in economics, what I should be paid. I asked, “What am I worth?,” and he replied, “By definition, you are worth whatever someone pays.”</p>

<figure class="wp-block-image size-large is-style-full-width"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1424x949.jpg" alt="" class="lazy lazy-hidden wp-image-5533" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1424x949.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1536x1024.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-2048x1365.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-450x300.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1200x800.jpg 1200w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1360x907.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-800x533.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-2000x1333.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-900x600.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-768x512.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1424x949.jpg" alt="" class="wp-image-5533" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1424x949.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1536x1024.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-2048x1365.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-450x300.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1200x800.jpg 1200w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1360x907.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-800x533.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-2000x1333.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-900x600.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-768x512.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript></figure>

<p>Outside of commodities like aluminum and orange futures, the cost of materials and labor has no bearing on price. It’s all about what customers will pay for the value you deliver. A Kia and Porsche 911 cost the same to manufacture, and serve the same function, but the Porsche costs 10× more. That’s because people will pay a premium for design, performance, and even the cool-factor. Nobody grew up with a poster of a Kia hanging in their bedroom.</p>

<p>Of course humans use <a href="https://en.wikipedia.org/wiki/Predictably_Irrational#The_Fallacy_of_Supply_and_Demand">price anchoring</a> to determine what’s reasonable. If I ask you what you’d pay for a cup of coffee, you probably think $5, thanks to Starbucks. Believe it or not, people used to think of coffee like <a href="https://www.youtube.com/watch?v=uMwFWDIFVCU">Folgers</a>, a commodity worth 5 cents a cup. Starbucks broke that anchoring by making coffee a luxury experience, and we think our apps can stand out in a similar way.</p>

<p>To find our new price, we downloaded a bunch of popular successful photo and video apps that offer both subscriptions and Pay-Once. We found Pay-Once prices were around $60. As the goal of the launch was to stem negativity, we decided on $36, with a launch discount of $30. If faced with complains about subscriptions, we could say, “There’s also a pay once option!.” If anyone complains about the pay-once price, we can then explain it’s half of what other apps charge. </p>

<p>The ‘just charge more’ theory makes sense on paper, but we decided to run a secret test to verify our ideas. In the summer leading up to launch, we quietly raised the price of Halide 1.0 by $1 every week. We stopped at $20, partly because we didn’t want to draw too much attention to our experiment, and partly because it felt wrong to charge new users the final price for a product on its way out the door. It kept selling — and we did not get complaints. Our Pay-Once pricing seemed validated.</p>

<p>For our subscription price, $11.99 a year just felt right. It would cover our costs for growing the company after Apple’s cut. We decided to launch Mark II at a discount: the initial price of $9.99 per year would reward early adopters, who would lock in a lower price. We also figured it would jump-start our subscriber base.</p>

<p>Now we just had to come up with the last detail: the upgrade path for Halide 1.0 users. This was not going to be easy.</p>

<h3>The One Halide Model</h3>

<p>Going from Halide to Halide Mark II could be done in a few ways. We could release a second Halide app. After all, this was basically a new app. We had completely redesigned it, re-worked many of its core features and added and changed over a hundred other features and aspects. Forget about Halide, meet Halide Mark II!</p>

<figure class="wp-block-image size-large is-style-full-width"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1424x703.jpg" alt="" class="lazy lazy-hidden wp-image-5672" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1424x703.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1536x759.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-2048x1012.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-450x222.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1619x800.jpg 1619w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1360x672.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-800x395.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-2000x988.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-900x445.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-768x379.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1424x703.jpg" alt="" class="wp-image-5672" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1424x703.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1536x759.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-2048x1012.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-450x222.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1619x800.jpg 1619w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1360x672.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-800x395.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-2000x988.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-900x445.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-768x379.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript></figure>

<p>The problem, however, is that we’d have two Halides on the App Store. It would confuse anyone searching for our app —after all, which one is the ‘right’ one? There was also the complexity of trying to give a discount to our existing users; Apple’s “Bundle” discount system doesn’t work with in-app purchases.</p>

<p>Eventually, another solution dawned on us: just replace Halide 1. One day, every existing Halide user would wake up with Mark II on their phone. Existing users have an expectation of continuity, though. It would be completely unacceptable to force our users pay a second time to continue using the app. Perhaps, in theory, we could lock new features behind an In-App-Purchase. This didn’t sit right with us. It just didn’t feel good.</p>

<p>We decided on the ultimate gesture of good will: all existing users would get Mark II for free. After one year, Halide still works, but they will have to upgrade to access <em>new</em> new stuff. That’s <strong>four and a half years</strong> of free updates.</p>

<p>When it comes to that transition, we know this is going to be complicated. But hey, it’s a one-time-only thing for Halide 1 users. We still don’t know how we’ll implement it, as it depends on whatever we ship this year, but I guess we’ll cross that bridge when we come to it.</p>

<h3>Shipping Mark II</h3>

<p>Okay, we had a plan. Now we just had to actually ship this enormous project.</p>

<p>Half the challenge of a big upgrade is supporting the old version of your app. In small updates, you would build your new features into the old app hidden behind flags, and un-hide them when they’re ready to release. We couldn’t do that in our case, because too much of Mark II would change. When we say it was like a whole new app, we really mean it.</p>

<figure class="wp-block-image size-large is-style-full-width"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1424x712.jpg" alt="" class="lazy lazy-hidden wp-image-5673" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1424x712.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1536x768.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-2048x1024.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-450x225.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1600x800.jpg 1600w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1360x680.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-800x400.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-2000x1000.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-900x450.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-768x384.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1424x712.jpg" alt="" class="wp-image-5673" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1424x712.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1536x768.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-2048x1024.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-450x225.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1600x800.jpg 1600w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1360x680.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-800x400.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-2000x1000.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-900x450.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-768x384.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript></figure>

<p>That also meant that we effectively had to support two apps. We decided to release one last “big” update to Halide 1.x <a href="https://lux.camera/halide-1-16-better-raw-three-ways/">in March 2020</a>, and it was painful. In addition to halting progress on Halide 2.0, we had to duplicate some work as we ported over the 1.x changes to the new codebase. After that update, we knew enough was enough. We would halt all updates to Halide 1.x. Everything was going into Mark II.</p>

<p>We knew we had to get it out before the fall launch of new iPhones, in part because we have to update Halide to accompany the hardware changes. If Mark II wasn’t ready, fall would be dominated by updating Halide 1.x, and there’s no way Mark II would launch before 2021. On top of this, it’s a very bad look to launch a significant “paid update” right after a surge in sales.</p>

<p>We targeted September, when Apple typically releases its new hardware. With the deadline coming up, but took a big sigh of relief with the news the new iPhones were launching in October. Even with the extra month, we spent every last minute getting things into shape. It would have been absolutely impossible to ship Mark II in 2020 without bringing on our second iOS developer, <a href="https://twitter.com/RebeccaSlatkin">Rebecca</a>.</p>

<p>After a massive crunch to make that new hardware deadline, we put the finishing touches on it and submitted to Apple. App Review surprised us with repeated rejections due to our subscription sign-up flow. Despite so many news about prolific App Store scams, it turns out App Review system is <em>very</em> strict when it comes to ensuring your subscription terms and prices are clear. They even had notes on seemingly small things, like the placement of our “Terms and Service” button. None of this was onerous, but it took a week of back-and-forth to get our final build approved.</p>

<h3>Launch Day</h3>

<p>At 7:00 a.m. on October 22—a day before the iPhone 12 would be in stores—we pressed the “Release” button. We had a press embargo set for 9:00 AM. Neither us nor the press would mention our big update until then.</p>

<p>Then it happened. Minutes after 7 AM, reports rolled in with the worst imaginable bug: users who already paid for Halide 1.0 weren’t getting their free upgrade. While some users had read our blog post that explained they got a free upgrade, and understood this must be a bug, most users were unaware of our plans. They thought we expected them to pay a second time, and negative reviews and angry tweets began pouring in. No amount of pitchfork mitigation could save us from this kind of angry mob.</p>

<p>If that bug was there past our 9:00 a.m. press embargo, it could have destroyed the whole release. 7:15 to 7:25 a.m. were the most stressful ten minutes of my professional programming career, as we hacked together, tested, and submitted a fix to Apple. I begged our developer relations contact to expedite our review, which thankfully went through.</p>

<p>Aside from that incident, the launch couldn’t have gone better. The app itself received critical acclaim, and huge press coverage. A few commenters still complained about subscriptions, but years of building goodwill finally paid off as our own users came to our defense.</p>

<p>Many existing Halide users reached out to tell us that they were so happy with our approach that they decided to pay anyway. Support was so overwhelming that we hadn’t anticipated some of their requests: Some requested a way to <em>both</em> pay-once and subscribe, a scenario we had not imagined! We have since expanded our ways that existing users can support us, and added a special icon for those absolute heroes. Yes, our users are the absolute best. If that’s you, thank you so much.</p>

<h3>Scaling Support</h3>

<p>The influx of new users put a lot of stress on support, which was split among our team. Fortunately, after asking around our network, we met our <em>amazing</em> new support lead who is now is not only answering customers faster than ever, but helping us write support documentation and more. Thanks Jaimi!</p>

<p>If you have ever contacted us after the big launch, you might have emailed with her. Send her a note of appreciation <a href="mailto:support@halide.cam">here</a> if you’d like!</p>

<h3>The Free App Problem</h3>

<p>There was one post-launch surprise that was out of our control: the only way for us to offer the choice between Pay-Once and subscriptions is to make the app free to download, and throwing up a “paywall” at launch. The App Store doesn’t surface this clearly: it just lists it on the “Free” charts. Many folks downloaded Halide expecting it to be free, and get upset that we ask for payment. </p>

<p>We quickly added a disclaimer to the very top of our App Store description: “Please note Halide is not free. We offer a 7-day free trial for annual memberships. Don’t like subscriptions? You can also buy the app outright with a single in-app purchase.” It doesn’t seem to help. To this day, our top source of negative reviews are people who are shocked you need to either pay for the app or start the free trial. We’re lucky that we have a lot of very happy users that still leave positive reviews. </p>

<p>We’re not alone in this, it seems: Apple Design Award candidate (Not Boring) Weather has the same problem (and solution):</p>

<figure class="wp-block-image size-large"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1424x975.png" alt="" class="lazy lazy-hidden wp-image-5534" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1424x975.png 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1536x1051.png 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-2048x1402.png 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-450x308.png 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1169x800.png 1169w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1360x931.png 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-800x547.png 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-2000x1369.png 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-900x616.png 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-768x526.png 768w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1424x975.png" alt="" class="wp-image-5534" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1424x975.png 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1536x1051.png 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-2048x1402.png 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-450x308.png 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1169x800.png 1169w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1360x931.png 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-800x547.png 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-2000x1369.png 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-900x616.png 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-768x526.png 768w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript></figure>

<p>Apple could solve this problem in two ways. First, they could update the UI. Right now the only insight the user has into the apps business model is the download button. It’s either “GET” or something like “$1.99,” and users think the former always means “FREE.” I don’t know if the solution involves a third type of button, or some other label, but the fundamental problem is that the App Store UX needs some rethinking.</p>

<p>There’s a much simpler solution short of a design overhaul. For apps that require payment to function, don’t let users leave a review unless they’ve at least started the free trial.</p>

<h3>Pro Phones, ProRAW, Per Month</h3>

<p>We, of course, caught zero breaks after launch. We updated the app for the larger and smaller iPhones that were out a bit later. <a href="https://lux.camera/the-iphone-12-pro-max-real-pro-photography/">The iPhone 12 Pro Max camera</a> in particular proved to be a fantastic pairing with Halide.</p>

<figure class="wp-block-image size-large is-style-full-width"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1424x712.jpg" alt="" class="lazy lazy-hidden wp-image-5535" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1424x712.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1536x768.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-2048x1024.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-450x225.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1600x800.jpg 1600w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1360x680.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-800x400.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-2000x1000.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-900x450.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-768x384.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1424x712.jpg" alt="" class="wp-image-5535" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1424x712.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1536x768.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-2048x1024.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-450x225.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1600x800.jpg 1600w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1360x680.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-800x400.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-2000x1000.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-900x450.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-768x384.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript></figure>

<p>December saw <a href="https://lux.camera/understanding-proraw/">our last major update of 2020, with ProRAW support</a>. We went above-and-beyond the ProRAW support available in the first-party app to address the unwieldy file sizes of ProRAW. By letting users choose 10-bit capture, file sizes dropped up to 50%. We added a setting to disable Deep Fusion, and more. </p>

<p>Alongside the update, <a href="https://lux.camera/understanding-proraw/">we published a deep-dive into ProRAW</a>, and RAW in general. The positive reception bodes well, as it’s our long term strategy to help people become better photographers. We can’t wait to share similar deep-dives in the future.</p>

<p>We weren’t quite done there: Some customers told us that they thought Halide was $9.99 a <em>month</em>, not a year, and had decided to pay anyway. We took this as a sign we should launch monthly subscriptions sooner rather than later, and they launched in late January. </p>

<h3>The Notorious XPC</h3>

<p>Those are cool features, but let’s talk bugs. Between iOS 14 and our own massive code changes, a <em>lot </em>had changed with Mark II. We decided to start the new year ensuring Halide was in good shape. Jaimi was invaluable in identifying bugs, and found the biggest issue, by far, was a failure to save photos. It was accompanied by a cryptic error involving a “helper process” or “XPC,” which stands for “Cross Process Communication.”*</p>

<p class="has-small-font-size">*On that note, if your photos in Halide ever do fail to save, we have a special Rescue mode built-in. <a href="https://lux.camera/halide-1-16-better-raw-three-ways/">More on that in this post.</a> </p>

<p>These clues suggested this was a bug in iOS itself, and it seemed to correlate more with iOS 14 than Mark II. We reported the issue to Apple in November 2020, and heard nothing back. In January, with reports piling up, we decided to build a web-service that allowed users to report capture errors in Halide.</p>

<figure class="wp-block-image size-large"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk.jpg" alt="" class="lazy lazy-hidden wp-image-5156" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk.jpg 852w, https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk-450x361.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk-800x642.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk-768x617.jpg 768w" sizes="(max-width: 852px) 100vw, 852px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk.jpg" alt="" class="wp-image-5156" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk.jpg 852w, https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk-450x361.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk-800x642.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk-768x617.jpg 768w" sizes="(max-width: 852px) 100vw, 852px"></noscript></figure>

<p>It turned out about 0.01% of users ran into the problem ever day. While that sounds small, that means one out of every 10,000 customers will be get very mad and probably leave an angry review.</p>

<p>We dug deeper and found it to be a bug when iOS needs to free up memory. Sometimes iOS terminates the program that manages your photo library <em>assetsd</em>. There’s nothing we can do short of telling users to restart their phone. (We kid you not, it might also help to manually quit apps, but we’re not going to recommend it.)</p>

<p>All of this was a reminder of the need to grow the team, as we wasted weeks of engineering time on this bug. It isn’t about, “twice the engineers can ship twice the features.” It’s about redundancy. These unexpected time sinks shouldn’t grind feature development to a standstill.</p>

<h3>Halide for iPad</h3>

<p>2021 has been packed with working on our ambitious plans. One of them we released earlier this month, when we launched <a href="https://lux.camera/halide-pro-camera-for-ipad/">Halide for iPad</a>. </p>

<figure class="wp-block-image size-large is-style-full-width"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1424x712.jpg" alt="" class="lazy lazy-hidden wp-image-5536" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1424x712.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1536x768.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-2048x1024.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-450x225.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1600x800.jpg 1600w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1360x680.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-800x400.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-2000x1000.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-900x450.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-768x384.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1424x712.jpg" alt="" class="wp-image-5536" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1424x712.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1536x768.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-2048x1024.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-450x225.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1600x800.jpg 1600w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1360x680.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-800x400.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-2000x1000.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-900x450.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-768x384.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript></figure>

<p>While we planned to launch iPad support with Mark II, it was cut two months before the launch to make our October deadline. This turned out to be a perfect move, not only for Mark II but the feature itself. The extra time in 2021 let us absolutely perfect the iPad experience, and take it to another new level. We even timed it with the release of the new M1 iPad Pro.</p>

<p>In terms of marketing, Halide for iPad was allowed to stand on its own, rather than be exist as a Mark II bullet point. It even gave us enough time to produce our first fancy ad with our incredible resident videographer, <a href="https://twitter.com/jacksonhvisuals">Jackson Hayes</a>.</p>

<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><p class="wp-block-embed__wrapper">
<noscript><iframe loading="lazy" title="This is Big: Introducing Halide 2.2" src="https://www.youtube.com/embed/I2YOViisnvg?start=1&amp;feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>VIDEO</iframe></noscript>
</p></figure>

<p>Halide for iPad was a perfect lead-in to our four year anniversary. That brings us to today!</p>

<h2>The Numbers</h2>

<p>Let’s look at the year in review. We expected 2020 revenue to be lower than 2019, and… it was. There’s no twist here. We had an unusually good 2019, followed by a once-in-a-lifetime pandemic. AppFigures reports app downloads across the <em>entire</em> “Photo &amp; Video” category were down 35% from the year before. </p>

<figure class="wp-block-image size-large"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31193715/Appfigures-Index.png" alt="" class="lazy lazy-hidden wp-image-5030" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31193715/Appfigures-Index.png 698w, https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31193715/Appfigures-Index-450x222.png 450w" sizes="(max-width: 698px) 100vw, 698px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31193715/Appfigures-Index.png" alt="" class="wp-image-5030" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31193715/Appfigures-Index.png 698w, https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31193715/Appfigures-Index-450x222.png 450w" sizes="(max-width: 698px) 100vw, 698px"></noscript><figcaption>The AppFigures index of “Photo &amp; Video” app downloads</figcaption></figure>

<p>On top of this, Halide 1.x updates waned as we focused everything on Mark II. That meant fewer sales for the first ten months of the year. Then we went and <em>gave away</em> Mark II to existing users. With all of that context, here’s the graph:</p>

<figure class="wp-block-image size-large"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy.png" alt="" class="lazy lazy-hidden wp-image-5693" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy.png 1385w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-450x227.png 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-1360x685.png 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-800x403.png 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-900x454.png 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-768x387.png 768w" sizes="(max-width: 1385px) 100vw, 1385px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy.png" alt="" class="wp-image-5693" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy.png 1385w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-450x227.png 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-1360x685.png 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-800x403.png 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-900x454.png 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-768x387.png 768w" sizes="(max-width: 1385px) 100vw, 1385px"></noscript></figure>

<p>While company revenue in 2020 is down 47% from 2019, it’s up 41% from 2018. The vast majority or revenue comes from Halide. For a launch about investment over profit, we are <em>very</em> happy with the results of the last eight months.</p>

<h3>Subscriptions</h3>

<p>Let’s talk about the ‘s-word’. How did that go? In brief: good! While subscribers outnumber Pay-Once buyers by almost five to one, Pay-Once revenue makes up 39% of total revenue. We really think that it’s important to cater to a segment of your users that would not even consider a subscription at any cost out of principle. </p>

<p>Out of our subscribers, 92% are on the annual subscription, which is expected. Not only are annual subscriptions a better deal, but they launched months earlier.</p>

<p>We worried that launching monthlies would eat into our annual plans, but we were surprised to find no impact. It seems monthly subscriptions were purely additive to revenue. About 35% of new subscriptions are monthly, and contribute to 10% of our revenue. </p>

<p>Mark II units sold (active subscribers + Pay Once) are equal to 25% of our monthly active users. We assume many, if not most, Mark II sales came from brand new users. That’s all to say, we’re very interested in seeing how many 1.x users upgrade after their year of free updates end. Our user base is now a delightful mix of Halide ‘veterans’ and newcomers that have only known the refined Mark II. </p>

<p>As we said earlier, coffee once cost 5 cents a cup. Today, independent coffee roasters show people will pay a premium for love and care put into each cup. While the app gold rush of 2009 gave way to cheap or free apps, we hope the success of Halide’s pricing shows there’s a market in “<a href="https://www.drivencoffee.com/blog/coffee-waves-explained/">Second Wave</a> Apps” which cater to quality.</p>

<p>When Halide came out, many questioned our wisdom in what they perceived as a crowded area of photo and video apps. We thought — and continue to think — the future is bright. The sun is just starting to rise on a new landscape of photography apps.</p>

<h2>In Closing</h2>

<p>Like the rest of the world, we had big plans (and low expectations) for 2020. When confronted with a worldwide pandemic, we doubled down on what we were passionate about. Rather than focus on revenue, we built a solid foundation for our next big things, and walked away very happy with what we built, and how we grew.</p>

<p>Four years is a major milestone for new companies, a time when you face existential questions. Do we want to stick around for another few years? Are we happy doing what we’re doing? Do we believe in the future of the company? Our answer is a stronger-than-ever, capital-Y, <strong>Yes.</strong></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.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.svg#icon-rss2"></use>
</svg> RSS</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.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.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.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.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>
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>

+ 476
- 0
cache/2021/0c45751cd69748ca779b1442b26ad6c3/index.md View File

@@ -0,0 +1,476 @@
title: Lux Year 4: Doubling Down
url: https://lux.camera/lux-year-4-doubling-down/
hash_url: 0c45751cd69748ca779b1442b26ad6c3

<p>Four years ago, we launched <a href="http://halide.cam">Halide</a> from a kitchen dinner table in Sebastiaan’s apartment in San Francisco. We didn’t have huge ambitions when we built and launched our little camera app: we had made something that was great for our own needs. Perhaps, we thought, a few others would like it too. Four years later, it’s not a little app anymore. It’s now a business. A company!</p>



<figure class="wp-block-gallery columns-3 is-cropped"><figcaption class="blocks-gallery-caption">Halide 1.0’s Launch, May 2017</figcaption></figure>



<p>Four years is a major milestone for a new company. At startups, this is when employees start facing existential questions. Do you want to stick around another few years? Are you happy doing what you’re doing? Do you believe in the future of the company? </p>



<p>We aren’t startup employees. We came here chasing our passions, not profit. The ultimate question is whether we can continue pursuing those passions. After the success of our second app, Spectre, we asked ourselves, “What do we want to be when we grow up?”</p>



<p>We talked many a late night and came up with a roadmap of our ambitions: three apps.<a href="https://lux.camera/lux-year-3-the-end-of-the-beginning/"> We teased them last year</a>:</p>



<figure class="wp-block-image size-large"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap.jpeg" alt="" class="lazy lazy-hidden wp-image-5400" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap.jpeg 1024w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap-450x225.jpeg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap-800x400.jpeg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap-900x450.jpeg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap-768x384.jpeg 768w" sizes="(max-width: 1024px) 100vw, 1024px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap.jpeg" alt="" class="wp-image-5400" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap.jpeg 1024w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap-450x225.jpeg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap-800x400.jpeg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap-900x450.jpeg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02015902/roadmap-768x384.jpeg 768w" sizes="(max-width: 1024px) 100vw, 1024px"></noscript></figure>



<p>We know everyone will love these apps, but there’s one small problem: our two existing apps fill all the hours in our day. While we delegate some work (like promotional sites) to contractors (thank you, Jonathan!), we need to build out our core team to build out our core products. We needed to rev on the company.</p>



<p>We decided to spend 2020 tackling our most ambitious (and possibly-controversial) dream product: “Stark”. We knew this was going to be a big project, not only technically, but one personal and close to our hearts. Stark would launch as <a href="https://lux.camera/pro-camera-action-introducing-halide-mark-ii/">Halide “Mark II”</a>.</p>



<p>We knew Mark II would define our fourth year, and if everything went according to plan, it would carry us through to the next phase. So how did it go?</p>



<p>This retrospective tells all. It explains why Mark II laid the groundwork for the company. We’ll cover its development and launch, the user reaction, and finally touch on financials. Read to see our moments of fear, joy, and everything in between…</p>



<h2>Why Halide 2.0?</h2>



<p>Why double down on an existing product? After three years, Halide was doing extremely well. It had become a well-known name: you could spot it on the home screen in a tech website’s review of the latest iPhones, catch it in the wild being used by professional and amateur photographers alike, and see it featured in every country the App Store is available. </p>



<figure class="wp-block-image size-large is-style-full-width"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1424x712.jpg" alt="" class="lazy lazy-hidden wp-image-5670" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1424x712.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1536x768.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-2048x1024.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-450x225.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1600x800.jpg 1600w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1360x680.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-800x400.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-2000x1000.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-900x450.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-768x384.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1424x712.jpg" alt="" class="wp-image-5670" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1424x712.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1536x768.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-2048x1024.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-450x225.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1600x800.jpg 1600w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-1360x680.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-800x400.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-2000x1000.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-900x450.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191728/manual_close_iphone_12-Edit-1-768x384.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript></figure>



<p>Halide was designed and built as a passion project. We launched it with no idea it would develop a big following, and we never thought we’d be adding features for years. </p>



<p>From a design perspective, Halide 1.0 was born on home-button iPhones; a redesign let us perfect it for the latest devices and old ones alike, and future-proof it for many more years of updates. From an engineering perspective, we had ambitious ideas to engineer the best photography tools available by a mile, and to really take advantage of the latest technologies.</p>



<p>Then there’s the money part. Halide experienced solid revenue growth for years, despite giving away huge, free updates for three years. We believe deeply in goodwill, and thinks it makes the best marketing. We didn’t want to chop-up Halide so we could hide features behind additional in-app purchases. It was all going well, so why mess with what works? </p>



<p>Well, in the words of Ed Catmull, “Success hides problems.”</p>



<figure class="wp-block-image size-large"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1424x949.png" alt="" class="lazy lazy-hidden wp-image-5532" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1424x949.png 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1536x1024.png 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-2048x1365.png 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-450x300.png 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1200x800.png 1200w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1360x907.png 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-800x533.png 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-2000x1333.png 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-900x600.png 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-768x512.png 768w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1424x949.png" alt="" class="wp-image-5532" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1424x949.png 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1536x1024.png 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-2048x1365.png 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-450x300.png 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1200x800.png 1200w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-1360x907.png 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-800x533.png 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-2000x1333.png 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-900x600.png 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174421/Spectre-on-iPhone-XR-1-768x512.png 768w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript></figure>



<p>While gross revenue more than doubled from 2018 to 2019, we did not owe that to Halide. We owed that to the launch of our second app, Spectre. Not only was the launch a massive success, but Apple awarded it <a href="https://www.apple.com/newsroom/2019/12/apple-celebrates-the-best-apps-and-games-of-2019/">iPhone App of the Year</a>. This had a halo effects on Halide thanks to our multi-app bundle. We were beyond proud of 2019 — but it would be dangerous for us to confuse a few home runs with building a sustainable business.</p>



<p>As a two person company, Halide development slowed down while we built Spectre. Sure, we could chase another home run by starting a third app, but now we’d have to shelve both Halide and Spectre. This is the tradeoff of a Pay-Once model: you’re incentivized to ship big new apps that draw headlines, rather than investing in your existing portfolio, and improving the lives of your users.</p>



<p>Users noticed Halide updates slowing during Spectre’s development. We kept fielding questions from our die-hard Halide users asking about our plans for the next update. A few even asked if it was abandoned! It was clear users craved more from Halide, but that’s not all: <em>we</em> wanted to keep building Halide. </p>



<p>There was just no way to build new apps without growing our little team. To do that, we need stable revenue.</p>



<p>As a Bay Area company, we know one approach is venture capital. But we built Halide as a passionate, opinionated project, and well… it is <em>very</em> hard to bring on VCs without compromising on the things that makes our apps great. </p>



<p>Another way to increase revenue is to—hear me out here—<em>charge more</em>. </p>



<p>We always felt Halide was underpriced. We launched in 2017 back when many “pro” apps cost $3. Halide stood in a class of its own, so we felt we comfortable charging $6. It worked. It worked so well, in fact, that by 2019 all the camera apps (including a free one) went up to match its price. Meanwhile, our most passionate users told us, “I wish I could pay you more.”</p>



<p>We knew Mark II would raise the bar, and with the work we were putting in it was looking more and more like a new app than an upgrade. This felt to us as the best time to release it as a new app, reset our price—or introduce a new business model. We’ll get to that in a second. </p>



<p>A second issue that stood in the way of hiring someone: revenue volatility. Consider this breakdown of 2018:</p>



<figure class="wp-block-image size-large"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-1424x579.png" alt="" class="lazy lazy-hidden wp-image-5685" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-1424x579.png 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-1536x625.png 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-450x183.png 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-1360x553.png 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-800x326.png 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-900x366.png 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-768x313.png 768w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy.png 1843w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-1424x579.png" alt="" class="wp-image-5685" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-1424x579.png 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-1536x625.png 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-450x183.png 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-1360x553.png 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-800x326.png 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-900x366.png 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy-768x313.png 768w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02192821/2018-Monthly-Sales-copy.png 1843w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript><figcaption>2018 Revenue by Month. New hardware drops in Spring and Fall, causing sales spikes</figcaption></figure>



<p>During the Holidays, we earn 4x the revenue of summer months. That’s expected and fine for ephemeral products, like video games, but users expect camera app updates year-round. Oh, and we need to pay employees year-round. It’s scary to grow a company with this volatility; one bad winter, and everything falls apart. If we hire people, we want them to be able to count on us to be able to pay them. </p>



<p>Remember, this is 2020. As a pandemic suddenly happened, people stopped going on photography trips and started baking sourdough. Revenue dipped — so low, in fact, that we slightly panicked about hiring another developer. Revenue recovered a month later, when Apple launched the iPhone SE2, but it was a still wakeup call. If we want to grow the team, we can’t bet so much on an unending stream of new users that show up.</p>



<p>We wanted to keep building Halide. Our users wanted us to keep building Halide. And we wanted to expand the team. The path seemed clear: After years of free updates, it was time to dip our toes into into recurring revenue. When I was growing up, we called them “Paid Upgrades,” but the App Store… complicates things.</p>



<h3>Enter Subscriptions</h3>



<p>The App Store lacks any native concept of a paid upgrade. The closest it offers are subscriptions. It isn’t our ideal solution, but on the bright side, subscriptions can reduce volatility. For example, rather than $24 for an annual upgrade, you could charge $2 a month. We decided to start considering a Halide subscription model.</p>



<figure class="wp-block-image size-large is-style-full-width"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1424x817.jpg" alt="" class="lazy lazy-hidden wp-image-5540" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1424x817.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1536x881.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-2048x1175.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-450x258.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1395x800.jpg 1395w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1360x780.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-800x459.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-2000x1147.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-900x516.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-768x441.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1424x817.jpg" alt="" class="wp-image-5540" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1424x817.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1536x881.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-2048x1175.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-450x258.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1395x800.jpg 1395w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-1360x780.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-800x459.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-2000x1147.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-900x516.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02175843/Post4year-1351-768x441.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript></figure>



<p>We realized there were immediate benefits. There’s powerful App Store features only supported though subscriptions: a paid app has one price, that is more or less the same around the world. With subscriptions, you can set per-country pricing. That 30% fee Epic complains so much about? If your retain a subscriber for a year, Apple reduces their cut from 30% to 15%. Want to offer free trials? It only takes a few clicks.</p>



<p>All those benefits aside, with stable recurring revenue lets us invest in updates that serve our active users, rather than splashy updates to bring in new users. Subscriptions also open the door to products with ongoing costs, such as servers. We don’t pre-announce products, so we’ll just leave that there…</p>



<p>That all sounds great. However, as I mentioned, we love goodwill, and a lot of people wince when they hear “subscription.” The first thing that pops up in a user’s head are scammy companies that make cancellation a nightmare, like multi-level marketing schemes, gym memberships, and Adobe. The App Store prevents these shenanigans: you get a reminder email before renewal, and you can cancel within the <em>Settings</em> app in seconds. Whenever a company offers a subscription, I always try to buy it through the App Store.</p>



<p>Some folks absolutely loathe subscriptions on <em>principle,</em> and will never rent something if they can own it. This is not unreasonable. Halide is like a camera, and while <a href="https://www.borrowlenses.com">professionals are used to renting gear</a>, most consumers own their camera.</p>



<p>We wish the App Store offered more options than subscriptions. We’d love something similar to the Sketch licensing model; if you don’t renew Sketch every year, it still works, but you stop receiving updates. Few can argue against the fairness of that, but since that doesn’t exist on the App Store, the best we could offer is a separate Pay-Once option in Halide.</p>



<p>Note I said ‘few’ can argue against the fairness. Unfortunately, there’s that vocal minority of users that fill with rage at sight of subscriptions, pay-once option or not. We can never please them. These folks will leave one star reviews and toxic internet comments. On a personal level, you have to brace yourself for negativity. On a strategic level, you need to prepare for an angry mob that will amplify outrage over any changes or mistakes. I will admit that we were afraid of having a potential angry mob on our hands.</p>



<p>We figured the ultimate rebuttal and pitchfork mob deterrent is to just offer a pay-once option at a sustainable price point. Which leaves us with the question: what are the right price points for Pay-Once and Subscriptions?</p>



<h3>A Crash Course in Pricing</h3>



<p>When I was young and looking for my first job, I asked my dad, who majored in economics, what I should be paid. I asked, “What am I worth?,” and he replied, “By definition, you are worth whatever someone pays.”</p>



<figure class="wp-block-image size-large is-style-full-width"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1424x949.jpg" alt="" class="lazy lazy-hidden wp-image-5533" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1424x949.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1536x1024.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-2048x1365.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-450x300.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1200x800.jpg 1200w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1360x907.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-800x533.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-2000x1333.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-900x600.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-768x512.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1424x949.jpg" alt="" class="wp-image-5533" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1424x949.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1536x1024.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-2048x1365.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-450x300.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1200x800.jpg 1200w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-1360x907.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-800x533.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-2000x1333.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-900x600.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174454/Post4year-1379-768x512.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript></figure>



<p>Outside of commodities like aluminum and orange futures, the cost of materials and labor has no bearing on price. It’s all about what customers will pay for the value you deliver. A Kia and Porsche 911 cost the same to manufacture, and serve the same function, but the Porsche costs 10× more. That’s because people will pay a premium for design, performance, and even the cool-factor. Nobody grew up with a poster of a Kia hanging in their bedroom.</p>



<p>Of course humans use <a href="https://en.wikipedia.org/wiki/Predictably_Irrational#The_Fallacy_of_Supply_and_Demand">price anchoring</a> to determine what’s reasonable. If I ask you what you’d pay for a cup of coffee, you probably think $5, thanks to Starbucks. Believe it or not, people used to think of coffee like <a href="https://www.youtube.com/watch?v=uMwFWDIFVCU">Folgers</a>, a commodity worth 5 cents a cup. Starbucks broke that anchoring by making coffee a luxury experience, and we think our apps can stand out in a similar way.</p>



<p>To find our new price, we downloaded a bunch of popular successful photo and video apps that offer both subscriptions and Pay-Once. We found Pay-Once prices were around $60. As the goal of the launch was to stem negativity, we decided on $36, with a launch discount of $30. If faced with complains about subscriptions, we could say, “There’s also a pay once option!.” If anyone complains about the pay-once price, we can then explain it’s half of what other apps charge. </p>



<p>The ‘just charge more’ theory makes sense on paper, but we decided to run a secret test to verify our ideas. In the summer leading up to launch, we quietly raised the price of Halide 1.0 by $1 every week. We stopped at $20, partly because we didn’t want to draw too much attention to our experiment, and partly because it felt wrong to charge new users the final price for a product on its way out the door. It kept selling — and we did not get complaints. Our Pay-Once pricing seemed validated.</p>



<p>For our subscription price, $11.99 a year just felt right. It would cover our costs for growing the company after Apple’s cut. We decided to launch Mark II at a discount: the initial price of $9.99 per year would reward early adopters, who would lock in a lower price. We also figured it would jump-start our subscriber base.</p>



<p>Now we just had to come up with the last detail: the upgrade path for Halide 1.0 users. This was not going to be easy.</p>



<h3>The One Halide Model</h3>



<p>Going from Halide to Halide Mark II could be done in a few ways. We could release a second Halide app. After all, this was basically a new app. We had completely redesigned it, re-worked many of its core features and added and changed over a hundred other features and aspects. Forget about Halide, meet Halide Mark II!</p>



<figure class="wp-block-image size-large is-style-full-width"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1424x703.jpg" alt="" class="lazy lazy-hidden wp-image-5672" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1424x703.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1536x759.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-2048x1012.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-450x222.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1619x800.jpg 1619w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1360x672.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-800x395.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-2000x988.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-900x445.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-768x379.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1424x703.jpg" alt="" class="wp-image-5672" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1424x703.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1536x759.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-2048x1012.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-450x222.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1619x800.jpg 1619w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-1360x672.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-800x395.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-2000x988.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-900x445.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191744/mountain_close_iphone_12-Edit-1-768x379.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript></figure>



<p>The problem, however, is that we’d have two Halides on the App Store. It would confuse anyone searching for our app —after all, which one is the ‘right’ one? There was also the complexity of trying to give a discount to our existing users; Apple’s “Bundle” discount system doesn’t work with in-app purchases.</p>



<p>Eventually, another solution dawned on us: just replace Halide 1. One day, every existing Halide user would wake up with Mark II on their phone. Existing users have an expectation of continuity, though. It would be completely unacceptable to force our users pay a second time to continue using the app. Perhaps, in theory, we could lock new features behind an In-App-Purchase. This didn’t sit right with us. It just didn’t feel good.</p>



<p>We decided on the ultimate gesture of good will: all existing users would get Mark II for free. After one year, Halide still works, but they will have to upgrade to access <em>new</em> new stuff. That’s <strong>four and a half years</strong> of free updates.</p>



<p>When it comes to that transition, we know this is going to be complicated. But hey, it’s a one-time-only thing for Halide 1 users. We still don’t know how we’ll implement it, as it depends on whatever we ship this year, but I guess we’ll cross that bridge when we come to it.</p>



<h3>Shipping Mark II</h3>



<p>Okay, we had a plan. Now we just had to actually ship this enormous project.</p>



<p>Half the challenge of a big upgrade is supporting the old version of your app. In small updates, you would build your new features into the old app hidden behind flags, and un-hide them when they’re ready to release. We couldn’t do that in our case, because too much of Mark II would change. When we say it was like a whole new app, we really mean it.</p>



<figure class="wp-block-image size-large is-style-full-width"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1424x712.jpg" alt="" class="lazy lazy-hidden wp-image-5673" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1424x712.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1536x768.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-2048x1024.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-450x225.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1600x800.jpg 1600w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1360x680.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-800x400.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-2000x1000.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-900x450.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-768x384.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1424x712.jpg" alt="" class="wp-image-5673" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1424x712.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1536x768.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-2048x1024.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-450x225.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1600x800.jpg 1600w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-1360x680.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-800x400.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-2000x1000.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-900x450.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02191750/thumb_close_2_iphone_12-Edit-p3-768x384.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript></figure>



<p>That also meant that we effectively had to support two apps. We decided to release one last “big” update to Halide 1.x <a href="https://lux.camera/halide-1-16-better-raw-three-ways/">in March 2020</a>, and it was painful. In addition to halting progress on Halide 2.0, we had to duplicate some work as we ported over the 1.x changes to the new codebase. After that update, we knew enough was enough. We would halt all updates to Halide 1.x. Everything was going into Mark II.</p>



<p>We knew we had to get it out before the fall launch of new iPhones, in part because we have to update Halide to accompany the hardware changes. If Mark II wasn’t ready, fall would be dominated by updating Halide 1.x, and there’s no way Mark II would launch before 2021. On top of this, it’s a very bad look to launch a significant “paid update” right after a surge in sales.</p>



<p>We targeted September, when Apple typically releases its new hardware. With the deadline coming up, but took a big sigh of relief with the news the new iPhones were launching in October. Even with the extra month, we spent every last minute getting things into shape. It would have been absolutely impossible to ship Mark II in 2020 without bringing on our second iOS developer, <a href="https://twitter.com/RebeccaSlatkin">Rebecca</a>.</p>



<p>After a massive crunch to make that new hardware deadline, we put the finishing touches on it and submitted to Apple. App Review surprised us with repeated rejections due to our subscription sign-up flow. Despite so many news about prolific App Store scams, it turns out App Review system is <em>very</em> strict when it comes to ensuring your subscription terms and prices are clear. They even had notes on seemingly small things, like the placement of our “Terms and Service” button. None of this was onerous, but it took a week of back-and-forth to get our final build approved.</p>



<h3>Launch Day</h3>



<p>At 7:00 a.m. on October 22—a day before the iPhone 12 would be in stores—we pressed the “Release” button. We had a press embargo set for 9:00 AM. Neither us nor the press would mention our big update until then.</p>



<p>Then it happened. Minutes after 7 AM, reports rolled in with the worst imaginable bug: users who already paid for Halide 1.0 weren’t getting their free upgrade. While some users had read our blog post that explained they got a free upgrade, and understood this must be a bug, most users were unaware of our plans. They thought we expected them to pay a second time, and negative reviews and angry tweets began pouring in. No amount of pitchfork mitigation could save us from this kind of angry mob.</p>



<p>If that bug was there past our 9:00 a.m. press embargo, it could have destroyed the whole release. 7:15 to 7:25 a.m. were the most stressful ten minutes of my professional programming career, as we hacked together, tested, and submitted a fix to Apple. I begged our developer relations contact to expedite our review, which thankfully went through.</p>



<p>Aside from that incident, the launch couldn’t have gone better. The app itself received critical acclaim, and huge press coverage. A few commenters still complained about subscriptions, but years of building goodwill finally paid off as our own users came to our defense.</p>



<p>Many existing Halide users reached out to tell us that they were so happy with our approach that they decided to pay anyway. Support was so overwhelming that we hadn’t anticipated some of their requests: Some requested a way to <em>both</em> pay-once and subscribe, a scenario we had not imagined! We have since expanded our ways that existing users can support us, and added a special icon for those absolute heroes. Yes, our users are the absolute best. If that’s you, thank you so much.</p>



<h3>Scaling Support</h3>



<p>The influx of new users put a lot of stress on support, which was split among our team. Fortunately, after asking around our network, we met our <em>amazing</em> new support lead who is now is not only answering customers faster than ever, but helping us write support documentation and more. Thanks Jaimi!</p>



<p>If you have ever contacted us after the big launch, you might have emailed with her. Send her a note of appreciation <a href="mailto:support@halide.cam">here</a> if you’d like!</p>



<h3>The Free App Problem</h3>



<p>There was one post-launch surprise that was out of our control: the only way for us to offer the choice between Pay-Once and subscriptions is to make the app free to download, and throwing up a “paywall” at launch. The App Store doesn’t surface this clearly: it just lists it on the “Free” charts. Many folks downloaded Halide expecting it to be free, and get upset that we ask for payment. </p>



<p>We quickly added a disclaimer to the very top of our App Store description: “Please note Halide is not free. We offer a 7-day free trial for annual memberships. Don’t like subscriptions? You can also buy the app outright with a single in-app purchase.” It doesn’t seem to help. To this day, our top source of negative reviews are people who are shocked you need to either pay for the app or start the free trial. We’re lucky that we have a lot of very happy users that still leave positive reviews. </p>



<p>We’re not alone in this, it seems: Apple Design Award candidate (Not Boring) Weather has the same problem (and solution):</p>



<figure class="wp-block-image size-large"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1424x975.png" alt="" class="lazy lazy-hidden wp-image-5534" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1424x975.png 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1536x1051.png 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-2048x1402.png 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-450x308.png 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1169x800.png 1169w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1360x931.png 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-800x547.png 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-2000x1369.png 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-900x616.png 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-768x526.png 768w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1424x975.png" alt="" class="wp-image-5534" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1424x975.png 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1536x1051.png 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-2048x1402.png 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-450x308.png 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1169x800.png 1169w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-1360x931.png 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-800x547.png 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-2000x1369.png 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-900x616.png 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174651/Screen-Shot-2021-06-02-at-10.46.45-AM-768x526.png 768w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript></figure>



<p>Apple could solve this problem in two ways. First, they could update the UI. Right now the only insight the user has into the apps business model is the download button. It’s either “GET” or something like “$1.99,” and users think the former always means “FREE.” I don’t know if the solution involves a third type of button, or some other label, but the fundamental problem is that the App Store UX needs some rethinking.</p>



<p>There’s a much simpler solution short of a design overhaul. For apps that require payment to function, don’t let users leave a review unless they’ve at least started the free trial.</p>



<h3>Pro Phones, ProRAW, Per Month</h3>



<p>We, of course, caught zero breaks after launch. We updated the app for the larger and smaller iPhones that were out a bit later. <a href="https://lux.camera/the-iphone-12-pro-max-real-pro-photography/">The iPhone 12 Pro Max camera</a> in particular proved to be a fantastic pairing with Halide.</p>



<figure class="wp-block-image size-large is-style-full-width"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1424x712.jpg" alt="" class="lazy lazy-hidden wp-image-5535" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1424x712.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1536x768.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-2048x1024.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-450x225.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1600x800.jpg 1600w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1360x680.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-800x400.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-2000x1000.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-900x450.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-768x384.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1424x712.jpg" alt="" class="wp-image-5535" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1424x712.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1536x768.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-2048x1024.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-450x225.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1600x800.jpg 1600w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-1360x680.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-800x400.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-2000x1000.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-900x450.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174740/ProRAW-Capture-Options-768x384.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript></figure>



<p>December saw <a href="https://lux.camera/understanding-proraw/">our last major update of 2020, with ProRAW support</a>. We went above-and-beyond the ProRAW support available in the first-party app to address the unwieldy file sizes of ProRAW. By letting users choose 10-bit capture, file sizes dropped up to 50%. We added a setting to disable Deep Fusion, and more. </p>



<p>Alongside the update, <a href="https://lux.camera/understanding-proraw/">we published a deep-dive into ProRAW</a>, and RAW in general. The positive reception bodes well, as it’s our long term strategy to help people become better photographers. We can’t wait to share similar deep-dives in the future.</p>



<p>We weren’t quite done there: Some customers told us that they thought Halide was $9.99 a <em>month</em>, not a year, and had decided to pay anyway. We took this as a sign we should launch monthly subscriptions sooner rather than later, and they launched in late January. </p>



<h3>The Notorious XPC</h3>



<p>Those are cool features, but let’s talk bugs. Between iOS 14 and our own massive code changes, a <em>lot </em>had changed with Mark II. We decided to start the new year ensuring Halide was in good shape. Jaimi was invaluable in identifying bugs, and found the biggest issue, by far, was a failure to save photos. It was accompanied by a cryptic error involving a “helper process” or “XPC,” which stands for “Cross Process Communication.”*</p>



<p class="has-small-font-size">*On that note, if your photos in Halide ever do fail to save, we have a special Rescue mode built-in. <a href="https://lux.camera/halide-1-16-better-raw-three-ways/">More on that in this post.</a> </p>



<p>These clues suggested this was a bug in iOS itself, and it seemed to correlate more with iOS 14 than Mark II. We reported the issue to Apple in November 2020, and heard nothing back. In January, with reports piling up, we decided to build a web-service that allowed users to report capture errors in Halide.</p>



<figure class="wp-block-image size-large"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk.jpg" alt="" class="lazy lazy-hidden wp-image-5156" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk.jpg 852w, https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk-450x361.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk-800x642.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk-768x617.jpg 768w" sizes="(max-width: 852px) 100vw, 852px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk.jpg" alt="" class="wp-image-5156" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk.jpg 852w, https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk-450x361.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk-800x642.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31231144/twitter_EumzDXcVEAEedLk-768x617.jpg 768w" sizes="(max-width: 852px) 100vw, 852px"></noscript></figure>



<p>It turned out about 0.01% of users ran into the problem ever day. While that sounds small, that means one out of every 10,000 customers will be get very mad and probably leave an angry review.</p>



<p>We dug deeper and found it to be a bug when iOS needs to free up memory. Sometimes iOS terminates the program that manages your photo library <em>assetsd</em>. There’s nothing we can do short of telling users to restart their phone. (We kid you not, it might also help to manually quit apps, but we’re not going to recommend it.)</p>



<p>All of this was a reminder of the need to grow the team, as we wasted weeks of engineering time on this bug. It isn’t about, “twice the engineers can ship twice the features.” It’s about redundancy. These unexpected time sinks shouldn’t grind feature development to a standstill.</p>



<h3>Halide for iPad</h3>



<p>2021 has been packed with working on our ambitious plans. One of them we released earlier this month, when we launched <a href="https://lux.camera/halide-pro-camera-for-ipad/">Halide for iPad</a>. </p>



<figure class="wp-block-image size-large is-style-full-width"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1424x712.jpg" alt="" class="lazy lazy-hidden wp-image-5536" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1424x712.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1536x768.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-2048x1024.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-450x225.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1600x800.jpg 1600w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1360x680.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-800x400.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-2000x1000.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-900x450.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-768x384.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1424x712.jpg" alt="" class="wp-image-5536" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1424x712.jpg 1424w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1536x768.jpg 1536w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-2048x1024.jpg 2048w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-450x225.jpg 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1600x800.jpg 1600w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-1360x680.jpg 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-800x400.jpg 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-2000x1000.jpg 2000w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-900x450.jpg 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02174756/Parallax-Graphic-2-to-1-ratio-768x384.jpg 768w" sizes="(max-width: 1424px) 100vw, 1424px"></noscript></figure>



<p>While we planned to launch iPad support with Mark II, it was cut two months before the launch to make our October deadline. This turned out to be a perfect move, not only for Mark II but the feature itself. The extra time in 2021 let us absolutely perfect the iPad experience, and take it to another new level. We even timed it with the release of the new M1 iPad Pro.</p>



<p>In terms of marketing, Halide for iPad was allowed to stand on its own, rather than be exist as a Mark II bullet point. It even gave us enough time to produce our first fancy ad with our incredible resident videographer, <a href="https://twitter.com/jacksonhvisuals">Jackson Hayes</a>.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><p class="wp-block-embed__wrapper">
<noscript><iframe loading="lazy" title="This is Big: Introducing Halide 2.2" src="https://www.youtube.com/embed/I2YOViisnvg?start=1&amp;feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>VIDEO</iframe></noscript>
</p></figure>



<p>Halide for iPad was a perfect lead-in to our four year anniversary. That brings us to today!</p>



<h2>The Numbers</h2>



<p>Let’s look at the year in review. We expected 2020 revenue to be lower than 2019, and… it was. There’s no twist here. We had an unusually good 2019, followed by a once-in-a-lifetime pandemic. AppFigures reports app downloads across the <em>entire</em> “Photo &amp; Video” category were down 35% from the year before. </p>



<figure class="wp-block-image size-large"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31193715/Appfigures-Index.png" alt="" class="lazy lazy-hidden wp-image-5030" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31193715/Appfigures-Index.png 698w, https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31193715/Appfigures-Index-450x222.png 450w" sizes="(max-width: 698px) 100vw, 698px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31193715/Appfigures-Index.png" alt="" class="wp-image-5030" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31193715/Appfigures-Index.png 698w, https://cms-cdn.lux.camera/wp-content/uploads/2021/05/31193715/Appfigures-Index-450x222.png 450w" sizes="(max-width: 698px) 100vw, 698px"></noscript><figcaption>The AppFigures index of “Photo &amp; Video” app downloads</figcaption></figure>



<p>On top of this, Halide 1.x updates waned as we focused everything on Mark II. That meant fewer sales for the first ten months of the year. Then we went and <em>gave away</em> Mark II to existing users. With all of that context, here’s the graph:</p>



<figure class="wp-block-image size-large"><img loading="lazy" src="//lux.camera/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy.png" alt="" class="lazy lazy-hidden wp-image-5693" srcset="" data-srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy.png 1385w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-450x227.png 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-1360x685.png 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-800x403.png 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-900x454.png 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-768x387.png 768w" sizes="(max-width: 1385px) 100vw, 1385px"><noscript><img loading="lazy" src="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy.png" alt="" class="wp-image-5693" srcset="https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy.png 1385w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-450x227.png 450w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-1360x685.png 1360w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-800x403.png 800w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-900x454.png 900w, https://cms-cdn.lux.camera/wp-content/uploads/2021/06/02194521/Screen-Shot-2021-05-31-at-12.39.26-PM-copy-768x387.png 768w" sizes="(max-width: 1385px) 100vw, 1385px"></noscript></figure>



<p>While company revenue in 2020 is down 47% from 2019, it’s up 41% from 2018. The vast majority or revenue comes from Halide. For a launch about investment over profit, we are <em>very</em> happy with the results of the last eight months.</p>



<h3>Subscriptions</h3>



<p>Let’s talk about the ‘s-word’. How did that go? In brief: good! While subscribers outnumber Pay-Once buyers by almost five to one, Pay-Once revenue makes up 39% of total revenue. We really think that it’s important to cater to a segment of your users that would not even consider a subscription at any cost out of principle. </p>



<p>Out of our subscribers, 92% are on the annual subscription, which is expected. Not only are annual subscriptions a better deal, but they launched months earlier.</p>



<p>We worried that launching monthlies would eat into our annual plans, but we were surprised to find no impact. It seems monthly subscriptions were purely additive to revenue. About 35% of new subscriptions are monthly, and contribute to 10% of our revenue. </p>



<p>Mark II units sold (active subscribers + Pay Once) are equal to 25% of our monthly active users. We assume many, if not most, Mark II sales came from brand new users. That’s all to say, we’re very interested in seeing how many 1.x users upgrade after their year of free updates end. Our user base is now a delightful mix of Halide ‘veterans’ and newcomers that have only known the refined Mark II. </p>



<p>As we said earlier, coffee once cost 5 cents a cup. Today, independent coffee roasters show people will pay a premium for love and care put into each cup. While the app gold rush of 2009 gave way to cheap or free apps, we hope the success of Halide’s pricing shows there’s a market in “<a href="https://www.drivencoffee.com/blog/coffee-waves-explained/">Second Wave</a> Apps” which cater to quality.</p>



<p>When Halide came out, many questioned our wisdom in what they perceived as a crowded area of photo and video apps. We thought — and continue to think — the future is bright. The sun is just starting to rise on a new landscape of photography apps.</p>



<h2>In Closing</h2>



<p>Like the rest of the world, we had big plans (and low expectations) for 2020. When confronted with a worldwide pandemic, we doubled down on what we were passionate about. Rather than focus on revenue, we built a solid foundation for our next big things, and walked away very happy with what we built, and how we grew.</p>



<p>Four years is a major milestone for new companies, a time when you face existential questions. Do we want to stick around for another few years? Are we happy doing what we’re doing? Do we believe in the future of the company? Our answer is a stronger-than-ever, capital-Y, <strong>Yes.</strong></p>


+ 281
- 0
cache/2021/86eba8e465d7ce11ef61a0c61f878f21/index.html View File

@@ -0,0 +1,281 @@
<!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>
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>Poor in Tech (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="#f0f0ea">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f0f0ea">
<!-- 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="http://megelison.com/poor-in-tech">

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

<article>
<header>
<h1>Poor in Tech</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.svg#icon-home"></use>
</svg> Accueil</a> •
<a href="http://megelison.com/poor-in-tech" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<p><span>I knew I was the only poor person at my tech startup because nobody else ate the Hot Cheetos that were stocked in our free snack kitchen. Seaweed snacks were always empty. Nobody had those telltale red stains on their fingers but me. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because I made my breakfast and sometimes my lunch in that free snack kitchen, loading up on hummus and hard-boiled eggs and apples rather than spending $25 a day to grab something in the financial district in San Francisco. I made excuses about wanting to work through my break, wanting to impress my boss. My boss had her kale salad and vegan soup delivered. We did not talk while we ate. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because once I realized they would keep restocking the tampons in the ladies’ room, I stopped bringing any from home. I said as much in a fit of daring to a woman with whom I thought I would become friends. She admonished me for using bleached cotton products in my vagina. We are not friends. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because I realized the same thing about Advil. The bottle was never empty and never replaced. I might have been the only one who knew, or needed it, or who still deigned to use OTC painkillers. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because people kept bragging their bodily purity based on what they would not eat or drink, and I could only feel pity for them. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because I couldn’t restrain myself from eating and drinking myself into an absolute sickness anytime they threw a party and expressed no limits on our consumption. The jobs I had worked before that had put up signs in the break room warning us that stealing someone’s lunch was a termination-worthy offense. I had my lunch stolen more than once when I worked in those places. I never reported it. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because they always ordered extra catered lunches, and at the end of the week someone would just throw them away if I didn’t take them home.</span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because I thought my coworker was kidding when he said he was spending the three-day weekend in Greece. When I finished laughing, four people recommended hotels. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because one time everyone else in my department quit or was fired in the space of six months, leaving me and a Harvard guy. I asked Harvard if he was worried and he said no. He was thinking about taking a year off anyway, then maybe starting his own business. On my way home, I noticed Starbucks was hiring. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because when the billionaire CEO told us that he saw people taking free snacks from the kitchen to-go, I was the only one who looked ashamed and I had never dared to do it. Everybody else laughed it off and called him an asshole under their breath for being so petty. I avoided him in the kitchen and the elevator until I quit. When he offered me a glass of Dom at a benchmark party, I couldn’t look him in the eye. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because I was the only person who would say hello to the cleaning lady as she meekly made her rounds around us when we worked late. Everyone else had a long habit of ignoring anyone like her. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because everyone’s hobby talk was incomprehensible to me. Sailing. Indoor rock climbing. Building robots. Golfing. Sourcing and collecting antiquities. Adult soccer leagues. All I heard was money. Money. Money. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because I was afraid to seek mentorship from anyone above me, convinced that even asking would seem like bothersome begging. I watched the people around me network effortlessly, assured of favors and good words put in. I could only think in terms of what I could offer and how I could survive; they were thinking on the next level where they never had to wonder if they were good enough. They were to the business-class manner born, at least. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because when I talked about paying off my student loans, people expressed their utter shock that my parents hadn’t put me through Berkeley. Were Mom and Pop simply opposed to public school? Did they disagree with my choice of major? </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because they thought I was kidding when I said I had a GED. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because nobody ever wished me a happy payday. Payday was marked in all caps on my calendar, every biweekly occurrence, forever.</span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because one of my teammates got an email one day from payroll informing him that his last three paychecks had bounced back to them, and had he maybe made a mistake on his direct deposit form? Three paychecks is a month and a half of income (rent and two car payments by my fevered calculations, which never stop). He did not notice at all, and people found the story funny rather than horrifying.</span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because I forgot my charger once and absolutely nobody had one old enough to be compatible with my phone.</span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because I was one of maybe three employees living in Oakland, despite the fact that I could get to work faster than anyone who lived in the Sunset or the Richmond districts. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because I wouldn’t dream of Ubering in. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because I made more there than I’d ever made before; a daring amount I had been afraid to ask for during the offer process. I discovered through misadventure that I still made less than any of the executive assistants, or the receptionist. I was, in fact, the lowest-paid person in the building including the interns. I hadn’t known what was possible, so I couldn’t even think to ask for what I was worth to them. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because I had the only fat body in the building. Gym membership was included in my benefits. I went half a dozen times before it was made crystal clear to me that I did not belong. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because I never got over not having to punch a clock.</span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because I asked HR before my first vacation what paperwork I would need to do in order to receive vacation pay. HR blinked at me slowly and told me there was no paperwork necessary; I would just get paid like I normally did. It was obvious no one had ever asked before. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because I freaked out and cheered over a bonus only to watch the rest of my team quietly put their checks in their wallets and say nothing. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because everyone else had good teeth. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because I had gotten married younger than any of my coworkers. </span></p>

<p> </p>

<p><span>I knew I was the only poor person at my tech startup because on the day I left they told me to put my equipment on someone’s desk on my way out the door. I packed everything up carefully, wiping it all down and trying to make it look as good as new. The guy I was meant to leave my Macbook ($1200) and my headphones ($350) with wasn’t even there. There was no security, no oversight, no locker and no inventory list. Nobody had walked me away from my desk to keep me from stealing pens or staples or secrets. Nobody watched me at all, or asked to check my bag on my way out the door. Because they have never been poor, they had no idea what I might do. Why would I steal, when everyone clearly has enough? What even is scarcity? Why drink yourself to death tonight when there’s another sponsored event a week from now? Why eat like there will never be enough, when there has always been more than enough? </span></p>

<p> </p>

<p><span>I gave back the Macbook. I kept the headphones. </span></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.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.svg#icon-rss2"></use>
</svg> RSS</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.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.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.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.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>
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>

+ 61
- 0
cache/2021/86eba8e465d7ce11ef61a0c61f878f21/index.md View File

@@ -0,0 +1,61 @@
title: Poor in Tech
url: http://megelison.com/poor-in-tech
hash_url: 86eba8e465d7ce11ef61a0c61f878f21

<p><span>I knew I was the only poor person at my tech startup because nobody else ate the Hot Cheetos that were stocked in our free snack kitchen. Seaweed snacks were always empty. Nobody had those telltale red stains on their fingers but me. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because I made my breakfast and sometimes my lunch in that free snack kitchen, loading up on hummus and hard-boiled eggs and apples rather than spending $25 a day to grab something in the financial district in San Francisco. I made excuses about wanting to work through my break, wanting to impress my boss. My boss had her kale salad and vegan soup delivered. We did not talk while we ate. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because once I realized they would keep restocking the tampons in the ladies’ room, I stopped bringing any from home. I said as much in a fit of daring to a woman with whom I thought I would become friends. She admonished me for using bleached cotton products in my vagina. We are not friends. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because I realized the same thing about Advil. The bottle was never empty and never replaced. I might have been the only one who knew, or needed it, or who still deigned to use OTC painkillers. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because people kept bragging their bodily purity based on what they would not eat or drink, and I could only feel pity for them. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because I couldn’t restrain myself from eating and drinking myself into an absolute sickness anytime they threw a party and expressed no limits on our consumption. The jobs I had worked before that had put up signs in the break room warning us that stealing someone’s lunch was a termination-worthy offense. I had my lunch stolen more than once when I worked in those places. I never reported it. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because they always ordered extra catered lunches, and at the end of the week someone would just throw them away if I didn’t take them home.</span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because I thought my coworker was kidding when he said he was spending the three-day weekend in Greece. When I finished laughing, four people recommended hotels. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because one time everyone else in my department quit or was fired in the space of six months, leaving me and a Harvard guy. I asked Harvard if he was worried and he said no. He was thinking about taking a year off anyway, then maybe starting his own business. On my way home, I noticed Starbucks was hiring. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because when the billionaire CEO told us that he saw people taking free snacks from the kitchen to-go, I was the only one who looked ashamed and I had never dared to do it. Everybody else laughed it off and called him an asshole under their breath for being so petty. I avoided him in the kitchen and the elevator until I quit. When he offered me a glass of Dom at a benchmark party, I couldn’t look him in the eye. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because I was the only person who would say hello to the cleaning lady as she meekly made her rounds around us when we worked late. Everyone else had a long habit of ignoring anyone like her. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because everyone’s hobby talk was incomprehensible to me. Sailing. Indoor rock climbing. Building robots. Golfing. Sourcing and collecting antiquities. Adult soccer leagues. All I heard was money. Money. Money. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because I was afraid to seek mentorship from anyone above me, convinced that even asking would seem like bothersome begging. I watched the people around me network effortlessly, assured of favors and good words put in. I could only think in terms of what I could offer and how I could survive; they were thinking on the next level where they never had to wonder if they were good enough. They were to the business-class manner born, at least. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because when I talked about paying off my student loans, people expressed their utter shock that my parents hadn’t put me through Berkeley. Were Mom and Pop simply opposed to public school? Did they disagree with my choice of major? </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because they thought I was kidding when I said I had a GED. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because nobody ever wished me a happy payday. Payday was marked in all caps on my calendar, every biweekly occurrence, forever.</span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because one of my teammates got an email one day from payroll informing him that his last three paychecks had bounced back to them, and had he maybe made a mistake on his direct deposit form? Three paychecks is a month and a half of income (rent and two car payments by my fevered calculations, which never stop). He did not notice at all, and people found the story funny rather than horrifying.</span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because I forgot my charger once and absolutely nobody had one old enough to be compatible with my phone.</span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because I was one of maybe three employees living in Oakland, despite the fact that I could get to work faster than anyone who lived in the Sunset or the Richmond districts. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because I wouldn’t dream of Ubering in. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because I made more there than I’d ever made before; a daring amount I had been afraid to ask for during the offer process. I discovered through misadventure that I still made less than any of the executive assistants, or the receptionist. I was, in fact, the lowest-paid person in the building including the interns. I hadn’t known what was possible, so I couldn’t even think to ask for what I was worth to them. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because I had the only fat body in the building. Gym membership was included in my benefits. I went half a dozen times before it was made crystal clear to me that I did not belong. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because I never got over not having to punch a clock.</span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because I asked HR before my first vacation what paperwork I would need to do in order to receive vacation pay. HR blinked at me slowly and told me there was no paperwork necessary; I would just get paid like I normally did. It was obvious no one had ever asked before. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because I freaked out and cheered over a bonus only to watch the rest of my team quietly put their checks in their wallets and say nothing. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because everyone else had good teeth. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because I had gotten married younger than any of my coworkers. </span></p>
<p> </p>
<p><span>I knew I was the only poor person at my tech startup because on the day I left they told me to put my equipment on someone’s desk on my way out the door. I packed everything up carefully, wiping it all down and trying to make it look as good as new. The guy I was meant to leave my Macbook ($1200) and my headphones ($350) with wasn’t even there. There was no security, no oversight, no locker and no inventory list. Nobody had walked me away from my desk to keep me from stealing pens or staples or secrets. Nobody watched me at all, or asked to check my bag on my way out the door. Because they have never been poor, they had no idea what I might do. Why would I steal, when everyone clearly has enough? What even is scarcity? Why drink yourself to death tonight when there’s another sponsored event a week from now? Why eat like there will never be enough, when there has always been more than enough? </span></p>
<p> </p>
<p><span>I gave back the Macbook. I kept the headphones. </span></p>

+ 308
- 0
cache/2021/a0ec305634258e807f376799258029cb/index.html View File

@@ -0,0 +1,308 @@
<!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>
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>Il est temps de tourner la page (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="#f0f0ea">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f0f0ea">
<!-- 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://www.hauteresolution.net/blog/articles/il-est-temps-de-tourner-la-page/25/">

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

<article>
<header>
<h1>Il est temps de tourner la page</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.svg#icon-home"></use>
</svg> Accueil</a> •
<a href="https://www.hauteresolution.net/blog/articles/il-est-temps-de-tourner-la-page/25/" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<p>Je ne pars jamais au bon moment. Je n’ai pas le kaïros –l’art du bon moment, je ne sais pas saisir ça. Je pars de la boite de nuit quand on rallume la salle, moi. Je reste jusqu’au bout. C’est très cohérent avec ma nature têtue –je suis très têtue et très fidèle – je ne m’en vais pas, quitte à fermer la marche.</p>
<p>Mais ça me joue des tours, parce que parfois, curieusement, dans l’associatif, il faut partir. C’est très difficile à penser pour moi, qui ai toujours pensé l’engagement militant comme un combat. Tout abandon de poste a des airs de mutinerie.</p>

<p>Je n’ai pas de chance : en sus, partir, dans l’associatif, c’est la tâche la plus difficile. Quelle que soit ta prédisposition à partir. C’est le moment le plus douloureux, le plus difficile, et l’un des moments, à mon sens, les moins documentés. On écrit peu, on se parle peu sur comment on se barre je trouve. Se barrer, sur les trois associations qui ont marqué ma vie, ça a peu fait l’objet de ces moments dans l’associatif où on se passe du savoir sur comment ça marche. Et pourtant j’en ai vu, des gens partir. Mais voilà, voir des gens plus ou moins mal gérer des passations de responsabilités associatives c’est une chose, le faire soi c’est une autre. Personne ne te parlera de comment il faut faire. A part te dire qu’il en chie, parce que <em>guess what</em>, tout le monde en chie. On en chie, mais comme on se barre, on ne laisse pas aux jeunes un post-mortem de nos erreurs, de nos regrets, histoire qu’ils en chient moins. Au mieux ils peuvent nous regarder faire et essayer d’en tirer une conclusion.</p>

<p>En conséquence, ce billet de blog a deux objectifs : expliquer pourquoi je m’en vais, pourquoi j’ai envie de prendre cette curieuse décision, moi qui n’y pense jamais, et puis ce que ça fait. Pour que peut-être quelqu’un qui se pose la même question ait, enfin, un peu de doc. Pour ce que ça vaut, évidemment. </p>

<h2>Un premier départ : l’ouragan</h2>

<p>Je suis toujours partie quand il était trop tard, donc. Quand j’ai quitté le MAG –la première association où l’on m’a confié des responsabilités – cela faisait déjà plusieurs semaines voire des mois, je ne sais honnêtement plus combien de temps j’ai flotté comme ça, que je n’étais plus –comment dire – en alignement avec ce que je faisais. J’allais aux permanences avec ce sentiment d’aller faire mon devoir, comme le petit soldat que je suis, mais pas la fleur au fusil. Plutôt comme si c’était le énième matin, et qu’il faut, mais pfff. Je n’avais pas le cœur à quitter cette association qui m’avait tellement fait grandir, à qui je dois mon épine dorsale politique, mes racines militantes. C’était dur, putain. Et en même temps, je dépassais de la boite comme Alice coincée dans sa pièce, et je le savais. La seule méthode que j’ai trouvée pour partir, et donc, que je ne conseille pas, ça a été de trouver un stage de fin d’études à quelques 500 km de là, de rendre les clés, la mort dans l’âme, la veille, et d’effectuer la coupure, comme ça, physiquement, brutalement. Je me suis littéralement foutue dehors à coups de pieds. Et comme il était trop tard, je suis partie quasiment sans prévenir.</p>

<p>Comme il était trop tard, moi qui avais ramé parce que mon prédécesseur au MAG était parti avec environ le même talent (tout le monde en chie, je ne lui en veux pas), je n’ai rien organisé comme passation. Je suis partie avec tous les fichiers de mise en page de la revue (la Magazette) dont j’avais la charge. Mes successeurs ont dû tout reconstruire après moi et quasiment sans aide de ma part. C’est nul. C’est un de mes regrets les plus colossaux de ma carrière associative. Honnêtement : pardon. Du fond du cœur, pardon. J’ai honte, vraiment, d’avoir traité les gens comme ça.</p>

<p>L’enseignement que j’en tire est qu’en fait la passation est quelque chose qu’on ne fait pas dans la semaine où l’on se casse. On devrait presque le préparer dès le premier jour de notre mandat. Idéalement il faudrait toucher cet équilibre : je suis en charge, je fais ce qui est sous ma responsabilité, mais si jamais il arrive quoi que ce soit je peux déclencher les mécanismes A B et C pour que ça continue à rouler sans moi. Vous voyez les entrainements à l’alarme incendie, qu’on fait tous les ans juste pour se rappeler comment faire au cas où ça arrive vraiment ? C’est un peu la même idée.</p>

<p>Si vous demandez à un responsable associatif, de rentrer dans ce genre de démarche, il peut avoir une réaction de recul plus ou moins violente. Et c’est assez normal. C’est très contre intuitif, parce que préparer son départ, ça veut dire accepter qu’on va partir un jour et dans l’associatif je crois qu’on postule que c’est impensable : on est engagé, là, c’est pas pour se débiner dès le premier jour de mandat. Imaginez si la personne qui partage votre vie vous parlait divorce à brûle-pourpoint là. Vous prendriez peur : « pourquoi tu me parles de ça ? On est pas bien ensemble ? ». Parfois comme ici, la vie décide pour nous et c’est pour ça qu’il faudrait anticiper. Mais on ne se l’imagine pas. Cet état d’esprit demande une certaine dose de sagesse et de lâcher prise. Comme c’est pas facile de s’y projeter on procrastine, ce que j’ai fait, comme mon prédécesseur. C’est vraiment plus facile à dire qu’à faire, et donc l’autre leçon c’est qu’il faut une petite dose d’indulgence pour la personne que vous encouragez à faire ça. C’est très normal qu’elle commence par avoir peur.</p>

<p>Alors, très curieusement, alors que je cumulais un cursus en classe préparatoire littéraire et le conseil d’administration de l’une des associations LGBT+ les plus vieilles de France, ce n’est pas pas la charge de travail qui m’a fait partir. C’est l’ouragan dans ma tête. On ne peut pas prendre soin des jeunes LGBT et soi-même ne plus savoir très bien où on en est. Ça ne marche juste pas. C’est un peu comme si tu assurais quelqu’un à l’escalade alors que toi-même tu as le vertige. J’étais pas dans la meilleure passe avec ma propre identité sexuelle, je n’avais plus la stabilité nécessaire pour écouter, j’étais une boule de voix discordantes moi-même. Il me fallait du calme, et de l’air nouveau. Ce que je me suis donné, oui, mais plus comme on arrache un pansement d’un coup. Un déchirement.</p>

<h2>Le feu de camp</h2>

<p>Ma vie s’est recentrée assez vite autour de la Quadrature du Net. L’association de lutte pour les droits et libertés fondamentales à l’ère numérique a accueilli à bras ouverts les torrents d’énergie que j’avais à investir alors, et j’ai accompagné ce qui est devenu une sorte de seconde famille depuis. Cette association a changé assez littéralement ma vie, et je ne parle pas seulement de mon apprentissage des questions liées aux télécoms via la Revue de Presse. Quand l’association de fait est devenue une association loi 1901, j’étais là ; quand cette association loi 1901 a réformé ses statuts pour arriver à peu près à la forme qu’elle a aujourd’hui, j’étais là. J’ai vu des départs extrêmement douloureux –pour tout le monde. J’ai vu une association guérir, doucement (ce n’est probablement pas encore fini) de blessures humaines profondes. J’étais encore là. Partir m’a juste semblé impensable. Je n’allais pas m’en aller alors que bénévoles comme salariés faisaient part de leur blessures et tentaient de les soigner ensemble. Je n’allais pas partir quand on a plus que jamais besoin d’associations qui luttent pour nos droits et libertés, qui analysent les textes, qui font un travail si indispensable dans cette ambiance morose où le moindre acquis social est menacé. Je n’allais pas partir de cet endroit qui m’avait fait grandir parce que j’entendais bien donner l’impulsion, à d’autres, de les aider à grandir comme moi La Quadrature m’a fait pousser. Et pourtant.</p>

<p>J’ai, à la dernière assemblée générale à laquelle j’ai assisté, posé un texte douloureux. Je m’étais effondrée après une énième infection du pied. Et tout avait en fait commencé à vriller avec une violente infection des sinus dont je parle <a href="/blog/articles/prendre-soin-cest-possible/16/">ici</a>. Je faisais un burnout. Mon corps s’est mis à lâcher prise. Pour rappel, un burnout, ça caractérise moins un trop-plein de charge de travail que de charge cognitive et émotionnelle. C’est du stress empilé. Et la pile est si haute que tu ploies dessous. C’est ça qui te plonge dans cette fatigue sans fond dont il est si difficile de ressortir indemne. On s’en sort, hein, je m’en suis sortie. Mais pas indemne.</p>

<p>Quand j’ai écrit ce post, j’avais déjà commencé à entrevoir la place qu’avait pris La Quadrature dans ce qui me pesait (et c’était une pensée fort désagréable). En participant au collège des membres, j’avais pris ma part dans la charge d’une association qui a énormément compté à un moment et on venait de traverser des moments où l’on n’était pas loin du maximum de la charge émotionnelle possible posée sur le plan de travail. Il a fallu encaisser de grosses fractures, dans mon propre camp, et courageusement, essayer de faire perdurer le collectif malgré tout. Et j’y suis allée. J’ai courageusement encaissé. Mais voilà, encaissé. Le souvenir de cette discussion sur Twitter avec un ancien bénévole de la Quadrature ayant des mots incroyablement durs pour l’association reste douloureux. Il l’est moins qu’avant aujourd’hui. Il l’est moins depuis que j’ai fait la paix avec une chose : j’ai pris des balles dans mon propre camp. Toutes les balles prises dans cette période-là, c’était dans mon <em>fucking</em> propre camp. Pour l’essentiel, je pense que ce sont des balles perdues. Ou des giclures d’acide qui débordait, là. Des dégâts collatéraux. C’est un sentiment qui est assez proche, à la réflexion, de ce que vivent les enfants coincés dans un couple dont le divorce se passe mal : il y a une violence qui ne t’est absolument pas destinée, mais que tu vas quand même encaisser dans les tripes parce que tu es là, au milieu, que tu ne peux pas éviter. Tu ne comprends pas très bien ce que tu as fait. Tu as un peu l’impression que c’est contre toi, alors que non, c’est l’histoire de tes parents. Et tu peux mettre du temps à t’en remettre et à pardonner. T’as pris des balles perdues. Tu sais que c’est tes parents qui ont tiré. Tu sais qu’ils savent que tu es sur le champ de bataille, exposé. Mais personne ne peut faire autrement.</p>

<p>On n’est jamais, dans le travail militant, jamais, préparé à ça. On est préparé à se battre contre le grand Copyright, contre la Silicon Valley, les GAFAM, contre des députés qui n’écoutent pas et qui te votent des machins scélérats tendance Frédérique Vidal mais pas à encaisser ça.</p>

<p>J’ai mis un peu de baume là dessus, je ne sais pas encore combien j’ai pardonné. C’est pas simple de pardonner quelque chose qu’on a d’abord reçu comme une forme de trahison. C’est tout un travail. Mais c’est comme un divorce, c’est plus facile à penser depuis que j’ai aussi cette perspective : hey, personne ne pouvait faire autrement. <em>And it’s better out</em>. Autant vous dire que j’aurais aimé que ça sorte plus tôt, hein, avant que ça fermente à ce point, mais maintenant c'est fait, c'est pas plus mal quelque part.</p>

<p>Je m’éloigne un peu du sujet initial en vous racontant ça, mais je ne peux pas séparer le récit de ces départs successifs avec leur cause. Ça fait partie de la leçon. La leçon ici, c’est que j’ai vu bien tard ce que j’étais en train d’empiler dans mon sac à dos, là. Je collectais des moments à grande charge émotionnelle les uns sur les autres, et je n’ai pas résolu la tension qui était là. J’ai encaissé. Donc heh, elle est restée là où elle était, bien sagement. Et puis dessus, j’ai rajouté la charge mentale incroyable qui constitue en : être membre d’un collectif, qui est responsable d’une association qui n’a pas l’air mais qui est une grosse association, qui demande beaucoup d’attention, de travail, c’est une grosse machine qui a son passé, qui fait plein de frottements à plein d’endroits, qui est très belle et puis en même temps une aventure humaine très complexe, qui est l’employeur de plusieurs personnes (ce qui constitue une responsabilité énorme). Bref j’avais un sac de rando plein à craquer de trucs qui s’empilaient, puis qui n’en finissaient pas de s’empiler. Tu m’étonnes que mon corps ait fini par décider de lâcher. D’abord une belle crise de sinus, puis, coup sur coup, trois infections du pied. La dernière, jusqu’au dernier moment j’étais pas tout à fait certaine que les antibiotiques dose cheval qu’on m’avait prescrit allaient fonctionner. Ça allait bien (non). Encore une histoire de partir trop tard, notez. Ce billet est cohérent.</p>

<p>Normalement, ce qui enlève des choses dans le sac à dos, c’est ce que j’appelle le feu de camp. C’est l’espace, où, dans le travail militant, l’on produit de la chaleur. Dans un travail comme celui de La Quadrature, il y a une ligne de front. Il y a des gens à convaincre, des argumentaires à démonter, des batailles juridiques. Mais il y a aussi une base arrière. Avec un feu de camp, de la bouffe, des matelas pour dormir. On vient se réchauffer à la chaleur du feu, on se raconte des histoires, on se demande des nouvelles. On mange un bout, on se repose. On fait lien. Et on développe une forme de plaisir de lutter ensemble. Quand ça marche bien, il ya toujours un petit groupe de bénévoles qui maintiennent le feu allumé et se reposent, et un autre groupe de bénévoles qui est « au front ». Et on peut observer que les bénévoles se relaient au feu de camp, comme ça. Ce n’est pas toujours les mêmes qui portent la lutte, ce n’est pas toujours les mêmes qui mettent une buche dans le feu, il y a une forme d’équilibre qui s’installe. On se nourrit d’être ensemble. Ça donne de l’énergie pour lutter. Mais lutter fatigue, alors on part se reposer, et on reviendra quand on aura récupéré, au chaud, dans la base arrière.</p>

<p>J’ai traversé une époque où je pense que la gueule du feu dans l’âtre était pas vaillante, et où peu d’énergies étaient disponibles pour remettre une bûche. Peut-être aussi que je cela n’aurait été simplement pas suffisant pour endiguer cet empilement.</p>

<p>J’en tire plusieurs leçons :</p>

<ul>
<li>participer au travail associatif, parfois, c’est être à la base arrière à juste remettre une bûche dans le feu. Heh bien ça nourrit autant la lutte que travailler sur un recours au Conseil d’État. Et si on oublie de faire ça, on n’a pas immédiatement un problème et c’est pernicieux. On finit par en avoir un dès que la première ligne de front s’épuise. Un bénévole épuisé jusqu’à la couenne ne reviendra pas. Un bénévole qui a de quoi se ressourcer dans le collectif, peut-être.</li>
<li>Ne faites pas comme moi. Ecoutez-vous. Faites régulièrement le point sur votre sac de rando. Faites des pauses. Prenez des vacances associatives. Prenez au sérieux les amis qui ont une idée de ce qu’il y a dans votre sac et vous disent de lever le pied. Prenez au sérieux le fait que l’énergie bénévole c’est rare et précieux et que vous devez prendre soin des autres et leur dire de lever le pied. Prenez des nouvelles des uns des autres. Allumez et entretenez le feu de camp. C’est plus facile à dire qu’à faire, encore une fois, mais vraiment : on peut quitter une asso sans passer par la case hôpital. Ce n’est pas censé arriver. Les départs comme ceux que j’ai vécu au MAG il y en a cent mille, c’est commun parce qu’on ne devient pas un associatif sage du jour au lendemain. C’est nul, mais c’est logique que ça arrive. Le burnout, non, c’est pas logique. C’est évitable.</li>
</ul>

<p>J’ai expliqué ces leçons en AG dans mon texte, j’ai expliqué que j’ai compris tout ça trop tard et j’ai demandé à démissioner. Ce départ a été entériné par le reste du collectif, et ça me fait encore bizarre (alors qu’en fait, c’est pas récent du tout…) de voir, qu’après dix ans de chemin commun, mon nom n’est plus sur le site de La Quadrature. Mais ça a a donné un peu d’air d’arrêter de remplir mon sac comme ça. Je pense aujourd’hui que c’était bien de fermer ce chapitre. Triste, mais bien.</p>

<h2>La présidence : la grosse arnaque</h2>

<p><em>Plot twist</em> : j’avais une autre source de cailloux-qui-finissent-dans-le-sac-de-rando. Haha. Alors celle là c’est le truc qui était caché juste devant mon pif. Haha. Ha. Hrem.</p>

<p>Je suis devenue en 2017 présidente d’une association (co-présidente, techniquement). J’en parle à plusieurs reprises sur ce blog. En réalité je suis arrivée dans l’aventure de la Fédération FDN à peu près à la même époque qu’à la Quadrature, et beaucoup de choses ont été concommitantes ou pas loin, typiquement le changement des statuts de la Quadrature vers la création d’un Collège responsable de membres et mon élection à la Fédération sont arrivés dans des temporalités très proches ; mais pour des raisons de clarté du propos, j’ai séquencé. Mais voilà c’est ça qu’est drôle, si on veut. Pendant, littéralement pendant que j’étais en train de gérer les cailloux qu’arrivaient dans mon sac d’un côté, de l’autre on m’en balançait des kilos.</p>

<p>Je m’explique. Je ne veux pas qu’on comprenne ça comme « on m’a prise par surprise et je me suis retrouvée présidente ». J’ai accepté de prendre en charge la responsabilité de la présidence en conscience, quand même. Evidemment que j’étais au courant du fait que cela constituerait une charge supplémentaire. Evidemmment que j’étais consciente de ce que je faisais et que je m’y suis préparée, un peu. Je pense même que j’ai jamais été aussi prête pour endosser une responsabilité associative.</p>

<p>J’ai beaucoup retourné la question dans ma tête, parce que je suis toujours scandalisée par cette partie-là de mon burnout et de sa guérison. Comment ça se fait que j’aie ployé aussi vite sous une charge que j’étais globalement prête (et légitime) à recevoir ? Parce que j’ai ployé, j’ai littéralement ployé, comme le roseau, là, crouiiiiic. J’ai été élue en 2017. En 2018, les signes du burnout ont commencé à poindre. En 2019 je lâchais tout. Deux ans. C’est allé très vite. J’ai passé dix ans à la Quadrature, j’y ai littéralement vécu le Vietnam, avant de prendre la décision de m’en aller et là en deux ans je me retrouve incapable d’assurer. C’est quoi ce truc. Vous vous imaginez pas la frustration, la déception. C’est quoi ce truc. Je veux dire, que je m’épuise après dix ans de lutte à LQDN est normal, et c’est même plutôt un bon score de longévité, dix ans. Mais deux ans. Je n’arrive pas à m’y faire.</p>

<p>Vous allez me dire : « facile ». Oui, avec ce que je ramaisssais comme cailloux à La Quadrature ça suffisait bien, oui. Je suis arrivée à cette conclusion toute seule, j’ai aussi démissionné de LQDN en me disant que ça protégerait l’engagement militant qui restait et que ça me permettrait de recentrer mon énergie. Ça a certainement sauvé ma santé. Accepter de lâcher ma responsabilité à LQDN a été l’une des décisions les plus tristes de ma vie associative mais ça a soulevé l’énorme couvercle de marmite sous lequel j’étais coincée et heureusement. En juin 2020, voyant la bouffée d’air qu’entériner cette difficile rupture m’avait donné, quand j’ai pris le temps de poser un mail aux fédérés à propos de l’AG de la Fédération, empêchée à cause de la pandémie comme beaucoup d’autres rassemblements, j’ai en substance dit que j’avais pas un bilan grandiose (wesh, burnout) mais que je pouvais sans doute repartir pour un an à marche diminuée. Je comptais beaucoup sur le fait que j’allais trouver un équilibre entre l’associatif et le reste avec UNE SEULE responsabilité associative, qu’avec le temps la fatigue et la douleur allaient se tasser un peu et que je pourrais continuer. La Quadrature plus la présidence, ça faisait trop, c’est évident. Mais ça tout seul, ça devrait marcher. Non ?</p>

<p>Ce n’est pas ce qu’il s’est passé dans les douze derniers mois. On est en juin 2021. J’ai quitté LQDN en juin 2020 en gros, en prenant acte des leçons du burnout qui m’a occupé une partie de l’année 2019. Ça fait un an que je suis à peu près à flot (heureusement, ma santé mentale n’aurait pas survécu à la pandémie sans ça). C’est clairement dû au fait que depuis que j’ai tout lâché en urgence je n’ai quasiment rien repris comme charge mentale nulle part. Je suis en arrêt maladie, vis à vis de ma fonction. Donc ça va. Mais je suis en arrêt maladie, ce qui veut dire que je ne peux pas dire que j’occupe ça pleinement. Je n’ai pas repris, comme je pensais en être capable alors, ce que j’avais planté là comme charge l’année avant <em>because burnout</em>. Je n’ai pas rouvert de consultations de l’Arcep. Je ne lis plus mes mails. Il y a quelque chose de cassé, j’ai du mal à formuler ça autrement. Et le scandale c’est pourquoi ?</p>

<p>J’ai en gros deux éléments de réponse et ça ne me fait pas plaisir de les écrire (c’est aussi pour ça que j’ai repoussé l’écriture de ce billet, c’est pas agréable).</p>

<h2>Le président de Shrödinger</h2>

<p>Le premier, que j’ai expliqué en long et en large dans ce long mail (je suis spécialiste des mails fleuves, <em>well, you’re reading this, you know why</em>) aux fédérés il y a dix mois donc, tient simplement en ce en quoi la présidence est une arnaque.</p>

<p>La présidence, c’est un poste où l’essentiel du travail est invisible. L’arnaque est là.</p>

<p>On attend plein de choses différentes des présidents d’association, ça c’est variable en fonction des collectifs. Il y a des associations qui ont des traditions de présidence très descendante, d’autres au contraire où le président est un peu comme le président allemand, là mais pour garantir l’unité, il y en a où la présidence est un exercice qui ne change rien, il fallait juste un nom pour la préfecture. Il y a de tout.</p>

<p>Je trouve qu’il y a quelque chose qui revient quand même assez souvent. Quand je discute avec d’autres présidents et présidentes d’assos, souvent, on se rend compte que ce qu’on avait en commun malgré les styles de « direction » différents, c’est faire l’état de l’union. Comme c’est la seule chose qui était claire dans ma tête sur ce qu’on attendait de moi, j’en ai fait le centre de mon activité de présidente de la Fédération.</p>

<p>Faire l’état de l’union, ça se matérialise pour moi dans quelque chose que j’ai introduit, d’ailleurs, dans toutes les assos que j’ai codirigé : les bilans. C’est un document qu’on formalise en général un peu avant l’AG, et qui résume les accomplissements de l’association en un an. Ce sont ces bilans qui sont (quand tout se passe bien), soumis à l’approbation de l’AG. Ils contiennent en réalité trois parties, l’introduction, les bilans proprement dits (ce qu’on a fait cette année), les projets (ce qu’on aimerait faire l’année prochaine et qui constitue un programme d’action minimal qu’approuve l’AG).</p>

<p>Hé bien l’état de l’union c’est l’introduction de ce document. C’est un texte qui vient dessiner la cohérence, les lignes de force, dans tout ce que fait l’association, dans sa diversité. Dans le cas de la direction d’une fédération, qui est par essence diverse (comme celle que je présidais), je trouve que c’est un exercice essentiel. On fait le point, on montre en quoi il y a un lien entre toutes ces actions qui ont l’air disparates, au besoin on recentre aussi, quand l’exploration de toutes les pistes semble perdre de vue l’épine dorsale de valeurs qui sont la raison d’être de l’association. C’est un exercice qui mélange, tous les ans, le passé (ce que l’asso a été, ce pour quoi elle a été fondée), le présent (ce que nous faisons et ce en quoi ce présent est bien un héritage du geste fondateur) et le futur (ce que nous avons collectivement envie/besoin de faire).</p>

<p>Souvent, je n’arrivais pas à tenir assez bien le rythme d’écriture (j’ai écrit la plupart des bilans que j’ai présentés seule, et dans des conditions iniques, le bilan 2017 je l’ai écrit quasi intégralement sur mon téléphone) et en fait l’état de l’union était présenté à l’AG sous la forme d’un laïus d’ouverture parce que le document était à peine sec. Un discours d’état de l’union, quoi.</p>

<p>Pour faire correctement l’état de l’union, il faut accepter de prendre énormément de charge mentale. On ne réfléchit pas uniquement la semaine avant l’AG à ce que ça veut dire, cette asso, on y réfléchit sous la douche, à 2h du mat quand on n’arrive pas à dormir. On y réfléchit en préparant la bouffe. On devient un peu monomaniaque. Mais c’est ce travail constant qui produit la profondeur, l’épaisseur de la réflexion au moment des bilans.</p>

<p>Et puis, en fait, c’est aussi un travail quotidien parce que dans la pratique, il y a besoin de prendre des décisions ou de donner son avis un peu plus qu’une fois par an. Parfois il y a des crises et c’est ce matériau de réflexion qui sert, en partie, pour les démêler. Tu passes ton temps à refaire les coutures du patchwork (pas celles qui relient les pièces entre elles, les coutures qu’on fait en plus, sur toute la couverture, pour que l’ensemble se tienne bien). Dès qu’il y a une nouvelle pièce de couleur, hop, tu viens t’assurer qu’elle est bien reliée au reste et que la couverture est toujours harmonieuse.</p>

<p>Pourquoi un·e président·e de fédération a l’air de ne pas en foutre une ? Parce que ça, ça mange déjà assez de charge mentale, merci. C’est complètement invisible. Mais c’est ça, le taf. Ton taf, c’est de méta touiller en permanence le bordel pour qu’il ait l’air cohérent pour les gens à l’intérieur comme à l’extérieur. Plus c’est le bordel, plus tu as du travail. Pour reprendre la très belle image de Koolfy si celle du patchwork ne vous parle pas, tu passes ton temps à parcourir la toile pour voir si tous les fils sont bien reliés, et à essayer de renouer les fils qui sont cassés si c’est le cas. D’autres gens nouent des fils. Tu n’es jamais seul à réparer. Mais t’as ce privilège (un peu empoisonné, mais privilège) d’avoir en tête l’inventaire exact des endroits où il faut faire de la maintenance.</p>

<p>Le revers de la médaille, c’est que s’il y a eu des problèmes –et alors, en matière de problèmes, je ne vous remercie pas les gens, hein, j’ai été servie-- hé bien ça devient aussi <em>tes</em> problèmes. Tu te fais du soucis en permanence. Tu dors moins bien. Tu tournes ça dans ta tête dans tous les sens : 1) sérieux il est 3h du mat, j’ai cours demain, ce serait bien que ça cesse ce problème 2) bordel ça craint il faut une solution. Cette ambiance, je l’ai connue à plusieurs moments dans mon mandat de présidente.</p>

<p>Je ne suis pas salariée de mon association. A côté de cette bagatelle, je faisais aussi de la régulation des télécoms, j’écrivais (j'écris toujours) une thèse (qui n’a rien à voir), je me prenais des giclures d’acide dans la gueule parce que la souffrance de bénévole fermentée c’est plutôt dégueu à brasser. Pour situer. Oui, vu d’ici l’aspect burnout paraît très logique. Quand on nage la brasse coulée dans tout ça, on ne voit rien, il faut sortir la tête de l’eau pour ça.</p>

<p>Il se trouve, je résume parce que la tambouille interne fédérale ne vous intéresse pas ici, mais il se trouve que dans la Fédération FDN spécifiquement il y a, j’ai l’impression, des envies très divergentes concernant la présidence. A la fois des envies de direction très ferme, parce que ça permet de savoir par où aller sans forcément y investir de la réflexion parce qu’on est sur des problématiques de terrain et qu’on peut pas être partout. Et d’autonomie, parce que la fédé est quand même une aventure fondée sur le principe de la décentralisation (du coup une tête centrale ça dénote dans le paysage). C’est très intéressant, parce c’est inconciliable. Mais ça fonctionne à peu près quand même.</p>

<p>Et y’a pas une putain de fiche de poste. Ce que je viens de vous expliquer sur le métier de président·e d’asso, c’est un mélange entre ce qu’on m’a expliqué et ce que j’ai fini par tracer comme ligne faute d’y comprendre quelque chose à ce qu’on attendait de moi. Non mais parce que, cette histoire de rendre compte aux gens qui nous ont élu, j’y tiens. Mais j’aimerais savoir sur quoi du coup. Je suis ce genre de personne qui a besoin d’avoir une idée très claire de ce qu’on attend d'elle J’ai jamais vraiment su. J’ai passé mon mandat à essayer de comprendre, ça m’a épuisée. Et comme j’étais en plus partie sur des bases pas si saines que ça, ça a vrillé.</p>

<p>J’ai appris, plus tard, en lisant, que les attentes contradictoires et l’absence de fiche de poste, c’était un bon gros <em>red flag</em> à burnout.</p>

<h2>De mauvaises bases</h2>

<p>Le deuxième élément de réponse que j’ai, c’est donc que je suis partie sur de mauvaises bases. Déjà probablement que j’aurais dû démissionner à LQDN avant en fait, pour protéger mon énergie. Je serais certainement partie avec un sac à dos moins plein et j’aurais probablement mieux géré les différents aléas qui ont secoué mes trois dernières années de mandat.</p>

<p>En plus de ça, je pense que j’ai traîné une partie –peut-être la majeure partie de ma mandature– le traumatisme de l'AG 2016 de la Fédération FDN. Alors à partir de là si mentionner cet épisode te rappelle des mauvais souvenirs, tu as ma bénédiction pour passer à la suite. <em>Content warning</em>, comme on dit. Je vais être obligée de brasser des trucs pas drôles. Si t’es OK, la suite s’affiche si tu cliques <a href="#collapseCW" data-toggle="collapse">là</a>.</p>

<div id="collapseCW" class="collapse">
<div class="well">
<p>C’est un épisode qui m’a traumatisée, vraiment, parce que d’une part j’ai été directement témoin de la souffrance d’une personne en particulier, et d’autre part parce que oui j’ai vécu la réaction –en fait inévitable– du collectif comme violente. J’ai jamais vu un truc aussi violent dans ma vie associative. J’ai rarement eu aussi peur du collectif auquel j’appartenais.</p>
<p>Parce que je vais vous faire une confidence. Ce que Benjamin a fait ce soir là, je l’ai compris parce que j’aurais fait pareil. Je suis allée le voir parce que après d’une bouffée d’émotions, j’aurais aimé qu’on soit venu me voir. Ça m’est arrivé aussi de claquer la porte après avoir insulté tout le monde et croyez bien que je me souviens de chaque seconde de chaque fois où c’est arrivé, parce que je regrette chaque putain de seconde. J’étais pas en état de faire autre chose que péter une durite, mais si vous saviez comme je ne pensais pas un mot de ce que j’ai dit. Comme je m’en veux. J’aurais aimé que quelqu’un soit venu juste pour me dire que c’était OK d’être très triste/très énervé/rayez la mention inutile, et que c’est mieux dehors que dedans. Alors c’est ce que j’ai fait. Pour toutes les fois où moi ça m’est arrivé et où personne n’est venu.</p>
<p>J’ai pas passé un bon weekend. La réponse du collectif ça a été d’être très violent envers Benjamin, et par transitivité, moi, parce que en fait voilà, je me mettais un tout petit peu à sa place voyez. Et ça c’est le deuxième traumatisme. Une fois que j’ai arrêté de péter des crises d’angoisses en pensant à cette épisode (non parce que même deux ans après je tremblais quand j’en parlais, hein) j’ai pu un peu mieux comprendre en quoi cette violence était inévitable. J’ai pu comprendre aussi en quoi le collectif avait été blessé, en quoi il était aussi légitime à demander des excuses. J’ai pu un peu me mettre à la place de tous les autres et les pardonner pour tous ces mots très très très durs. Donc maintenant ça va. Je ne tremble pas, je n’ai même pas le coeur qui s’emballe quand j’écris ça.</p>
<p>J’ai été élue, à l’été 2017, un an après cet épisode, dans des circonstances liés directement à ce dernier. L’AG a été organisée sur le tard, parce que personne n’avait envie de revivre ça, c’était très frais dans les esprits. J’ai déplacé des montagnes d’énergie (je ne sais pas d’où je les sortais, btw) pour que cette AG ait quand même lieu. On était moitié moins que d’habitude. Alors, se retrouver a fait du bien, assurément. Mais j’ai été élue dans cette ambiance-là.</p>
<p>Et ce traumatisme est resté tout ce temps. Faire la paix avec ça c’est tout récent. Ça a posé un prémisse affreuse à mon mandat, celle que peut-être que le collectif allait se retourner aussi contre moi. Que cette violence-là était possible. Et donc, toutes les fois où il y a eu des balles perdues, à La Quadrature, au sein de la Fédé, après cet épisode, ça remuait le couteau dans la plaie et ça me confirmait juste dans cette idée qu’en fait les gens sont violents. Ça a mis des graines de méfiance. Je me suis mise à avoir peur d’aller aux AG et à en faire des cauchemars.</p>
<p>C’est idiot, évidemment. Objectivement ça n’a aucun sens. Personne n’a envie de revivre ça, je veux dire. Mais un traumatisme est ce qu’il est, c’est pas une réaction très réfléchie aux choses hein. Reste qu’on ne peut pas présider si on a peur du collectif, ça mène forcément à un exercice déraisonnable du pouvoir. On s’y accroche. Je suis pas exactement étouffée par l’ambition, mais oui, j’ai eu –surtout vers la fin-- des réflexes défensifs complètement pourris. Je pense, dus à la forme de paranoïa causée par ce traumatisme-là. Plus je vivais un truc qui ressemblait (et dans les deux ans qui ont suivi, je ne sais pas, on a décidé de sortir tous les cadavres du placard, du coup c’est arrivé assez souvent au final) plus cet état d’esprit se confirmait : « tu voiiiis les gens en fait ils te veulent du mal à toiiii ». Non, personne je pense ne me voulait directement du mal, à moi, personnellement. J’étais en train d’essayer d’échapper à une situation que j’avais vécue il y a trois ans, j’adressais pas le problème actuel, et puis d’abord c’était pas à mon propos. J’ai commencé à comprendre ça à la dernière AG à laquelle j'ai été, très mouvementée –décidément– quand j’ai vu que malgré tout ce bordel les fédérés m’avaient réélue. Je me suis dit, wow, ils m’en veulent pas finalement. Quota, <em>évidemment</em>.</p>
<p>Merci pour ça.</p>
<p>Donc j’ai essentiellement guéri de ce traumatisme, il est largement derrière moi aujourd’hui, je pense. En tout cas je prends pour signe de guérison relative le fait d’y penser en paix. Je ne sais pas dans combien de temps la blessure que ça a causé va suffisamment cicatriser pour que ça soit disons faisable de revenir dans le collectif. C’est une chose de faire la paix, c’est une autre, haha, ensuite, de naviguer la présidence en portant ce type de blessure : c’est pas parce que ça cicatrise que ça n’existe plus. Et j’en suis là. J’ai été blessée, ça a rompu quelque chose, et je ne sais pas encore réparer ça.</p>
</div>
</div>

<p>C’étaient de bien mauvaises bases. Ma vision des choses était biaisée, d’entrée de jeu, dans un sens pas sain, je crois. A certains égards elle a été un peu encouragée dans cette direction et ce n’était pas une super influence à la réflexion. Je regrette un peu d’avoir écouté, honnêtement.</p>

<p>Après avoir pris de la distance, je ne vois pas bien comment on peut se sortir de ce mélange de choses indemne de toute manière. Le trop plein de charge émotionnelle, au dessus d’un bon vieux trauma des familles, avec des attentes contradictoires <em>on top of that</em>. Oh et une pandémie mondiale. Où j’ai passé douze mois à me dire ho je ne fous plus rien (<em>because</em> la guérison de tout ceci, hein, puis gérer vivre dans une pandémie mondiale<em> which is enough anyway</em>), suis-je encore légitime de toutes façons ? Etre reconduite à son poste par la force des choses est-il une marque de légitimité ? Pourquoi personne ne vient m’en parler ou s’en inquiéter en fait ? En fait on m’a foutue dans une partie de jeu vidéo en mode <em>ultra hard</em> dans me prévenir, il y avait trois ans où être présidente de la fédé ça allait être méga dur, j’ai bien choisi mon moment moi en fait.</p>

<p>Donc oui j’ai ployé. Indéniablement. Mais en observant les choses posément, peut-être n’importe qui aurait explosé en vol. Alors, oui : en sautant l’option traumatisme de 2016, que mon histoire personnelle n’a pas rendu simple à gérer (je sais que d’autres gens s’en sont beaucoup mieux sortis), prut-être que l’on durait un peu plus. Mais les différentes tensions dans le collectif, les attentes contradictoires, l’absence de fiche de poste, la passation qui a été saine par endroits et pas du tout par d’autres, ça formait tout seul un cocktail suffisant qui menait au burnout.</p>

<p>Et ceci, malgré, encore une fois, ce qui fonde ma légitimité à occuper cette place, le fait que je pense que ce que j’apportais au collectif, en faisant l’état de l’union, était utile. Juste, voilà j’ai probablement joué une partie en mode <em>ultra hard</em> sans avoir conscience du niveau. L’arnaque.</p>

<h2>Et voilà, partir, c’est dur.</h2>

<p>Je sais que tout le monde a compris. Aujourd’hui je crois que tout le monde sait que cette rupture est consommée. Mais j’ai pris mon temps pour l’écrire. Parce que le plus important finalement, c’est que je fasse la paix avec ça. Que je fasse la paix avec, somme toute, l’impression d’échec personnel que ça me laisse. Je sais que j’ai contribué à construire des choses. Je sais que ce ne sont pas trois-quatre ans de mauvais mandat. Mais sur mes standards, c’est un échec. Parce que je pensais avoir pris les leçons de tous ces départs. Je pensais pouvoir rebondir beaucoup plus facilement, même après avoir ployé.</p>

<p>Accepter ces points, les regarder en face, ça m’a aidé à faire la paix avec l’impression d’avoir été au final assez mauvaise. Le fait d’avoir ployé aussi vite et encore davantage, le fait de ne pas être foutue de repartir parce que quelque chose est brisé, c’est extrêmement frustrant. J’essaye de faire la paix avec ça.</p>

<p>Objectivement, rebondir après une grosse rupture associative, passer du baume sur du trauma, traverser une pandémie en plus de ça, et être encore là, c’est un bilan très honorable. Ne pas en sortir indemme, c’est…presque attendu. Personne n’est surhumain.</p>

<p>Mais quand on avait envie de continuer à s’investir, c’est très frustrant. Je suis un peu triste, je vis malgré tout partiellement comme un échec le fait de devoir cesser, là, de faire ce que j’avais commencé, en ne finissant même pas les projets que j’avais démarrés. Je vois bien que c’est ridicule, un peu comme quelqu’un qui le pied dans le plâtre après un accident du travail, ne parlerait que de retourner au bureau. Ben non. Manifestement tu ne peux pas retourner au bureau. <em>Lâche</em>.</p>

<p>Le sentiment avec lequel j’ai le plus lutté (et avec lequel je lutte toujours, en fait), est l’impression d’abandon de poste. C’est compliqué de cesser de s’occuper de quelque chose 1) qui importe 2) dans lequel je pense que je suis bonne. Et c’est pour ça que, à l’aube de ce qui devait être l’AG 2020 de la Fédération FDN, j’ai hésité. Je n’ai pas présenté formellement ma démission. En fait une bonne partie de ce que je viens d’écrire était déjà très clair. Mais voilà, j’avais aussi envie de ne pas abandonner le poste. J’ai vraiment l’impression de trahir la confiance qu’on m’a fait et c’est pas agréable du tout.</p>

<p>Je suis bonne à prendre cette hauteur pour comprendre les dynamiques qui traversent divers groupes de travail, diverses associations, diverses personnes. Ça, c’est l’état de l’union. C’est je pense l’une des choses, voire la seule pour laquelle je pense qu’une fédération comme celle-ci a besoin de présidence. Parce qu’il faut pouvoir être en position de discuter avec tout le monde, de mettre un peu la main à la patte partout, sans vraiment faire, pour faire ça bien. Je pense que ça, je le faisais bien.</p>

<p>J’aurais aimé faire l’état de l’Union encore un moment, continuer à aider les gens à voir dans le grand patchwork qu’est la Fédé les lignes de couture qui donnent sa cohérence au plaid. Parce que c’est utile, que je suis bonne à ça, et que je tiens à cette cause et à ces gens. Mais on ne fait pas ce qu’on veut. La rupture qui s’est faite là est probablement irréparable en l’état. Il va me falloir du temps. Pour une fois dans ma vie, je ne vais pas remonter en selle après être tombée de mon cheval. Je ne sais pas dire si c’est de l’humilité ou du défaitisme. D’où l’impression d’échec assez douloureuse. J’en chie un peu, en vrai. Ça va de mieux en mieux, j’apprends à faire la paix, mais <em>pfiou</em>.</p>

<p>C’est possible que je ne remonte plus jamais un cheval. Je ne sais pas. En tout cas ma vie ne tourne plus autour de la lutte, et c’est bien aussi. Ça ouvre d’autres possibles. Ça me permet d’explorer d’autres aspects de ma vie, où l’équilibre entre ce que je donne et ce de quoi je me nourris est meilleur.</p>

<p>Et c’est important, ça, parce que, et je finirai par là, dans l’associatif, on court le marathon. Il faut rester, toujours, dans cet équilibre. Mais je ferme un chapitre, aussi, et ça me rend triste de l’écrire.</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.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.svg#icon-rss2"></use>
</svg> RSS</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.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.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.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.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>
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>

+ 83
- 0
cache/2021/a0ec305634258e807f376799258029cb/index.md View File

@@ -0,0 +1,83 @@
title: Il est temps de tourner la page
url: https://www.hauteresolution.net/blog/articles/il-est-temps-de-tourner-la-page/25/
hash_url: a0ec305634258e807f376799258029cb
Je ne pars jamais au bon moment. Je n’ai pas le kaïros –l’art du bon moment, je ne sais pas saisir ça. Je pars de la boite de nuit quand on rallume la salle, moi. Je reste jusqu’au bout. C’est très cohérent avec ma nature têtue –je suis très têtue et très fidèle – je ne m’en vais pas, quitte à fermer la marche.
<p>Mais ça me joue des tours, parce que parfois, curieusement, dans l’associatif, il faut partir. C’est très difficile à penser pour moi, qui ai toujours pensé l’engagement militant comme un combat. Tout abandon de poste a des airs de mutinerie.</p>
<p>Je n’ai pas de chance : en sus, partir, dans l’associatif, c’est la tâche la plus difficile. Quelle que soit ta prédisposition à partir. C’est le moment le plus douloureux, le plus difficile, et l’un des moments, à mon sens, les moins documentés. On écrit peu, on se parle peu sur comment on se barre je trouve. Se barrer, sur les trois associations qui ont marqué ma vie, ça a peu fait l’objet de ces moments dans l’associatif où on se passe du savoir sur comment ça marche. Et pourtant j’en ai vu, des gens partir. Mais voilà, voir des gens plus ou moins mal gérer des passations de responsabilités associatives c’est une chose, le faire soi c’est une autre. Personne ne te parlera de comment il faut faire. A part te dire qu’il en chie, parce que <em>guess what</em>, tout le monde en chie. On en chie, mais comme on se barre, on ne laisse pas aux jeunes un post-mortem de nos erreurs, de nos regrets, histoire qu’ils en chient moins. Au mieux ils peuvent nous regarder faire et essayer d’en tirer une conclusion.</p>
<p>En conséquence, ce billet de blog a deux objectifs : expliquer pourquoi je m’en vais, pourquoi j’ai envie de prendre cette curieuse décision, moi qui n’y pense jamais, et puis ce que ça fait. Pour que peut-être quelqu’un qui se pose la même question ait, enfin, un peu de doc. Pour ce que ça vaut, évidemment. </p>
<h2>Un premier départ : l’ouragan</h2>
<p>Je suis toujours partie quand il était trop tard, donc. Quand j’ai quitté le MAG –la première association où l’on m’a confié des responsabilités – cela faisait déjà plusieurs semaines voire des mois, je ne sais honnêtement plus combien de temps j’ai flotté comme ça, que je n’étais plus –comment dire – en alignement avec ce que je faisais. J’allais aux permanences avec ce sentiment d’aller faire mon devoir, comme le petit soldat que je suis, mais pas la fleur au fusil. Plutôt comme si c’était le énième matin, et qu’il faut, mais pfff. Je n’avais pas le cœur à quitter cette association qui m’avait tellement fait grandir, à qui je dois mon épine dorsale politique, mes racines militantes. C’était dur, putain. Et en même temps, je dépassais de la boite comme Alice coincée dans sa pièce, et je le savais. La seule méthode que j’ai trouvée pour partir, et donc, que je ne conseille pas, ça a été de trouver un stage de fin d’études à quelques 500 km de là, de rendre les clés, la mort dans l’âme, la veille, et d’effectuer la coupure, comme ça, physiquement, brutalement. Je me suis littéralement foutue dehors à coups de pieds. Et comme il était trop tard, je suis partie quasiment sans prévenir.</p>
<p>Comme il était trop tard, moi qui avais ramé parce que mon prédécesseur au MAG était parti avec environ le même talent (tout le monde en chie, je ne lui en veux pas), je n’ai rien organisé comme passation. Je suis partie avec tous les fichiers de mise en page de la revue (la Magazette) dont j’avais la charge. Mes successeurs ont dû tout reconstruire après moi et quasiment sans aide de ma part. C’est nul. C’est un de mes regrets les plus colossaux de ma carrière associative. Honnêtement : pardon. Du fond du cœur, pardon. J’ai honte, vraiment, d’avoir traité les gens comme ça.</p>
<p>L’enseignement que j’en tire est qu’en fait la passation est quelque chose qu’on ne fait pas dans la semaine où l’on se casse. On devrait presque le préparer dès le premier jour de notre mandat. Idéalement il faudrait toucher cet équilibre : je suis en charge, je fais ce qui est sous ma responsabilité, mais si jamais il arrive quoi que ce soit je peux déclencher les mécanismes A B et C pour que ça continue à rouler sans moi. Vous voyez les entrainements à l’alarme incendie, qu’on fait tous les ans juste pour se rappeler comment faire au cas où ça arrive vraiment ? C’est un peu la même idée.</p>
<p>Si vous demandez à un responsable associatif, de rentrer dans ce genre de démarche, il peut avoir une réaction de recul plus ou moins violente. Et c’est assez normal. C’est très contre intuitif, parce que préparer son départ, ça veut dire accepter qu’on va partir un jour et dans l’associatif je crois qu’on postule que c’est impensable : on est engagé, là, c’est pas pour se débiner dès le premier jour de mandat. Imaginez si la personne qui partage votre vie vous parlait divorce à brûle-pourpoint là. Vous prendriez peur : « pourquoi tu me parles de ça ? On est pas bien ensemble ? ». Parfois comme ici, la vie décide pour nous et c’est pour ça qu’il faudrait anticiper. Mais on ne se l’imagine pas. Cet état d’esprit demande une certaine dose de sagesse et de lâcher prise. Comme c’est pas facile de s’y projeter on procrastine, ce que j’ai fait, comme mon prédécesseur. C’est vraiment plus facile à dire qu’à faire, et donc l’autre leçon c’est qu’il faut une petite dose d’indulgence pour la personne que vous encouragez à faire ça. C’est très normal qu’elle commence par avoir peur.</p>
<p>Alors, très curieusement, alors que je cumulais un cursus en classe préparatoire littéraire et le conseil d’administration de l’une des associations LGBT+ les plus vieilles de France, ce n’est pas pas la charge de travail qui m’a fait partir. C’est l’ouragan dans ma tête. On ne peut pas prendre soin des jeunes LGBT et soi-même ne plus savoir très bien où on en est. Ça ne marche juste pas. C’est un peu comme si tu assurais quelqu’un à l’escalade alors que toi-même tu as le vertige. J’étais pas dans la meilleure passe avec ma propre identité sexuelle, je n’avais plus la stabilité nécessaire pour écouter, j’étais une boule de voix discordantes moi-même. Il me fallait du calme, et de l’air nouveau. Ce que je me suis donné, oui, mais plus comme on arrache un pansement d’un coup. Un déchirement.</p>
<h2>Le feu de camp</h2>
<p>Ma vie s’est recentrée assez vite autour de la Quadrature du Net. L’association de lutte pour les droits et libertés fondamentales à l’ère numérique a accueilli à bras ouverts les torrents d’énergie que j’avais à investir alors, et j’ai accompagné ce qui est devenu une sorte de seconde famille depuis. Cette association a changé assez littéralement ma vie, et je ne parle pas seulement de mon apprentissage des questions liées aux télécoms via la Revue de Presse. Quand l’association de fait est devenue une association loi 1901, j’étais là ; quand cette association loi 1901 a réformé ses statuts pour arriver à peu près à la forme qu’elle a aujourd’hui, j’étais là. J’ai vu des départs extrêmement douloureux –pour tout le monde. J’ai vu une association guérir, doucement (ce n’est probablement pas encore fini) de blessures humaines profondes. J’étais encore là. Partir m’a juste semblé impensable. Je n’allais pas m’en aller alors que bénévoles comme salariés faisaient part de leur blessures et tentaient de les soigner ensemble. Je n’allais pas partir quand on a plus que jamais besoin d’associations qui luttent pour nos droits et libertés, qui analysent les textes, qui font un travail si indispensable dans cette ambiance morose où le moindre acquis social est menacé. Je n’allais pas partir de cet endroit qui m’avait fait grandir parce que j’entendais bien donner l’impulsion, à d’autres, de les aider à grandir comme moi La Quadrature m’a fait pousser. Et pourtant.</p>
<p>J’ai, à la dernière assemblée générale à laquelle j’ai assisté, posé un texte douloureux. Je m’étais effondrée après une énième infection du pied. Et tout avait en fait commencé à vriller avec une violente infection des sinus dont je parle <a href="/blog/articles/prendre-soin-cest-possible/16/">ici</a>. Je faisais un burnout. Mon corps s’est mis à lâcher prise. Pour rappel, un burnout, ça caractérise moins un trop-plein de charge de travail que de charge cognitive et émotionnelle. C’est du stress empilé. Et la pile est si haute que tu ploies dessous. C’est ça qui te plonge dans cette fatigue sans fond dont il est si difficile de ressortir indemne. On s’en sort, hein, je m’en suis sortie. Mais pas indemne.</p>
<p>Quand j’ai écrit ce post, j’avais déjà commencé à entrevoir la place qu’avait pris La Quadrature dans ce qui me pesait (et c’était une pensée fort désagréable). En participant au collège des membres, j’avais pris ma part dans la charge d’une association qui a énormément compté à un moment et on venait de traverser des moments où l’on n’était pas loin du maximum de la charge émotionnelle possible posée sur le plan de travail. Il a fallu encaisser de grosses fractures, dans mon propre camp, et courageusement, essayer de faire perdurer le collectif malgré tout. Et j’y suis allée. J’ai courageusement encaissé. Mais voilà, encaissé. Le souvenir de cette discussion sur Twitter avec un ancien bénévole de la Quadrature ayant des mots incroyablement durs pour l’association reste douloureux. Il l’est moins qu’avant aujourd’hui. Il l’est moins depuis que j’ai fait la paix avec une chose : j’ai pris des balles dans mon propre camp. Toutes les balles prises dans cette période-là, c’était dans mon <em>fucking</em> propre camp. Pour l’essentiel, je pense que ce sont des balles perdues. Ou des giclures d’acide qui débordait, là. Des dégâts collatéraux. C’est un sentiment qui est assez proche, à la réflexion, de ce que vivent les enfants coincés dans un couple dont le divorce se passe mal : il y a une violence qui ne t’est absolument pas destinée, mais que tu vas quand même encaisser dans les tripes parce que tu es là, au milieu, que tu ne peux pas éviter. Tu ne comprends pas très bien ce que tu as fait. Tu as un peu l’impression que c’est contre toi, alors que non, c’est l’histoire de tes parents. Et tu peux mettre du temps à t’en remettre et à pardonner. T’as pris des balles perdues. Tu sais que c’est tes parents qui ont tiré. Tu sais qu’ils savent que tu es sur le champ de bataille, exposé. Mais personne ne peut faire autrement.</p>
<p>On n’est jamais, dans le travail militant, jamais, préparé à ça. On est préparé à se battre contre le grand Copyright, contre la Silicon Valley, les GAFAM, contre des députés qui n’écoutent pas et qui te votent des machins scélérats tendance Frédérique Vidal mais pas à encaisser ça.</p>
<p>J’ai mis un peu de baume là dessus, je ne sais pas encore combien j’ai pardonné. C’est pas simple de pardonner quelque chose qu’on a d’abord reçu comme une forme de trahison. C’est tout un travail. Mais c’est comme un divorce, c’est plus facile à penser depuis que j’ai aussi cette perspective : hey, personne ne pouvait faire autrement. <em>And it’s better out</em>. Autant vous dire que j’aurais aimé que ça sorte plus tôt, hein, avant que ça fermente à ce point, mais maintenant c'est fait, c'est pas plus mal quelque part.</p>
<p>Je m’éloigne un peu du sujet initial en vous racontant ça, mais je ne peux pas séparer le récit de ces départs successifs avec leur cause. Ça fait partie de la leçon. La leçon ici, c’est que j’ai vu bien tard ce que j’étais en train d’empiler dans mon sac à dos, là. Je collectais des moments à grande charge émotionnelle les uns sur les autres, et je n’ai pas résolu la tension qui était là. J’ai encaissé. Donc heh, elle est restée là où elle était, bien sagement. Et puis dessus, j’ai rajouté la charge mentale incroyable qui constitue en : être membre d’un collectif, qui est responsable d’une association qui n’a pas l’air mais qui est une grosse association, qui demande beaucoup d’attention, de travail, c’est une grosse machine qui a son passé, qui fait plein de frottements à plein d’endroits, qui est très belle et puis en même temps une aventure humaine très complexe, qui est l’employeur de plusieurs personnes (ce qui constitue une responsabilité énorme). Bref j’avais un sac de rando plein à craquer de trucs qui s’empilaient, puis qui n’en finissaient pas de s’empiler. Tu m’étonnes que mon corps ait fini par décider de lâcher. D’abord une belle crise de sinus, puis, coup sur coup, trois infections du pied. La dernière, jusqu’au dernier moment j’étais pas tout à fait certaine que les antibiotiques dose cheval qu’on m’avait prescrit allaient fonctionner. Ça allait bien (non). Encore une histoire de partir trop tard, notez. Ce billet est cohérent.</p>
<p>Normalement, ce qui enlève des choses dans le sac à dos, c’est ce que j’appelle le feu de camp. C’est l’espace, où, dans le travail militant, l’on produit de la chaleur. Dans un travail comme celui de La Quadrature, il y a une ligne de front. Il y a des gens à convaincre, des argumentaires à démonter, des batailles juridiques. Mais il y a aussi une base arrière. Avec un feu de camp, de la bouffe, des matelas pour dormir. On vient se réchauffer à la chaleur du feu, on se raconte des histoires, on se demande des nouvelles. On mange un bout, on se repose. On fait lien. Et on développe une forme de plaisir de lutter ensemble. Quand ça marche bien, il ya toujours un petit groupe de bénévoles qui maintiennent le feu allumé et se reposent, et un autre groupe de bénévoles qui est « au front ». Et on peut observer que les bénévoles se relaient au feu de camp, comme ça. Ce n’est pas toujours les mêmes qui portent la lutte, ce n’est pas toujours les mêmes qui mettent une buche dans le feu, il y a une forme d’équilibre qui s’installe. On se nourrit d’être ensemble. Ça donne de l’énergie pour lutter. Mais lutter fatigue, alors on part se reposer, et on reviendra quand on aura récupéré, au chaud, dans la base arrière.</p>
<p>J’ai traversé une époque où je pense que la gueule du feu dans l’âtre était pas vaillante, et où peu d’énergies étaient disponibles pour remettre une bûche. Peut-être aussi que je cela n’aurait été simplement pas suffisant pour endiguer cet empilement.</p>
<p>J’en tire plusieurs leçons :</p>
<ul>
<li>participer au travail associatif, parfois, c’est être à la base arrière à juste remettre une bûche dans le feu. Heh bien ça nourrit autant la lutte que travailler sur un recours au Conseil d’État. Et si on oublie de faire ça, on n’a pas immédiatement un problème et c’est pernicieux. On finit par en avoir un dès que la première ligne de front s’épuise. Un bénévole épuisé jusqu’à la couenne ne reviendra pas. Un bénévole qui a de quoi se ressourcer dans le collectif, peut-être.</li>
<li>Ne faites pas comme moi. Ecoutez-vous. Faites régulièrement le point sur votre sac de rando. Faites des pauses. Prenez des vacances associatives. Prenez au sérieux les amis qui ont une idée de ce qu’il y a dans votre sac et vous disent de lever le pied. Prenez au sérieux le fait que l’énergie bénévole c’est rare et précieux et que vous devez prendre soin des autres et leur dire de lever le pied. Prenez des nouvelles des uns des autres. Allumez et entretenez le feu de camp. C’est plus facile à dire qu’à faire, encore une fois, mais vraiment : on peut quitter une asso sans passer par la case hôpital. Ce n’est pas censé arriver. Les départs comme ceux que j’ai vécu au MAG il y en a cent mille, c’est commun parce qu’on ne devient pas un associatif sage du jour au lendemain. C’est nul, mais c’est logique que ça arrive. Le burnout, non, c’est pas logique. C’est évitable.</li>
</ul>
<p>J’ai expliqué ces leçons en AG dans mon texte, j’ai expliqué que j’ai compris tout ça trop tard et j’ai demandé à démissioner. Ce départ a été entériné par le reste du collectif, et ça me fait encore bizarre (alors qu’en fait, c’est pas récent du tout…) de voir, qu’après dix ans de chemin commun, mon nom n’est plus sur le site de La Quadrature. Mais ça a a donné un peu d’air d’arrêter de remplir mon sac comme ça. Je pense aujourd’hui que c’était bien de fermer ce chapitre. Triste, mais bien.</p>
<h2>La présidence : la grosse arnaque</h2>
<p><em>Plot twist</em> : j’avais une autre source de cailloux-qui-finissent-dans-le-sac-de-rando. Haha. Alors celle là c’est le truc qui était caché juste devant mon pif. Haha. Ha. Hrem.</p>
<p>Je suis devenue en 2017 présidente d’une association (co-présidente, techniquement). J’en parle à plusieurs reprises sur ce blog. En réalité je suis arrivée dans l’aventure de la Fédération FDN à peu près à la même époque qu’à la Quadrature, et beaucoup de choses ont été concommitantes ou pas loin, typiquement le changement des statuts de la Quadrature vers la création d’un Collège responsable de membres et mon élection à la Fédération sont arrivés dans des temporalités très proches ; mais pour des raisons de clarté du propos, j’ai séquencé. Mais voilà c’est ça qu’est drôle, si on veut. Pendant, littéralement pendant que j’étais en train de gérer les cailloux qu’arrivaient dans mon sac d’un côté, de l’autre on m’en balançait des kilos.</p>
<p>Je m’explique. Je ne veux pas qu’on comprenne ça comme « on m’a prise par surprise et je me suis retrouvée présidente ». J’ai accepté de prendre en charge la responsabilité de la présidence en conscience, quand même. Evidemment que j’étais au courant du fait que cela constituerait une charge supplémentaire. Evidemmment que j’étais consciente de ce que je faisais et que je m’y suis préparée, un peu. Je pense même que j’ai jamais été aussi prête pour endosser une responsabilité associative.</p>
<p>J’ai beaucoup retourné la question dans ma tête, parce que je suis toujours scandalisée par cette partie-là de mon burnout et de sa guérison. Comment ça se fait que j’aie ployé aussi vite sous une charge que j’étais globalement prête (et légitime) à recevoir ? Parce que j’ai ployé, j’ai littéralement ployé, comme le roseau, là, crouiiiiic. J’ai été élue en 2017. En 2018, les signes du burnout ont commencé à poindre. En 2019 je lâchais tout. Deux ans. C’est allé très vite. J’ai passé dix ans à la Quadrature, j’y ai littéralement vécu le Vietnam, avant de prendre la décision de m’en aller et là en deux ans je me retrouve incapable d’assurer. C’est quoi ce truc. Vous vous imaginez pas la frustration, la déception. C’est quoi ce truc. Je veux dire, que je m’épuise après dix ans de lutte à LQDN est normal, et c’est même plutôt un bon score de longévité, dix ans. Mais deux ans. Je n’arrive pas à m’y faire.</p>
<p>Vous allez me dire : « facile ». Oui, avec ce que je ramaisssais comme cailloux à La Quadrature ça suffisait bien, oui. Je suis arrivée à cette conclusion toute seule, j’ai aussi démissionné de LQDN en me disant que ça protégerait l’engagement militant qui restait et que ça me permettrait de recentrer mon énergie. Ça a certainement sauvé ma santé. Accepter de lâcher ma responsabilité à LQDN a été l’une des décisions les plus tristes de ma vie associative mais ça a soulevé l’énorme couvercle de marmite sous lequel j’étais coincée et heureusement. En juin 2020, voyant la bouffée d’air qu’entériner cette difficile rupture m’avait donné, quand j’ai pris le temps de poser un mail aux fédérés à propos de l’AG de la Fédération, empêchée à cause de la pandémie comme beaucoup d’autres rassemblements, j’ai en substance dit que j’avais pas un bilan grandiose (wesh, burnout) mais que je pouvais sans doute repartir pour un an à marche diminuée. Je comptais beaucoup sur le fait que j’allais trouver un équilibre entre l’associatif et le reste avec UNE SEULE responsabilité associative, qu’avec le temps la fatigue et la douleur allaient se tasser un peu et que je pourrais continuer. La Quadrature plus la présidence, ça faisait trop, c’est évident. Mais ça tout seul, ça devrait marcher. Non ?</p>
<p>Ce n’est pas ce qu’il s’est passé dans les douze derniers mois. On est en juin 2021. J’ai quitté LQDN en juin 2020 en gros, en prenant acte des leçons du burnout qui m’a occupé une partie de l’année 2019. Ça fait un an que je suis à peu près à flot (heureusement, ma santé mentale n’aurait pas survécu à la pandémie sans ça). C’est clairement dû au fait que depuis que j’ai tout lâché en urgence je n’ai quasiment rien repris comme charge mentale nulle part. Je suis en arrêt maladie, vis à vis de ma fonction. Donc ça va. Mais je suis en arrêt maladie, ce qui veut dire que je ne peux pas dire que j’occupe ça pleinement. Je n’ai pas repris, comme je pensais en être capable alors, ce que j’avais planté là comme charge l’année avant <em>because burnout</em>. Je n’ai pas rouvert de consultations de l’Arcep. Je ne lis plus mes mails. Il y a quelque chose de cassé, j’ai du mal à formuler ça autrement. Et le scandale c’est pourquoi ?</p>
<p>J’ai en gros deux éléments de réponse et ça ne me fait pas plaisir de les écrire (c’est aussi pour ça que j’ai repoussé l’écriture de ce billet, c’est pas agréable).</p>
<h2>Le président de Shrödinger</h2>
<p>Le premier, que j’ai expliqué en long et en large dans ce long mail (je suis spécialiste des mails fleuves, <em>well, you’re reading this, you know why</em>) aux fédérés il y a dix mois donc, tient simplement en ce en quoi la présidence est une arnaque.</p>
<p>La présidence, c’est un poste où l’essentiel du travail est invisible. L’arnaque est là.</p>
<p>On attend plein de choses différentes des présidents d’association, ça c’est variable en fonction des collectifs. Il y a des associations qui ont des traditions de présidence très descendante, d’autres au contraire où le président est un peu comme le président allemand, là mais pour garantir l’unité, il y en a où la présidence est un exercice qui ne change rien, il fallait juste un nom pour la préfecture. Il y a de tout.</p>
<p>Je trouve qu’il y a quelque chose qui revient quand même assez souvent. Quand je discute avec d’autres présidents et présidentes d’assos, souvent, on se rend compte que ce qu’on avait en commun malgré les styles de « direction » différents, c’est faire l’état de l’union. Comme c’est la seule chose qui était claire dans ma tête sur ce qu’on attendait de moi, j’en ai fait le centre de mon activité de présidente de la Fédération.</p>
<p>Faire l’état de l’union, ça se matérialise pour moi dans quelque chose que j’ai introduit, d’ailleurs, dans toutes les assos que j’ai codirigé : les bilans. C’est un document qu’on formalise en général un peu avant l’AG, et qui résume les accomplissements de l’association en un an. Ce sont ces bilans qui sont (quand tout se passe bien), soumis à l’approbation de l’AG. Ils contiennent en réalité trois parties, l’introduction, les bilans proprement dits (ce qu’on a fait cette année), les projets (ce qu’on aimerait faire l’année prochaine et qui constitue un programme d’action minimal qu’approuve l’AG).</p>
<p>Hé bien l’état de l’union c’est l’introduction de ce document. C’est un texte qui vient dessiner la cohérence, les lignes de force, dans tout ce que fait l’association, dans sa diversité. Dans le cas de la direction d’une fédération, qui est par essence diverse (comme celle que je présidais), je trouve que c’est un exercice essentiel. On fait le point, on montre en quoi il y a un lien entre toutes ces actions qui ont l’air disparates, au besoin on recentre aussi, quand l’exploration de toutes les pistes semble perdre de vue l’épine dorsale de valeurs qui sont la raison d’être de l’association. C’est un exercice qui mélange, tous les ans, le passé (ce que l’asso a été, ce pour quoi elle a été fondée), le présent (ce que nous faisons et ce en quoi ce présent est bien un héritage du geste fondateur) et le futur (ce que nous avons collectivement envie/besoin de faire).</p>
<p>Souvent, je n’arrivais pas à tenir assez bien le rythme d’écriture (j’ai écrit la plupart des bilans que j’ai présentés seule, et dans des conditions iniques, le bilan 2017 je l’ai écrit quasi intégralement sur mon téléphone) et en fait l’état de l’union était présenté à l’AG sous la forme d’un laïus d’ouverture parce que le document était à peine sec. Un discours d’état de l’union, quoi.</p>
<p>Pour faire correctement l’état de l’union, il faut accepter de prendre énormément de charge mentale. On ne réfléchit pas uniquement la semaine avant l’AG à ce que ça veut dire, cette asso, on y réfléchit sous la douche, à 2h du mat quand on n’arrive pas à dormir. On y réfléchit en préparant la bouffe. On devient un peu monomaniaque. Mais c’est ce travail constant qui produit la profondeur, l’épaisseur de la réflexion au moment des bilans.</p>
<p>Et puis, en fait, c’est aussi un travail quotidien parce que dans la pratique, il y a besoin de prendre des décisions ou de donner son avis un peu plus qu’une fois par an. Parfois il y a des crises et c’est ce matériau de réflexion qui sert, en partie, pour les démêler. Tu passes ton temps à refaire les coutures du patchwork (pas celles qui relient les pièces entre elles, les coutures qu’on fait en plus, sur toute la couverture, pour que l’ensemble se tienne bien). Dès qu’il y a une nouvelle pièce de couleur, hop, tu viens t’assurer qu’elle est bien reliée au reste et que la couverture est toujours harmonieuse.</p>
<p>Pourquoi un·e président·e de fédération a l’air de ne pas en foutre une ? Parce que ça, ça mange déjà assez de charge mentale, merci. C’est complètement invisible. Mais c’est ça, le taf. Ton taf, c’est de méta touiller en permanence le bordel pour qu’il ait l’air cohérent pour les gens à l’intérieur comme à l’extérieur. Plus c’est le bordel, plus tu as du travail. Pour reprendre la très belle image de Koolfy si celle du patchwork ne vous parle pas, tu passes ton temps à parcourir la toile pour voir si tous les fils sont bien reliés, et à essayer de renouer les fils qui sont cassés si c’est le cas. D’autres gens nouent des fils. Tu n’es jamais seul à réparer. Mais t’as ce privilège (un peu empoisonné, mais privilège) d’avoir en tête l’inventaire exact des endroits où il faut faire de la maintenance.</p>
<p>Le revers de la médaille, c’est que s’il y a eu des problèmes –et alors, en matière de problèmes, je ne vous remercie pas les gens, hein, j’ai été servie-- hé bien ça devient aussi <em>tes</em> problèmes. Tu te fais du soucis en permanence. Tu dors moins bien. Tu tournes ça dans ta tête dans tous les sens : 1) sérieux il est 3h du mat, j’ai cours demain, ce serait bien que ça cesse ce problème 2) bordel ça craint il faut une solution. Cette ambiance, je l’ai connue à plusieurs moments dans mon mandat de présidente.</p>
<p>Je ne suis pas salariée de mon association. A côté de cette bagatelle, je faisais aussi de la régulation des télécoms, j’écrivais (j'écris toujours) une thèse (qui n’a rien à voir), je me prenais des giclures d’acide dans la gueule parce que la souffrance de bénévole fermentée c’est plutôt dégueu à brasser. Pour situer. Oui, vu d’ici l’aspect burnout paraît très logique. Quand on nage la brasse coulée dans tout ça, on ne voit rien, il faut sortir la tête de l’eau pour ça.</p>
<p>Il se trouve, je résume parce que la tambouille interne fédérale ne vous intéresse pas ici, mais il se trouve que dans la Fédération FDN spécifiquement il y a, j’ai l’impression, des envies très divergentes concernant la présidence. A la fois des envies de direction très ferme, parce que ça permet de savoir par où aller sans forcément y investir de la réflexion parce qu’on est sur des problématiques de terrain et qu’on peut pas être partout. Et d’autonomie, parce que la fédé est quand même une aventure fondée sur le principe de la décentralisation (du coup une tête centrale ça dénote dans le paysage). C’est très intéressant, parce c’est inconciliable. Mais ça fonctionne à peu près quand même.</p>
<p>Et y’a pas une putain de fiche de poste. Ce que je viens de vous expliquer sur le métier de président·e d’asso, c’est un mélange entre ce qu’on m’a expliqué et ce que j’ai fini par tracer comme ligne faute d’y comprendre quelque chose à ce qu’on attendait de moi. Non mais parce que, cette histoire de rendre compte aux gens qui nous ont élu, j’y tiens. Mais j’aimerais savoir sur quoi du coup. Je suis ce genre de personne qui a besoin d’avoir une idée très claire de ce qu’on attend d'elle J’ai jamais vraiment su. J’ai passé mon mandat à essayer de comprendre, ça m’a épuisée. Et comme j’étais en plus partie sur des bases pas si saines que ça, ça a vrillé.</p>
<p>J’ai appris, plus tard, en lisant, que les attentes contradictoires et l’absence de fiche de poste, c’était un bon gros <em>red flag</em> à burnout.</p>
<h2>De mauvaises bases</h2>
<p>Le deuxième élément de réponse que j’ai, c’est donc que je suis partie sur de mauvaises bases. Déjà probablement que j’aurais dû démissionner à LQDN avant en fait, pour protéger mon énergie. Je serais certainement partie avec un sac à dos moins plein et j’aurais probablement mieux géré les différents aléas qui ont secoué mes trois dernières années de mandat.</p>
<p>En plus de ça, je pense que j’ai traîné une partie –peut-être la majeure partie de ma mandature– le traumatisme de l'AG 2016 de la Fédération FDN. Alors à partir de là si mentionner cet épisode te rappelle des mauvais souvenirs, tu as ma bénédiction pour passer à la suite. <em>Content warning</em>, comme on dit. Je vais être obligée de brasser des trucs pas drôles. Si t’es OK, la suite s’affiche si tu cliques <a href="#collapseCW" data-toggle="collapse">là</a>.</p>
<div id="collapseCW" class="collapse">
<div class="well">
<p>C’est un épisode qui m’a traumatisée, vraiment, parce que d’une part j’ai été directement témoin de la souffrance d’une personne en particulier, et d’autre part parce que oui j’ai vécu la réaction –en fait inévitable– du collectif comme violente. J’ai jamais vu un truc aussi violent dans ma vie associative. J’ai rarement eu aussi peur du collectif auquel j’appartenais.</p>
<p>Parce que je vais vous faire une confidence. Ce que Benjamin a fait ce soir là, je l’ai compris parce que j’aurais fait pareil. Je suis allée le voir parce que après d’une bouffée d’émotions, j’aurais aimé qu’on soit venu me voir. Ça m’est arrivé aussi de claquer la porte après avoir insulté tout le monde et croyez bien que je me souviens de chaque seconde de chaque fois où c’est arrivé, parce que je regrette chaque putain de seconde. J’étais pas en état de faire autre chose que péter une durite, mais si vous saviez comme je ne pensais pas un mot de ce que j’ai dit. Comme je m’en veux. J’aurais aimé que quelqu’un soit venu juste pour me dire que c’était OK d’être très triste/très énervé/rayez la mention inutile, et que c’est mieux dehors que dedans. Alors c’est ce que j’ai fait. Pour toutes les fois où moi ça m’est arrivé et où personne n’est venu.</p>
<p>J’ai pas passé un bon weekend. La réponse du collectif ça a été d’être très violent envers Benjamin, et par transitivité, moi, parce que en fait voilà, je me mettais un tout petit peu à sa place voyez. Et ça c’est le deuxième traumatisme. Une fois que j’ai arrêté de péter des crises d’angoisses en pensant à cette épisode (non parce que même deux ans après je tremblais quand j’en parlais, hein) j’ai pu un peu mieux comprendre en quoi cette violence était inévitable. J’ai pu comprendre aussi en quoi le collectif avait été blessé, en quoi il était aussi légitime à demander des excuses. J’ai pu un peu me mettre à la place de tous les autres et les pardonner pour tous ces mots très très très durs. Donc maintenant ça va. Je ne tremble pas, je n’ai même pas le coeur qui s’emballe quand j’écris ça.</p>
<p>J’ai été élue, à l’été 2017, un an après cet épisode, dans des circonstances liés directement à ce dernier. L’AG a été organisée sur le tard, parce que personne n’avait envie de revivre ça, c’était très frais dans les esprits. J’ai déplacé des montagnes d’énergie (je ne sais pas d’où je les sortais, btw) pour que cette AG ait quand même lieu. On était moitié moins que d’habitude. Alors, se retrouver a fait du bien, assurément. Mais j’ai été élue dans cette ambiance-là.</p>
<p>Et ce traumatisme est resté tout ce temps. Faire la paix avec ça c’est tout récent. Ça a posé un prémisse affreuse à mon mandat, celle que peut-être que le collectif allait se retourner aussi contre moi. Que cette violence-là était possible. Et donc, toutes les fois où il y a eu des balles perdues, à La Quadrature, au sein de la Fédé, après cet épisode, ça remuait le couteau dans la plaie et ça me confirmait juste dans cette idée qu’en fait les gens sont violents. Ça a mis des graines de méfiance. Je me suis mise à avoir peur d’aller aux AG et à en faire des cauchemars.</p>
<p>C’est idiot, évidemment. Objectivement ça n’a aucun sens. Personne n’a envie de revivre ça, je veux dire. Mais un traumatisme est ce qu’il est, c’est pas une réaction très réfléchie aux choses hein. Reste qu’on ne peut pas présider si on a peur du collectif, ça mène forcément à un exercice déraisonnable du pouvoir. On s’y accroche. Je suis pas exactement étouffée par l’ambition, mais oui, j’ai eu –surtout vers la fin-- des réflexes défensifs complètement pourris. Je pense, dus à la forme de paranoïa causée par ce traumatisme-là. Plus je vivais un truc qui ressemblait (et dans les deux ans qui ont suivi, je ne sais pas, on a décidé de sortir tous les cadavres du placard, du coup c’est arrivé assez souvent au final) plus cet état d’esprit se confirmait : « tu voiiiis les gens en fait ils te veulent du mal à toiiii ». Non, personne je pense ne me voulait directement du mal, à moi, personnellement. J’étais en train d’essayer d’échapper à une situation que j’avais vécue il y a trois ans, j’adressais pas le problème actuel, et puis d’abord c’était pas à mon propos. J’ai commencé à comprendre ça à la dernière AG à laquelle j'ai été, très mouvementée –décidément– quand j’ai vu que malgré tout ce bordel les fédérés m’avaient réélue. Je me suis dit, wow, ils m’en veulent pas finalement. Quota, <em>évidemment</em>.</p>
<p>Merci pour ça.</p>
<p>Donc j’ai essentiellement guéri de ce traumatisme, il est largement derrière moi aujourd’hui, je pense. En tout cas je prends pour signe de guérison relative le fait d’y penser en paix. Je ne sais pas dans combien de temps la blessure que ça a causé va suffisamment cicatriser pour que ça soit disons faisable de revenir dans le collectif. C’est une chose de faire la paix, c’est une autre, haha, ensuite, de naviguer la présidence en portant ce type de blessure : c’est pas parce que ça cicatrise que ça n’existe plus. Et j’en suis là. J’ai été blessée, ça a rompu quelque chose, et je ne sais pas encore réparer ça.</p>
</div>
</div>
<p>C’étaient de bien mauvaises bases. Ma vision des choses était biaisée, d’entrée de jeu, dans un sens pas sain, je crois. A certains égards elle a été un peu encouragée dans cette direction et ce n’était pas une super influence à la réflexion. Je regrette un peu d’avoir écouté, honnêtement.</p>
<p>Après avoir pris de la distance, je ne vois pas bien comment on peut se sortir de ce mélange de choses indemne de toute manière. Le trop plein de charge émotionnelle, au dessus d’un bon vieux trauma des familles, avec des attentes contradictoires <em>on top of that</em>. Oh et une pandémie mondiale. Où j’ai passé douze mois à me dire ho je ne fous plus rien (<em>because</em> la guérison de tout ceci, hein, puis gérer vivre dans une pandémie mondiale<em> which is enough anyway</em>), suis-je encore légitime de toutes façons ? Etre reconduite à son poste par la force des choses est-il une marque de légitimité ? Pourquoi personne ne vient m’en parler ou s’en inquiéter en fait ? En fait on m’a foutue dans une partie de jeu vidéo en mode <em>ultra hard</em> dans me prévenir, il y avait trois ans où être présidente de la fédé ça allait être méga dur, j’ai bien choisi mon moment moi en fait.</p>
<p>Donc oui j’ai ployé. Indéniablement. Mais en observant les choses posément, peut-être n’importe qui aurait explosé en vol. Alors, oui : en sautant l’option traumatisme de 2016, que mon histoire personnelle n’a pas rendu simple à gérer (je sais que d’autres gens s’en sont beaucoup mieux sortis), prut-être que l’on durait un peu plus. Mais les différentes tensions dans le collectif, les attentes contradictoires, l’absence de fiche de poste, la passation qui a été saine par endroits et pas du tout par d’autres, ça formait tout seul un cocktail suffisant qui menait au burnout.</p>
<p>Et ceci, malgré, encore une fois, ce qui fonde ma légitimité à occuper cette place, le fait que je pense que ce que j’apportais au collectif, en faisant l’état de l’union, était utile. Juste, voilà j’ai probablement joué une partie en mode <em>ultra hard</em> sans avoir conscience du niveau. L’arnaque.</p>
<h2>Et voilà, partir, c’est dur.</h2>
<p>Je sais que tout le monde a compris. Aujourd’hui je crois que tout le monde sait que cette rupture est consommée. Mais j’ai pris mon temps pour l’écrire. Parce que le plus important finalement, c’est que je fasse la paix avec ça. Que je fasse la paix avec, somme toute, l’impression d’échec personnel que ça me laisse. Je sais que j’ai contribué à construire des choses. Je sais que ce ne sont pas trois-quatre ans de mauvais mandat. Mais sur mes standards, c’est un échec. Parce que je pensais avoir pris les leçons de tous ces départs. Je pensais pouvoir rebondir beaucoup plus facilement, même après avoir ployé.</p>
<p>Accepter ces points, les regarder en face, ça m’a aidé à faire la paix avec l’impression d’avoir été au final assez mauvaise. Le fait d’avoir ployé aussi vite et encore davantage, le fait de ne pas être foutue de repartir parce que quelque chose est brisé, c’est extrêmement frustrant. J’essaye de faire la paix avec ça.</p>
<p>Objectivement, rebondir après une grosse rupture associative, passer du baume sur du trauma, traverser une pandémie en plus de ça, et être encore là, c’est un bilan très honorable. Ne pas en sortir indemme, c’est…presque attendu. Personne n’est surhumain.</p>
<p>Mais quand on avait envie de continuer à s’investir, c’est très frustrant. Je suis un peu triste, je vis malgré tout partiellement comme un échec le fait de devoir cesser, là, de faire ce que j’avais commencé, en ne finissant même pas les projets que j’avais démarrés. Je vois bien que c’est ridicule, un peu comme quelqu’un qui le pied dans le plâtre après un accident du travail, ne parlerait que de retourner au bureau. Ben non. Manifestement tu ne peux pas retourner au bureau. <em>Lâche</em>.</p>
<p>Le sentiment avec lequel j’ai le plus lutté (et avec lequel je lutte toujours, en fait), est l’impression d’abandon de poste. C’est compliqué de cesser de s’occuper de quelque chose 1) qui importe 2) dans lequel je pense que je suis bonne. Et c’est pour ça que, à l’aube de ce qui devait être l’AG 2020 de la Fédération FDN, j’ai hésité. Je n’ai pas présenté formellement ma démission. En fait une bonne partie de ce que je viens d’écrire était déjà très clair. Mais voilà, j’avais aussi envie de ne pas abandonner le poste. J’ai vraiment l’impression de trahir la confiance qu’on m’a fait et c’est pas agréable du tout.</p>
<p>Je suis bonne à prendre cette hauteur pour comprendre les dynamiques qui traversent divers groupes de travail, diverses associations, diverses personnes. Ça, c’est l’état de l’union. C’est je pense l’une des choses, voire la seule pour laquelle je pense qu’une fédération comme celle-ci a besoin de présidence. Parce qu’il faut pouvoir être en position de discuter avec tout le monde, de mettre un peu la main à la patte partout, sans vraiment faire, pour faire ça bien. Je pense que ça, je le faisais bien.</p>
<p>J’aurais aimé faire l’état de l’Union encore un moment, continuer à aider les gens à voir dans le grand patchwork qu’est la Fédé les lignes de couture qui donnent sa cohérence au plaid. Parce que c’est utile, que je suis bonne à ça, et que je tiens à cette cause et à ces gens. Mais on ne fait pas ce qu’on veut. La rupture qui s’est faite là est probablement irréparable en l’état. Il va me falloir du temps. Pour une fois dans ma vie, je ne vais pas remonter en selle après être tombée de mon cheval. Je ne sais pas dire si c’est de l’humilité ou du défaitisme. D’où l’impression d’échec assez douloureuse. J’en chie un peu, en vrai. Ça va de mieux en mieux, j’apprends à faire la paix, mais <em>pfiou</em>.</p>
<p>C’est possible que je ne remonte plus jamais un cheval. Je ne sais pas. En tout cas ma vie ne tourne plus autour de la lutte, et c’est bien aussi. Ça ouvre d’autres possibles. Ça me permet d’explorer d’autres aspects de ma vie, où l’équilibre entre ce que je donne et ce de quoi je me nourris est meilleur.</p>
<p>Et c’est important, ça, parce que, et je finirai par là, dans l’associatif, on court le marathon. Il faut rester, toujours, dans cet équilibre. Mais je ferme un chapitre, aussi, et ça me rend triste de l’écrire.</p>

+ 190
- 0
cache/2021/d46752726e00de301573576176df1f1c/index.html View File

@@ -0,0 +1,190 @@
<!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>
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>Two articles on SPA or SPA-like sites vs alternatives (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="#f0f0ea">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f0f0ea">
<!-- 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://piperhaywood.com/two-articles-on-spa-or-spa-like-sites-vs-alternatives/">

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

<article>
<header>
<h1>Two articles on SPA or SPA-like sites vs alternatives</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.svg#icon-home"></use>
</svg> Accueil</a> •
<a href="https://piperhaywood.com/two-articles-on-spa-or-spa-like-sites-vs-alternatives/" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<p>I missed these two articles by Tom MacWright from last year.</p>

<p><a href="https://macwright.com/2020/05/10/spa-fatigue.html">Second-guessing the modern web</a>, 10 May 2020<br>
<a href="https://macwright.com/2020/10/28/if-not-spas.html">If not SPAs, What?</a>, 28 October 2020</p>

<p>In both, he outlines few upsides and downsides about the single page app (SPA) approach to websites and has a few points that I have really struggled to articulate in the past.</p>

<p>From “Second-guessing”:</p>

<blockquote>
<p>There is a swath of use cases which would be hard without React and which aren’t complicated enough to push beyond React’s limits. But there are also a lot of problems for which I can’t see any concrete benefit to using React. Those are things like blogs, shopping-cart-websites, mostly-CRUD-and-forms-websites. For these things, all of the fancy optimizations are trying to get you closer to <em>the performance you would’ve gotten if you just hadn’t used so much technology</em>.</p>
</blockquote>

<p>I’ve dabbled with React and Vue in small side projects and experiments. But the point above is the big reason I’ve never taken the time to sit down and learn either of them properly. For almost every client site I’ve ever done, it just didn’t make sense to make it an SPA.</p>

<p>And I’m not 100% sure, but I think this might contribute to longevity. Some of my clients are still working with the same sites I built for them nearly 10 years ago, a few with just minor security-related updates in the meantime and no other maintenance strictly required. That’s not to say that those sites couldn’t use a “lick of paint” to bring them in to the 2020s; the point is that they <em>work</em>. And for organizations working on really tight budgets, or budgets that fluctuate wildly due to public funding, stability is really important. They can’t afford a developer on retainer to keep things running smoothly.</p>

<p>But of course the SPA vibe is pretty attractive, particularly for cultural orgs. MacWright has some decent alternatives suggested in “If not SPAs” including <a href="https://github.com/turbolinks/turbolinks">Turbolinks</a>, <a href="https://barba.js.org">Barba.js</a>, and <a href="https://instant.page">instant.page</a>. Will also mention <a href="https://github.com/MoOx/pjax">MoOx/pjax</a> since I’ve used it before for page transitions with very good results, but probably won’t use it in the future as it hasn’t been updated in a while.</p>

<p>And again, there’s the rub. The more non-native scripts, plugins, etc I use in a project, the more likely that it’s going to be a major headache (and thus major time/money for the client) for me to change things down the line if or when that bit of tech is no longer supported or has changed significantly.</p>

<p>So it’s not even so much about being wary of React or Vue, it’s about not making assumptions, being cautious and cognizant of future needs or restrictions when proposing a tech stack. <em>Any</em> tech stack you choose will ultimately become a ball-and-chain, not just those based on JavaScript frameworks. It’s just that the ball can sometimes be heavier than it needed to be, and you can anticipate that with a little foresight.</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.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.svg#icon-rss2"></use>
</svg> RSS</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.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.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.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.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>
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>

+ 17
- 0
cache/2021/d46752726e00de301573576176df1f1c/index.md View File

@@ -0,0 +1,17 @@
title: Two articles on SPA or SPA-like sites vs alternatives
url: https://piperhaywood.com/two-articles-on-spa-or-spa-like-sites-vs-alternatives/
hash_url: d46752726e00de301573576176df1f1c

<p>I missed these two articles by Tom MacWright from last year.</p>
<p><a href="https://macwright.com/2020/05/10/spa-fatigue.html">Second-guessing the modern web</a>, 10 May 2020<br>
<a href="https://macwright.com/2020/10/28/if-not-spas.html">If not SPAs, What?</a>, 28 October 2020</p>
<p>In both, he outlines few upsides and downsides about the single page app (SPA) approach to websites and has a few points that I have really struggled to articulate in the past.</p>
<p>From “Second-guessing”:</p>
<blockquote>
<p>There is a swath of use cases which would be hard without React and which aren’t complicated enough to push beyond React’s limits. But there are also a lot of problems for which I can’t see any concrete benefit to using React. Those are things like blogs, shopping-cart-websites, mostly-CRUD-and-forms-websites. For these things, all of the fancy optimizations are trying to get you closer to <em>the performance you would’ve gotten if you just hadn’t used so much technology</em>.</p>
</blockquote>
<p>I’ve dabbled with React and Vue in small side projects and experiments. But the point above is the big reason I’ve never taken the time to sit down and learn either of them properly. For almost every client site I’ve ever done, it just didn’t make sense to make it an SPA.</p>
<p>And I’m not 100% sure, but I think this might contribute to longevity. Some of my clients are still working with the same sites I built for them nearly 10 years ago, a few with just minor security-related updates in the meantime and no other maintenance strictly required. That’s not to say that those sites couldn’t use a “lick of paint” to bring them in to the 2020s; the point is that they <em>work</em>. And for organizations working on really tight budgets, or budgets that fluctuate wildly due to public funding, stability is really important. They can’t afford a developer on retainer to keep things running smoothly.</p>
<p>But of course the SPA vibe is pretty attractive, particularly for cultural orgs. MacWright has some decent alternatives suggested in “If not SPAs” including <a href="https://github.com/turbolinks/turbolinks">Turbolinks</a>, <a href="https://barba.js.org">Barba.js</a>, and <a href="https://instant.page">instant.page</a>. Will also mention <a href="https://github.com/MoOx/pjax">MoOx/pjax</a> since I’ve used it before for page transitions with very good results, but probably won’t use it in the future as it hasn’t been updated in a while.</p>
<p>And again, there’s the rub. The more non-native scripts, plugins, etc I use in a project, the more likely that it’s going to be a major headache (and thus major time/money for the client) for me to change things down the line if or when that bit of tech is no longer supported or has changed significantly.</p>
<p>So it’s not even so much about being wary of React or Vue, it’s about not making assumptions, being cautious and cognizant of future needs or restrictions when proposing a tech stack. <em>Any</em> tech stack you choose will ultimately become a ball-and-chain, not just those based on JavaScript frameworks. It’s just that the ball can sometimes be heavier than it needed to be, and you can anticipate that with a little foresight.</p>

+ 8
- 0
cache/2021/index.html View File

@@ -193,6 +193,8 @@
<li><a href="/david/cache/2021/4a053a8bc34cadde5b46d59f01f9a8c8/" title="Accès à l’article dans le cache local : La contamination par aérosols : les clés, les sources et les avancées règlementaires">La contamination par aérosols : les clés, les sources et les avancées règlementaires</a> (<a href="https://ducotedelascience.org/3937-2/" title="Accès à l’article original distant : La contamination par aérosols : les clés, les sources et les avancées règlementaires">original</a>)</li>
<li><a href="/david/cache/2021/a0ec305634258e807f376799258029cb/" title="Accès à l’article dans le cache local : Il est temps de tourner la page">Il est temps de tourner la page</a> (<a href="https://www.hauteresolution.net/blog/articles/il-est-temps-de-tourner-la-page/25/" title="Accès à l’article original distant : Il est temps de tourner la page">original</a>)</li>
<li><a href="/david/cache/2021/6d16a2f955aeaa4f23c239373824143f/" title="Accès à l’article dans le cache local : Maintaining JavaScript applications in the long term">Maintaining JavaScript applications in the long term</a> (<a href="https://9elements.com/blog/maintaining-javascript-applications-in-the-long-term/" title="Accès à l’article original distant : Maintaining JavaScript applications in the long term">original</a>)</li>
<li><a href="/david/cache/2021/5f1c22e9a41d209ff84218b3d6faf676/" title="Accès à l’article dans le cache local : Reverse Engineering Source Code of the Biontech Pfizer Vaccine: Part 2">Reverse Engineering Source Code of the Biontech Pfizer Vaccine: Part 2</a> (<a href="https://berthub.eu/articles/posts/part-2-reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/" title="Accès à l’article original distant : Reverse Engineering Source Code of the Biontech Pfizer Vaccine: Part 2">original</a>)</li>
@@ -271,6 +273,8 @@
<li><a href="/david/cache/2021/4b81d4d9d89fb1d417aa292463529271/" title="Accès à l’article dans le cache local : Vendor by default">Vendor by default</a> (<a href="https://macwright.com/2021/03/11/vendor-by-default.html" title="Accès à l’article original distant : Vendor by default">original</a>)</li>
<li><a href="/david/cache/2021/0c45751cd69748ca779b1442b26ad6c3/" title="Accès à l’article dans le cache local : Lux Year 4: Doubling Down">Lux Year 4: Doubling Down</a> (<a href="https://lux.camera/lux-year-4-doubling-down/" title="Accès à l’article original distant : Lux Year 4: Doubling Down">original</a>)</li>
<li><a href="/david/cache/2021/6ad5b5985682512c140781b2b3c9ff7c/" title="Accès à l’article dans le cache local : That which is unique, breaks">That which is unique, breaks</a> (<a href="https://simonsarris.substack.com/p/that-which-is-unique-breaks" title="Accès à l’article original distant : That which is unique, breaks">original</a>)</li>
<li><a href="/david/cache/2021/0086cb1d562c02cd96f9f2a38e5bcc42/" title="Accès à l’article dans le cache local : What is a feed? (a.k.a. RSS)">What is a feed? (a.k.a. RSS)</a> (<a href="https://aboutfeeds.com/" title="Accès à l’article original distant : What is a feed? (a.k.a. RSS)">original</a>)</li>
@@ -331,6 +335,8 @@
<li><a href="/david/cache/2021/372cdbf3dc67c7796673bec4aaeb9f0f/" title="Accès à l’article dans le cache local : DST Root CA X3 Expiration (September 2021)">DST Root CA X3 Expiration (September 2021)</a> (<a href="https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/" title="Accès à l’article original distant : DST Root CA X3 Expiration (September 2021)">original</a>)</li>
<li><a href="/david/cache/2021/86eba8e465d7ce11ef61a0c61f878f21/" title="Accès à l’article dans le cache local : Poor in Tech">Poor in Tech</a> (<a href="http://megelison.com/poor-in-tech" title="Accès à l’article original distant : Poor in Tech">original</a>)</li>
<li><a href="/david/cache/2021/c6a317213165bc069aabb49c53184a7f/" title="Accès à l’article dans le cache local : Changes at Basecamp">Changes at Basecamp</a> (<a href="https://world.hey.com/jason/changes-at-basecamp-7f32afc5" title="Accès à l’article original distant : Changes at Basecamp">original</a>)</li>
<li><a href="/david/cache/2021/595df9c1f986df0678e4fc7d6aa34ef1/" title="Accès à l’article dans le cache local : Qui sont les dix auteurs de SF de la « Red Team » du ministère des Armées ?">Qui sont les dix auteurs de SF de la « Red Team » du ministère des Armées ?</a> (<a href="https://www.lepoint.fr/high-tech-internet/qui-sont-les-dix-auteurs-de-sf-de-la-red-team-du-ministere-des-armees-04-12-2020-2404230_47.php" title="Accès à l’article original distant : Qui sont les dix auteurs de SF de la « Red Team » du ministère des Armées ?">original</a>)</li>
@@ -367,6 +373,8 @@
<li><a href="/david/cache/2021/44064d714aff0deac9f882cc429d8b9d/" title="Accès à l’article dans le cache local : Some rambling thoughts about the stuttering end of the last ice age and what lockdown means">Some rambling thoughts about the stuttering end of the last ice age and what lockdown means</a> (<a href="http://interconnected.org/home/2020/04/20/continuous_partial_lockdown" title="Accès à l’article original distant : Some rambling thoughts about the stuttering end of the last ice age and what lockdown means">original</a>)</li>
<li><a href="/david/cache/2021/d46752726e00de301573576176df1f1c/" title="Accès à l’article dans le cache local : Two articles on SPA or SPA-like sites vs alternatives">Two articles on SPA or SPA-like sites vs alternatives</a> (<a href="https://piperhaywood.com/two-articles-on-spa-or-spa-like-sites-vs-alternatives/" title="Accès à l’article original distant : Two articles on SPA or SPA-like sites vs alternatives">original</a>)</li>
<li><a href="/david/cache/2021/5c20cd102357c0140e36a902ca400c8f/" title="Accès à l’article dans le cache local : Beginners in a sea of experts">Beginners in a sea of experts</a> (<a href="https://nedbatchelder.com/blog/202103/beginners_in_a_sea_of_experts.html" title="Accès à l’article original distant : Beginners in a sea of experts">original</a>)</li>
<li><a href="/david/cache/2021/33c4c1d859a2d85c1710ea50628a71b1/" title="Accès à l’article dans le cache local : ☕️ Journal : Acheter de la forêt">☕️ Journal : Acheter de la forêt</a> (<a href="https://oncletom.io/2021/03/12/acheter-de-la-foret/" title="Accès à l’article original distant : ☕️ Journal : Acheter de la forêt">original</a>)</li>

Loading…
Cancel
Save