{"id":17361298,"url":"https://github.com/inside/dotjs2016-recap","last_synced_at":"2026-02-17T14:02:35.248Z","repository":{"id":66934744,"uuid":"75743975","full_name":"inside/dotjs2016-recap","owner":"inside","description":"The 2016 dotJS recap","archived":false,"fork":false,"pushed_at":"2016-12-06T15:53:33.000Z","size":3,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-05T09:56:15.118Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/inside.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-12-06T15:23:10.000Z","updated_at":"2016-12-06T16:35:27.000Z","dependencies_parsed_at":"2023-02-22T19:30:15.681Z","dependency_job_id":null,"html_url":"https://github.com/inside/dotjs2016-recap","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/inside/dotjs2016-recap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inside%2Fdotjs2016-recap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inside%2Fdotjs2016-recap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inside%2Fdotjs2016-recap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inside%2Fdotjs2016-recap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/inside","download_url":"https://codeload.github.com/inside/dotjs2016-recap/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inside%2Fdotjs2016-recap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29546751,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T13:00:00.370Z","status":"ssl_error","status_checked_at":"2026-02-17T12:57:14.072Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-15T19:32:29.324Z","updated_at":"2026-02-17T14:02:35.230Z","avatar_url":"https://github.com/inside.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# DotJS 2016\n\nFirst Round\n===========\n\n1. **Nolan Lawson** (IE team) talked about how browsers evolved and explained\n   how service workers are implemented in Microsoft Edge. Service workers are\n   useful for developing PWA and their top features are:\n    * Offline support\n    * Push notifications\n    * Background synchronization\n\n    http://egde.ms is a place where you can download Virtual Machine with\n    different versions of IE.\n\n\n2. **Ada Rose Edwards** talked about VR on the web. It could be used for real\n   estate classified ads.\n\n\n3. **Christophe Porteneuve** talked about Babel and what's the current support\n   of browsers for es2015:\n   https://tdd.github.io/dotjs2016-babel-tuning/#/native-support\n\n   His slides are available here: https://tdd.github.io/dotjs2016-babel-tuning/\n\n   Babels configuration in either done in the .babelrc file or directly in the\n   package.json under the babel key.\n\n   Important things to remember:\n\n   * A babel plugin is a piece of code that transpiles a new langage construct\n   to an older langage construct.\n   For example, this plugin compiles ES2015 arrow functions to ES5:\n   https://babeljs.io/docs/plugins/transform-es2015-arrow-functions/\n\n   * A preset is a group of plugins. Babel provides different presets so you\n   don't have to assemble your own set of plugins.\n   The es2015 preset includes all transformation plugins for es2015, while the\n   es2016 preset only contains the diff from es2015 to es2016. Meaning, if you\n   want to code in es2016, you'll have to install both presets.\n\n   * The react preset is needed to code in react.\n\n   * The latest preset is recommended, it includes all finished proposals of\n   es2015, es2016 and es2017.\n\n   * The env preset lets babel choose which plugin is needed for the specific\n   environment.\n\n4. Guy Bedford talks about SystemJS. It's an universal dynamic module loader.\n   His work is essentially towards module loading optimization like tree shaking.\n   It can load web assembly files.\n\n   It's not a tool we are interested in since we opted for webpack.\n\nLightning talks\n===============\n\n1. **Overview of React Redux RxJS**. RxJS brings cancellation (the ajax abort\n   method).\n\n2. **npm i -g lint-filter**\n   From npmjs.com:\n   \"Only show style errors of things that have changed since master. This\n   support tools that support exporting output in checkstyle format. This can\n   be useful if you want to convert a project gradually towards a new config,\n   (e.g. adding a new rule from the latest release of your linter). Another\n   case were this is beneficial is were you do not want to break a build when\n   updating the linter.\"\n\n3. **NoSQL injection in mongodb**\n   There's a NoSQL injection vuln in mongodb (can't remember what version). The\n   solution for avoiding this type of vuln is to validate data. You're a cool\n   kid if you're using the Hapi node server, because data validation is\n   included. If you're using express, you can use joi + celebrate for data\n   validation.\n\n4. **Moox talks about phenomic**, a Modern static* website generator based on\n   the React and Webpack ecosystem.\n\nSecond Round\n============\n\n1. **@zeke** talks about the npm ecosystem. Here are a list of tools for making our\n   developers lives easier:\n\n   * http://ghub.io/ Redirect to a npm package's GitHub page, if available.\n   * http://ghub.io/npmrc Switch between different .npmrc files with ease and\n     grace.\n   * https://github.com/zeke/npm-hub A browser extension for exploring npm\n     dependencies on GitHub repos http://npmhub.org\n   * http://octolinker.github.io/ Links together, what belongs together.\n   * https://github.com/VictorBjelkholm/trymodule Puts you in a REPL to easily\n     try the module you want to test\n   * https://www.npmjs.com/package/ghwd Open the GitHub URL that matches your\n     shell's current branch and working directory. Works for BitBucket and\n     GitLab too.\n   * https://www.npmjs.com/package/ntl Npm Task List: Interactive cli menu to\n     list/run npm tasks\n   * https://www.npmjs.com/package/dependent-packages Offline collection of the\n     dependents and devDependents of every package in the npm registry.\n   * http://electron.atom.io/userland/\n\n2. **Evan You** talks about vue.js. Its render optimisation is done by push instead\n   of pull used by React (one must implement shouldComponentUpdate). He's also\n   using Patreon as funding system.\n\nLightning talks\n===============\n\n1. **Webvim**, a vim distribution for web development.\n   http://webvim.org/\n\n2. **Bit operators explained**\n\n3. **[Nuxt.js](https://github.com/nuxt/nuxt.js)** It can do dynamic routing\n   based on the filesystem as an api.\n   * /pages/home.js =\u003e /home\n   * /pages/about.js =\u003e /about\n   etc...\n\n   Backendless hosting: nuxt generates html files and when the data changes it\n   calls AWS lambda which regenerates the pages.\n\nThird Round\n===========\n\n1. NodeJS Core contributor **Fedor Indutny** talks about memory layout.\n\n2. LiveJS, Tim and Sam demonstrate how to create music using the gameboy\n   advanced, node, the browser, LEDs and the fog machine. They use:\n   * ModV\n   * Nerd disco\n   * The midi web api and the novation launch control\n\n3. **Guillermo Rauch** talks about universal js. He uses now.sh for deployment\n   and talks about the next.js framework.\n   * [Next.js](https://github.com/zeit/next.js) uses the file system as an api\n   for the routing. Dynamic routing is not supported yet.\n   * It uses isomorphic-fetch.\n   * Can do prefetching with the Link component: \u0026lt;Link\u0026gt;\u0026lt;a href=\"...\"\u0026gt;foo\u0026lt;/a\u0026gt;\u0026lt;/Link\u0026gt;\n   * Code splitting is out of the box.\n   * The \u0026lt;Head\u0026gt; component can update elements in the \u0026lt;head\u0026gt; (much like Helmet?).\n   * The 'next/css' module does css in js.\n\n4. Igor Minar, angular lead, talks about being open minded in the open source\nworld.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finside%2Fdotjs2016-recap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finside%2Fdotjs2016-recap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finside%2Fdotjs2016-recap/lists"}