[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"sanity--41ArXbEU9PN34tbSmdaqfl_hCCJurs9xSJh1xNElIQ":3},{"data":4,"sourceMap":-1},{"info":5,"latest":13,"pinned":340},{"_createdAt":6,"_id":7,"_rev":8,"_type":9,"_updatedAt":6,"descriptionText":10,"slug":11,"title":12},"2023-05-23T16:43:21Z","wp-tagcat-debugging","9HpbCsT2tq0xwozQfkc4ih","blogTag",null,{"current":12},"debugging",[14,76,118,147,212,263,296],{"_id":15,"author":16,"commentCount":29,"comments":30,"excerpt":31,"featureTag":10,"image":32,"publishedAt":35,"slug":36,"sponsored":10,"tags":38,"title":75},"08e39ba5-59f9-48ef-ab33-64ccb02ac669",[17],{"_id":18,"avatar":19,"name":24,"role":25,"slug":26},"dbdef9f7-acce-4431-8f4f-c2025df1c8c8",{"_type":20,"asset":21},"image",{"_ref":22,"_type":23},"image-5f1073fdcf2ebde7fee8570769d9d82d21573870-2316x3088-jpg","reference","Phoebe Sajor","Content Associate",{"_type":27,"current":28},"slug","phoebe-sajor",1,true,"Ryan is joined by Kayvon Beykpour, CEO and founder of Macroscope, to dive into AI-powered code review’s potential for managing large codebases, the need for humans-in-the-loop for PR reviews so AI tools can efficiently and effectively debug, and how AI can increase visibility  through summarization at the abstract syntax tree level and high signal-to-noise ratio code reviews.",{"_type":20,"asset":33},{"_ref":34,"_type":23},"image-d2cb4c948681d5ccbb8ff46ed2d69c6f6b6a8990-800x420-jpg","2025-12-09T00:40:00.000-08:00",{"_type":27,"current":37},"ai-is-a-crystal-ball-into-your-codebase",[39,43,47,52,59,64,69,73],{"_createdAt":6,"_id":40,"_rev":8,"_type":9,"_updatedAt":6,"slug":41,"title":42},"wp-tagcat-se-tech",{"current":42},"se-tech",{"_createdAt":6,"_id":44,"_rev":8,"_type":9,"_updatedAt":6,"slug":45,"title":46},"wp-tagcat-se-stackoverflow",{"current":46},"se-stackoverflow",{"_createdAt":6,"_id":48,"_rev":8,"_type":9,"_updatedAt":6,"slug":49,"title":51},"wp-tagcat-podcast",{"current":50},"podcast","The Stack Overflow Podcast",{"_createdAt":6,"_id":53,"_rev":54,"_type":9,"_updatedAt":55,"slug":56,"title":58},"wp-tagcat-ai","fpDTFQqIDjNJIbHDKPBGpV","2025-01-30T16:19:01Z",{"current":57},"ai","AI",{"_createdAt":6,"_id":60,"_rev":8,"_type":9,"_updatedAt":6,"slug":61,"title":63},"wp-tagcat-ai-coding",{"current":62},"ai-coding","ai coding",{"_createdAt":6,"_id":65,"_rev":8,"_type":9,"_updatedAt":6,"slug":66,"title":68},"wp-tagcat-code-review",{"current":67},"code-review","code review",{"_createdAt":6,"_id":70,"_rev":8,"_type":9,"_updatedAt":6,"slug":71,"title":72},"wp-tagcat-security",{"current":72},"security",{"_createdAt":6,"_id":7,"_rev":8,"_type":9,"_updatedAt":6,"slug":74,"title":12},{"current":12},"AI is a crystal ball into your codebase",{"_id":77,"author":78,"commentCount":87,"comments":30,"excerpt":88,"featureTag":10,"image":89,"publishedAt":92,"slug":93,"sponsored":30,"tags":95,"title":117},"257e37d5-cc07-4b22-b8e7-5f75e77010b4",[79],{"_id":80,"avatar":81,"name":84,"role":10,"slug":85},"wp-author-226",{"_type":20,"asset":82},{"_ref":83,"_type":23},"image-56688f6337dd0a96034dfc998cdecc7810597d81-1024x1024-png","Ryan Donovan",{"current":86},"rdonovan",0,"Ryan is joined by Jan Seredynski, Mobile Security Researcher and Pentester at Guardsquare, to talk about how you protect your app when the attackers control the code and the device it runs on.",{"_type":20,"asset":90},{"_ref":91,"_type":23},"image-56c6dab9c7d1b66bc662c5f43ea9573418d94d17-2400x1260-webp","2025-06-04T12:47:19.506Z",{"_type":27,"current":94},"if-an-attacker-can-edit-your-mobile-code-how-do-you-defend-your-app",[96,98,100,102,107,109,115],{"_createdAt":6,"_id":40,"_rev":8,"_type":9,"_updatedAt":6,"slug":97,"title":42},{"current":42},{"_createdAt":6,"_id":44,"_rev":8,"_type":9,"_updatedAt":6,"slug":99,"title":46},{"current":46},{"_createdAt":6,"_id":70,"_rev":8,"_type":9,"_updatedAt":6,"slug":101,"title":72},{"current":72},{"_createdAt":6,"_id":103,"_rev":8,"_type":9,"_updatedAt":6,"slug":104,"title":106},"wp-tagcat-partner-content",{"current":105},"partner-content","Partner Content",{"_createdAt":6,"_id":7,"_rev":8,"_type":9,"_updatedAt":6,"slug":108,"title":12},{"current":12},{"_createdAt":110,"_id":111,"_rev":112,"_type":9,"_updatedAt":110,"slug":113,"title":114},"2023-10-02T14:07:17Z","d1c07e65-8594-40e9-ba9c-5152dbc842cd","LWM5uBNU0GRyeTijwoho5N",{"_type":27,"current":114},"compilers",{"_createdAt":6,"_id":48,"_rev":8,"_type":9,"_updatedAt":6,"slug":116,"title":51},{"current":50},"If an attacker can edit your mobile code, how do you defend your app?",{"_id":119,"author":120,"commentCount":87,"comments":30,"excerpt":125,"featureTag":10,"image":126,"publishedAt":128,"slug":129,"sponsored":30,"tags":131,"title":146},"70b95f97-90da-4067-a250-c9382e399495",[121],{"_id":80,"avatar":122,"name":84,"role":10,"slug":124},{"_type":20,"asset":123},{"_ref":83,"_type":23},{"current":86},"On this episode, Ryan chats with Henrik Rexed, Cloud Native Advocate at Dynatrace, about debugging cloud-based applications like you would a local app. ",{"_type":20,"asset":127},{"_ref":91,"_type":23},"2025-05-13T04:40:49.101Z",{"_type":27,"current":130},"next-level-observability-live-breakpoint-debugging",[132,134,136,140,142,144],{"_createdAt":6,"_id":103,"_rev":8,"_type":9,"_updatedAt":6,"slug":133,"title":106},{"current":105},{"_createdAt":6,"_id":48,"_rev":8,"_type":9,"_updatedAt":6,"slug":135,"title":51},{"current":50},{"_createdAt":6,"_id":137,"_rev":8,"_type":9,"_updatedAt":6,"slug":138,"title":139},"wp-tagcat-observability",{"current":139},"observability",{"_createdAt":6,"_id":7,"_rev":8,"_type":9,"_updatedAt":6,"slug":141,"title":12},{"current":12},{"_createdAt":6,"_id":44,"_rev":8,"_type":9,"_updatedAt":6,"slug":143,"title":46},{"current":46},{"_createdAt":6,"_id":40,"_rev":8,"_type":9,"_updatedAt":6,"slug":145,"title":42},{"current":42},"Next-level observability: live breakpoint debugging",{"_id":148,"author":149,"commentCount":158,"comments":30,"excerpt":159,"featureTag":10,"image":160,"publishedAt":163,"slug":164,"sponsored":10,"tags":166,"title":211},"wp-post-19686",[150],{"_id":151,"avatar":152,"name":155,"role":10,"slug":156},"wp-author-cap-19510",{"_type":20,"asset":153},{"_ref":154,"_type":23},"image-7c4e91f7a46bfdc5870dd420f29a964da6830fbe-1920x1920-jpg","Joyce Lin",{"current":157},"joyce-lin",2,"How you can debug the APIs that you consume but don't own.",{"_type":20,"asset":161},{"_ref":162,"_type":23},"image-0737afecafd6c096e754b86037245ebc06d862a9-2400x1260-jpg","2022-02-28T15:01:18.000Z",{"current":165},"debugging-best-practices-for-rest-api-consumers",[167,172,177,179,184,188],{"_createdAt":6,"_id":168,"_rev":8,"_type":9,"_updatedAt":6,"slug":169,"title":171},"wp-tagcat-api",{"current":170},"api","API",{"_createdAt":6,"_id":173,"_rev":8,"_type":9,"_updatedAt":6,"slug":174,"title":176},"wp-tagcat-code-for-a-living",{"current":175},"code-for-a-living","Code for a Living",{"_createdAt":6,"_id":7,"_rev":8,"_type":9,"_updatedAt":6,"slug":178,"title":12},{"current":12},{"_createdAt":6,"_id":180,"_rev":8,"_type":9,"_updatedAt":6,"slug":181,"title":183},"wp-tagcat-rest-api",{"current":182},"rest-api","rest api",{"_createdAt":6,"_id":185,"_rev":8,"_type":9,"_updatedAt":6,"slug":186,"title":187},"wp-tagcat-testing",{"current":187},"testing",{"_createdAt":189,"_id":190,"_rev":191,"_system":192,"_type":9,"_updatedAt":195,"description":196,"slug":208,"title":210},"2025-04-24T16:28:57Z","797b8797-6e65-4723-b53f-8bc005305384","IpfPEqg1c3Byvj9RrB3Xaj",{"base":193},{"id":190,"rev":194},"oc42Nphz1oZNOg9ttSv7Tn","2026-05-07T14:43:30Z",[197],{"_key":198,"_type":199,"children":200,"markDefs":206,"style":207},"bb32f75814b4","block",[201],{"_key":202,"_type":203,"marks":204,"text":205},"dbcf27ef29b3","span",[],"Community-generated articles submitted for your reading pleasure. If you’re interested in seeing your work here, log in with your Stack Overflow account and click the link below. Articles will be licensed under a CC BY-SA 4.0 grant. ",[],"normal",{"_type":27,"current":209},"contributed","The Heap","Debugging best practices for REST API consumers",{"_id":213,"author":214,"commentCount":228,"comments":30,"excerpt":229,"featureTag":10,"image":230,"publishedAt":233,"slug":234,"sponsored":10,"tags":236,"title":262},"wp-post-19225",[215,224],{"_id":216,"avatar":217,"name":220,"role":221,"slug":222},"wp-author-295",{"_type":20,"asset":218},{"_ref":219,"_type":23},"image-d670f8093b43e483a52ba692d929578633f70eb5-1024x1024-jpg","Eira May","B2B Editor",{"current":223},"emay",{"_id":80,"avatar":225,"name":84,"role":10,"slug":227},{"_type":20,"asset":226},{"_ref":83,"_type":23},{"current":86},3,"How many bug fixes does it take to set a world record?",{"_type":20,"asset":231},{"_ref":232,"_type":23},"image-53ccf1e8e5121a00f6445c7a1630a7f893a86b9d-2400x1260-png","2021-12-09T15:14:01.000Z",{"current":235},"smashing-bugs-to-set-a-world-record-aws-bugbust",[237,241,246,250,252,254,256,258],{"_createdAt":6,"_id":238,"_rev":8,"_type":9,"_updatedAt":6,"slug":239,"title":240},"wp-tagcat-aws",{"current":240},"aws",{"_createdAt":6,"_id":242,"_rev":8,"_type":9,"_updatedAt":6,"slug":243,"title":245},"wp-tagcat-bug-bounty",{"current":244},"bug-bounty","bug bounty",{"_createdAt":6,"_id":247,"_rev":8,"_type":9,"_updatedAt":6,"slug":248,"title":249},"wp-tagcat-bugs",{"current":249},"bugs",{"_createdAt":6,"_id":173,"_rev":8,"_type":9,"_updatedAt":6,"slug":251,"title":176},{"current":175},{"_createdAt":6,"_id":7,"_rev":8,"_type":9,"_updatedAt":6,"slug":253,"title":12},{"current":12},{"_createdAt":6,"_id":103,"_rev":8,"_type":9,"_updatedAt":6,"slug":255,"title":106},{"current":105},{"_createdAt":6,"_id":103,"_rev":8,"_type":9,"_updatedAt":6,"slug":257,"title":106},{"current":105},{"_createdAt":6,"_id":259,"_rev":8,"_type":9,"_updatedAt":6,"slug":260,"title":261},"wp-tagcat-partnercontent",{"current":261},"partnercontent","Smashing bugs to set a world record: AWS BugBust",{"_id":264,"author":265,"commentCount":274,"comments":30,"excerpt":275,"featureTag":10,"image":276,"publishedAt":279,"slug":280,"sponsored":10,"tags":282,"title":295},"wp-post-16261",[266],{"_id":267,"avatar":268,"name":271,"role":10,"slug":272},"wp-author-188",{"_type":20,"asset":269},{"_ref":270,"_type":23},"image-7ae4cf96f5c09c91aad2e5cee51f94726989cec3-1024x1024-jpg","Medi Madelen Gwosdz",{"current":273},"mgwosdz",7,"Traditionally, linters make sure your code is clean and easy for teammates to read. They check for errors, bugs, style, and more. While they are more prevalent in dynamic\u002Finterpreted languages, they are not limited to them. Getting code as tidy as possible is the goal, but linters can also take some time getting used to, be a distraction, and might even be impossible to introduce to old, large code bases. We look at why they might still be worth your time. ",{"_type":20,"asset":277},{"_ref":278,"_type":23},"image-5dda5fcab35cc73360ff6dc84e15946bc2ee803b-1200x630-png","2020-07-20T12:22:20.000Z",{"current":281},"linters-arent-in-your-way-theyre-on-your-side",[283,285,289,291],{"_createdAt":6,"_id":173,"_rev":8,"_type":9,"_updatedAt":6,"slug":284,"title":176},{"current":175},{"_createdAt":6,"_id":286,"_rev":8,"_type":9,"_updatedAt":6,"slug":287,"title":288},"wp-tagcat-code-analysis",{"current":288},"code-analysis",{"_createdAt":6,"_id":7,"_rev":8,"_type":9,"_updatedAt":6,"slug":290,"title":12},{"current":12},{"_createdAt":6,"_id":292,"_rev":8,"_type":9,"_updatedAt":6,"slug":293,"title":294},"wp-tagcat-linters",{"current":294},"linters","Linters aren't in your way. They're on your side",{"_id":297,"author":298,"commentCount":307,"comments":30,"excerpt":308,"featureTag":10,"image":309,"publishedAt":312,"slug":313,"sponsored":10,"tags":315,"title":339},"wp-post-15459",[299],{"_id":300,"avatar":301,"name":304,"role":10,"slug":305},"wp-author-cap-15462",{"_type":20,"asset":302},{"_ref":303,"_type":23},"image-3a32db130121995d16b4213b0cc2cd1b53e38ab5-1614x1614-jpg","Daniel Madalitso Phiri",{"current":306},"daniel-madalitso-phiri",4,"When we built the game as a single-page app and queried the domain, it was such a memory hog. The game jam was over, but I couldn’t let it go. It kept bugging me. Was it Vue.js? Was it Netlify? Was it our hacky code? I had to find out. ",{"_type":20,"asset":310},{"_ref":311,"_type":23},"image-d4a8ade6abf4a048778b303a55d7f68361394078-2560x1463-jpg","2020-03-25T14:48:13.000Z",{"current":314},"tracking-down-performance-pitfalls-in-vue-js",[316,321,323,325,327,332,334],{"_createdAt":6,"_id":317,"_rev":8,"_type":9,"_updatedAt":6,"slug":318,"title":320},"wp-tagcat-bulletin",{"current":319},"bulletin","Bulletin",{"_createdAt":6,"_id":317,"_rev":8,"_type":9,"_updatedAt":6,"slug":322,"title":320},{"current":319},{"_createdAt":6,"_id":173,"_rev":8,"_type":9,"_updatedAt":6,"slug":324,"title":176},{"current":175},{"_createdAt":6,"_id":7,"_rev":8,"_type":9,"_updatedAt":6,"slug":326,"title":12},{"current":12},{"_createdAt":6,"_id":328,"_rev":8,"_type":9,"_updatedAt":6,"slug":329,"title":331},"wp-tagcat-stackoverflow",{"current":330},"stackoverflow","Stackoverflow",{"_createdAt":6,"_id":328,"_rev":8,"_type":9,"_updatedAt":6,"slug":333,"title":331},{"current":330},{"_createdAt":6,"_id":335,"_rev":8,"_type":9,"_updatedAt":6,"slug":336,"title":338},"wp-tagcat-vue-js",{"current":337},"vue-js","vue.js","Tracking down performance pitfalls in Vue.js",[]]