Am 29.01.2014 um 16:49 schrieb Esteban A. Maringolo emaring...@gmail.com:
2014-01-29 Sven Van Caekenberghe s...@stfx.eu:
On 29 Jan 2014, at 13:39, Esteban A. Maringolo emaring...@gmail.com wrote:
2014-01-29 Sven Van Caekenberghe s...@stfx.eu:
Very nice !
+1
And it is fast.
This
I’ve started two weeks ago porting my first project to pharo3. Well, I don’t
know the real name for the action because it was not a real porting. It just
loaded in pharo3 without any interaction by me. Ok, I think this is called
„installation“ :) Very nice!
Norbert
Am 04.01.2014 um 11:17
Am 02.01.2014 um 11:57 schrieb Esteban Lorenzano esteba...@gmail.com:
On 02 Jan 2014, at 11:49, Norbert Hartl norb...@hartl.name wrote:
Am 01.01.2014 um 19:26 schrieb Esteban A. Maringolo emaring...@gmail.com:
Pharo as a community has support to use its CI server, among other
goodies
Am 31.12.2013 um 13:19 schrieb itli...@schrievkrom.de:
Can a Zinc http-server be used as a local proxy ? Had anyone done this ?
It certainly can. If you add a request handler to your server it gets
everything being requested. So you can dispatch it in a way whatever you mean
by local proxy.
Is anyone using zeroMQ with pharoor knows what is the status of zeroMQ support?
thanks,
Norbert
What would be the best software to map my objects to dictionaries? There are a
lot of packages in pharo that deal with JSON somehow. But it seems none does
mapping from objects to dictionaries and is standalone. We’ve got
- NeoJSON package . Maps objects to strings directly for performance
. And we need only a handful calls from the whole API. So I hope
you can see that there are reasons to take a less clever approach. And it is a
approach I can do with pharo ;)
Norbert
On Thu, Nov 28, 2013 at 8:13 AM, Norbert Hartl norb...@hartl.name wrote:
Am 28.11.2013 um 00:21 schrieb Esteban
Am 27.11.2013 um 13:21 schrieb Damien Cassou damien.cas...@gmail.com:
Hi,
I'm looking for a template engine for Pharo. What I mean by that is
the same as Stringformat: but much more powerful.
Be my guest
http://norbert.hartl.name/blog/2013/10/03/mustache-templates-for-smalltalk/
Norbert
Am 27.11.2013 um 13:20 schrieb Sabine Knöfel sabine.knoe...@gmail.com:
Hi Esteban, all,
I work with mongo daily an it works fine, I am very happy with it.
As you told me, with
VORepository current reset.
I can force re loading all objects from database and resetting the cache
. That is a nice idea! I was
always thinking about how to use him!
Norbert
Greets
Sabine
On Wed, Nov 27, 2013 at 1:44 PM, Norbert Hartl [via Smalltalk] [hidden
email] wrote:
Am 27.11.2013 um 13:20 schrieb Sabine Knöfel [hidden email]:
Hi Esteban, all,
I work with mongo daily
-Documentation-td4723834.html
LOL now, after writing the answer I understand the joke ;-) (of Johan, from
johan)
Ah, the other Johan! It is good to know because I did some changes to MongoTalk
so I see what I can add.
Norbert
Sabine
On Wed, Nov 27, 2013 at 2:17 PM, Norbert Hartl [via
Am 27.11.2013 um 14:03 schrieb Damien Cassou damien.cas...@gmail.com:
On Wed, Nov 27, 2013 at 1:42 PM, Norbert Hartl norb...@hartl.name wrote:
Be my guest
http://norbert.hartl.name/blog/2013/10/03/mustache-templates-for-smalltalk/
thank you Norbert, that's really useful.
I would
Am 21.11.2013 um 06:57 schrieb Friedrich Dominicus
fr...@q-software-solutions.de:
Norbert Hartl norb...@hartl.name writes:
Am 20.11.2013 um 18:42 schrieb Friedrich Dominicus
fr...@q-software-solutions.de:
I wonder if anyone has problems running a Pharo on a 64-bit System
(Debian
Am 21.11.2013 um 13:01 schrieb Torsten Bergmann asta...@gmx.de:
Good work! I happy for each new project on pharo-contribution.
This is the evolution of pharo-contribution over the last year!
showChart.png
Impressive.
Thank you, and the rest of the team, and INRIA, for this very useful
Am 20.11.2013 um 04:20 schrieb Esteban A. Maringolo emaring...@gmail.com:
I have a string like 'foo|bar||foobar|' and I want to split it into
separate tokens like:
'foo|bar||foobar|' subStrings: $| - #('foo' 'bar' '' 'foobar' '').
It is... to INCLUDE empty strings (or nil for that case)
that
includes message sends? I guess #critical is not the solution, is it?
No, because then it isn’t lock free anymore ;)
Norbert
Am 14.11.13 11:12, schrieb Norbert Hartl:
Am 14.11.2013 um 10:25 schrieb Marcus Denker marcus.den...@inria.fr:
On 14 Nov 2013, at 10:15, Stephan Eggermont step
Stef,
Am 14.11.2013 um 12:10 schrieb Stéphane Ducasse stephane.duca...@inria.fr:
Note that it would be good to have a special syntactic construct for that
because now
we rely on the way the compiler works to ensure such properties and it means
that
an accessor and a direct access are not
Am 12.11.2013 um 23:02 schrieb Sean P. DeNigris s...@clipperadams.com:
Federico.Balaguer wrote
Hello,
I am developing a parser with PetitParser and one of the options I would
like to try is to get my parser to read from an external stream (file) and
produce the output to another external
feeling is that metacello is complex enough and putting
another layer of dynamism in the mix that tries to be clever is probably not
the best choice.
Norbert
Doru
On Sat, Nov 9, 2013 at 3:38 PM, Norbert Hartl norb...@hartl.name wrote:
Am 09.11.2013 um 12:21 schrieb Stéphane Ducasse
Am 09.11.2013 um 12:21 schrieb Stéphane Ducasse stephane.duca...@inria.fr:
Indeed.
I see
and I did not got the time to fix the issue I saw when applying on private
projects.
Agreed. But, the ConfigurationOfPetitParser is up to date. It has groups to
distinguish between between core
Looking at smalltalkhub there are plenty of PetitParser repos to find but none
that looks official. So which is considered official? I still had Lukas’ repo
in my config but the server seems to be down so I noticed.
Norbert
Am 07.11.2013 um 11:07 schrieb Stephan Eggermont step...@stack.nl:
The official repository of PetitParser is
Moose/PetitParser
on smalltalkhub
thanks.
http://forum.world.st/moving-petitparser-to-smalltalkhub-td4671840.html
Well, this is not a good place IMHO. A more independent but
repo) is the solution we should talk.
Norbert
Cheers,
Doru
On Thu, Nov 7, 2013 at 11:19 AM, Norbert Hartl norb...@hartl.name wrote:
Am 07.11.2013 um 11:07 schrieb Stephan Eggermont step...@stack.nl:
The official repository of PetitParser is
Moose/PetitParser
on smalltalkhub
less trouble. A
ConfigurationOfPetitParser and a separate ConfigurationOfPetitGui that
introduces dependencies to glamour et al. would save some headaches for people
that are only interested in PetitParser.
Norbert
Am 07.11.2013 um 13:13 schrieb Norbert Hartl norb...@hartl.name:
Am
Am 07.11.2013 um 16:25 schrieb Tudor Girba tu...@tudorgirba.com:
Hi,
On Thu, Nov 7, 2013 at 3:39 PM, Norbert Hartl norb...@hartl.name wrote:
Btw. how is the ConfigurationOfPetitParser supposed to work? I loaded the one
from the moose repo. Looking at it I need to use at least 1.6
Am 05.11.2013 um 09:11 schrieb p...@highoctane.be p...@highoctane.be:
OSX: Cmd-DoubleClick on the name
For me it works with a single click
Norbert
Win: Select the name, Ctrl-Enter
Both: Cmd-b / Alt-b (the letters on the right of the menu entries are the
shortcuts (screenshot
Wow! That is really great and it works like with an other application.
Awesome!
Norbert
Am 05.11.2013 um 11:18 schrieb Damien Cassou damien.cas...@gmail.com:
Hi,
I've just made a .dmg file for installing Pharo on MacOSX. Please try
it and report problems:
What would be the way to open a Systemwindow containing just a column view in
spec?
the column view is for aligning text that is one or two lines. No editing just
displaying.
thanks,
Norbert
Am 04.11.2013 um 14:50 schrieb nacho 0800na...@gmail.com:
You can take a look at ComposableModel#ScrollSyncExample
Try:
ScrollSyncExample new openWithSpec
I guess that's what you need.
thanks, but I don't have them in my image. You were refering to a 3.0 image?
Is spec usable in
referring to Pharo 3, try with the latest image.
It should be there...if you can't find it let me know.
cheers
Lic. Ignacio Sniechowski, MBA
On Mon, Nov 4, 2013 at 2:43 PM, Norbert Hartl norb...@hartl.name wrote:
Am 04.11.2013 um 14:50 schrieb nacho 0800na...@gmail.com
I’m thinking about what would be the proper/least annoying way of having
multiple exception sections. If I have a code block that can emit two different
exceptions is the only way doing it
[ [ ... ]
on: Exception1
do: [ … ] ]
on: Exception2
do: [ … ]
on:do: just calls a primitive
PharoContributor new
name: 'Norbert Hartl';
email: 'norb...@hartl.name';
website: 'http://norbert.hartl.name';
description: 'Software engineer at 2denker GmbH, cologne, germany.';
yourself.
Am 09.10.2013 um 13:34 schrieb Stéphane Ducasse stephane.duca...@inria.fr:
Hi guys
I
I like to announce my smalltalk port of mustache templates.
Mustache is a popular templating engine that is supported in many programming
languages. I know at least that is quite common to be used in javascript but
see at the languages it supported yourself [1].
A basic usage is something
Am 30.09.2013 um 19:35 schrieb p...@highoctane.be:
XSD is not the same.
What do you mean?
Norbert
Guess you want to do something like JAXB or schema validation. But I don't
know of anything like that in Pharo...
Phil
I like to make myself a little command shell inside the image. For this I would
need a textfield that can popup somewhere on the screen and that has enough
hooks for text entry events and hooks/support for auto-completion.
What would be the best things to read/the best code to look at in order
.
Norbert
Ben
On Sep 30, 2013, at 2:18 PM, Norbert Hartl norb...@hartl.name wrote:
I like to make myself a little command shell inside the image. For this I
would need a textfield that can popup somewhere on the screen and that has
enough hooks for text entry events and hooks/support
On 2013-09-30, at 10:29, p...@highoctane.be p...@highoctane.be wrote:
Spotlight?
On Monday, September 30, 2013, Norbert Hartl norb...@hartl.name wrote:
I like to make myself a little command shell inside the image. For this I
would need a textfield that can popup somewhere on the screen
Am 30.09.2013 um 15:26 schrieb Friedrich Dominicus
fr...@q-software-solutions.de:
I've now searched for a while but did not found much about it.
Does anyone here have a hint where to look for XSD stuff handling in
Pharo?
I'm pretty sure there isn't much to find. But we would love to have
Am 30.09.2013 um 16:29 schrieb Sven Van Caekenberghe s...@stfx.eu:
On 30 Sep 2013, at 15:53, Norbert Hartl norb...@hartl.name wrote:
Am 30.09.2013 um 15:48 schrieb Camillo Bruni camillobr...@gmail.com:
The thing you get in pharo when you press SHIFT+ENTER :)
Thanks cami! Although
Am 30.09.2013 um 18:26 schrieb Sven Van Caekenberghe s...@stfx.eu:
On 30 Sep 2013, at 18:11, Norbert Hartl norb...@hartl.name wrote:
Am 30.09.2013 um 16:29 schrieb Sven Van Caekenberghe s...@stfx.eu:
On 30 Sep 2013, at 15:53, Norbert Hartl norb...@hartl.name wrote:
Am
How is inheritance supposed to work in NeoJSON? I only figured it out by doing
that manually:
neoJsonMapping: aMapper
super neoJsonMapping: aMapper.
(aMapper mappingFor: self)
mapInstVar: #longitude;
mapInstVar: #latitude.
Is
I use it for remotely deployed images. Whenever a debugger opens I get an
email, connect to the image and examine the problem, fix it and done.
Nothing beats the debugger.
But yes a repl would be useful to for different things.
Norbert
Am 25.09.2013 um 03:14 schrieb Esteban A. Maringolo
Am 25.09.2013 um 09:55 schrieb Marcus Denker marcus.den...@inria.fr:
On Sep 25, 2013, at 9:11 AM, Norbert Hartl norb...@hartl.name wrote:
I use it for remotely deployed images. Whenever a debugger opens I get an
email, connect to the image and examine the problem, fix it and done
Is it possible to make a mapping for NeoJSON that an object shape maps to a
different shape. I mean if it is possible to have a class with instVars:
Foo
+name
+x
+y
that maps to
{
'name' ; …,
'point' : {
x : …,
y : …. }
}
thanks,
Norbert
When loading seaside3 from the configuration browser it will break the image
badly. It isn't even possible to open a system browser after that. What is the
best way to load it manually? Or better is there something new so the
configuration browser can be directed to a better config?
Norbert
for overrides. Until now I don't have more information.
norbert
On 2013-09-24, at 19:03, Norbert Hartl norb...@hartl.name wrote:
When loading seaside3 from the configuration browser it will break the image
badly. It isn't even possible to open a system browser after that. What is
the best way
? And the build is building grease first and seaside
as an artefact copy build-upon. Metacello is IMHO able to different things if
you load the things separately. I'm trying to load grease first, too.
Norbert
On 2013-09-24, at 19:03, Norbert Hartl norb...@hartl.name wrote:
When loading seaside3
/
What kind of error do you get?
Does it happen the same way when you download on of the images from Jenkins?
On 2013-09-24, at 19:03, Norbert Hartl norb...@hartl.name wrote:
When loading seaside3 from the configuration browser it will break the image
badly. It isn't even possible to open
Next try. I may do something stupid but it appears that all morphs draw on the
same coordinate system. Meaning that every Morph that will draw something at
0@0 will put it in the top left corner of the image displayed. I would expect
that a morph that is positioned somewhere provides a canvas
Am 04.09.2013 um 01:13 schrieb Esteban Lorenzano esteba...@gmail.com:
On Sep 4, 2013, at 12:42 AM, Paul DeBruicker pdebr...@gmail.com wrote:
On 09/03/2013 12:25 PM, Stéphane Ducasse wrote:
If you do not give us more information we will never be able to fix it.
And may be 3.0 will still
Am 04.09.2013 um 09:14 schrieb Sven Van Caekenberghe s...@stfx.eu:
On 04 Sep 2013, at 08:57, Marcus Denker marcus.den...@inria.fr wrote:
On Sep 4, 2013, at 12:42 AM, Paul DeBruicker pdebr...@gmail.com wrote:
On 09/03/2013 12:25 PM, Stéphane Ducasse wrote:
If you do not give us more
Am 04.09.2013 um 10:54 schrieb Sven Van Caekenberghe s...@stfx.eu:
On 04 Sep 2013, at 10:47, Norbert Hartl norb...@hartl.name wrote:
In all my other projects using zinc and RFB I didn't see the problem. But
then I don't save images in production.
Images are very cool and very useful
I'm trying to interleave some behavior in the normal execution flow.
For this I do something like
targetCtx := self findTargetContext.
interleavedCtx := [ self doSomething ] asContext.
interleavedCtx swapSender: (targetCtx swapSender: interleavedCtx).
Basically this works pretty
Am 31.08.2013 um 02:18 schrieb Esteban A. Maringolo emaring...@gmail.com:
I think that the question could be rephrased as:
How to map a collection with elements of different classes?
Am I asking for too much?
No, but this isn't a trivial problem. For your specific case it is probably
Is there a url for get.pharo.org to obtain sources files? I struggle to find it!
thanks,
Norbert
, Norbert Hartl norb...@hartl.name wrote:
Is there a url for get.pharo.org to obtain sources files? I struggle to find
it!
thanks,
Norbert
Am 23.08.2013 um 09:34 schrieb Stéphane Ducasse stephane.duca...@inria.fr:
Hi Norbert,
It sounds like you want something like talents Talents
http://scg.unibe.ch/research/bifrost/talents.
However, there is no running version on pharo 3.0 yet.
I am not aware of work on object-specific
Am 23.08.2013 um 15:44 schrieb Johan Fabry jfa...@dcc.uchile.cl:
On Aug 23, 2013, at 3:48 AM, Norbert Hartl norb...@hartl.name wrote:
would strategy not solve your problem?
Sure if I would have an actual problem I would use strategy to mitigate the
problem. With strategy you can
Does pharo support runtime trait composition or does it only work on class
definition time. I mean something like
anObject addTrait: MySpecialCapability
anObject removeTrait: MySpecialCapability
Norbert
Am 22.08.2013 um 16:25 schrieb Stéphane Ducasse stephane.duca...@inria.fr:
On Aug 22, 2013, at 3:23 PM, Norbert Hartl norb...@hartl.name wrote:
Does pharo support runtime trait composition or does it only work on class
definition time. I mean something like
anObject addTrait
about it I might get away with a hacked version of cloning
classes, adjust the trait composition and reassign the class of the objects I
need to work on.
Norbert
On Aug 22, 2013, at 1:19 PM, Norbert Hartl norb...@hartl.name wrote:
Sad. You know I was not asking about trait but about
I just decided that I am going by car to ESUG. I'm planning to arrive on monday
noon or later. If anyone near this route
http://goo.gl/maps/SS0Q5
needs a pick-up let me know. I'll leave ESUG most likely on friday noon.
Norbert
Am 01.08.2013 um 15:33 schrieb Henrik Johansen henrik.s.johan...@veloxit.no:
On Jul 23, 2013, at 5:33 , Norbert Hartl norb...@hartl.name wrote:
Max,
Am 23.07.2013 um 17:27 schrieb Max Leske maxle...@gmail.com:
On 23.07.2013, at 15:32, Mariano Martinez Peck marianop...@gmail.com
Am 29.07.2013 um 15:46 schrieb Esteban A. Maringolo emaring...@gmail.com:
Hi all,
Is it a good practice to use the OID value (anInteger) as an
external identifier of your domain object?
Let's suppose I have a collection of People, as I save them in the
collection, it will automatically
Am 29.07.2013 um 19:34 schrieb Esteban A. Maringolo emaring...@gmail.com:
2013/7/29 Norbert Hartl norb...@hartl.name:
Am 29.07.2013 um 15:46 schrieb Esteban A. Maringolo emaring...@gmail.com:
Is it a good practice to use the OID value (anInteger) as an
external identifier of your domain
Am 24.07.2013 um 22:46 schrieb Tudor Girba tu...@tudorgirba.com:
Use the latest stable VM. It should solve the problem.
Doru
On Jul 24, 2013, at 10:34 PM, Norbert Hartl norb...@hartl.name wrote:
Am 24.07.2013 um 18:21 schrieb Stéphane Ducasse stephane.duca...@inria.fr:
On Jul 24
I try to figure out where is the home project location of
HudsonBuildTools20
I can only see it in pharo20/pharoInbox
Norbert
--groups='All OS',Tests
./pharo $JOB_NAME.image test --junit-xml-output $JOB_NAME.*
zip -r $JOB_NAME.zip $JOB_NAME.image $JOB_NAME.changes
==
On 2013-07-25, at 16:36, Norbert Hartl norb...@hartl.name wrote:
I'm close
As I cannot work with the pharo VM right now I'm back to use Eliots Cog. But If
I open a more recent image it complains about my vm being to old. What does it
really check in order to complain? Some just version string/number parsing? Is
it always sever?
Norbert
Am 24.07.2013 um 18:21 schrieb Stéphane Ducasse stephane.duca...@inria.fr:
On Jul 24, 2013, at 5:13 PM, Norbert Hartl norb...@hartl.name wrote:
As I cannot work with the pharo VM right now
what is the problem?
I get the DNU SmallIntegeradd: all the time especially when using metacello
Doru,
that's exactly what I did before.
Norbert
Am 24.07.2013 um 22:46 schrieb Tudor Girba tu...@tudorgirba.com:
Use the latest stable VM. It should solve the problem.
Doru
On Jul 24, 2013, at 10:34 PM, Norbert Hartl norb...@hartl.name wrote:
Am 24.07.2013 um 18:21 schrieb
I try to untangle my modules. I have a parser that creates a model and a tool
that uses that model. For testing it is convenient to just generate the model
and work with it. But this way I introduce dependencies which always pulls
everything in.
In order to untangle I would need a way to
Am 23.07.2013 um 13:20 schrieb Hernán Morales Durand hernan.mora...@gmail.com:
Have a look at InstanceEncoder
http://www.smalltalkhub.com/#!/~hernan/InstanceEncoder
Thanks, how would you say it works compared to store an Fuel ByteArray?
Norbert
El 23/07/2013 7:47, Norbert Hartl
the STON string into
a method
Maybe I should try both.
thanks,
Norbert
m 23.07.13 12:47, schrieb Norbert Hartl:
I try to untangle my modules. I have a parser that creates a model and a
tool that uses that model. For testing it is convenient to just generate the
model and work
Am 23.07.2013 um 14:23 schrieb jtuc...@objektfabrik.de
jtuc...@objektfabrik.de:
Norbert,
Am 23.07.13 14:07, schrieb Norbert Hartl:
Joachim,
I'm aware that you can do serialization/deserialization yourself. I was
asking for something to help along the way because a have quite some
Am 23.07.2013 um 14:23 schrieb jtuc...@objektfabrik.de
jtuc...@objektfabrik.de:
Norbert,
Am 23.07.13 14:07, schrieb Norbert Hartl:
Joachim,
I'm aware that you can do serialization/deserialization yourself. I was
asking for something to help along the way because a have quite some
is good
enough for me. So I might try compression only to see the difference. Well, and
maybe to reduce storage size. The mcz is now 261 kb.
Thanks, I'll see but I am already satisfied with the current approach.
Norbert
Cheers,
On Tue, Jul 23, 2013 at 9:40 AM, Norbert Hartl norb
Hernán,
Am 23.07.2013 um 16:13 schrieb Hernán Morales Durand hernan.mora...@gmail.com:
El 23/07/2013 9:01, Norbert Hartl escribió:
Am 23.07.2013 um 13:20 schrieb Hernán Morales Durand
hernan.mora...@gmail.com:
Have a look at InstanceEncoder
http://www.smalltalkhub.com/#!/~hernan
Max,
Am 23.07.2013 um 17:27 schrieb Max Leske maxle...@gmail.com:
On 23.07.2013, at 15:32, Mariano Martinez Peck marianop...@gmail.com wrote:
On Tue, Jul 23, 2013 at 9:48 AM, Norbert Hartl norb...@hartl.name wrote:
Mariano,
Am 23.07.2013 um 14:43 schrieb Mariano Martinez Peck
Am 18.07.2013 um 12:33 schrieb Sabine Knöfel sabine.knoe...@gmail.com:
Hi,
Currently, I create one single Instance of Mongo when starting the Image.
| theRoot |
theRoot := Mongo default.
theRoot open.
and use it for all requests. In my development environment that works fine.
My
Am 16.07.2013 um 14:16 schrieb Sabine Knöfel sabine.knoe...@gmail.com:
Hi,
my application has to to some tasks regularly, e.g. deleting old reports,
getting new currency exchange rates.
Is there alreday some basic funktionality in Pharo where I can add my
application specific tasks or
Am 16.07.2013 um 14:48 schrieb Esteban Lorenzano esteba...@gmail.com:
Hi,
I suppose you also can find useful XPath:
http://www.smalltalkhub.com/#!/~PharoExtras/XPath
Or Pastell
http://www.smalltalkhub.com/#!/~PharoExtras/Pastell
Norbert
cheers,
Esteban
On Jul 16, 2013, at
I'm just wondering if it is possible in smalltalkhub to make a repository world
writable? I thought I added the project this way but I'm not sure and I can't
find any setting regarding this.
Norbert
Am 04.07.2013 um 17:24 schrieb Davide Varvello varve...@yahoo.com:
Hi there,
Is there any method to convert an accented char (or string) to the not
accented one?
I.e from 'àéìòü' to 'aeiou'
I think your best bet when it comes to transliteration is the ICU library.
There is some adaption
Am 27.06.2013 um 01:07 schrieb Paul DeBruicker pdebr...@gmail.com:
Sven Camillo,
Ok thanks. And using the PointerFinder is there a way to know which of
the pointers points to the SystemDictionary or Object someObject or
whereever the GC begins so one would not have to check every pointer
Am 12.06.2013 um 13:12 schrieb LogiqueWerks grshipl...@gmail.com:
If it is not under 50Mb with min packages + my classes, then I think no one
in the minimalist camp is going to look at my efforts ( this is my emit Curl
markup as alternative-to-HTML project for learning Japanese kanji via
601 - 686 of 686 matches
Mail list logo