[{"type_of":"article","id":3912514,"title":"How I cut my AWS bill to $0 by moving my backend to the browser (WebAssembly)","description":"A few months ago, I was mapping out the architecture for a heavy file-processing application. The...","readable_publish_date":"Jun 16","slug":"how-i-cut-my-aws-bill-to-0-by-moving-my-backend-to-the-browser-webassembly-1nkb","path":"/rahul33859111/how-i-cut-my-aws-bill-to-0-by-moving-my-backend-to-the-browser-webassembly-1nkb","url":"https://dev.to/rahul33859111/how-i-cut-my-aws-bill-to-0-by-moving-my-backend-to-the-browser-webassembly-1nkb","comments_count":0,"public_reactions_count":1,"collection_id":null,"published_timestamp":"2026-06-16T06:52:34Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2Fn9ebnc894ygs95qa15ya.png","canonical_url":"https://dev.to/rahul33859111/how-i-cut-my-aws-bill-to-0-by-moving-my-backend-to-the-browser-webassembly-1nkb","created_at":"2026-06-16T06:52:34Z","edited_at":"2026-06-16T06:53:20Z","crossposted_at":null,"published_at":"2026-06-16T06:52:34Z","last_comment_at":"2026-06-16T06:52:34Z","reading_time_minutes":3,"tag_list":["webdev","webassembly","architecture","javascript"],"tags":"webdev, webassembly, architecture, javascript","user":{"name":"RB","username":"rahul33859111","twitter_username":"Rahul33859111","github_username":"rbanerjee78","user_id":1407467,"website_url":"https://www.pdfpro.co.in/","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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1407467%2F19cd066a-3cf8-42ce-aa0e-3a921086b3a9.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1407467%2F19cd066a-3cf8-42ce-aa0e-3a921086b3a9.png"}},{"type_of":"article","id":3912149,"title":"The exact math that made $40,000,000 out of Polymarket (Full roadmap)","description":"While you're manually checking if YES + NO = 1, quantitative systems are solving massive constraint...","readable_publish_date":"Jun 16","slug":"the-exact-math-that-made-40000000-out-of-polymarket-full-roadmap-1il6","path":"/xniiinx/the-exact-math-that-made-40000000-out-of-polymarket-full-roadmap-1il6","url":"https://dev.to/xniiinx/the-exact-math-that-made-40000000-out-of-polymarket-full-roadmap-1il6","comments_count":0,"public_reactions_count":16,"collection_id":null,"published_timestamp":"2026-06-16T06:14:31Z","language":"en","subforem_id":1,"positive_reactions_count":16,"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.amazonaws.com%2Fuploads%2Farticles%2Fru159fzuplebugx9usih.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.amazonaws.com%2Fuploads%2Farticles%2Fru159fzuplebugx9usih.png","canonical_url":"https://dev.to/xniiinx/the-exact-math-that-made-40000000-out-of-polymarket-full-roadmap-1il6","created_at":"2026-06-16T06:14:31Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-16T06:14:31Z","last_comment_at":"2026-06-16T06:14:31Z","reading_time_minutes":3,"tag_list":["automation","opensource","ai","javascript"],"tags":"automation, opensource, ai, javascript","user":{"name":"NinE X","username":"xniiinx","twitter_username":"xxniiinxx","github_username":"soulcrancerdev","user_id":3794067,"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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3794067%2F200e02a6-71eb-42bc-9f0c-949c8c02488d.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3794067%2F200e02a6-71eb-42bc-9f0c-949c8c02488d.jpg"}},{"type_of":"article","id":3912550,"title":"Hexabot Introduction: Build AI Workflows That Talk, Act, and Remember","description":"AI agents are everywhere.  They can answer questions, write emails, summarize documents, search the...","readable_publish_date":"Jun 16","slug":"hexabot-introduction-build-ai-workflows-that-talk-act-and-remember-3683","path":"/marrouchi/hexabot-introduction-build-ai-workflows-that-talk-act-and-remember-3683","url":"https://dev.to/marrouchi/hexabot-introduction-build-ai-workflows-that-talk-act-and-remember-3683","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-16T06:59:31Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2F67jprmhrcdz2w8enpntm.png","canonical_url":"https://blog.hexabot.ai/hexabot-introduction-build-ai-workflows-that-talk-act-and-remember","created_at":"2026-06-16T06:59:31Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-16T06:59:31Z","last_comment_at":"2026-06-16T06:59:31Z","reading_time_minutes":2,"tag_list":["ai","webdev","javascript","opensource"],"tags":"ai, webdev, javascript, opensource","user":{"name":"Med Marrouchi","username":"marrouchi","twitter_username":"MedMarrouchi","github_username":"marrouchi","user_id":945989,"website_url":"https://hexabot.ai","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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F945989%2F2eae3154-24a6-4878-a8fc-afa2a1a274b2.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F945989%2F2eae3154-24a6-4878-a8fc-afa2a1a274b2.jpeg"}},{"type_of":"article","id":3911217,"title":"Escaping the Trap: Fixing Stale Closures in React Hooks ⚡","description":"The Silent Interval Bug  When building dynamic dashboards at Smart Tech Devs, you frequently need to...","readable_publish_date":"Jun 16","slug":"escaping-the-trap-fixing-stale-closures-in-react-hooks-4gg7","path":"/iprajapatiparesh/escaping-the-trap-fixing-stale-closures-in-react-hooks-4gg7","url":"https://dev.to/iprajapatiparesh/escaping-the-trap-fixing-stale-closures-in-react-hooks-4gg7","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-16T04:20:27Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2Fxkp1mety6mgz5uyfokil.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.amazonaws.com%2Fuploads%2Farticles%2Fxkp1mety6mgz5uyfokil.png","canonical_url":"https://smarttechdevs.in/blog/react-stale-closures-useeffect-setinterval-architecture","created_at":"2026-06-16T04:20:27Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-16T04:20:27Z","last_comment_at":"2026-06-16T04:20:27Z","reading_time_minutes":2,"tag_list":["react","javascript","frontend","webdev"],"tags":"react, javascript, frontend, webdev","user":{"name":"Prajapati Paresh","username":"iprajapatiparesh","twitter_username":null,"github_username":null,"user_id":3818348,"website_url":"https://smarttechdevs.in/","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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3818348%2F98e76f01-e2fd-4f05-bc05-ea804d4fc2a5.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3818348%2F98e76f01-e2fd-4f05-bc05-ea804d4fc2a5.jpg"}},{"type_of":"article","id":3901581,"title":"I built an AI video clip finder that runs 100% in your browser — no uploads, no API, no GPU costs","description":"Every time I used Opus Clip or Vidyo.ai, the same thought hit me: I’m paying $20/month to upload my...","readable_publish_date":"Jun 16","slug":"i-built-an-ai-video-clip-finder-that-runs-100-in-your-browser-no-uploads-no-api-no-gpu-costs-101o","path":"/__a570829a/i-built-an-ai-video-clip-finder-that-runs-100-in-your-browser-no-uploads-no-api-no-gpu-costs-101o","url":"https://dev.to/__a570829a/i-built-an-ai-video-clip-finder-that-runs-100-in-your-browser-no-uploads-no-api-no-gpu-costs-101o","comments_count":0,"public_reactions_count":1,"collection_id":null,"published_timestamp":"2026-06-16T06:00:00Z","language":"en","subforem_id":1,"positive_reactions_count":1,"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.amazonaws.com%2Fuploads%2Farticles%2Fqeqki3f4rbijtlsjcpdh.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.amazonaws.com%2Fuploads%2Farticles%2Fqeqki3f4rbijtlsjcpdh.jpeg","canonical_url":"https://dev.to/__a570829a/i-built-an-ai-video-clip-finder-that-runs-100-in-your-browser-no-uploads-no-api-no-gpu-costs-101o","created_at":"2026-06-14T22:00:25Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-16T06:00:00Z","last_comment_at":"2026-06-16T06:00:00Z","reading_time_minutes":4,"tag_list":["javascript","webdev","showdev","tutorial"],"tags":"javascript, webdev, showdev, tutorial","user":{"name":"Oleksandr ","username":"__a570829a","twitter_username":null,"github_username":null,"user_id":3961576,"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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3961576%2Faee232fc-d62d-492f-b3f7-cafeb3638d92.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3961576%2Faee232fc-d62d-492f-b3f7-cafeb3638d92.png"},"flare_tag":{"name":"showdev","bg_color_hex":"#091b47","text_color_hex":"#b2ffe1"}},{"type_of":"article","id":3911229,"title":"The Day We Fixed Our Signup Pipeline","description":"It started with a graph.  Our signup numbers were climbing every week. The team was excited—growth...","readable_publish_date":"Jun 16","slug":"the-day-we-fixed-our-signup-pipeline-3664","path":"/ogeobubu/the-day-we-fixed-our-signup-pipeline-3664","url":"https://dev.to/ogeobubu/the-day-we-fixed-our-signup-pipeline-3664","comments_count":0,"public_reactions_count":1,"collection_id":null,"published_timestamp":"2026-06-16T04:23:48Z","language":"en","subforem_id":1,"positive_reactions_count":1,"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.amazonaws.com%2Fuploads%2Farticles%2Fah1gb3ui5njdephi45rk.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.amazonaws.com%2Fuploads%2Farticles%2Fah1gb3ui5njdephi45rk.png","canonical_url":"https://dev.to/ogeobubu/the-day-we-fixed-our-signup-pipeline-3664","created_at":"2026-06-16T04:23:49Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-16T04:23:48Z","last_comment_at":"2026-06-16T04:23:48Z","reading_time_minutes":3,"tag_list":["javascript","devops","productivity","programming"],"tags":"javascript, devops, productivity, programming","user":{"name":"Oge Obubu","username":"ogeobubu","twitter_username":"ObubuOge","github_username":"ogeobubu","user_id":491136,"website_url":"https://ogeobubu.name.ng","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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F491136%2F9b950d44-c000-47ee-bc0b-d6987f6bada3.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F491136%2F9b950d44-c000-47ee-bc0b-d6987f6bada3.jpg"}},{"type_of":"article","id":3911407,"title":"package.json vs go.mod: Where Did the Version Field Go?","description":"If you come to Go from JavaScript, one small thing surprises almost every developer.  Open any...","readable_publish_date":"Jun 16","slug":"packagejson-vs-gomod-where-did-the-version-field-go-3301","path":"/dalirnet/packagejson-vs-gomod-where-did-the-version-field-go-3301","url":"https://dev.to/dalirnet/packagejson-vs-gomod-where-did-the-version-field-go-3301","comments_count":1,"public_reactions_count":2,"collection_id":null,"published_timestamp":"2026-06-16T05:41:14Z","language":"en","subforem_id":1,"positive_reactions_count":2,"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.amazonaws.com%2Fuploads%2Farticles%2Fbu80q9ucfmxcaz24b01r.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.amazonaws.com%2Fuploads%2Farticles%2Fbu80q9ucfmxcaz24b01r.png","canonical_url":"https://dev.to/dalirnet/packagejson-vs-gomod-where-did-the-version-field-go-3301","created_at":"2026-06-16T04:56:59Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-16T05:41:14Z","last_comment_at":"2026-06-16T07:23:51Z","reading_time_minutes":6,"tag_list":["go","javascript","node","webdev"],"tags":"go, javascript, node, webdev","user":{"name":"Amir Reza Dalir","username":"dalirnet","twitter_username":"dalirnet","github_username":"dalirnet","user_id":903715,"website_url":"https://github.com/dalirnet","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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F903715%2Ff0c2decf-15ee-491f-b293-43d9f134f9a9.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F903715%2Ff0c2decf-15ee-491f-b293-43d9f134f9a9.jpeg"}},{"type_of":"article","id":3909430,"title":"I Built a Webcam Sign-Language Reader in the Browser (No Cloud)","description":"\"AI that reads sign language\" sounds like a research lab and a GPU cluster. But a genuinely useful...","readable_publish_date":"Jun 15","slug":"i-built-a-webcam-sign-language-reader-in-the-browser-no-cloud-11hg","path":"/dev48v/i-built-a-webcam-sign-language-reader-in-the-browser-no-cloud-11hg","url":"https://dev.to/dev48v/i-built-a-webcam-sign-language-reader-in-the-browser-no-cloud-11hg","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-15T21:00:57Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2Fnonqn2xgykdmr36cht9f.png","canonical_url":"https://dev.to/dev48v/i-built-a-webcam-sign-language-reader-in-the-browser-no-cloud-11hg","created_at":"2026-06-15T21:00:57Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-15T21:00:57Z","last_comment_at":"2026-06-15T21:00:57Z","reading_time_minutes":3,"tag_list":["javascript","ai","webdev","beginners"],"tags":"javascript, ai, webdev, beginners","user":{"name":"Devanshu Biswas","username":"dev48v","twitter_username":null,"github_username":null,"user_id":3929385,"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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3929385%2F75a3696c-143d-4252-ba59-6ed4083ca827.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3929385%2F75a3696c-143d-4252-ba59-6ed4083ca827.jpg"}},{"type_of":"article","id":3909411,"title":"Backpropagation From Scratch: How a Neural Network Actually Learns","description":"Yesterday's neural network could make a prediction — the forward pass pushed numbers through layers...","readable_publish_date":"Jun 15","slug":"backpropagation-from-scratch-how-a-neural-network-actually-learns-2pd4","path":"/dev48v/backpropagation-from-scratch-how-a-neural-network-actually-learns-2pd4","url":"https://dev.to/dev48v/backpropagation-from-scratch-how-a-neural-network-actually-learns-2pd4","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-15T20:58:36Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2F2x8717zni6s6glqq4xny.png","canonical_url":"https://dev.to/dev48v/backpropagation-from-scratch-how-a-neural-network-actually-learns-2pd4","created_at":"2026-06-15T20:58:36Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-15T20:58:36Z","last_comment_at":"2026-06-15T20:58:36Z","reading_time_minutes":3,"tag_list":["deeplearning","machinelearning","javascript","beginners"],"tags":"deeplearning, machinelearning, javascript, beginners","user":{"name":"Devanshu Biswas","username":"dev48v","twitter_username":null,"github_username":null,"user_id":3929385,"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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3929385%2F75a3696c-143d-4252-ba59-6ed4083ca827.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3929385%2F75a3696c-143d-4252-ba59-6ed4083ca827.jpg"}},{"type_of":"article","id":3908888,"title":"android doze kills your react native background tasks--here's why and how to fix it","description":"android doze kills your background tasks and nobody explains why properly been building a react...","readable_publish_date":"Jun 15","slug":"android-doze-kills-your-react-native-background-tasks-heres-why-and-how-to-fix-it-2299","path":"/srahman0203/android-doze-kills-your-react-native-background-tasks-heres-why-and-how-to-fix-it-2299","url":"https://dev.to/srahman0203/android-doze-kills-your-react-native-background-tasks-heres-why-and-how-to-fix-it-2299","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-15T18:48:32Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2Fjupg2hhwxn46kqk6czo7.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.amazonaws.com%2Fuploads%2Farticles%2Fjupg2hhwxn46kqk6czo7.png","canonical_url":"https://dev.to/srahman0203/android-doze-kills-your-react-native-background-tasks-heres-why-and-how-to-fix-it-2299","created_at":"2026-06-15T18:48:32Z","edited_at":"2026-06-15T18:52:35Z","crossposted_at":null,"published_at":"2026-06-15T18:48:32Z","last_comment_at":"2026-06-15T18:48:32Z","reading_time_minutes":3,"tag_list":["reactnative","android","mobile","javascript"],"tags":"reactnative, android, mobile, javascript","user":{"name":"raha","username":"srahman0203","twitter_username":null,"github_username":null,"user_id":3986082,"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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3986082%2F8424d118-51c6-4d78-926e-4d67bfe2f906.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3986082%2F8424d118-51c6-4d78-926e-4d67bfe2f906.png"}},{"type_of":"article","id":3909597,"title":"JWT Authentication in Node.js: Building a Production-Ready Login System from Scratch","description":"Authentication is one of the first major milestones every backend developer encounters.  At first, it...","readable_publish_date":"Jun 15","slug":"jwt-authentication-in-nodejs-building-a-production-ready-login-system-from-scratch-1bpn","path":"/chinwuba_jeffrey/jwt-authentication-in-nodejs-building-a-production-ready-login-system-from-scratch-1bpn","url":"https://dev.to/chinwuba_jeffrey/jwt-authentication-in-nodejs-building-a-production-ready-login-system-from-scratch-1bpn","comments_count":0,"public_reactions_count":1,"collection_id":null,"published_timestamp":"2026-06-15T21:56:51Z","language":"en","subforem_id":1,"positive_reactions_count":1,"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.amazonaws.com%2Fuploads%2Farticles%2Fyvsxlxwpf63utyq3kv28.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.amazonaws.com%2Fuploads%2Farticles%2Fyvsxlxwpf63utyq3kv28.png","canonical_url":"https://dev.to/chinwuba_jeffrey/jwt-authentication-in-nodejs-building-a-production-ready-login-system-from-scratch-1bpn","created_at":"2026-06-15T21:56:51Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-15T21:56:51Z","last_comment_at":"2026-06-15T21:56:51Z","reading_time_minutes":4,"tag_list":["webdev","programming","backend","javascript"],"tags":"webdev, programming, backend, javascript","user":{"name":"Chinwuba","username":"chinwuba_jeffrey","twitter_username":null,"github_username":null,"user_id":3940973,"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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3940973%2F1710edbd-3919-4d4e-beb4-0c4dcd2281b8.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3940973%2F1710edbd-3919-4d4e-beb4-0c4dcd2281b8.jpg"}},{"type_of":"article","id":3908409,"title":"I Built Flappy Bird in 120 Lines of Vanilla JavaScript (No Engine)","description":"I was procrastinating on a Saturday afternoon when I decided to open a blank HTML file and try to...","readable_publish_date":"Jun 15","slug":"i-built-flappy-bird-in-120-lines-of-vanilla-javascript-no-engine-407n","path":"/dev48v/i-built-flappy-bird-in-120-lines-of-vanilla-javascript-no-engine-407n","url":"https://dev.to/dev48v/i-built-flappy-bird-in-120-lines-of-vanilla-javascript-no-engine-407n","comments_count":0,"public_reactions_count":1,"collection_id":null,"published_timestamp":"2026-06-15T16:52:00Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2Fbt0ffv4nczrcko7ou43s.png","canonical_url":"https://dev.to/dev48v/i-built-flappy-bird-in-120-lines-of-vanilla-javascript-no-engine-407n","created_at":"2026-06-15T16:52:00Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-15T16:52:00Z","last_comment_at":"2026-06-15T16:52:00Z","reading_time_minutes":5,"tag_list":["javascript","gamedev","beginners","webdev"],"tags":"javascript, gamedev, beginners, webdev","user":{"name":"Devanshu Biswas","username":"dev48v","twitter_username":null,"github_username":null,"user_id":3929385,"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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3929385%2F75a3696c-143d-4252-ba59-6ed4083ca827.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3929385%2F75a3696c-143d-4252-ba59-6ed4083ca827.jpg"}},{"type_of":"article","id":3909414,"title":"I Built Frogger in 120 Lines of Vanilla JavaScript","description":"Frogger looks like a different beast from a side-scroller — roads, rivers, hopping, riding logs. But...","readable_publish_date":"Jun 15","slug":"i-built-frogger-in-120-lines-of-vanilla-javascript-23c5","path":"/dev48v/i-built-frogger-in-120-lines-of-vanilla-javascript-23c5","url":"https://dev.to/dev48v/i-built-frogger-in-120-lines-of-vanilla-javascript-23c5","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-15T20:59:40Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2Faxuwt4ttca3nrczsexjb.png","canonical_url":"https://dev.to/dev48v/i-built-frogger-in-120-lines-of-vanilla-javascript-23c5","created_at":"2026-06-15T20:59:40Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-15T20:59:40Z","last_comment_at":"2026-06-15T20:59:40Z","reading_time_minutes":2,"tag_list":["javascript","gamedev","beginners","webdev"],"tags":"javascript, gamedev, beginners, webdev","user":{"name":"Devanshu Biswas","username":"dev48v","twitter_username":null,"github_username":null,"user_id":3929385,"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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3929385%2F75a3696c-143d-4252-ba59-6ed4083ca827.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3929385%2F75a3696c-143d-4252-ba59-6ed4083ca827.jpg"}},{"type_of":"article","id":3908359,"title":"I built a JS/TS runtime in Rust where nothing runs without your permission","description":"Last week I shipped v2.0.2 of 3va — a JavaScript and TypeScript runtime written in Rust. Here is why...","readable_publish_date":"Jun 15","slug":"i-built-a-jsts-runtime-in-rust-where-nothing-runs-without-your-permission-4efp","path":"/edgar_misalcanodomngu/i-built-a-jsts-runtime-in-rust-where-nothing-runs-without-your-permission-4efp","url":"https://dev.to/edgar_misalcanodomngu/i-built-a-jsts-runtime-in-rust-where-nothing-runs-without-your-permission-4efp","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-15T16:39:42Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2Fho5fazq97nxh59jhx9ni.png","canonical_url":"https://dev.to/edgar_misalcanodomngu/i-built-a-jsts-runtime-in-rust-where-nothing-runs-without-your-permission-4efp","created_at":"2026-06-15T16:39:42Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-15T16:39:42Z","last_comment_at":"2026-06-15T16:39:42Z","reading_time_minutes":4,"tag_list":["rust","javascript","security","node"],"tags":"rust, javascript, security, node","user":{"name":"Edgar Misaél Cano Domínguez","username":"edgar_misalcanodomngu","twitter_username":null,"github_username":"OdinoCano","user_id":3985919,"website_url":"https://cv4me.net","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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3985919%2Fab848a55-5424-494b-85b9-ac75a93b1278.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3985919%2Fab848a55-5424-494b-85b9-ac75a93b1278.png"}},{"type_of":"article","id":3908329,"title":"I built a JS/TS runtime in Rust where nothing runs without your permission","description":"Last week I shipped v2.0.0 of 3va — a JavaScript and TypeScript runtime written in Rust. Here is why...","readable_publish_date":"Jun 15","slug":"i-built-a-jsts-runtime-in-rust-where-nothing-runs-without-your-permission-b6b","path":"/edgar_misalcanodomngu/i-built-a-jsts-runtime-in-rust-where-nothing-runs-without-your-permission-b6b","url":"https://dev.to/edgar_misalcanodomngu/i-built-a-jsts-runtime-in-rust-where-nothing-runs-without-your-permission-b6b","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-15T16:29:40Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2Fcjua6s3z0555uo5k54xg.png","canonical_url":"https://dev.to/edgar_misalcanodomngu/i-built-a-jsts-runtime-in-rust-where-nothing-runs-without-your-permission-b6b","created_at":"2026-06-15T16:29:40Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-15T16:29:40Z","last_comment_at":"2026-06-15T16:29:40Z","reading_time_minutes":3,"tag_list":["rust","javascript","security","node"],"tags":"rust, javascript, security, node","user":{"name":"Edgar Misaél Cano Domínguez","username":"edgar_misalcanodomngu","twitter_username":null,"github_username":"OdinoCano","user_id":3985919,"website_url":"https://cv4me.net","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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3985919%2Fab848a55-5424-494b-85b9-ac75a93b1278.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3985919%2Fab848a55-5424-494b-85b9-ac75a93b1278.png"}},{"type_of":"article","id":3912366,"title":"Building a Privacy-First HEIC Converter That Runs Entirely in the Browser","description":"If you've ever received photos from an iPhone and tried opening them on Windows, you've probably...","readable_publish_date":"Jun 16","slug":"building-a-privacy-first-heic-converter-that-runs-entirely-in-the-browser-38pb","path":"/kunal_gaming/building-a-privacy-first-heic-converter-that-runs-entirely-in-the-browser-38pb","url":"https://dev.to/kunal_gaming/building-a-privacy-first-heic-converter-that-runs-entirely-in-the-browser-38pb","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-16T06:34:52Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2Fugxllxieqmkywn5gxiv9.png","canonical_url":"https://dev.to/kunal_gaming/building-a-privacy-first-heic-converter-that-runs-entirely-in-the-browser-38pb","created_at":"2026-06-16T06:34:52Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-16T06:34:52Z","last_comment_at":"2026-06-16T06:34:52Z","reading_time_minutes":2,"tag_list":["javascript","privacy","showdev","webdev"],"tags":"javascript, privacy, showdev, webdev","user":{"name":"kunal gaming","username":"kunal_gaming","twitter_username":null,"github_username":null,"user_id":3986756,"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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3986756%2F0dfce637-ef6b-419d-9f63-8982e00e4d1d.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3986756%2F0dfce637-ef6b-419d-9f63-8982e00e4d1d.png"},"flare_tag":{"name":"showdev","bg_color_hex":"#091b47","text_color_hex":"#b2ffe1"}},{"type_of":"article","id":3912980,"title":"I Built a GDPR Compliance Checker and Cookie Consent is the Issue I See Failing Most","description":"I launched ClearlyCompliant a few weeks ago - a free automated GDPR compliance  checker for UK...","readable_publish_date":"Jun 16","slug":"i-built-a-gdpr-compliance-checker-and-cookie-consent-is-the-issue-i-see-failing-most-4aai","path":"/joe_seabrook_0f1e8fc0b720/i-built-a-gdpr-compliance-checker-and-cookie-consent-is-the-issue-i-see-failing-most-4aai","url":"https://dev.to/joe_seabrook_0f1e8fc0b720/i-built-a-gdpr-compliance-checker-and-cookie-consent-is-the-issue-i-see-failing-most-4aai","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-16T07:38:34Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2Fzz6zjkyxfm9f6iycu37h.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.amazonaws.com%2Fuploads%2Farticles%2Fzz6zjkyxfm9f6iycu37h.png","canonical_url":"https://clearlycompliant.co.uk/blog/does-my-website-need-a-cookie-banner-the-uk-small-business-guide/","created_at":"2026-06-16T07:38:34Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-16T07:38:34Z","last_comment_at":"2026-06-16T07:38:34Z","reading_time_minutes":4,"tag_list":["webdev","javascript","privacy","gdpr"],"tags":"webdev, javascript, privacy, gdpr","user":{"name":"Joe Seabrook","username":"joe_seabrook_0f1e8fc0b720","twitter_username":null,"github_username":null,"user_id":3631973,"website_url":"https://web2phone.co.uk","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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3631973%2Fcd7d0fd3-5750-4996-96db-d42b79db3583.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3631973%2Fcd7d0fd3-5750-4996-96db-d42b79db3583.png"}},{"type_of":"article","id":3520436,"title":"Verschachtelte Tabellen und Rowspans richtig parsen – Die schwierigen Teile des HTML-Table-Parsings","description":"HTML-Tabellen zu parsen scheint unkompliziert – bis man auf echte Daten trifft. Wikipedia-Tabellen...","readable_publish_date":"Jun 16","slug":"verschachtelte-tabellen-und-rowspans-richtig-parsen-die-schwierigen-teile-des-html-table-parsings-3d6g","path":"/circobit/verschachtelte-tabellen-und-rowspans-richtig-parsen-die-schwierigen-teile-des-html-table-parsings-3d6g","url":"https://dev.to/circobit/verschachtelte-tabellen-und-rowspans-richtig-parsen-die-schwierigen-teile-des-html-table-parsings-3d6g","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-16T07:30:00Z","language":"de","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2F06isknkeqz0o98rvhz6n.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.amazonaws.com%2Fuploads%2Farticles%2F06isknkeqz0o98rvhz6n.png","canonical_url":"https://dev.to/circobit/verschachtelte-tabellen-und-rowspans-richtig-parsen-die-schwierigen-teile-des-html-table-parsings-3d6g","created_at":"2026-04-18T19:06:44Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-16T07:30:00Z","last_comment_at":"2026-06-16T07:30:00Z","reading_time_minutes":6,"tag_list":["javascript","html","webdev","tutorial"],"tags":"javascript, html, webdev, tutorial","user":{"name":"circobit","username":"circobit","twitter_username":null,"github_username":null,"user_id":2076941,"website_url":"https://gauchogrid.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2076941%2F66da07b5-c863-4dff-8bcf-658497b73003.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2076941%2F66da07b5-c863-4dff-8bcf-658497b73003.png"}},{"type_of":"article","id":3909748,"title":"TypeScript 6.0 Released: The Last JavaScript-Based Version — New Features, Breaking Changes, and Migration Guide","description":"TypeScript 6.0 Released: The Last JavaScript-Based Version — New Features, Breaking Changes,...","readable_publish_date":"Jun 16","slug":"typescript-60-released-the-last-javascript-based-version-new-features-breaking-changes-and-48a0","path":"/jsmanifest/typescript-60-released-the-last-javascript-based-version-new-features-breaking-changes-and-48a0","url":"https://dev.to/jsmanifest/typescript-60-released-the-last-javascript-based-version-new-features-breaking-changes-and-48a0","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-16T01:36:28Z","language":"en","subforem_id":1,"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%2Femzvxuokuqzdkmyrzfut.supabase.co%2Fstorage%2Fv1%2Fobject%2Fpublic%2Fblog%2Fposts%2Ftypescript-6-final-javascript-release%2Fthumbnail.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Femzvxuokuqzdkmyrzfut.supabase.co%2Fstorage%2Fv1%2Fobject%2Fpublic%2Fblog%2Fposts%2Ftypescript-6-final-javascript-release%2Fthumbnail.png","canonical_url":"https://jsmanifest.com/typescript-6-final-javascript-release","created_at":"2026-06-15T22:38:32Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-16T01:36:28Z","last_comment_at":"2026-06-16T01:36:28Z","reading_time_minutes":7,"tag_list":["javascript","typescript","programming","webdev"],"tags":"javascript, typescript, programming, webdev","user":{"name":"jsmanifest","username":"jsmanifest","twitter_username":"jsmanifest","github_username":"pfftdammitchris","user_id":171901,"website_url":"https://jsmanifest.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F171901%2F2c600852-c6af-4b44-8d01-f2c59d0448da.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F171901%2F2c600852-c6af-4b44-8d01-f2c59d0448da.jpg"}},{"type_of":"article","id":3912082,"title":"\"Understanding Callback Functions, Objects, and Synchronous Programming: A Comprehensive Guide\"","description":"What is Synchronous JavaScript?#  In synchronous JavaScript, code is executed line by line, in the...","readable_publish_date":"Jun 16","slug":"understanding-callback-functions-objects-and-synchronous-programming-a-comprehensive-guide-27lb","path":"/karthick_07/understanding-callback-functions-objects-and-synchronous-programming-a-comprehensive-guide-27lb","url":"https://dev.to/karthick_07/understanding-callback-functions-objects-and-synchronous-programming-a-comprehensive-guide-27lb","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-16T06:07:43Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2F460az75du8ss242n41nl.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.amazonaws.com%2Fuploads%2Farticles%2F460az75du8ss242n41nl.png","canonical_url":"https://dev.to/karthick_07/understanding-callback-functions-objects-and-synchronous-programming-a-comprehensive-guide-27lb","created_at":"2026-06-16T06:07:43Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-16T06:07:43Z","last_comment_at":"2026-06-16T06:07:43Z","reading_time_minutes":3,"tag_list":["oop","programming","functional","javascript"],"tags":"oop, programming, functional, javascript","user":{"name":"Karthick (k)","username":"karthick_07","twitter_username":null,"github_username":null,"user_id":3924592,"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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3924592%2Fc7d24a28-37c4-4afc-af8e-88377a701cba.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3924592%2Fc7d24a28-37c4-4afc-af8e-88377a701cba.png"}},{"type_of":"article","id":3908401,"title":"k-Nearest Neighbors From Scratch: the ML Algorithm With No Training Step","description":"I want to tell you about the laziest algorithm in machine learning.  No training. No math beyond...","readable_publish_date":"Jun 15","slug":"k-nearest-neighbors-from-scratch-the-ml-algorithm-with-no-training-step-5cke","path":"/dev48v/k-nearest-neighbors-from-scratch-the-ml-algorithm-with-no-training-step-5cke","url":"https://dev.to/dev48v/k-nearest-neighbors-from-scratch-the-ml-algorithm-with-no-training-step-5cke","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-15T16:49:36Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2F9ni32pz1ptd3yq5ilpst.png","canonical_url":"https://dev.to/dev48v/k-nearest-neighbors-from-scratch-the-ml-algorithm-with-no-training-step-5cke","created_at":"2026-06-15T16:49:36Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-15T16:49:36Z","last_comment_at":"2026-06-15T16:49:36Z","reading_time_minutes":4,"tag_list":["machinelearning","javascript","beginners","datascience"],"tags":"machinelearning, javascript, beginners, datascience","user":{"name":"Devanshu Biswas","username":"dev48v","twitter_username":null,"github_username":null,"user_id":3929385,"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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3929385%2F75a3696c-143d-4252-ba59-6ed4083ca827.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3929385%2F75a3696c-143d-4252-ba59-6ed4083ca827.jpg"}},{"type_of":"article","id":3908465,"title":"Counting business days between two dates (without a library)","description":"\"How many working days until the deadline?\" sounds trivial until you actually code it. Calendar dates...","readable_publish_date":"Jun 15","slug":"counting-business-days-between-two-dates-without-a-library-3641","path":"/_e8d5594dcf13c67bfb1/counting-business-days-between-two-dates-without-a-library-3641","url":"https://dev.to/_e8d5594dcf13c67bfb1/counting-business-days-between-two-dates-without-a-library-3641","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-15T17:02:37Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2Fura0tfsnv82a4a8m2v2w.png","canonical_url":"https://dev.to/_e8d5594dcf13c67bfb1/counting-business-days-between-two-dates-without-a-library-3641","created_at":"2026-06-15T17:02:37Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-15T17:02:37Z","last_comment_at":"2026-06-15T17:02:37Z","reading_time_minutes":2,"tag_list":["javascript","webdev","beginners","productivity"],"tags":"javascript, webdev, beginners, productivity","user":{"name":"シムツール","username":"_e8d5594dcf13c67bfb1","twitter_username":null,"github_username":null,"user_id":3985956,"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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3985956%2Fcebf50c4-b346-4730-8505-2b6e4e949191.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3985956%2Fcebf50c4-b346-4730-8505-2b6e4e949191.png"}},{"type_of":"article","id":3908402,"title":"The Forward Pass, Demystified: How a Neural Network Turns Inputs Into an Answer","description":"A neural network sounds intimidating until you realize the \"forward pass\" — the thing that turns...","readable_publish_date":"Jun 15","slug":"the-forward-pass-demystified-how-a-neural-network-turns-inputs-into-an-answer-3gcm","path":"/dev48v/the-forward-pass-demystified-how-a-neural-network-turns-inputs-into-an-answer-3gcm","url":"https://dev.to/dev48v/the-forward-pass-demystified-how-a-neural-network-turns-inputs-into-an-answer-3gcm","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-15T16:49:45Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2Fmwmybuzwb7y3ghsbwq5v.png","canonical_url":"https://dev.to/dev48v/the-forward-pass-demystified-how-a-neural-network-turns-inputs-into-an-answer-3gcm","created_at":"2026-06-15T16:49:45Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-15T16:49:45Z","last_comment_at":"2026-06-15T16:49:45Z","reading_time_minutes":3,"tag_list":["deeplearning","machinelearning","javascript","beginners"],"tags":"deeplearning, machinelearning, javascript, beginners","user":{"name":"Devanshu Biswas","username":"dev48v","twitter_username":null,"github_username":null,"user_id":3929385,"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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3929385%2F75a3696c-143d-4252-ba59-6ed4083ca827.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3929385%2F75a3696c-143d-4252-ba59-6ed4083ca827.jpg"}},{"type_of":"article","id":3908130,"title":"UI IP Toolkit - A standalone static visual catalog for CSS/JS components","description":"UI IP Toolkit - A standalone static visual catalog for CSS/JS components   I built UI IP...","readable_publish_date":"Jun 15","slug":"ui-ip-toolkit-a-standalone-static-visual-catalog-for-cssjs-components-19c2","path":"/ikerperez12/ui-ip-toolkit-a-standalone-static-visual-catalog-for-cssjs-components-19c2","url":"https://dev.to/ikerperez12/ui-ip-toolkit-a-standalone-static-visual-catalog-for-cssjs-components-19c2","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-15T15:50:11Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2Fxpw3b1o8xos0mvx5qdq7.png","canonical_url":"https://dev.to/ikerperez12/ui-ip-toolkit-a-standalone-static-visual-catalog-for-cssjs-components-19c2","created_at":"2026-06-15T15:50:11Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-15T15:50:11Z","last_comment_at":"2026-06-15T15:50:11Z","reading_time_minutes":1,"tag_list":["css","javascript","webdev","ui"],"tags":"css, javascript, webdev, ui","user":{"name":"IKER PEREZ","username":"ikerperez12","twitter_username":null,"github_username":"ikerperez12","user_id":3985863,"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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3985863%2F5baa6141-2f38-4c50-8fc9-366a035c36c9.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3985863%2F5baa6141-2f38-4c50-8fc9-366a035c36c9.jpeg"}},{"type_of":"article","id":3908063,"title":"OTP Verification in Playwright Without Regex","description":"Every developer who has written a Playwright test for OTP verification has written this...","readable_publish_date":"Jun 15","slug":"otp-verification-in-playwright-without-regex-d3i","path":"/zerodrop/otp-verification-in-playwright-without-regex-d3i","url":"https://dev.to/zerodrop/otp-verification-in-playwright-without-regex-d3i","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-15T15:36:33Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2Frt2n8tavhdb9c3msfzsa.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.amazonaws.com%2Fuploads%2Farticles%2Frt2n8tavhdb9c3msfzsa.png","canonical_url":"https://dev.to/zerodrop/otp-verification-in-playwright-without-regex-d3i","created_at":"2026-06-15T15:36:33Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-15T15:36:33Z","last_comment_at":"2026-06-15T15:36:33Z","reading_time_minutes":3,"tag_list":["webdev","playwright","testing","javascript"],"tags":"webdev, playwright, testing, javascript","user":{"name":"zerodrop","username":"zerodrop","twitter_username":null,"github_username":null,"user_id":3963379,"website_url":"https://www.zerodrop.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3963379%2Fffcb1c8f-729c-4777-8c14-e3cccac1774b.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3963379%2Fffcb1c8f-729c-4777-8c14-e3cccac1774b.png"}},{"type_of":"article","id":3910804,"title":"TypeScript 6.0 launches strict mode by default and drops ES5 support","description":"Explore TypeScript 6.0’s major changes like default strict mode, ES5 drop, and module resolution updates, plus how to migrate safely.","readable_publish_date":"Jun 16","slug":"typescript-60-launches-strict-mode-by-default-and-drops-es5-support-n31","path":"/davekurian/typescript-60-launches-strict-mode-by-default-and-drops-es5-support-n31","url":"https://dev.to/davekurian/typescript-60-launches-strict-mode-by-default-and-drops-es5-support-n31","comments_count":0,"public_reactions_count":1,"collection_id":null,"published_timestamp":"2026-06-16T03:03:33Z","language":"en","subforem_id":1,"positive_reactions_count":1,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.otf-kit.dev%2Fthumbnails%2Ftypescript-6.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.otf-kit.dev%2Fthumbnails%2Ftypescript-6.png","canonical_url":"https://otf-kit.dev/blog/typescript-6","created_at":"2026-06-16T03:03:34Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-16T03:03:33Z","last_comment_at":"2026-06-16T03:03:33Z","reading_time_minutes":6,"tag_list":["javascript","news","programming","typescript"],"tags":"javascript, news, programming, typescript","user":{"name":"Dave Kurian","username":"davekurian","twitter_username":"davekurian","github_username":"dave-otf","user_id":3962819,"website_url":"https://otf-kit.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3962819%2F50b558da-9a83-43ee-a473-5381fe6bb0d4.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3962819%2F50b558da-9a83-43ee-a473-5381fe6bb0d4.png"},"flare_tag":{"name":"news","bg_color_hex":"#111111","text_color_hex":"#fff9ac"}},{"type_of":"article","id":3907814,"title":"Cómo solucionar el bucle infinito en `useEffect` con objetos y arrays","description":"Cómo solucionar el bucle infinito en useEffect con objetos y arrays            Explicación...","readable_publish_date":"Jun 15","slug":"como-solucionar-el-bucle-infinito-en-useeffect-con-objetos-y-arrays-4co8","path":"/erickeduardoramos03/como-solucionar-el-bucle-infinito-en-useeffect-con-objetos-y-arrays-4co8","url":"https://dev.to/erickeduardoramos03/como-solucionar-el-bucle-infinito-en-useeffect-con-objetos-y-arrays-4co8","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-15T15:00:34Z","language":"es","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2F0na85u0xzo9ftkdqe4th.png","canonical_url":"https://dev.to/erickeduardoramos03/como-solucionar-el-bucle-infinito-en-useeffect-con-objetos-y-arrays-4co8","created_at":"2026-06-15T15:00:34Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-15T15:00:34Z","last_comment_at":"2026-06-15T15:00:34Z","reading_time_minutes":2,"tag_list":["javascript","react","spanish","webdev"],"tags":"javascript, react, spanish, webdev","user":{"name":"Erick Eduardo Ramos","username":"erickeduardoramos03","twitter_username":null,"github_username":"ErickEduardoRamos03","user_id":3943545,"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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3943545%2Ff8b96fcc-b7e6-4c21-a809-3c6ffedaea58.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3943545%2Ff8b96fcc-b7e6-4c21-a809-3c6ffedaea58.png"}},{"type_of":"article","id":3869545,"title":"Agent Accounts Quickstart in Node.js","description":"Provisioning a working email mailbox from Node.js takes less code than the average OAuth callback...","readable_publish_date":"Jun 15","slug":"agent-accounts-quickstart-in-nodejs-3c4g","path":"/qasim157/agent-accounts-quickstart-in-nodejs-3c4g","url":"https://dev.to/qasim157/agent-accounts-quickstart-in-nodejs-3c4g","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-15T18:56:31Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2Fxdjkxhtyjrjtxe2bm9vr.png","canonical_url":"https://developer.nylas.com/docs/v3/getting-started/agent-accounts/","created_at":"2026-06-11T01:00:07Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-15T18:56:31Z","last_comment_at":"2026-06-15T18:56:31Z","reading_time_minutes":5,"tag_list":["node","javascript","email","tutorial"],"tags":"node, javascript, email, tutorial","user":{"name":"Qasim Muhammad","username":"qasim157","twitter_username":null,"github_username":null,"user_id":3837851,"website_url":"https://github.com/mqasimca/","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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3837851%2F1a2b79c0-c959-45ef-b215-a68515f17bef.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3837851%2F1a2b79c0-c959-45ef-b215-a68515f17bef.jpg"}},{"type_of":"article","id":3861454,"title":"VuReact | Vue to React Hybrid Migration Practice: Real Support Hub Case","description":"This is a practical migration walkthrough for a multi-channel customer support admin app, designed to...","readable_publish_date":"Jun 15","slug":"vureact-vue-to-react-hybrid-migration-practice-real-support-hub-case-19m9","path":"/smirk9581/vureact-vue-to-react-hybrid-migration-practice-real-support-hub-case-19m9","url":"https://dev.to/smirk9581/vureact-vue-to-react-hybrid-migration-practice-real-support-hub-case-19m9","comments_count":0,"public_reactions_count":0,"collection_id":39789,"published_timestamp":"2026-06-15T14:00:00Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2Fhulewrss7mrnvtmca5n3.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.amazonaws.com%2Fuploads%2Farticles%2Fhulewrss7mrnvtmca5n3.png","canonical_url":"https://vureact.top/en/guide/customer-support-hub.html","created_at":"2026-06-10T00:35:45Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-15T14:00:00Z","last_comment_at":"2026-06-15T14:00:00Z","reading_time_minutes":5,"tag_list":["webdev","javascript","react","vue"],"tags":"webdev, javascript, react, vue","user":{"name":"Ryan John","username":"smirk9581","twitter_username":null,"github_username":"smirk9581","user_id":3937044,"website_url":"https://github.com/smirk9581","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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3937044%2F4b72d2cd-9432-46d4-924e-332cd54382c4.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3937044%2F4b72d2cd-9432-46d4-924e-332cd54382c4.png"}},{"type_of":"article","id":3845560,"title":"Build scrub-bar thumbnail previews with FFmpeg and a WebVTT sprite","description":"TL;DR    We're going to add hover-preview thumbnails (the little image that follows your...","readable_publish_date":"Jun 15","slug":"build-scrub-bar-thumbnail-previews-with-ffmpeg-and-a-webvtt-sprite-3ei2","path":"/masonwritescode/build-scrub-bar-thumbnail-previews-with-ffmpeg-and-a-webvtt-sprite-3ei2","url":"https://dev.to/masonwritescode/build-scrub-bar-thumbnail-previews-with-ffmpeg-and-a-webvtt-sprite-3ei2","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-06-15T09:32:01Z","language":"en","subforem_id":1,"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.amazonaws.com%2Fuploads%2Farticles%2F8bf7wuil34iikfv8fef4.png","canonical_url":"https://dev.to/masonwritescode/build-scrub-bar-thumbnail-previews-with-ffmpeg-and-a-webvtt-sprite-3ei2","created_at":"2026-06-08T05:29:19Z","edited_at":null,"crossposted_at":null,"published_at":"2026-06-15T09:32:01Z","last_comment_at":"2026-06-15T09:32:01Z","reading_time_minutes":5,"tag_list":["video","ffmpeg","webdev","javascript"],"tags":"video, ffmpeg, webdev, javascript","user":{"name":"Mason K","username":"masonwritescode","twitter_username":null,"github_username":null,"user_id":3154097,"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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3154097%2F0e3d2367-7ed3-4a0b-8975-4226af0f35a3.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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3154097%2F0e3d2367-7ed3-4a0b-8975-4226af0f35a3.png"}}]