Pharo-users
By thread
pharo-users@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
January 2021
- 38 participants
- 140 messages
Re: [Pharo @ FOSDEM 2021] Stand
by Santiago Bragagnolo
Great idea! I am going to see if we can also share some of the talks from
last esug as well! Thanks a lot Ben
El lun, 11 ene 2021 a las 19:40, Ben Coman (<btc(a)openinworld.com>) escribió:
> As a backup, you could edit videos from ESUG 2019
> https://www.youtube.com/playlist?list=PLJ5nSnWzQXi8DPNpy1jCkjE4yE0WUtDP2
> e.g..
> - "Show us your project"
> https://www.youtube.com/watch?v=RNQKwcYb6Jc&list=PLJ5nSnWzQXi8DPNpy1jCkjE4y…
> - "Object Centric Debugging"
> https://www.youtube.com/watch?v=uDYJIm54yE4&list=PLJ5nSnWzQXi8DPNpy1jCkjE4y…
>
>
> On Wed, 6 Jan 2021 at 23:04, Santiago Bragagnolo <
> santiagobragagnolo(a)gmail.com> wrote:
>
>> Hello everybody.
>> We have been accepted to have a virtual stand in FOSDEM 2021.
>>
>> The idea is to start gathering information to show in the stand about
>> Pharo.
>> Besides the pharo graphical image related content, we would like to offer
>> also success stories, and also videos related to your tools / fwks /
>> business etc, from the point of view of how pharo was a good choice, how it
>> was helpful. Like this we can gather stories that promote your things and
>> pharo at the same time.
>>
>> Also I would like to ask to all those persons doing research on pharo to
>> have some kind of video equivalent to a poster presentation, remarking the
>> interest of using pharo.
>>
>> And to the people that works on pharo core, if you have videos presenting
>> features or assets such as how to build tests, how pharo is integrated with
>> sisop, how it is rendered, how it is interpreted, jited, etc. We could have
>> a track on youtube or similar presenting many features :).
>>
>>
>> Of course if you want to participate actively on the organization of the
>> stand you are more than welcome. Please send me a private message and we
>> may build some communication group to share ideas and organize.
>>
>> Thanks a lot for your attention :)
>>
>> Santiago
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> El mié, 6 ene 2021 a las 15:53, Santiago Bragagnolo (<
>> santiagobragagnolo(a)gmail.com>) escribió:
>>
>>> We applied to participate in FOSDEM 2021, and we were accepted :)!
>>>
>>> =======================================
>>> Hello team behind Pharo,
>>>
>>> Your submission for a stand at FOSDEM 2021 has been accepted.
>>>
>>> We welcome you to FOSDEM 2021, our first fully digital edition.
>>>
>>> As a reminder, this is what you can expect this year.
>>> - A spot on our exhibition website (stands.fosdem.org)
>>> - A Matrix chatroom.
>>> - A place to store video's.
>>>
>>> The exhibition website is a static site generated by hugo (gohugo.io).
>>> We have set the theme and the structure, and you can add as many pages as
>>> you want. The code for the website currently lives at
>>> https://github.com/FOSDEM/stands-website . Documentation will be added
>>> shortly (and will be communicated via the list).
>>>
>>> To get started with adding content to the website, follow these steps:
>>>
>>> 1. Create two git repositories (public), one for your content and one
>>> for your static files. Provide us with both links and make sure we can pull
>>> anonymously.
>>> 2. Add pages in any format Hugo accepts. Note that you cannot add more
>>> levels (if you want a deeper structure, ask us).
>>> 3. Once every hour a script will rebuild the website.
>>> 4. You can add links to your own website(s) as well, but we ask that
>>> you keep stand-related things on our stands website.
>>>
>>> We'll provide more information on where to upload the video's later this
>>> month. It is up to you if you wish to create them, but we think it will add
>>> value to your stand.
>>>
>>> More details on the chatroom will also be made available in the coming
>>> week.
>>>
>>> This week, we'll publish the list of accepted stands on our website, and
>>> add the primary and secondary contact to standholders(a)lists.fosdem.org
>>> for further communication. By the beginning of next week, the exhibition
>>> website will be put online (behind authentication as it is not public yet).
>>> As soon as the infrastructure is in place, the video site and the Matrix
>>> chatroom will be configured.
>>>
>>> We'll send further updates to the standholders mailing list. Please bear
>>> with us, this is new for us as well ;-)
>>>
>>> We hope to see you at FOSDEM!
>>>
>>> Kind regards,
>>>
>>> The FOSDEM Stands Team
>>>
>>
Jan. 12, 2021
Re: Beta Testing ARM64 Linux & Windows
by Stéphane Ducasse
Excellent News.
My Rasps just arrived in time so I will try.
S
> On 11 Jan 2021, at 18:21, tesonep(a)gmail.com wrote:
>
> In the last months, we have been working on the implementation of a MIT-licenced ARMv8 Just-In-Time compiler for Pharo VM.
> We would like to announce that a beta first version of our JIT backend is available for beta-testing for ARM Linux and Windows machines.
>
> We are very happy with the advance in this subject, as we have not only implemented a new backend but we have added more than 2500 tests of the JIT, the primitives, code generation, plugins, and the VM in general. Also, we are generating a lot of documentation and improving the process to really democratize the development of the VM.
>
> After all the text there are details on how to obtain the versions for testing it.
>
> The following sections give more details of the current status, and the following steps including Apple Silicon, Windows, and Linux ARM64.
>
> Current Status
>
> Our objective is to have a running JIT for the new aarch64 architecture (ARM 64bits). This task includes not only a new backend for the JIT compiler but also adding support for external libraries, dependencies, and the build process. This means having a working VM with comparable features as the one existing in Intel X64. We are targeting all the major operating systems running on this platform (Linux, OSX, Windows). Each of them presents different restrictions and conditions.
>
> After expending some time this is the current status:
>
> - We implemented a full backend for the JIT compiler targeting aarch64.
> - All the image side was adapted to run on it, tested on Ubuntu ARM 64 bits.
> - We added support for: Iceberg (Libgit) / Athens (Cairo) / SDL / GTK
> - We implemented a LibFFI based FFI backend as the default one for Pharo 9 in aarch64 (next to come in all platforms). This opens the door to easily port the features to other platforms and OSes. This new implementation does not have an impact on performance as it has comparable results with the old implementation. Much more, this implementation opens also the door to have runners in different threads than the VM thread (non-blocking FFI).
>
> Status By Platform
>
> Linux
>
> We have a working version of the VM. It is using the same code-base and build process for both architectures (Intel X64 / ARM aarch64). A version can be compiled and executed in all the platforms. Also, we have integrated the build using Open Build Services (OBS) to generate packages for all the mainstream distributions.
> Currently, the version for Debian-like systems (Debian, Ubuntu, Raspberry pi OS, etc) is available and ready to beta test; the details for installing them are in the end of the mail. Versions for ARCH-based and RPM-based systems are in the working (If you want to get them or to test them please contact us, so we can pass on the detail of how to get them).
>
> Windows
>
> We have extended the build process to fully support Microsoft Visual Studio compilers and more flexibility to select the targets, also we are building it to run in Windows ARM. To correctly run the VM in Windows it is needed to build all dependencies for aarch64.
> In this path, we have a working Intel x64 version with Cygwin and MSVC, and a MSVC version for aarch64 (ARM64).
> The ARM64 version is available to be beta-testing on machines with this architecture.
> The Details are at the end of the mail.
>
> OSX
>
> Our third target is to have a working version for the newest Apple silicon. We are acquiring the corresponding hardware to test and to address the differences in the API exposed to JIT applications. As it is the case of the Windows VM, there is no need to change the machine code generation backend, as it is the same that has been implemented for Linux; but to compile external libraries and particularities of the new OS version.
>
> Thanks for your support. In the meantime, we will continue giving you news about the current state and where are we going.
>
> Beta Testing - Linux
>
> For Debian like distributions, the instructions are the following.
>
> Installation
>
> 1) Add a new APT source, usually modifying a file in /etc/apt/sources.list.d/, for example, we can add the pharo.list file with the following content. Also, we need to register the key of the repository. These steps should be done only once. We are giving a little script for modifying the configuration. It is only needed to execute line by line.
>
> For Raspbian:
>
> echo "deb https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/… <https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/…> ./" >> pharo.list
>
> sudo cp pharo.list /etc/apt/sources.list.d/pharo.list
>
> wget https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/… <https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/…>
>
> sudo apt-key add Release.key
>
>
> For Ubuntu:
>
> echo "deb https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/… <https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/…> ./" >> pharo.list
>
> sudo cp pharo.list /etc/apt/sources.list.d/pharo.list
>
> wget https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/… <https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/…>
>
> sudo apt-key add Release.key
>
> 2) Update the repository to take the current versions
>
> sudo apt update
>
> 3) Install Pharo9 VM
>
> sudo apt install pharo9 libgit2
>
>
> 4) In case of using the interactive version (with UI) check if the packages libsdl2-2.0-0 and libcairo2 are installed (Usually they are installed, but depends what it is installed in the system). These are not needed for the headless execution or if it is not used by the image.
>
>
> Getting the images:
>
> The images can be downloaded using zero-conf, the latest image is ready to be used. It can be done with:
>
> wget -O - get.pharo.org/64/90 <http://get.pharo.org/64/90> | bash
>
>
> Running Pharo
>
> pharo Pharo.image eval 42 factorial
>
> Or interactive
>
> pharo Pharo.image --interactive
>
> Windows Testing
>
> A version of the VM is ready to be tested in Windows ARM64. A zip containing the VM is available in:
>
> https://files.pharo.org/vm/pharo-spur64/Windows-ARM64/PharoVM-9.0.0-4df0e56… <https://files.pharo.org/vm/pharo-spur64/Windows-ARM64/PharoVM-9.0.0-4df0e56…>
>
> As in Linux, the latest image is compatible with this version of the VM.
>
> Error reporting
>
> In case of encountering errors please report them attaching:
>
> - crash.dmp file and PharoDebug.log
> - Version of the image using (in case of any community project loaded, the names of those)
>
> - Complete machine version (the result of executing uname -a)
> - Complete information about the Linux distribution
>
> - Steps for reproducing the error (if needed)
>
> Thanks for the effort!!
>
> --
> Pablo Tesone.
> tesonep(a)gmail.com <mailto:tesonep@gmail.com>
--------------------------------------------
Stéphane Ducasse
http://stephane.ducasse.free.fr / http://www.pharo.org
03 59 35 87 52
Assistant: Aurore Dalle
FAX 03 59 57 78 50
TEL 03 59 35 86 16
S. Ducasse - Inria
40, avenue Halley,
Parc Scientifique de la Haute Borne, Bât.A, Park Plaza
Villeneuve d'Ascq 59650
France
Jan. 12, 2021
Re: [Pharo @ FOSDEM 2021] Stand
by Ben Coman
As a backup, you could edit videos from ESUG 2019
https://www.youtube.com/playlist?list=PLJ5nSnWzQXi8DPNpy1jCkjE4yE0WUtDP2
e.g..
- "Show us your project"
https://www.youtube.com/watch?v=RNQKwcYb6Jc&list=PLJ5nSnWzQXi8DPNpy1jCkjE4y…
- "Object Centric Debugging"
https://www.youtube.com/watch?v=uDYJIm54yE4&list=PLJ5nSnWzQXi8DPNpy1jCkjE4y…
On Wed, 6 Jan 2021 at 23:04, Santiago Bragagnolo <
santiagobragagnolo(a)gmail.com> wrote:
> Hello everybody.
> We have been accepted to have a virtual stand in FOSDEM 2021.
>
> The idea is to start gathering information to show in the stand about
> Pharo.
> Besides the pharo graphical image related content, we would like to offer
> also success stories, and also videos related to your tools / fwks /
> business etc, from the point of view of how pharo was a good choice, how it
> was helpful. Like this we can gather stories that promote your things and
> pharo at the same time.
>
> Also I would like to ask to all those persons doing research on pharo to
> have some kind of video equivalent to a poster presentation, remarking the
> interest of using pharo.
>
> And to the people that works on pharo core, if you have videos presenting
> features or assets such as how to build tests, how pharo is integrated with
> sisop, how it is rendered, how it is interpreted, jited, etc. We could have
> a track on youtube or similar presenting many features :).
>
>
> Of course if you want to participate actively on the organization of the
> stand you are more than welcome. Please send me a private message and we
> may build some communication group to share ideas and organize.
>
> Thanks a lot for your attention :)
>
> Santiago
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> El mié, 6 ene 2021 a las 15:53, Santiago Bragagnolo (<
> santiagobragagnolo(a)gmail.com>) escribió:
>
>> We applied to participate in FOSDEM 2021, and we were accepted :)!
>>
>> =======================================
>> Hello team behind Pharo,
>>
>> Your submission for a stand at FOSDEM 2021 has been accepted.
>>
>> We welcome you to FOSDEM 2021, our first fully digital edition.
>>
>> As a reminder, this is what you can expect this year.
>> - A spot on our exhibition website (stands.fosdem.org)
>> - A Matrix chatroom.
>> - A place to store video's.
>>
>> The exhibition website is a static site generated by hugo (gohugo.io).
>> We have set the theme and the structure, and you can add as many pages as
>> you want. The code for the website currently lives at
>> https://github.com/FOSDEM/stands-website . Documentation will be added
>> shortly (and will be communicated via the list).
>>
>> To get started with adding content to the website, follow these steps:
>>
>> 1. Create two git repositories (public), one for your content and one
>> for your static files. Provide us with both links and make sure we can pull
>> anonymously.
>> 2. Add pages in any format Hugo accepts. Note that you cannot add more
>> levels (if you want a deeper structure, ask us).
>> 3. Once every hour a script will rebuild the website.
>> 4. You can add links to your own website(s) as well, but we ask that you
>> keep stand-related things on our stands website.
>>
>> We'll provide more information on where to upload the video's later this
>> month. It is up to you if you wish to create them, but we think it will add
>> value to your stand.
>>
>> More details on the chatroom will also be made available in the coming
>> week.
>>
>> This week, we'll publish the list of accepted stands on our website, and
>> add the primary and secondary contact to standholders(a)lists.fosdem.org
>> for further communication. By the beginning of next week, the exhibition
>> website will be put online (behind authentication as it is not public yet).
>> As soon as the infrastructure is in place, the video site and the Matrix
>> chatroom will be configured.
>>
>> We'll send further updates to the standholders mailing list. Please bear
>> with us, this is new for us as well ;-)
>>
>> We hope to see you at FOSDEM!
>>
>> Kind regards,
>>
>> The FOSDEM Stands Team
>>
>
Jan. 11, 2021
Beta Testing ARM64 Linux & Windows
by tesonep@gmail.com
In the last months, we have been working on the implementation of a
MIT-licenced ARMv8 Just-In-Time compiler for Pharo VM.
We would like to announce that a beta first version of our JIT backend is
available for beta-testing for ARM Linux and Windows machines.
We are very happy with the advance in this subject, as we have not only
implemented a new backend but we have added more than 2500 tests of the
JIT, the primitives, code generation, plugins, and the VM in general. Also,
we are generating a lot of documentation and improving the process to
really democratize the development of the VM.
After all the text there are details on how to obtain the versions for
testing it.
The following sections give more details of the current status, and the
following steps including Apple Silicon, Windows, and Linux ARM64.
*Current Status*
Our objective is to have a running JIT for the new aarch64 architecture
(ARM 64bits). This task includes not only a new backend for the JIT
compiler but also adding support for external libraries, dependencies, and
the build process. This means having a working VM with comparable features
as the one existing in Intel X64. We are targeting all the major operating
systems running on this platform (Linux, OSX, Windows). Each of them
presents different restrictions and conditions.
After expending some time this is the current status:
- We implemented a full backend for the JIT compiler targeting aarch64.
- All the image side was adapted to run on it, tested on Ubuntu ARM 64
bits.
- We added support for: Iceberg (Libgit) / Athens (Cairo) / SDL / GTK
- We implemented a LibFFI based FFI backend as the default one for Pharo 9
in aarch64 (next to come in all platforms). This opens the door to easily
port the features to other platforms and OSes. This new implementation does
not have an impact on performance as it has comparable results with the old
implementation. Much more, this implementation opens also the door to have
runners in different threads than the VM thread (non-blocking FFI).
*Status By Platform*
*Linux*
We have a working version of the VM. It is using the same code-base and
build process for both architectures (Intel X64 / ARM aarch64). A version
can be compiled and executed in all the platforms. Also, we have integrated
the build using Open Build Services (OBS) to generate packages for all the
mainstream distributions.
Currently, the version for Debian-like systems (Debian, Ubuntu, Raspberry
pi OS, etc) is available and ready to beta test; the details for installing
them are in the end of the mail. Versions for ARCH-based and RPM-based
systems are in the working (If you want to get them or to test them please
contact us, so we can pass on the detail of how to get them).
*Windows *
We have extended the build process to fully support Microsoft Visual Studio
compilers and more flexibility to select the targets, also we are building
it to run in Windows ARM. To correctly run the VM in Windows it is needed
to build all dependencies for aarch64.
In this path, we have a working Intel x64 version with Cygwin and MSVC, and
a MSVC version for aarch64 (ARM64).
The ARM64 version is available to be beta-testing on machines with this
architecture.
The Details are at the end of the mail.
*OSX*
Our third target is to have a working version for the newest Apple silicon.
We are acquiring the corresponding hardware to test and to address the
differences in the API exposed to JIT applications. As it is the case of
the Windows VM, there is no need to change the machine code generation
backend, as it is the same that has been implemented for Linux; but to
compile external libraries and particularities of the new OS version.
Thanks for your support. In the meantime, we will continue giving you news
about the current state and where are we going.
*Beta Testing - Linux*
For Debian like distributions, the instructions are the following.
*Installation*
1) Add a new APT source, usually modifying a file in
/etc/apt/sources.list.d/, for example, we can add the pharo.list file with
the following content. Also, we need to register the key of the repository.
These steps should be done only once. We are giving a little script for
modifying the configuration. It is only needed to execute line by line.
*For Raspbian:*
echo "deb
https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/…
./"
>> pharo.list
sudo cp pharo.list /etc/apt/sources.list.d/pharo.list
wget
https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/…
sudo apt-key add Release.key
*For Ubuntu:*
echo "deb
https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/…
./"
>> pharo.list
sudo cp pharo.list /etc/apt/sources.list.d/pharo.list
wget
https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/…
sudo apt-key add Release.key
2) Update the repository to take the current versions
sudo apt update
3) Install Pharo9 VM
sudo apt install pharo9 libgit2
4) In case of using the interactive version (with UI) check if the packages
libsdl2-2.0-0 and libcairo2 are installed (Usually they are installed, but
depends what it is installed in the system). These are not needed for the
headless execution or if it is not used by the image.
*Getting the images:*
The images can be downloaded using zero-conf, the latest image is ready to
be used. It can be done with:
wget -O - get.pharo.org/64/90 | bash
*Running Pharo*
pharo Pharo.image eval 42 factorial
Or interactive
pharo Pharo.image --interactive
*Windows Testing*
A version of the VM is ready to be tested in Windows ARM64. A zip
containing the VM is available in:
https://files.pharo.org/vm/pharo-spur64/Windows-ARM64/PharoVM-9.0.0-4df0e56…
As in Linux, the latest image is compatible with this version of the VM.
*Error reporting*
In case of encountering errors please report them attaching:
- crash.dmp file and PharoDebug.log
- Version of the image using (in case of any community project loaded, the
names of those)
- Complete machine version (the result of executing uname -a)
- Complete information about the Linux distribution
- Steps for reproducing the error (if needed)
Thanks for the effort!!
--
Pablo Tesone.
tesonep(a)gmail.com
Jan. 11, 2021
Re: is there a better way
by Kasper Osterbye
Just my input to the cache thing. Pharo has a class named LRUCache (Least
Recently Used Cache), which is very helpful for such.
If you want to store it on disk instead of the image Estaban's suggestion
seems like the way to go.
Best,
Kasper
Jan. 11, 2021
Re: [Pharo @ FOSDEM 2021] Stand
by Santiago Bragagnolo
Thanks a lot Offray!
You and grafoscopio people are always eager to share :).
It's a great format!
If you have some videos do not hesitate to share!
El vie, 8 ene 2021 a las 16:56, Offray Vladimir Luna Cárdenas (<
offray.luna(a)mutabit.com>) escribió:
> Thanks for this invitation Santiago. It's comes pretty timely as I as
> preparing a web portfolio of my Pharo projects for an upcoming deadline. I
> will contact you by direct message with more details.
>
> Cheers,
>
> Offray
> On 6/01/21 10:04 a. m., Santiago Bragagnolo wrote:
>
> Hello everybody.
> We have been accepted to have a virtual stand in FOSDEM 2021.
>
> The idea is to start gathering information to show in the stand about
> Pharo.
> Besides the pharo graphical image related content, we would like to offer
> also success stories, and also videos related to your tools / fwks /
> business etc, from the point of view of how pharo was a good choice, how it
> was helpful. Like this we can gather stories that promote your things and
> pharo at the same time.
>
> Also I would like to ask to all those persons doing research on pharo to
> have some kind of video equivalent to a poster presentation, remarking the
> interest of using pharo.
>
> And to the people that works on pharo core, if you have videos presenting
> features or assets such as how to build tests, how pharo is integrated with
> sisop, how it is rendered, how it is interpreted, jited, etc. We could have
> a track on youtube or similar presenting many features :).
>
>
> Of course if you want to participate actively on the organization of the
> stand you are more than welcome. Please send me a private message and we
> may build some communication group to share ideas and organize.
>
> Thanks a lot for your attention :)
>
> Santiago
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> El mié, 6 ene 2021 a las 15:53, Santiago Bragagnolo (<
> santiagobragagnolo(a)gmail.com>) escribió:
>
>> We applied to participate in FOSDEM 2021, and we were accepted :)!
>>
>> =======================================
>> Hello team behind Pharo,
>>
>> Your submission for a stand at FOSDEM 2021 has been accepted.
>>
>> We welcome you to FOSDEM 2021, our first fully digital edition.
>>
>> As a reminder, this is what you can expect this year.
>> - A spot on our exhibition website (stands.fosdem.org)
>> - A Matrix chatroom.
>> - A place to store video's.
>>
>> The exhibition website is a static site generated by hugo (gohugo.io).
>> We have set the theme and the structure, and you can add as many pages as
>> you want. The code for the website currently lives at
>> https://github.com/FOSDEM/stands-website . Documentation will be added
>> shortly (and will be communicated via the list).
>>
>> To get started with adding content to the website, follow these steps:
>>
>> 1. Create two git repositories (public), one for your content and one
>> for your static files. Provide us with both links and make sure we can pull
>> anonymously.
>> 2. Add pages in any format Hugo accepts. Note that you cannot add more
>> levels (if you want a deeper structure, ask us).
>> 3. Once every hour a script will rebuild the website.
>> 4. You can add links to your own website(s) as well, but we ask that you
>> keep stand-related things on our stands website.
>>
>> We'll provide more information on where to upload the video's later this
>> month. It is up to you if you wish to create them, but we think it will add
>> value to your stand.
>>
>> More details on the chatroom will also be made available in the coming
>> week.
>>
>> This week, we'll publish the list of accepted stands on our website, and
>> add the primary and secondary contact to standholders(a)lists.fosdem.org
>> for further communication. By the beginning of next week, the exhibition
>> website will be put online (behind authentication as it is not public yet).
>> As soon as the infrastructure is in place, the video site and the Matrix
>> chatroom will be configured.
>>
>> We'll send further updates to the standholders mailing list. Please bear
>> with us, this is new for us as well ;-)
>>
>> We hope to see you at FOSDEM!
>>
>> Kind regards,
>>
>> The FOSDEM Stands Team
>>
>
Jan. 8, 2021
Re: [Pharo @ FOSDEM 2021] Stand
by Offray Vladimir Luna Cárdenas
Thanks for this invitation Santiago. It's comes pretty timely as I as
preparing a web portfolio of my Pharo projects for an upcoming deadline.
I will contact you by direct message with more details.
Cheers,
Offray
On 6/01/21 10:04 a. m., Santiago Bragagnolo wrote:
> Hello everybody.
> We have been accepted to have a virtual stand in FOSDEM 2021.
>
> The idea is to start gathering information to show in the stand about
> Pharo.
> Besides the pharo graphical image related content, we would like to
> offer also success stories, and also videos related to your tools /
> fwks / business etc, from the point of view of how pharo was a good
> choice, how it was helpful. Like this we can gather stories that
> promote your things and pharo at the same time.
>
> Also I would like to ask to all those persons doing research on pharo
> to have some kind of video equivalent to a poster presentation,
> remarking the interest of using pharo.
>
> And to the people that works on pharo core, if you have videos
> presenting features or assets such as how to build tests, how pharo is
> integrated with sisop, how it is rendered, how it is interpreted,
> jited, etc. We could have a track on youtube or similar presenting
> many features :).
>
>
> Of course if you want to participate actively on the organization of
> the stand you are more than welcome. Please send me a private message
> and we may build some communication group to share ideas and organize.
>
> Thanks a lot for your attention :)
>
> Santiago
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> El mié, 6 ene 2021 a las 15:53, Santiago Bragagnolo
> (<santiagobragagnolo(a)gmail.com <mailto:santiagobragagnolo@gmail.com>>)
> escribió:
>
> We applied to participate in FOSDEM 2021, and we were accepted :)!
>
> =======================================
> Hello team behind Pharo,
>
> Your submission for a stand at FOSDEM 2021 has been accepted.
>
> We welcome you to FOSDEM 2021, our first fully digital edition.
>
> As a reminder, this is what you can expect this year.
> Â - A spot on our exhibition website (stands.fosdem.org
> <http://stands.fosdem.org>).
> Â - A Matrix chatroom.
> Â - A place to store video's.
>
> The exhibition website is a static site generated by hugo
> (gohugo.io <http://gohugo.io>). We have set the theme and the
> structure, and you can add as many pages as you want. The code for
> the website currently lives at
> https://github.com/FOSDEM/stands-website
> <https://github.com/FOSDEM/stands-website> . Documentation will be
> added shortly (and will be communicated via the list).
>
> To get started with adding content to the website, follow these steps:
>
> Â 1. Create two git repositories (public), one for your content and
> one for your static files. Provide us with both links and make
> sure we can pull anonymously.
> Â 2. Add pages in any format Hugo accepts. Note that you cannot add
> more levels (if you want a deeper structure, ask us).
> Â 3. Once every hour a script will rebuild the website.
> Â 4. You can add links to your own website(s) as well, but we ask
> that you keep stand-related things on our stands website.
>
> We'll provide more information on where to upload the video's
> later this month. It is up to you if you wish to create them, but
> we think it will add value to your stand.
>
> More details on the chatroom will also be made available in the
> coming week.
>
> This week, we'll publish the list of accepted stands on our
> website, and add the primary and secondary contact to
> standholders(a)lists.fosdem.org
> <mailto:standholders@lists.fosdem.org> for further communication.
> By the beginning of next week, the exhibition website will be put
> online (behind authentication as it is not public yet). As soon as
> the infrastructure is in place, the video site and the Matrix
> chatroom will be configured.
>
> We'll send further updates to the standholders mailing list.
> Please bear with us, this is new for us as well ;-)
>
> We hope to see you at FOSDEM!
>
> Kind regards,
>
> The FOSDEM Stands Team
>
Jan. 8, 2021
Re: is there a better way
by Julián Maestri
You can also try https://github.com/ba-st/Superluminal which has caching
support among other things.
On Wed, 6 Jan 2021, 16:42 Esteban Maringolo, <emaringolo(a)gmail.com> wrote:
> To avoid doing something like that, and for a web scrapping tool I
> wrote, I implemented a basic subclass of ZnClient (called
> ZnCachingClient) that used a disk cache where each key/file was the
> hash of the requested URL.
>
> I haven't used in a while but it should continue to work, in any case,
> I published it in a Github repository:
> https://github.com/eMaringolo/zinc-caching-client
>
> Best regards,
>
> Esteban A. Maringolo
>
> On Wed, Jan 6, 2021 at 3:37 PM Richard Sargent
> <richard.sargent(a)gemtalksystems.com> wrote:
> >
> >
> >
> > On Wed, Jan 6, 2021 at 10:34 AM Roelof Wobben via Pharo-users <
> pharo-users(a)lists.pharo.org> wrote:
> >>
> >>
> >> Thanks,
> >>
> >> Right now im downloading/fetching the images every time again.
> >>
> >> As I see it, the biggest bottleneck is that I have 10 images.
> >> And for all 10 I fetching the image and the data I could display when a
> >> user wants it.
> >> So that will be 20 calls to the api.
> >>
> >> So maybe some cache could be handy.
> >> Any hints how to make a cache in smalltalk.
> >
> >
> > Dictionary coupled with #at:ifAbsentPut:
> >
> >>
> >> Roelof
> >>
> >>
> >>
> >> Op 6-1-2021 om 19:19 schreef Sven Van Caekenberghe:
> >> > Roelof,
> >> >
> >> > Working with multiple high resolution images, as I believe you are
> >> > doing, is always going to be a real challenge, performance wise. It
> >> > just takes time to transfer lots of data.
> >> >
> >> > First you have to make sure that you are not doing too much work
> >> > (double downloads, using too high resolutions for previews or
> >> > browsing). Also, make sure your ultimate client (the browser) can
> >> > cache as well if applicable (set modification dates on the response).
> >> >
> >> > Next you could cache images locally (on your app server) so that next
> >> > time you need the same image, you do not need to download it again. Of
> >> > course, this only helps if your hit rate is higher than zero (if you
> >> > actually ask for the same image multiple times).
> >> >
> >> > It is also possible to do multiple download requests concurrently: if
> >> > the other end is fast enough, that can certainly help.
> >> >
> >> > HTH,
> >> >
> >> > Sven
> >> >
> >> >> On 6 Jan 2021, at 18:11, Roelof Wobben via Pharo-users
> >> >> <pharo-users(a)lists.pharo.org> wrote:
> >> >>
> >> >>
> >> >> I did it on the root document and see this :
> >> >>
> >> >> <nkdkdknfekaflcfc.png>
> >> >>
> >> >> So as far as I see it , The most time it taken by getting all the
> >> >> data from all the 10 images.
> >> >>
> >> >> I hope someone can look at me if im on the right track and will help
> >> >> me to figure out faster ways to achieve the same
> >> >>
> >> >> Roelof
> >> >>
> >> >>
> >> >>
> >> >> Op 5-1-2021 om 05:16 schreef Richard O'Keefe:
> >> >>> Before you take another step, explore the root document.
> >> >>>
> >> >>> Profiling is easy.
> >> >>> Open a Playground.
> >> >>> Type an expression such as
> >> >>> 3 tinyBenchmarks
> >> >>> Right click and select 'Profile it'.
> >> >>>
> >> >>> More generally, in a browser, look at the "Tool - Profilers"
> >> >>> class category. The classic approach was
> >> >>> MessageTally spyOn: [3 tinyBenchmarks]
> >> >>> If I understand correctly, 'Profile it' uses TimeProfiler,
> >> >>> which has a nicer interface. (This is in Pharo 8.)
> >> >>>
> >> >>>
> >> >>> On Sun, 3 Jan 2021 at 23:03, Roelof Wobben <r.wobben(a)home.nl>
> wrote:
> >> >>> I want that the code fetches a url and some data from the
> >> >>> Rijksmuseaum api.
> >> >>> And as far as I see it the second it not pointless because it
> >> >>> getting more detailed info about the painting as in the first get.
> >> >>>
> >> >>> I did not profiled it because I never learned how to do that in
> Pharo.
> >> >>>
> >> >>> Roelof
> >> >>>
> >> >>>
> >> >>>
> >> >>> Op 3-1-2021 om 01:09 schreef Richard O'Keefe:
> >> >>>> What do you want the code to do?
> >> >>>> Have you profiled the code to see where the time is going?
> >> >>>>
> >> >>>> A quick look at the code shows
> >> >>>> - Paintings does one web get
> >> >>>> - each Painting does two more web gets
> >> >>>> ! and the first of those seems to be pretty pointless,
> >> >>>> as it refetches an object that Paintings already fetched
> >> >>>> and just looked at.
> >> >>>>
> >> >>>>
> >> >>>>
> >> >>>> On Sun, 3 Jan 2021 at 01:16, Roelof Wobben via Pharo-users
> >> >>>> <pharo-users(a)lists.pharo.org> wrote:
> >> >>>> Hello,
> >> >>>>
> >> >>>> I have now this code : https://github.com/RoelofWobben/Rijksmuseam
> >> >>>>
> >> >>>> but it seems to be slow.
> >> >>>>
> >> >>>> Can anyone help me with a way I can use a sort of cache so the page
> >> >>>> looks first at the cache if a image is there .
> >> >>>> If so, take the image from there , if not , ask the api for the
> url of
> >> >>>> the image.
> >> >>>>
> >> >>>> Roelof
>
Jan. 8, 2021
Re: NeoCSVReader and wrong number of fieldAccessors
by Richard O'Keefe
Thank you very much.
I converted your benchmark to my Smalltalk dialect and was
pleased with the results. This gave me the impetus I needed
to implement the #recordClass: feature of NeoCSVReader,
although in my case it requires the class to implement #withAll:
and the operand is a (reused) OrderedCollection.
There's one difference between CSVEncoder and NeoCSVWriter that
might be of interest: you can't tell CSVEncoder whether a field
is #raw or #quoted because it always figures that out for itself.
I was prepared to pay an efficiency penalty to make sure I did not
get this wrong, and am pleased to find it wasn't as much of a
penalty as I feared.
On Wed, 6 Jan 2021 at 22:52, Sven Van Caekenberghe <sven(a)stfx.eu> wrote:
> Hi Richard,
>
> Benchmarking is a can of worms, many factors have to be considered. But
> the first requirement is obviously to be completely open over what you are
> doing and what you are comparing.
>
> NeoCSV contains a simple benchmark suite called NeoCSVBenchmark, which was
> used during development. Note that it is a bit tricky to use: you need to
> run a write benchmark with a specific configuration before you can try read
> benchmarks.
>
> The core data is a 100.000 line file (2.5 MB) like this:
>
> 1,-1,99999
> 2,-2,99998
> 3,-3,99997
> 4,-4,99996
> 5,-5,99995
> 6,-6,99994
> 7,-7,99993
> 8,-8,99992
> 9,-9,99991
> 10,-10,99990
> ...
>
> That parses in ~250ms on my machine.
>
> NeoCSV has quite a bit of features and handles various edge cases.
> Obviously, a minimal, custom implementation could be faster.
>
> NeoCSV is called efficient not just because it is reasonably fast, but
> because it can be configured to generate domain objects without
> intermediate structures and because it can convert individual fields (parse
> numbers, dates, times, ...) while parsing.
>
> Like you said, some generated CSV output out in the wild is very
> irregular. I try to stick with standard CSV as much as possible.
>
> Sven
>
> > On 6 Jan 2021, at 05:10, Richard O'Keefe <raoknz(a)gmail.com> wrote:
> >
> > NeoCSVReader is described as efficient. What is that
> > in comparison to? What benchmark data are used?
> > Here are benchmark results measured today.
> > (5,000 data line file, 9,145,009 characters).
> > method time(ms)
> > Just read characters 410
> > CSVDecoder>>next 3415 astc's CSV reader (defaults). 1.26 x
> CSVParser
> > NeoCSVReader>>next 4798 NeoCSVReader (default state). 1.78 x
> CSVParser
> > CSVParser>>next 2701 pared-to-the-bone CSV reader. 1.00
> reference.
> >
> > (10,000 data line file, 1,544,836 characters).
> > method time(ms)
> > Just read characters 93
> > CSVDecoder>>next 530 astc's CSV reader (defaults). 1.26 x
> CSVParser
> > NeoCSVReader>>next 737 NeoCSVReader (default state). 1.75 x
> CSVParser
> > CSVParser>>next 421 pared-to-the-bone CSV reader. 1.00
> reference.
> >
> > CSVParser is just 78 lines and is not customisable. It really is
> > stripped to pretty much an absolute minimum. All of the parsers
> > were configured (if that made sense) to return an Array of Strings.
> > Many of the CSV files I've worked with use short records instead
> > of ending a line with a lot of commas. Some of them also have the
> occasional stray comment off to the right, not mentioned in the header.
> > I've also found it necessary to skip multiple lines at the beginning
> > and/or end. (Really, some government agencies seem to have NO idea
> > that anyone might want to do more with a CSV file than eyeball it in
> > Excel.)
> >
> > If there is a benchmark suite I can use to improve CSVDecoder,
> > I would like to try it out.
> >
> > On Tue, 5 Jan 2021 at 02:36, jtuchel(a)objektfabrik.de <
> jtuchel(a)objektfabrik.de> wrote:
> > Happy new year to all of you! May 2021 be an increasingly less crazy
> > year than 2020...
> >
> >
> > I have a question that sounds a bit strange, but we have two effects
> > with NeoCSVReader related to wrong definitions of the reader.
> >
> > One effect is that reading a Stream #upToEnd leads to an endless loop,
> > the other is that the Reader produces twice as many objects as there are
> > lines in the file that is being read.
> >
> > In both scenarios, the reason is that the CSV Reader has a wrong number
> > of column definitions.
> >
> > Of course that is my fault: why do I feed a "malformed" CSV file to poor
> > NeoCSVReader?
> >
> > Let me explain: we have a few import interfaces which end users can
> > define using a more or less nice assistant in our Application. The CSV
> > files they upload to our App come from third parties like payment
> > providers, banks and other sources. These change their file structures
> > whenever they feel like it and never tell anybody. So a CSV import that
> > may have been working for years may one day tear a whole web server
> > image down because of a wrong number of fieldAccessors. This is bad on
> > many levels.
> >
> > You can easily try the doubling effect at home: define a working CSV
> > Reader and comment out one of the addField: commands before you use the
> > NeoCSVReader to parse a CSV file. Say your CSV file has 3 lines with 4
> > columns each. If you remove one of the fieldAccessors, an #upToEnd will
> > yoield an Array of 6 objects rather than 3.
> >
> > I haven't found the reason for the cases where this leads to an endless
> > loop, but at least this one is clear...
> >
> > I *guess* this is due to the way #readEndOfLine is implemented. It seems
> > to not peek forward to the end of the line. I have the gut feeling
> > #peekChar should peek instead of reading the #next character form the
> > input Stream, but #peekChar has too many senders to just go ahead and
> > mess with it ;-)
> >
> > So I wonder if there are any tried approaches to this problem.
> >
> > One thing I might do is not use #upToEnd, but read each line using
> > PositionableStream>>#nextLine and first check each line if the number of
> > separators matches the number of fieldAccessors minus 1 (and go through
> > the hoops of handling separators in quoted fields and such...). Only if
> > that test succeeds, I would then hand a Stream with the whole line to
> > the reader and do a #next.
> >
> > This will, however, mean a lot of extra cycles for large files. Of
> > course I could do this only for some lines, maybe just the first one.
> > Whatever.
> >
> >
> > But somehow I have the feeling I should get an exception telling me the
> > line is not compatible to the Reader's definition or such. Or
> > #readAtEndOrEndOfLine should just walk the line to the end and ignore
> > the rest of the line, returnong an incomplete object....
> >
> >
> > Maybe I am just missing the right setting or switch? What best practices
> > did you guys come up with for such problems?
> >
> >
> > Thanks in advance,
> >
> >
> > Joachim
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
>
Jan. 7, 2021
Re: NeoCSVReader and wrong number of fieldAccessors
by Sven Van Caekenberghe
> On 7 Jan 2021, at 07:15, Richard O'Keefe <raoknz(a)gmail.com> wrote:
>
> You aren't sure what point I was making?
> How about the one I actually wrote down:
> What test data was NeoCSV benchmarked with
> and can I get my hands on it?
> THAT is the point. The data points I showed (and
> many others I have not) are not satisfactory to me.
> I have been searching for CSV test collections.
> One site offered 6 files of which only one downloaded.
> I found a "benchmark suite" for CSV containing no
> actual CSV files.
> So where *else* should I look for benchmark data than
> associated with a parser people in this community are
> generally happy with that is described as "efficient"?
Did you actually read my email and look at the code ?
NeoCSVBenchmark generates its own test data.
> Is it so unreasonable to suspect that my results might
> be a fluke? Is it bad manners to assume that something
> described as efficient has tests showing that?
>
>
>
> On Wed, 6 Jan 2021 at 22:23, jtuchel(a)objektfabrik.de <jtuchel(a)objektfabrik.de> wrote:
> Richard,
>
> I am not sure what point you are trying to make here.
> You have something cooler and faster? Great, how about sharing?
> You could make a faster one when it doesn't convert numbers and stuff? Great. I guess the time will be spent after parsing in 95% of the use cases. It depends. And that is exactly what you are saying. The word efficient means nothing without context. How is that related to this thread?
>
> I think this thread mostly shows the strength of a community, especially when there are members who are active, friendly and highly motivated. My problem git solved in blazing speed without me paying anything for it. Just because Sven thought my problem could be other people's problem as well.
>
> I am happy with NeoCSV's speed, even if there may be more lightweigt and faster solutions. Tbh, my main concern with NeoCSV is not speed, but how well I can understand problems and fix them. I care about data types on parsing. A non-configurable csv parser gives me a bunch of dictionaries and Strings. That could be a waste of cycles and memory once you need the data as objects.
> My use case is not importing trillions of records all day, and for a few hundred or maybe sometimes thousands, it is good/fast enough.
>
>
> Joachim
>
>
>
>
>
> Am 06.01.21 um 05:10 schrieb Richard O'Keefe:
>> NeoCSVReader is described as efficient. What is that
>> in comparison to? What benchmark data are used?
>> Here are benchmark results measured today.
>> (5,000 data line file, 9,145,009 characters).
>> method time(ms)
>> Just read characters 410
>> CSVDecoder>>next 3415 astc's CSV reader (defaults). 1.26 x CSVParser
>> NeoCSVReader>>next 4798 NeoCSVReader (default state). 1.78 x CSVParser
>> CSVParser>>next 2701 pared-to-the-bone CSV reader. 1.00 reference.
>>
>> (10,000 data line file, 1,544,836 characters).
>> method time(ms)
>> Just read characters 93
>> CSVDecoder>>next 530 astc's CSV reader (defaults). 1.26 x CSVParser
>> NeoCSVReader>>next 737 NeoCSVReader (default state). 1.75 x CSVParser
>> CSVParser>>next 421 pared-to-the-bone CSV reader. 1.00 reference.
>>
>> CSVParser is just 78 lines and is not customisable. It really is
>> stripped to pretty much an absolute minimum. All of the parsers
>> were configured (if that made sense) to return an Array of Strings.
>> Many of the CSV files I've worked with use short records instead
>> of ending a line with a lot of commas. Some of them also have the occasional stray comment off to the right, not mentioned in the header.
>> I've also found it necessary to skip multiple lines at the beginning
>> and/or end. (Really, some government agencies seem to have NO idea
>> that anyone might want to do more with a CSV file than eyeball it in
>> Excel.)
>>
>> If there is a benchmark suite I can use to improve CSVDecoder,
>> I would like to try it out.
>>
>> On Tue, 5 Jan 2021 at 02:36, jtuchel(a)objektfabrik.de <jtuchel(a)objektfabrik.de> wrote:
>> Happy new year to all of you! May 2021 be an increasingly less crazy
>> year than 2020...
>>
>>
>> I have a question that sounds a bit strange, but we have two effects
>> with NeoCSVReader related to wrong definitions of the reader.
>>
>> One effect is that reading a Stream #upToEnd leads to an endless loop,
>> the other is that the Reader produces twice as many objects as there are
>> lines in the file that is being read.
>>
>> In both scenarios, the reason is that the CSV Reader has a wrong number
>> of column definitions.
>>
>> Of course that is my fault: why do I feed a "malformed" CSV file to poor
>> NeoCSVReader?
>>
>> Let me explain: we have a few import interfaces which end users can
>> define using a more or less nice assistant in our Application. The CSV
>> files they upload to our App come from third parties like payment
>> providers, banks and other sources. These change their file structures
>> whenever they feel like it and never tell anybody. So a CSV import that
>> may have been working for years may one day tear a whole web server
>> image down because of a wrong number of fieldAccessors. This is bad on
>> many levels.
>>
>> You can easily try the doubling effect at home: define a working CSV
>> Reader and comment out one of the addField: commands before you use the
>> NeoCSVReader to parse a CSV file. Say your CSV file has 3 lines with 4
>> columns each. If you remove one of the fieldAccessors, an #upToEnd will
>> yoield an Array of 6 objects rather than 3.
>>
>> I haven't found the reason for the cases where this leads to an endless
>> loop, but at least this one is clear...
>>
>> I *guess* this is due to the way #readEndOfLine is implemented. It seems
>> to not peek forward to the end of the line. I have the gut feeling
>> #peekChar should peek instead of reading the #next character form the
>> input Stream, but #peekChar has too many senders to just go ahead and
>> mess with it ;-)
>>
>> So I wonder if there are any tried approaches to this problem.
>>
>> One thing I might do is not use #upToEnd, but read each line using
>> PositionableStream>>#nextLine and first check each line if the number of
>> separators matches the number of fieldAccessors minus 1 (and go through
>> the hoops of handling separators in quoted fields and such...). Only if
>> that test succeeds, I would then hand a Stream with the whole line to
>> the reader and do a #next.
>>
>> This will, however, mean a lot of extra cycles for large files. Of
>> course I could do this only for some lines, maybe just the first one.
>> Whatever.
>>
>>
>> But somehow I have the feeling I should get an exception telling me the
>> line is not compatible to the Reader's definition or such. Or
>> #readAtEndOrEndOfLine should just walk the line to the end and ignore
>> the rest of the line, returnong an incomplete object....
>>
>>
>> Maybe I am just missing the right setting or switch? What best practices
>> did you guys come up with for such problems?
>>
>>
>> Thanks in advance,
>>
>>
>> Joachim
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
>
> --
> -----------------------------------------------------------------------
> Objektfabrik Joachim Tuchel
> mailto:jtuchel@objektfabrik.de
>
> Fliederweg 1
> http://www.objektfabrik.de
>
> D-71640 Ludwigsburg
> http://joachimtuchel.wordpress.com
>
> Telefon: +49 7141 56 10 86 0 Fax: +49 7141 56 10 86 1
>
>
>
Jan. 7, 2021