A place to cache linked articles (think custom and personal wayback machine)
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

index.html 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  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>Jacob Kaplan-Moss (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://jacobian.org/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>Jacob Kaplan-Moss</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-2021-12.svg#icon-home"></use>
  65. </svg> Accueil</a> •
  66. <a href="https://jacobian.org/help/" title="Lien vers le contenu original">Source originale</a>
  67. </p>
  68. </nav>
  69. <hr>
  70. <p><em>Summary: want help? Email me: jacob@&lt;this domain&gt;.</em></p>
  71. <p>I’ve been lucky and privileged enough to have had a long and successful career. I’m now in a position to use my accumulated knowledge, network, and experience to help others, and I’d like to do so. This is a list of ways I think I can help; if you see something here that’d be useful to you, please email me.</p>
  72. <p>This isn’t an exhaustive list, but it is representative. There might be a few things I’m
  73. willing to do that aren’t listed but are similar. But if you ask me for something that’s
  74. not listed below, the odds I’ll be able t o do it are pretty low. However, do feel free
  75. ask anyway – the worst I’ll do is not reply or say “no”. I certainly won’t be a jerk.</p>
  76. <hr><h3 id="ways-im-available-to-help-anyone">Ways I’m available to help anyone</h3>
  77. <p>I’m available anyone who emails me (<em>jacob@&lt;this domain&gt;</em>) about any of these things:</p>
  78. <ol><li><p><strong>Answer concise questions</strong> via email about topics I know about. If you write me an email with a short, clear question, and I know the answer, I’ll try to answer in a fairly quick time-frame. Any topic <a href="https://jacobian.org/posts/">I’ve written about recently</a> is fair game. That said, for specific technical questions about Django or Python: StackOverflow, the Django Forum, or similar are better resources for that. I also generally don’t have time to do significant research, so I’ll probably only be able to give answers that I know off the top of my head.</p></li><li><p><strong>Introductions</strong>: I’m glad to provide introductions to people I know, if I believe it’s an introduction that they’d want and there’s a reason you haven’t reached out directly. “People I know” include many folks in the Python and Django communities, people I’ve worked with (consult <a href="https://www.linkedin.com/in/jacobian/">my LinkedIn</a> for an idea of who that might be), and a smattering of others. If you’re not sure, feel free to ask. If you’re emailing to ask for an introduction, it’ll speed things along if you include a brief paragraph about you that I can use when I send the email to the other person.</p></li><li><p><strong>Reference checks on companies and managers</strong>: if you’re considering a new job, I’m happy to give you a gut-check on the company or specific manager. Again <a href="https://www.linkedin.com/in/jacobian/">my LinkedIn</a> will be the most useful in deciding if I know a company or person, but I do have a fairly wide network and can back-channel some checks. There are, unfortunately, a lot of <a href="https://en.wikipedia.org/wiki/Missing_stair">missing stairs</a> in tech; if I can help you avoid one, I’d be thrilled.</p></li></ol>
  79. <h3 id="ways-im-available-to-help-underrepresented-people-in-tech">Ways I’m available to help underrepresented people in tech</h3>
  80. <p>Additionally, if you’re someone from a background traditionally underrepresented in tech – a women, BIPOC, LBGTQ+, etc. – I will do more:</p>
  81. <ol><li><p><strong>Everything above, I’ll especially do for you</strong>. If you’re not sure if something’s appropriate – just go ahead and send it! The worst I’ll do is simply not respond; more likely, it’s totally fine and I’ll help to the extent that I can.</p></li><li><p><strong>Review a conference proposal</strong> on a topic I know something about. This is particularly true for the “flagship” Python and Django conferences (PyCon US, DjangoCon US, DjangoCon EU) as well as smaller Py- and DjangoCons. I’d love to help you maximize your changes of getting a talk accepted.</p></li><li><p><strong>Refer speaking opportunities to you</strong>. I get asked to speak a fair bit, and I’m generally trying to do less of it. This means I have a steady stream of opportunities to speak that I can forward on to you. If there’s something you’d like to speak about, let me know, and if I get asked I’ll send them your way.</p></li><li><p><strong>Help you find some job opportunities</strong>. Specifically, if you tell me what you’re looking for and a bit about your strengths, I can share your info – anonymously if you prefer – through my network. I’d post on Twitter, in some private Slacks, send a few emails, and make introductions if anything pops up.</p></li><li><p><strong>Give you feedback on a resume and/or cover letter</strong>. I generally can’t do this unless you’re applying for mid-career roles or higher (I don’t have a lot to offer beyond what’s on Google for more junior folks). If this is something you want, go ahead and send me the resume/cover letter directly, you don’t need to ask for permission first.</p></li><li><p><strong>Join your advisory board</strong>. I have some availability to sit on a board or three, and want to focus on companies led by underrepresented founders/CEOs. If that’s your company, and you think I’d have something positive to contribute as a advisor/board member, I’m interested.</p></li><li><p><strong>Invest in your company</strong>. Similarly, I have some funds I can invest. My focus is on companies that are solving problems with a strong social justice component – things like climate change, criminal justice reform, healthcare equity/access, and so forth. And, I’m only looking to invest in startups founded by those traditionally underrepresented in tech. If this describes your company, I might be interested.</p></li></ol>
  82. <hr><p><em>Thanks to Will Larson, who put up <a href="https://lethain.com/ways-i-help/">a similar page</a> to and inspired me to write this.</em></p>
  83. </article>
  84. <hr>
  85. <footer>
  86. <p>
  87. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  88. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  89. </svg> Accueil</a> •
  90. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  91. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use>
  92. </svg> Suivre</a> •
  93. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  94. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use>
  95. </svg> Pro</a> •
  96. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  97. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use>
  98. </svg> Email</a> •
  99. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  100. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use>
  101. </svg> Légal</abbr>
  102. </p>
  103. <template id="theme-selector">
  104. <form>
  105. <fieldset>
  106. <legend><svg class="icon icon-brightness-contrast">
  107. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use>
  108. </svg> Thème</legend>
  109. <label>
  110. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  111. </label>
  112. <label>
  113. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  114. </label>
  115. <label>
  116. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  117. </label>
  118. </fieldset>
  119. </form>
  120. </template>
  121. </footer>
  122. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  123. <script>
  124. function loadThemeForm(templateName) {
  125. const themeSelectorTemplate = document.querySelector(templateName)
  126. const form = themeSelectorTemplate.content.firstElementChild
  127. themeSelectorTemplate.replaceWith(form)
  128. form.addEventListener('change', (e) => {
  129. const chosenColorScheme = e.target.value
  130. localStorage.setItem('theme', chosenColorScheme)
  131. toggleTheme(chosenColorScheme)
  132. })
  133. const selectedTheme = localStorage.getItem('theme')
  134. if (selectedTheme && selectedTheme !== 'undefined') {
  135. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  136. }
  137. }
  138. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  139. window.addEventListener('load', () => {
  140. let hasDarkRules = false
  141. for (const styleSheet of Array.from(document.styleSheets)) {
  142. let mediaRules = []
  143. for (const cssRule of styleSheet.cssRules) {
  144. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  145. continue
  146. }
  147. // WARNING: Safari does not have/supports `conditionText`.
  148. if (cssRule.conditionText) {
  149. if (cssRule.conditionText !== prefersColorSchemeDark) {
  150. continue
  151. }
  152. } else {
  153. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  154. continue
  155. }
  156. }
  157. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  158. }
  159. // WARNING: do not try to insert a Rule to a styleSheet you are
  160. // currently iterating on, otherwise the browser will be stuck
  161. // in a infinite loop…
  162. for (const mediaRule of mediaRules) {
  163. styleSheet.insertRule(mediaRule.cssText)
  164. hasDarkRules = true
  165. }
  166. }
  167. if (hasDarkRules) {
  168. loadThemeForm('#theme-selector')
  169. }
  170. })
  171. </script>
  172. </body>
  173. </html>