Assistant professorDepartment of Distributed and Dependable Systems
Faculty of Mathematics and Physics
Malostranské náměstí 25
118 00 Praha 1
Office: 309, 3rd floor
I’m interested in understanding the nature of programming and finding new and better ways of doing it. I use various methods ranging from theoretical programming langauge research, applied work resulting in open-source software, as well as interdisciplinary approaches that look at programming through the perspectives of history and philosophy. I believe that the most interesting developments in programming happen when a new way of thinking makes difficult problems disappear.
My current work is focused on programming systems. Programs are created not by just writing code, but by interacting with rich stateful programming systems or environments. Programming systems still include code, but they also encompass live or structure editors, runtime environment and other developer tools. I believe that we need to (i) find new fundamental ways of studying programming systems, (ii) revisit past programming systems that offered interesting ways of interaction, and (iii) apply those ideas to domains such as data science tooling or low-code and no-code programming.
In recent years, I also worked on functional programming and contributed to the development of the F# language and type providers at Microsoft Research. My PhD from University of Cambridge was on coeffects, a theory of context-aware programming languages. At University of Kent and The Alan Turing Institute, I spent most of my time working on programming tools for data science.
Interested in doing research on programming systems?
We have funding available for PhD and post-doc positions a range of topics related to programming languages and systems starting in 2024. If you are interested in joining us in Prague, please send me an informal inquiry at email@example.com.
If you are a Matyfz student already and are thinking about staying for a PhD or doing a research-oriented Master’s project focused on programming languages, email me at firstname.lastname@example.org to arrange a meeting or stop by after a lecture!
- Technical dimensions of programming systems - a framework for studying stateful, interactive, graphical systems
- The Lost Ways of Programming: Commodore 64 BASIC - BASIC as an interactive programming system
- Histogram: You have to know the past to understand the present - experimental data exploration tool
- The Gamma: Tools for open data-driven storytelling (and more demos) - data exploration for non-programmers
- Compost.js: Composable data visualization library - functional charting library for the web
- Coeffects: Context-aware programming languages - interactive explanation of my PhD research
- I have no fixed office hours, drop me an email if you want to meet!
- In winter 2023/24, I will be teaching Write your own tiny programming system(s)! (NPRG077)
(In the future, NPRG077 will alternate with NPRG075)
- In summer 2022/23, I supervised a lab for Introduction to Linux (NSWI177)
- In winter 2022/23, I was teaching Programming language design (NPRG075)
Education & experience
- Lecturer, University of Kent, UK, 2018-2022
- Visiting Researcher, The Alan Turing Institute, UK, 2016-2020
- Postdoc/contractor, Microsoft Research Cambridge, UK, 2014-2016
- PhD, Computer Laboratory, University of Cambridge, UK, 2017
- Mgr (MSc), Faculty of Mathematics and Physics, Charles University in Prague, 2010
AI Assistants: A Framework for Semi-Automated Data Wrangling, in IEEE Transactions on Knowledge and Data Engineering 35(9), pp. 9295-9306, 2023
Covid19, Charitable Giving and Collectivism: a data-harvesting approach, in Journal of Social Policy 52(3), pp. 473-494, 2023
Interaction vs. Abstraction: Managed Copy and Paste, in Proceedings of the 1st ACM SIGPLAN International Workshop on Programming Abstractions and Interactive Notations, Tools, and Environments, pp. 11–19, 2022
ISBN: 978-1-4503-9910-4, DOI: 10.1145/3563836.3568723
The Gamma: Programmatic Data Exploration for Non-programmers, in 2022 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), pp. 1-7, 2022
Programming as architecture, design, and urban planning, in Proceedings of the 2021 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software, pp. 114–124, 2021
ISBN: 978-1-4503-9110-8, DOI: 10.1145/3486607.3486770
Foundations of a live data exploration environment, in The Art, Science, and Engineering of Programming 4(3), pp. 8:1-8:37, 2020
Wrattler: Reproducible, live and polyglot notebooks, in , 2018
Miscomputation in software: Learning to live with errors, in The Art, Science, and Engineering of Programming 1(2), pp. 14:1-14:24, 2017
Effect Systems Revisited—Control-Flow Algebra and Semantics, in Semantics, Logics, and Calculi: Essays Dedicated to Hanne Riis Nielson and Flemming Nielson on the Occasion of Their 60th Birthdays, pp. 1-32, 2016
Programming language theory: Thinking the unthinkable, in Proceedings of the 27th Annual Workshop of the Psychology of Programming Interest Group, pp. 31, 2016
Types from data: making structured data first-class citizens in F#, in Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 477–490, 2016
ISBN: 978-1-4503-4261-2, DOI: 10.1145/2908080.2908115
Coeffects: a calculus of context-dependent computation, in Proceedings of the 19th ACM SIGPLAN International Conference on Functional Programming, pp. 123–135, 2014
ISBN: 978-1-4503-2873-9, DOI: 10.1145/2628136.2628160
In the Age of Web: Typed Functional-First Programming Revisited, in Proceedings ML Family/OCaml Users and Developers workshops, pp. 64–79, 2014
Coeffects: Unified Static Analysis of Context-Dependence, in Automata, Languages, and Programming, pp. 385-397, 2013
ISBN: 978-3-642-39212-2, DOI: 10.1007/978-3-642-39212-2_35
Themes in information-rich functional programming for internet-scale data sources, in Proceedings of the 2013 workshop on Data driven functional programming, pp. 1–4, 2013
ISBN: 978-1-4503-1871-6, DOI: 10.1145/2429376.2429378
Joinads: A Retargetable Control-Flow Construct for Reactive, Parallel and Concurrent Programming, in Practical Aspects of Declarative Languages, pp. 205-219, 2011
ISBN: 978-3-642-18378-2, DOI: 10.1007/978-3-642-18378-2_17
Collecting hollywood's garbage: avoiding space-leaks in composite events, in Proceedings of the 9th International Symposium on Memory Management, pp. 53–62, 2010