As of ESPHome
2026.1.0, you can flash a Nordic nRF52840 board from a plain ESPHome YAML file and have it join Zigbee2MQTT
or Home Assistant ZHA
as a native Zigbee end device, with no custom C firmware, no Nordic Connect SDK project, and no coordinator reflashing involved. Pick a Seeed XIAO nRF52840, a Nordic nRF52840-DK, or an Adafruit Feather nRF52840 Sense, drop an nrf52: block and a zigbee: component into your config, add a binary sensor, sensor, or switch, and run esphome run sensor.yaml. The device pairs like any other battery-powered Zigbee sensor, sleeps between reports, and receives firmware updates over Zigbee itself through the new OTA path. ESPHome 2026.2 adds time sync and a number entity type on top, so end devices can timestamp their own readings and expose adjustable thresholds.
Build a Zigbee End Device With ESPHome and the Nordic nRF52
Split-Pane Markdown Editor in 100 Lines JS
You can build a fully working Markdown editor with synchronized live preview using a <textarea> for input, the marked
library for parsing, and a debounced input event listener that re-renders on every keystroke. The whole thing fits in under 100 lines of vanilla JavaScript and CSS, with no build tools
, no framework, and no npm install. One index.html file, one CDN script tag, double-click to open in a browser, and you are writing Markdown with a rendered preview next to your cursor.
Fix Zigbee Drops: Routers, Channels, and Placement
The Short Answer
When Zigbee devices keep dropping, the culprit is almost always the mesh topology, not the sensors. Add mains-powered routers every 10 to 15 meters. Move the coordinator away from the WiFi router and any USB 3.0 port. Switch to Zigbee channel 15, 20, or 25 to dodge WiFi. Use the network map in Zigbee2MQTT or ZHA to spot weak links. Roughly 90% of complaints trace back to three things: too few routers, a coordinator in an RF hot zone, and a Zigbee channel that clashes with WiFi.
Low-Profile Mechanical Switches Compared: Kailh Choc v2, Cherry MX Low Profile, and Gateron KS-33
Picking Between Three Incompatible Low-Profile Worlds
Touch typists who want the most familiar desktop feel in a slim chassis should reach for Cherry MX Low Profile 2.0 . Its 3.2mm travel and 45gf actuation keep the tactile vocabulary of full-size MX intact, and it accepts standard MX-stem keycaps. Competitive gamers chasing the shortest travel win with Gateron KS-33 or Gateron Low Profile 2.0: 3.0mm travel, a 1.3mm actuation point, and a linear 45gf spring weight, shipping on boards like the Keychron K5 Max and NuPhy Air75 V2 . Custom-build enthusiasts soldering ergonomic splits such as the Corne, Ferris Sweet, or Ploopy Adept should buy Kailh Choc v2: it is the only switch in this trio that fits 18x17mm Choc-spaced PCBs while accepting MX-profile keycaps, something neither Cherry nor Gateron can offer on those boards.
Smart Pet Feeder for $20: Ditch $150 commercial feeders
Yes, you can build a smart pet feeder for under $25. It uses an ESP32, a continuous rotation servo, and a 3D-printed auger, driven by ESPHome and Home Assistant . You get scheduled meals, set portion sizes, a “feed now” button on your phone, and a full feeding log. Commercial feeders like PetSafe ($100 to $150) and PETLIBRO ($65 to $160) charge a premium for the same features. This guide covers the hardware, wiring, firmware, and safety steps that make the build reliable.
Cross-Document View Transitions: Animate Between Full Page Navigations Without JavaScript
Drop @view-transition { navigation: auto; } into your stylesheet. Modern browsers will then cross-fade between same-origin page loads on their own. No SPA router, no fetch() interception, no JS framework needed. Add view-transition-name to shared elements like hero images, headings, or nav bars, and the browser morphs them between separate HTML documents. This works today in Chrome 126+, Edge 126+, and Safari 18.2+. Firefox support lands through the Interop 2026
push.






