---
title: "NaNNaNNaNNaN Batman"
publication: "JavaScript Weekly"
issue: 573
published_at: "2022-01-21"
canonical_url: "https://javascriptweekly.com/issues/573"
---

Plus the JS edition of SICP, Vue 3.0 to become the default, and future JS features. |        

#​573 — January 21, 2022 

[Unsubscribe](https://javascriptweekly.com/leave/*|UID|*)|[Read on the Web](https://javascriptweekly.com/issues/573)   

⁉️ If the subject of this issue has got you confused, it's a reference to the infamous [Wat video](https://www.destroyallsoftware.com/talks/wat) of 2012 which we mention a couple of times in the issue today :-)
__
_Peter Cooper, your editor_  

JavaScript Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/igqni4z6jhls1bzqifxu.jpg)](https://www.executeprogram.com/blog/typescript-features-to-avoid)  

[TypeScript Features to Avoid?](https://www.executeprogram.com/blog/typescript-features-to-avoid) — Remember Gary Bernardt’s [Wat](https://www.destroyallsoftware.com/talks/wat) video from ten years ago? He created the [Execute Program](https://www.executeprogram.com/) dev education platform and now reflects on four things in TypeScript to seriously think about: enums, namespaces, decorators, and `private`. It's opinionated - naturally! 

Execute Program   

[Deeply Copying Objects with `structuredClone()`](https://2ality.com/2022/01/structured-clone.html) — Dr. Axel looks at the new kid on the block when it comes to copying JavaScript objects: `structuredClone`. Supported in cutting edge versions of most browsers and in Node.js and Deno, it’s time to be aware of this. 

Dr. Axel Rauschmayer   [![\](https://copm.s3.amazonaws.com/c195ee88.jpg)](https://frontendmasters.com/courses/xstate-v2/?utm_source=javascriptweekly&utm_medium=email&utm_content=xstate) 

[New Course on State Machines with XState by David Khourshid](https://frontendmasters.com/courses/xstate-v2/?utm_source=javascriptweekly&utm_medium=email&utm_content=xstate) — If you build large JavaScript apps and want to stop running into weird edge cases, you'll want to learn state machines. Spend your time modeling app logic clearly and robustly. 

Frontend Masters sponsor   

[A JavaScript-Flavored Introduction to Monads](https://github.com/getify/monio/blob/master/MONADS.md#fp--monads) — _“I know a lot of people roll their eyes”_ says Kyle about yet another monad explainer, but.. if you liked Kyle’s work with [You Don’t Know JS](https://github.com/getify/You-Dont-Know-JS) or you want something JavaScript oriented and with concrete takeaways for your own code, this is for you. 

Kyle Simpson   

[Remix vs Next.js](https://remix.run/blog/remix-vs-next) — [Remix](https://remix.run/) is the new kid on the JavaScript full-stack framework block so naturally it gets compared to other things like Next.js (and even Ruby on Rails). Bear in mind that this comparison comes from the Remix team themselves but is well written while, of course, promoting the Remix approach. 

Ryan Florence   

[Deno 1.18 Released: The (Other) Modern JS/TS Runtime](https://deno.com/blog/v1.18) — Deno continues stepping forward. 1.18 boasts the culmination of a big effort to fully implement the [Web Cryptography API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API), upgrades V8 to version 9.8, improves startup time, and more. 

Deno Blog   

**IN BRIEF:** 

- [Vue 3 is to become the new 'default' version](https://blog.vuejs.org/posts/vue-3-as-the-new-default.html) of Vue.js as of February 7.
- The [▶️ Wat video](https://www.destroyallsoftware.com/talks/wat) poking fun at JavaScript's dynamically typed ways came out 10 years ago – and it still raises a chuckle.
- 📗 Classic computer science book _Structure and Implementation of Computer Programs_ (a.k.a. SICP) has always used the Lisp dialect of Scheme but [a JavaScript edition](https://mitpress.mit.edu/books/structure-and-interpretation-computer-programs-1) is out in April and can now be preordered.
- Interested in headless content management? This Dot Media is running [a live 'State of the Web' on headless CMSes](https://www.thisdotmedia.com/state-of-the-web/#/) next Tuesday (25th). 

**RELEASES:** 

[ESLint 8.7](https://eslint.org/blog/2022/01/eslint-v8.7.0-released) — Quality control for your JavaScript.
 [zx 4.3.0](https://github.com/google/zx) — Niceties for shell scripting with Node.js.
 [react-markdown 8.0](https://github.com/remarkjs/react-markdown/releases/tag/8.0.0) — Markdown rendering component for React.
 [Capacitor 3.4](https://github.com/ionic-team/capacitor) — Cross platform native app framework.
 [Axios 0.25.0](https://github.com/axios/axios/releases/tag/v0.25.0) – Long standing HTTP client library.
 [better-sqlite3 7.5](https://github.com/JoshuaWise/better-sqlite3) – Node.js SQLite library. Now supports strict tables.    

💻 Jobs  

[Software Engineers (Frontend, Backend, Fullstack, DevOps)](https://birdeatsbug.com/jobs/?source=cooperpress-javascript-weekly&utm_medium=javascript-weekly&utm_campaign=job-listing) — Help Bird Eats Bug to develop tools that combine screen recording with a record of steps to reproduce bugs, apply now. 
Bird Eats Bug   

[Senior React Engineer @ Nebulab (Remote)](https://nebulab.com/careers?gh_src=0e293b12teu) — Join our distributed team and build high-volume eCommerce applications in a workplace made by developers for developers. 
Nebulab   

[Find JavaScript Jobs with Hired](https://hired.com/join/?utm_source=newsletter&utm_medium=sponsor&utm_campaign=%28b2c%29%28l-all%29%28r-all%29%28cooper-javascriptweekly%29&utm_content=find-your-next-job) — Create a profile on Hired to connect with hiring managers at growing startups and Fortune 500 companies. It's free for job-seekers. 
Hired    

📒 Articles & Tutorials  

[Replacing jQuery with Umbrella JS](https://www.bennadel.com/blog/4184-replacing-jquery-110kb-with-umbrella-js-8kb.htm#main-content) — A little case study of sorts here, looking at replacing once dominant jQuery with the notably smaller [Umbrella JS](https://umbrellajs.com/) — which has a similar API and plugin system but may help you break the ties. 

Ben Nadel   

[On Grouping Arrays with `.groupBy()` and `.groupByToMap()`](https://2ality.com/2022/01/array-grouping.html) — A helpful [proposal](https://github.com/tc39/proposal-array-grouping) to be aware of (and, perhaps, _support_) but it’s still going through the TC39 process. 

Dr. Axel Rauschmayer   

[Colors NPM: What Happened? Offending Commit Adds an Infinite Loop](https://snyk.io/blog/open-source-npm-packages-colors-faker/?utm_campaign=AOM-UA-2022&utm_medium=Paid-Email&utm_source=Javascript-Weekly&utm_content=NPM-Colors) — Are you leveraging the widely popular npm package colors? Take these countermeasures today to avoid a DOS vuln. 

Snyk sponsor   

[From ES6 to Scala: The Basics](https://www.scala-js.org/doc/sjs-for-js/es6-to-scala-part1.html) — If you want to give [Scala.js](https://www.scala-js.org/) a go as an alternative to JavaScript for some frontend work, knowing some Scala would certainly help... 

Scala.js Team   

[The Optional Chaining Operator, “Modern” Browsers, and My Mom](https://blog.jim-nielsen.com/2022/a-web-for-all/) — Some unsupported JavaScript syntax caused an entire website to fail on two seperate hardware devices. A story of device obsolescence, accessibility, and progressive enhancement. 

Jim Nielsen   

[Good Advice on JSX Conditionals](https://thoughtspile.github.io/2022/01/17/jsx-conditionals/) — _“Time after time I shoot myself in the foot with JSX conditionals. In this article, I look at the trickier corners of JSX conditionals, and share some tips for staying safe”_. 

Vladimir Klepov   

[Add Less](https://css-tricks.com/add-less/) — As developers, we frequently add tools and libraries to projects, but it can often lead to overloading an app with more than it really needs. So: add less, says Cassidy. 

Cassidy Williams   

[Build a Mobile-Responsive Telehealth Pager App Using Stream’s Chat API](https://getstream.io/blog/build-a-medical-pager-app/?utm_source=JavascriptWeekly&utm_medium=Newsletter_Content_Ad&utm_content=Developer&utm_campaign=JavascriptWeekly_Jan2022_MedicalPagerMessagingApp) 

Stream sponsor   

[How to Extract Secrets from an Electron App](https://www.staszewski.me/how-to-extract-secrets-from-unsafe-electron-app/) — The point is it’s so simple that you really shouldn’t be leaving such secrets in there anyway. 

Kamil Staszewski   

[Embedding JavaScript Snippets in C++ with Emscripten](https://web.dev/emscripten-embedding-js-snippets/) 
Ingvar Stepanyan   

[Multiline Mode (`/m`) in JavaScript Regular Expressions](https://www.stefanjudis.com/today-i-learned/multiline-mode-in-javascript-regular-expressions/) 
Stefan Judis  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/sn0l2009ciea3l9oqzgr.jpg)](https://tinybase.org/)  

[TinyBase: A Library for Structuring App State](https://tinybase.org/) — If you want a bit more database-esque structure around the management of state in your apps, this is worth a look. The [demos](https://tinybase.org/demos/) are notable for how well explained they are so do check those out. [GitHub repo](https://github.com/tinyplex/tinybase). 

James Pearce   

[Sharer.js 0.5: Lightweight Social Sharing Components for 20+ Platforms](https://ellisonleao.github.io/sharer.js/) — No dependencies too. We last linked this _six years ago_, so it’s about time, especially as it’s still being updated 😄 

Ellison Leao   

[Studio 3T Manages Your Data, While You Wrestle Your App into Shape](https://studio3t.com/download?utm_source=cooperpress&utm_medium=newsletter&utm_campaign=jsjan21) — Studio 3T's full suite of MongoDB tools lets you develop with data even faster and turn queries into code. 

Studio 3T sponsor   

[Vanilla List: A Directory of Vanilla JavaScript Plugins](https://vanillalist.top/) — _"Because lighter plugins mean lighter sites."_ Note that the plugins themselves may have dependencies, just not stuff like jQuery, React, etc. 

Glitch.Family   

[mo.js 1.3: A Motion Graphics Toolbelt for the Web](https://mojs.github.io/) — Use a declarative API to get full control over animations. Check the [getting started tutorial](https://mojs.github.io/tutorials/getting-started.html#setup-mo-js-in-your-project) to see how it works from a code POV. 

Oleg Solomka, Xavier Foucrier, Jonas Sandstedt   

[Rockpack 2.0: An Alternative React App Builder](https://github.com/AlexSergey/rockpack) — Like _Create React App_ the goal is to get project setup time as low as possible, but Rockpack holds some different opinions around how far to take things and packs in a lot of ideas including, now, server side rendering. 

Alex Sergey   

[vue-easytable: A Flexible Table/Data Grid Component for Vue.js 2.x](https://github.com/Happy-Coding-Clans/vue-easytable) — This is one of those times where [the demo](https://happy-coding-clans.github.io/vue-easytable/#/en/demo) will sell it to you or not. 

happy coding clans   

[React Calendar 3.6: The 'Ultimate' Calendar for Your React App](https://projects.wojtekmaj.pl/react-calendar/) — A popular, simple-styled calendar component for React apps, focused mostly on letting users pick dates. [GitHub repo](https://github.com/wojtekmaj/react-calendar). 

Wojciech Maj   

[rasterizeHTML.js: Render HTML Onto an HTML Canvas](http://cburgmer.github.io/rasterizeHTML.js/) 
Christoph Burgmer         

Published by [Cooperpress](https://cooperpress.com/) and edited by [Peter Cooper](https://twitter.com/peterc) 

'JavaScript' is a trademark of Oracle Corporation in the US
We are not endorsed by or affiliated with Oracle. 

[Change your email address](https://javascriptweekly.com/edit_subscription/*|UID|*) or [stop getting this newsletter](https://javascriptweekly.com/leave/*|UID|*). 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
