A place to cache linked articles (think custom and personal wayback machine)
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

index.html 71KB

před 5 roky
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789
  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>
  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,minimum-scale=1,initial-scale=1,shrink-to-fit=no">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>Being A Developer After 40 (archive) — David Larlet</title>
  13. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  14. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons/apple-touch-icon.png">
  15. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons/favicon-32x32.png">
  16. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons/favicon-16x16.png">
  17. <link rel="manifest" href="/manifest.json">
  18. <link rel="mask-icon" href="/static/david/icons/safari-pinned-tab.svg" color="#5bbad5">
  19. <link rel="shortcut icon" href="/static/david/icons/favicon.ico">
  20. <meta name="apple-mobile-web-app-title" content="David Larlet">
  21. <meta name="application-name" content="David Larlet">
  22. <meta name="msapplication-TileColor" content="#da532c">
  23. <meta name="msapplication-config" content="/static/david/icons/browserconfig.xml">
  24. <meta name="theme-color" content="#f0f0ea">
  25. <!-- That good ol' feed, subscribe :p. -->
  26. <link rel=alternate type="application/atom+xml" title=Feed href="/david/log/">
  27. <meta name="robots" content="noindex, nofollow">
  28. <meta content="origin-when-cross-origin" name="referrer">
  29. <!-- Canonical URL for SEO purposes -->
  30. <link rel="canonical" href="https://medium.com/@akosma/being-a-developer-after-40-3c5dd112210c">
  31. <style>
  32. /* http://meyerweb.com/eric/tools/css/reset/ */
  33. html, body, div, span,
  34. h1, h2, h3, h4, h5, h6, p, blockquote, pre,
  35. a, abbr, address, big, cite, code,
  36. del, dfn, em, img, ins,
  37. small, strike, strong, tt, var,
  38. dl, dt, dd, ol, ul, li,
  39. fieldset, form, label, legend,
  40. table, caption, tbody, tfoot, thead, tr, th, td,
  41. article, aside, canvas, details, embed,
  42. figure, figcaption, footer, header, hgroup,
  43. menu, nav, output, ruby, section, summary,
  44. time, mark, audio, video {
  45. margin: 0;
  46. padding: 0;
  47. border: 0;
  48. font-size: 100%;
  49. font: inherit;
  50. vertical-align: baseline;
  51. }
  52. /* HTML5 display-role reset for older browsers */
  53. article, aside, details, figcaption, figure,
  54. footer, header, hgroup, menu, nav, section { display: block; }
  55. body { line-height: 1; }
  56. blockquote, q { quotes: none; }
  57. blockquote:before, blockquote:after,
  58. q:before, q:after {
  59. content: '';
  60. content: none;
  61. }
  62. table {
  63. border-collapse: collapse;
  64. border-spacing: 0;
  65. }
  66. /* http://practicaltypography.com/equity.html */
  67. /* https://calendar.perfplanet.com/2016/no-font-face-bulletproof-syntax/ */
  68. /* https://www.filamentgroup.com/lab/js-web-fonts.html */
  69. @font-face {
  70. font-family: 'EquityTextB';
  71. src: url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff2') format('woff2'),
  72. url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff') format('woff');
  73. font-weight: 300;
  74. font-style: normal;
  75. font-display: swap;
  76. }
  77. @font-face {
  78. font-family: 'EquityTextB';
  79. src: url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff2') format('woff2'),
  80. url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff') format('woff');
  81. font-weight: 300;
  82. font-style: italic;
  83. font-display: swap;
  84. }
  85. @font-face {
  86. font-family: 'EquityTextB';
  87. src: url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff2') format('woff2'),
  88. url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff') format('woff');
  89. font-weight: 700;
  90. font-style: normal;
  91. font-display: swap;
  92. }
  93. @font-face {
  94. font-family: 'ConcourseT3';
  95. src: url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff2') format('woff2'),
  96. url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff') format('woff');
  97. font-weight: 300;
  98. font-style: normal;
  99. font-display: swap;
  100. }
  101. /* http://practice.typekit.com/lesson/caring-about-opentype-features/ */
  102. body {
  103. /* http://www.cssfontstack.com/ Palatino 99% Win 86% Mac */
  104. font-family: "EquityTextB", Palatino, serif;
  105. background-color: #f0f0ea;
  106. color: #07486c;
  107. font-kerning: normal;
  108. -moz-osx-font-smoothing: grayscale;
  109. -webkit-font-smoothing: subpixel-antialiased;
  110. text-rendering: optimizeLegibility;
  111. font-variant-ligatures: common-ligatures contextual;
  112. font-feature-settings: "kern", "liga", "clig", "calt";
  113. }
  114. pre, code, kbd, samp, var, tt {
  115. font-family: 'TriplicateT4c', monospace;
  116. }
  117. em {
  118. font-style: italic;
  119. color: #323a45;
  120. }
  121. strong {
  122. font-weight: bold;
  123. color: black;
  124. }
  125. nav {
  126. background-color: #323a45;
  127. color: #f0f0ea;
  128. display: flex;
  129. justify-content: space-around;
  130. padding: 1rem .5rem;
  131. }
  132. nav:last-child {
  133. border-bottom: 1vh solid #2d7474;
  134. }
  135. nav a {
  136. color: #f0f0ea;
  137. }
  138. nav abbr {
  139. border-bottom: 1px dotted white;
  140. }
  141. h1 {
  142. border-top: 1vh solid #2d7474;
  143. border-bottom: .2vh dotted #2d7474;
  144. background-color: #e3e1e1;
  145. color: #323a45;
  146. text-align: center;
  147. padding: 5rem 0 4rem 0;
  148. width: 100%;
  149. font-family: 'ConcourseT3';
  150. display: flex;
  151. flex-direction: column;
  152. }
  153. h1.single {
  154. padding-bottom: 10rem;
  155. }
  156. h1 span {
  157. position: absolute;
  158. top: 1vh;
  159. left: 20%;
  160. line-height: 0;
  161. }
  162. h1 span a {
  163. line-height: 1.7;
  164. padding: 1rem 1.2rem .6rem 1.2rem;
  165. border-radius: 0 0 6% 6%;
  166. background: #2d7474;
  167. font-size: 1.3rem;
  168. color: white;
  169. text-decoration: none;
  170. }
  171. h2 {
  172. margin: 4rem 0 1rem;
  173. border-top: .2vh solid #2d7474;
  174. padding-top: 1vh;
  175. }
  176. h3 {
  177. text-align: center;
  178. margin: 3rem 0 .75em;
  179. }
  180. hr {
  181. height: .4rem;
  182. width: .4rem;
  183. border-radius: .4rem;
  184. background: #07486c;
  185. margin: 2.5rem auto;
  186. }
  187. time {
  188. display: bloc;
  189. margin-left: 0 !important;
  190. }
  191. ul, ol {
  192. margin: 2rem;
  193. }
  194. ul {
  195. list-style-type: square;
  196. }
  197. a {
  198. text-decoration-skip-ink: auto;
  199. text-decoration-thickness: 0.05em;
  200. text-underline-offset: 0.09em;
  201. }
  202. article {
  203. max-width: 50rem;
  204. display: flex;
  205. flex-direction: column;
  206. margin: 2rem auto;
  207. }
  208. article.single {
  209. border-top: .2vh dotted #2d7474;
  210. margin: -6rem auto 1rem auto;
  211. background: #f0f0ea;
  212. padding: 2rem;
  213. }
  214. article p:last-child {
  215. margin-bottom: 1rem;
  216. }
  217. p {
  218. padding: 0 .5rem;
  219. margin-left: 3rem;
  220. }
  221. p + p,
  222. figure + p {
  223. margin-top: 2rem;
  224. }
  225. blockquote {
  226. background-color: #e3e1e1;
  227. border-left: .5vw solid #2d7474;
  228. display: flex;
  229. flex-direction: column;
  230. align-items: center;
  231. padding: 1rem;
  232. margin: 1.5rem;
  233. }
  234. blockquote cite {
  235. font-style: italic;
  236. }
  237. blockquote p {
  238. margin-left: 0;
  239. }
  240. figure {
  241. border-top: .2vh solid #2d7474;
  242. background-color: #e3e1e1;
  243. text-align: center;
  244. padding: 1.5rem 0;
  245. margin: 1rem 0 0;
  246. font-size: 1.5rem;
  247. width: 100%;
  248. }
  249. figure img {
  250. max-width: 250px;
  251. max-height: 250px;
  252. border: .5vw solid #323a45;
  253. padding: 1px;
  254. }
  255. figcaption {
  256. padding: 1rem;
  257. line-height: 1.4;
  258. }
  259. aside {
  260. display: flex;
  261. flex-direction: column;
  262. background-color: #e3e1e1;
  263. padding: 1rem 0;
  264. border-bottom: .2vh solid #07486c;
  265. }
  266. aside p {
  267. max-width: 50rem;
  268. margin: 0 auto;
  269. }
  270. /* https://fvsch.com/code/css-locks/ */
  271. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  272. font-size: 1rem;
  273. line-height: calc( 1.5em + 0.2 * 1rem );
  274. }
  275. h1 {
  276. font-size: 1.9rem;
  277. line-height: calc( 1.2em + 0.2 * 1rem );
  278. }
  279. h2 {
  280. font-size: 1.6rem;
  281. line-height: calc( 1.3em + 0.2 * 1rem );
  282. }
  283. h3 {
  284. font-size: 1.35rem;
  285. line-height: calc( 1.4em + 0.2 * 1rem );
  286. }
  287. @media (min-width: 20em) {
  288. /* The (100vw - 20rem) / (50 - 20) part
  289. resolves to 0-1rem, depending on the
  290. viewport width (between 20em and 50em). */
  291. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  292. font-size: calc( 1rem + .6 * (100vw - 20rem) / (50 - 20) );
  293. line-height: calc( 1.5em + 0.2 * (100vw - 50rem) / (20 - 50) );
  294. margin-left: 0;
  295. }
  296. h1 {
  297. font-size: calc( 1.9rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  298. line-height: calc( 1.2em + 0.2 * (100vw - 50rem) / (20 - 50) );
  299. }
  300. h2 {
  301. font-size: calc( 1.5rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  302. line-height: calc( 1.3em + 0.2 * (100vw - 50rem) / (20 - 50) );
  303. }
  304. h3 {
  305. font-size: calc( 1.35rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  306. line-height: calc( 1.4em + 0.2 * (100vw - 50rem) / (20 - 50) );
  307. }
  308. }
  309. @media (min-width: 50em) {
  310. /* The right part of the addition *must* be a
  311. rem value. In this example we *could* change
  312. the whole declaration to font-size:2.5rem,
  313. but if our baseline value was not expressed
  314. in rem we would have to use calc. */
  315. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  316. font-size: calc( 1rem + .6 * 1rem );
  317. line-height: 1.5em;
  318. }
  319. p, li, pre, details {
  320. margin-left: 3rem;
  321. }
  322. h1 {
  323. font-size: calc( 1.9rem + 1.5 * 1rem );
  324. line-height: 1.2em;
  325. }
  326. h2 {
  327. font-size: calc( 1.5rem + 1.5 * 1rem );
  328. line-height: 1.3em;
  329. }
  330. h3 {
  331. font-size: calc( 1.35rem + 1.5 * 1rem );
  332. line-height: 1.4em;
  333. }
  334. figure img {
  335. max-width: 500px;
  336. max-height: 500px;
  337. }
  338. }
  339. figure.unsquared {
  340. margin-bottom: 1.5rem;
  341. }
  342. figure.unsquared img {
  343. height: inherit;
  344. }
  345. @media print {
  346. body { font-size: 100%; }
  347. a:after { content: " (" attr(href) ")"; }
  348. a, a:link, a:visited, a:after {
  349. text-decoration: underline;
  350. text-shadow: none !important;
  351. background-image: none !important;
  352. background: white;
  353. color: black;
  354. }
  355. abbr[title] { border-bottom: 0; }
  356. abbr[title]:after { content: " (" attr(title) ")"; }
  357. img { page-break-inside: avoid; }
  358. @page { margin: 2cm .5cm; }
  359. h1, h2, h3 { page-break-after: avoid; }
  360. p3 { orphans: 3; widows: 3; }
  361. img {
  362. max-width: 250px !important;
  363. max-height: 250px !important;
  364. }
  365. nav, aside { display: none; }
  366. }
  367. ul.with_columns {
  368. column-count: 1;
  369. }
  370. @media (min-width: 20em) {
  371. ul.with_columns {
  372. column-count: 2;
  373. }
  374. }
  375. @media (min-width: 50em) {
  376. ul.with_columns {
  377. column-count: 3;
  378. }
  379. }
  380. ul.with_two_columns {
  381. column-count: 1;
  382. }
  383. @media (min-width: 20em) {
  384. ul.with_two_columns {
  385. column-count: 1;
  386. }
  387. }
  388. @media (min-width: 50em) {
  389. ul.with_two_columns {
  390. column-count: 2;
  391. }
  392. }
  393. .gallery {
  394. display: flex;
  395. flex-wrap: wrap;
  396. justify-content: space-around;
  397. }
  398. .gallery figure img {
  399. margin-left: 1rem;
  400. margin-right: 1rem;
  401. }
  402. .gallery figure figcaption {
  403. font-family: 'ConcourseT3'
  404. }
  405. footer {
  406. font-family: 'ConcourseT3';
  407. display: flex;
  408. flex-direction: column;
  409. border-top: 3px solid white;
  410. padding: 4rem 0;
  411. background-color: #07486c;
  412. color: white;
  413. }
  414. footer > * {
  415. max-width: 50rem;
  416. margin: 0 auto;
  417. }
  418. footer a {
  419. color: #f1c40f;
  420. }
  421. footer .avatar {
  422. width: 200px;
  423. height: 200px;
  424. border-radius: 50%;
  425. float: left;
  426. -webkit-shape-outside: circle();
  427. shape-outside: circle();
  428. margin-right: 2rem;
  429. padding: 2px 5px 5px 2px;
  430. background: white;
  431. border-left: 1px solid #f1c40f;
  432. border-top: 1px solid #f1c40f;
  433. border-right: 5px solid #f1c40f;
  434. border-bottom: 5px solid #f1c40f;
  435. }
  436. </style>
  437. <h1>
  438. <span><a id="jumper" href="#jumpto" title="Un peu perdu ?">?</a></span>
  439. Being A Developer After 40 (archive)
  440. <time>Pour la pérennité des contenus liés. Non-indexé, retrait sur simple email.</time>
  441. </h1>
  442. <section>
  443. <article>
  444. <h3><a href="https://medium.com/@akosma/being-a-developer-after-40-3c5dd112210c">Source originale du contenu</a></h3>
  445. <p name="1e1b" id="1e1b" class="graf--p graf-after--h3">(This is the talk I have given at <a href="https://www.appbuilders.ch" data-href="https://www.appbuilders.ch" class="markup--anchor markup--p-anchor">App Builders Switzerland</a> on April 25th, 2016. The slides are available on <a href="https://speakerdeck.com/akosma/being-a-developer-after-40" data-href="https://speakerdeck.com/akosma/being-a-developer-after-40" class="markup--anchor markup--p-anchor">SpeakerDeck</a> and at the bottom of this article.)</p>
  446. <p name="274f" id="274f" class="graf--p graf-after--p">(A version in Russian is available in <a href="https://habrahabr.ru/post/282674/" data-href="https://habrahabr.ru/post/282674/" class="markup--anchor markup--p-anchor">Habrahabr.ru</a>.)</p>
  447. <p name="cc17" id="cc17" class="graf--p graf-after--p">Hi everyone, I am a forty-two years old self-taught developer, and this is my story.</p>
  448. <p name="3f4a" id="3f4a" class="graf--p graf-after--p">A couple of weeks ago I came by the tweet below, and it made me think about my career, and those thoughts brought me back to where it all began for me:</p>
  449. <p name="ca8a" id="ca8a" class="graf--p graf-after--figure">I started my career as a software developer at precisely 10am, on Monday October 6th, 1997, somewhere in the city of <a href="https://en.wikipedia.org/wiki/Olivos,_Buenos_Aires" data-href="https://en.wikipedia.org/wiki/Olivos,_Buenos_Aires" class="markup--anchor markup--p-anchor">Olivos</a>, just north of <a href="https://en.wikipedia.org/wiki/Buenos_Aires" data-href="https://en.wikipedia.org/wiki/Buenos_Aires" class="markup--anchor markup--p-anchor">Buenos Aires</a>, <a href="https://en.wikipedia.org/wiki/Argentina" data-href="https://en.wikipedia.org/wiki/Argentina" class="markup--anchor markup--p-anchor">Argentina</a>. The moment was Unix Epoch <a href="http://www.epochconverter.com" data-href="http://www.epochconverter.com" class="markup--anchor markup--p-anchor">876142800</a>. I had recently celebrated my 24th birthday.</p>
  450. <h4 name="15e7" id="15e7" class="graf--h4 graf-after--p">The World In 1997</h4>
  451. <p name="de22" id="de22" class="graf--p graf-after--h4">The world was a slightly different place back then.</p>
  452. <p name="14ba" id="14ba" class="graf--p graf-after--p">Websites did not have cookie warnings. The future of the web were portals like <a href="http://excite.com" data-href="http://excite.com" class="markup--anchor markup--p-anchor">Excite.com</a>. AltaVista was my preferred search engine. My e-mail was kosmacze@sc2a.unige.ch, which meant that my first personal website was located in <a href="http://sc2a.unige.ch/~kosmacze." data-href="http://sc2a.unige.ch/~kosmacze." class="markup--anchor markup--p-anchor">http://sc2a.unige.ch/~kosmacze.</a> We were still mourning Princess <a href="https://en.wikipedia.org/wiki/Death_of_Diana,_Princess_of_Wales" data-href="https://en.wikipedia.org/wiki/Death_of_Diana,_Princess_of_Wales" class="markup--anchor markup--p-anchor">Lady Diana</a>. Steve Jobs had taken the role of CEO and convinced Microsoft to <a href="http://www.cnet.com/news/microsoft-to-invest-150-million-in-apple/#!" data-href="http://www.cnet.com/news/microsoft-to-invest-150-million-in-apple/#!" class="markup--anchor markup--p-anchor">inject 150 million dollars</a> into Apple Computer. Digital Equipment Corporation was suing Dell. The remains of Che Guevara had just been brought back to Cuba. The <a href="https://en.wikipedia.org/wiki/Friends_%28season_4%29" data-href="https://en.wikipedia.org/wiki/Friends_%28season_4%29" class="markup--anchor markup--p-anchor">fourth season of “Friends”</a> had just started. <a href="https://en.wikipedia.org/wiki/Gianni_Versace" data-href="https://en.wikipedia.org/wiki/Gianni_Versace" class="markup--anchor markup--p-anchor">Gianni Versace</a> had just been murdered in front of his house. <a href="https://en.wikipedia.org/wiki/Mother_Teresa" data-href="https://en.wikipedia.org/wiki/Mother_Teresa" class="markup--anchor markup--p-anchor">Mother Teresa</a>, <a href="https://en.wikipedia.org/wiki/Roy_Lichtenstein" data-href="https://en.wikipedia.org/wiki/Roy_Lichtenstein" class="markup--anchor markup--p-anchor">Roy Lichtenstein</a> and <a href="https://en.wikipedia.org/wiki/Jeanne_Calment" data-href="https://en.wikipedia.org/wiki/Jeanne_Calment" class="markup--anchor markup--p-anchor">Jeanne Calment</a> (the world’s oldest person ever) had just passed away. People were playing <a href="https://en.wikipedia.org/wiki/Final_Fantasy_VII" data-href="https://en.wikipedia.org/wiki/Final_Fantasy_VII" class="markup--anchor markup--p-anchor">Final Fantasy 7</a> on their <a href="https://en.wikipedia.org/wiki/PlayStation_%28console%29" data-href="https://en.wikipedia.org/wiki/PlayStation_%28console%29" class="markup--anchor markup--p-anchor">PlayStation</a> like crazy. BBC 2 started broadcasting the <a href="http://www.forbes.com/sites/oracle/2015/07/31/prepare-for-the-teletubby-trained-mobile-workforce/#75086f3b7fb3" data-href="http://www.forbes.com/sites/oracle/2015/07/31/prepare-for-the-teletubby-trained-mobile-workforce/#75086f3b7fb3" class="markup--anchor markup--p-anchor">Teletubbies</a>. James Cameron was about to release <a href="http://www.imdb.com/title/tt0120338/" data-href="http://www.imdb.com/title/tt0120338/" class="markup--anchor markup--p-anchor">Titanic</a>. The Verve had just released their hit <a href="https://www.youtube.com/watch?v=1lyu1KKwC74" data-href="https://www.youtube.com/watch?v=1lyu1KKwC74" class="markup--anchor markup--p-anchor">“Bitter Sweet Symphony”</a> and then had to pay most royalties to the Rolling Stones.</p>
  453. <p name="573c" id="573c" class="graf--p graf-after--figure">Smartphones looked like the <a href="https://en.m.wikipedia.org/wiki/Nokia_9000_Communicator" data-href="https://en.m.wikipedia.org/wiki/Nokia_9000_Communicator" class="markup--anchor markup--p-anchor">Nokia 9000 Communicator</a>; they had 8 MB of memory, a 24 MHz i386 CPU and run the GEOS operating system.</p>
  454. <p name="7866" id="7866" class="graf--p graf-after--p">Smartwatches looked like the <a href="http://www.g-shock.eu/euro/aboutgshock/history/" data-href="http://www.g-shock.eu/euro/aboutgshock/history/" class="markup--anchor markup--p-anchor">CASIO G-SHOCK DW-9100BJ</a>. Not as many apps but the battery life was much longer.</p>
  455. <p name="9090" id="9090" class="graf--p graf-after--p">IBM Deep Blue <a href="https://en.wikipedia.org/wiki/Deep_Blue_versus_Garry_Kasparov" data-href="https://en.wikipedia.org/wiki/Deep_Blue_versus_Garry_Kasparov" class="markup--anchor markup--p-anchor">had defeated for the first time</a> Garry Kasparov in a game of chess.</p>
  456. <p name="3f4f" id="3f4f" class="graf--p graf-after--p">A hacker known as “_eci” published the C code for a Windows 3.1, 95 and NT exploit called <a href="https://en.wikipedia.org/wiki/WinNuke" data-href="https://en.wikipedia.org/wiki/WinNuke" class="markup--anchor markup--p-anchor">“WinNuke,”</a> a denial-of-service attack that on TCP port 139 (NetBIOS) causing a Blue Screen of Death.</p>
  457. <p name="b1fe" id="b1fe" class="graf--p graf-after--p">Incidentally, 1997 is also the year <a href="https://www.malala.org/malalas-story" data-href="https://www.malala.org/malalas-story" class="markup--anchor markup--p-anchor">Malala Yousafzai</a>, <a href="http://www.imdb.com/name/nm1631269/" data-href="http://www.imdb.com/name/nm1631269/" class="markup--anchor markup--p-anchor">Chloë Grace Moretz</a> and <a href="https://en.wikipedia.org/wiki/Kylie_Jenner" data-href="https://en.wikipedia.org/wiki/Kylie_Jenner" class="markup--anchor markup--p-anchor">Kylie Jenner</a> were born.</p>
  458. <p name="6151" id="6151" class="graf--p graf-after--p">Many film storylines take place in 1997, to name a few: <a href="http://www.imdb.com/title/tt0082340/" data-href="http://www.imdb.com/title/tt0082340/" class="markup--anchor markup--p-anchor">Escape from New York</a>, <a href="http://www.imdb.com/title/tt0100403/" data-href="http://www.imdb.com/title/tt0100403/" class="markup--anchor markup--p-anchor">Predator 2</a>, <a href="http://www.imdb.com/title/tt0421715/" data-href="http://www.imdb.com/title/tt0421715/" class="markup--anchor markup--p-anchor">The Curious Case of Benjamin Button</a>, <a href="http://www.imdb.com/title/tt0417741/" data-href="http://www.imdb.com/title/tt0417741/" class="markup--anchor markup--p-anchor">Harry Potter and the Half-Blood Prince</a>, <a href="http://www.imdb.com/title/tt0099674/" data-href="http://www.imdb.com/title/tt0099674/" class="markup--anchor markup--p-anchor">The Godfather III</a> and according to <a href="http://www.imdb.com/title/tt0103064/" data-href="http://www.imdb.com/title/tt0103064/" class="markup--anchor markup--p-anchor">Terminator 2: Judgement Day</a>, Skynet became self-aware at 2:14 am on August 29, 1997. That did not happen; however, in an interesting turn of events, the domain google.com had been registered on September 15th that year.</p>
  459. <p name="8139" id="8139" class="graf--p graf-after--p">We were two years away from <a href="https://en.wikipedia.org/wiki/Year_2000_problem" data-href="https://en.wikipedia.org/wiki/Year_2000_problem" class="markup--anchor markup--p-anchor">Y2K</a> and the media were starting to get people nervous about it.</p>
  460. <h4 name="5ccc" id="5ccc" class="graf--h4 graf-after--p">My First Developer Job</h4>
  461. <p name="9d38" id="9d38" class="graf--p graf-after--h4">My first job consisted of writing ASP pages in various editors, ranging from <a href="https://en.wikipedia.org/wiki/Microsoft_FrontPage" data-href="https://en.wikipedia.org/wiki/Microsoft_FrontPage" class="markup--anchor markup--p-anchor">Microsoft FrontPage</a>, to <a href="http://www.hotmetalpro.com/press/" data-href="http://www.hotmetalpro.com/press/" class="markup--anchor markup--p-anchor">HotMeTaL Pro</a> to <a href="https://www.editplus.com" data-href="https://www.editplus.com" class="markup--anchor markup--p-anchor">EditPlus</a>, managing cross-browser compatibility between Netscape Navigator and Internet Explorer 4, and writing stored procedures in <a href="http://stackoverflow.com/questions/194/upgrading-sql-server-6-5" data-href="http://stackoverflow.com/questions/194/upgrading-sql-server-6-5" class="markup--anchor markup--p-anchor">SQL Server 6.5</a> powering a commercial website published in Japanese, Russian, English and Spanish — without any <a href="http://www.alanwood.net/unicode/netscape.html" data-href="http://www.alanwood.net/unicode/netscape.html" class="markup--anchor markup--p-anchor">consistent UTF-8 support</a> across the software stack.</p>
  462. <p name="6728" id="6728" class="graf--p graf-after--p">The product of these efforts ran in a <a href="https://en.wikipedia.org/wiki/Pentium_II" data-href="https://en.wikipedia.org/wiki/Pentium_II" class="markup--anchor markup--p-anchor">Pentium II</a> server hosted somewhere in the USA, with a stunning 2 GB hard disk drive and a whooping 256 MB of RAM. It was a single server running <a href="https://en.wikipedia.org/wiki/Windows_NT_4.0" data-href="https://en.wikipedia.org/wiki/Windows_NT_4.0" class="markup--anchor markup--p-anchor">Windows NT 4</a>, <a href="https://en.wikipedia.org/wiki/Microsoft_SQL_Server" data-href="https://en.wikipedia.org/wiki/Microsoft_SQL_Server" class="markup--anchor markup--p-anchor">SQL Server 6.5</a> and <a href="https://en.wikipedia.org/wiki/Internet_Information_Services" data-href="https://en.wikipedia.org/wiki/Internet_Information_Services" class="markup--anchor markup--p-anchor">IIS 2.0</a>, serving around ten thousand visitors per day.</p>
  463. <p name="c7a5" id="c7a5" class="graf--p graf-after--p">My first professional programming language was this mutant called <a href="https://en.wikipedia.org/wiki/VBScript" data-href="https://en.wikipedia.org/wiki/VBScript" class="markup--anchor markup--p-anchor">VBScript</a>, and of course a little bit of JavaScript on the client side, sprinkled with lots of “if this is Netscape do this, else do that” because back then I had no idea how to use JavaScript properly.</p>
  464. <p name="0b7b" id="0b7b" class="graf--p graf-after--p">Interestingly, it’s 2016 and we are <a href="http://www.planningforaliens.com/blog/2016/04/11/why-js-development-is-crazy/" data-href="http://www.planningforaliens.com/blog/2016/04/11/why-js-development-is-crazy/" class="markup--anchor markup--p-anchor">barely starting</a> to understand how to do anything in JavaScript.</p>
  465. <p name="a5de" id="a5de" class="graf--p graf-after--p">Unit tests were unheard of. The <a href="http://www.agilemanifesto.org" data-href="http://www.agilemanifesto.org" class="markup--anchor markup--p-anchor">Agile Manifesto</a> had not been written yet. Continuous integration was a dream. XML was not even a buzzword. Our QA strategy consisted of restarting the server once a week, because otherwise it would crash randomly. We developed our own <a href="https://www.microsoft.com/com/default.mspx" data-href="https://www.microsoft.com/com/default.mspx" class="markup--anchor markup--p-anchor">COM+</a> component in <a href="https://en.wikipedia.org/wiki/Visual_J%2B%2B" data-href="https://en.wikipedia.org/wiki/Visual_J%2B%2B" class="markup--anchor markup--p-anchor">Visual J++</a> to parse JPEG files uploaded to the server. As soon as <a href="https://en.wikipedia.org/wiki/JPEG_2000" data-href="https://en.wikipedia.org/wiki/JPEG_2000" class="markup--anchor markup--p-anchor">JPEG 2000</a>-encoded files started popping up, our component broke miserably.</p>
  466. <p name="4ce8" id="4ce8" class="graf--p graf-after--p">We did not use source control, not even <a href="http://www.nongnu.org/cvs/" data-href="http://www.nongnu.org/cvs/" class="markup--anchor markup--p-anchor" title="Concurrent Versions System">CVS</a>, <a href="https://www.gnu.org/software/rcs/" data-href="https://www.gnu.org/software/rcs/" class="markup--anchor markup--p-anchor" title="The GNU Revision Control System">RCS</a> or, God forbid, <a href="https://en.m.wikipedia.org/wiki/Microsoft_Visual_SourceSafe" data-href="https://en.m.wikipedia.org/wiki/Microsoft_Visual_SourceSafe" class="markup--anchor markup--p-anchor" title="Microsoft Visual SourceSafe">SourceSafe</a>. <a href="http://subversion.apache.org/" data-href="http://subversion.apache.org/" class="markup--anchor markup--p-anchor" title="Apache Subversion">Subversion</a> did not exist yet. Our <a href="http://www.joelonsoftware.com/articles/fog0000000043.html" data-href="http://www.joelonsoftware.com/articles/fog0000000043.html" class="markup--anchor markup--p-anchor" title="The Joel Test">Joel Test</a> score was minus 25.</p>
  467. <h4 name="f2b3" id="f2b3" class="graf--h4 graf-after--p">6776 Days</h4>
  468. <p name="a3d6" id="a3d6" class="graf--p graf-after--h4">For the past 6776 days I have had a cup of coffee in the morning and wrote code with things named VBScript, JavaScript, Linux, SQL, HTML, Makefiles, Node.js, CSS, XML, .NET, YAML, Podfiles, JSON, Markdown, PHP, Windows, Doxygen, C#, Visual Basic, Visual Basic.NET, Java, Socket.io, Ruby, unit tests, Python, shell scripts, C++, Objective-C, batch files, and lately Swift.</p>
  469. <p name="c349" id="c349" class="graf--p graf-after--p">In those 6776 days lots of things happened; most importantly, my wife and I got married. I quit 6 jobs and I was fired twice. I started and closed my own business. I finished my Master Degree. I published a few open source projects, and one of them landed me an article on <a href="http://arstechnica.com/apple/2009/04/iphone-dev-convert-xib-files-to-objective-c/" data-href="http://arstechnica.com/apple/2009/04/iphone-dev-convert-xib-files-to-objective-c/" class="markup--anchor markup--p-anchor">Ars Technica by Erica Sadun herself</a>. I was featured in Swiss and Bolivian TV shows. I watched live keynotes by Bill Gates and by Steve Jobs in Seattle and San Francisco. I <a href="http://www.infoq.com/presentations/Introduction-to-iOS-Software-Development" data-href="http://www.infoq.com/presentations/Introduction-to-iOS-Software-Development" class="markup--anchor markup--p-anchor">spoke at</a> and co-organised conferences in four continents. I wrote and published <a href="http://amazon.com/author/akosma" data-href="http://amazon.com/author/akosma" class="markup--anchor markup--p-anchor">two books</a>. I burned out twice (not the books, myself,) and lots of other things happened, both wonderful and horrible.</p>
  470. <p name="8924" id="8924" class="graf--p graf-after--p">I have often pondered about leaving the profession altogether. But somehow, code always calls me back after a while. I like to write apps, systems, software. To avoid burning out, I have had to develop strategies.</p>
  471. <p name="85bd" id="85bd" class="graf--p graf-after--p">In this talk I will give you my secrets, so that you too can reach the glorious age of 40 as an experienced developer, willing to continue in this profession.</p>
  472. <h4 name="82f3" id="82f3" class="graf--h4 graf-after--p">Advice For The Young At Heart</h4>
  473. <p name="bf16" id="bf16" class="graf--p graf-after--h4">Some simple tips to reach the glorious age of 40 as a happy software developer.</p>
  474. <h4 name="c7a9" id="c7a9" class="graf--h4 graf-after--p">1. Forget The Hype</h4>
  475. <p name="7445" id="7445" class="graf--p graf-after--h4">The first advice I can give you all is, do not pay attention to hype. Every year there is a new programming language, framework, library, pattern, component architecture or paradigm that takes the blogosphere by storm. People get crazy about it. Conferences are given. Books are written. <a href="http://www.gartner.com/technology/research/methodologies/hype-cycle.jsp" data-href="http://www.gartner.com/technology/research/methodologies/hype-cycle.jsp" class="markup--anchor markup--p-anchor">Gartner hype cycles</a> rise and fall. Consultants charge insane amounts of money to teach, deploy or otherwise fuckup the lives of people in this industry. The press will support these horrors and will make you feel guilty if you do not pay attention to them.</p>
  476. <p name="7edd" id="7edd" class="graf--p graf-after--p">In 1997 it was <a href="https://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture" data-href="https://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture" class="markup--anchor markup--p-anchor">CORBA</a> &amp; <a href="https://en.m.wikipedia.org/wiki/Rational_Unified_Process" data-href="https://en.m.wikipedia.org/wiki/Rational_Unified_Process" class="markup--anchor markup--p-anchor">RUP</a>.</p>
  477. <p name="ce6c" id="ce6c" class="graf--p graf-after--p">In 2000 it was <a href="https://en.wikipedia.org/wiki/SOAP" data-href="https://en.wikipedia.org/wiki/SOAP" class="markup--anchor markup--p-anchor">SOAP</a> &amp; XML.</p>
  478. <p name="9c38" id="9c38" class="graf--p graf-after--p">In 2003 it was <a href="https://en.wikipedia.org/wiki/Model-driven_architecture" data-href="https://en.wikipedia.org/wiki/Model-driven_architecture" class="markup--anchor markup--p-anchor">Model Driven Architecture</a> and <a href="https://en.m.wikipedia.org/wiki/Software_factory" data-href="https://en.m.wikipedia.org/wiki/Software_factory" class="markup--anchor markup--p-anchor">Software Factories</a>.</p>
  479. <p name="7c23" id="7c23" class="graf--p graf-after--p">In 2006 it was <a href="https://en.wikipedia.org/wiki/Semantic_Web" data-href="https://en.wikipedia.org/wiki/Semantic_Web" class="markup--anchor markup--p-anchor">Semantic Web</a> and <a href="https://en.m.wikipedia.org/wiki/One_Laptop_per_Child" data-href="https://en.m.wikipedia.org/wiki/One_Laptop_per_Child" class="markup--anchor markup--p-anchor">OLPC</a>.</p>
  480. <p name="fde8" id="fde8" class="graf--p graf-after--p">In 2009 it was <a href="https://en.m.wikipedia.org/wiki/Augmented_reality" data-href="https://en.m.wikipedia.org/wiki/Augmented_reality" class="markup--anchor markup--p-anchor">Augmented Reality</a>.</p>
  481. <p name="1938" id="1938" class="graf--p graf-after--p">In 2012 it was <a href="https://en.m.wikipedia.org/wiki/Big_data" data-href="https://en.m.wikipedia.org/wiki/Big_data" class="markup--anchor markup--p-anchor">Big Data</a>.</p>
  482. <p name="0f14" id="0f14" class="graf--p graf-after--p">In 2015… Virtual Reality? Bots?</p>
  483. <p name="70fc" id="70fc" class="graf--p graf-after--p"><strong class="markup--strong markup--p-strong">Do not worry about hype.</strong> Keep doing your thing, keep learning what you were learning, and move on. Pay attention to it only if you have a genuine interest, or if you feel that it could bring you some benefit in the medium or long run.</p>
  484. <p name="622b" id="622b" class="graf--p graf-after--p">The reason for this lies in the fact that, as the Romans said in the past, <strong class="markup--strong markup--p-strong">Nil nove sul sole.</strong> Most of what you see and learn in computer science has been around for decades, and this fact is purposedly hidden beneath piles of marketing, books, blog posts and questions on Stack Overflow. Every new architecture is just a reimagination and a readaptation of an idea that was floating around for decades.</p>
  485. <h4 name="c9bc" id="c9bc" class="graf--h4 graf-after--p">2. Choose Your Galaxy Wisely</h4>
  486. <p name="413d" id="413d" class="graf--p graf-after--h4">In our industry, every technology generates what I call a “galaxy.” These galaxies feature stars but also black holes; meteoric changes that fade in the night, many planets, only a tiny fraction of which harbour some kind of life, and lots of cosmic dust and dark matter.</p>
  487. <p name="a859" id="a859" class="graf--p graf-after--p">Examples of galaxies are, for example, .NET, Cocoa, Node.js, PHP, Emacs, SAP, etc. Each of these features evangelists, developers, bloggers, podcasts, conferences, books, training courses, consulting services, and inclusion problems. Galaxies are built on the assumption that their underlying technology is the answer to all problems. Each galaxy, thus, is based in a wrong assumption.</p>
  488. <p name="7aff" id="7aff" class="graf--p graf-after--p">The developers from those different galaxies embody the prototypical attitudes that have brought that technology to life. They adhere to the ideas, and will enthusiatically wear the t-shirts and evangelize others about the merits of their choice.</p>
  489. <p name="3a2f" id="3a2f" class="graf--p graf-after--p">Actually, I use the term “galaxy” to avoid the slightly more appropriate if not less controversial term “religion,” which might describe this phenomenon better.</p>
  490. <p name="684a" id="684a" class="graf--p graf-after--p">In my personal case, I spent the first ten years of my career in the Microsoft galaxy, and the following nine in the Apple galaxy.</p>
  491. <p name="a4f5" id="a4f5" class="graf--p graf-after--p">I dare say, one of the biggest reasons why I changed galaxies was Steve Ballmer. I got tired of the general attitude of the Microsoft galaxy people against open source software.</p>
  492. <p name="619a" id="619a" class="graf--p graf-after--p">On the other hand, I also have to say that the Apple galaxy is a delightful place, full of artists and musicians and writers who, by chance or ill luck, happen to write software as well.</p>
  493. <p name="0123" id="0123" class="graf--p graf-after--p">I attended conferences in the Microsoft galaxy, like the Barcelona TechEd 2003, or various Tech Talks in Buenos Aires, Geneva or London. I even spoke at the Microsoft DevDays 2006 in Geneva. The general attitude of developers in the Microsoft galaxy is unfriendly, “corporate” and bound in secrecy, NDAs and cumbersome IT processes.</p>
  494. <p name="fe1a" id="fe1a" class="graf--p graf-after--p">The Apple galaxy was to me, back in 2006, exactly the opposite; it was full of people who were musicians, artists, painters; they would write software to support their passion, and they would write software with passion. It made all the difference, and to this day, I still enjoy tremendously this galaxy, the one we are in, right now, and that has brought us all together.</p>
  495. <p name="d6c5" id="d6c5" class="graf--p graf-after--p">And then the iPhone came out, and the rest is history.</p>
  496. <p name="c018" id="c018" class="graf--p graf-after--p">So my recommendation to you is: choose your galaxy wisely, enjoy it as much or as little as you want, but keep your telescope pointed towards the other galaxies, and prepare to make a hyperjump to other places if needed.</p>
  497. <h4 name="80ff" id="80ff" class="graf--h4 graf-after--p">3. Learn About Software History</h4>
  498. <p name="1440" id="1440" class="graf--p graf-after--h4">This takes me to the next point: learn how your favorite technology came to be. Do you like C#? Do you know who created it? How did the .NET project came to be? Who was the lead architect? Which were the constraints of the project and why did the language turned out to be what it is now?</p>
  499. <p name="2497" id="2497" class="graf--p graf-after--p">Apply the same recipe to any language or CPU architecture that you enjoy or love: Python, Ruby, Java, whatever the programming language; learn their origins, how they came up to be. The same for operating systems, networking technologies, hardware, anything. Go and learn how people came up with those ideas, and how long they took to grow and mature. Because <a href="http://www.joelonsoftware.com/articles/fog0000000017.html" data-href="http://www.joelonsoftware.com/articles/fog0000000017.html" class="markup--anchor markup--p-anchor">good software takes ten years</a>, you know.</p>
  500. <p name="13b7" id="13b7" class="graf--p graf-after--figure">The stories surrounding the genesis of our industry are fascinating, and will show you two things: first, that <a href="http://everythingisaremix.info" data-href="http://everythingisaremix.info" class="markup--anchor markup--p-anchor">everything is a remix</a>. Second, that you could be the one remixing the next big thing. No, scratch that: you <strong class="markup--strong markup--p-strong">are going to be</strong> the creators of the next big thing.</p>
  501. <p name="3996" id="3996" class="graf--p graf-after--p">And to help you get there, here is my (highly biased) selection of history books that I like and recommend:</p>
  502. <p name="abae" id="abae" class="graf--p graf-after--li">You will also learn to value those things that stood the test of time: <a href="https://en.wikipedia.org/wiki/Lisp_%28programming_language%29" data-href="https://en.wikipedia.org/wiki/Lisp_%28programming_language%29" class="markup--anchor markup--p-anchor">Lisp</a>, <a href="https://en.wikipedia.org/wiki/TeX" data-href="https://en.wikipedia.org/wiki/TeX" class="markup--anchor markup--p-anchor">TeX</a>, <a href="https://en.wikipedia.org/wiki/Unix" data-href="https://en.wikipedia.org/wiki/Unix" class="markup--anchor markup--p-anchor">Unix</a>, <a href="https://www.gnu.org/software/bash/" data-href="https://www.gnu.org/software/bash/" class="markup--anchor markup--p-anchor">bash</a>, <a href="https://en.wikipedia.org/wiki/C_%28programming_language%29" data-href="https://en.wikipedia.org/wiki/C_%28programming_language%29" class="markup--anchor markup--p-anchor">C</a>, <a href="https://en.wikipedia.org/wiki/Cocoa_%28API%29" data-href="https://en.wikipedia.org/wiki/Cocoa_%28API%29" class="markup--anchor markup--p-anchor">Cocoa</a>, <a href="https://www.gnu.org/software/emacs/" data-href="https://www.gnu.org/software/emacs/" class="markup--anchor markup--p-anchor">Emacs</a>, <a href="https://en.wikipedia.org/wiki/Vim_%28text_editor%29" data-href="https://en.wikipedia.org/wiki/Vim_%28text_editor%29" class="markup--anchor markup--p-anchor">Vim</a>, <a href="https://en.wikipedia.org/wiki/Python_%28programming_language%29" data-href="https://en.wikipedia.org/wiki/Python_%28programming_language%29" class="markup--anchor markup--p-anchor">Python</a>, <a href="https://en.wikipedia.org/wiki/ARM_architecture" data-href="https://en.wikipedia.org/wiki/ARM_architecture" class="markup--anchor markup--p-anchor">ARM</a>, <a href="https://www.gnu.org/software/make/" data-href="https://www.gnu.org/software/make/" class="markup--anchor markup--p-anchor">GNU make</a>, <a href="http://manpages.bsd.lv/history.html" data-href="http://manpages.bsd.lv/history.html" class="markup--anchor markup--p-anchor">man pages</a>. These are some examples of long-lasting useful things that are something to celebrate, cherish and learn from.</p>
  503. <h4 name="ebd4" id="ebd4" class="graf--h4 graf-after--figure">4. Keep on Learning</h4>
  504. <p name="a444" id="a444" class="graf--p graf-after--h4">Learn. Anything will do. Wanna learn Fortran? Go for it. Find Erlang interesting? Excellent. Think COBOL might be the next big thing in your career? Fantastic. Need to know more about <a href="https://en.wikipedia.org/wiki/Functional_reactive_programming" data-href="https://en.wikipedia.org/wiki/Functional_reactive_programming" class="markup--anchor markup--p-anchor">Functional Reactive Programming</a>? Be my guest. Design? Of course. UX? You must. Poetry? <a href="https://www.brainpickings.org/2014/02/17/joseph-brodsky-how-to-read-a-book/" data-href="https://www.brainpickings.org/2014/02/17/joseph-brodsky-how-to-read-a-book/" class="markup--anchor markup--p-anchor">You should</a>.</p>
  505. <p name="4328" id="4328" class="graf--p graf-after--p">Many common concepts in Computer Science have been around for decades, which makes it worthwhile to learn old programming languages and frameworks; even “arcane” ones. First, it will make you appreciate the current state of the industry (or hate it, it depends,) and second, you will learn how to use the current tools more effectively — if anything, because you will understand its legacy and origins.</p>
  506. <p name="c37e" id="c37e" class="graf--p graf-after--p">Tip 1: <strong class="markup--strong markup--p-strong">learn at least one new programming language every year.</strong> I did not come up with this idea; <a href="http://www.amazon.com/The-Pragmatic-Programmer-Journeyman-Master/dp/020161622X" data-href="http://www.amazon.com/The-Pragmatic-Programmer-Journeyman-Master/dp/020161622X" class="markup--anchor markup--p-anchor">The Pragmatic Programmer</a> book did. And it works.</p>
  507. <p name="1570" id="1570" class="graf--p graf-after--p">One new programming language every year. Simple, huh? Go beyond the typical “Hello, World” stage, and build something useful with it. I usually build a simple <a href="https://github.com/akosma/CodeaCalc" data-href="https://github.com/akosma/CodeaCalc" class="markup--anchor markup--p-anchor">calculator</a> with whatever new technology I learn. It helps me figure out the syntax, it makes me familiar with the APIs or the IDE, etc.</p>
  508. <p name="293a" id="293a" class="graf--p graf-after--p">Tip 2: <strong class="markup--strong markup--p-strong">read at least 6 books per year.</strong> I have shown above a list of six must-read books; that should keep you busy for a year. Here goes the list for the second year:</p>
  509. <p name="6be0" id="6be0" class="graf--p graf-after--li">(OK, those are seven books.)</p>
  510. <p name="1923" id="1923" class="graf--p graf-after--p">Six books per year looks like a lot, but it only means one every 2 months. And most of the books I have mentioned in this presentation are not that long, and even better, they are outstandingly well written, they are fun and are full of insight.</p>
  511. <p name="d7db" id="d7db" class="graf--p graf-after--p">Look at it this way: if you are now 20 years old, by the age of 30 you will have read over 60 books, and over 120 when you reach my age. And you will have played with at least 20 different programming languages. Think about it for a second.</p>
  512. <p name="50ef" id="50ef" class="graf--p graf-after--p">Some of the twelve books I’ve selected for you have been written in the seventies, others in the eighties, some in the nineties and finally most of them are from the past decade. They represent the best writing I have come across in our industry.</p>
  513. <p name="f5c1" id="f5c1" class="graf--p graf-after--p">But do not just read them; take notes. Bookmark. Write on the pages of the books. Then re-read them every so often. <a href="https://en.wikipedia.org/wiki/Jorge_Luis_Borges" data-href="https://en.wikipedia.org/wiki/Jorge_Luis_Borges" class="markup--anchor markup--p-anchor">Borges</a> used to say that a bigger pleasure than reading a book is re-reading it. And also, please, buy those books you really like in paper format. Believe me. eBooks are overrated. Nothing beats the real thing.</p>
  514. <p name="4da9" id="4da9" class="graf--p graf-after--p">Of course, please know that as you will grow old, the number of things that qualify as new and/or important will drop dramatically. Prepare for this. It is OK to weep silently when you realise this.</p>
  515. <h4 name="daef" id="daef" class="graf--h4 graf-after--figure">5. Teach</h4>
  516. <p name="a9da" id="a9da" class="graf--p graf-after--h4">Once you have learnt, <strong class="markup--strong markup--p-strong">teach</strong>. This is very important.</p>
  517. <p name="5fc9" id="5fc9" class="graf--p graf-after--p">This does not mean that you should setup a classroom and invite people to hear your ramblings (although it would be awesome if you did!) It might mean that you give meaningful answers to questions in Stack Overflow; that you write a book; that you publish a podcast about your favorite technology; that you keep a blog; that you write on Medium; that you go to another continent and set up programming schools using Raspberry Pis; or that you help a younger developer by becoming their mentor (do not do this before the age of 30, though.)</p>
  518. <p name="b88a" id="b88a" class="graf--p graf-after--p">Teaching will make you more humble, because it will painfully show you how limited your knowledge is. <strong class="markup--strong markup--p-strong">Teaching is the best way to learn</strong>. Only by testing your knowledge against others are you going to learn properly. This will also make you more respectful regarding other developers and other technologies; every language, no matter how humble or arcane, has its place within the <a href="http://canonical.org/~kragen/tao-of-programming.html" data-href="http://canonical.org/~kragen/tao-of-programming.html" class="markup--anchor markup--p-anchor">Tao of Programming</a>, and only through teaching will you be able to feel it.</p>
  519. <p name="fa71" id="fa71" class="graf--p graf-after--p">And through teaching you can really, really make a difference in this world. Back in 2012 I received a mail from a person who had attended one of my trainings. She used to work as an Adobe Flash developer. Remember ActionScript and all that? Well, <a href="https://www.apple.com/hotnews/thoughts-on-flash/" data-href="https://www.apple.com/hotnews/thoughts-on-flash/" class="markup--anchor markup--p-anchor">unsurprisingly</a> after 12 years of working as a freelance Flash developer she suddenly found herself unemployed. Alone. With a baby to feed. She told me in her message that she had attended my training, that she had enjoyed it and also learnt something useful, and that after that she had found a job as a mobile web developer. She wrote to me to say <em class="markup--em markup--p-em">thank you</em>.</p>
  520. <p name="aa70" id="aa70" class="graf--p graf-after--p">I cannot claim that I changed the world, but I might have nudged it a little bit, into something (hopefully) better. This thought has made every lesson I gave since then much more worthwhile and meaningful.</p>
  521. <h4 name="a91f" id="a91f" class="graf--h4 graf-after--p">6. Workplaces Suck</h4>
  522. <p name="68d3" id="68d3" class="graf--p graf-after--figure">Do not expect software corporations to offer <em class="markup--em markup--p-em">any</em> kind of career path. They might do this in the US, but I have never seen any of that in Europe. This means that you are solely responsible for the success of your career. Nobody will tell you “oh, well, next year you can grow to be team leader, then manager, then CTO…”</p>
  523. <p name="4d7e" id="4d7e" class="graf--p graf-after--p">Not. At. All. Quite the opposite, actually: you were, are and will be a software developer, that is, a relatively expensive factory worker, whose tasks your managers would be happy to offshore no matter what they tell you.</p>
  524. <p name="53b3" id="53b3" class="graf--p graf-after--p"><strong class="markup--strong markup--p-strong">Do not take a job just for the money.</strong> <a href="https://twitter.com/carlfish/status/721738272070762496" data-href="https://twitter.com/carlfish/status/721738272070762496" class="markup--anchor markup--p-anchor">Software companies have become sweatshops</a> where you are supposed to justify your absurdly high salary with insane hours and unreasonable expectations. And, at least in the case of Switzerland, there is no worker union to help you if things go bad. Actually there are worker unions in Switzerland, but they do not really care about situations that will not land them some kind of media exposure.</p>
  525. <p name="3dcb" id="3dcb" class="graf--p graf-after--p">Even worse; in most workplaces you will be harassed, particularly if you are a woman, a member of the LGBT community or from a non-caucasian ethnic group. I have seen developers threatened to have their work visas not renewed if they did not work faster. I have witnessed harassment of women and gay colleagues.</p>
  526. <p name="c9e9" id="c9e9" class="graf--p graf-after--p">Some parts of our industry are downright disgusting, and you do not need to be in Silicon Valley to live it. You do not need Medium to read it. You could experience that right here in Switzerland. Many banks have atrocious workplaces. Financial institutions want you to vomit code 15 hours a day, even if the Swiss working laws explicitly forbid such treatments. Pharmaceutical companies want you to write code to cheat test results and to help them bypass regulations. Startups want your skin, working for 18 hours for no compensation, telling you bullshit like “because we give you stock options” or “because we are all team players.”</p>
  527. <p name="145e" id="145e" class="graf--p graf-after--p">It does not matter that you are Zach Holman and that you can claim in your CV that you literally wrote Github from scratch: <a href="https://zachholman.com/talk/firing-people" data-href="https://zachholman.com/talk/firing-people" class="markup--anchor markup--p-anchor">you will be fired</a> for the pettiest of reasons.</p>
  528. <p name="cbd3" id="cbd3" class="graf--p graf-after--p">It does not matter that the app brings more than half of your employer traffic and revenues; the API team will treat you and your ideas with contempt and sloppiness.</p>
  529. <p name="9c2e" id="9c2e" class="graf--p graf-after--p">I have been asked to work for free by very well known people in the industry, some of them even featured in Wikipedia, and it is simply appalling. I will not give out their names, but I will prevent any junior from getting close to them, because people working without ethics <strong class="markup--strong markup--p-strong">do not deserve anyone’s brain.</strong></p>
  530. <p name="ae6b" id="ae6b" class="graf--p graf-after--p">Whenever an HR manager tells you “you must do this (whatever wrong thing in your frame of reference) because we pay you a salary,” remember to answer the following: “you pay me a salary, but I give you my brain in exchange, and I refuse to comply with this order.”</p>
  531. <p name="61d9" id="61d9" class="graf--p graf-after--p">And to top it all, they will put you in an open space, and for some reason they will be proud about it. <strong class="markup--strong markup--p-strong">Open spaces are a cancer.</strong> They are without a doubt the worst possible office layout ever invented, and the least appropriate for software development — or any type of brain work for that matter.</p>
  532. <p name="0f9b" id="0f9b" class="graf--p graf-after--p">Remember this: the fact that you <em class="markup--em markup--p-em">understand</em> something does not imply that you have to <em class="markup--em markup--p-em">agree</em> to it.</p>
  533. <p name="5836" id="5836" class="graf--p graf-after--p">Disobey authority. Say <a href="https://www.youtube.com/watch?v=bWXazVhlyxQ" data-href="https://www.youtube.com/watch?v=bWXazVhlyxQ" class="markup--anchor markup--p-anchor">“fuck you, I won’t do what you tell me”</a> and change jobs. There are fantastic workplaces out there; not a lot, but they exist. I have been lucky enough to work in some of them. Do not let a bad job kill your enthusiasm. It is not worth it. Disobey and move on.</p>
  534. <p name="1cc2" id="1cc2" class="graf--p graf-after--p">Or, better yet, become independent.</p>
  535. <h4 name="bd09" id="bd09" class="graf--h4 graf-after--figure">7. Know Your Worth</h4>
  536. <p name="0bc1" id="0bc1" class="graf--p graf-after--h4">You have probably heard about the “10x Software Engineer” myth, right? Well here is the thing: it is not a myth, but it does not work they way you think it works.</p>
  537. <p name="ba97" id="ba97" class="graf--p graf-after--p">It works, however, from the point of view of the employer: a “10x Software Engineer” generates worth 10 times whatever the employer pays. That means that you she or he gets 100 KCHF per year, but she or he are actually creating a value worth over a million francs. And of course, <em class="markup--em markup--p-em">they</em> get the bonuses at the end of the fiscal year, because, you know, capitalism. Know your worth. Read <a href="http://www.amazon.com/Capital-Critique-Political-Economy-Classics/dp/0140445684" data-href="http://www.amazon.com/Capital-Critique-Political-Economy-Classics/dp/0140445684" class="markup--anchor markup--p-anchor">Karl Marx</a> and <a href="http://www.amazon.com/Capital-Twenty-First-Century-Thomas-Piketty/dp/067443000X" data-href="http://www.amazon.com/Capital-Twenty-First-Century-Thomas-Piketty/dp/067443000X" class="markup--anchor markup--p-anchor">Thomas Piketty</a>. Enough said.</p>
  538. <p name="fa12" id="fa12" class="graf--p graf-after--p">Keep moving; be like the shark that keeps on swimming, because your skills are extremely valuable. Speak out your salary, say it loud, blog about it, so that your peers know how much their work is worth. Companies want you to shut up about that, so that women are paid 70% of what men are paid. So speak up! Blog about it! Tweet it! I am making 135 KCHF per year. That was my current salary. How about you? And you? The more we speak out, the less inequality there will be. Any person doing my job with my experience should get the same money, regardless of race, sex, age or preferred football team. End of the story. But it is not like that. It is not.</p>
  539. <h4 name="5e0a" id="5e0a" class="graf--h4 graf-after--figure">8. Send The Elevator Down</h4>
  540. <p name="2082" id="2082" class="graf--p graf-after--h4">If you are a white male remember all the privilege you have enjoyed since birth just because you were born that way. It is your responsibility to change the industry and its bias towards more inclusion.</p>
  541. <p name="2e5c" id="2e5c" class="graf--p graf-after--p">It is your <strong class="markup--strong markup--p-strong">duty</strong> to send the elevator down.</p>
  542. <p name="95e6" id="95e6" class="graf--p graf-after--p">Take conscious decisions in your life. Be aware of your actions and their effect. Do not blush or be embarrased for changing your opinions. Say “I’m sorry” when required. Listen. Do not be a hotshot. Have integrity and self-respect.</p>
  543. <p name="e98b" id="e98b" class="graf--p graf-after--p">Do not critisize or make fun of the technology choices of your peers; for other people will have their own reasons to choose them, and they must be respected. Be prepared to change your mind at any time through learning. One day you might like Windows. One day you might like Android. I am actually liking some parts of Android lately. And that is OK.</p>
  544. <h4 name="e70c" id="e70c" class="graf--h4 graf-after--figure">9. LLVM</h4>
  545. <p name="6625" id="6625" class="graf--p graf-after--h4">Everybody is raving about Swift, but in reality what I pay more attention to these days is LLVM itself.</p>
  546. <p name="7c69" id="7c69" class="graf--p graf-after--p">I think LLVM is the <strong class="markup--strong markup--p-strong">most</strong> important software project today, as measured in its long-term impact. Objective-C blocks, Rust &amp; Swift (the two most loved strongly typed and compiled programming languages in the <a href="http://stackoverflow.com/research/developer-survey-2016" data-href="http://stackoverflow.com/research/developer-survey-2016" class="markup--anchor markup--p-anchor" title="StackOverflow 2016 developer survey">2016 StackOverflow developer survey</a>,) <a href="https://github.com/dropbox/pyston" data-href="https://github.com/dropbox/pyston" class="markup--anchor markup--p-anchor" title="Dropbox Pyston">Dropbox Pyston</a>, the Clang Static Analyser, ARC, <a href="https://github.com/google/souper" data-href="https://github.com/google/souper" class="markup--anchor markup--p-anchor">Google Souper</a>, <a href="https://kripken.github.io/emscripten-site/" data-href="https://kripken.github.io/emscripten-site/" class="markup--anchor markup--p-anchor">Emscripten</a>, <a href="http://llvmsharp.org/" data-href="http://llvmsharp.org/" class="markup--anchor markup--p-anchor">LLVMSharp</a>, <a href="http://www.dotnetfoundation.org/llilc" data-href="http://www.dotnetfoundation.org/llilc" class="markup--anchor markup--p-anchor">Microsoft LLILC</a>, <a href="http://www.rubymotion.com/tour/features/" data-href="http://www.rubymotion.com/tour/features/" class="markup--anchor markup--p-anchor">Rubymotion</a>, <a href="http://leaningtech.com/cheerp/" data-href="http://leaningtech.com/cheerp/" class="markup--anchor markup--p-anchor">cheerp</a>, watchOS apps, the <a href="https://android.googlesource.com/platform/ndk.git/+/master/CHANGELOG.md" data-href="https://android.googlesource.com/platform/ndk.git/+/master/CHANGELOG.md" class="markup--anchor markup--p-anchor">Android NDK</a>, <a href="https://developer.apple.com/metal/" data-href="https://developer.apple.com/metal/" class="markup--anchor markup--p-anchor">Metal</a>, all of these things were born out or powered by LLVM. There are compilers using LLVM as a backend for pretty much all the most important languages of today. The .NET CLR will eventually <a href="https://github.com/dotnet/llilc" data-href="https://github.com/dotnet/llilc" class="markup--anchor markup--p-anchor" title="LLILC Project">interoperate</a> with it, and Mono <a href="http://mono-framework.com/Mono_LLVM" data-href="http://mono-framework.com/Mono_LLVM" class="markup--anchor markup--p-anchor">already</a> uses it. Facebook has <a href="http://hhvm.com/blog/10205/llvm-code-generation-in-hhvm" data-href="http://hhvm.com/blog/10205/llvm-code-generation-in-hhvm" class="markup--anchor markup--p-anchor" title="LLVM Code Generation in HHVM">tried to integrate LLVM with HHVM</a>, and WebKit recently <a href="https://webkit.org/blog/5852/introducing-the-b3-jit-compiler/" data-href="https://webkit.org/blog/5852/introducing-the-b3-jit-compiler/" class="markup--anchor markup--p-anchor" title="Introducing the B3 JIT Compiler">switched from LLVM to the new B3 JIT JavaScript compiler</a>.</p>
  547. <p name="9968" id="9968" class="graf--p graf-after--p">LLVM is <a href="http://llvm.org/docs/doxygen/html/classllvm_1_1Triple.html" data-href="http://llvm.org/docs/doxygen/html/classllvm_1_1Triple.html" class="markup--anchor markup--p-anchor">cross-platform</a>, cross-CPU-architecture, cross-language, cross-compiler, cross-eyed-tested, free as in gratis and free as a bird.</p>
  548. <p name="0b26" id="0b26" class="graf--p graf-after--p">Learn all you can about LLVM. This is the galaxy where true innovation is happening now. This is the foundation for the next 20 years.</p>
  549. <h4 name="cdb0" id="cdb0" class="graf--h4 graf-after--figure">10. Follow Your Gut</h4>
  550. <p name="5eec" id="5eec" class="graf--p graf-after--h4">I had the gut feeling .NET was going to be big when I watched its <a href="http://www.zulenet.com/see/BillGatesNET.html" data-href="http://www.zulenet.com/see/BillGatesNET.html" class="markup--anchor markup--p-anchor">introduction in June 2000</a>. I had the gut feeling the iPhone was going to be big when I watched its <a href="https://www.youtube.com/watch?v=9hUIxyE2Ns8" data-href="https://www.youtube.com/watch?v=9hUIxyE2Ns8" class="markup--anchor markup--p-anchor">introduction in 2007</a>.</p>
  551. <p name="95b6" id="95b6" class="graf--p graf-after--p">In both cases people laughed at my face, literally. In both cases I followed my gut feeling and I guess things worked out well.</p>
  552. <p name="a9d9" id="a9d9" class="graf--p graf-after--p">Follow your gut. You might be lucky, too.</p>
  553. <h4 name="f61e" id="f61e" class="graf--h4 graf-after--figure">11. APIs Are King</h4>
  554. <p name="0e6e" id="0e6e" class="graf--p graf-after--h4">Great APIs enable great apps. If the API sucks, the app will suck, too, no matter how beautiful the design.</p>
  555. <p name="9959" id="9959" class="graf--p graf-after--p">Remember that <strong class="markup--strong markup--p-strong">chunky is better than chatty</strong>, and that clients should be dumb; push as much logic as you can down to the API.</p>
  556. <p name="f7b9" id="f7b9" class="graf--p graf-after--p">Do not invent your own security protocols.</p>
  557. <p name="ec20" id="ec20" class="graf--p graf-after--p">Learn a couple of server-side technologies, and make sure Node is one of those.</p>
  558. <p name="a50f" id="a50f" class="graf--p graf-after--p">Leave REST aside and embrace Socket.io, ZeroMQ, RabbitMQ, Erlang, XMPP; explore realtime as the next step in app development. Realtime is not only for chat apps. Remove polling from the equation forever.</p>
  559. <p name="79be" id="79be" class="graf--p graf-after--p">Oh, and start <a href="http://www.economist.com/news/business-and-finance/21696477-market-apps-maturing-now-one-text-based-services-or-chatbots-looks-poised" data-href="http://www.economist.com/news/business-and-finance/21696477-market-apps-maturing-now-one-text-based-services-or-chatbots-looks-poised" class="markup--anchor markup--p-anchor">building bots</a> around those APIs. Just saying.</p>
  560. <h4 name="1744" id="1744" class="graf--h4 graf-after--p">12. Fight Complexity</h4>
  561. <p name="91d6" id="91d6" class="graf--p graf-after--h4">Simpler is better. Always. Remember the KISS principle. And I do not mean only at the UI level, but all the way until the deepest layers of your code.</p>
  562. <p name="b321" id="b321" class="graf--p graf-after--p">Refactoring, unit tests, code reviews, pull requests, all of these tools are at your disposal to make sure that the code you ship is the simplest possible architecture that works. This is how you build resilient systems for the long term.</p>
  563. <h4 name="6316" id="6316" class="graf--h4 graf-after--figure">Conclusion</h4>
  564. <p name="9140" id="9140" class="graf--p graf-after--h4">The most important thing to remember is that your age does not matter.</p>
  565. <blockquote name="0a70" id="0a70" class="graf--blockquote graf-after--p">One of my sons said to me, “Impossible, Dad. Mathematicians do all their best work by the time they’re 40. And you’re over 80. It’s impossible for you to have a good idea now.”</blockquote>
  566. <blockquote name="120a" id="120a" class="graf--blockquote graf-after--blockquote">If you’re still awake and alert mentally when you’re over 80, you’ve got the advantage that you’ve lived a long time and you’ve seen many things, and you get perspective. I’m 86 now, and it’s in the last few years that I’ve had these ideas. New ideas come along and you pick up bits here and there, and the time is ripe now, whereas it might not have been ripe five or 10 years ago.</blockquote>
  567. <blockquote name="696e" id="696e" class="graf--blockquote graf-after--blockquote"><a href="http://www.wired.com/2016/04/mathematical-matchmaker-michael-atiyah-dreams-quantum-union/" data-href="http://www.wired.com/2016/04/mathematical-matchmaker-michael-atiyah-dreams-quantum-union/" class="markup--anchor markup--blockquote-anchor">Michael Atiyah</a>, Fields Medal and Abel Prize winner Mathematician, quoted in a Wired article.</blockquote>
  568. <p name="ebfc" id="ebfc" class="graf--p graf-after--blockquote">As long as your heart tells you to keep on coding and building new things, you will be young, forever.</p>
  569. <p name="5a03" id="5a03" class="graf--p graf-after--p">In 2035, exactly 19 years from now, somebody will give a talk at a software conference similar to this one, starting like this:</p>
  570. <p name="e340" id="e340" class="graf--p graf--startsWithDoubleQuote graf-after--p">“Hi, I am 42 years old, and this is my story.”</p>
  571. <p name="1073" id="1073" class="graf--p graf-after--p">Hopefully one of you will be giving that presentation; otherwise, it will be an AI bot. You will provide some anecdotical facts about 2016, for example that it was the year when <a href="https://en.wikipedia.org/wiki/David_Bowie" data-href="https://en.wikipedia.org/wiki/David_Bowie" class="markup--anchor markup--p-anchor">David Bowie</a>, <a href="https://en.wikipedia.org/wiki/Umberto_Eco" data-href="https://en.wikipedia.org/wiki/Umberto_Eco" class="markup--anchor markup--p-anchor">Umberto Eco</a>, <a href="https://en.m.wikipedia.org/wiki/Gato_Barbieri" data-href="https://en.m.wikipedia.org/wiki/Gato_Barbieri" class="markup--anchor markup--p-anchor" title="Gato Barbieri">Gato Barbieri</a> and <a href="https://en.wikipedia.org/wiki/Johan_Cruyff" data-href="https://en.wikipedia.org/wiki/Johan_Cruyff" class="markup--anchor markup--p-anchor">Johan Cruyff</a> passed away, or when SQL Server was made <a href="https://blogs.microsoft.com/blog/2016/03/07/announcing-sql-server-on-linux/" data-href="https://blogs.microsoft.com/blog/2016/03/07/announcing-sql-server-on-linux/" class="markup--anchor markup--p-anchor">available in Linux</a>, or when <a href="https://en.wikipedia.org/wiki/AlphaGo" data-href="https://en.wikipedia.org/wiki/AlphaGo" class="markup--anchor markup--p-anchor">Google AlphaGo</a> beat a Go champion, or when the <a href="http://panamapapers.sueddeutsche.de/en/" data-href="http://panamapapers.sueddeutsche.de/en/" class="markup--anchor markup--p-anchor" title="Panama Papers website">Panama Papers</a> and the <a href="http://185.100.87.84" data-href="http://185.100.87.84" class="markup--anchor markup--p-anchor" title="Turkish Citizenship Database">Turkish Citizenship Database</a> were leaked the same day, or when <a href="http://www.macrumors.com/2016/04/07/google-possibly-adopting-swift-for-android/" data-href="http://www.macrumors.com/2016/04/07/google-possibly-adopting-swift-for-android/" class="markup--anchor markup--p-anchor">Google considered using Swift for Android for the first time</a>, or as the last year in which people enjoyed this useless thing called privacy.</p>
  572. <p name="cffd" id="cffd" class="graf--p graf-after--p">We will be three years away from the <a href="https://en.wikipedia.org/wiki/Year_2038_problem" data-href="https://en.wikipedia.org/wiki/Year_2038_problem" class="markup--anchor markup--p-anchor">Year 2038 Problem</a> and people will be really nervous about it.</p>
  573. <p name="a220" id="a220" class="graf--p graf-after--p">Of course I do not know what will happen 19 years from now, but I can tell you three things that will happen for sure:</p>
  574. <ol class="postList"><li name="dae2" id="dae2" class="graf--li graf-after--p">Somebody will ask a question in Stack Overflow about how to filter email addresses using regular expressions.</li><li name="f5a1" id="f5a1" class="graf--li graf-after--li">Somebody will release a new JavaScript framework.</li><li name="d199" id="d199" class="graf--li graf-after--li">Somebody will build something cool on top of LLVM.</li></ol>
  575. <p name="51df" id="51df" class="graf--p graf-after--li">And maybe you will remember this talk with a smile.</p>
  576. <p name="c24e" id="c24e" class="graf--p graf-after--p">Thank you so much for your attention.</p>
  577. </article>
  578. </section>
  579. <nav id="jumpto">
  580. <p>
  581. <a href="/david/blog/">Accueil du blog</a> |
  582. <a href="https://medium.com/@akosma/being-a-developer-after-40-3c5dd112210c">Source originale</a> |
  583. <a href="/david/stream/2019/">Accueil du flux</a>
  584. </p>
  585. </nav>
  586. <footer>
  587. <div>
  588. <img src="/static/david/david-larlet-avatar.jpg" loading="lazy" class="avatar" width="200" height="200">
  589. <p>
  590. Bonjour/Hi!
  591. Je suis <a href="/david/" title="Profil public">David&nbsp;Larlet</a>, je vis actuellement à Montréal et j’alimente cet espace depuis 15 ans. <br>
  592. Si tu as apprécié cette lecture, n’hésite pas à poursuivre ton exploration. Par exemple via les <a href="/david/blog/" title="Expériences bienveillantes">réflexions bimestrielles</a>, la <a href="/david/stream/2019/" title="Pensées (dés)articulées">veille hebdomadaire</a> ou en t’abonnant au <a href="/david/log/" title="S’abonner aux publications via RSS">flux RSS</a> (<a href="/david/blog/2019/flux-rss/" title="Tiens c’est quoi un flux RSS ?">so 2005</a>).
  593. </p>
  594. <p>
  595. Je m’intéresse à la place que je peux avoir dans ce monde. En tant qu’humain, en tant que membre d’une famille et en tant qu’associé d’une coopérative. De temps en temps, je fais aussi des <a href="https://github.com/davidbgk" title="Principalement sur Github mais aussi ailleurs">trucs techniques</a>. Et encore plus rarement, <a href="/david/talks/" title="En ce moment je laisse plutôt la place aux autres">j’en parle</a>.
  596. </p>
  597. <p>
  598. Voici quelques articles choisis :
  599. <a href="/david/blog/2019/faire-equipe/" title="Accéder à l’article complet">Faire équipe</a>,
  600. <a href="/david/blog/2018/bivouac-automnal/" title="Accéder à l’article complet">Bivouac automnal</a>,
  601. <a href="/david/blog/2018/commodite-effondrement/" title="Accéder à l’article complet">Commodité et effondrement</a>,
  602. <a href="/david/blog/2017/donnees-communs/" title="Accéder à l’article complet">Des données aux communs</a>,
  603. <a href="/david/blog/2016/accompagner-enfant/" title="Accéder à l’article complet">Accompagner un enfant</a>,
  604. <a href="/david/blog/2016/senior-developer/" title="Accéder à l’article complet">Senior developer</a>,
  605. <a href="/david/blog/2016/illusion-sociale/" title="Accéder à l’article complet">L’illusion sociale</a>,
  606. <a href="/david/blog/2016/instantane-scopyleft/" title="Accéder à l’article complet">Instantané Scopyleft</a>,
  607. <a href="/david/blog/2016/enseigner-web/" title="Accéder à l’article complet">Enseigner le Web</a>,
  608. <a href="/david/blog/2016/simplicite-defaut/" title="Accéder à l’article complet">Simplicité par défaut</a>,
  609. <a href="/david/blog/2016/minimalisme-esthetique/" title="Accéder à l’article complet">Minimalisme et esthétique</a>,
  610. <a href="/david/blog/2014/un-web-omni-present/" title="Accéder à l’article complet">Un web omni-présent</a>,
  611. <a href="/david/blog/2014/manifeste-developpeur/" title="Accéder à l’article complet">Manifeste de développeur</a>,
  612. <a href="/david/blog/2013/confort-convivialite/" title="Accéder à l’article complet">Confort et convivialité</a>,
  613. <a href="/david/blog/2013/testament-numerique/" title="Accéder à l’article complet">Testament numérique</a>,
  614. et <a href="/david/blog/" title="Accéder aux archives">bien d’autres…</a>
  615. </p>
  616. <p>
  617. On peut <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">échanger par courriel</a>. Si éventuellement tu souhaites que l’on travaille ensemble, tu devrais commencer par consulter le <a href="http://larlet.com">profil dédié à mon activité professionnelle</a> et/ou contacter directement <a href="http://scopyleft.fr/">scopyleft</a>, la <abbr title="Société coopérative et participative">SCOP</abbr> dont je fais partie depuis six ans. Je recommande au préalable de lire <a href="/david/blog/2018/cout-site/" title="Attention ce qui va suivre peut vous choquer">combien coûte un site</a> et pourquoi je suis plutôt favorable à une <a href="/david/pro/devis/" title="Discutons-en !">non-demande de devis</a>.
  618. </p>
  619. <p>
  620. Je ne traque pas ta navigation mais mon
  621. <abbr title="Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33.184162340">hébergeur</abbr>
  622. conserve des logs d’accès.
  623. </p>
  624. </div>
  625. </footer>
  626. <script type="text/javascript">
  627. ;(_ => {
  628. const jumper = document.getElementById('jumper')
  629. jumper.addEventListener('click', e => {
  630. e.preventDefault()
  631. const anchor = e.target.getAttribute('href')
  632. const targetEl = document.getElementById(anchor.substring(1))
  633. targetEl.scrollIntoView({behavior: 'smooth'})
  634. })
  635. })()
  636. </script>