Eugene Kirpichov
From June 2, 2010 I'm a senior .NET software engineer at Grid Dynamics, working on a high-performance computing project for a major hardware vendor.
From Feb.15, 2010 to May 15, 2010 I've been a senior developer at JetBrains but I decided to leave.
From Feb.2007 till Feb.2010 I've been a software developer at Yandex, doing web information retrieval (in Java mostly).
I've taught a course in functional programming somewhat based on SICP: SICP_Course and now am an advisor for 2 students.
I've graduated with honors from the St.-Petersburg State Polytechnical University in June 2009.
My scientific interests: functional programming languages and nearby theory (i.e. category theory), array programming languages like APL,J,K; mathematical statistics and information retrieval.
My hobbies: Listening and playing classical music, sports like swimming and winter hiking.
I can program in: Java, Haskell, Erlang, Mathematica, R, C++, bash.
I am familiar with theoretical areas of computer science and mathematics: programming language theory, type theory, some category theory, some mathematical statistics.
Email: <ekirpichov AT SPAMFREE gmail DOT com>
My open source work:
ire - incremental regular expressions (work in progress)
logophagus - a log viewer designed specifically for interactive processing of real-world logs of unlimited size (this is a project implemented mostly by a student of mine, under my supervision. The project is already usable, though it needs polishing, a bunch of small features and a couple of big ones)
valz - a framework for extremely scalable distributed on-line data aggregation and application monitoring, based on a novel approach (this is a project implemented mostly by another student of mine, under my supervision. The project is less mature than logophagus, though it is close to being usable, too)
antro - a line-level and hierarchical profiler for Ant build scripts, with a GUI inspired by jrat
jarfind - a small and extremely fast command-line tool for searching for Java classes, methods and fields in JAR files; written in Haskell
timeplot - a tool for visualizing time series from log files that I personally find very useful; written in Haskell
digest - a tiny Haskell binding to crc32 and adler32 which I wrote to speed up Haskell binding to zlib, which turned out to be the bottleneck in jarfind
strptime - a Haskell binding to strptime
LoessInterpolator from jakarta commons-math was written by me
- fuoco13 at narod point ru(insert punctuation; unfortunately, narod links are not allowed on this wiki) - (with Eugene Tyan) plenty of rare classical guitar sheet music and MP3s. Not updated for a very long time, although.
My articles and presentations:
Functional data structures - presentation given 13.10.2007 at the 1st SPbHUG meeting, based on Okasaki's book and paper on The Zipper functional pearl. Russian language only.
Functional data structures (contd.) - presentation given 17.11.2007 at the 2nd SPbHUG meeting, again based on Okasaki. Russian language only.
Erlang - presentation given 16.02.2008 at the 4th SPbHUG meeting, based on J.Armstrong's book. Russian language only.
Coq - presentation given 24.10.2008 at the 6th SPbHUG meeting, based on the Coq'Art book. Russian and English slides + sources.
Monad tutorial (in Russian) and Monad tutorial (in English) - my advanced monad tutorial, featuring examples from standard monads to probability and parser monads and a hint of monad transformers. The article has been published on RSDN (in Russian).
Java - Readability and some FP, Same thing in Russian and Slides in Russian (PPT),Slides in English (PPT) - an article on increasing Java code readability and utilizing principles of functional programming applicable to Java. The slides are better, they also contain 2 examples of functional API design. The article has been published on RSDN (in Russian).
Concurrent programing and Java A large presentation (in Russian) about concurrent programming in general and Java in particular, given to my colleagues at Yandex on 26.05.09. Concentrated on breadth rather than depth of scope; a bit about concurrency-related OO patterns, a bit about LTL and some verification tools, a bit about vector algorithms etc. TeX source (without images)
A larger and better version of the same presentation Concurrent programming and Java, performed on 04.17.2010 at the Java User Group meeting in Moscow.
I'm among the authors and reviewers of the Practice of Functional Programming journal, with an article Fighting Mutable State in the 1st issue and a large theoretical article Elements of Functional Languages in the 3rd issue.
My CV: on moikrug.ru (in Russian) and on linkedin.com (in English)
