Wednesday, June 24, 2009

Halting problem

Here's the new strip by Maria. Hope you like it.

It's unlikely that a new strip will appear during the following two weeks, cause we are going to the ecological expedition, where I will teach the basics of statistical reasoning and Maria will investigate some biological phenomena. But we promise to return with the new ideas :)

This strip is inspired by Russell O’Connor.

Tuesday, June 16, 2009

Shootout

This strip is based on a quote by MyCatVerbs, featuring dons, lambdacat and two suspicious guys sitting in front of a Tupil laptop. Eelco, Chris, is that you?!

(Drawn by Maria Kovalyova)

Tuesday, June 9, 2009

Don't play with your monads

This comic strip is brought to you by Maria Kovalyova, based on a quote by David Leimbach.

How do you like it?

Tuesday, May 26, 2009

Graph

Guess, what does this graph show?

Monday, May 25, 2009

The first seminar of LtU-Kiev

LtU-Kiev, a group of Ukrainian programming languages enthusiasts is holding its first seminar, featuring talks about type systems, type inference and dynamic logic. (May 30, Kiev)

Sunday, April 26, 2009

Quantum analogy

Classical physics is an example of pure functional system — when you measure something, the measurement itself has no side effects.

But in quantum mechanics, when you measure something the very action of measurement affects the object of observation. Probably God used unsafePerformIO somewhere?

Thursday, April 23, 2009

Hac5: the rest of the story (almost)

During the third day I tried to develop juicybar. Started by writing new backend class for dock applications (currently it isn't really a class, but eventually you'll be able to have your information bar using bare X, Qt or GTK+ — whatever you want). We did some bughunting with Wolfgang Jeltsch and Duncan Coutts, which showed what evil things can happen if you don't use threaded runtime. Later I hope to make separate post about the future of juicybar, its problems and features.

I had to leave early, about 4.30 pm, to go to Eindhoven (it's also a topic of another post).

I'd like to thank all the organizers — they did really a great (and huge) work. I was glad to meet all those nice people at hackathon (whose names we all know from haskell-cafe). And of course I'm looking forward to the next Hackathon :-)

Hac5: second day

The second day was mostly the day of the demonstrations.
It began with darcs q&a session driven by Eric Kow. Particularly, I found out that no simple solution to my problem is available yet (although I learned about context files which you can exchange with your buddy and use to make "darcs send" happy).
Atze Dijkstra made an announce of the first UHC release. UHC is Utrecht Haskell Compiler, but since UHC grew out of EHC (Essential Haskell Compiler), jokes about UHC being Unessential Haskell Compiler were popular.

Don Stewart showed the way to visualize Haskell data structures using vacuum with cairo backend, and Christophe Poucet made the same in 3d using Ubigraph backend.

David Himmelstrup told about the current status of LHC.
For me, the most interesting during that day was review of Grapefruit made by Wolfgang Jeltsch. The hard thing about Grapefruit is that it extensively uses type extensions and type-level programming, so Wolfgang tried to explain why those are needed. I guess, "ordinary" haskellers passing by were frightened hearing Wolfgang talking about kind polymorphism (at least, I was).

The day ended with collective dinner.

Friday, April 17, 2009

Hac5: first day results

  1. implemented collision with static body for Hpysics.
  2. wasted several hours looking for a way to combine several event queues in grapefruit, but unfortunately no acceptable solution was found
  3. started to implement juicybar — xmobar rewrite using Grapefruit. Good results so far, I hope to release something at the end of hackathon.

Fun in Utrecht

I wonder, is there a Peyton-Jones shop somewhere?

Grapefruit hacking should really be happening there…

Utrecht: first impressions

After a few hours in Utrecht I definitely love it!

There's enormous number of bikes here. If somebody walks, perhaps his bike is just broken.

And there are canals. I bet they are not worse than Amsterdam ones.

The street I live on — Bekkerstraat.

And my generous host. Thank you, Henk!

Also I had a beer with local haskellers: Eelco Lempsink, Chris Eidhof and Sebastiaan Visser (I forgot to take photo of them, sorry, but they are very pleasant guys!)

Hackathon starts tomorrow today at 10 a.m. See you there!

Sunday, January 11, 2009

Formal foundations of programming learning group

I've announced creation of Formal foundations of programming learning group in Odessa.

List of topics includes proof and type theory, different kinds of λ-calculus, category theory, programming languages semantics etc.

Tuesday, December 16, 2008

The Earth Demolition


©Mariya Kovalyova, 2008

«This is Prostetnic Vogon Jeltz of the Galactic Hyperspace Planning Council,» the voice continued. «As you will no doubt be aware, the plans for development of the outlying regions of the Galaxy require the building of a hyperspatial express route through your star system, and regrettably your planet is one of those scheduled for demolition. The process will take slightly less that two of your Earth minutes. Thank you.»

— Douglas Adams, «The Hitchhiker's Guide to the Galaxy»

Tuesday, November 11, 2008

Blog news

  1. For LiveJournal users, there's a syndication feed now, thanks to sheleztt.
  2. I'm also going to post something sometimes into the Ohloh journal. It's like twitter, devoted to open source stuff. You can subscribe to an RSS feed, or read it on this blog's sidebar.

Saturday, September 27, 2008

xmonad talk @ FOSS Sea

Video and slides of my xmonad talk are now available (both are in Russian).

Sunday, September 7, 2008

Haskell puzzle: Either monad

Either is standard Haskell datatype defined by

data Either a b = Left a | Right b

Let's define Either monad as follows:

instance Monad (Either a) where
    return = Right
    x >>= f = case x of
        Left _ -> x
        Right r -> f r

This means we fix the type of Left part and consider Either a as monadic constructor of kind * -> *. Binding operator has the following sense: the function transforms data if it's Right and leaves it unchanged if it's Left (it's similar to Maybe monad, Right corresponding to Just and Left corresponding to Nothing).

Now the puzzle itself. 1) Why the above code won't typecheck and 2) how to make it valid with minimal changes?

The answer on the first question was obvious for me, and I thank #haskellers for giving me solution to the second.

Friday, September 5, 2008

Discrete mathematics seminar: announce

The opening of 30th cycle of seminars on discrete mathematics will be at 16.00 on September 8 (auditorium 73, Odessa State University main building).

Prof. Melnikov (Minsk) will give a lecture on teaching discrete mathematics in high school.

The chair of seminars — prof. Zykov (Odessa).

The cycle will last till September 12.

Friday, August 29, 2008

About xmonad in Russian: online

Our article about xmonad in Russian is now available for online browse: http://ro-che.info/docs/xmonad/.

Monday, August 25, 2008

FOSS Sea 2008: announce

On 12-13 September, International conference FOSS Sea 2008 will be held in Odessa. Presumably I'll be giving talk about xmonad there. If you plan to attend the conference, would you mind leaving a comment here?

Monday, August 11, 2008

Compiling GHC

<ChilliX> at least, I managed to build the head on two successive days now! That's not bad.

Recently I had hard time building GHC, The Glorious Glasgow Haskell Compilation System. So I decided to record my experience which I got from Google, IRC and other sources. This refers to darcs (development) version of GHC. Some bits of this can soon change another way, while other can stay.

  1. This page contains instruction on building GHC. It may seem that following the first 4 links is sufficient, but it's really important to read Using the build system and to set up separate build tree.
  2. While GHCi in stable releases use readline, HEAD migrated to editline due to license issues (editline is BSD-licensed, while GNU readline is GPL'ed). So, you need to get recent version of libedit library. Note that one in Debian is very old and editline Haskell bindings won't build with it. For ArchLinux, I wrote PKGBUILD for editline, get it here.
  3. If you got compile error, the first thing to do is to clean and build from scratch. That's why I advise to use build trees as pointed above -- make clean may miss some autogenerated files.
  4. Another source of build errors are warnings together with -Werror pragma. If you got one, just edit the file and remove -Werror from top line.
  5. "Real" compile errors are much less probable, but also possible. Then try asking at #ghc on FreeNode or at glasgow-haskell-users@haskell.org mailing list.
  6. If your build succeeds, don't upgrade (i.e. ./darcs-all pull -a) without need. It may not build next time. If you need to upgrade, start with fresh build tree.
  7. If build (i.e. make) succeeds, don't run make install. There are two problems with that.
    First, it does not correctly set permissions (I had umask 077, and after sudo make install binaries were not executable by me.
    Another thing is that /usr/local/bin/ghci (which is shell script) has incorrect path to actual binaries in it.
    Both problems are more or less easy fixable, but Igloo said there are more issues with make install. So, the best solution is to use GHC in-place. See instructions on "Using the Build System" page.