Visiting Dublin

My girlfriend and I went to Dublin this weekend and we had a great time. We flew with Aer Lingus and stayed at the Jacobs inn. This hostel really relaxed and I can certainly recommend it to anyone who just wants to sleep low budget. We basically did some sightseeing and walked around town. On Saturday we went to Radio City Dublin to see the Heideroosjes, the coolest punk-band I know.

Radio City is a cozy basement with a bar, a stage and room for about 200 people. It looks professional, but they could improve the information flow about who is going to play when. When we asked which bands played that evening it took about 10 minutes and 4 people to tell us that they didn't have a clue. It all worked out fine though. Seeing the Heideroosjes in a place with only 20 people, half of them Dutch, was a bit weird, but they definitely rocked! We plan to see them again in the Melkweg on the 16th of March, hopefully with a bigger crowd :)

The weekend in Dublin has given me some time to think about the things I want to do this year. I have made up a little list of the most important things that I want to pursuit this year, a kind of (very late) New Year's Resolutions:
These goals are not very surprising, but they require some shift in my priorities. Let's see if I can be part of the 46% that keeps such resolutions after 6 month. I personally think that the last one will be the hardest one to keep :)

PHP-Sat.org finished

It took me a ((very) long) time, but I finally finished all the texts for PHP-Sat.org. It is always a challenge to think of the right subjects and placement of texts for a website, but I believe that everything is in the right place now.

The website contains all the basic things a project need: general information, source repository, mailing-lists and bug-tracker. The current information is quit basic, but it will grow over time.

But the website also contains some extensive documentation on the following topics:This is also the reason it took some time to finish the site, but I think that it was useful. It gave me a a change to think about several aspects of the project.

Please let me know if you find any (spelling)-mistakes in the texts, still practicing my English over here.

PHP Operator precedence

If you take a look in the PHP-manual regarding operator precedence you will find the following quote:


Although
! has a higher precedence than =, PHP will still allow expressions similar to the following: if (!$a = foo()), in which case the return value of foo() is put into $a.


This is not very informative, which expressions are similar to this expression?

The answer to this can be found in this (huge!) file. This file is made with a tool called 'generate-prec-rules', which was created this week. It does exactly what the name implies, it generates the precedence rules given a set of common-precedence rules. The file above is created with the precedence rules from the yacc-definition of PHP version 5.

But how can we interpret these rules? Let's take a look at an example rule:

context-free priorities
"@" Expr -> Expr
<1> >
Expr "/" Expr -> Expr

This rule disallows a "/" on the second position of the '@'. Please note that this notation also counts the string-literal.

However, the expression @ 4 / 5 is not invalid, it can still be parsed and evaluated. The rule above just explains how PHP places the parenthesizes in the expression, in this case like this:
  (@ 4 ) / 5.
Take a minute to think about the expression and how it is influenced by the above rule, it took me a while to figure it out.

It is nice to have all of the rules, they describe the operator precedence very precisely, but the size of the file is a bit problematic. Every operator, there are about 32, gets a rule for each other operator for each expression it has. The '*' alone already occurs in 82 rules.

So the next step that we will have to take is to combine rules without changing the semantics of the precedence relations. An example of this is the combination of these two rules:

context-free priorities
Expr "*" Expr -> Expr
<2> >
Expr "+" Expr -> Expr

context-free priorities
Expr "*" Expr -> Expr
<0> >
Expr "+" Expr -> Expr

into this rule:

Expr "*" Expr -> Expr
> Expr "+" Expr -> Expr

Which means the same, but is a bit more compact and probably more understandable.

So when this tool is created, and some things are changed within SDF, we can incorporate the newly generated precedence rules into PHP-Front. This will solve some parsing problems and will give us an even better SDF-grammar for PHP. We will also try to generate a more understandable, one page list of the operator precedence within PHP to replace the quote in the current PHP-documentation.

A nice example of 'research meets real life' don't you think?

[Trivia] migrating ssh keys windows -> linux

I can almost hear you thinking: 'what is this [Trivia]-thingie, we had labels right?' You are absolutely right! I just wanted to add a more visual tag to posts that contain trivia things. If you see the [Trivia]-thingie you can safely assume that the blog contains a short solution to a random problem. I am writing it down for several reasons:

  • I could not find the solution in a quick way

  • When I have the same problem I can find out what I did to solve it

  • When you have the same problem you can find out what I did to solve it


Enjoy!

I was migrating my SSH-keys from Windows to Linux and found out that my pass phrase was not accepted anymore. The keys would load into Pageant with the same pass phrase, but keychain would not accept the same pass phrase. I found this suggestion, but it would not work. Another suggestion was made here and this lead me to the actual solution.

The key to the solution (pun indented) was that the key generated under windows was not in the OpenSSH format. It is quite easy to convert it to the right format using puttygen and it worked after the conversion.

So if the key that you generated on windows will not accept your pass phrase on linux, convert the key to OpenSSH and try again.