[{"data":1,"prerenderedAt":231},["ShallowReactive",2],{"navigation":3,"talk-/talks/systems-architecture-agentic-ai":162,"person-Willow Sparks":216,"/talks/systems-architecture-agentic-ai-surround":226},[4],{"title":5,"path":6,"stem":7,"children":8,"page":161},"Talks","/talks","talks",[9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157],{"title":10,"path":11,"stem":12},"The Single Responsibility Principle","/talks/single-responsibility-principle","talks/single-responsibility-principle",{"title":14,"path":15,"stem":16},"The Open/Closed Principle","/talks/open-closed-principle","talks/open-closed-principle",{"title":18,"path":19,"stem":20},"Spack","/talks/spack","talks/spack",{"title":22,"path":23,"stem":24},"GitHub Actions","/talks/github-actions","talks/github-actions",{"title":26,"path":27,"stem":28},"Inheritance is Evil","/talks/inheritance-is-evil","talks/inheritance-is-evil",{"title":30,"path":31,"stem":32},"Nuxt","/talks/nuxt","talks/nuxt",{"title":34,"path":35,"stem":36},"LogSeq","/talks/logseq","talks/logseq",{"title":38,"path":39,"stem":40},"Time Complexity","/talks/time-complexity","talks/time-complexity",{"title":42,"path":43,"stem":44},"How to Review a Codebase","/talks/how-to-review-a-codebase","talks/how-to-review-a-codebase",{"title":46,"path":47,"stem":48},"Numba and Bitmasks","/talks/numba-and-bitmasks","talks/numba-and-bitmasks",{"title":50,"path":51,"stem":52},"Mutation Testing","/talks/mutation-testing","talks/mutation-testing",{"title":54,"path":55,"stem":56},"Message Passing Interface","/talks/message-passing-interface","talks/message-passing-interface",{"title":58,"path":59,"stem":60},"P vs NP","/talks/p-vs-np","talks/p-vs-np",{"title":62,"path":63,"stem":64},"Verbose Graphics with Rust and Vulkan","/talks/verbose-graphics-with-rust-and-vulkan","talks/verbose-graphics-with-rust-and-vulkan",{"title":66,"path":67,"stem":68},"Slidev","/talks/slidev","talks/slidev",{"title":70,"path":71,"stem":72},"Nuxt Content By Example","/talks/nuxt-content-by-example","talks/nuxt-content-by-example",{"title":74,"path":75,"stem":76},"Rust MMU Guest Lecture","/talks/rust-mmu-guest-lecture","talks/rust-mmu-guest-lecture",{"title":78,"path":79,"stem":80},"As We May Think - AI for Coding","/talks/ai-for-coding","talks/ai-for-coding",{"title":82,"path":83,"stem":84},"Git in Practice: Techniques for Collaborative Development","/talks/git-in-practice","talks/git-in-practice",{"title":86,"path":87,"stem":88},"A Crash Course in Natural Language Processing","/talks/natural-language-processing","talks/natural-language-processing",{"title":90,"path":91,"stem":92},"Graphs: Ruining the Travelling Salesman's Day Since 1930","/talks/graph-theory","talks/graph-theory",{"title":94,"path":95,"stem":96},"Automating File Creation With Jinja2 Templates in Python","/talks/jinja2-templates-with-python","talks/jinja2-templates-with-python",{"title":98,"path":99,"stem":100},"What the hell is a Monad?","/talks/monads","talks/monads",{"title":102,"path":103,"stem":104},"The Liskov Substitution Principle","/talks/liskov-substitution-principle","talks/liskov-substitution-principle",{"title":106,"path":107,"stem":108},"Everything as a Specification","/talks/everything-as-a-specification","talks/everything-as-a-specification",{"title":110,"path":111,"stem":112},"The Interface Segregation Principle","/talks/interface-segregation-principle","talks/interface-segregation-principle",{"title":114,"path":115,"stem":116},"The Dependency Inversion Principle","/talks/dependency-inversion-principle","talks/dependency-inversion-principle",{"title":118,"path":119,"stem":120},"A Field Guide To Coupling","/talks/a-field-guide-to-coupling","talks/a-field-guide-to-coupling",{"title":122,"path":123,"stem":124},"Why Python is (and isn't) Fast","/talks/why-python-is-slow","talks/why-python-is-slow",{"title":126,"path":127,"stem":128},"Cybersecurity","/talks/cybersecurity","talks/cybersecurity",{"title":130,"path":131,"stem":132},"What Linux Distribution Should You Use?","/talks/what-linux-distribution","talks/what-linux-distribution",{"title":134,"path":135,"stem":136},"😀 🔤Hello World!🔤❗️: The Weird World of Esolangs","/talks/esolangs","talks/esolangs",{"title":138,"path":139,"stem":140},"Networking 101: From your computer to the internet","/talks/networking-101","talks/networking-101",{"title":142,"path":143,"stem":144},"Agent Communication Protocols","/talks/agent-communication-protocols","talks/agent-communication-protocols",{"title":146,"path":147,"stem":148},"Why I hate try/catch, and why you should hate it too!","/talks/hate-try-catch","talks/hate-try-catch",{"title":150,"path":151,"stem":152},"Systems Architecture and Agentic AI","/talks/systems-architecture-agentic-ai","talks/systems-architecture-agentic-ai",{"title":154,"path":155,"stem":156},"The Beauty of Vim Motions","/talks/beauty-of-vim-motions","talks/beauty-of-vim-motions",{"title":158,"path":159,"stem":160},"Don't let your servers do the cooking! Refactoring a messy codebase using design patterns","/talks/design-patterns","talks/design-patterns",false,{"id":163,"title":150,"body":164,"date":205,"description":170,"extension":206,"imgClass":207,"imgUrl":208,"isImgLogo":209,"meta":210,"navigation":209,"path":151,"recordingUrl":212,"seo":213,"speaker":214,"stem":152,"__hash__":215},"talks/talks/systems-architecture-agentic-ai.md",{"type":165,"value":166,"toc":200},"minimark",[167,171,174,193,196],[168,169,170],"p",{},"This talk will be about the underlying concepts and ideas for building large-scale systems in the context of agentic AI!",[168,172,173],{},"I'll cover a few topics, such as:",[175,176,177,181,184,187,190],"ul",{},[178,179,180],"li",{},"The actor model",[178,182,183],{},"Tool calling, sandboxes and \"code mode\"",[178,185,186],{},"Context Engineering and Harness Engineering",[178,188,189],{},"Kubernetes and Orchestration",[178,191,192],{},"Macro-agents, micro-agents and recursive language models (RLM)",[168,194,195],{},"By the end I hope to give a bit more insight into how agents work, and also draw some useful parallels to various other ideas in computing.",[197,198],"pdf",{"url":199},"/talk-assets/systems-architecture-agentic-ai/presentation.pdf",{"title":201,"searchDepth":202,"depth":203,"links":204},"",1,2,[],["Date","2026-07-08T00:00:00.000Z"],"md","bg-white","/images/systems-architecture-agentic-ai.jpg",true,{"pronouns":211},"she/her","https://stfc365-my.sharepoint.com/personal/ashraf_hussain_stfc_ac_uk/_layouts/15/embed.aspx?UniqueId=4060ea8c-d3d6-4282-b868-d1f70d8cd2a7&embed=%7B%22ust%22%3Atrue%2C%22hv%22%3A%22CopyEmbedCode%22%7D&referrer=StreamWebApp&referrerScenario=EmbedDialog.Create",{"title":150,"description":170},"Willow Sparks","kqzdS8kY6fPW5Vx8UG6KSrxQQCfwC-OjYx4-VTqXbtA",{"id":217,"title":218,"extension":219,"imgUrl":220,"meta":221,"name":214,"roles":222,"stem":224,"__hash__":225},"people/people/willow-sparks.yml","Graduate Software Engineer","yml","/images/people/willow-sparks.jpg",{},[223],"Committee Member","people/willow-sparks","fjs2l6kUY59lq2f81sCpTNM1Z_lM8WUfcYyyF_HNpaI",[227,229],{"title":146,"path":147,"stem":148,"description":228,"children":-1},"A overview of the drawbacks of try catch, and why using results is so much better.",{"title":154,"path":155,"stem":156,"description":230,"children":-1},"An overview of vim motions and why they are so lovely to use.",1785926663717]