[{"type_of":"article","id":4832939,"title":"I counted one MCP server on the wire: without the handshake, HTTP stays lighter until call ten","description":"Loopback counts against the Python SDK server: MCP 2026-07-28 saves bytes on short HTTP sessions, loses the lead by call ten, costs more on stdio.","readable_publish_date":"Oct 11","slug":"i-counted-one-mcp-server-on-the-wire-without-the-handshake-http-stays-lighter-until-call-ten-4hjp","path":"/yusufihsangorgel/i-counted-one-mcp-server-on-the-wire-without-the-handshake-http-stays-lighter-until-call-ten-4hjp","url":"https://dev.to/yusufihsangorgel/i-counted-one-mcp-server-on-the-wire-without-the-handshake-http-stays-lighter-until-call-ten-4hjp","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-11T13:37:36Z","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%2Fyusufihsangorgel.github.io%2Fassets%2Fimg%2Fmcp-state%2Fcover.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fyusufihsangorgel.github.io%2Fassets%2Fimg%2Fmcp-state%2Fcover.png","canonical_url":"https://dev.to/yusufihsangorgel/i-counted-one-mcp-server-on-the-wire-without-the-handshake-http-stays-lighter-until-call-ten-4hjp","created_at":"2026-10-11T13:37:36Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-11T13:37:36Z","last_comment_at":"2026-10-11T13:37:36Z","reading_time_minutes":16,"tag_list":["mcp","dart","http"],"tags":"mcp, dart, http","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4735075,"title":"Why one failed font load kept breaking pendingFonts() in Flutter","description":"In google_fonts 8.2.0 a failed font load stayed in the set that pendingFonts() waits on, and every later call threw the old error, even after a retry loaded the font. What each half of the fix in 8.2.1 does.","readable_publish_date":"Sep 24","slug":"why-one-failed-font-load-kept-breaking-pendingfonts-in-flutter-3o6g","path":"/yusufihsangorgel/why-one-failed-font-load-kept-breaking-pendingfonts-in-flutter-3o6g","url":"https://dev.to/yusufihsangorgel/why-one-failed-font-load-kept-breaking-pendingfonts-in-flutter-3o6g","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-09-24T16:05:05Z","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%2Fyusufihsangorgel.github.io%2Fassets%2Fimg%2Fgoogle-fonts-pending%2Fcover.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fyusufihsangorgel.github.io%2Fassets%2Fimg%2Fgoogle-fonts-pending%2Fcover.png","canonical_url":"https://dev.to/yusufihsangorgel/why-one-failed-font-load-kept-breaking-pendingfonts-in-flutter-3o6g","created_at":"2026-09-24T16:05:05Z","edited_at":"2026-09-24T16:06:14Z","crossposted_at":null,"published_at":"2026-09-24T16:05:05Z","last_comment_at":"2026-09-24T16:05:05Z","reading_time_minutes":6,"tag_list":["flutter","dart","testing","debugging"],"tags":"flutter, dart, testing, debugging","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4723187,"title":"Run it, bound it, check it every week: how I made a Dart MCP client checkable","description":"Run the Dart client and server in two commands. List helpers default to a 64-page limit, and the MCP conformance suite runs weekly.","readable_publish_date":"Sep 23","slug":"making-an-mcp-client-library-checkable-a-runnable-example-bounded-pagination-and-a-weekly-i49","path":"/yusufihsangorgel/making-an-mcp-client-library-checkable-a-runnable-example-bounded-pagination-and-a-weekly-i49","url":"https://dev.to/yusufihsangorgel/making-an-mcp-client-library-checkable-a-runnable-example-bounded-pagination-and-a-weekly-i49","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-09-23T09:02:58Z","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%2Fyusufihsangorgel.github.io%2Fassets%2Fimg%2F2026-09-23-mcp-checkable%2Fcover.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fyusufihsangorgel.github.io%2Fassets%2Fimg%2F2026-09-23-mcp-checkable%2Fcover.png","canonical_url":"https://dev.to/yusufihsangorgel/making-an-mcp-client-library-checkable-a-runnable-example-bounded-pagination-and-a-weekly-i49","created_at":"2026-09-23T09:02:58Z","edited_at":"2026-09-24T16:19:16Z","crossposted_at":null,"published_at":"2026-09-23T09:02:58Z","last_comment_at":"2026-09-23T09:02:58Z","reading_time_minutes":5,"tag_list":["dart","mcp","opensource","testing"],"tags":"dart, mcp, opensource, testing","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4300410,"title":"Your leak test is probably measuring the test runner","description":"I have a test that checks a native buffer gets freed. Yesterday I ran it two ways, twenty seconds...","readable_publish_date":"Aug 3","slug":"your-leak-test-is-probably-measuring-the-test-runner-1m3m","path":"/yusufihsangorgel/your-leak-test-is-probably-measuring-the-test-runner-1m3m","url":"https://dev.to/yusufihsangorgel/your-leak-test-is-probably-measuring-the-test-runner-1m3m","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-08-03T08:48:55Z","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%2Fraw.githubusercontent.com%2FYusufihsangorgel%2Fsimdjson_dart%2Fmain%2Fdocs%2Fleak-test-cover.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fraw.githubusercontent.com%2FYusufihsangorgel%2Fsimdjson_dart%2Fmain%2Fdocs%2Fleak-test-cover.png","canonical_url":"https://dev.to/yusufihsangorgel/your-leak-test-is-probably-measuring-the-test-runner-1m3m","created_at":"2026-08-03T08:48:55Z","edited_at":"2026-09-25T15:34:58Z","crossposted_at":null,"published_at":"2026-08-03T08:48:55Z","last_comment_at":"2026-08-03T08:48:55Z","reading_time_minutes":5,"tag_list":["dart","testing","ffi","flutter"],"tags":"dart, testing, ffi, flutter","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4259648,"title":"The Biggest MCP Update Ever, Explained With a Restaurant","description":"MCP 2026-07-28 is out, and sessions are gone. The whole story in plain English, told with one restaurant.","readable_publish_date":"Jul 29","slug":"the-biggest-mcp-update-ever-explained-with-a-restaurant-4ecp","path":"/yusufihsangorgel/the-biggest-mcp-update-ever-explained-with-a-restaurant-4ecp","url":"https://dev.to/yusufihsangorgel/the-biggest-mcp-update-ever-explained-with-a-restaurant-4ecp","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-29T06:43:25Z","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/https%3A%2F%2Fmiro.medium.com%2Fv2%2F1%2A3vdP4XBjJlwJYcdXh6KH7g.gif","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto/https%3A%2F%2Fmiro.medium.com%2Fv2%2F1%2A3vdP4XBjJlwJYcdXh6KH7g.gif","canonical_url":"https://medium.com/@developeryusufihsan/the-biggest-mcp-update-ever-explained-with-a-restaurant-7b1f2bcd7d06","created_at":"2026-07-29T06:43:25Z","edited_at":"2026-09-24T17:28:43Z","crossposted_at":null,"published_at":"2026-07-29T06:43:25Z","last_comment_at":"2026-07-29T06:43:25Z","reading_time_minutes":10,"tag_list":["mcp","ai","programming","beginners"],"tags":"mcp, ai, programming, beginners","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4221919,"title":"The object that falls out of the Set it is still in — mutable hashCode in Dart","description":"Here is a Set with one element. One assignment later, contains stops finding it:    final attrs =...","readable_publish_date":"Jul 24","slug":"the-object-that-falls-out-of-the-set-it-is-still-in-mutable-hashcode-in-dart-2665","path":"/yusufihsangorgel/the-object-that-falls-out-of-the-set-it-is-still-in-mutable-hashcode-in-dart-2665","url":"https://dev.to/yusufihsangorgel/the-object-that-falls-out-of-the-set-it-is-still-in-mutable-hashcode-in-dart-2665","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-24T08:39:13Z","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%2Fvc3dttihl4cm6lr6qlgu.png","canonical_url":"https://dev.to/yusufihsangorgel/the-object-that-falls-out-of-the-set-it-is-still-in-mutable-hashcode-in-dart-2665","created_at":"2026-07-24T08:38:51Z","edited_at":"2026-09-25T15:34:52Z","crossposted_at":null,"published_at":"2026-07-24T08:39:13Z","last_comment_at":"2026-07-24T08:39:13Z","reading_time_minutes":4,"tag_list":["dart","flutter","debugging","programming"],"tags":"dart, flutter, debugging, programming","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4219168,"title":"My CI ran on three platforms and still could not catch this","description":"For thirteen releases, my Ogg/MP3 decoder's README said this:   it decodes the same bytes to the same...","readable_publish_date":"Jul 24","slug":"my-ci-ran-on-three-platforms-and-still-could-not-catch-this-l04","path":"/yusufihsangorgel/my-ci-ran-on-three-platforms-and-still-could-not-catch-this-l04","url":"https://dev.to/yusufihsangorgel/my-ci-ran-on-three-platforms-and-still-could-not-catch-this-l04","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-24T01:50:11Z","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%2Fzslqeo0ulxmn1vn2mjr2.png","canonical_url":"https://dev.to/yusufihsangorgel/my-ci-ran-on-three-platforms-and-still-could-not-catch-this-l04","created_at":"2026-07-24T01:48:29Z","edited_at":"2026-09-25T15:34:45Z","crossposted_at":null,"published_at":"2026-07-24T01:50:11Z","last_comment_at":"2026-07-24T01:50:11Z","reading_time_minutes":6,"tag_list":["testing","c","cicd","debugging"],"tags":"testing, c, cicd, debugging","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4219166,"title":"The 24.8 milliseconds you pay before ffmpeg decodes a single sample","description":"You have an .ogg file and you need the raw samples. In Dart there is no decoder in the standard...","readable_publish_date":"Jul 24","slug":"the-248-milliseconds-you-pay-before-ffmpeg-decodes-a-single-sample-3983","path":"/yusufihsangorgel/the-248-milliseconds-you-pay-before-ffmpeg-decodes-a-single-sample-3983","url":"https://dev.to/yusufihsangorgel/the-248-milliseconds-you-pay-before-ffmpeg-decodes-a-single-sample-3983","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-24T01:50:09Z","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%2F53h3eqni5ke7974q3ub1.png","canonical_url":"https://dev.to/yusufihsangorgel/the-248-milliseconds-you-pay-before-ffmpeg-decodes-a-single-sample-3983","created_at":"2026-07-24T01:48:16Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-24T01:50:09Z","last_comment_at":"2026-07-24T01:50:09Z","reading_time_minutes":6,"tag_list":["dart","ffmpeg","performance","showdev"],"tags":"dart, ffmpeg, performance, showdev","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"},"flare_tag":{"name":"showdev","bg_color_hex":"#091b47","text_color_hex":"#b2ffe1"}},{"type_of":"article","id":4217937,"title":"Pinning the point you pinch: the one line behind anchored zoom","description":"Open a photo on your phone and pinch to zoom. The spot between your fingers stays between your...","readable_publish_date":"Jul 23","slug":"pinning-the-point-you-pinch-the-one-line-behind-anchored-zoom-m4l","path":"/yusufihsangorgel/pinning-the-point-you-pinch-the-one-line-behind-anchored-zoom-m4l","url":"https://dev.to/yusufihsangorgel/pinning-the-point-you-pinch-the-one-line-behind-anchored-zoom-m4l","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-23T20:41: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%2F8nh3k17drpxjc7x08vdp.png","canonical_url":"https://dev.to/yusufihsangorgel/pinning-the-point-you-pinch-the-one-line-behind-anchored-zoom-m4l","created_at":"2026-07-23T20:41:37Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-23T20:41:57Z","last_comment_at":"2026-07-23T20:41:57Z","reading_time_minutes":5,"tag_list":["flutter","dart","graphics","math"],"tags":"flutter, dart, graphics, math","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4217793,"title":"A public const constructor is the back door around your factory's validation","description":"You put your validation in a factory. Schema.string(pattern: ...) checks that the pattern is a real...","readable_publish_date":"Jul 23","slug":"a-public-const-constructor-is-the-back-door-around-your-factorys-validation-2hh8","path":"/yusufihsangorgel/a-public-const-constructor-is-the-back-door-around-your-factorys-validation-2hh8","url":"https://dev.to/yusufihsangorgel/a-public-const-constructor-is-the-back-door-around-your-factorys-validation-2hh8","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-23T20:15:24Z","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%2Ffiel3zy154amijvr0u41.png","canonical_url":"https://dev.to/yusufihsangorgel/a-public-const-constructor-is-the-back-door-around-your-factorys-validation-2hh8","created_at":"2026-07-23T20:15:22Z","edited_at":"2026-09-24T17:28:49Z","crossposted_at":null,"published_at":"2026-07-23T20:15:24Z","last_comment_at":"2026-07-23T20:15:24Z","reading_time_minutes":5,"tag_list":["dart","programming","tutorial"],"tags":"dart, programming, tutorial","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4217657,"title":"2.75 seconds or 2 microseconds: the same regex, two engines","description":"Here is a regular expression: (a+)+$. Here is an input: a string of 28 a characters followed by one...","readable_publish_date":"Jul 23","slug":"275-seconds-or-2-microseconds-the-same-regex-two-engines-k2o","path":"/yusufihsangorgel/275-seconds-or-2-microseconds-the-same-regex-two-engines-k2o","url":"https://dev.to/yusufihsangorgel/275-seconds-or-2-microseconds-the-same-regex-two-engines-k2o","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-23T19:59:12Z","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%2Flo6npvwmm61yc4s7z9cr.png","canonical_url":"https://dev.to/yusufihsangorgel/275-seconds-or-2-microseconds-the-same-regex-two-engines-k2o","created_at":"2026-07-23T19:58:57Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-23T19:59:12Z","last_comment_at":"2026-07-23T19:59:12Z","reading_time_minutes":6,"tag_list":["dart","flutter","regex","security"],"tags":"dart, flutter, regex, security","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4217133,"title":"A finite loop in skeleton_shimmer that stopped resuming when the loop count was raised","description":"The clip above is a conceptual illustration of the behavior, with a card frozen after a finite loop...","readable_publish_date":"Jul 23","slug":"a-finite-loop-in-skeletonshimmer-that-stopped-resuming-when-the-loop-count-was-raised-44ib","path":"/yusufihsangorgel/a-finite-loop-in-skeletonshimmer-that-stopped-resuming-when-the-loop-count-was-raised-44ib","url":"https://dev.to/yusufihsangorgel/a-finite-loop-in-skeletonshimmer-that-stopped-resuming-when-the-loop-count-was-raised-44ib","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-23T18:10:24Z","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/https%3A%2F%2Fraw.githubusercontent.com%2FYusufihsangorgel%2Fskeleton_shimmer%2Fmain%2Fdoc%2Fblog%2Ffrozensweep%2Fshimmer_sweep.gif","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto/https%3A%2F%2Fraw.githubusercontent.com%2FYusufihsangorgel%2Fskeleton_shimmer%2Fmain%2Fdoc%2Fblog%2Ffrozensweep%2Fshimmer_sweep.gif","canonical_url":"https://dev.to/yusufihsangorgel/a-finite-loop-in-skeletonshimmer-that-stopped-resuming-when-the-loop-count-was-raised-44ib","created_at":"2026-07-23T18:09:33Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-23T18:10:24Z","last_comment_at":"2026-07-23T18:10:24Z","reading_time_minutes":4,"tag_list":["dart","flutter","animation"],"tags":"dart, flutter, animation","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4217036,"title":"A route could write index.html outside the output directory: a path traversal fix in flutter_prerender 0.3.2","description":"flutter_prerender is a small CLI I maintain on pub.dev. Point it at a flutter build web output and it...","readable_publish_date":"Jul 23","slug":"a-route-could-write-indexhtml-outside-the-output-directory-a-path-traversal-fix-in-2o9","path":"/yusufihsangorgel/a-route-could-write-indexhtml-outside-the-output-directory-a-path-traversal-fix-in-2o9","url":"https://dev.to/yusufihsangorgel/a-route-could-write-indexhtml-outside-the-output-directory-a-path-traversal-fix-in-2o9","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-23T17:52:10Z","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%2Fg2vz8txmitewbsnsoxfe.png","canonical_url":"https://dev.to/yusufihsangorgel/a-route-could-write-indexhtml-outside-the-output-directory-a-path-traversal-fix-in-2o9","created_at":"2026-07-23T17:51:55Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-23T17:52:10Z","last_comment_at":"2026-07-23T17:52:10Z","reading_time_minutes":5,"tag_list":["dart","flutter","security","webdev"],"tags":"dart, flutter, security, webdev","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4216847,"title":"A resolved top-level null was dropped from streamPartialJson (stream_struct 0.3.2)","description":"stream_struct takes a stream of text deltas from a model and turns it into a stream of parsed JSON...","readable_publish_date":"Jul 23","slug":"a-resolved-top-level-null-was-dropped-from-streampartialjson-streamstruct-032-4g5g","path":"/yusufihsangorgel/a-resolved-top-level-null-was-dropped-from-streampartialjson-streamstruct-032-4g5g","url":"https://dev.to/yusufihsangorgel/a-resolved-top-level-null-was-dropped-from-streampartialjson-streamstruct-032-4g5g","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-23T17:16:02Z","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%2Fd5bl6gseq753nplvhip8.png","canonical_url":"https://dev.to/yusufihsangorgel/a-resolved-top-level-null-was-dropped-from-streampartialjson-streamstruct-032-4g5g","created_at":"2026-07-23T17:15:20Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-23T17:16:02Z","last_comment_at":"2026-07-23T17:16:02Z","reading_time_minutes":4,"tag_list":["dart","ai","llm","json"],"tags":"dart, ai, llm, json","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4216690,"title":"rag_kit stored the caller's metadata map by reference, then handed it back from search","description":"rag_kit is a small on-device retrieval toolkit for Dart and Flutter. Its InMemoryVectorStore holds...","readable_publish_date":"Jul 23","slug":"ragkit-stored-the-callers-metadata-map-by-reference-then-handed-it-back-from-search-4nmg","path":"/yusufihsangorgel/ragkit-stored-the-callers-metadata-map-by-reference-then-handed-it-back-from-search-4nmg","url":"https://dev.to/yusufihsangorgel/ragkit-stored-the-callers-metadata-map-by-reference-then-handed-it-back-from-search-4nmg","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-23T16:36: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%2F16ohllua9u77ccb25a8a.png","canonical_url":"https://dev.to/yusufihsangorgel/ragkit-stored-the-callers-metadata-map-by-reference-then-handed-it-back-from-search-4nmg","created_at":"2026-07-23T16:36:30Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-23T16:36:41Z","last_comment_at":"2026-07-23T16:36:41Z","reading_time_minutes":4,"tag_list":["dart","flutter","programming"],"tags":"dart, flutter, programming","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4215902,"title":"Check.isValidJson Failed on Correct JSON When the Model Wrapped It in a Markdown Fence","description":"llm_eval is a small Dart package for regression-testing LLM output: you write checks against a...","readable_publish_date":"Jul 23","slug":"checkisvalidjson-failed-on-correct-json-when-the-model-wrapped-it-in-a-markdown-fence-o0e","path":"/yusufihsangorgel/checkisvalidjson-failed-on-correct-json-when-the-model-wrapped-it-in-a-markdown-fence-o0e","url":"https://dev.to/yusufihsangorgel/checkisvalidjson-failed-on-correct-json-when-the-model-wrapped-it-in-a-markdown-fence-o0e","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-23T14:14:38Z","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%2F4otkim2rik64ib9madgm.png","canonical_url":"https://dev.to/yusufihsangorgel/checkisvalidjson-failed-on-correct-json-when-the-model-wrapped-it-in-a-markdown-fence-o0e","created_at":"2026-07-23T14:13:48Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-23T14:14:38Z","last_comment_at":"2026-07-23T14:14:38Z","reading_time_minutes":5,"tag_list":["dart","ai","llm","testing"],"tags":"dart, ai, llm, testing","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4215547,"title":"constellation_particles 0.3.1 fixes a crash triggered by turning on high contrast mid-session","description":"I just shipped 0.3.1 of constellation_particles, a pub.dev package that draws a pointer-reactive...","readable_publish_date":"Jul 23","slug":"constellationparticles-031-fixes-a-crash-triggered-by-turning-on-high-contrast-mid-session-4j7a","path":"/yusufihsangorgel/constellationparticles-031-fixes-a-crash-triggered-by-turning-on-high-contrast-mid-session-4j7a","url":"https://dev.to/yusufihsangorgel/constellationparticles-031-fixes-a-crash-triggered-by-turning-on-high-contrast-mid-session-4j7a","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-23T13:17:32Z","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%2Fraw.githubusercontent.com%2FYusufihsangorgel%2Fconstellation_particles%2Fmain%2Fdoc%2Fblog%2Fstalegrid%2Fstalegrid-diagram.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fraw.githubusercontent.com%2FYusufihsangorgel%2Fconstellation_particles%2Fmain%2Fdoc%2Fblog%2Fstalegrid%2Fstalegrid-diagram.png","canonical_url":"https://dev.to/yusufihsangorgel/constellationparticles-031-fixes-a-crash-triggered-by-turning-on-high-contrast-mid-session-4j7a","created_at":"2026-07-23T13:17:18Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-23T13:17:32Z","last_comment_at":"2026-07-23T13:17:32Z","reading_time_minutes":8,"tag_list":["flutter","dart","a11y","crash"],"tags":"flutter, dart, a11y, crash","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4215307,"title":"redis_task_queue 0.10.1: neither the worker nor the client ever reconnected after Redis dropped","description":"I maintain redis_task_queue, a small Redis-backed task queue for server-side Dart...","readable_publish_date":"Jul 23","slug":"redistaskqueue-0101-neither-the-worker-nor-the-client-ever-reconnected-after-redis-dropped-4483","path":"/yusufihsangorgel/redistaskqueue-0101-neither-the-worker-nor-the-client-ever-reconnected-after-redis-dropped-4483","url":"https://dev.to/yusufihsangorgel/redistaskqueue-0101-neither-the-worker-nor-the-client-ever-reconnected-after-redis-dropped-4483","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-23T12:40:37Z","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%2Fraw.githubusercontent.com%2FYusufihsangorgel%2Fredis_task_queue%2Fmain%2Fdoc%2Fblog%2Freconnect%2Freconnect-diagram.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fraw.githubusercontent.com%2FYusufihsangorgel%2Fredis_task_queue%2Fmain%2Fdoc%2Fblog%2Freconnect%2Freconnect-diagram.png","canonical_url":"https://dev.to/yusufihsangorgel/redistaskqueue-0101-neither-the-worker-nor-the-client-ever-reconnected-after-redis-dropped-4483","created_at":"2026-07-23T12:40:12Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-23T12:40:37Z","last_comment_at":"2026-07-23T12:40:37Z","reading_time_minutes":8,"tag_list":["dart","redis","backend","reliability"],"tags":"dart, redis, backend, reliability","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4215297,"title":"The Find-in-Page Bug That Only Shows Up on Long Lists","description":"Flutter has no built-in Ctrl+F. If you want a find-in-page feature, the obvious approach is to wrap...","readable_publish_date":"Jul 23","slug":"the-find-in-page-bug-that-only-shows-up-on-long-lists-36b6","path":"/yusufihsangorgel/the-find-in-page-bug-that-only-shows-up-on-long-lists-36b6","url":"https://dev.to/yusufihsangorgel/the-find-in-page-bug-that-only-shows-up-on-long-lists-36b6","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-23T12:39: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%2Fraw.githubusercontent.com%2FYusufihsangorgel%2Ffind_in_page%2Fmain%2Fdoc%2Fblog%2Flazylist%2Flazylist-diagram.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fraw.githubusercontent.com%2FYusufihsangorgel%2Ffind_in_page%2Fmain%2Fdoc%2Fblog%2Flazylist%2Flazylist-diagram.png","canonical_url":"https://dev.to/yusufihsangorgel/the-find-in-page-bug-that-only-shows-up-on-long-lists-36b6","created_at":"2026-07-23T12:38:51Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-23T12:39:44Z","last_comment_at":"2026-07-23T12:39:44Z","reading_time_minutes":5,"tag_list":["flutter","dart","mobile","performance"],"tags":"flutter, dart, mobile, performance","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4214272,"title":"A stereo gotcha in audio_decode 0.3.1: toFloat32() is interleaved, not per-channel","description":"audio_decode (pub.dev, v0.3.1) decodes MP3 and Ogg Vorbis to PCM. PcmAudio.toFloat32() gives you the...","readable_publish_date":"Jul 23","slug":"a-stereo-gotcha-in-audiodecode-031-tofloat32-is-interleaved-not-per-channel-5079","path":"/yusufihsangorgel/a-stereo-gotcha-in-audiodecode-031-tofloat32-is-interleaved-not-per-channel-5079","url":"https://dev.to/yusufihsangorgel/a-stereo-gotcha-in-audiodecode-031-tofloat32-is-interleaved-not-per-channel-5079","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-23T10:35:49Z","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%2Fovtpmum2mw81x7mtpw7a.png","canonical_url":"https://dev.to/yusufihsangorgel/a-stereo-gotcha-in-audiodecode-031-tofloat32-is-interleaved-not-per-channel-5079","created_at":"2026-07-23T10:35:49Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-23T10:35:49Z","last_comment_at":"2026-07-23T10:35:49Z","reading_time_minutes":5,"tag_list":["dart","audio","dsp","flutter"],"tags":"dart, audio, dsp, flutter","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4213747,"title":"BLAKE3's Hash Output Does Not Stop at 32 Bytes","description":"A hash function normally gives you one fixed-size thing. SHA-256 always returns 32 bytes. SHA-512...","readable_publish_date":"Jul 23","slug":"blake3s-hash-output-does-not-stop-at-32-bytes-2m5h","path":"/yusufihsangorgel/blake3s-hash-output-does-not-stop-at-32-bytes-2m5h","url":"https://dev.to/yusufihsangorgel/blake3s-hash-output-does-not-stop-at-32-bytes-2m5h","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-23T09:56: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%2Fw52zdxvcmzm6msxmip58.png","canonical_url":"https://dev.to/yusufihsangorgel/blake3s-hash-output-does-not-stop-at-32-bytes-2m5h","created_at":"2026-07-23T09:56:18Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-23T09:56:18Z","last_comment_at":"2026-07-23T09:56:18Z","reading_time_minutes":5,"tag_list":["dart","cryptography","hashing","ffi"],"tags":"dart, cryptography, hashing, ffi","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4213271,"title":"Why audio_decode divides by 32768, and never by 32767","description":"toFloat32() divides every sample by 32768, not by 32767, the actual maximum value a signed 16-bit...","readable_publish_date":"Jul 23","slug":"why-audiodecode-divides-by-32768-and-never-by-32767-1g6k","path":"/yusufihsangorgel/why-audiodecode-divides-by-32768-and-never-by-32767-1g6k","url":"https://dev.to/yusufihsangorgel/why-audiodecode-divides-by-32768-and-never-by-32767-1g6k","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-23T09:07:30Z","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%2Fizrfduzb1fbs0ec01b8k.png","canonical_url":"https://dev.to/yusufihsangorgel/why-audiodecode-divides-by-32768-and-never-by-32767-1g6k","created_at":"2026-07-23T09:07:30Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-23T09:07:30Z","last_comment_at":"2026-07-23T09:07:30Z","reading_time_minutes":3,"tag_list":["dart","flutter","audio","performance"],"tags":"dart, flutter, audio, performance","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4198447,"title":"You don't need a vector database","description":"I wanted a Flutter app to answer questions over a user's own notes without any of it leaving the...","readable_publish_date":"Jul 21","slug":"you-dont-need-a-vector-database-3dfb","path":"/yusufihsangorgel/you-dont-need-a-vector-database-3dfb","url":"https://dev.to/yusufihsangorgel/you-dont-need-a-vector-database-3dfb","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-21T15:34:23Z","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%2Fw8g9lp55uh2zfuqdt1xy.png","canonical_url":"https://dev.to/yusufihsangorgel/you-dont-need-a-vector-database-3dfb","created_at":"2026-07-21T15:34:23Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-21T15:34:23Z","last_comment_at":"2026-07-21T15:34:23Z","reading_time_minutes":8,"tag_list":["flutter","dart","ai","machinelearning"],"tags":"flutter, dart, ai, machinelearning","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4197767,"title":"My LLM-eval cache made CI free, except the judge ran every time","description":"llm_eval is a small test harness for LLM evals in Dart. You describe cases and checks, run them...","readable_publish_date":"Jul 21","slug":"my-llm-eval-cache-made-ci-free-except-the-judge-ran-every-time-5fa1","path":"/yusufihsangorgel/my-llm-eval-cache-made-ci-free-except-the-judge-ran-every-time-5fa1","url":"https://dev.to/yusufihsangorgel/my-llm-eval-cache-made-ci-free-except-the-judge-ran-every-time-5fa1","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-21T13:54:49Z","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%2F4bs81243n7xg9e0drm4a.png","canonical_url":"https://dev.to/yusufihsangorgel/my-llm-eval-cache-made-ci-free-except-the-judge-ran-every-time-5fa1","created_at":"2026-07-21T13:54:49Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-21T13:54:49Z","last_comment_at":"2026-07-21T13:54:49Z","reading_time_minutes":3,"tag_list":["dart","ai","llm","testing"],"tags":"dart, ai, llm, testing","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4196956,"title":"Future.wait over a thumbnailer ran a real folder out of memory","description":"image_ffi makes thumbnails in native code. The synchronous call blocks, so there is an async variant...","readable_publish_date":"Jul 21","slug":"futurewait-over-a-thumbnailer-ran-a-real-folder-out-of-memory-lfo","path":"/yusufihsangorgel/futurewait-over-a-thumbnailer-ran-a-real-folder-out-of-memory-lfo","url":"https://dev.to/yusufihsangorgel/futurewait-over-a-thumbnailer-ran-a-real-folder-out-of-memory-lfo","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-21T12:12:50Z","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%2Fdedfq41n0xmju7m5g1we.png","canonical_url":"https://dev.to/yusufihsangorgel/futurewait-over-a-thumbnailer-ran-a-real-folder-out-of-memory-lfo","created_at":"2026-07-21T12:12:50Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-21T12:12:50Z","last_comment_at":"2026-07-21T12:12:50Z","reading_time_minutes":3,"tag_list":["dart","flutter","performance","concurrency"],"tags":"dart, flutter, performance, concurrency","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4196219,"title":"Your schema said number, the model returned 42, and the cast threw","description":"instructor_dart gives you typed, validated structured output from an LLM. You describe the shape you...","readable_publish_date":"Jul 21","slug":"your-schema-said-number-the-model-returned-42-and-the-cast-threw-29ce","path":"/yusufihsangorgel/your-schema-said-number-the-model-returned-42-and-the-cast-threw-29ce","url":"https://dev.to/yusufihsangorgel/your-schema-said-number-the-model-returned-42-and-the-cast-threw-29ce","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-21T10:50: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%2Ftpqmkqp928rw06x6q8hn.png","canonical_url":"https://dev.to/yusufihsangorgel/your-schema-said-number-the-model-returned-42-and-the-cast-threw-29ce","created_at":"2026-07-21T10:50:36Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-21T10:50:36Z","last_comment_at":"2026-07-21T10:50:36Z","reading_time_minutes":3,"tag_list":["dart","ai","llm","json"],"tags":"dart, ai, llm, json","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4194967,"title":"A zero byte in the input was silently truncating my tokenizer","description":"hf_tokenizers binds the HuggingFace tokenizers Rust crate into Dart over FFI. The whole reason to use...","readable_publish_date":"Jul 21","slug":"a-zero-byte-in-the-input-was-silently-truncating-my-tokenizer-2j1a","path":"/yusufihsangorgel/a-zero-byte-in-the-input-was-silently-truncating-my-tokenizer-2j1a","url":"https://dev.to/yusufihsangorgel/a-zero-byte-in-the-input-was-silently-truncating-my-tokenizer-2j1a","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-21T09:02:09Z","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%2Fmt9rr8ohqy66b90e03dr.png","canonical_url":"https://dev.to/yusufihsangorgel/a-zero-byte-in-the-input-was-silently-truncating-my-tokenizer-2j1a","created_at":"2026-07-21T09:02:09Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-21T09:02:09Z","last_comment_at":"2026-07-21T09:02:09Z","reading_time_minutes":4,"tag_list":["dart","ffi","rust","debugging"],"tags":"dart, ffi, rust, debugging","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4191592,"title":"Reading two fields out of a 4 MB JSON payload: where an FFI parser beats dart:convert","description":"A measurement of simdjson_dart against dart:convert, and the sizes where each one wins.  The usual...","readable_publish_date":"Jul 21","slug":"reading-two-fields-out-of-a-4-mb-json-payload-where-an-ffi-parser-beats-dartconvert-2gj5","path":"/yusufihsangorgel/reading-two-fields-out-of-a-4-mb-json-payload-where-an-ffi-parser-beats-dartconvert-2gj5","url":"https://dev.to/yusufihsangorgel/reading-two-fields-out-of-a-4-mb-json-payload-where-an-ffi-parser-beats-dartconvert-2gj5","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-21T00:26:26Z","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%2Fs2bq6hw60nhei5w32tf5.png","canonical_url":"https://dev.to/yusufihsangorgel/reading-two-fields-out-of-a-4-mb-json-payload-where-an-ffi-parser-beats-dartconvert-2gj5","created_at":"2026-07-21T00:26:26Z","edited_at":null,"crossposted_at":null,"published_at":"2026-07-21T00:26:26Z","last_comment_at":"2026-07-21T00:26:26Z","reading_time_minutes":4,"tag_list":["dart","json","performance","ffi"],"tags":"dart, json, performance, ffi","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4191569,"title":"Semantic search in Dart without the hand-written cosine loop","description":"A packed matrix and SIMD dot products for top-k similarity, with the memory numbers spelled out.  I...","readable_publish_date":"Jul 21","slug":"semantic-search-in-dart-without-the-hand-written-cosine-loop-26e7","path":"/yusufihsangorgel/semantic-search-in-dart-without-the-hand-written-cosine-loop-26e7","url":"https://dev.to/yusufihsangorgel/semantic-search-in-dart-without-the-hand-written-cosine-loop-26e7","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-21T00:20:09Z","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%2Fbenar51wrhhcfm7kfutr.png","canonical_url":"https://dev.to/yusufihsangorgel/semantic-search-in-dart-without-the-hand-written-cosine-loop-26e7","created_at":"2026-07-21T00:20:09Z","edited_at":"2026-07-21T00:45:32Z","crossposted_at":null,"published_at":"2026-07-21T00:20:09Z","last_comment_at":"2026-07-21T00:20:09Z","reading_time_minutes":4,"tag_list":["dart","flutter","ai","machinelearning"],"tags":"dart, flutter, ai, machinelearning","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}},{"type_of":"article","id":4191549,"title":"Writing a million-row .xlsx from Dart without running out of memory","description":"An FFI wrapper over libxlsxwriter, and the memory numbers that made me reach for it.  I had a report...","readable_publish_date":"Jul 21","slug":"writing-a-million-row-xlsx-from-dart-without-running-out-of-memory-1672","path":"/yusufihsangorgel/writing-a-million-row-xlsx-from-dart-without-running-out-of-memory-1672","url":"https://dev.to/yusufihsangorgel/writing-a-million-row-xlsx-from-dart-without-running-out-of-memory-1672","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-07-21T00:15:43Z","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%2F4jtcw8ovilyrz2xcsx6s.png","canonical_url":"https://dev.to/yusufihsangorgel/writing-a-million-row-xlsx-from-dart-without-running-out-of-memory-1672","created_at":"2026-07-21T00:15:44Z","edited_at":"2026-07-21T00:43:55Z","crossposted_at":null,"published_at":"2026-07-21T00:15:43Z","last_comment_at":"2026-07-21T00:15:43Z","reading_time_minutes":4,"tag_list":["dart","excel","ffi","backend"],"tags":"dart, excel, ffi, backend","user":{"name":"Yusuf İhsan Görgel","username":"yusufihsangorgel","twitter_username":null,"github_username":"Yusufihsangorgel","user_id":3859744,"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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.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%2F3859744%2Fa9c730c8-0d59-4e68-af52-069001dbe5a7.jpeg"}}]