[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"sanity-6pISQwVDDrBON_YJRCPsNhL_-aSDqNMWQ2Qg5Qajrfg":3,"sanity-Zh4q7ZBqu_NWbU7eHbp-z9uMvbOIp4XHQity-n1-Bis":645},{"data":4,"sourceMap":-1},{"latestPodcast":5,"latestReleases":14,"post":39,"recent":620},[6],{"_id":7,"publishedAt":8,"slug":9,"sponsored":12,"title":13},"71ac000b-6ddd-42a0-8c20-0f525b414eb0","2026-11-06T08:40:00.000Z",{"_type":10,"current":11},"slug","welcome-to-life-in-the-chip-age",null,"Welcome to life in the chip age",[15,21,27,33],{"_id":16,"publishedAt":17,"slug":18,"title":20},"aff25b90-6c0a-41e4-b8f6-f6e24c534c7f","2026-10-28T14:55:00.000Z",{"_type":10,"current":19},"delivering-controlled-and-concentrated-context","Delivering controlled and concentrated context",{"_id":22,"publishedAt":23,"slug":24,"title":26},"7a2d88e5-ee53-4f7c-a46e-47bed1cebadf","2026-09-30T16:00:00.000Z",{"_type":10,"current":25},"anyone-can-start-building-verified-knowledge-with-stack-internal","Anyone can start building verified knowledge with Stack Internal",{"_id":28,"publishedAt":29,"slug":30,"title":32},"12c6a8a7-135f-401f-ac1a-1c26c33e69c0","2026-09-03T16:00:00.000Z",{"_type":10,"current":31},"security-control-and-accessibility-si-2026-6","Elevating security, control, and accessibility: Stack Internal 2026.6",{"_id":34,"publishedAt":35,"slug":36,"title":38},"adcf1bca-3295-4ac5-9b3c-23f337974190","2026-07-30T15:10:00.000Z",{"_type":10,"current":37},"introducing-stack-internal-new-platform-experience","Your trusted knowledge layer: Introducing Stack Internal's new platform experience",{"_createdAt":40,"_id":41,"_rev":42,"_type":43,"_updatedAt":44,"author":45,"body":63,"comments":535,"dateUrl":536,"product":12,"publishedAt":537,"slug":538,"sponsored":12,"tags":540,"title":619,"visible":535},"2026-11-09T20:50:16Z","fbc0f8b8-fad5-49c5-b515-a7ab8cf42768","Skj12tgW4RhHNhNVIfTUkj","blogPost","2026-11-09T20:53:37Z",[46],{"_createdAt":47,"_id":48,"_rev":49,"_type":50,"_updatedAt":51,"account_id":52,"avatar":53,"bio":58,"employee":59,"name":60,"slug":61},"2026-05-11T16:19:48Z","142efd11-ca8a-4e6d-aa4a-258930588315","Bqj3l3jZyXV24sfjnpbOzZ","blogAuthor","2026-05-11T16:20:23Z",13715229,{"_type":54,"asset":55},"image",{"_ref":56,"_type":57},"image-6dab34eea20b065ad4b562c05c9e93a51d9f519d-800x800-png","reference","Srikanth Srinivas is a Software Engineering leader with over 21 years of experience building scalable enterprise applications, cloud-native platforms, and automation-driven engineering solutions across web, mobile, API, and DevOps ecosystems. He has led technology initiatives for global enterprises including Caesars Entertainment, Optomi - Toyota Connected, CVS Health, Infosys, and Cognizant, driving modernization initiatives that improve reliability, scalability, and operational efficiency.\n\nHis expertise spans software engineering, DevOps transformation, cloud infrastructure, and Identity and Access Management (IAM), with a strong focus on building secure, resilient, and automation-first enterprise systems. Srikanth is particularly interested in practical applications of AI to enhance engineering workflows, operational intelligence, and platform reliability.\n\nSrikanth is currently pursuing a Master’s degree in Systems Engineering and Management at The University of Texas at Dallas, where his academic focus includes AI, automation, cybersecurity, and intelligent enterprise systems.\n\nIn addition to his industry experience, Srikanth regularly shares insights at conferences and professional forums on DevOps, IAM, AI-driven engineering practices, and enterprise modernization, helping teams build future-ready technology platforms.","none","Srikanth Srinivas",{"_type":10,"current":62},"srikanth-srinivas",[64,75,83,100,113,137,157,169,178,186,194,202,210,218,226,234,242,250,258,266,273,281,289,297,305,313,321,328,335,343,351,359,367,375,383,391,399,407,415,423,431,439,451,459,471,483,495,503,515,523],{"_key":65,"_type":66,"children":67,"markDefs":73,"style":74},"5df0a392a605","block",[68],{"_key":69,"_type":70,"marks":71,"text":72},"f9471ed35deb","span",[],"Before OAuth 2.0 existed, if you wanted a third-party app to read your Twitter timeline, you had to give them your Twitter username and password. Not a token, not a scoped credential your actual password.",[],"normal",{"_key":76,"_type":66,"children":77,"markDefs":82,"style":74},"e5804b72dce1",[78],{"_key":79,"_type":70,"marks":80,"text":81},"88d1029b72d1",[],"The app would log in as you, do what it needed, and (if you were lucky) not store the password anywhere sketchy. Users did this constantly. Whole categories of app worked this way Twitter clients, mail readers, contact importers, calendar syncers. Every one of them held a growing collection of user passwords.",[],{"_key":84,"_type":66,"children":85,"markDefs":99,"style":74},"7fe98715952f",[86,90,95],{"_key":87,"_type":70,"marks":88,"text":89},"5006f81b41f4",[],"This was called the ",{"_key":91,"_type":70,"marks":92,"text":94},"9d29b0edb7ed",[93],"em","password anti-pattern ",{"_key":96,"_type":70,"marks":97,"text":98},"ab30371c1e75",[],"and it was as bad as it sounds. If the third party app got breached, every user account it touched went with it. Users could not revoke access to a single app without changng their password everywhere. The app had full account access, not just the piece it actually needed.",[],{"_key":101,"_type":66,"children":102,"markDefs":112,"style":74},"a54938d8fb1f",[103,108],{"_key":104,"_type":70,"marks":105,"text":107},"6a6352312b16",[106],"strong","What OAuth 2.0 does - ",{"_key":109,"_type":70,"marks":110,"text":111},"82e0f5b8b220",[],"The user authenticates only with the service they trust (Google, GitHub, etc.). The third-party app never sees the password. The service issues the app a token, and the token carries three important properties:",[],{"_key":114,"_type":66,"children":115,"markDefs":136,"style":74},"21a8c90b94db",[116,120,124,128,132],{"_key":117,"_type":70,"marks":118,"text":119},"e9c99a8ced60",[],"1. ",{"_key":121,"_type":70,"marks":122,"text":123},"8b4f5c28be93",[106],"Scoped ",{"_key":125,"_type":70,"marks":126,"text":127},"f00a6659a955",[],"— It grants only the specific permissions the user approved. 2. ",{"_key":129,"_type":70,"marks":130,"text":131},"86ec77f2bb7a",[106],"Time-limited ",{"_key":133,"_type":70,"marks":134,"text":135},"7a4d0a1dcbfd",[],"— It expires, usually within an hour.",[],{"_key":138,"_type":66,"children":139,"markDefs":156,"style":74},"97366eb412c0",[140,144,148,152],{"_key":141,"_type":70,"marks":142,"text":143},"a1396c1cab37",[],"3. ",{"_key":145,"_type":70,"marks":146,"text":147},"715b1fd8be35",[106],"Revocable ",{"_key":149,"_type":70,"marks":150,"text":151},"15c897d05161",[],"— The user can kill it any time from their account settings. ",{"_key":153,"_type":70,"marks":154,"text":155},"c8aad15888db",[106],"The actual flow",[],{"_key":158,"_type":66,"children":159,"markDefs":168,"style":74},"7cb638e500f4",[160,164],{"_key":161,"_type":70,"marks":162,"text":163},"c1adab41c116",[],"The modern standard is Authorization Code with PKCE. Five steps. ",{"_key":165,"_type":70,"marks":166,"text":167},"956505cd6d51",[106],"1. The app redirects the user to the authorization server.",[],{"_key":170,"_type":66,"children":171,"markDefs":177,"style":74},"53066eca556e",[172],{"_key":173,"_type":70,"marks":174,"text":176},"832b5f536976",[175],"code","https:\u002F\u002Fauth.example.com\u002Foauth\u002Fauthorize",[],{"_key":179,"_type":66,"children":180,"markDefs":185,"style":74},"c368b25c8b2d",[181],{"_key":182,"_type":70,"marks":183,"text":184},"8418ddadc81d",[175],"?response_type=code",[],{"_key":187,"_type":66,"children":188,"markDefs":193,"style":74},"abdc47a5584f",[189],{"_key":190,"_type":70,"marks":191,"text":192},"4dfbafe2d4fb",[175],"&client_id=budgettrack-prod",[],{"_key":195,"_type":66,"children":196,"markDefs":201,"style":74},"e8e1f742c1bb",[197],{"_key":198,"_type":70,"marks":199,"text":200},"fcb9a8165756",[175],"&redirect_uri=https:\u002F\u002Fbudgettrack.com\u002Fcallback",[],{"_key":203,"_type":66,"children":204,"markDefs":209,"style":74},"05be5f24fbcd",[205],{"_key":206,"_type":70,"marks":207,"text":208},"e4da26e116be",[175],"&scope=calendar.read",[],{"_key":211,"_type":66,"children":212,"markDefs":217,"style":74},"2ca7d2db7aea",[213],{"_key":214,"_type":70,"marks":215,"text":216},"97425c304088",[175],"&state=xY7f3aQ2",[],{"_key":219,"_type":66,"children":220,"markDefs":225,"style":74},"cf8c49065b3a",[221],{"_key":222,"_type":70,"marks":223,"text":224},"8637d239e78a",[175],"&code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM &code_challenge_method=S256",[],{"_key":227,"_type":66,"children":228,"markDefs":233,"style":74},"5caa3efa140e",[229],{"_key":230,"_type":70,"marks":231,"text":232},"d90629886ab0",[106],"2. The user authenticates on the auth server's own domain.",[],{"_key":235,"_type":66,"children":236,"markDefs":241,"style":74},"708d6c291c71",[237],{"_key":238,"_type":70,"marks":239,"text":240},"1360a38e30e0",[],"The third-party app never sees this happen. No password crosses the network to anyone but the auth server itself.",[],{"_key":243,"_type":66,"children":244,"markDefs":249,"style":74},"8e19c254e9f6",[245],{"_key":246,"_type":70,"marks":247,"text":248},"e492e4152dc1",[106],"3. The auth server redirects back with a short-lived code.",[],{"_key":251,"_type":66,"children":252,"markDefs":257,"style":74},"3112a9b81f15",[253],{"_key":254,"_type":70,"marks":255,"text":256},"75fa96e5741b",[175],"https:\u002F\u002Fbudgettrack.com\u002Fcallback",[],{"_key":259,"_type":66,"children":260,"markDefs":265,"style":74},"463d26624f44",[261],{"_key":262,"_type":70,"marks":263,"text":264},"35d9ba4270ce",[175],"?code=SplxlOBeZQQYbYS6WxSbIA",[],{"_key":267,"_type":66,"children":268,"markDefs":272,"style":74},"56f385752bf2",[269],{"_key":270,"_type":70,"marks":271,"text":216},"dd7e0e2d7a87",[175],[],{"_key":274,"_type":66,"children":275,"markDefs":280,"style":74},"ce580d4d496b",[276],{"_key":277,"_type":70,"marks":278,"text":279},"d57a58a8c685",[106],"4. The app exchanges the code for a token, server-to-server.",[],{"_key":282,"_type":66,"children":283,"markDefs":288,"style":74},"12502eb499d1",[284],{"_key":285,"_type":70,"marks":286,"text":287},"01315fb2707d",[175],"POST \u002Foauth\u002Ftoken HTTP\u002F1.1",[],{"_key":290,"_type":66,"children":291,"markDefs":296,"style":74},"ff8a063bdfb3",[292],{"_key":293,"_type":70,"marks":294,"text":295},"e679cc19fbff",[175],"Host: auth.example.com",[],{"_key":298,"_type":66,"children":299,"markDefs":304,"style":74},"195e154b0b35",[300],{"_key":301,"_type":70,"marks":302,"text":303},"3302d4a4179f",[175],"Content-Type: application\u002Fx-www-form-urlencoded",[],{"_key":306,"_type":66,"children":307,"markDefs":312,"style":74},"32e530fe2253",[308],{"_key":309,"_type":70,"marks":310,"text":311},"266aa77bb5bc",[175],"grant_type=authorization_code",[],{"_key":314,"_type":66,"children":315,"markDefs":320,"style":74},"c66125524dd2",[316],{"_key":317,"_type":70,"marks":318,"text":319},"62ac47fd7858",[175],"&code=SplxlOBeZQQYbYS6WxSbIA",[],{"_key":322,"_type":66,"children":323,"markDefs":327,"style":74},"e2cc71481916",[324],{"_key":325,"_type":70,"marks":326,"text":200},"b9e69747eb79",[175],[],{"_key":329,"_type":66,"children":330,"markDefs":334,"style":74},"495e893b2b01",[331],{"_key":332,"_type":70,"marks":333,"text":192},"1e8aebdec6b9",[175],[],{"_key":336,"_type":66,"children":337,"markDefs":342,"style":74},"4db22f3bbe73",[338],{"_key":339,"_type":70,"marks":340,"text":341},"dc946561f3e9",[175],"&code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk ",[],{"_key":344,"_type":66,"children":345,"markDefs":350,"style":74},"9d313321b19a",[346],{"_key":347,"_type":70,"marks":348,"text":349},"413b16cba1b3",[106],"5. The auth server returns the token.",[],{"_key":352,"_type":66,"children":353,"markDefs":358,"style":74},"018d129607ff",[354],{"_key":355,"_type":70,"marks":356,"text":357},"74294aaf5689",[175],"json",[],{"_key":360,"_type":66,"children":361,"markDefs":366,"style":74},"948138f27d15",[362],{"_key":363,"_type":70,"marks":364,"text":365},"480e312cb711",[175],"{",[],{"_key":368,"_type":66,"children":369,"markDefs":374,"style":74},"7829b5b0942b",[370],{"_key":371,"_type":70,"marks":372,"text":373},"5eef0614956e",[175],"\"access_token\": \"eyJhbGci...\",",[],{"_key":376,"_type":66,"children":377,"markDefs":382,"style":74},"317c09282510",[378],{"_key":379,"_type":70,"marks":380,"text":381},"932fc2850315",[175],"\"token_type\": \"Bearer\",",[],{"_key":384,"_type":66,"children":385,"markDefs":390,"style":74},"a3d61f55dec6",[386],{"_key":387,"_type":70,"marks":388,"text":389},"f81fb2ec0931",[175],"\"expires_in\": 3600,",[],{"_key":392,"_type":66,"children":393,"markDefs":398,"style":74},"45f64bf7ca4b",[394],{"_key":395,"_type":70,"marks":396,"text":397},"ce99da71ab1f",[175],"\"refresh_token\": \"v1.MRn7...\",",[],{"_key":400,"_type":66,"children":401,"markDefs":406,"style":74},"14f26f9699be",[402],{"_key":403,"_type":70,"marks":404,"text":405},"50a068ef9587",[175],"\"scope\": \"calendar.read\"",[],{"_key":408,"_type":66,"children":409,"markDefs":414,"style":74},"5b78dd5f76f4",[410],{"_key":411,"_type":70,"marks":412,"text":413},"1f8502d9b8d3",[175],"}",[],{"_key":416,"_type":66,"children":417,"markDefs":422,"style":74},"19db6e2f9d01",[418],{"_key":419,"_type":70,"marks":420,"text":421},"1a04edfb50fb",[],"The app now calls the API with Authorization: Bearer \u003Ctoken> until the token expires. The user's password was never involved at any point.",[],{"_key":424,"_type":66,"children":425,"markDefs":430,"style":74},"3adf690bd2c1",[426],{"_key":427,"_type":70,"marks":428,"text":429},"f03ff10e4b4d",[106],"What those magic parameters actually do?",[],{"_key":432,"_type":66,"children":433,"markDefs":438,"style":74},"a2ec78a51704",[434],{"_key":435,"_type":70,"marks":436,"text":437},"200f751b6066",[],"The flow above has four security-critical parameters that most tutorials gloss over. Here is what each one is defending against.",[],{"_key":440,"_type":66,"children":441,"markDefs":450,"style":74},"3b5e54f4f92c",[442,446],{"_key":443,"_type":70,"marks":444,"text":445},"6423ec41b553",[106],"state=xY7f3aQ2 ",{"_key":447,"_type":70,"marks":448,"text":449},"6c450e177f3d",[],"CSRF protection. The app generates a random value, sends it in the authorize request, and checks that the same value comes back on the redirect. Without",[],{"_key":452,"_type":66,"children":453,"markDefs":458,"style":74},"cd4d60a9e9e4",[454],{"_key":455,"_type":70,"marks":456,"text":457},"c25739bb0c39",[],"this, an attacker could trick a signed-in user into completing the attacker's OAuth flow, binding the attacker's account to the user's app session. Not checking state is one of the most common OAuth bugs in the wild.",[],{"_key":460,"_type":66,"children":461,"markDefs":470,"style":74},"4d69994517dd",[462,466],{"_key":463,"_type":70,"marks":464,"text":465},"03fd5045f3cb",[106],"code_challenge + code_verifier ",{"_key":467,"_type":70,"marks":468,"text":469},"529b3ea2d688",[],"PKCE (Proof Key for Code Exchange). The app generates a random code_verifier, hashes it with SHA-256 to produce the code_challenge sent in step 1, then presents the original code_verifier when exchanging the code in step 4. This defeats any attacker who intercepts the authorization code without the matching code_verifier, the stolen code is worthless. Required for mobile apps and SPAs; strongly recommended everywhere else.",[],{"_key":472,"_type":66,"children":473,"markDefs":482,"style":74},"c043f852a2c1",[474,478],{"_key":475,"_type":70,"marks":476,"text":477},"7cdeed87d378",[106],"redirect_uri=https:\u002F\u002Fbudgettrack.com\u002Fcallback ",{"_key":479,"_type":70,"marks":480,"text":481},"b327d2626c4e",[],"The auth server will only send the code to this exact URL, pre-registered with the auth server. Attackers cannot swap in https:\u002F\u002Fevil.com\u002Fcallback to hijack the code mid-flight.",[],{"_key":484,"_type":66,"children":485,"markDefs":494,"style":74},"9193047ebc3b",[486,490],{"_key":487,"_type":70,"marks":488,"text":489},"da70e3452f3e",[106],"Short-lived code (step 3) ",{"_key":491,"_type":70,"marks":492,"text":493},"9b12a7f1f7cf",[],"The authorization code is single-use and expires in seconds (typically 10 seconds to 2 minutes). Even if captured in a log or network trace, it cannot be reused later.",[],{"_key":496,"_type":66,"children":497,"markDefs":502,"style":74},"2bf142f91ba3",[498],{"_key":499,"_type":70,"marks":500,"text":501},"0cf8aad31f69",[],"Four small parameters. Each one closes a specific attack. Together they are the reason OAuth 2.0 is secure enough to run every \"Sign in with Google\" button on the internet.",[],{"_key":504,"_type":66,"children":505,"markDefs":514,"style":74},"cb36edee8ad1",[506,510],{"_key":507,"_type":70,"marks":508,"text":509},"52b61fe9548e",[106],"Why scopes matter - ",{"_key":511,"_type":70,"marks":512,"text":513},"1dae57a07500",[],"scope=calendar.read means the app can read the calendar. That is it. It cannot delete events, cannot send email, cannot access contacts, cannot post on the user's behalf. If the app gets breached tomorrow, the attacker has read access to calendars. Bad, but bounded.",[],{"_key":516,"_type":66,"children":517,"markDefs":522,"style":74},"0df9b4bde5a1",[518],{"_key":519,"_type":70,"marks":520,"text":521},"16b893cf316b",[],"Compare this to the pre-OAuth world where the attacker would have had full account access to every service the app touched, everywhere. The whole game of security is turning \"everything\" into \"one specific thing,\" and scopes are how OAuth 2.0 does it at the protocol level.",[],{"_key":524,"_type":66,"children":525,"markDefs":534,"style":74},"0fa6b58d2968",[526,530],{"_key":527,"_type":70,"marks":528,"text":529},"328263ea88d0",[106],"Summary - ",{"_key":531,"_type":70,"marks":532,"text":533},"d4a136784ea9",[],"OAuth 2.0 exists so a user can grant a third-party app scoped, time limited, revocable access to their account without ever handing over their password. Everything else in the protocol code exchanges, refresh tokens, PKCE, scopes, discovery is machinery in service of that one principle.",[],true,"2026\u002F11\u002F09","2026-11-09T20:50:38.644Z",{"_type":10,"current":539},"never-share-your-password-again-the-oauth-2-0-solution",[541,573,596,602],{"_createdAt":542,"_id":543,"_rev":544,"_system":545,"_type":548,"_updatedAt":549,"description":550,"slug":570,"title":572},"2025-08-08T15:49:22Z","39391cf4-6f9a-4238-8670-c1e44b66db9e","09X6HDzCi2VfMov6gSLf7H",{"base":546},{"id":543,"rev":547},"TdCcmC7LyfLVwjB8GEXoh6","blogTag","2025-12-10T19:34:33Z",[551,559],{"_key":552,"_type":66,"children":553,"markDefs":558,"style":74},"a4b1a37cbbcc",[554],{"_key":555,"_type":70,"marks":556,"text":557},"d8e8f3e0fd9c",[],"These articles are licensed under a Creative Commons Attribution-ShareAlike 4.0 International license. ",[],{"_key":560,"_type":66,"children":561,"markDefs":567,"style":74},"7effd489c71f",[562],{"_key":563,"_type":70,"marks":564,"text":566},"538808bb5325",[565],"fd643b288690","creativecommons.org\u002Flicenses\u002Fby-sa\u002F4.0\u002Fdeed.en",[568],{"_key":565,"_type":569},"link",{"_type":10,"current":571},"cc-by-sa","CC BY-SA 4.0",{"_createdAt":574,"_id":575,"_rev":576,"_system":577,"_type":548,"_updatedAt":580,"description":581,"featuredPosts":590,"slug":593,"title":595},"2025-04-24T16:28:57Z","797b8797-6e65-4723-b53f-8bc005305384","46s78gX2DRxVswzX0kQ1Ty",{"base":578},{"id":575,"rev":579},"IpfPEqg1c3Byvj9RrB3Xaj","2026-10-07T20:13:00Z",[582],{"_key":583,"_type":66,"children":584,"markDefs":589,"style":74},"bb32f75814b4",[585],{"_key":586,"_type":70,"marks":587,"text":588},"dbcf27ef29b3",[],"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. ",[],[591],{"_key":592,"_type":57},"9d9ea8c4082d",{"_type":10,"current":594},"contributed","The Heap",{"_createdAt":597,"_id":598,"_rev":599,"_type":548,"_updatedAt":597,"slug":600,"title":601},"2023-05-23T16:43:21Z","wp-tagcat-auth","9HpbCsT2tq0xwozQfkc4ih",{"current":601},"auth",{"_createdAt":603,"_id":604,"_rev":605,"_type":548,"_updatedAt":606,"description":607,"slug":616,"title":618},"2026-06-15T15:00:53Z","c9310194-f231-4342-a4aa-df4ad0452efe","MwgZb85ftkde1TTvSyOi3l","2026-06-15T15:01:32Z",[608],{"_key":609,"_type":66,"children":610,"markDefs":615,"style":74},"ef6a7da8a160",[611],{"_key":612,"_type":70,"marks":613,"text":614},"bca8dd798afb",[],"Everything that happens after the commit. ",[],{"_type":10,"current":617},"running-software","Running software","Never Share Your Password Again — The OAuth 2.0 Solution",[621,627,633,639],{"_id":622,"publishedAt":623,"slug":624,"sponsored":12,"title":626},"ab816818-65bf-497b-a765-d7c6250deb92","2026-11-05T16:02:13.857Z",{"_type":10,"current":625},"don-t-build-the-reusable-component-yet","Don’t Build the Reusable Component Yet",{"_id":628,"publishedAt":629,"slug":630,"sponsored":12,"title":632},"36d88082-2c6e-437a-abae-0a265d2acd72","2026-11-04T16:34:13.530Z",{"_type":10,"current":631},"your-net-parallel-loop-can-become-serial-in-a-one-cpu-container","Your .NET parallel loop can become serial in a one-CPU container",{"_id":634,"publishedAt":635,"slug":636,"sponsored":12,"title":638},"af995b78-ffc3-49a7-b34a-5591a8d4cc6c","2026-10-29T22:30:00.000Z",{"_type":10,"current":637},"the-reports-of-stack-overflow-s-death-are-greatly-exaggerated","The reports of Stack Overflow's death are greatly exaggerated",{"_id":640,"publishedAt":641,"slug":642,"sponsored":12,"title":644},"ebcfb20b-77a8-4861-8d00-04bac4cbf04f","2026-10-28T19:27:07.461Z",{"_type":10,"current":643},"a-json-schema-is-not-an-ai-governance-layer","A JSON schema Is not an AI governance layer",{"data":646,"sourceMap":-1},{"count":647,"lastTimestamp":12},0]