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.
- Computation + Journalism 2015 paper about an earlier prototype describes ideas and motivations of the project in more details. Watch a 15 minute demo or a 45 minute talk from StrangeLoop.
- The Gamma is on GitHub and everything is available under the MIT license. You can learn about the latest news on Twitter at @thegamma_net.
I'm a frequent conference speaker, founding member of the F# Software Foundation author of C# and F# books and author of many definitive F# libraries. I have been Microsoft MVP since 2004 and used F# since early Microsoft Research versions.
Have you seen the F# testimonials and are you thinking how can your company also benefit from the safety, correctness, efficiency and faster time-to-market provided by F#?
- fsharpWorks trainings — At fsharpWorks, we love sharing our knowledge with your team and we offer a wide range of workshops. We created an online course about F# in Finance and Type Providers and we regularly run an in-person course Fast Track to F# in London. We offer all of these and more as on-site trainings too — just drop us an email!
- F# books and articles — I wrote Real World Functional Programming, which explains functional concepts using C# and F#, edited a collection of F# case studies: F# Deep Dives and also wrote a free O'Reilly report: Analyzing and Visualizing Data with F#.
Coeffects and research
I recently submitted my PhD thesis at University of Cambridge and I closely collaborate with the F# team in Microsoft Research Cambridge.
My recent publications cover a range of topics from theory of context-aware programming, F# and type providers to language extensions for concurrent, reactive and asynchronous programming.
- Coeffects playgrouund is an interactive essay that lets you explore my PhD research in an accessible and fun way. You can read more in our ICFP 2014 paper.
- 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?
- History and philosophy of types is my most recent work in this area. It uses types as an example of a concept that appears simple, but is (and needs to be) more complex. Watch my LambdaDays talk or read the full-length Onward! essay.
- Philosophy posts on my blog — start with philosophy and history books every computer scientist should read and come to some of the events organized by the HaPoC Comission.
Monday, 2 December 2019, 5:48 PM
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 or against particular programming languages in computer science curriculum. I am more interested in the kind of argumentation that is employed to support a particular choice than in the specific languages involved. This approach is valuable for two reasons. First, by looking at the argumentation used, we can learn what educators consider important about computer science. Second, understanding the motivations behind different arguments allows us to make our own debates about the choice of a programming language more informed.
The scope of this blog post is limited to the choice of the first programming language taught in an undergraduate computer science programmes at universities. This means that I will not discuss other important contexts such as choices at a primary or a secondary education level, choices for independent learners and choices in other university degrees that might involve programming.
Note that this blog post is adapted from an essay that I wrote as part of a Postgrduate Certificate for Higher Education programme at University of Kent, so it assumes less knowledge about programming than a typical reader of my blog has. This makes it accessible to a broader audience thinking about education though!
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.
Friday, 8 February 2019, 12:22 PM
Is there any fundamental knowledge about software engineering that will remain relevant in the next 100 years? In this blog post, I discuss why teaching software engineering in a university environment is difficult. I also suggest how we can design a more useful software engineering course that will not go out of date with the next shift in technologies and methodologies. The key idea is that we need to focus on the motivation behind software engineering and the reasoning that leads to the adoption of particular software engineering methods in the face of particular problems that the software industry is attempting to address.
Monday, 12 November 2018, 1:58 PM
Monday, 8 October 2018, 1:22 PM
In programming research, we say a lot about programs and languages, but very little about the actual process of programming. One simple trick that will make programming language research significantly more interesting is to think about programs not as expressions, but as a result of a sequence of interactions that create it. This includes usual things such as writing code and refactoring, but if we also include, say, running a part of the program, we become capable of saying many more interesting things and building new powerful programming tools.
Tuesday, 22 May 2018, 11:27 AM
The question whether aliens would understand lambda calculus is intriguing because it 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 them?
Tuesday, 12 September 2017, 6:42 PM
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. Yet, it is almost impossible to come across a paper about programming languages that uses design methods to study its subject. In this article, I want to convince you that this is a missed opportunity.
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.
Jonathan Edwards, Stephen Kell, Tomas Petricek, Luke Church. Proceedings of PPIG 2019
Research on programming systems design needs to consider a wide range of aspects in their full complexity. In this paper, we ask whether new media such as multimedia essays can serve as publication formats, more suitable for evaluating programming systems design.
Cultures of programming: Understanding the history of programming through controversies and technical artifacts
Tomas Petricek. Unpublished draft.
This paper documents the socio-technological context that shapes programming languages. To structure our discussion, we introduce the idea of a culture of programming which embodies a particular perspective on programming. We identify four major cultures: hacker culture, engineering culture, managerial culture and mathematical culture.
Mariana Marasoiu et al. Proceedings of European Data and Computational Journalism Conference, 2018
We explore the difficulties of open data analysis using the data available on EU funding to the UK. We report on some of the fundamental difficulties we observed whilst analysing this data and we suggest ways of addressing such difficulties.