[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"sanity-zB9iNhK6Ttnh_fQiOQF0omolNwigv1901adOtL6HFoY":3},{"data":4,"sourceMap":-1},{"info":5,"latest":14,"pinned":51},{"_createdAt":6,"_id":7,"_rev":8,"_type":9,"_updatedAt":6,"descriptionText":10,"slug":11,"title":13},"2023-05-23T16:43:21Z","wp-tagcat-static-types","9HpbCsT2tq0xwozQfkc4ih","blogTag",null,{"current":12},"static-types","static types",[15],{"_id":16,"author":17,"commentCount":28,"comments":29,"excerpt":30,"featureTag":10,"image":31,"publishedAt":34,"slug":35,"sponsored":10,"tags":37,"title":50},"wp-post-21495",[18],{"_id":19,"avatar":20,"name":25,"role":10,"slug":26},"wp-author-cap-18115",{"_type":21,"asset":22},"image",{"_ref":23,"_type":24},"image-8cf69a05d6ef9dfd6db2ac2da2518a7d5e4b90d1-386x426-png","reference","Daniel Orner",{"current":27},"daniel-orner",3,true,"Dynamic languages allow for a lot of flexibility in typing — sometimes too much. Here's how to add some guardrails to your code. ",{"_type":21,"asset":32},{"_ref":33,"_type":24},"image-66dfd6f102b260dd3adb4278115f43e83e622d69-2560x1344-jpg","2023-01-19T14:00:00.000Z",{"current":36},"adding-structure-to-dynamic-languages",[38,43,48],{"_createdAt":6,"_id":39,"_rev":8,"_type":9,"_updatedAt":6,"slug":40,"title":42},"wp-tagcat-code-for-a-living",{"current":41},"code-for-a-living","Code for a Living",{"_createdAt":6,"_id":44,"_rev":8,"_type":9,"_updatedAt":6,"slug":45,"title":47},"wp-tagcat-dynamic-programming",{"current":46},"dynamic-programming","dynamic programming",{"_createdAt":6,"_id":7,"_rev":8,"_type":9,"_updatedAt":6,"slug":49,"title":13},{"current":12},"Minimizing the downsides of dynamic programming languages",[]]