Tomas Petricek

Searching for new ways of thinking in programming & working with data

I believe that the most interesting work is not the one solving hard problems, but the one changing how
we think about the world. I follow this belief in my work on data science tools,
functional programming and F# teaching, in my programming languages research
and I try to understand it through philosophy of science.

Everybody can use Excel, but creating a web-based data-driven story requires
professional developers, if not a team. I'm working on making data-driven
storytelling easier, more open and reproducible.

The Gamma is a research project to build tools
that easily integrate with modern data sources (open government data, public online
sources) and let users easily create visualizations that are directly linked to
the data, making the visualizations more transparent, reproducible, but also easy
to adapt to explore other aspects of the data.

Visualizing Olympic medalists
is a demo that shows how such open data-driven articles could look
like. It lets explores the history of Olympic medals.

Academic web page has links to other
published papers, work-in-progress drafts, research talks and also information
about student projects and courses that I supervised.

Philosophy of science

During my (computer science) PhD, I became interested in how programming language research is done
and how it should be done. We tend to think that science has infallible
methods for discovering the truth, but is that the case? Or is science
more 'sloppy' and 'irrational' than its methodological image as Paul Feyerabend says?

The word "design" is often used when talking about programming languages. In fact, it even made
it into the name of one of the most prestigious academic programming conferences, Programming
Language Design and Implementation (PLDI). Yet, it is
almost impossible to come across a paper about programming languages that uses design methods to
study its subject. We intuitively feel that "design" is an important aspect of programming
languages, but we never found a way to talk about it and instead treat programming languages as
mathematical puzzles or as engineering problems.

This is a shame. Applying design thinking, in the sense used in applied arts, can let us talk
about, explore and answer important questions about programming languages that are ignored when
we limit ourselves to mathematical or engineering methods. I think the programming language
community is, perhaps unconsciously, aware of this - one of the reviews of my recent PLDI
paper said "this is a nice, novel design paper,
and the community often wants more design papers in our conferences". The problem is that we
we do not know how to write and evaluate work that follows design methodology.

To better understand how design works, I recently read The Philosophy of Design
by Glenn Parsons. The book perhaps did not answer many of my questions about design, but it did give
me a number of ideas about what design is, what questions it can explore and how those could be
relevant for the study of programming languages...

Here you'll find what I'm working on — my blog posts tend to be either updates
about projects I'm working on, trainings and talks I'm doing, or longer posts that are
early versions of my ideas — some of them become papers, some of them have been
cited in other papers, some will be soon forgotten.

Create open visualizations in four steps. The Gamma aims to make it
easier to create transparent data visualizations that let the reader explore data further.
Until today, getting started with The Gamma was tricky, because you had to provide data
via a REST service. The new Gallery makes it easy to upload your own CSV file or paste
data from Excel and it also guides you through the process and lets you easily embed the
results into your blog. If you were curious about The Gamma, now you can start using it!

It is very easy to see academic papers as containing eternal and unquestionable
truths, rather than as something that the reader should actively interact with. I recently
remarked about this saying that just reading papers is too passive. In this blog post, I
try to uncover some of the caveats when reading papers - how we misread history and ignore
historical context in which paper was written. I discuss different ways of reading papers
and suggest a more active way of reading.

What can computer science learn from the fantastically wrong theories of 16th
century science? What is amazing about the old stories is that the conclusions that now seem
funny often had very solid reasoning behind them. In the same way, it is likely that some of
our current beliefs about computer science and programming will appear fantastically wrong to
a computer scientist of 24th century.

Can open and engaging data visualizations help to fight post-fact world, fake
news and the decreasing interest and trust in statistics?
I recently gave a talk about my work on programming tools for open, transparent
data-driven storytelling at the Alan Turing Institute in London. You can watch the talk on
YouTube, but if you prefer text, this blog post is a short summary of the key ideas.

There were a lot of rumors recently about the death of facts and statistics.
I believe the core of the problem is that working with facts is quite tedious and the results
are often not particularly exciting. This is the problem that I'm trying to address with
The Gamma project - and today, I'm happy to share the first reusable component based on the
work that you can use in your data visualization projects.

I published papers about programming languages including type providers, theory of coeffects,
concurrent and reactive programming, but also philosophy and history of programming.
My academic page has a complete list, including teaching and
other activities.

The rise of open data initiatives means that there is an increasing amount of raw
data available. At the same time, the general public increasingly distrusts statistics and
post-truth has been chosen as the word of 2016. The Gamma project aims to help reverse this development.

Data literacy is becoming increasingly important. While spreadsheets make
simple data analytics accessible to a large number of people, creating transparent scripts
requires expert programming skills. In this paper, we describe the design of a data
exploration language that makes the task more accessible by embedding advanced programming
concepts into a simple core language.

Tomas Petricek. The Art, Science, and Engineering of Programming, 2017

Computer programs do not always work as expected. In fact, ominous warnings about
the desperate state of the software industry continue to be released with almost ritualistic
regularity. In this paper, we look at the 60 years history of programming and at the different
practical methods that software community developed to live with programming errors.