In my talk I will argue that we can do much better by relying in a systematic way on types and capabilities.

AI agents are taking over many tasks that required humans before. This could be very good for productivity but how can we possibly trust our agents? There are a multitude of known ways an agent could go wrong, including prompt injections or plain hallucinations. The current techniques to control agent behavior are patchy and rudimentary, they certainly don't instill trust.
In my talk I will argue that we can do much better by relying in a systematic way on types and capabilities. We can use them to make not only bad states but also bad actions unrepresentable. This points us to a possible future where an inherently untrustworthy LLM agent can be trusted to stay within defined parameters when put in the right environment.
In this talk, we will walk through a concrete example of a boilerplate-heavy domain. By replacing common Scala 2 workarounds with Opaque Types, Extension Methods, Enums, and Union Types, we will demonstrate how to achieve a strictly typed, decoupled architecture without the noise.
Do you like it when compiler generates the boring code for you? Fast, mundane, boring-but-error-prone code? Do you need to implement such a code generator yourself? Have you found out that Shapeless/Mirrors bend your brain a bit too much?
Learn how to accelerate Scala code by orders of magnitude with Cyfra.
Drawing from multiple Scala LLM workshops we conducted this past year, I will share insights to significantly enhance your AI experience.
This talk presents McCCT, a new concurrency testing tool developed at KTH by the speakers in the context of an ongoing research project.