Hello, my name is Tomas Petricek

I'm an assistant professor at Charles University in Prague and a partner at fsharpWorks. I believe that the most fundamental work is not the one solving hard problems, but the one that offers new ways of thinking.

I follow this belief in my academic research on programming systems and history & philosophy of computing, but also in my writing on functional programming and in my F# trainings and consulting.

Previously, I did a PhD on context-aware computations at University of Cambridge, worked on F# tools in Microsoft Research, built novel tools for data exploration at The Alan Turing Institute, as well as studied programming systems and taught software engineering at the University of Kent.

Technical dimensions

We know how to study programming languages, but how to study stateful, interactive and graphical programming systems? We developed a quantitative framework for doing this.

Reconstructing Commodore 64 BASIC

I reconstruct the programming experience of a past system to learn what we've lost in modern programming environments. And write a simple Breakout game you can play!

Histogram programming environment

What if we represented programs as lists of interactions with programming environment, rather than as the final source code? Find out in this experimental data exploration environment!

Data exploration for non-programmers

Simple tools for data exploration that result in open and trans­parent data analyses. Also check out sample data analyses that we built at The Alan Turing Institute!

Composable data visualizations

Compost.js lets you compose rich interactive data visualizations from a small number of basic primitives. It is implemented in F# using Fable, but usable from plain JavaScript.

Context-aware programming languages

An interactive introduction to my PhD work on coeffects, a programming language abstraction for understanding how programs access the environment in which they run.

Research and teaching

I study and create new programming systems at Charles University, lecture about programming language design and supervise a range of interesting student projects.

F# consulting and training

At fsharpWorks, we offer a complete range of services including training, F# consulting, and full project development. Check out our F# materials, including my F# book and talks.

Mostly longer articles that may eventually become something bigger covering my research, F#, history and philosophy and more. See the blog archive for a complete list.

What can routers at Centre Pompidou teach us about software evolution?
Thursday, 7 December 2023

Where programs live? Vague spaces and software systems
Friday, 10 February 2023

The Timeless Way of Programming
Thursday, 1 September 2022

No-code, no thought? Substrates for simple programming for all
Thursday, 28 April 2022

Pop-up from Hell: On the growing opacity of web programs
Friday, 8 October 2021

Software designers, not engineers: An interview from alternative universe
Monday, 19 April 2021

Is deep learning a new kind of programming? Operationalistic look at programming
Wednesday, 7 October 2020

Creating interactive You Draw bar chart with Compost
Thursday, 16 July 2020

Data exploration calculus: Capturing the essence of exploratory data scripting
Tuesday, 21 April 2020

On architecture, urban planning and software construction
Wednesday, 8 April 2020

What to teach as the first programming language and why
Monday, 2 December 2019

What should a Software Engineering course look like?
Friday, 8 February 2019

Write your own Excel in 100 lines of F#
Monday, 12 November 2018

Programming as interaction: A new perspective for programming language research
Monday, 8 October 2018

Would aliens understand lambda calculus?
Tuesday, 22 May 2018

The design side of programming language design
Tuesday, 12 September 2017

Getting started with The Gamma just got easier
Wednesday, 14 June 2017

Papers we Scrutinize: How to critically read papers
Wednesday, 12 April 2017

The mythology of programming language ideas
Tuesday, 7 March 2017

Towards open and transparent data-driven storytelling: Notes from my Alan Turing Institute talk
Thursday, 2 March 2017

I work on programming systems, data science and philosophy of computing. This list includes a couple of top papers for each category. My publications page gives a complete list.

Technical Dimensions of Programming Systems
The Art, Science, and Engineering of Programming, 2023

Ascending the Ladder to Self-Sustainability: Achieving Open Evolution in an Interactive Graphical System
In Proceedings of Onward! Essays 2022

AI Assistants: A Framework for Semi-Automated Data Wrangling IEEE Transactions on Knowledge and Data Engineering, 2022

The Gamma: Programmatic Data Exploration for Non-programmers In Proceedings of VL/HCC 2022.

Linked Visualisations via Galois Dependencies
In Proceedings of POPL 2022

Programming as Architecture, Design, and Urban Planning
In Proceedings of Onward! Essays 2021

Composable data visualizations
Journal of Functional Programming, 2021

Foundations of a live data exploration environment
The Art, Science, and Engineering of Programming, 2020

What we talk about when we talk about monads
The Art, Science, and Engineering of Programming, 2018

Data exploration through dot-driven development
In proceedings of ECOOP 2017.

Miscomputation in software: Learning to live with errors
The Art, Science, and Engineering of Programming, 2017

Types from data: Making structured data first-class citizens in F# In Proceedings of PLDI 2016

Various academic texts that have not been published yet. If you have any feedback on these, please let me know!

The Rise and Fall of Extensible Programming Languages
Thursday, 19 October 2023

Cultures of programming: Understanding the history of programming through controversies and technical artifacts
Tuesday, 2 April 2019

I enjoy traveling and add one new picture each month. See 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 and the first photos of 2024.