A place to cache linked articles (think custom and personal wayback machine)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang="fr">
  4. <!-- Has to be within the first 1024 bytes, hence before the `title` element
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset="utf-8">
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name="viewport" content="width=device-width,initial-scale=1">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>Poor in Tech (archive) — David Larlet</title>
  13. <meta name="description" content="Publication mise en cache pour en conserver une trace.">
  14. <!-- That good ol' feed, subscribe :). -->
  15. <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
  16. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  17. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
  18. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
  19. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
  20. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  21. <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
  22. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  23. <meta name="msapplication-TileColor" content="#f7f7f7">
  24. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  25. <meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)">
  26. <meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)">
  27. <!-- Documented, feel free to shoot an email. -->
  28. <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
  29. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  30. <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>
  31. <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>
  32. <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>
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  34. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  35. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  36. <script>
  37. function toggleTheme(themeName) {
  38. document.documentElement.classList.toggle(
  39. 'forced-dark',
  40. themeName === 'dark'
  41. )
  42. document.documentElement.classList.toggle(
  43. 'forced-light',
  44. themeName === 'light'
  45. )
  46. }
  47. const selectedTheme = localStorage.getItem('theme')
  48. if (selectedTheme !== 'undefined') {
  49. toggleTheme(selectedTheme)
  50. }
  51. </script>
  52. <meta name="robots" content="noindex, nofollow">
  53. <meta content="origin-when-cross-origin" name="referrer">
  54. <!-- Canonical URL for SEO purposes -->
  55. <link rel="canonical" href="http://megelison.com/poor-in-tech">
  56. <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
  57. <article>
  58. <header>
  59. <h1>Poor in Tech</h1>
  60. </header>
  61. <nav>
  62. <p class="center">
  63. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  64. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-home"></use>
  65. </svg> Accueil</a> •
  66. <a href="http://megelison.com/poor-in-tech" title="Lien vers le contenu original">Source originale</a>
  67. </p>
  68. </nav>
  69. <hr>
  70. <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>
  71. <p> </p>
  72. <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>
  73. <p> </p>
  74. <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>
  75. <p> </p>
  76. <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>
  77. <p> </p>
  78. <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>
  79. <p> </p>
  80. <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>
  81. <p> </p>
  82. <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>
  83. <p> </p>
  84. <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>
  85. <p> </p>
  86. <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>
  87. <p> </p>
  88. <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>
  89. <p> </p>
  90. <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>
  91. <p> </p>
  92. <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>
  93. <p> </p>
  94. <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>
  95. <p> </p>
  96. <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>
  97. <p> </p>
  98. <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>
  99. <p> </p>
  100. <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>
  101. <p> </p>
  102. <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>
  103. <p> </p>
  104. <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>
  105. <p> </p>
  106. <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>
  107. <p> </p>
  108. <p><span>I knew I was the only poor person at my tech startup because I wouldn’t dream of Ubering in. </span></p>
  109. <p> </p>
  110. <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>
  111. <p> </p>
  112. <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>
  113. <p> </p>
  114. <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>
  115. <p> </p>
  116. <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>
  117. <p> </p>
  118. <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>
  119. <p> </p>
  120. <p><span>I knew I was the only poor person at my tech startup because everyone else had good teeth. </span></p>
  121. <p> </p>
  122. <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>
  123. <p> </p>
  124. <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>
  125. <p> </p>
  126. <p><span>I gave back the Macbook. I kept the headphones. </span></p>
  127. </article>
  128. <hr>
  129. <footer>
  130. <p>
  131. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  132. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-home"></use>
  133. </svg> Accueil</a> •
  134. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  135. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-rss2"></use>
  136. </svg> Suivre</a> •
  137. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  138. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-user-tie"></use>
  139. </svg> Pro</a> •
  140. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  141. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-mail"></use>
  142. </svg> Email</a> •
  143. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  144. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-hammer2"></use>
  145. </svg> Légal</abbr>
  146. </p>
  147. <template id="theme-selector">
  148. <form>
  149. <fieldset>
  150. <legend><svg class="icon icon-brightness-contrast">
  151. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-brightness-contrast"></use>
  152. </svg> Thème</legend>
  153. <label>
  154. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  155. </label>
  156. <label>
  157. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  158. </label>
  159. <label>
  160. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  161. </label>
  162. </fieldset>
  163. </form>
  164. </template>
  165. </footer>
  166. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  167. <script>
  168. function loadThemeForm(templateName) {
  169. const themeSelectorTemplate = document.querySelector(templateName)
  170. const form = themeSelectorTemplate.content.firstElementChild
  171. themeSelectorTemplate.replaceWith(form)
  172. form.addEventListener('change', (e) => {
  173. const chosenColorScheme = e.target.value
  174. localStorage.setItem('theme', chosenColorScheme)
  175. toggleTheme(chosenColorScheme)
  176. })
  177. const selectedTheme = localStorage.getItem('theme')
  178. if (selectedTheme && selectedTheme !== 'undefined') {
  179. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  180. }
  181. }
  182. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  183. window.addEventListener('load', () => {
  184. let hasDarkRules = false
  185. for (const styleSheet of Array.from(document.styleSheets)) {
  186. let mediaRules = []
  187. for (const cssRule of styleSheet.cssRules) {
  188. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  189. continue
  190. }
  191. // WARNING: Safari does not have/supports `conditionText`.
  192. if (cssRule.conditionText) {
  193. if (cssRule.conditionText !== prefersColorSchemeDark) {
  194. continue
  195. }
  196. } else {
  197. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  198. continue
  199. }
  200. }
  201. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  202. }
  203. // WARNING: do not try to insert a Rule to a styleSheet you are
  204. // currently iterating on, otherwise the browser will be stuck
  205. // in a infinite loop…
  206. for (const mediaRule of mediaRules) {
  207. styleSheet.insertRule(mediaRule.cssText)
  208. hasDarkRules = true
  209. }
  210. }
  211. if (hasDarkRules) {
  212. loadThemeForm('#theme-selector')
  213. }
  214. })
  215. </script>
  216. </body>
  217. </html>