Talks

Keynotes, invited talks, developer talks, and internal seminars delivered at conferences and events.

Keynotes

28 May 2015 Keynote

Beautiful Design, Beautiful Coding

Software quality is a multi-faceted concept, encompassing multiple dimensions, from coding style to correctness and design. This talk will focus on two specific aspects that are part of active research. First, I will present methods to assess the design of a software system, and identify the parts that are messy, complicated and ugly. Second, I will discuss the process of constructing and evolving software through the IDE, in terms of how developers read, write and understand code, and how such activities can be improved. I will be presenting both the state of the art and the ongoing research in these areas, with particular emphasis on the efforts and the vision of our group.

Invited Talks

11 September 2023 Invited Talk

The Rise of the Stochastic Parrots for Developers

As we surf the crest of the latest AI tidal wave, we developers find ourselves savoring our portion of the technological banquet. Enthusiasm is boiling over, with shiny toys such as GitHub Copilot and ChatGPT heralding promises of skyrocketing our productivity. At CodeLounge, we have been using Copilot for a year, while also collecting data about its usage by means of Tako, an IDE telemetry collector & analyzer that we developed. In this talk, starting from this internal data, we will reflect on the impact that such tools had and might have on the structure and daily activity of a development team.

31 August 2017 Invited Talk

Parsing and Modeling Software Engineering Artifacts

Presented in the Special International Track on Software Analytics, chaired by Shinpei Hayashi (Tokyo Institute of Technology), at the Waseda University Green Computing Systems Research and Development Center.

7 March 2016 Invited Talk

Island Parsing

Artifacts containing natural language, like Q&A websites (e.g., Stack Overflow), tutorials, and development emails, are essential to support software development, and they have become a popular subject for software engineering research. The analysis of such artifacts is particularly challenging because of their heterogeneity: these resources consist of natural language interleaved with fragments of multiple programming and markup languages. In this tutorial, I will focus on our efforts towards a systematic approach to model contents of such artifacts, enabling holistic analyses that fully exploit their intrinsic heterogeneous nature. In particular, I will illustrate our StORMeD framework (http://stormed.inf.usi.ch), and how its parsing service can be effectively used to implement a holistic summarizer for Stack Overflow discussions.

4 October 2010 Invited Talk

Behavioral Modeling, Inference and Validation for Component Specifications

Hosted by Prof. Daniel Jackson (MIT CSAIL).

Developer Conference Talks

7 November 2025 Developer Talk

Eternal Sunshine of the Spotless Macro

Programming languages are evolving faster than ever, frequently introducing new features to support different programming techniques. One such technique is metaprogramming, broadly defined as the ability of programs to manipulate other programs as data. Since this concept can take many forms, we will first explore the diverse flavors of metaprogramming in modern languages, from Ruby's eigenclasses to Groovy AST transformations—and as a bonus, you;ll have a reason to stop saying that "Java has reflection."" Then, we will dive into one of the most powerful and cool metaprogramming features, macros, that - standing from the shoulders of Lisp - is now gaining traction in languages like Julia, Elixir, Rust, and Scala.

21 March 2024 Developer Talk

Minimize your Python Discomfort: A tour of NLP with Spacy, ScalaPy, and Scala 3

In many domains of computer science, state-of-the-art frameworks are written in Python. Natural Language Processing (NLP) is such a domain, and if you want to use cutting-edge approaches, you have to resort to Python libraries. In this talk, I will show how you can use ScalaPy to leverage an excellent NLP library like Spacy, minimizing your discomfort of using Python, and enhancing your comfort with Scala 3 for the remaining parts of your application. I will show everything from configuring your (minimal) environment to interacting with Python, defining facades, and controlling memory usage.

14 March 2024 Developer Talk

NLP à la Suisse

As developers, we manipulate data every day. But there's one kind of data that is difficult and non-trivial to process and structure: human language. This is even more difficult when you're in a country like Switzerland, where there are four official languages! Fortunately, there has been a decades long effort in computer science regarding this specific purpose, namely Natural Language Processing (NLP).

6 June 2023 Developer Talk

Teaching Domain Specific Languages in Scala

In 2017, I was asked to teach a small, 3 credits master course on engineering domain specific languages. At the time I was already a Scala enthusiast, and I had no doubt that it would have been the best language to teach this course. While learning about DSL, students are introduced to the basics like functional domain modeling, parser combinators, extension and symbolic-named methods, but also advanced topics like metaprogramming, and how to implement programming language features in Visual Studio Code (using Scala.js).

5 October 2019 Developer Talk

Design and Effectiveness of Internal DSLs in Scala

Domain-Specific Languages (DSLs) are machine languages tailored to a particular application domain, allowing to produce more concise and understandable programs, with a tighter stakeholder integration. In particular, internal DSLs are a particular class of DSLs written inside a given general purpose programming language. Not all programming languages are equally effective for this. Through quotes of Martin Fowler, some history, and code examples, we will learn why you should care about internal DSLs and more importantly a great language to design them: Scala.

Internal Seminars

21 March 2025 Internal Seminar

Eternal Sunshine of the Spotless Macro

Programming languages are evolving faster than ever, frequently introducing new features to support different programming techniques. One such technique is metaprogramming, broadly defined as the ability of programs to manipulate other programs as data. Since this concept can take many forms, we will first explore the diverse flavors of metaprogramming in modern languages, from Ruby's eigenclasses to Groovy AST transformations—and as a bonus, you'll have a reason to stop saying that "Java has reflection." Then, we will dive into one of the most powerful and cool metaprogramming features, macros, that - standing from the shoulders of Lisp - is now gaining traction in languages like Julia, Elixir, Rust, and Scala.

29 April 2021 Internal Seminar

How does CodeLounge Develop?

If you open the website of CodeLounge, you can read a beautiful vision that includes focus on the substance, frequent revisiting, transparency, and making it fun. However, while these words are perfectly suited for a vision and for external visibility, one may wonder exactly how they are cast into practices and a concrete development culture.