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 16KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  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>Ways I'm available to help. (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="https://lethain.com/ways-i-help/">
  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>Ways I'm available to help.</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="https://lethain.com/ways-i-help/" title="Lien vers le contenu original">Source originale</a>
  67. </p>
  68. </nav>
  69. <hr>
  70. <p><em>tl;dr - email me at lethain[at]gmail</em></p>
  71. <p>Thinking about how I can be a helpful person in the world, as well as the sorts of folks who do and don't think to ask for help, I wanted to take some time to explicitly write down ways that I’m available to help folks on the internet that I don't have a preexisting relationship with. This is an initial list that I’ll have to think about expanding over time.</p>
  72. <hr>
  73. <p>First, some things I’m not a good resource for:</p>
  74. <ol>
  75. <li><strong>Getting your first job in tech.</strong> My path into tech was both very traditional (B.S. Computer Science) and very lucky (<a href="https://lethain.com/monocle-studios/">failed iPhone game</a>, getting hired by Yahoo! after <a href="https://lethain.com/datahub/">writing about their Yahoo! BOSS SDK</a>). I don’t think recreating <a href="/my-career-story/">my story</a> is likely to work for many folks, so I don’t believe I can give good advice on this topic relative to many other people.</li>
  76. <li><strong>Getting hired at <a href="https://en.wikipedia.org/wiki/Big_Tech">Big Tech</a> companies.</strong> I don’t know anything about this that you couldn’t discover yourself through Google searches.</li>
  77. <li><strong>Specific implementation questions or bugs in your project.</strong> I spend roughly one to four hours a month writing code, mostly in a non-professional context. If I get lucky I <em>might</em> be able to give useful advice on a specific bit of code eventually, but I can give better advice more quickly on other topics, so I choose not to give this kind of advice.</li>
  78. <li><strong>Proof reading a blog post.</strong> I’m glad to give meta-commentary on a blog post or theme, but I reserve my limited proofreading energy for my own work. Further, I’ve never been told that my proofreading is particularly helpful, so I imagine there are other folks out there who do a much better job of it.</li>
  79. <li><strong>Responding reliably to anything other than concise email.</strong> I find it very hard to track which DMs on Twitter, LinkedIn, etc that I’ve seen or not seen, and I don’t want to invest my life in fighting their UX. If you want to contact me, email is by far the best.</li>
  80. <li><strong>Writing or featuring guest posts.</strong> I believe that investing my limited writing time onto my own platforms is my most effective outlet in terms of influencing the broader conversation about technology, engineering management and so on. As a policy, I don’t contribute to other blogs or include content written by other folks here. I especially don't include sponsored content here.</li>
  81. <li><strong>Referrals that I believe are unlikely to get serious consideration.</strong> This might be the wrong stance, but I don’t like to refer people into situations where I think the process is likely to fail them. I want to conserve my <a href="https://larahogan.me/sponsors/">sponsorship</a> capital for efforts that I believe will help.</li>
  82. <li><strong>Invest in your company.</strong> I’m not very knowledgeable enough about small-scale investing, and I believe that donating my available resources is a more effective venue than investing it.</li>
  83. </ol>
  84. <hr>
  85. <p>Ways I’m available to help anyone:</p>
  86. <ol>
  87. <li><strong>Answer concise questions via email about topics I know about. </strong>I try to answer every concise question I get over email. If you write a two to four paragraph email with a clear question, I will try to answer it in a timely fashion. Topics that I can answer about quickly are generally anything I’ve written about it <a href="https://lethain.com/all-posts/">in a blog post</a> or a book. A caveat is that if the question obliges me to perform considerable research to answer it, it’s far less likely I’ll answer. Reach out to me at <em>lethain[at]gmail</em>.</li>
  88. <li><strong>Double opt-in introductions where I think the other party will want the introduction.</strong> I’m glad to provide introductions to folks I know, after checking with them it’s ok, to the extent that I believe it’s an introduction they want and there’s a credible reason why you haven’t reached out to them directly. Conversely, I want to protect folks’ time and won't begin the double opt-in process if I don’t have moderate confidence they would want the introduction.</li>
  89. </ol>
  90. <hr>
  91. <p>Ways I’m available to help BIPOC and women in tech:</p>
  92. <ol>
  93. <li><strong>The above stuff I’ll do for anyone, I’ll certainly do for you.</strong> If you’re anxious or uncertain about whether something’s appropriate to ask me, go ahead and send it. I can promise that I will either write a positive, constructive reply or I simply won’t get back to you. I’ll never reply harshly or with frustration. If I do respond harshly, please feel free to call me out on Twitter or what not, it’ll be richly deserved criticism.</li>
  94. <li><strong>Review a conference talk proposal on a topic I’m familiar with.</strong> If you’re looking for someone to proofread a conference talk proposal and it’s a topic I’ve written or spoken about before, then I’m glad to share my advice. (<a href="https://lethain.com/cfp-examples/">A bit more on conference proposals here</a>.)</li>
  95. <li><strong>Resume and LinkedIn profile feedback for folks with 3+ years of experience.</strong> I'm glad to give feedback to folks on how to make their LinkedIn profiles or resumes effective for more senior roles. I'm not providing feedback for earlier career LinkedIn or resumes because I don't have useful feedback beyond what you might find searching Google.</li>
  96. <li><strong>Write a blurb or foreward for your book.</strong> Until I wrote a book, I didn’t realize how cumbersome it can be to find folks to blurb or write a foreward for them! I’m glad to do either, although they both require sufficient time to complete.</li>
  97. <li><strong><em>Maybe</em> contribute an essay to your book or publication.</strong> There are so many great writers out there and I don’t think the world is dying for lack of hearing my voice in more mediums, but I do enjoy opportunities to write different styles of work, such as when I got to write <a href="https://increment.com/teams/do-engineering-managers-need-to-be-technical/">Do engineering managers need to be technical?</a> for Increment. If you have a proposal, then I’d be interested to consider contributing. There are some caveats. The foremost caveat is that I might not have time. It’s also worth noting that at this point I am only interested in writing if I am compensated because I don’t want to contribute towards an ecosystem where you can only participate if you’re wealthy enough to give away your time. This 2015 essay by <a href="https://www.theguardian.com/commentisfree/2015/aug/06/america-rich-write-about-poverty">Barbara Ehrenreich</a> is quite compelling on this point. However, I'd be glad to donate the fee to a mutually agreeable organization.</li>
  98. <li><strong>Refer speaking opportunities to you.</strong> Although I’m not a particularly high demand speaker, I’m generally moving away from conference speaking due to limited time, and if I’m aware you’re someone who wants to speak on a given topic, then I’m glad to refer opportunities to you as appropriate.</li>
  99. <li><strong>Appear on engineering, technology or management podcast.</strong> I’m generally ramping down <a href="https://lethain.com/tags/podcast">recording podcasts</a>, but if I’m a relevant guest for yours, then I’m glad to do them strategically.</li>
  100. <li><strong>Connect on LinkedIn.</strong> If you send a <a href="https://www.linkedin.com/in/will-larson-a44b543/">connect request on LinkedIn</a>, I'll accept it.</li>
  101. </ol>
  102. <hr>
  103. <p>These lists aren't comprehensive, but I hope by being explicit about what I'm available to do then folks will feel more comfortable reaching out,
  104. For anything that isn't covered, writing a concise email to inquire is the best route!</p>
  105. </article>
  106. <hr>
  107. <footer>
  108. <p>
  109. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  110. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-home"></use>
  111. </svg> Accueil</a> •
  112. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  113. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-rss2"></use>
  114. </svg> Suivre</a> •
  115. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  116. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-user-tie"></use>
  117. </svg> Pro</a> •
  118. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  119. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-mail"></use>
  120. </svg> Email</a> •
  121. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  122. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-hammer2"></use>
  123. </svg> Légal</abbr>
  124. </p>
  125. <template id="theme-selector">
  126. <form>
  127. <fieldset>
  128. <legend><svg class="icon icon-brightness-contrast">
  129. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-brightness-contrast"></use>
  130. </svg> Thème</legend>
  131. <label>
  132. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  133. </label>
  134. <label>
  135. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  136. </label>
  137. <label>
  138. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  139. </label>
  140. </fieldset>
  141. </form>
  142. </template>
  143. </footer>
  144. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  145. <script>
  146. function loadThemeForm(templateName) {
  147. const themeSelectorTemplate = document.querySelector(templateName)
  148. const form = themeSelectorTemplate.content.firstElementChild
  149. themeSelectorTemplate.replaceWith(form)
  150. form.addEventListener('change', (e) => {
  151. const chosenColorScheme = e.target.value
  152. localStorage.setItem('theme', chosenColorScheme)
  153. toggleTheme(chosenColorScheme)
  154. })
  155. const selectedTheme = localStorage.getItem('theme')
  156. if (selectedTheme && selectedTheme !== 'undefined') {
  157. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  158. }
  159. }
  160. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  161. window.addEventListener('load', () => {
  162. let hasDarkRules = false
  163. for (const styleSheet of Array.from(document.styleSheets)) {
  164. let mediaRules = []
  165. for (const cssRule of styleSheet.cssRules) {
  166. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  167. continue
  168. }
  169. // WARNING: Safari does not have/supports `conditionText`.
  170. if (cssRule.conditionText) {
  171. if (cssRule.conditionText !== prefersColorSchemeDark) {
  172. continue
  173. }
  174. } else {
  175. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  176. continue
  177. }
  178. }
  179. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  180. }
  181. // WARNING: do not try to insert a Rule to a styleSheet you are
  182. // currently iterating on, otherwise the browser will be stuck
  183. // in a infinite loop…
  184. for (const mediaRule of mediaRules) {
  185. styleSheet.insertRule(mediaRule.cssText)
  186. hasDarkRules = true
  187. }
  188. }
  189. if (hasDarkRules) {
  190. loadThemeForm('#theme-selector')
  191. }
  192. })
  193. </script>
  194. </body>
  195. </html>