Thoughts & Musings

Encrypted Media Extensions (EME): Decrypting Protected Video in the Browser
Encrypted Media Extensions (EME) is the web platform’s standard way to enable playback of encrypted, DRM-protected media in the browser. Rather than handling decryption directly, your application coordinates with the browser’s Content Decryption Module (CDM): it requests access to a media key system via Navigator.requestMediaKeySystemAccess(), attaches the resulting MediaKeys to a specific HTMLMediaElement with setMediaKeys(), and then manages the message exchange for licenses/keys through a MediaKeySession. When the media element encounters encrypted initialization data, it fires an encrypted event (represented by MediaEncryptedEvent), and the CDM can emit session messages (MediaKeyMessageEvent) that your app relays to whatever key infrastructure you use. EME is widely available across modern browsers and is typically restricted to secure contexts (HTTPS).

A Quick Tour of the Web Encoding API
Modern web apps live at the boundary between JavaScript strings and raw bytes. The Web Encoding API exists to make that boundary explicit and safe: it lets you encode a string into UTF‑8 bytes and decode bytes back into text. Importantly, these operations aren’t symmetrical—encoding targets UTF‑8, while decoding can interpret UTF‑8 and many legacy encodings. Alongside the synchronous TextEncoder and TextDecoder, the platform also provides stream-based variants for processing text incrementally as data arrives.

EditContext API: A New Foundation for Custom Web Editors
The experimental EditContext API gives developers a new foundation for building custom rich text editors by separating text input and selection from rendering. Instead of relying on contenteditable, you attach an EditContext to a focusable element and manage your own text model, selection state, and UI updates—while still receiving browser-grade events for typing, caret movement, and IME composition. This demo highlights the core event flow and why character bounds matter for accurate input UI, especially in custom-rendered editors.

Device Posture API: Detect Foldable Screen Posture on Web
The Device Posture API helps web apps adapt to foldable devices by detecting whether a screen is continuous or folded and reacting to posture changes.

Device Orientation Events: Turning Phone Tilt into UI (A Tiny Demo Walkthrough)
Device Orientation Events let web apps read a phone’s real-world tilt and rotation. This demo streams alpha/beta/gamma values, smooths jitter, and maps motion to a 3D box—while handling HTTPS requirements and iOS permission prompts.

Right‑sizing experiences with the Device Memory API
Use the Device Memory API to bucket users by RAM and serve right‑sized images and effects. It’s a coarse, privacy‑friendly hint for progressive enhancement.