Spotlight Topics

Most of the content on this page is related to one of the topics that I was recently interested in, so here you can find a page for every topic with some my articles, comments and other useful links:

Some Interests

Academic Stuff

As already mentioned, I'm a student of computer science at Faculty of Mathematics and Physics [^] of Charles University.

The topcis that I'm interested in are still changing :-), but you can find some up-to-date information on my academic page. My Bachelor thesis (it is available there) was about type-safe "AJAX" web development in F# with modality tracked in a type system using computation expressions (aka "monads"), so you can expect topics related to programming languages and tools...

Photography

I like taking photos, but updating the online gallery frequently was always a bit problem :-). That's why this page has a calendar, which shows a new picture every month (and also forces me to find and upload a new picture regularly).


Calendar - May 2008

More About Me

I'm student and Microsoft C# MVP from Prague, Czech Republic. I'm studying computer science at Charles University of Prague and I finished Bachelor studies in 2007.

Recently, I spent 3 months in Microsoft Research as an intern (with the F# team) and started wokring on the F# WebTools [^] project which allows developing "AJAX" applications purely in F# and this was also a topic of my thesis. I believe that F# and functional programming has a very promissing future.

The second topic that I'm involved in is maintaining of a project called Phalanger [^], which is a PHP language compiler started by my fellow students.

Latest Articles by Tomáš Petříček

Thesis: Client-side Scripting using Meta-programming

I realized that I haven’t yet posted a link to my Bachelor Thesis, which I partially worked on during my visit in Microsoft Research and which I successfully defended last year. The thesis is about a client/server web framework for F# called F# WebTools, which I already mentioned here and its abstract is following:

“Ajax” programming is becoming a de-facto standard for certain types of web applications, but unfortunately developing this kind of application is a difficult task. Developers have to deal with problems like a language impedance mismatch, limited execution runtime in web browser on the client-side and no integration between client and server-side parts that are developed as a two independent applications, but typically form a single and homogenous application. In this work we present the first project that deals with all three mentioned problems but which still integrates with existing web technologies such as ASP.NET on the server and JavaScript on the client. We use the F# language for writing both client and server-side part of the web application, which makes it possible to develop client-side code in a type-safe programming language using a subset of the F# library, and we provide a way to write both server-side and client-side code as a part of single homogeneous type defining the web page logic. The code is executed heterogeneously, part as JavaScript on the client, and part as native code on the server. Finally we use monadic syntax for the separation of client and server-side code, tracking this separation through the F# type system.

The full text is available here: Client side scripting using meta-programming (PDF, 1.31MB)

Read the complete article
Monday, March 17, 2008

More Recent Articles

Other Links

My Projects

  • F# Web Tools - Using the F# Web Tools you can author homogeneous client/server/database web applications in one type-checked project in F#. The distinction whether a code runs on the client (as JavaScript) or natively on the server is modeled using F# computation expressions.

  • Phalanger - PHP Language Compiler with several language extensions to allow smooth interoperability between PHP and other .NET (for example C#) code. Phalanger is complete enough to run applications like WordPress or MediaWiki.

  • LINQ Extensions - The project implements several useful extensions for the LINQ project. These extensions incude LINQ support for the C++/CLI language and simplified syntax or writing common types of database queries.

  • Other Projects Archive - Contains links to several older or partially completed projects that are no longer in active development, but may still be fun or even useful.