[Pharo-users] Re: Telegram Bots with Pharo

2020-09-21 Thread Pablo Navarro
Hi Guille, Thanks for the feedback. It's an excellent idea. I'm going to add 
the link in the bot in \help or \start.

Saludos, Pablo.
El 21 de sep. de 2020 09:41 -0300, Guillermo Polito 
, escribió:
> Hi Pablo!
>
> Really nice!
>
> I tested it the other day. It would be nice if the bot had a link to its 
> github repository and the framework’s repo so people could follow from there 
> ;)
>
> Cheers,
> Guille
>
> > El 18 sept 2020, a las 22:55, Pablo Navarro  escribió:
> >
> > Hi everyone, I share a tool for creating telegram Bots with Pharo. This 
> > library provides an interface for the Telegram Bot API.
> >
> > To create our telegram bot in Pharo, the first thing we need to do is to 
> > create a new object that inherits from Bottlegram. This object must define 
> > at least these three methods:
> >  • slashStart: to be executed when the bot receives /start.
> >  • slashHelp: to be executed when the bot receives /help.
> >  • defaultText: to be executed when the bot receives an unknown command.
> >
> > The tool allows creating bots using two methods:
> >  • Using polling: the bot check updates for an amount of time.
> >  • Using webhook: Use this method to create a Teapot server to receive 
> > incoming updates via an outgoing webhook. Whenever there is an update for 
> > the bot, we received an HTTPS POST request to the specified URL
> >
> > Github link: https://github.com/pablo1n7/bottlegram
> >
> > If you use Telegram, do you test an echo bot in https://t.me/echo_pharo_bot
> >
> > Saludos, Pablo.
>


[Pharo-users] Telegram Bots with Pharo

2020-09-18 Thread Pablo Navarro
Hi everyone, I share a tool for creating telegram Bots with Pharo. This library 
provides an interface for the Telegram Bot API.

To create our telegram bot in Pharo, the first thing we need to do is to create 
a new object that inherits from Bottlegram. This object must define at least 
these three methods:

• slashStart: to be executed when the bot receives /start.
• slashHelp: to be executed when the bot receives /help.
• defaultText: to be executed when the bot receives an unknown command.


The tool allows creating bots using two methods:

• Using polling: the bot check updates for an amount of time.
• Using webhook: Use this method to create a Teapot server to receive incoming 
updates via an outgoing webhook. Whenever there is an update for the bot, we 
received an HTTPS POST request to the specified URL


Github link: https://github.com/pablo1n7/bottlegram

If you use Telegram, do you test an echo bot in https://t.me/echo_pharo_bot

Saludos, Pablo.


[Pharo-users] Re: roman numbers

2020-09-18 Thread Pablo Navarro
Hi! Maybe you can use this algorithm:

Define a dictionary with these elements:

1000:'M',
900:'CM',
500: 'D',
400: 'CD',
100:"C",
90:'XC',
50:'L',
40:'XL',
10:'X',
9:'IX',
5:'V',
4:'IV',
1:'I'

Using this dictionary (romansDic), you define a recursive function:

toRomans(number){
    i = return the greatest key less than or equal to given key from 
‘romansDic'  .
    if (number == i ){
 return romansDic.get(number)
}
    return string_concat(romansDic.get(i), toRomans(number-i))
}

Sorry for the pseudocode.

Saludos Pablo.


El 18 de sep. de 2020 10:46 -0300, Roelof Wobben via Pharo-users 
, escribió:
> Op 18-9-2020 om 06:45 schreef Richard O'Keefe:
> > Roman numerals are much more complicated and much less consistent
> > than most people realise.  The regular M DC LX VI system is both
> > more modern and less capable than anything the Romans would have
> > recognised.  In particular,
> >  - in the 8th century, N (short for "nulla") was adopted for zero
> >  - the Roman system always had fractions like S for 1/2, . for 1/12
> >  - there were numerals for much larger numbers.
> > Unicode code block [2150] has characters for the Roman numerals
> > including
> > 216C L ROMAN NUMERAL FIFTY
> > 216D C ROMAN NUMERAL ONE HUNDRED
> > 216E D ROMAN NUMERAL FIVE HUNDRED
> > 216F M ROMAN NUMERAL ONE THOUSAND
> > 2181 ↁ ROMAN NUMERAL FIVE THOUSAND
> > 2182 ↂ ROMAN NUMERAL TEN THOUSAND
> > 2187 ↇ ROMAN NUMERAL FIFTY THOUSAND
> > 2188 ↈ ROMAN NUMERAL ONE HUNDRED THOUSAND
> > (In fact these are ligated versions of forms using "apostrophic" brackets;
> > the pattern goes as high as you want, e.g., (((|))) for a million.
> > D and M were originally |) and (|).   There is
> >
> > So the first thing is to make sure that you understand the
> > requirements for the problem.
> > - Are you required to produce ASCII characters, required to
> >   produce Unicode ones, or allowed to produce either?
>
> as far as I can see from the tests only ASCI characters.
>
> > - Are you required to support zero?
>
> No
>
> > - Are you required to support n/12 fractions (1<=n<=11)?
>
> NO
>
> > - Are you allowed, required, or forbidden to use the "overline"
> >   convention, where an overline means "multiply by 1000"?
> >   =---
>
> In the test that one is not used.
> >   ICCXXXIVDLXVII = 1,234,567
> > - Are you allowed, required, or forbidden to use "additive"
> >   form "" as well as/instead of "subtractive" form "IV"?
> > - Are you to use upper case or lower case letters?
> > - And so on.
> >
> >
>
>
> the number 4 needs to be  "IV"
>
> Roelof
>


Re: [Pharo-users] mentor question 4

2020-04-30 Thread Pablo Navarro
I proposed as alternative to Luhn check. In special to validation problems
like credit card number validation.

El jue., 30 abr. 2020 11:11, Richard O'Keefe  escribió:

> I'm sure you could fit regular expressions into the Luhn check,
> but I am rather mystified as to what one could possibly gain by doing so.
> How do you do the equivalent of
>   #(0 2 4 6 8 1 3 5 7 9) at: char digitValue + 1
> in a regular expression and why would you want to?
>
> On Fri, 1 May 2020 at 01:31, Pablo Navarro  wrote:
> >
> > Hello!. For this problem is possible to use Regular Expressions too.
> >
> >
> https://ci.inria.fr/pharo-contribution/job/UpdatedPharoByExample/lastSuccessfulBuild/artifact/book-result/Regex/Regex.html
> >
> > Saludos, Pablo.
> > El 30 de abr. de 2020 10:11 -0300, Stéphane Ducasse <
> stephane.duca...@inria.fr>, escribió:
> >
> > It looks like a cool problem
> > from where did you take it?
> >
> > I hope I can discuss my approch to this problem :
> >
> > Given a number determine whether or not it is valid per the Luhn formula.
> >
> > The Luhn algorithm is a simple checksum formula used to validate a
> variety of identification numbers, such as credit card numbers and Canadian
> Social Insurance Numbers.
> >
> > The task is to check if a given string is valid.
> >
> >
> >
> > I like people that are always thinking in string as if a collection of
> number would not make it :)
> >
> > Validating a Number
> >
> > Strings of length 1 or less are not valid. Spaces are allowed in the
> input, but they should be stripped before checking. All other non-digit
> characters are disallowed.
> >
> > Example 1: valid credit card number
> >
> > 4539 1488 0343 6467
> >
> > The first step of the Luhn algorithm is to double every second digit,
> starting from the right. We will be doubling
> >
> > 4_3_ 1_8_ 0_4_ 6_6_
> >
> > If doubling the number results in a number greater than 9 then subtract
> 9 from the product. The results of our doubling:
> >
> > 8569 2478 0383 3437
> >
> > Then sum all of the digits:
> >
> > 8+5+6+9+2+4+7+8+0+3+8+3+3+4+3+7 = 80
> >
> > If the sum is evenly divisible by 10, then the number is valid. This
> number is valid!
> >
> >
> > my idea was to do these steps
> >
> > 1)  reverse the input.
> >
> > 2)   use this to double every second  digit and calculate the sum of all
> the numbers :
> >
> > checkNumber :=  (collection reverse selectwith index: [:item :index |
> (index % 2 == 0) . IfTrue: [item *2]] )  sumNumbers
> >
> >
> >
> > you can also
> > 1 to: xx by: 2 do:
> >
> > 3) check if its a valid  number by doing this :
> >
> >
> > ^ (checkNumber % 10 == 0)
> >
> >
> > is this a good game plan or has it flaws or can I do it better ?
> >
> > Regards,
> >
> >
> > Roelof
> >
> >
> >
> >
> >
> > 
> > Stéphane Ducasse
> > http://stephane.ducasse.free.fr / http://www.pharo.org
> > 03 59 35 87 52
> > Assistant: Julie Jonas
> > 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
> >
>
>


Re: [Pharo-users] mentor question 4

2020-04-30 Thread Pablo Navarro
Hello!. For this problem is possible to use Regular Expressions too.

https://ci.inria.fr/pharo-contribution/job/UpdatedPharoByExample/lastSuccessfulBuild/artifact/book-result/Regex/Regex.html

Saludos, Pablo.
El 30 de abr. de 2020 10:11 -0300, Stéphane Ducasse 
, escribió:
> It looks like a cool problem
> from where did you take it?
>
> > I hope I can discuss my approch to this problem :
> >
> > Given a number determine whether or not it is valid per the Luhn formula.
> > The Luhn algorithm is a simple checksum formula used to validate a variety 
> > of identification numbers, such as credit card numbers and Canadian Social 
> > Insurance Numbers.
> > The task is to check if a given string is valid.
> >
>
> I like people that are always thinking in string as if a collection of number 
> would not make it :)
>
> > Validating a Number
> > Strings of length 1 or less are not valid. Spaces are allowed in the input, 
> > but they should be stripped before checking. All other non-digit characters 
> > are disallowed.
> > Example 1: valid credit card number
> > 4539 1488 0343 6467
> > The first step of the Luhn algorithm is to double every second digit, 
> > starting from the right. We will be doubling
> > 4_3_ 1_8_ 0_4_ 6_6_
> > If doubling the number results in a number greater than 9 then subtract 9 
> > from the product. The results of our doubling:
> > 8569 2478 0383 3437
> > Then sum all of the digits:
> > 8+5+6+9+2+4+7+8+0+3+8+3+3+4+3+7 = 80
> > If the sum is evenly divisible by 10, then the number is valid. This number 
> > is valid!
> >
> > my idea was to do these steps
> > 1)  reverse the input.
> > 2)   use this to double every second  digit and calculate the sum of all 
> > the numbers :
> > checkNumber :=  (collection reverse selectwith index: [:item :index | 
> > (index % 2 == 0) . IfTrue: [item *2]] )  sumNumbers
>
>
> you can also
> 1 to: xx by: 2 do:
> > 3) check if its a valid  number by doing this :
> >
> > ^ (checkNumber % 10 == 0)
> >
> > is this a good game plan or has it flaws or can I do it better ?
> > Regards,
> >
> > Roelof
> >
> >
> >
>
> 
> Stéphane Ducasse
> http://stephane.ducasse.free.fr / http://www.pharo.org
> 03 59 35 87 52
> Assistant: Julie Jonas
> 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
>


Re: [Pharo-users] Pharo image processing library

2020-02-05 Thread Pablo Navarro
Hi everyone

I put available my code for Image Form in GitHub 
(https://github.com/pablo1n7/ImageForm). This afternoon, I did the operations 
with kernels :D.

It's not 100% complete, I'm still working on it. I hope you find it useful and 
any suggestion is welcomed

Best Regards, Pablo.
El 25 de ene. de 2020 11:33 -0300, Oleksandr Zaitsev , 
escribió:
> Hello Pablo,
>
> Is the code of your library available on GitHub?
> Could you share the link please?
>
> Oleks
>
>
>
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>


Re: [Pharo-users] Pharo image processing library

2020-01-28 Thread Pablo Navarro
Hi everyone!

after what we talked about the other day, I started to work with the test cases 
of Form. I don´t know if the best form for share but I load some in my Github: 
https://github.com/pablo1n7/FormTest. There are still many tests to do but it's 
a beginning.

For the other hand, I created a repository for ImageForm: 
https://github.com/pablo1n7/ImageForm (Thanks to Julien Delplanque for the 
guide).

I made tests for all the methods (do this with images is so funny :D) and load 
some examples.

Thanks
Pablo.


El 27 de ene. de 2020 08:49 -0300, Any question about pharo is welcome 
, escribió:
>
> https://github.com/Cuis-Smalltalk/Numerics/blob/master/ImageProcessing.pck.st


Re: [Pharo-users] Pharo image processing library

2020-01-27 Thread Pablo Navarro
hi, I’m looking. very interesting, thanks.

Pablo.
El 27 de ene. de 2020 00:35 -0300, Any question about pharo is welcome 
, escribió:
>
> https://80738163270632.blogspot.com/2018/10/pharo-script-of-day-proto-proto-image.html


Re: [Pharo-users] Pharo image processing library

2020-01-26 Thread Pablo Navarro
I'll work on those tests and then we'll do the subclass for image
processing.

:)

I'm very happy to contribute to this project.

Pablo.


El dom., 26 ene. 2020 12:08, Stéphane Ducasse 
escribió:

> Pablo
>
> if you are interested I would like to increase the tests around Form.
> The three that exist are in FormTest and to a certain extent to BitBltTest.
> If you write  tests I will happily review and integrate in the system.
> ( I will see if I can hijack some time during a boring meeting to produce
> some more).
>
> I also check the reference to Form and clearly the class Form itself
> refers too much to it.
> Now with more tests we would be more confident to change.
>
>
> S.
>
>
> On 25 Jan 2020, at 17:41, Pablo Navarro  wrote:
>
> Hi everyone! Thanks for the comments, I don't create a repository yet
> because, in this first version, I just wanted to try if it was possible, so
> only create a Form subclass and add three methods.
>
> Form subclass: #ImageForm
> instanceVariableNames: 'mode'
> classVariableNames: ''
> package: ‘SmallImage'
>
> ——>
>
> + aImage
> "add two image and return a new ImageForm"
> |aImageResult|
>
> aImageResult := self deepCopy.
>
> 0 to: self width do:[:x| 0 to: self height
> do:[:y|
> |aPoint aColorA aColorB|
> aPoint := (Point x: x y: y).
> aColorA := aImageResult colorAt: aPoint.
> aColorB := aImage colorAt: aPoint.
> aImageResult colorAt: aPoint put: aColorA + aColorB. ]].
> ^ aImageResult
>
> —->
>
> show: anTitle
> "Show a image in a window, scale the image to 500"
> |im|
> im := (ImageMorph withForm: (self scaledIntoFormOfSize:500) ).
> im withSnapshotBorder.
> im borderWidth: 5.
> im color: (Color gray).
> im openInWindowLabeled: (anTitle,' | mode: ', self mode asLowercase, '| ',
> self shape).
>
> -—>
>
>
> The first problem I found was the class Form return 'Form new' and not
> 'self class new' so I had to create two class method (in ImageForm):
>
> newFrom: aForm mode: aMode
> "create an ImageForm from to a Form object."
> | aImage|
>
> aImage := self new.
> aImage copyFrom: aForm.
> aImage mode: aMode.
> ^ aImage.
>
> —>
>
> open: aFileName
> “Open a image.”
> | aImage aForm|
>  aForm := ImageReadWriter formFromFileNamed: aFileName.
> aImage := self newFrom: aForm mode: ‘ARGB’.
> ^ aImage.
>
> —>
>
>
> I think that the methods (+ and show) should be directly in the class Form
> but I didn't want to change the original. If you think it's okay, I can
> continue working and this week upload to github with their respective tests.
>
> P.S. sorry for my limited English.
>
>
>
>
> Best Regards Pablo.
> El 25 de ene. de 2020 12:10 -0300, Stéphane Ducasse <
> stephane.duca...@inria.fr>, escribió:
>
> what I always find strange is that people do not invest in tests for
> domains that are super nice to test….
>
> S.
>
> On 25 Jan 2020, at 16:04, Serge Stinckwich 
> wrote:
>
> You may have a look to Cuis library :
> https://github.com/Cuis-Smalltalk/Numerics
> There is an image analysis package.
> We have some plan in PolyMath to port it:
> https://github.com/PolyMathOrg/PolyMath/issues/158
>
> Best,
>
> On Fri, Jan 24, 2020 at 11:20 PM Pablo Navarro  wrote:
>
>> Hi everyone!
>>
>> I’m searching for one library for image processing in Pharo. I couldn't
>> find anything (only wrappers) so I tried programming one for basic
>> operations (sum,
>> subtraction) with images using class “Form”.
>>
>> What do you think about this?
>>
>>
>> For providing a context, I'm studying a PhD. in image processing, but all
>> of the operations that I do, do it in Python. I try using Pharo for more
>> fun :D.
>>
>> Best Regards Pablo.
>>
>
>
> --
> Serge Stinckwic
> ​h​
>
> Int. Research Unit
>  on Modelling/Simulation of Complex Systems (UMMISCO)
> ​Sorbonne University
>  (SU)
> French National Research Institute for Sustainable Development (IRD)​
> U
> ​niversity of Yaoundé I​, Cameroon
> "Programs must be written for people to read, and only incidentally for
> machines to execute."
> https://twitter.com/SergeStinckwich
> ​
>
>
> 
> Stéphane Ducasse
> http://stephane.ducasse.free.fr / http://www.pharo.org
> 03 59 35 87 52
> Assistant: Julie Jonas
> 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
>
>
> 
> Stéphane Ducasse
> http://stephane.ducasse.free.fr / http://www.pharo.org
> 03 59 35 87 52
> Assistant: Julie Jonas
> 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
>
>


Re: [Pharo-users] Pharo image processing library

2020-01-25 Thread Pablo Navarro
Hi everyone! Thanks for the comments, I don't create a repository yet because, 
in this first version, I just wanted to try if it was possible, so only create 
a Form subclass and add three methods.

Form subclass: #ImageForm
instanceVariableNames: 'mode'
classVariableNames: ''
package: ‘SmallImage'

——>

+ aImage
"add two image and return a new ImageForm"
|aImageResult|

aImageResult := self deepCopy.

0 to: self width do:[:x| 0 to: self height
do:[:y|
|aPoint aColorA aColorB|
aPoint := (Point x: x y: y).
aColorA := aImageResult colorAt: aPoint.
aColorB := aImage colorAt: aPoint.
aImageResult colorAt: aPoint put: aColorA + aColorB. ]].
^ aImageResult

—->

show: anTitle
"Show a image in a window, scale the image to 500"
|im|
im := (ImageMorph withForm: (self scaledIntoFormOfSize:500) ).
im withSnapshotBorder.
im borderWidth: 5.
im color: (Color gray).
im openInWindowLabeled: (anTitle,' | mode: ', self mode asLowercase, '| ', self 
shape).

-—>


The first problem I found was the class Form return 'Form new' and not 'self 
class new' so I had to create two class method (in ImageForm):

newFrom: aForm mode: aMode
"create an ImageForm from to a Form object."
| aImage|

 aImage := self new.
 aImage copyFrom: aForm.
 aImage mode: aMode.
 ^ aImage.

—>

open: aFileName
“Open a image.”
| aImage aForm|
 aForm := ImageReadWriter formFromFileNamed: aFileName.
 aImage := self newFrom: aForm mode: ‘ARGB’.
 ^ aImage.

—>


I think that the methods (+ and show) should be directly in the class Form but 
I didn't want to change the original. If you think it's okay, I can continue 
working and this week upload to github with their respective tests.

P.S. sorry for my limited English.




Best Regards Pablo.
El 25 de ene. de 2020 12:10 -0300, Stéphane Ducasse 
, escribió:
> what I always find strange is that people do not invest in tests for domains 
> that are super nice to test….
>
> S.
>
> > On 25 Jan 2020, at 16:04, Serge Stinckwich  
> > wrote:
> >
> > You may have a look to Cuis library : 
> > https://github.com/Cuis-Smalltalk/Numerics
> > There is an image analysis package.
> > We have some plan in PolyMath to port it: 
> > https://github.com/PolyMathOrg/PolyMath/issues/158
> >
> > Best,
> >
> > > On Fri, Jan 24, 2020 at 11:20 PM Pablo Navarro  wrote:
> > > > > Hi everyone!
> > > > >
> > > > > I’m searching for one library for image processing in Pharo. I 
> > > > > couldn't find anything (only wrappers) so I tried programming one for 
> > > > > basic operations (sum,
> > > > > subtraction) with images using class “Form”.
> > > > >
> > > > > What do you think about this?
> > > > >
> > > > >
> > > > > For providing a context, I'm studying a PhD. in image processing, but 
> > > > > all of the operations that I do, do it in Python. I try using Pharo 
> > > > > for more fun :D.
> > > > >
> > > > > Best Regards Pablo.
> >
> >
> > --
> > Serge Stinckwic
> > ​h
> >
> > Int. Research Unit
> >  on Modelling/Simulation of Complex Systems (UMMISCO)
> > ​Sorbonne University
> >  (SU)
> > French National Research Institute for Sustainable Development (IRD)
> > U
> > ​niversity of Yaoundé I​, Cameroon
> > "Programs must be written for people to read, and only incidentally for 
> > machines to execute."
> > https://twitter.com/SergeStinckwich
> >
>
> 
> Stéphane Ducasse
> http://stephane.ducasse.free.fr / http://www.pharo.org
> 03 59 35 87 52
> Assistant: Julie Jonas
> 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
>


[Pharo-users] Pharo image processing library

2020-01-24 Thread Pablo Navarro
Hi everyone!

I’m searching for one library for image processing in Pharo. I couldn't
find anything (only wrappers) so I tried programming one for basic
operations (sum,
subtraction) with images using class “Form”.

What do you think about this?


For providing a context, I'm studying a PhD. in image processing, but all
of the operations that I do, do it in Python. I try using Pharo for more
fun :D.

Best Regards Pablo.


Re: [Pharo-users] Hi Community

2019-12-30 Thread Pablo Navarro
 Hi! Thanks for all your comments, I deployed a presentation made with
Smallbook in Heroku (https://pharo-smallbook.herokuapp.com)
I hope you like it.

Best Regards Pablo.
El 29 de dic. de 2019 07:18 -0300, Petter ,
escribió:

Hei Pablo and thanks for an interesting project.

I liked the feature that you can write code as actually code 👍



--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html


Re: [Pharo-users] Hi Community

2019-12-28 Thread Pablo Navarro
Thanks for the comments. I'll check Pillar.



Best Regards, Pablo.
El 28 de dic. de 2019 08:10 -0300, Norbert Hartl , escribió:
> Hi Pablo,
>
> welcome and great tool. If you extend it you could could consider using 
> pillar document model (https://github.com/pillar-markup/pillar)
>
> Norbert
>
> > Am 27.12.2019 um 23:55 schrieb Pablo Navarro :
> >
> > Hi everyone, my name's Pablo and I'm from Argentina. I'm taking my first 
> > steps in Pharo and created this tool 
> > (https://github.com/pablo1n7/Smallbook) to share with my colleagues and 
> > show them the power of Pharo.
> >
> > It's a simple library to create slide presentations and show them in a web 
> > browser.
> >
> > I used Zinc HTTP for the server, JS for the presentation controls and CSS 
> > for the styles.
> >
> > It's not 100% complete, I'm still working on it. I hope you find it useful 
> > and any suggestion is welcomed
> >
> >
> > Best Regards, Pablo.


[Pharo-users] Hi Community

2019-12-27 Thread Pablo Navarro
Hi everyone, my name's Pablo and I'm from Argentina. I'm taking my first steps 
in Pharo and created this tool (https://github.com/pablo1n7/Smallbook) to share 
with my colleagues and show them the power of Pharo.

It's a simple library to create slide presentations and show them in a web 
browser.

I used Zinc HTTP for the server, JS for the presentation controls and CSS for 
the styles.

It's not 100% complete, I'm still working on it. I hope you find it useful and 
any suggestion is welcomed


Best Regards, Pablo.