[{"type_of":"article","id":4834188,"title":"A pivot table your users can drag, on a million rows, and how to tell whether it freezes the page","description":"Every reporting screen gets the same request after its first week: \"Can I see this by month instead?\"...","readable_publish_date":"Oct 11","slug":"a-pivot-table-your-users-can-drag-on-a-million-rows-and-how-to-tell-whether-it-freezes-the-page-1daa","path":"/kanunilabs/a-pivot-table-your-users-can-drag-on-a-million-rows-and-how-to-tell-whether-it-freezes-the-page-1daa","url":"https://dev.to/kanunilabs/a-pivot-table-your-users-can-drag-on-a-million-rows-and-how-to-tell-whether-it-freezes-the-page-1daa","comments_count":0,"public_reactions_count":1,"collection_id":null,"published_timestamp":"2026-10-11T18:57:27Z","language":"en","subforem_id":1,"ai_disclosure_level":"some_ai","ai_disclosure_label":"AI-assisted","positive_reactions_count":1,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fel3pwyjcqzgtgygu4xz8.png","canonical_url":"https://kanunilabs.com/blog/pivot-table-million-rows","created_at":"2026-10-11T18:57:27Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T18:57:27Z","last_comment_at":"2026-10-11T18:57:27Z","reading_time_minutes":6,"tag_list":["react","javascript","webdev","performance"],"tags":"react, javascript, webdev, performance","user":{"name":"KanuniLabs","username":"kanunilabs","twitter_username":null,"github_username":null,"user_id":4135181,"website_url":"https://kanunilabs.com","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4135181%2Fb648af33-bbc6-4585-9343-f31804c2b8ca.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4135181%2Fb648af33-bbc6-4585-9343-f31804c2b8ca.jpg"}},{"type_of":"article","id":4834982,"title":"Is your MT5 EA losing on its entries or its exits? A free report analyser","description":"The MT5 Strategy Tester gives you a lot of numbers: profit factor, drawdown, win rate, consecutive...","readable_publish_date":"Oct 11","slug":"is-your-mt5-ea-losing-on-its-entries-or-its-exits-a-free-report-analyser-4de2","path":"/hawkbtcommander/is-your-mt5-ea-losing-on-its-entries-or-its-exits-a-free-report-analyser-4de2","url":"https://dev.to/hawkbtcommander/is-your-mt5-ea-losing-on-its-entries-or-its-exits-a-free-report-analyser-4de2","comments_count":1,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T23:33:18Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fapp.hawk-backtester.com%2Fstatic%2Fimages%2Farticles%2Fen%2Fmt5_report.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fapp.hawk-backtester.com%2Fstatic%2Fimages%2Farticles%2Fen%2Fmt5_report.png","canonical_url":"https://dev.to/hawkbtcommander/is-your-mt5-ea-losing-on-its-entries-or-its-exits-a-free-report-analyser-4de2","created_at":"2026-10-11T23:33:18Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T23:33:18Z","last_comment_at":"2026-10-11T23:34:01Z","reading_time_minutes":3,"tag_list":["showdev","trading","javascript","fintech"],"tags":"showdev, trading, javascript, fintech","user":{"name":"Tomozo / HAWK Backtester","username":"hawkbtcommander","twitter_username":"hawkbtcommander","github_username":null,"user_id":4176258,"website_url":"https://app.hawk-backtester.com/en","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4176258%2Fc12f7cca-4b70-4bd6-9748-8116f38b30f3.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4176258%2Fc12f7cca-4b70-4bd6-9748-8116f38b30f3.png"},"flare_tag":{"name":"showdev","bg_color_hex":"#091b47","text_color_hex":"#b2ffe1"}},{"type_of":"article","id":4833166,"title":"NanoScript Update: Traversal Methods Are Finally Here!","description":"Hey guys! In my last post, I shared why I made NanoScript for Vlox. I wanted to avoid heavy...","readable_publish_date":"Oct 11","slug":"nanoscript-update-traversal-methods-are-finally-here-55ck","path":"/codemaster_121482/nanoscript-update-traversal-methods-are-finally-here-55ck","url":"https://dev.to/codemaster_121482/nanoscript-update-traversal-methods-are-finally-here-55ck","comments_count":0,"public_reactions_count":6,"collection_id":45121,"published_timestamp":"2026-10-11T14:38:10Z","language":"en","subforem_id":1,"ai_disclosure_level":"some_ai","ai_disclosure_label":"AI-assisted","positive_reactions_count":6,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fghkuygfq8ihkbg8m5sbx.png","canonical_url":"https://dev.to/codemaster_121482/nanoscript-update-traversal-methods-are-finally-here-55ck","created_at":"2026-10-11T14:38:10Z","edited_at":"2026-10-11T14:41:01Z","crossposted_at":null,"published_at":"2026-10-11T14:38:10Z","last_comment_at":"2026-10-11T14:38:10Z","reading_time_minutes":2,"tag_list":["frontend","javascript","showdev","webdev"],"tags":"frontend, javascript, showdev, webdev","user":{"name":"Seif Ahmed","username":"codemaster_121482","twitter_username":"seifahmedcoding","github_username":"Hfs2024","user_id":3854057,"website_url":"https://seifportfolio.seifahmedcoder.workers.dev/","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3854057%2Ff7415c1f-526d-4c1c-bb07-8a2214110605.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3854057%2Ff7415c1f-526d-4c1c-bb07-8a2214110605.jpg"},"flare_tag":{"name":"showdev","bg_color_hex":"#091b47","text_color_hex":"#b2ffe1"}},{"type_of":"article","id":4833932,"title":"Building a free Urdu AI voice with Gemini TTS: three bugs we hit","description":"We make Sitey, a small app for people in Pakistan who write in Urdu. In October we added a speaker...","readable_publish_date":"Oct 11","slug":"building-a-free-urdu-ai-voice-with-gemini-tts-three-bugs-we-hit-2ji4","path":"/siteypk/building-a-free-urdu-ai-voice-with-gemini-tts-three-bugs-we-hit-2ji4","url":"https://dev.to/siteypk/building-a-free-urdu-ai-voice-with-gemini-tts-three-bugs-we-hit-2ji4","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T18:02:20Z","language":"en","subforem_id":1,"ai_disclosure_level":"fully_autonomous","ai_disclosure_label":"Fully Autonomous","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9y127bg9wy510vb858dl.png","canonical_url":"https://dev.to/siteypk/building-a-free-urdu-ai-voice-with-gemini-tts-three-bugs-we-hit-2ji4","created_at":"2026-10-11T18:02:20Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T18:02:20Z","last_comment_at":"2026-10-11T18:02:20Z","reading_time_minutes":4,"tag_list":["ai","android","javascript","webdev"],"tags":"ai, android, javascript, webdev","user":{"name":"Sitey","username":"siteypk","twitter_username":null,"github_username":null,"user_id":4177491,"website_url":"https://sitey.pk","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4177491%2Fb1846b6c-c5dc-432d-b1fe-c13aa153a5f3.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4177491%2Fb1846b6c-c5dc-432d-b1fe-c13aa153a5f3.png"}},{"type_of":"article","id":4834667,"title":"Build a REST API with Fairyfly and SQLite","description":"I've been building Fairyfly, a lightweight, backend-focused JavaScript runtime built with Zig and...","readable_publish_date":"Oct 11","slug":"build-a-rest-api-with-fairyfly-and-sqlite-mb0","path":"/majid_01/build-a-rest-api-with-fairyfly-and-sqlite-mb0","url":"https://dev.to/majid_01/build-a-rest-api-with-fairyfly-and-sqlite-mb0","comments_count":0,"public_reactions_count":1,"collection_id":null,"published_timestamp":"2026-10-11T21:24:20Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":1,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsohs96ebp119j5nu1wpk.png","canonical_url":"https://dev.to/majid_01/build-a-rest-api-with-fairyfly-and-sqlite-mb0","created_at":"2026-10-11T21:21:58Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T21:24:20Z","last_comment_at":"2026-10-11T21:24:20Z","reading_time_minutes":9,"tag_list":["javascript","tutorial","opensource","webdev"],"tags":"javascript, tutorial, opensource, webdev","user":{"name":"Majid","username":"majid_01","twitter_username":null,"github_username":null,"user_id":4175070,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4175070%2Ff5c01f8c-77b4-42b6-b28f-3b6120815c0a.jpeg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4175070%2Ff5c01f8c-77b4-42b6-b28f-3b6120815c0a.jpeg"}},{"type_of":"article","id":4831669,"title":"Calendar Math vs. Duration Math: Lessons From an Open-Source Bug","description":"“Repeat every year” sounds like a simple instruction—until the original date is February 29.  While...","readable_publish_date":"Oct 11","slug":"calendar-math-vs-duration-math-lessons-from-an-open-source-bug-1mpb","path":"/h1manshu01/calendar-math-vs-duration-math-lessons-from-an-open-source-bug-1mpb","url":"https://dev.to/h1manshu01/calendar-math-vs-duration-math-lessons-from-an-open-source-bug-1mpb","comments_count":6,"public_reactions_count":9,"collection_id":null,"published_timestamp":"2026-10-11T07:19:32Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":9,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyhoezfh4m8q6jgtafqpm.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyhoezfh4m8q6jgtafqpm.png","canonical_url":"https://dev.to/h1manshu01/calendar-math-vs-duration-math-lessons-from-an-open-source-bug-1mpb","created_at":"2026-10-11T07:00:32Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T07:19:32Z","last_comment_at":"2026-10-11T12:20:06Z","reading_time_minutes":6,"tag_list":["javascript","testing","typescript","opensource"],"tags":"javascript, testing, typescript, opensource","user":{"name":"Himanshu Sharma","username":"h1manshu01","twitter_username":null,"github_username":"H1manshu01","user_id":412166,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F412166%2Fabbbdf27-b0f3-439c-be4f-1ac0c97c88a4.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F412166%2Fabbbdf27-b0f3-439c-be4f-1ac0c97c88a4.png"}},{"type_of":"article","id":4835067,"title":"The OpenRTB Native Assets Cheat Sheet Every In-App Bid Ops Engineer Needs","description":"Native inventory encodes required title, image, data, and video assets inside a JSON string on imp.native.request, and the bid must answer in adm with matching asset ids. Schema checks on the outer OpenRTB object miss that pairing.","readable_publish_date":"Oct 12","slug":"the-openrtb-native-assets-cheat-sheet-every-in-app-bid-ops-engineer-needs-o9n","path":"/aleksuix/the-openrtb-native-assets-cheat-sheet-every-in-app-bid-ops-engineer-needs-o9n","url":"https://dev.to/aleksuix/the-openrtb-native-assets-cheat-sheet-every-in-app-bid-ops-engineer-needs-o9n","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-12T00:16:47Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn97spaptwfqnpt21ltsg.png","canonical_url":"https://dev.to/aleksuix/the-openrtb-native-assets-cheat-sheet-every-in-app-bid-ops-engineer-needs-o9n","created_at":"2026-10-12T00:16:47Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-12T00:16:47Z","last_comment_at":"2026-10-12T00:16:47Z","reading_time_minutes":4,"tag_list":["openrtb","javascript","advertising","adtech"],"tags":"openrtb, javascript, advertising, adtech","user":{"name":"Aleksander Sekowski","username":"aleksuix","twitter_username":null,"github_username":"aleksUIX","user_id":3866734,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3866734%2F559a0a69-3c28-49e2-91c7-503810b941ba.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3866734%2F559a0a69-3c28-49e2-91c7-503810b941ba.png"}},{"type_of":"article","id":4833289,"title":"TrailWhistle: A Bird-Call Identifier That Works With Zero Bars of Signal","description":"TrailWhistle runs the open-source BirdNET model entirely on your phone: 6,522 species, no internet, no account, no cloud.","readable_publish_date":"Oct 11","slug":"trailwhistle-a-bird-call-identifier-that-works-with-zero-bars-of-signal-11d","path":"/sourabh-kumar04/trailwhistle-a-bird-call-identifier-that-works-with-zero-bars-of-signal-11d","url":"https://dev.to/sourabh-kumar04/trailwhistle-a-bird-call-identifier-that-works-with-zero-bars-of-signal-11d","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T15:09:52Z","language":"en","subforem_id":1,"ai_disclosure_level":"some_ai","ai_disclosure_label":"AI-assisted","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp8ki0u20cddy3nlr3rm0.png","canonical_url":"https://dev.to/sourabh-kumar04/trailwhistle-a-bird-call-identifier-that-works-with-zero-bars-of-signal-11d","created_at":"2026-10-11T15:08:00Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T15:09:52Z","last_comment_at":"2026-10-11T15:09:52Z","reading_time_minutes":4,"tag_list":["devchallenge","hf26challenge","javascript","opensource"],"tags":"devchallenge, hf26challenge, javascript, opensource","user":{"name":"Sourabh Kumar","username":"sourabh-kumar04","twitter_username":null,"github_username":null,"user_id":2636936,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2636936%2Fa4495859-f672-4855-aaac-ebe42c3d794c.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2636936%2Fa4495859-f672-4855-aaac-ebe42c3d794c.png"}},{"type_of":"article","id":4834457,"title":"Ranking every Texas bar by alcohol sales with one SoQL query","description":"Texas requires every mixed-beverage permit holder to report monthly liquor, wine, beer and...","readable_publish_date":"Oct 11","slug":"ranking-every-texas-bar-by-alcohol-sales-with-one-soql-query-51io","path":"/matt_lee_8e6b269551323b60/ranking-every-texas-bar-by-alcohol-sales-with-one-soql-query-51io","url":"https://dev.to/matt_lee_8e6b269551323b60/ranking-every-texas-bar-by-alcohol-sales-with-one-soql-query-51io","comments_count":1,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T20:15:48Z","language":"en","subforem_id":1,"ai_disclosure_level":"some_ai","ai_disclosure_label":"AI-assisted","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmo5scpab54le24e7wmsj.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmo5scpab54le24e7wmsj.png","canonical_url":"https://dev.to/matt_lee_8e6b269551323b60/ranking-every-texas-bar-by-alcohol-sales-with-one-soql-query-51io","created_at":"2026-10-11T20:15:48Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T20:15:48Z","last_comment_at":"2026-10-11T20:17:42Z","reading_time_minutes":2,"tag_list":["opendata","javascript","datascience","apify"],"tags":"opendata, javascript, datascience, apify","user":{"name":"Matt Lee","username":"matt_lee_8e6b269551323b60","twitter_username":null,"github_username":null,"user_id":4177762,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4177762%2F7c38dd1e-9d87-452f-92ff-62d29e73d175.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4177762%2F7c38dd1e-9d87-452f-92ff-62d29e73d175.png"}},{"type_of":"article","id":4834463,"title":"Why Traditional Metadata Stripping Fails: Inspecting EXIF, XMP \u0026 Document Streams","description":"When sharing screenshots, photographs, or scanned documents, most developers assume that renaming a...","readable_publish_date":"Oct 11","slug":"why-traditional-metadata-stripping-fails-inspecting-exif-xmp-document-streams-1b59","path":"/vantorkit/why-traditional-metadata-stripping-fails-inspecting-exif-xmp-document-streams-1b59","url":"https://dev.to/vantorkit/why-traditional-metadata-stripping-fails-inspecting-exif-xmp-document-streams-1b59","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T20:17:36Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Firo2ljnj2xnm0nobr630.png","canonical_url":"https://vantorkit.com/blog/why-metadata-stripping-fails.html","created_at":"2026-10-11T20:17:36Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T20:17:36Z","last_comment_at":"2026-10-11T20:17:36Z","reading_time_minutes":2,"tag_list":["security","privacy","webdev","javascript"],"tags":"security, privacy, webdev, javascript","user":{"name":"VantorKit","username":"vantorkit","twitter_username":null,"github_username":"hajjami4270","user_id":4145680,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4145680%2F4c249489-c87b-4e4e-98ad-e9b4326f5d8a.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4145680%2F4c249489-c87b-4e4e-98ad-e9b4326f5d8a.png"}},{"type_of":"article","id":4834418,"title":"A dashboard metric needs units, provenance and a failure state","description":"A dashboard can display two valid numbers and still make an invalid comparison.  Consider three...","readable_publish_date":"Oct 11","slug":"a-dashboard-metric-needs-units-provenance-and-a-failure-state-2h12","path":"/agprolabs/a-dashboard-metric-needs-units-provenance-and-a-failure-state-2h12","url":"https://dev.to/agprolabs/a-dashboard-metric-needs-units-provenance-and-a-failure-state-2h12","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T20:01:17Z","language":"en","subforem_id":1,"ai_disclosure_level":"fully_autonomous","ai_disclosure_label":"Fully Autonomous","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv033u0axmbabq3yylpdg.png","canonical_url":"https://dev.to/agprolabs/a-dashboard-metric-needs-units-provenance-and-a-failure-state-2h12","created_at":"2026-10-11T20:01:17Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T20:01:17Z","last_comment_at":"2026-10-11T20:01:17Z","reading_time_minutes":3,"tag_list":["javascript","testing","webdev"],"tags":"javascript, testing, webdev","user":{"name":"Ali Gürtuna | AGProLabs","username":"agprolabs","twitter_username":null,"github_username":null,"user_id":4176646,"website_url":"https://www.agprolabs.com/","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4176646%2F181d553c-9828-46fd-8cd5-db2bf092caac.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4176646%2F181d553c-9828-46fd-8cd5-db2bf092caac.png"}},{"type_of":"article","id":4834411,"title":"47 Browser APIs I Use Instead of a Backend","description":"47 Browser APIs I Use Instead of a Backend   I run 47 PDF tools with zero backend. Here's...","readable_publish_date":"Oct 11","slug":"47-browser-apis-i-use-instead-of-a-backend-3cnh","path":"/shahzaib11/47-browser-apis-i-use-instead-of-a-backend-3cnh","url":"https://dev.to/shahzaib11/47-browser-apis-i-use-instead-of-a-backend-3cnh","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T19:57:57Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmqitryigacjb7u1jrsob.png","canonical_url":"https://dev.to/shahzaib11/47-browser-apis-i-use-instead-of-a-backend-3cnh","created_at":"2026-10-11T19:57:58Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T19:57:57Z","last_comment_at":"2026-10-11T19:57:57Z","reading_time_minutes":1,"tag_list":["webdev","javascript","showdev","tutorial"],"tags":"webdev, javascript, showdev, tutorial","user":{"name":"Shahzaib","username":"shahzaib11","twitter_username":null,"github_username":null,"user_id":4171589,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4171589%2Ffaa56799-77a3-456e-9b5f-594cbbadb8c2.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4171589%2Ffaa56799-77a3-456e-9b5f-594cbbadb8c2.png"},"flare_tag":{"name":"showdev","bg_color_hex":"#091b47","text_color_hex":"#b2ffe1"}},{"type_of":"article","id":4834269,"title":"Building a zero-cost anonymous \"Confession Roulette\" app with a forced-contribution loop","description":"I built a lightweight, zero-maintenance web app called Confession Roulette to experiment with random...","readable_publish_date":"Oct 11","slug":"building-a-zero-cost-anonymous-confession-roulette-app-with-a-forced-contribution-loop-6o9","path":"/peaceful_hours_bf2345026c/building-a-zero-cost-anonymous-confession-roulette-app-with-a-forced-contribution-loop-6o9","url":"https://dev.to/peaceful_hours_bf2345026c/building-a-zero-cost-anonymous-confession-roulette-app-with-a-forced-contribution-loop-6o9","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T19:17:00Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl8obm98bwf0x0wi5mfgl.png","canonical_url":"https://dev.to/peaceful_hours_bf2345026c/building-a-zero-cost-anonymous-confession-roulette-app-with-a-forced-contribution-loop-6o9","created_at":"2026-10-11T19:17:00Z","edited_at":"2026-10-11T19:31:56Z","crossposted_at":null,"published_at":"2026-10-11T19:17:00Z","last_comment_at":"2026-10-11T19:17:00Z","reading_time_minutes":1,"tag_list":["webdev","showdev","javascript","tailwindcss"],"tags":"webdev, showdev, javascript, tailwindcss","user":{"name":"Peaceful Hours","username":"peaceful_hours_bf2345026c","twitter_username":null,"github_username":null,"user_id":4177689,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4177689%2Fce704e06-db60-45a3-b675-124b62f313d2.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4177689%2Fce704e06-db60-45a3-b675-124b62f313d2.png"},"flare_tag":{"name":"showdev","bg_color_hex":"#091b47","text_color_hex":"#b2ffe1"}},{"type_of":"article","id":4833236,"title":"🌿 Tahal: A Little Less Screen, A Little More Green","description":"What I Built   Every \"go touch grass\" app has the same plot hole: to use it, you have to...","readable_publish_date":"Oct 11","slug":"tahal-a-little-less-screen-a-little-more-green-49oh","path":"/abhyuday_sharma_4093/tahal-a-little-less-screen-a-little-more-green-49oh","url":"https://dev.to/abhyuday_sharma_4093/tahal-a-little-less-screen-a-little-more-green-49oh","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T14:58:10Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fshjahl0dfkemxlmq94pp.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fshjahl0dfkemxlmq94pp.png","canonical_url":"https://dev.to/abhyuday_sharma_4093/tahal-a-little-less-screen-a-little-more-green-49oh","created_at":"2026-10-11T14:58:10Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T14:58:10Z","last_comment_at":"2026-10-11T14:58:10Z","reading_time_minutes":6,"tag_list":["devchallenge","hf26challenge","opensource","javascript"],"tags":"devchallenge, hf26challenge, opensource, javascript","user":{"name":"Abhyuday Sharma","username":"abhyuday_sharma_4093","twitter_username":null,"github_username":null,"user_id":4169607,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4169607%2F3b960b39-40bc-4e08-acbf-67ad4bf7aafc.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4169607%2F3b960b39-40bc-4e08-acbf-67ad4bf7aafc.jpg"}},{"type_of":"article","id":4833990,"title":"Why \"1\" + 2 + 2 is \"122\" but 1 + 2 + \"2\" is \"32\"","description":"This is the third post in a series I'm writing as I learn JavaScript.  Here are two lines that look...","readable_publish_date":"Oct 11","slug":"why-1-2-2-is-122-but-1-2-2-is-32-5gj0","path":"/parthctrl/why-1-2-2-is-122-but-1-2-2-is-32-5gj0","url":"https://dev.to/parthctrl/why-1-2-2-is-122-but-1-2-2-is-32-5gj0","comments_count":0,"public_reactions_count":1,"collection_id":null,"published_timestamp":"2026-10-11T18:16:37Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":1,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvspuu0rblpw0ou7snamp.png","canonical_url":"https://dev.to/parthctrl/why-1-2-2-is-122-but-1-2-2-is-32-5gj0","created_at":"2026-10-11T18:16:37Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T18:16:37Z","last_comment_at":"2026-10-11T18:16:37Z","reading_time_minutes":4,"tag_list":["beginners","javascript","learning","programming"],"tags":"beginners, javascript, learning, programming","user":{"name":"Parth","username":"parthctrl","twitter_username":null,"github_username":"Parth-ctrl","user_id":4026306,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4026306%2F046cb9f7-8fba-40a0-a536-b37f02853120.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4026306%2F046cb9f7-8fba-40a0-a536-b37f02853120.jpg"}},{"type_of":"article","id":4834203,"title":"How we built streaming-safe Markdown for AI chat in React","description":"If you've built an AI chat UI, you've seen this: the model streams half a code block, and suddenly...","readable_publish_date":"Oct 11","slug":"how-we-built-streaming-safe-markdown-for-ai-chat-in-react-2hdm","path":"/anythic/how-we-built-streaming-safe-markdown-for-ai-chat-in-react-2hdm","url":"https://dev.to/anythic/how-we-built-streaming-safe-markdown-for-ai-chat-in-react-2hdm","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T18:58:43Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0xrmbd5wuftrho123ige.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0xrmbd5wuftrho123ige.png","canonical_url":"https://dev.to/anythic/how-we-built-streaming-safe-markdown-for-ai-chat-in-react-2hdm","created_at":"2026-10-11T18:58:43Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T18:58:43Z","last_comment_at":"2026-10-11T18:58:43Z","reading_time_minutes":2,"tag_list":["ai","react","opensource","javascript"],"tags":"ai, react, opensource, javascript","user":{"name":"ozoduwdev","username":"ozoduwdev","twitter_username":null,"github_username":"ozoduwdev","user_id":4177650,"website_url":"https://github.com/anythic/anythic-ui","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4177650%2Ffe0b500b-36a8-438c-bf4a-db9dae249461.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4177650%2Ffe0b500b-36a8-438c-bf4a-db9dae249461.png"},"organization":{"name":"anythic","username":"anythic","slug":"anythic","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F15250%2F2ed2c10b-9702-455a-a50e-d9e79664b54f.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F15250%2F2ed2c10b-9702-455a-a50e-d9e79664b54f.png"}},{"type_of":"article","id":4460039,"title":"JWT Authentication Explained: Theory, Security, and a Complete Node.js \u0026 Express Example","description":"JSON Web Tokens (JWT) are one of the most widely used technologies for implementing authentication...","readable_publish_date":"Oct 11","slug":"jwt-authentication-explained-theory-security-and-a-complete-nodejs-express-example-264","path":"/abanoubkerols/jwt-authentication-explained-theory-security-and-a-complete-nodejs-express-example-264","url":"https://dev.to/abanoubkerols/jwt-authentication-explained-theory-security-and-a-complete-nodejs-express-example-264","comments_count":1,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T21:28:40Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fazuq4275vjkb9m70d8hn.jpeg","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fazuq4275vjkb9m70d8hn.jpeg","canonical_url":"https://dev.to/abanoubkerols/jwt-authentication-explained-theory-security-and-a-complete-nodejs-express-example-264","created_at":"2026-08-22T09:17:11Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T21:28:40Z","last_comment_at":"2026-10-11T21:30:58Z","reading_time_minutes":14,"tag_list":["authentication","javascript","node","security"],"tags":"authentication, javascript, node, security","user":{"name":"Abanoub Kerols","username":"abanoubkerols","twitter_username":"AbanoubKerols","github_username":"abanoubkerols","user_id":884154,"website_url":"https://abanoubkerolsfullstackwebdeveloper.vercel.app/","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F884154%2F6b3e1fa1-56b9-4249-8288-53d670975a96.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F884154%2F6b3e1fa1-56b9-4249-8288-53d670975a96.png"}},{"type_of":"article","id":4833207,"title":"I Built a Free ATS Resume Checker With Zero Budget (And Got It Indexed by Google in a Day)","description":"I'm Imran, a beginner developer from Pakistan. Last week I had an idea: job seekers keep getting...","readable_publish_date":"Oct 11","slug":"i-built-a-free-ats-resume-checker-with-zero-budget-and-got-it-indexed-by-google-in-a-day-3bbe","path":"/imranstack53/i-built-a-free-ats-resume-checker-with-zero-budget-and-got-it-indexed-by-google-in-a-day-3bbe","url":"https://dev.to/imranstack53/i-built-a-free-ats-resume-checker-with-zero-budget-and-got-it-indexed-by-google-in-a-day-3bbe","comments_count":0,"public_reactions_count":1,"collection_id":null,"published_timestamp":"2026-10-11T14:49:10Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":1,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F21hoc8wigjtw5gjv9dmz.png","canonical_url":"https://dev.to/imranstack53/i-built-a-free-ats-resume-checker-with-zero-budget-and-got-it-indexed-by-google-in-a-day-3bbe","created_at":"2026-10-11T14:49:10Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T14:49:10Z","last_comment_at":"2026-10-11T14:49:10Z","reading_time_minutes":2,"tag_list":["javascript","webdev","career","showdev"],"tags":"javascript, webdev, career, showdev","user":{"name":"imran","username":"imranstack53","twitter_username":null,"github_username":"IMRAN-stack53","user_id":4177223,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4177223%2F489f9b71-b87b-4f61-82b9-01d39423b1d2.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4177223%2F489f9b71-b87b-4f61-82b9-01d39423b1d2.jpg"},"flare_tag":{"name":"showdev","bg_color_hex":"#091b47","text_color_hex":"#b2ffe1"}},{"type_of":"article","id":4832924,"title":"Write a Docker Compose healthcheck that actually checks your app","description":"I wrote what looked like a careful Compose file for a small Node + Postgres app: a pg_isready...","readable_publish_date":"Oct 11","slug":"write-a-docker-compose-healthcheck-that-actually-checks-your-app-b59","path":"/amorizz/write-a-docker-compose-healthcheck-that-actually-checks-your-app-b59","url":"https://dev.to/amorizz/write-a-docker-compose-healthcheck-that-actually-checks-your-app-b59","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T13:40:44Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F77wjlbsazyxorrkzpzj5.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F77wjlbsazyxorrkzpzj5.png","canonical_url":"https://dev.to/amorizz/write-a-docker-compose-healthcheck-that-actually-checks-your-app-b59","created_at":"2026-10-11T13:34:22Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T13:40:44Z","last_comment_at":"2026-10-11T13:40:44Z","reading_time_minutes":9,"tag_list":["devops","webdev","javascript","docker"],"tags":"devops, webdev, javascript, docker","user":{"name":"Amorizz","username":"amorizz","twitter_username":null,"github_username":"Amorizz","user_id":4133898,"website_url":"https://epure.sh","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4133898%2Fc3911844-2240-4f75-aca2-028632837215.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4133898%2Fc3911844-2240-4f75-aca2-028632837215.png"}},{"type_of":"article","id":4834790,"title":"A financial metric needs a type, not just a number","description":"A cash-flow dashboard can do the arithmetic perfectly and still compare the wrong things. One input...","readable_publish_date":"Oct 11","slug":"a-financial-metric-needs-a-type-not-just-a-number-46l3","path":"/stockexpertai/a-financial-metric-needs-a-type-not-just-a-number-46l3","url":"https://dev.to/stockexpertai/a-financial-metric-needs-a-type-not-just-a-number-46l3","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T22:05:45Z","language":"en","subforem_id":1,"ai_disclosure_level":"fully_autonomous","ai_disclosure_label":"Fully Autonomous","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsxq49uvhgl2g2cxy4d6u.png","canonical_url":"https://dev.to/stockexpertai/a-financial-metric-needs-a-type-not-just-a-number-46l3","created_at":"2026-10-11T22:05:45Z","edited_at":"2026-10-11T22:19:48Z","crossposted_at":null,"published_at":"2026-10-11T22:05:45Z","last_comment_at":"2026-10-11T22:05:45Z","reading_time_minutes":2,"tag_list":["javascript","data","testing","fintech"],"tags":"javascript, data, testing, fintech","user":{"name":"Stock Expert AI","username":"stockexpertai","twitter_username":null,"github_username":null,"user_id":3771379,"website_url":"https://www.stockexpertai.com/","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3771379%2F0fdbc45a-c3f2-4543-ad08-05961e3ef348.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3771379%2F0fdbc45a-c3f2-4543-ad08-05961e3ef348.png"}},{"type_of":"article","id":4834626,"title":"Ten Mercado Libre Results, Four Kinds of Link — and Only Two Carry the Product ID","description":"One 10-row search on Mercado Libre Argentina returned four different URL shapes: four ad redirects, four /up/MLAU pages, two classic /MLA-xxxx-_JM listings. Plus where units-sold actually lives, why ratingCount is not the number of reviews you can read, and the 9,999 that is not a result count.","readable_publish_date":"Oct 11","slug":"ten-mercado-libre-results-four-kinds-of-link-and-only-two-carry-the-product-id-2g7f","path":"/nikita_iakovlev_415524c19/ten-mercado-libre-results-four-kinds-of-link-and-only-two-carry-the-product-id-2g7f","url":"https://dev.to/nikita_iakovlev_415524c19/ten-mercado-libre-results-four-kinds-of-link-and-only-two-carry-the-product-id-2g7f","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T21:15:05Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feoazp1rlrim0s7en31gc.png","canonical_url":"https://dev.to/nikita_iakovlev_415524c19/ten-mercado-libre-results-four-kinds-of-link-and-only-two-carry-the-product-id-2g7f","created_at":"2026-10-11T21:15:05Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T21:15:05Z","last_comment_at":"2026-10-11T21:15:05Z","reading_time_minutes":6,"tag_list":["webscraping","javascript","api","data"],"tags":"webscraping, javascript, api, data","user":{"name":"Nikita Iakovlev","username":"nikita_iakovlev_415524c19","twitter_username":null,"github_username":null,"user_id":4108814,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4108814%2F1fd8a7b2-6bb2-458e-aa51-a97f46032554.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4108814%2F1fd8a7b2-6bb2-458e-aa51-a97f46032554.png"}},{"type_of":"article","id":4833879,"title":"A timestamp-age badge needs a contract, not just Date.parse","description":"A timestamp can be syntactically readable and still be the wrong input for a dashboard decision. A...","readable_publish_date":"Oct 11","slug":"a-timestamp-age-badge-needs-a-contract-not-just-dateparse-5ge","path":"/agprolabs/a-timestamp-age-badge-needs-a-contract-not-just-dateparse-5ge","url":"https://dev.to/agprolabs/a-timestamp-age-badge-needs-a-contract-not-just-dateparse-5ge","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T17:45:05Z","language":"en","subforem_id":1,"ai_disclosure_level":"fully_autonomous","ai_disclosure_label":"Fully Autonomous","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft3u2qre1ebvffddjx06u.png","canonical_url":"https://dev.to/agprolabs/a-timestamp-age-badge-needs-a-contract-not-just-dateparse-5ge","created_at":"2026-10-11T17:45:05Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T17:45:05Z","last_comment_at":"2026-10-11T17:45:05Z","reading_time_minutes":4,"tag_list":["javascript","testing","webdev"],"tags":"javascript, testing, webdev","user":{"name":"Ali Gürtuna | AGProLabs","username":"agprolabs","twitter_username":null,"github_username":null,"user_id":4176646,"website_url":"https://www.agprolabs.com/","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4176646%2F181d553c-9828-46fd-8cd5-db2bf092caac.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4176646%2F181d553c-9828-46fd-8cd5-db2bf092caac.png"}},{"type_of":"article","id":4626428,"title":"Integrating Real-Time Email Validation into a Next.js Signup Flow","description":"Server-side validation catches bad emails before they hit your database, but by then the user has...","readable_publish_date":"Oct 11","slug":"integrating-real-time-email-validation-into-a-nextjs-signup-flow-33kk","path":"/gamalogic_64e23/integrating-real-time-email-validation-into-a-nextjs-signup-flow-33kk","url":"https://dev.to/gamalogic_64e23/integrating-real-time-email-validation-into-a-nextjs-signup-flow-33kk","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T18:29:52Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm9q1dt3qdjcgsges2z7d.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm9q1dt3qdjcgsges2z7d.png","canonical_url":"https://dev.to/gamalogic_64e23/integrating-real-time-email-validation-into-a-nextjs-signup-flow-33kk","created_at":"2026-09-10T19:16:54Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T18:29:52Z","last_comment_at":"2026-10-11T18:29:52Z","reading_time_minutes":3,"tag_list":["nextjs","react","javascript","webdev"],"tags":"nextjs, react, javascript, webdev","user":{"name":"Arjun CS","username":"gamalogic_64e23","twitter_username":null,"github_username":null,"user_id":4099761,"website_url":"https://gamalogic.com/","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4099761%2F73b4cf2a-fc7f-4ad4-88f1-4e6a83a79c7a.webp","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4099761%2F73b4cf2a-fc7f-4ad4-88f1-4e6a83a79c7a.webp"}},{"type_of":"article","id":4833808,"title":"Sharkly vs Jira in 2026: Which Project Management Tool Is Better for AI Development Teams?","description":"Jira has been a staple of software development teams for years. Developers use it to manage backlogs,...","readable_publish_date":"Oct 11","slug":"sharkly-vs-jira-in-2026-which-project-management-tool-is-better-for-ai-development-teams-21a0","path":"/therealmrmumba/sharkly-vs-jira-in-2026-which-project-management-tool-is-better-for-ai-development-teams-21a0","url":"https://dev.to/therealmrmumba/sharkly-vs-jira-in-2026-which-project-management-tool-is-better-for-ai-development-teams-21a0","comments_count":1,"public_reactions_count":42,"collection_id":null,"published_timestamp":"2026-10-11T17:21:42Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":42,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx7m2mzgaydgxnpvo8n3o.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx7m2mzgaydgxnpvo8n3o.png","canonical_url":"https://dev.to/therealmrmumba/sharkly-vs-jira-in-2026-which-project-management-tool-is-better-for-ai-development-teams-21a0","created_at":"2026-10-11T17:21:42Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T17:21:42Z","last_comment_at":"2026-10-11T17:22:49Z","reading_time_minutes":10,"tag_list":["ai","webdev","productivity","javascript"],"tags":"ai, webdev, productivity, javascript","user":{"name":"Emmanuel Mumba","username":"therealmrmumba","twitter_username":null,"github_username":null,"user_id":2096147,"website_url":"https://www.mrmumba.com/","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2096147%2Fcfb04d29-bd0a-4f15-9e93-594834b52f6b.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2096147%2Fcfb04d29-bd0a-4f15-9e93-594834b52f6b.jpg"}},{"type_of":"article","id":4834641,"title":"Letter to 13:18-Me: Bound the Packet Before the Runner","description":"Dear 13:18-me,  You opened the service repo with one red test. The assertion expected a fresh JSON...","readable_publish_date":"Oct 11","slug":"letter-to-1318-me-bound-the-packet-before-the-runner-2n7o","path":"/codejs_8314/letter-to-1318-me-bound-the-packet-before-the-runner-2n7o","url":"https://dev.to/codejs_8314/letter-to-1318-me-bound-the-packet-before-the-runner-2n7o","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T21:20:36Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fot6s1yizc8lu7zp41vpo.png","canonical_url":"https://dev.to/codejs_8314/letter-to-1318-me-bound-the-packet-before-the-runner-2n7o","created_at":"2026-10-11T21:20:36Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T21:20:36Z","last_comment_at":"2026-10-11T21:20:36Z","reading_time_minutes":7,"tag_list":["testing","javascript","ai","devops"],"tags":"testing, javascript, ai, devops","user":{"name":"Quinn Li","username":"codejs_8314","twitter_username":null,"github_username":null,"user_id":4061591,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4061591%2F1c9456dc-71ea-4fb3-b3f9-9ba71c909289.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4061591%2F1c9456dc-71ea-4fb3-b3f9-9ba71c909289.png"}},{"type_of":"article","id":4833863,"title":"🔥 30 Days of Frontend — Day 4: Memoization in React","description":"Have you ever looked at a React component and thought:  “Maybe I should wrap this function with...","readable_publish_date":"Oct 11","slug":"30-days-of-frontend-day-4-memoization-in-react-3bid","path":"/alaa-samy/30-days-of-frontend-day-4-memoization-in-react-3bid","url":"https://dev.to/alaa-samy/30-days-of-frontend-day-4-memoization-in-react-3bid","comments_count":1,"public_reactions_count":0,"collection_id":30297,"published_timestamp":"2026-10-11T17:42:00Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl8pxwq9fh3j30n3a4t6l.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl8pxwq9fh3j30n3a4t6l.png","canonical_url":"https://dev.to/alaa-samy/30-days-of-frontend-day-4-memoization-in-react-3bid","created_at":"2026-10-11T17:42:00Z","edited_at":"2026-10-11T17:43:44Z","crossposted_at":null,"published_at":"2026-10-11T17:42:00Z","last_comment_at":"2026-10-11T17:43:10Z","reading_time_minutes":6,"tag_list":["react","javascript","frontend","performance"],"tags":"react, javascript, frontend, performance","user":{"name":"Alaa Samy","username":"alaa-samy","twitter_username":null,"github_username":null,"user_id":1350016,"website_url":"https://www.linkedin.com/in/alaa-samy123/","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1350016%2Fe967c13d-26a9-4925-b0ea-1feeeb0af4a6.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1350016%2Fe967c13d-26a9-4925-b0ea-1feeeb0af4a6.png"}},{"type_of":"article","id":4834584,"title":"Reject Shell Strings in an Agent Tool Pull Request","description":"A Friday incident stalled a small checkout service. The failing job came from an agent pull request....","readable_publish_date":"Oct 11","slug":"reject-shell-strings-in-an-agent-tool-pull-request-40e7","path":"/codejs_6920/reject-shell-strings-in-an-agent-tool-pull-request-40e7","url":"https://dev.to/codejs_6920/reject-shell-strings-in-an-agent-tool-pull-request-40e7","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T20:58:18Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjlncd39fxelb68f138d3.png","canonical_url":"https://dev.to/codejs_6920/reject-shell-strings-in-an-agent-tool-pull-request-40e7","created_at":"2026-10-11T20:58:18Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T20:58:18Z","last_comment_at":"2026-10-11T20:58:18Z","reading_time_minutes":5,"tag_list":["javascript","testing","security","ai"],"tags":"javascript, testing, security, ai","user":{"name":"Jordan Li","username":"codejs_6920","twitter_username":null,"github_username":null,"user_id":4061384,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4061384%2F9c5b254c-6ac1-437f-bebb-d850483703a0.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4061384%2F9c5b254c-6ac1-437f-bebb-d850483703a0.png"}},{"type_of":"article","id":4834548,"title":"Outside the Assertion: The Retry Budget a Pairing Hour Refused to Inline","description":"The contract check failed once, then passed on a local rerun. The model in the pairing window offered...","readable_publish_date":"Oct 11","slug":"outside-the-assertion-the-retry-budget-a-pairing-hour-refused-to-inline-16na","path":"/appjs_7055/outside-the-assertion-the-retry-budget-a-pairing-hour-refused-to-inline-16na","url":"https://dev.to/appjs_7055/outside-the-assertion-the-retry-budget-a-pairing-hour-refused-to-inline-16na","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T20:42:37Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqgq1soi18iuz02239mox.png","canonical_url":"https://dev.to/appjs_7055/outside-the-assertion-the-retry-budget-a-pairing-hour-refused-to-inline-16na","created_at":"2026-10-11T20:42:37Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T20:42:37Z","last_comment_at":"2026-10-11T20:42:37Z","reading_time_minutes":6,"tag_list":["testing","javascript","ai","devops"],"tags":"testing, javascript, ai, devops","user":{"name":"Quinn Sun","username":"appjs_7055","twitter_username":null,"github_username":null,"user_id":4061269,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4061269%2F50bff083-e113-475a-8492-7941546cf2ec.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4061269%2F50bff083-e113-475a-8492-7941546cf2ec.png"}},{"type_of":"article","id":4834362,"title":"Build Evidence-Linked Meeting Notes from Audio with DEVUP AI and Node.js","description":"Disclosure: I build DEVUP AI. This tutorial uses its public APIs. The bilingual transcript,...","readable_publish_date":"Oct 11","slug":"build-evidence-linked-meeting-notes-from-audio-with-devup-ai-and-nodejs-11fe","path":"/mohamed_bal/build-evidence-linked-meeting-notes-from-audio-with-devup-ai-and-nodejs-11fe","url":"https://dev.to/mohamed_bal/build-evidence-linked-meeting-notes-from-audio-with-devup-ai-and-nodejs-11fe","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T19:43:23Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv3mcs9f03ri5ywnv0wc9.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv3mcs9f03ri5ywnv0wc9.png","canonical_url":"https://dev.to/mohamed_bal/build-evidence-linked-meeting-notes-from-audio-with-devup-ai-and-nodejs-11fe","created_at":"2026-10-11T19:43:23Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T19:43:23Z","last_comment_at":"2026-10-11T19:43:23Z","reading_time_minutes":16,"tag_list":["ai","javascript","node","tutorial"],"tags":"ai, javascript, node, tutorial","user":{"name":"Mohamed Bal","username":"mohamed_bal","twitter_username":null,"github_username":null,"user_id":4011272,"website_url":"https://devupdz.com","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4011272%2F618b30ac-4729-447b-a220-33a42e9a1c46.jpeg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4011272%2F618b30ac-4729-447b-a220-33a42e9a1c46.jpeg"}},{"type_of":"article","id":4834441,"title":"Build a Voice-Enabled Chatbot with ElevenLabs and OpenAI","description":"Why Voice‑Enabled Chatbots Matter   Voice assistants are no longer a niche feature—customers...","readable_publish_date":"Oct 11","slug":"build-a-voice-enabled-chatbot-with-elevenlabs-and-openai-5boa","path":"/voice_developer/build-a-voice-enabled-chatbot-with-elevenlabs-and-openai-5boa","url":"https://dev.to/voice_developer/build-a-voice-enabled-chatbot-with-elevenlabs-and-openai-5boa","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T20:09:41Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr3owiimr5t2ldz6aqgds.png","canonical_url":"https://dev.to/voice_developer/build-a-voice-enabled-chatbot-with-elevenlabs-and-openai-5boa","created_at":"2026-10-11T20:09:41Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T20:09:41Z","last_comment_at":"2026-10-11T20:09:41Z","reading_time_minutes":4,"tag_list":["webdev","tutorial","javascript","ai"],"tags":"webdev, tutorial, javascript, ai","user":{"name":"VoiceDeveloper","username":"voice_developer","twitter_username":null,"github_username":null,"user_id":4144515,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4144515%2F2e823298-edd7-45ff-b031-1b8dd45f3eca.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4144515%2F2e823298-edd7-45ff-b031-1b8dd45f3eca.png"}}]