New member (and a project) introduction

162 views
Skip to first unread message

ivan.kuraj

unread,
May 9, 2012, 8:25:24 AM5/9/12
to Scala IDE Dev
Hi all,

I am a new member of this group and I would like to just briefly
introduce myself (and my project, which is focusing on the Scala IDE).

My name is Ivan Kuraj and I am a second year computer science master
student at EPFL, with Foundations of Software as chosen
specialization.
In the next couple of months I will be working on a Google Summer of
Code project related to Scala IDE. The project is called "Smart Quick
Fixes for Scala IDE for Eclipse" and is about implementing a
'QuickFix' functionality for Scala development within the Eclipse. The
implemented mechanism should be used to provide automatic suggestions
for fixing compilation errors, code completion proposals, and
refactoring suggestions.

The basic ideas for the project are to implement some useful "quick
fixes" for Scala in Eclipse which include code modifications after a
compilation error (e.g. if a required type is List[T] but found is
List[List[T]], one suggestion could be to add a flatten method call to
an expression of type List[List[T]]), syntactic transformations which
are semantically equivalent (e.g. from foreach/map/flatmap to for-
yield construct transforms), utilization of the InSynth tool for code
synthesis (http://lara.epfl.ch/web2010/insynth) and investigate some
other possibilities which could prove interesting (e.g. scalagen tool
application).

Since such implementation requires close interaction with the Scala
and Scala IDE framework, a great point for the project would be to
cooperate with people which are involved in the core tasks of Scala
and the Scala IDE development, which includes people in this group.

It is my pleasure to be a part of this group. I am looking forward to
mutually beneficial discussions and cooperation within the community,
and finally my contribution to it.

Cheers,
Ivan

Mirco Dotta

unread,
May 9, 2012, 9:10:23 AM5/9/12
to scala-...@googlegroups.com
That's great news Ivan, very much looking forward to your contribution!


-- Mirco

---------------
Mirco Dotta
Typesafe - The software stack for applications that scale
PSE-D, 1015 Lausanne, Switzerland
Twitter: @mircodotta








Ivan Kuraj

unread,
Aug 20, 2012, 11:31:19 PM8/20/12
to scala-...@googlegroups.com
Hi all,

I've probably should have been informing you about the progress/issues of the InSynth plugin development for Scala IDE more often (at least unnecessarily clogging of the mailing list was avoided :)), but I would like to use this opportunity to present a pull request for the InSynth plugin into the Scala IDE ecosystem.

InSynth should be ready to go, it has a testing framework with decent amount of tests and has been tested manually, therefore we believe that everything should be okay when using InSynth plugin in "normal conditions". Unfortunately, we suspect that there are still bugs - among others, the ones caused by unsafe calls to the presentation compiler are present - so any feedback on such would be highly appreciated.

In case you want to give InSynth a try, you can use nightly update sites for Scala 2.9 or for Scala 2.10.

I've submitted a pull request to the Scala IDE Ecosystem.

There is a short documentation for the InSynth plugin.

As usual I would be extremely thankful for feedback - positive/negative, bug reports, feature suggestions, etc. - which can be given through the ticket system of the repository.

I would like to thank my mentor, Iulian, for an excellent mentorship and as well Mirco and Luc for helping me out (I was bugging these guys most of the time, instead of using the mailing list :)). I am really happy that InSynth got the opportunity to become a part of the Scala IDE (its ecosystem).

Just to mentioned that the plugin is still under (constant) development and surely that will not change in the near future, since there are still many bugs to fix and features to add (just to mention, I will be working on the InSynth, and its theory, for my master thesis project). :)

Thanks for your time.
Cheers!
Ivan

Rafał Krzewski

unread,
Aug 21, 2012, 4:54:52 AM8/21/12
to scala-...@googlegroups.com
My goodness, this sounds like magic :) I can't wait to try your plugin!

Cheers,
Rafał

Sandro Gržičić

unread,
Aug 21, 2012, 6:25:44 AM8/21/12
to scala-...@googlegroups.com
I just tried it and it seems awesome! Scala IDE is really getting cool and useful features this year. :)

Simon Schäfer

unread,
Aug 21, 2012, 6:53:32 AM8/21/12
to scala-...@googlegroups.com
Hi Ivan,

some suggestions (I use the version for 2.10):

* On `val xs: Array[Int] =` there is suggested `Array apply 0` instead
of `Array(0)`
* operator names are shown as they are represented internally for
example `$hash$hash` instead of `##`
* for case classes there is shown only a call to the ctor and not to the
companions apply method
* for local/imported methods there is always shown full operator
notation `obj op param` instead of simply `op(param)`
* for `val xs = Seq(Seq(1), Seq(2)); val ys: Seq[Int] = x.` there is
nothing suggested. For Array there are things like `Array apply 0`
suggested (after hitting CTRL+SPACE after the dot). Same for a method
which expects a `Seq[Int]` but a `Seq[Seq[Int]]` is found - nothing is
shown.
* your suggestions are always shown even if they make no more sense. In
`obj.abc` there are things shown which do not start with `abc`

Maybe some of these things should already work?

On Di 21 Aug 2012 05:31:19 CEST, Ivan Kuraj wrote:
>
> Hi all,
>
> I've probably should have been informing you about the progress/issues
> of the InSynth plugin development for Scala IDE more often (at least
> unnecessarily clogging of the mailing list was avoided :)), but I
> would like to use this opportunity to present a pull request for the
> InSynth plugin into the Scala IDE ecosystem.
>
> InSynth should be ready to go, it has a testing framework with decent
> amount of tests and has been tested manually, therefore we believe
> that everything should be okay when using InSynth plugin in "normal
> conditions". Unfortunately, we suspect that there are still bugs -
> among others, the ones caused by unsafe calls to the presentation
> compiler are present - so any feedback on such would be highly
> appreciated.
>
> In case you want to give InSynth a try, you can use nightly update
> sites for Scala 2.9
> <http://scala-ide.dreamhosters.com/nightly-update-insynth-scalaide21-29/site/>
>
> or for Scala 2.10
> <http://scala-ide.dreamhosters.com/nightly-update-insynth-scalaide21-210/site/>.
>
> I've submitted a pull request
> <https://github.com/scala-ide/ecosystem/pull/2> to the Scala IDE
> Ecosystem.
>
> There is a short documentation
> <https://github.com/kaptoxic/scala-ide-insynth-integration/wiki> for
> the InSynth plugin.
>
> As usual I would be extremely thankful for feedback -
> positive/negative, bug reports, feature suggestions, etc. - which can
> be given through the ticket system of the repository
> <https://github.com/kaptoxic/scala-ide-insynth-integration/issues>.
>> Typesafe <http://www.typesafe.com/> - The software stack for

Ivan Kuraj

unread,
Aug 21, 2012, 9:35:04 AM8/21/12
to scala-...@googlegroups.com
Hi Simon,

Thanks for the useful feedback!


On 08/21/2012 12:53 PM, Simon Schäfer wrote:
Hi Ivan,

some suggestions (I use the version for 2.10):
Versions for 2.9 and 2.10 should be (behave) the same.


* On `val xs: Array[Int] =` there is suggested `Array apply 0` instead of `Array(0)`
It is not mentioned in the documentation, InSynth's support for polymorphic types (generics) is not yet implemented, but we plan to implement it.
The documentation should definitely be corrected to mention this. And also it would be good if no completions are offered in such case, I presume?

* operator names are shown as they are represented internally for example `$hash$hash` instead of `##`
I see, while the former should also work (if I am not mistaking) the later is a better alternative. This should be definitely fixed.

* for case classes there is shown only a call to the ctor and not to the companions apply method
I think that we have some limitation while searching companion objects, could you please give a test case - or if it is not a problem opening an issue would be even better (for this one and other suggestions also)?

* for local/imported methods there is always shown full operator notation `obj op param` instead of simply `op(param)`
I see, although a test case would be excellent, I think I know about this. It can be corrected.

* for `val xs = Seq(Seq(1), Seq(2)); val ys: Seq[Int] = x.` there is nothing suggested. For Array there are things like `Array apply 0` suggested (after hitting CTRL+SPACE after the dot). Same for a method which expects a `Seq[Int]` but a `Seq[Seq[Int]]` is found - nothing is shown.
The discussion about polymorphic types should apply here.

* your suggestions are always shown even if they make no more sense. In `obj.abc` there are things shown which do not start with `abc`
The idea of InSynth is to provide code snippets at a given location, regardless of what the developer already typed - therefore it will always try to search for all visible solutions, not just the ones that contain the expression you already wrote.
This should definitely be considered as a feature/improvement.


Maybe some of these things should already work?
Yes, definitely. And thank you very much for pointing these things out! As I imagined, writing a lot of tests cannot replace testing when a developer is actually interacting with InSynth plugin. :)

I wanted to ask you, could you please submit these suggestions as tickets (it would be very good to have them public/documented)? I guess GitHub issue tracker, for the InSynth repository, would be the best place for that.

Thank you very much again!!
Cheers,
Ivan

Ivan Kuraj

unread,
Aug 21, 2012, 12:08:17 PM8/21/12
to scala-...@googlegroups.com
Thanks guys for trying it out, it feels good to have InSynth as a part of the Scala IDE community!

Of course it is not perfect (as we saw some suggestions in the reply to my previous email), but I hope in time we will fix bugs, introduce improvements and make InSynth really useful for everyday Scala development...

Cheers,
Ivan

Simon Schäfer

unread,
Aug 25, 2012, 1:49:06 PM8/25/12
to scala-...@googlegroups.com
I have one more question: Are there plans to merge the InSynth project
in future into the scala-ide or should it stay as its own project which
is used by scala-ide (like scalariform or scala-refactoring)?
>> I've submitted a pull request
>> <https://github.com/scala-ide/ecosystem/pull/2> to the Scala
>> IDE Ecosystem.
>>
>> There is a short documentation
>> <https://github.com/kaptoxic/scala-ide-insynth-integration/wiki>
>> for the InSynth plugin.
>>
>> As usual I would be extremely thankful for feedback -
>> positive/negative, bug reports, feature suggestions, etc. -
>> which can be given through the ticket system of the
>> repository
>> <https://github.com/kaptoxic/scala-ide-insynth-integration/issues>.
>>> Typesafe <http://www.typesafe.com/> - The software stack for

Ivan Kuraj

unread,
Aug 22, 2012, 8:12:03 PM8/22/12
to scala-...@googlegroups.com
For now, the first step is adding it to the ecosystem.

Afterwards, I guess it depends on various factors like the stability of
the plugin, feedback we get for it etc.

Ivan

iulian dragos

unread,
Aug 23, 2012, 3:31:42 AM8/23/12
to scala-...@googlegroups.com
On Thu, Aug 23, 2012 at 2:12 AM, Ivan Kuraj <ivan....@gmail.com> wrote:
For now, the first step is adding it to the ecosystem.

We will do that as soon as possible, I hope that next week it will be in the ecosystem.

I installed and tried out your plugin, and it is indeed amazing. Great work!

We need to add a hook in the presentation compiler to retrieve the expected type at a given position, and hopefully that will make it easy to provide the same kind of completions for method arguments. As far as I can tell, it can't do that now, and it would be really cool.

Afterwards, I guess it depends on various factors like the stability of the plugin, feedback we get for it etc.

Let's keep things like this for the moment, and see in a few months how it looks. Having a different plugin has certain advantages, such as having your own release schedule. I imagine, at least in the beginning, you will be moving fast and releasing more often than the IDE.

thanks,
iulian



--
« Je déteste la montagne, ça cache le paysage »
Alphonse Allais

sschaef

unread,
Aug 23, 2012, 6:50:27 AM8/23/12
to scala-...@googlegroups.com
I created some issues, waiting on fixes now ;)

Ivan Kuraj

unread,
Aug 23, 2012, 8:35:03 AM8/23/12
to scala-...@googlegroups.com
Excellent, I was waiting for the feedback from you Simon, thanks a lot!

Now the issues are documented and others can see progress on them (also Tihomir, from the LARA lab at EPFL, who is in charge for the InSynth theory and proof extraction part can take a look at those too).

Will start working on them right away :)
As already mentioned, some of those we could mark as enhancements at this moment...

Thanks again!
Cheers,
Ivan

Ivan Kuraj

unread,
Aug 23, 2012, 6:28:39 PM8/23/12
to scala-...@googlegroups.com
On 08/23/2012 09:31 AM, iulian dragos wrote:
On Thu, Aug 23, 2012 at 2:12 AM, Ivan Kuraj <ivan....@gmail.com> wrote:
For now, the first step is adding it to the ecosystem.

We will do that as soon as possible, I hope that next week it will be in the ecosystem.

I installed and tried out your plugin, and it is indeed amazing. Great work!
I am glad to hear that!
I hope we will receive good (and useful) feedback in the future and people will make good practical use of InSynth.


We need to add a hook in the presentation compiler to retrieve the expected type at a given position, and hopefully that will make it easy to provide the same kind of completions for method arguments. As far as I can tell, it can't do that now, and it would be really cool.
It can, but not exactly as it should in the ideal case (compiler has some difficulties when determining types of arguments in some cases, like overloaded curried method declarations...).
I will try to find out whether there is anything more that we can do to help extracting types in such "tricky" cases...

Nevertheless, having a functionality as you suggested would be just the thing we need for the complete synthesis of method arguments.


Afterwards, I guess it depends on various factors like the stability of the plugin, feedback we get for it etc.

Let's keep things like this for the moment, and see in a few months how it looks. Having a different plugin has certain advantages, such as having your own release schedule. I imagine, at least in the beginning, you will be moving fast and releasing more often than the IDE.
Yes, I completely agree.

thanks,
iulian
You are welcome, and thank you for the feedback!
Cheers,
Ivan
ďż˝


Ivan


On 08/25/2012 07:49 PM, Simon Sch�fer wrote:
I have one more question: Are there plans to merge the InSynth project in future into the scala-ide or should it stay as its own project which is used by scala-ide (like scalariform or scala-refactoring)?

On Di 21 Aug 2012 18:08:17 CEST, Ivan Kuraj wrote:
Thanks guys for trying it out, it feels good to have InSynth as a part
of the Scala IDE community!

Of course it is not perfect (as we saw some suggestions in the reply
to my previous email), but I hope in time we will fix bugs, introduce
improvements and make InSynth really useful for everyday Scala
development...

Cheers,
Ivan

On 08/21/2012 12:25 PM, Sandro Gr�i�i� wrote:
I just tried it and it seems awesome! Scala IDE is really getting
cool and useful features this year. :)

On Tuesday, August 21, 2012 10:54:52 AM UTC+2, Rafaďż˝ Krzewski wrote:

ďż˝ ďż˝ My goodness, this sounds like magic :) I can't wait to try your
ďż˝ ďż˝ plugin!

ďż˝ ďż˝ Cheers,
ďż˝ ďż˝ Rafaďż˝

� � W dniu wtorek, 21 sierpnia 2012 05:31:19 UTC+2 u�ytkownik Ivan
ďż˝ ďż˝ Kuraj napisaďż˝:

ďż˝ ďż˝ ďż˝ ďż˝ Hi all,

ďż˝ ďż˝ ďż˝ ďż˝ I've probably should have been informing you about the
ďż˝ ďż˝ ďż˝ ďż˝ progress/issues of the InSynth plugin development for Scala
ďż˝ ďż˝ ďż˝ ďż˝ IDE more often (at least unnecessarily clogging of the
ďż˝ ďż˝ ďż˝ ďż˝ mailing list was avoided :)), but I would like to use this
ďż˝ ďż˝ ďż˝ ďż˝ opportunity to present a pull request for the InSynth plugin
ďż˝ ďż˝ ďż˝ ďż˝ into the Scala IDE ecosystem.

ďż˝ ďż˝ ďż˝ ďż˝ InSynth should be ready to go, it has a testing framework
ďż˝ ďż˝ ďż˝ ďż˝ with decent amount of tests and has been tested manually,
ďż˝ ďż˝ ďż˝ ďż˝ therefore we believe that everything should be okay when
ďż˝ ďż˝ ďż˝ ďż˝ using InSynth plugin in "normal conditions". Unfortunately,
ďż˝ ďż˝ ďż˝ ďż˝ we suspect that there are still bugs - among others, the ones
ďż˝ ďż˝ ďż˝ ďż˝ caused by unsafe calls to the presentation compiler are
ďż˝ ďż˝ ďż˝ ďż˝ present - so any feedback on such would be highly appreciated.

ďż˝ ďż˝ ďż˝ ďż˝ In case you want to give InSynth a try, you can use nightly
ďż˝ ďż˝ ďż˝ ďż˝ update sites for Scala 2.9
<http://scala-ide.dreamhosters.com/nightly-update-insynth-scalaide21-29/site/>
ďż˝ ďż˝ ďż˝ ďż˝ or for Scala 2.10
<http://scala-ide.dreamhosters.com/nightly-update-insynth-scalaide21-210/site/>.

ďż˝ ďż˝ ďż˝ ďż˝ I've submitted a pull request
ďż˝ ďż˝ ďż˝ ďż˝ <https://github.com/scala-ide/ecosystem/pull/2> to the Scala
ďż˝ ďż˝ ďż˝ ďż˝ IDE Ecosystem.

ďż˝ ďż˝ ďż˝ ďż˝ There is a short documentation
<https://github.com/kaptoxic/scala-ide-insynth-integration/wiki>
ďż˝ ďż˝ ďż˝ ďż˝ for the InSynth plugin.

ďż˝ ďż˝ ďż˝ ďż˝ As usual I would be extremely thankful for feedback -
ďż˝ ďż˝ ďż˝ ďż˝ positive/negative, bug reports, feature suggestions, etc. -
ďż˝ ďż˝ ďż˝ ďż˝ which can be given through the ticket system of the
ďż˝ ďż˝ ďż˝ ďż˝ repository
<https://github.com/kaptoxic/scala-ide-insynth-integration/issues>.

ďż˝ ďż˝ ďż˝ ďż˝ I would like to thank my mentor, Iulian, for an excellent
ďż˝ ďż˝ ďż˝ ďż˝ mentorship and as well Mirco and Luc for helping me out (I
ďż˝ ďż˝ ďż˝ ďż˝ was bugging these guys most of the time, instead of using the
ďż˝ ďż˝ ďż˝ ďż˝ mailing list :)). I am really happy that InSynth got the
ďż˝ ďż˝ ďż˝ ďż˝ opportunity to become a part of the Scala IDE (its ecosystem).

ďż˝ ďż˝ ďż˝ ďż˝ Just to mentioned that the plugin is still under (constant)
ďż˝ ďż˝ ďż˝ ďż˝ development and surely that will not change in the near
ďż˝ ďż˝ ďż˝ ďż˝ future, since there are still many bugs to fix and features
ďż˝ ďż˝ ďż˝ ďż˝ to add (just to mention, I will be working on the InSynth,
ďż˝ ďż˝ ďż˝ ďż˝ and its theory, for my master thesis project). :)

ďż˝ ďż˝ ďż˝ ďż˝ Thanks for your time.
ďż˝ ďż˝ ďż˝ ďż˝ Cheers!
ďż˝ ďż˝ ďż˝ ďż˝ Ivan

ďż˝ ďż˝ ďż˝ ďż˝ On 05/09/2012 03:10 PM, Mirco Dotta wrote:
ďż˝ ďż˝ ďż˝ ďż˝ That's great news Ivan, very much looking forward to your
ďż˝ ďż˝ ďż˝ ďż˝ contribution!


ďż˝ ďż˝ ďż˝ ďż˝ -- Mirco

ďż˝ ďż˝ ďż˝ ďż˝ On May 9, 2012, at 2:25 PM, ivan.kuraj wrote:

ďż˝ ďż˝ ďż˝ ďż˝ Hi all,

ďż˝ ďż˝ ďż˝ ďż˝ I am a new member of this group and I would like to just
ďż˝ ďż˝ ďż˝ ďż˝ briefly
ďż˝ ďż˝ ďż˝ ďż˝ introduce myself (and my project, which is focusing on the
ďż˝ ďż˝ ďż˝ ďż˝ Scala IDE).

ďż˝ ďż˝ ďż˝ ďż˝ My name is Ivan Kuraj and I am a second year computer
ďż˝ ďż˝ ďż˝ ďż˝ science master
ďż˝ ďż˝ ďż˝ ďż˝ student at EPFL, with Foundations of Software as chosen
ďż˝ ďż˝ ďż˝ ďż˝ specialization.
ďż˝ ďż˝ ďż˝ ďż˝ In the next couple of months I will be working on a Google
ďż˝ ďż˝ ďż˝ ďż˝ Summer of
ďż˝ ďż˝ ďż˝ ďż˝ Code project related to Scala IDE. The project is called
ďż˝ ďż˝ ďż˝ ďż˝ "Smart Quick
ďż˝ ďż˝ ďż˝ ďż˝ Fixes for Scala IDE for Eclipse" and is about implementing a
ďż˝ ďż˝ ďż˝ ďż˝ 'QuickFix' functionality for Scala development within the
ďż˝ ďż˝ ďż˝ ďż˝ Eclipse. The
ďż˝ ďż˝ ďż˝ ďż˝ implemented mechanism should be used to provide automatic
ďż˝ ďż˝ ďż˝ ďż˝ suggestions
ďż˝ ďż˝ ďż˝ ďż˝ for fixing compilation errors, code completion proposals, and
ďż˝ ďż˝ ďż˝ ďż˝ refactoring suggestions.

ďż˝ ďż˝ ďż˝ ďż˝ The basic ideas for the project are to implement some
ďż˝ ďż˝ ďż˝ ďż˝ useful "quick
ďż˝ ďż˝ ďż˝ ďż˝ fixes" for Scala in Eclipse which include code
ďż˝ ďż˝ ďż˝ ďż˝ modifications after a
ďż˝ ďż˝ ďż˝ ďż˝ compilation error (e.g. if a required type is List[T] but
ďż˝ ďż˝ ďż˝ ďż˝ found is
ďż˝ ďż˝ ďż˝ ďż˝ List[List[T]], one suggestion could be to add a flatten
ďż˝ ďż˝ ďż˝ ďż˝ method call to
ďż˝ ďż˝ ďż˝ ďż˝ an expression of type List[List[T]]), syntactic
ďż˝ ďż˝ ďż˝ ďż˝ transformations which
ďż˝ ďż˝ ďż˝ ďż˝ are semantically equivalent (e.g. from foreach/map/flatmap
ďż˝ ďż˝ ďż˝ ďż˝ to for-
ďż˝ ďż˝ ďż˝ ďż˝ yield construct transforms), utilization of the InSynth
ďż˝ ďż˝ ďż˝ ďż˝ tool for code
ďż˝ ďż˝ ďż˝ ďż˝ synthesis (http://lara.epfl.ch/web2010/insynth) and
ďż˝ ďż˝ ďż˝ ďż˝ investigate some
ďż˝ ďż˝ ďż˝ ďż˝ other possibilities which could prove interesting (e.g.
ďż˝ ďż˝ ďż˝ ďż˝ scalagen tool
ďż˝ ďż˝ ďż˝ ďż˝ application).

ďż˝ ďż˝ ďż˝ ďż˝ Since such implementation requires close interaction with
ďż˝ ďż˝ ďż˝ ďż˝ the Scala
ďż˝ ďż˝ ďż˝ ďż˝ and Scala IDE framework, a great point for the project
ďż˝ ďż˝ ďż˝ ďż˝ would be to
ďż˝ ďż˝ ďż˝ ďż˝ cooperate with people which are involved in the core tasks
ďż˝ ďż˝ ďż˝ ďż˝ of Scala
ďż˝ ďż˝ ďż˝ ďż˝ and the Scala IDE development, which includes people in
ďż˝ ďż˝ ďż˝ ďż˝ this group.

ďż˝ ďż˝ ďż˝ ďż˝ It is my pleasure to be a part of this group. I am looking
ďż˝ ďż˝ ďż˝ ďż˝ forward to
ďż˝ ďż˝ ďż˝ ďż˝ mutually beneficial discussions and cooperation within the
ďż˝ ďż˝ ďż˝ ďż˝ community,
ďż˝ ďż˝ ďż˝ ďż˝ and finally my contribution to it.

ďż˝ ďż˝ ďż˝ ďż˝ Cheers,
ďż˝ ďż˝ ďż˝ ďż˝ Ivan


ďż˝ ďż˝ ďż˝ ďż˝ ---------------
ďż˝ ďż˝ ďż˝ ďż˝ Mirco Dotta
ďż˝ ďż˝ ďż˝ ďż˝ Typesafe <http://www.typesafe.com/> - The software stack for
ďż˝ ďż˝ ďż˝ ďż˝ applications that scale
ďż˝ ďż˝ ďż˝ ďż˝ PSE-D, 1015 Lausanne, Switzerland
ďż˝ ďż˝ ďż˝ ďż˝ Work: +41 (0)21 691 49 65
ďż˝ ďż˝ ďż˝ ďż˝ Twitter: @mircodotta














--
« Je dďż˝teste la montagne, ďż˝a cache le paysage »
Alphonse Allais

Reply all
Reply to author
Forward
0 new messages