How do we formally model and understand interaction with programming systems? The choose-your-own-adventure calculus is a small model of an interaction pattern that we find in data exploration, data wrangling or interactive theorem proving. The calculus lets us talk about the pattern and study its different properties, much like formal models based on the lambda calculus let us understand programming languages.| tomasp.net
Back in June, I was in Paris for the NewCrafts conference to talk about the growing opacity of software systems. This was fun, partly because NewCrafts is a fantastic conference (you can already get your tickets for 2024!) and also partly because my talk (arguing against many established "good engineering" practices) was in many ways arguing for the exact opposite than one of the keynotes, leading to many interesting conversations. While in Paris, I also visited the famous Centre Pompidou. Pe...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
Architecture and urban planning have been a useful source of ideas for thinking about programming. I have written various blog posts and a paper Programming as Architecture, Design, and Urban Planning that argue why and explore some of those ideas. Like urban planning and architecture, the design of any interesting software system deals with complex problems that can rarely be analysed in full and with structures that will continue to evolve in unexpected ways after they are created. My most ...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
Figure 1. The Timeless Way of Building - Christopher Alexander Many programmers know the name of the architect Christopher Alexander for his work on design patterns that has been adapted into the world of programming. A lot of people know of the, sometimes ridiculed, patterns like strategy (functions!) or visitor (pattern matching!) and some have read the Gang of Four design patterns book that introduced them. A few people know of the Patterns of Software book by Richard P. Gabriel, which is ...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
Figure 1. Virtually eliminates your coding load. FLOW-MATIC promotional brochure (1957) No-code is a hot new topic for programming startups. The idea is to develop a system that allows end-users to do the programming they need without the difficult task of writing code. There are no-code systems for building mobile apps, analysing data and many more. It is perhaps not a surprise that "eliminating programming load" is not as new idea as some people may think and there is an excellent blog seri...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
I started to learn how to program in high school at the end of the 1990s using a mix of BASIC, Turbo Pascal and HTML with JavaScript. The seed for this blog post comes from my experience with learning how to program in JavaScript, without having much guidance or organized resources. This article continues a theme that I started in my interactive Commodore 64 article, which is to look at past programming systems and see what interesting past ideas have been lost in contemporary systems. Unlike...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
While the physicists investigate the nature of the mysterious portal that has recently appeared in North London, several human beings recently came through the portal, which appears to be a gate into an alternative universe. As we understood from the last two people coming through the portal, it seems to be a linked with a universe that is in many ways like ours, reached about the same level of social and technological development, but differs in numerous curious details. The paths through wh...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
In most discussions about how to make programming better, someone eventually says something along the lines of "we'll just have to wait until deep learning solves the problem!" I think this is a naively optimistic idea, but it raises one interesting question: In what sense are programs created using deep learning a different kind of programs than those written by hand? This question recently arose in discussions that we have been having as part of the PROGRAMme project, which explores histori...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
For a long time, I've been thinking about how to design a data visualization library that would make it easier to compose charts from simple components. On the one hand, there are charting libraries like Google Charts, which offer a long list of pre-defined charts. On the other hand, there are libraries like D3.js, which let you construct any data visualization, but in a very low-level way. There is also Vega, based the idea of grammar of graphics, which is somewhere in between, but requires ...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
Most real-world programming languages are too complex to be studied using formal methods. For this reason, academics often work with simple theoretical languages instead. The λ-calculus is a simple formal language that is often used for talking about functional languages, the π-calculus is a model of concurrent programming and there is an entire book, A Theory of Objects modelling various object-oriented systems. Animation from Financial Times article "Why the world's recycling system stopp...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
Despite having the term science in its name, it is not always clear what kind of discipline computer science actually is. Research on programming is sometimes like science, sometimes like mathematics, sometimes like engineering, sometimes like design and sometimes like art. It also has a long tradition of importing ideas from a wide range of other disciplines. In this article, I will look at ideas from architecture and urban planning. Architecture has already been an inspiration for design pa...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
The number of Google search results for the phrase "choosing the first programming language" at the time of writing is 15,800. This illustrates just how debated the issue of choosing the first programming language is. In this blog post, I will not actually try to answer the question posed in the title of the post. I will not discuss what language we should teach as the first one. Instead, I will look at a more interesting question. I will investigate the arguments that are used in favour of o...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
When I joined the School of Computing at the University of Kent, I was asked what subjects I wanted to teach. One of the topics I chose was Software Engineering. I spent quite a lot of time reading about the history of software engineering when working on my paper on programming errors and I go to a fair number of professional programming conferences, so I thought I can come up with a good way of teaching it! Yet, I was not quite sure how to go about it or even what software engineering actua...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
I've been teaching F# for over seven years now, both in the public F# FastTrack course that we run at SkillsMatter in London and in various custom trainings for private companies. Every time I teach the F# FastTrack course, I modify the material in one way or another. I wrote about some of this interesting history last year in an fsharpWorks article. The course now has a stable half-day introduction to the language and a stable focus on the ideas behind functional-first programming, but there...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
In May, I joined the School of Computing at the University of Kent as a Lecturer (equivalent of Assistant Professor in some other countries). When applying for the job, I spent a lot of time thinking about how to best explain the kind of research that I would like to do. This blog post is a brief summary of my ideas. I'm interested in way too many things, including philosophy and design and data journalism, but this post will be mainly about programming language research. After all, I'm a mem...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
Unless you are a sci-fi author or some secret government agency, the question whether aliens would understand lambda calculus is probably not your main practical concern. However, the question is intriguing because it nicely vividly formulates a fundamental question about our formal mathematical knowledge. Are mathematical theories and results about them invented, i.e. constructed by humans, or discovered, i.e. are they eternal truths that exist regardless of whether there are humans to know ...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
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 ...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
Over the last year, I have been working on The Gamma project, which aims to make data-driven visualizations more trustworthy and to enable large number of people to build visualizations backed by data. The Gamma makes it possible to create visualizations that are built on trustworthy primary data sources such as the World Bank and you can provide your own data source by writing a REST service. A great piece of feedback that I got when talking about The Gamma is that this is a nice ultimate go...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
As someone who enjoys being at the intersection of the academic world and the world of industry, I'm very happy to see any attempts at bridging this harmful gap. For this reason, it is great to see that more people are interested in reading academic papers and that initiatives like Papers We Love are there to help. There is one caveat with academic papers though. It is very easy to see academic papers as containing eternal and unquestionable truths, rather than as something that the reader sh...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
If you read a about the history of science, you will no doubt be astonished by some of the amazing theories that people used to believe. I recently finished reading The Invention of Science by David Wootton, which documents many of them (and is well worth reading, not just because of this!) For example, did you know that if you put garlic on a magnet, the magnet will stop working? Fortunately, you can recover the magnet by smearing goats blood on it. Giambattista della Porta tested this and c...| Tomas Petricek - Languages and tools, open-source, philosophy of science and ...
Framework that captures the characteristics of programming systems, makes it possible to compare and better understand them and find interesting new points in their design space.| tomasp.net