Melin's Blog

Latest posts

See all posts
  • JS Video Decoding: An Out-of-the-Box Review of JSMpeg and Broadway
    Last week, I tried Vap , a player that can use WebGL to decode and play videos, and wrote an article documenting the experience. Someone commented under that article: if all I w...
  • Safari Does Not Support Built-In Custom Elements: A Practical Compatibility Strategy
    Based on Zhang Xinxu’s discussion of Safari’s Web Components limitations, with practical implementation examples from the demo code. Safari supports autonomous custom elements ,...
  • Understanding `Promise.all()`, `Promise.race()`, and `Promise.any()`
    JavaScript gives us several ways to coordinate multiple asynchronous operations. Three of the most useful are Promise.all() , Promise.race() , and Promise.any() . They all accep...
  • Triggering a JavaScript `change` Event When Assigning `input.value`
    In the browser, user interaction and JavaScript assignment are not treated the same way. When a user types, pastes, or drops text into an , the browser fires an input event. Whe...
  • Front-End News: `setHTML()` and `Element.startViewTransition()` Are Now Supported
    Two DOM APIs quietly became much more interesting recently: Element.setHTML() and Element.startViewTransition() . The first gives the browser a native way to insert HTML while a...
© 2026 • Melin
Press Esc or click anywhere to close