Tomas Petricek's homepage

Functional programming & Trainings

I’m a frequent speaker at F# and .NET events, author of numerous C# and F# articles and a StackOverflow addict. I have been Microsoft C# MVP since 2004 and I used F# since early Microsoft Research versions.

I’m convinced that F# and functional prog­ram­ming work well in practice and I do my best to help them:

I'm also partly involved in Phalanger, which is a PHP compiler for .NET. If you're interested in integrating PHP and ASP.NET contact DEVSENSE.

Academia & research

I'm a PhD student at the University of Cambridge, under the supervision of Alan Mycroft and Don Syme. I did a Master's degree at Charles University and visited Microsoft Research as an intern.

I'm interested in programming models and questions like: What is the best "language" for solving a given problem? How to encode these models in existing lang­uages? How to help programmers avoids certain types of errors when using the model?

  • Reactive Programming. I designed a language extension for F# and Haskell that allows easy encoding of various programming models for reactive, parallel and concurrent programming.
  • Distributed Web. I designed the first web framework for F# that integrates client-side and server-side development, which also inspired commercial WebSharper.

You can find my publications and other information about my research projects on my academic page.

Latest writings from my blog

F# courses and talks (Winter 2012 and beyond...)

A couple of months ago, I posted a list of my F# talks and courses for Autumn 2011. Although I tried hard to have fewer speaking engagements during the winter and spring, there are quite a few events that I'd like to invite you to.

Last year, I spent quite a lot of time talking about asynchronous programming and agents. I think this is still a very important topic and especially agent-based programming in F# is a powerful way to implement concurrency primitives (like blocking queue), as well as complex systems (like trading screens and market analysis). I also wrote a series of articles on this topic that are available on MSDN and should be a good starting point.

Over the next few months, I'll be doing some talks about type providers, which is an upcoming F# 3.0 technology for accessing data. However, I also hope to find some time to look at other directions for F#, especially how it can be used in an online web-based environment, either using Azure or by translating F# to JavaScript using a recently announced open-source project named Pit.

Continue reading to see the list of planned talks, tutorials and courses....

Read the complete article
Friday, January 13, 2012

More Recent Articles

  • Regions and navigation bar for F# in Visual Studio (1/1/2012)

    The beginning of a new year may be a good time for writing one lightweight blog post - this article shows two hidden features of F# IntelliSense in Visual Studio and also talks about writing plugins using the F# open-source release.

  • F# Math (IV.) - Writing generic numeric code (11/27/2011)

    Writing generic numeric code in .NET is difficult, because .NET generics do not support constraints specifying that a type has to support certain numeric operations. In this article, we look how to solve the problem in F#. Using static member constraints, it is possible to write simple generic calculations and using the INumeric interface, we can capture numeric operations for a type and use them when implementing complex types such as a matrix.

  • F# Math (III.) - Defining custom numeric types (11/24/2011)

    In this article, we look at defining custom numeric types in F#. We'll create a numeric type representing numbers in a clock artihmetic (with base 5) and we'll see how to define custom operators, numeric literals and how to support F# PowerPack matrices.

  • F# Math (II.) - Using matrices for graph algorithms (11/9/2011)

    This article introduces the matrix type available in F# PowerPack. It discusses how to create matrices, manipulate matrices using indexing and slices and how to use built-in functions for working with them. As a running example, we use matrix to represent a graph using an adjacency matrix.

  • F# Math (I.) - Numeric types in PowerPack (11/2/2011)

    This article discusses two numeric types that are available in F# PowerPack - BigRational represents arbitrary precision rational numbers and complex represents (floating-point) complex numbers. The types can be nicely used from F# as well as from C#.

  • F# Math - Numerical computing and F# PowerPack (11/2/2011)

    This article is the first article of a series where I'll explain some of the F# features that are useful for numeric computing as well as some functionality from the F# PowerPack library.