Xah Web Dev Blog

You, put in a few bucks in my patreon. https://www.patreon.com/xahlee Thank you.

SVG: Animation

a sketchy intro on the state of svg animation.

learn web animation in 3 minutes.

Web Animation

Turn Off JavaScript in Firefox, Without Addon

You can now temporarily turn off JavaScript in Firefox (version quantum, as of 2017-12-07)

firefox quantum turn off js 2017 12 07 49740
Firefox off JavaScript (2017-12-07)
(Press F12, click the gear icon on top right.)

If JavaScript is disabled, svg animation (the “animation” tag) won't work. ( this is firefox, as of 2017-12-07 ) But CSS animation still does.

JS: Object.prototype.toString (minor update)

JavaScript Basics (major update. Now, ES2015 based)

Ask Xah, emacs, JavaScript, keyboard, 2017-12-01 at https://www.patreon.com/posts/15656041

JS: Reflect.get (updated)

JS: Reflect.defineProperty (updated)

JS: Object.isExtensible (updated)

JS: Number.prototype.toPrecision (updated)

JS: undefined (updated)

JS: Delete operator (updated)

JavaScript in Depth update 2017-11-16

JavaScript in Depth

new version is out. Sent to previous buyers.

if you don't have it, get it.

Liket it? Put $5 at patreon.

Or, Buy JavaScript in Depth

List of HTML Self-Closing Tags (updated)

some idiot added new.target to #JavaScript

updated, some basics html and css.

JS: String Code Unit vs Code Point (updated)

Updates of JS tutorial to ES2015, status.

in the past 2 months, the following have been updated to ES2015

  1. JS: Intro to Event-Based Programing
  2. JS: Random Range Function
  3. JS: Round/Truncate Number
  4. JS: Tagged Template String
  5. JS: Object Basics
  6. JS: Array.prototype.forEach
  7. JS: Clone, Deep Copy Object/Array
  8. JS: Array.prototype.slice
  9. JS: SVG Clock
  10. JS: Array-Like Object to Array
  11. JS: Array.prototype.sort
  12. JS: Array.prototype.some
  13. JS: Array.prototype.every
  14. JS: Array.prototype.reduce
  15. JS: Array.prototype.reduceRight
  16. JS: Array.from
  17. JS: Array.prototype.toString
  18. JS: Compare Array Equality
  19. JS: Test Equality of Objects
  20. JS: Sparse Array
  21. JS: Array.prototype.indexOf
  22. JS: Array.prototype.lastIndexOf
  23. JS: Array.prototype.join
  24. JS: Array.prototype.concat
  25. JS: Array Constructor
  26. JS: Flatten Nested Array
  27. JS: Create Array
  28. JS: Random Array Element, Randomize Array
  29. Node.js Tutorial
  30. JS: Understand JS Array
  31. JS: Array Basics
  32. JS: Array.prototype.map
  33. JS: Range Function for Array
  34. JS: Array.prototype.splice
  35. JS: the Set Object Tutorial
  36. JS: Set Object
  37. JS: Set.prototype
  38. JS: Set.prototype.add
  39. JS: Set.prototype.clear
  40. JS: Set.prototype.delete
  41. JS: Set.prototype.has
  42. DOM: Set Element's Attribute Value
  43. JS: Function Call, Apply, Bind
  44. JS: Function.prototype.call
  45. JS: Reflect.apply
  46. JS: Function.prototype.apply
  47. JS: Get Max/Min Value of Array
  48. JS: Reflect.getOwnPropertyDescriptor
  49. JS: Reflect.isExtensible
  50. JS: Object.isExtensible
  51. JS: Reflect.preventExtensions
  52. JS: Object.preventExtensions

there are still about 100 pages needs to be updated. Mostly remove use of var

then, am going to write a JS ES2015 tutorial for beginner. That is, a ES2015 version of JavaScript Basics

put in a few bucks in my patreon. https://www.patreon.com/xahlee Thank you.

following pages updated to ES2015

  1. JS: Object.keys
  2. JS: Object.getOwnPropertyNames
  3. JS: Object.getOwnPropertySymbols
  4. JS: Reflect.ownKeys
  5. JS: Date Tutorial
  6. JS: Date.now
  7. JS: List Properties

CSS: Text Shadow (updated)

CSS: Round Corners (updated)

revamped many pages at Visual Dictionary of CSS

Why JavaScript is the Suckest Language

JavaScript is truly the suckest language. There's no easy way to test object equality, makes you change algorithms fundamentally.

and JavaScript syntax, is the worst possible. Code written by others is not readable.

why is js syntax unreadable? because

it has function expression, but it does not have the usual function programing languages's design to control it. JS is mostly imperative and prototype OOP, incompatible with function programing. Thus, you have passing function as argument and return function. This feature by itself, if used without fine control, creates incomprehensible code (e.g. y-combinator). (e.g. haskell has types, composition, currying, etc, to control complex function semantics.)

And JavaScript syntax is C/Java-like, provides no syntactic support for function programing. The passing function style becomes unreadable quickly. (e.g. lisp solves syntax problem by almost pure nested parenthesis, and haskell etc provides linear syntax (no parenthesis), and syntax that support semantic features such as currying, lambda, nesting, etc.)

Further, JavaScript design that was trying to emulate Java, created the following entities with exceptionally convoluted semantics.

See also: JS: Test Equality of Objects

been thinking, to fix the js problem by removing some features, we'd gain a lot by,

  1. Ban the keyword function.
  2. Ban the keyword this.
  3. Ban the keyword new.
  4. Ban the use of property key "prototype".
  5. Ban the use of property key "constructor".
  6. Ban the keyword delete. [see JS: Delete operator]
  7. Ban the keyword var.
  8. Ban ==.
js suckest language  50182
js suckest language

the spam trend of past 3 years, is people who email you nicely and elaborately, citing your site and ask you to link to them.

Note, you get that only if your site is popular.

See also: Web Spam, Scam, Blackhat SEO Collection

and there's a scum job site plorepbqref (rot13 to see name), somehow they can always tell if you clicked their email spam read in gmail.

what's the technique to see if your spam email has been opened? (no click link) I thought Google gmail blocked all tracking gifs and indirected stuff.

JavaScript sort, is fragile, and most complex, convoluted


today's js: http://xahlee.info/js/js_array_sort.html

js plot ellipse 2017 08 29 1380
JavaScript plotting ellipse

in September, i'll be blogging on my patreon account only.


If you like my stuff, i hope you patreon me there.

JavaScript tutorial updates today

the following are updated to ES2015

if you like it, become my patreon https://www.patreon.com/xahlee

JavaScript tutorial updates https://www.patreon.com/posts/14058806

CSS: Data URI Scheme (minor update)

JS: Object.setPrototypeOf (minor update)

JS: Image Rollover (updated to ES2015)

JavaScript tutorial pages updated to ES2015

The following, are updated to ES2015. Mostly, change var to let or const.

  1. JS: Object.freeze
  2. JS: Convert String to Number
  3. JS: String Constructor
  4. JS: Object.freeze
  5. JS: Convert String to Number
  6. JS: Number.prototype
  7. JS: Function.prototype.call
  8. JS: Array.isArray
  9. JS: RegExp.prototype.test
  10. JS: Array.prototype.length
  11. JS: Array.prototype.reverse
  12. JS: Map.prototype.set
  13. JS: Pop-up New Window
  14. What's the Difference Between jQuery Selector and DOM querySelectorAll()?
  15. DOM: What Does Live Object Mean?
  16. JS: Boolean Constructor
  17. DOM: Basic DOM Methods
  18. JS: Array.prototype.fill
  19. JS: Property Descriptor
  20. JS: Object.prototype.hasOwnProperty

JS: Falling Snow Effect (updated to ES2015)

JS: String Constructor (minor update)

to my patreon supporters, new article https://www.patreon.com/posts/13809835

JS: Class Tutorial (major update)

js destructure array c2cf6
js destructure array
js destructure object f66a0
js destructure object

JS: Destructuring Assignment (major update)

put in a few bucks in my patreon. https://www.patreon.com/xahlee Thank you.

Google has a new JavaScript style guide, covering es2015, at https://google.github.io/styleguide/jsguide.html

Full Page Screenshot in Browser

Standard Web Fonts (added screenshot for correct illustration)

js escape unicode tears 2017 07 24
JavaScript escape unicode tears

JS: escape (major rewrite)

JS: String.prototype.charAt (updated)

JS: String Code Unit vs Code Point (minor update)

JS: Convert Character To/From Codepoint (minor update)

JS: String.fromCharCode (minor update)

JS: Function Declaration vs Function Expression (updated for ES2015)

JS: var Name Scope (updated for ES2015)

JS: var/function Order (minor update)

Netflix switched from Java to node.js

[• Making Netflix.com Faster By Kristofer Baxter. At https://medium.com/netflix-techblog/making-netflix-com-faster-f95d15f2e972 , Accessed on 2017-07-01 ]

paypal switched from Java to node.js

paypal java to nodejs 2013 81643
paypal java to nodejs
paypal java vs nodejs speed 78513
paypal java vs nodejs speed

[• Node.js at PayPal By Jeff Harrell. At https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/ , Accessed on 2017-07-01 ]

Google trying to prevent user downloading brave browser?

google evil brave browser 2017 06 12
Google trying to prevent user downloading brave browser. Other deb file, such as skype, no such warning. 2017-06-12. According to brave, they imply that's due to they failed to sign the file. See https://twitter.com/brianbondy/status/874421743779229696 and https://github.com/brave/browser-laptop/issues/9408

temp, working on

  1. 3 JS: RegExp.prototype.exec
  2. 3 JS: String.prototoype.match
  3. 3 JS: String.prototoype.search
  4. 3 JS: Replace All Children, createDocumentFragment

Ask me question on patreon