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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793
  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>What can a software developer do about climate change? (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://codewithoutrules.com/2019/09/10/software-developers-climage-change/">
  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. What can a software developer do about climate change? (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://codewithoutrules.com/2019/09/10/software-developers-climage-change/">Source originale du contenu</a></h3>
  445. <p>Pines and firs are dying across the Pacific Northwest, fires rage across the Amazon, it&rsquo;s the hottest it&rsquo;s ever been in Paris—climate change is impacting the whole planet, and things are not getting any better.
  446. <strong>You want to do something about climate change, but you&rsquo;re not sure what.</strong></p>
  447. <p>If you do some research you might encounter an essay by Bret Victor—<a href="http://worrydream.com/ClimateChange/">What can a technologist do about climate change?</a>
  448. There&rsquo;s a whole pile of good ideas in there, and it&rsquo;s worth reading, but the short version is that you can use technology to &ldquo;create options for policy-makers.&rdquo;</p>
  449. <p>Thing is, policy-makers aren&rsquo;t doing very much.</p>
  450. <p><strong>So this essay isn&rsquo;t about technology, because technology isn&rsquo;t the bottleneck right now, it&rsquo;s about policy and politics what you can do about it.</strong>
  451. It&rsquo;s still written for software developers, because that&rsquo;s who I write for, but also because software developers often have access to two critical catalysts for political change.
  452. And it&rsquo;s written for software developers in the US, because that&rsquo;s where I live, and because the US is a big part of the problem.</p>
  453. <p>But before I go into what you can do, let me tell you the story of a small success I happened to be involved in, a small step towards a better future.</p>
  454. <h2>Infrastructure and the status quo</h2>
  455. <p>About a year ago I spent some of my mornings handing out pamphlets to bicycle riders.
  456. I looked like an idiot: in order to show I was one of them I wore my bike helmet, which is weirdly shaped and the color of fluorescent yellow snot.</p>
  457. <p>After finding an intersection with plenty of bicycle riders and a long red light that forces them to stop, I would do the following:</p>
  458. <ol>
  459. <li>When the light turns red, step into the street and hand out the pamphlet.</li>
  460. <li>Keep an eye out for the light changing to green so that I didn&rsquo;t get run over by moving cars.</li>
  461. <li>Twiddle my thumbs waiting for the next light cycle.</li>
  462. </ol>
  463. <p>It was boring, and not very glamorous.</p>
  464. <p>I was one of just many volunteers, and besides gathering signatures we also held rallies, had conversations with city councilors and staff, wrote emails, talked at city council meetings—it was a process.
  465. The total effort took a couple of years (and I only joined in towards the end)—but in the end we succeeded.</p>
  466. <p><strong>We succeeded in having the council pass a short ordinance, a city-level law in the city of Cambridge, Massachusetts.</strong>
  467. The ordinance states that whenever a road that was supposed to have protected bike lanes (per the city&rsquo;s Bike Plan) was rebuilt from scratch, it would have those lanes built by default.</p>
  468. <p>Now, clearly this ordinance isn&rsquo;t going to solve climate change.
  469. In fact, <em>nothing</em> Cambridge does as a city will solve climate change, because there&rsquo;s only so much impact 100,000 people can have on greenhouse gas emissions.</p>
  470. <p><strong>But while in some ways this ordinance was a tiny victory in a massive war, if we take a step back it&rsquo;s actually more important than it seems.</strong>
  471. In particular, this ordinance has three effects:</p>
  472. <ol>
  473. <li>Locally, safer bike infrastructure means more bicycle riders, and fewer car drivers. That reduces emissions—a little.</li>
  474. <li>Over time, more bicycle riders can kick off a positive feedback cycle, reducing emissions even more.</li>
  475. <li>Most significantly, local initiatives spread to other cities—kicking off these three effects in those other cities.</li>
  476. </ol>
  477. <p>Let&rsquo;s examine these effects one by one.</p>
  478. <h2>Effect #1: Fewer cars, less emissions</h2>
  479. <p>About 43% of the greenhouse gas emissions in Massachusetts are due to transportation; for the US overall it&rsquo;s 29% (<a href="https://www.mass.gov/service-details/ma-ghg-emission-trends">ref</a>).
  480. And that means cars.</p>
  481. <p><strong>The reason people in the US mostly drive cars is because all the transportation infrastructure is built for cars.</strong>
  482. No bike lanes, infrequent, slow and non-existent buses, no trains&hellip;
  483. Even in cities, where other means of transportation are feasible, the whole built infrastructure sends the very strong message that cars are the only reasonable way to get around.</p>
  484. <p>If we focus on bicycles, our example at hand, the problem is that riding a bicycle can be dangerous—mostly because of all those cars!
  485. But if you get rid of the danger and build good infrastructure—dedicated protected bike lanes that separate bicycle riders from those dangerous cars—then bicycle use goes up.</p>
  486. <p>Consider what Copenhagen achieved between 2008 and 2017 (<a href="https://kk.sites.itera.dk/apps/kk_pub2/pdf/1962_fe6a68275526.pdf">ref</a>):</p>
  487. <table><thead>
  488. <tr>
  489. <th></th>
  490. <th>2008</th>
  491. <th>2018</th>
  492. </tr>
  493. </thead><tbody>
  494. <tr>
  495. <td># of seriously injured cyclists</td>
  496. <td>121</td>
  497. <td>81</td>
  498. </tr>
  499. <tr>
  500. <td>% who residents who feel secure cycling</td>
  501. <td>51</td>
  502. <td>77</td>
  503. </tr>
  504. <tr>
  505. <td>% who cycle to work/school</td>
  506. <td>37</td>
  507. <td>49</td>
  508. </tr>
  509. </tbody></table>
  510. <p><strong>With safer infrastructure for bicycles, perception of safety goes up, and people bike more and drive less.</strong>
  511. Similarly, if you have frequent, fast, and reliable buses and trains, people drive less.
  512. And that means less carbon emissions.</p>
  513. <p>In Copenhagen the number of kilometers driven by cars was flat or slightly down over those 10 years—whereas in the US, it&rsquo;s up 6-7% (<a href="https://fred.stlouisfed.org/series/M12MTVUSM227NFWA">ref</a>).</p>
  514. <h2>Effect #2: A positive feedback loop</h2>
  515. <p>The changes in Copenhagen are a result of a plan the city government there adopted in 2011 (<a href="https://en.wikipedia.org/wiki/Cycling_in_Copenhagen#Current_bicycle_strategy_(2011%E2%80%932025)">ref</a>): they&rsquo;re the result of a policy action.
  516. And the political will was there in part because there were <em>already</em> a huge number of bicycle riders.
  517. So it&rsquo;s a positive feedback loop, and a good one.</p>
  518. <p>Let&rsquo;s see how this is happening in Cambridge:</p>
  519. <ul>
  520. <li>Cambridge has a slowly growing number of bicycle rider.
  521. This means more political support for bike infrastructure—if there&rsquo;s a group that can mobilize that support!</li>
  522. <li>With the ordinance, more roads will have safe infrastructure.
  523. For example, one neighborhood previously had a safe route only in one direction; the other direction will be rebuilt with a protected bike lane in 2020.</li>
  524. <li>With safer infrastructure, there will be more bicycle riders, and therefore more support by residents for safer infrastructure.
  525. Merely having support isn&rsquo;t enough, of course, and I&rsquo;ll get back to that later on.</li>
  526. </ul>
  527. <p>If Copenhagen can reach 50% of residents with a bicycle commute, so can Cambridge—and the ordinance is a good step in that direction.</p>
  528. <h2>Effect #3: The idea spreads</h2>
  529. <p>The Cambridge ordinance passed in April 2019—and the idea is spreading elsewhere:</p>
  530. <ul>
  531. <li>The California State Assembly is voting on a law with similar provisions (<a href="https://www.calbike.org/our_initiatives/streets_for_everyone/complete_streets/">ref</a>), through a parallel push by Calbike.</li>
  532. <li>In May 2019 a Washington DC Council member introduced a bill which among other points has the same rebuild requirements as the Cambridge ordinance (<a href="https://usa.streetsblog.org/2019/05/08/d-c-bill-would-make-protected-bike-lanes-mandatory/">ref</a>).</li>
  533. <li>The Seattle City Council passed an ordinance, parts of which were literally copy/pasted from the Cambridge ordinance (<a href="https://www.seattletimes.com/seattle-news/transportation/seattle-city-council-approves-new-bike-lane-requirements-calls-for-more-bike-lane-funding/">ref</a>).</li>
  534. </ul>
  535. <p>All of this is the result of local advocacy—but I&rsquo;ve no doubt Cambridge&rsquo;s example helped.
  536. It&rsquo;s always easier to be the second adopter.
  537. And the examples from these larger localities will no doubt inspire other groups and cities, spreading the idea even more.</p>
  538. <h2>Change requires politics</h2>
  539. <p>Bike infrastructure is just an example, not a solution—but there are three takeaways from this story that I&rsquo;d like to emphasize:</p>
  540. <ul>
  541. <li>If you want to change policy, you need to engage in politics.</li>
  542. <li>Politics are easier to impact on the local level.</li>
  543. <li>Local policy changes have a cumulative, larger-scale impact.</li>
  544. </ul>
  545. <p>By politics I don&rsquo;t just mean having an opinion or voting for a candidate, but rather engaging in the process of how policy decisions are made.</p>
  546. <p><strong>Merely having an opinion doesn&rsquo;t change anything.</strong>
  547. For example, two-thirds of Cambridge residents support building more protected bike lanes (<a href="https://www.cambridgebikesafety.org/2019/03/19/two-thirds-cambridge-residents-protected-want-protected-bike-lanes/">ref</a>).
  548. But that doesn&rsquo;t mean that many protected lanes are getting built—the neighboring much smaller city of Somerville is building far more than Cambridge.</p>
  549. <p>The only reason the city polled residents about bike lanes is because, one suspects, all the fuss we&rsquo;d been making—emails, rallies, meetings, city council policy orders—made the city staff wonder if bike infrastructure really had a lot of public support or not.</p>
  550. <p><strong>Voting results in some change, but not enough.</strong>
  551. Elected officials and government staff have lots and lots of things to worry about—if they&rsquo;re not being pressured to focus on a particular issue, it&rsquo;s likely to fall behind.</p>
  552. <p>What&rsquo;s more, the candidates you get to vote for have to get on the ballot, and to do that they need money (for advertising, hiring staff, buying supplies).
  553. Lacking money, they need volunteer time.</p>
  554. <p>And it&rsquo;s much easier for a small group of rich people to provide that support to the candidates <em>they</em> want—so by the time you&rsquo;re voting, you only get to choose between candidates that have been pre-vetted (I highly recommend reading <em><a href="https://www.press.uchicago.edu/ucp/books/book/chicago/G/bo3624792.html">The Golden Rule</a></em> to understand how this works on a national level).</p>
  555. <h2>What you can do: Become an activist</h2>
  556. <p><strong>In the end power is social.</strong>
  557. Power comes from people showing up to meetings, people showing up for rallies, people going door-to-door convincing other people to vote for the right person or support the right initiative, people blocking roads and making a fuss.</p>
  558. <p>And that takes time and money.</p>
  559. <p>So if you want to change policy, you need to engage in politics, with time and money:</p>
  560. <ul>
  561. <li>You can volunteer for candidates&rsquo; political campaigns, as early as possible in the process.
  562. Too many good candidates get filtered out before they even make the ballot.
  563. That doesn&rsquo;t mean you can just go home after the election—that&rsquo;s when the real work of legislation starts, which means activism is just as important.</li>
  564. <li>You can volunteer with groups either acting on a particular issue (transportation, housing policy) or more broadly on climate change.</li>
  565. <li>Also useful is donating money to political campaigns, both candidates and issue-based organizations.</li>
  566. </ul>
  567. <p>Here are some policies you might be interested in:</p>
  568. <ul>
  569. <li>Transportation policy determines what infrastructure is built—and the current infrastructure favors privately-owned cars over public transportation and bicycles.</li>
  570. <li>Zoning laws determine what gets built and where.
  571. Denser construction would reduce the need for long trips, and more efficient buildings (ideally net zero carbon) would reduce emissions from heating and cooling.</li>
  572. <li>Moving utilities from private to public ownership, so they can focus on the public good and not on profit.</li>
  573. <li>Bulk municipal contracts for electricity: this allows for cheaper electricity for all residents, and to have green energy as the default.</li>
  574. <li>State-level carbon restrictions or taxes.</li>
  575. </ul>
  576. <h2>Where you should do it: Start local</h2>
  577. <p>If you are going to become an activist, the local level is a good starting point.</p>
  578. <ul>
  579. <li><strong>An easier first step:</strong> Cambridge has 100,000 residents—city councilors are routinely elected with just 2500 votes.
  580. That means impacting policies here is much easier than at a larger scale.
  581. Not only does this mean faster results, it also means you&rsquo;re less likely to get discouraged and give up—you can see the change happening.</li>
  582. <li><strong>Direct impact:</strong> A significant amount of greenhouse gas emissions in the US are due to causes that are under control of local governments.</li>
  583. <li><strong>Wider impact:</strong> As in the case of Cambridge&rsquo;s ordinance, local changes can be adopted elsewhere.</li>
  584. </ul>
  585. <p>Of course, local organizing is just the starting point for creating change on the global level.
  586. But you have to start somewhere.
  587. And global change is a lot easier if you have thousands of local organizations supporting it.</p>
  588. <h2>It&rsquo;s a good to be a software developer</h2>
  589. <p><strong>Let&rsquo;s get back to our starting point—you&rsquo;re paid to write software, you want to do something about climate change.</strong>
  590. As a software developer you likely have access to the inputs needed to make political campaigns succeed—both candidate-based and issue-based:</p>
  591. <ul>
  592. <li><strong>Money:</strong> Software developers tend to get paid pretty well, certainly better than most Americans.
  593. Chances are you have some money to spare for political donations.</li>
  594. <li><strong>Time:</strong> This one is a bit more controversial, but in my experience many programmers can get more free time if they want to.</li>
  595. </ul>
  596. <p><strong>If you don&rsquo;t have children or other responsibilities, you can work a 40-hour workweek, leaving you time for other things.</strong>
  597. Before I got married I worked full-time and went to a local adult education college half-time in the evenings: it was a lot of work, but it was totally doable.
  598. <a href="/2019/04/03/setting-boundaries-at-work/">Set boundaries at your job</a>, and you&rsquo;ll have at least some free time for activism.</p>
  599. <p><strong>You can also negotiate a shorter workweek, which is possible in part because software developers are in such demand.</strong>
  600. I&rsquo;ve done this, I&rsquo;ve <a href="/2018/01/08/part-time-programmer/">interviewed people who have done it</a>, I&rsquo;ve found <a href="/2019/05/09/part-time-software-developer/">many random people on the Internet who have done it</a>—it is possible.</p>
  601. <p>If you need help doing it yourself, I&rsquo;ve written <a href="/3dayweekend/">a book to help you negotiate a shorter workweek</a>.
  602. <strong>If you want to negotiate a shorter workweek so you have time for political activism, you can use the code <code>FIGHTCLIMATECHANGE</code> to <a href="/3dayweekend/">get the book</a> for 60% off.</strong></p>
  603. <h2>Some common responses</h2>
  604. <h3>&ldquo;There will never be the political will to make this happen&rdquo;</h3>
  605. <p>Things do change, for better and for worse, and sometimes unexpectedly.
  606. To give a couple of examples:</p>
  607. <ul>
  608. <li>In Ireland, the Catholic Church went from all-powerful to losing badly, most recently with Ireland legalizing abortion.</li>
  609. <li>The anti-gay-marriage <em>Defense of Marriage Act</em> was passed by veto-proof majorities of Congress in 1996—and eight years later in 2004 the first legal gay marriage took place right here in Cambridge, MA.</li>
  610. </ul>
  611. <p>The timelines for <a href="https://en.wikipedia.org/wiki/Timeline_of_same-sex_marriage_in_the_United_States">gay marriage</a> and <a href="https://en.wikipedia.org/wiki/Timeline_of_cannabis_laws_in_the_United_States">cannabis legalization</a> in the US are illuminating: these things didn&rsquo;t just happen, it was the result of long, sustained activist efforts, much of it at the local level.</p>
  612. <p>Local changes do make a difference.</p>
  613. <h3>&ldquo;Politics is awful and broken&rdquo;</h3>
  614. <p>So are all our software tools, and somehow we manage to get things done!</p>
  615. <h3>&ldquo;I don&rsquo;t like your policy suggestions, we should do X instead&rdquo;</h3>
  616. <p>No problem, find the local groups that promote your favorite policies and join them.</p>
  617. <h3>&ldquo;The necessary policies will never work because of problem Y&rdquo;</h3>
  618. <p>Same answer: join and help the local groups working on Y.</p>
  619. <h3>&ldquo;It&rsquo;s too late, the planet is doomed no matter what we do&rdquo;</h3>
  620. <p>Perhaps, but it&rsquo;s very hard to say.
  621. So we&rsquo;re in Pascal&rsquo;s Wager territory here: given even a tiny chance there is something we can do, we had better do our best to make it happen.</p>
  622. <p>And even if humanity really is doomed, there&rsquo;s always the hope that someday a hyperintelligent species of cockroach will inherit the Earth.
  623. And when cockroach archaeologists try to reconstruct our history, I would like them to be able to say, loosely translated from their complex pheromone-and-dancing system of communication: &ldquo;These meatsacks may not have been as good at surviving as us cockroaches—but at least they tried!&rdquo;</p>
  624. <h2>Time to get started</h2>
  625. <p>If you find this argument compelling—that policy is driven by power, and that power requires social mobilization—then it&rsquo;s up to you to take the next step.
  626. Find a local group or candidate pushing for a policy you care about, and show up for the next meeting.</p>
  627. <p>And the meeting after that.</p>
  628. <p>And then go to the rally.</p>
  629. <p>And knock on doors.</p>
  630. <p>And make some friends, and make some changes happen.</p>
  631. <p>Some of the work is fun, some of it is boring, but there&rsquo;s plenty to do—time to get started!</p>
  632. </article>
  633. </section>
  634. <nav id="jumpto">
  635. <p>
  636. <a href="/david/blog/">Accueil du blog</a> |
  637. <a href="https://codewithoutrules.com/2019/09/10/software-developers-climage-change/">Source originale</a> |
  638. <a href="/david/stream/2019/">Accueil du flux</a>
  639. </p>
  640. </nav>
  641. <footer>
  642. <div>
  643. <img src="/static/david/david-larlet-avatar.jpg" loading="lazy" class="avatar" width="200" height="200">
  644. <p>
  645. Bonjour/Hi!
  646. 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>
  647. 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>).
  648. </p>
  649. <p>
  650. 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>.
  651. </p>
  652. <p>
  653. Voici quelques articles choisis :
  654. <a href="/david/blog/2019/faire-equipe/" title="Accéder à l’article complet">Faire équipe</a>,
  655. <a href="/david/blog/2018/bivouac-automnal/" title="Accéder à l’article complet">Bivouac automnal</a>,
  656. <a href="/david/blog/2018/commodite-effondrement/" title="Accéder à l’article complet">Commodité et effondrement</a>,
  657. <a href="/david/blog/2017/donnees-communs/" title="Accéder à l’article complet">Des données aux communs</a>,
  658. <a href="/david/blog/2016/accompagner-enfant/" title="Accéder à l’article complet">Accompagner un enfant</a>,
  659. <a href="/david/blog/2016/senior-developer/" title="Accéder à l’article complet">Senior developer</a>,
  660. <a href="/david/blog/2016/illusion-sociale/" title="Accéder à l’article complet">L’illusion sociale</a>,
  661. <a href="/david/blog/2016/instantane-scopyleft/" title="Accéder à l’article complet">Instantané Scopyleft</a>,
  662. <a href="/david/blog/2016/enseigner-web/" title="Accéder à l’article complet">Enseigner le Web</a>,
  663. <a href="/david/blog/2016/simplicite-defaut/" title="Accéder à l’article complet">Simplicité par défaut</a>,
  664. <a href="/david/blog/2016/minimalisme-esthetique/" title="Accéder à l’article complet">Minimalisme et esthétique</a>,
  665. <a href="/david/blog/2014/un-web-omni-present/" title="Accéder à l’article complet">Un web omni-présent</a>,
  666. <a href="/david/blog/2014/manifeste-developpeur/" title="Accéder à l’article complet">Manifeste de développeur</a>,
  667. <a href="/david/blog/2013/confort-convivialite/" title="Accéder à l’article complet">Confort et convivialité</a>,
  668. <a href="/david/blog/2013/testament-numerique/" title="Accéder à l’article complet">Testament numérique</a>,
  669. et <a href="/david/blog/" title="Accéder aux archives">bien d’autres…</a>
  670. </p>
  671. <p>
  672. 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>.
  673. </p>
  674. <p>
  675. Je ne traque pas ta navigation mais mon
  676. <abbr title="Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33.184162340">hébergeur</abbr>
  677. conserve des logs d’accès.
  678. </p>
  679. </div>
  680. </footer>
  681. <script type="text/javascript">
  682. ;(_ => {
  683. const jumper = document.getElementById('jumper')
  684. jumper.addEventListener('click', e => {
  685. e.preventDefault()
  686. const anchor = e.target.getAttribute('href')
  687. const targetEl = document.getElementById(anchor.substring(1))
  688. targetEl.scrollIntoView({behavior: 'smooth'})
  689. })
  690. })()
  691. </script>