Intermediate-Level Tutorials for Pharo

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
31 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: Intermediate-Level Tutorials for Pharo

Offray Vladimir Luna Cárdenas-2
Hi,

Is nice to see this thread.

Our approach to building documentation is a problem/local first one. So
we go from particular problems/projects as need of the community 
dictate them. We do workshops and create the documentation while the
workshop is happening and then we compile such documentation in booklets
(see for example Documentathon: Agile and resilient tools and techniques
to write and publish together -- In Spanish [1]). Is similar to the book
sprints[1a] but we did a parallel development without knowing them. We
use CodiMD[2] for collaborative workshop note taking and then we combine
Pandoc, Markdeep[3], Fossil[4] and others with Pharo and Grafoscopio to
create the publication and collaborate on it asynchronously.

This problem based approach means that we are kind of intermediate level
oriented by design and tt also means that we have gaps in our knowledge
(particularly on the TDD front), as we have learn as we go/need. We are
combining stuff from data and file (STON, JSON, FileLocator)
serialization and manipulation and also calling external programs and
scheduling taks (OSSubprocess, TaskIt), making visualizations (Roassal)
and coming with solutions on how to combine such technologies to
solve/easy the tasks at hand and making compelling arguments to
(h)ac(k)tivists, researchers or/and journalist (see for example the
Panama Papers as reproducible research[5] or domain specific
visualizations for governments medicine information[5a]).

All this is powered by Pharo technologies and communities, but I think
that we still can make a compelling case for wider audiences about Pharo
and making it more visible. Now with Covid, the need for self/autonomous
publishing is becoming more visible again, as educators, activists,
communities are turning to more activities online and also need more
autonomy over their online presence beyond what is provided by
oligopolistic providers. So we're going to start a series of workshops
on agile and resilient Indie Web[6] with Pharo, building blogs, wikis
and portfolios with it (and Fossil, Markdeep, etc), using Pharo for
orchestration and articulation of other technologies, but making it more
visible also (as agility and resilience are not properties of the
overcomplicated web of today).

Usually I try to bootstrap the problem solving environment, so probably
the web presences we build in the the workshops (starting on August
15th) will serve to document and share the experience. The workshops
will be given in Spanish (I'll share the invitation in the Pharo Spanish
discord channel), because of our local first approach, but the software
we develop to support the experience will be useful to non Spanish
speakers also.

So I hope this contribute to showcase the Pharo usage in solving
intermediate ("real life") level problems and even to involve non
Spanish speakers with code reviews and testing, making suggestions and
helping us to improve the software engineering parts behind such
problems/projects, as I greatly appreciate the experience and teachings
of this community.

I'll keep you informed.

Cheers,

Offray


[1] https://mutabit.com/repos.fossil/documentaton/
[1a] https://en.wikipedia.org/wiki/Book_sprint
[2] https://demo.codimd.org/
[3] https://casual-effects.com/markdeep/
[4] https://fossil-scm.org/
[5] https://mutabit.com/offray/blog/en/entry/panama-papers-1
[5a] https://mutabit.com/offray/blog/en/entry/sdv-infomed
[6] https://indieweb.org/

On 2/08/20 12:51 p. m., tbrunz wrote:

>>> I've been thinking lately that it would be nice to expand the number of
>>> Pharo tutorials we have available.  But rather than (or along with)
>>> creating
>>> more "beginner" level tutorials, I'd like to see some good "intermediate"
>>> level Pharo tutorials.
>> Me too :)
> Let's do it, then.  I'll volunteer to do most of the work.  :^)
>
> My hope is that participating in this will make me capable of creating
> advanced tutorials all by myself.
>
>>>  I think that programmers who already know the Pharo
>>> syntax and messaging semantics could benefit from more advanced tutorials
>>> that demonstrate how to develop "real world" Pharo code for "real world"
>>> processing needs.
>> Yes yes I would love that.
> That was part of my motivation for creating a Pharo app to solve the Zebra
> Puzzle.  First, of course, I wanted to solve it.  ;^)
>
>>> What I'm talking about is something that assumes you know the language,
>>> the
>>> basics of the IDE (but not necessarily how to leverage its capabilities
>>> to
>>> aid development), and the basics of the foundation classes (but not its
>>> details).  I'd like a tutorial for intermediate Pharo programmers who
>>> want
>>> to become experts with Pharo.  Something that can show you how to apply
>>> the
>>> tools of the IDE and the features of the language and base classes to
>>> create
>>> solutions that solve complex problems.
>> do you have ideas?
> I do!
>
> As I started building the Logic Puzzle app, it occurred to me that I could
> probably find several different, common structures in OOP (specifically,
> Pharo) to add to the solution.  And then each would be its own example of
> "what real Pharo code looks like".  I.e., be good examples.
>
> But first, I needed to explore "how to do it in Pharo" for myself, which
> naturally would have me working the IDE strongly.
>
> Then I thought, the entire application can/should be an example, so it
> should be a tutorial.
>
> That means that I need more than just a completed application (that's "just
> an example").  To be a *tutorial*, it means starting from scratch, showing
> how to approach the solution, how to start a Pharo app, how to use the IDE,
> how to write tests, how to refactor code, etc.
>
> Then I thought, this needs a GUI.  Either a Spec2 UI or a web app UI (with
> Seaside or Teapot).  But I would need help with that!  So I'll start by
> creating a message-based solution, and maybe get help to add a UI later.
>
> I did some prototyping, then got what I think might be a good code structure
> (by version 4; it took a while to "think pure OOP"; old habits are hard to
> fight against).  It runs, it works.
>
> But.. Is it "good Pharo code"?  I'm not experienced enough to answer that
> question.  I need a code review, criticism, guidance.  Point me in the right
> direction and I'll keep working on it, and start thinking about how to
> express the "meta" elements (how to use the IDE to make/test the code,
> etc.).
>
>>> What does the community think of this idea?
>> I love it. I did Pharo by example so that I can get of rid of the beginner
> parts.
>> After I did learning OOP and Pharo with style so that I do not have to talk
> about it
>> again.
>>
>> So definitively.
> Okay, great.  I'll do most of the work.  But I need help...
>
> I don't want to go any further without someone much more experienced than I
> am to review what I have and let me know what I'm doing right & what I'm
> doing "no quite so right".  Yes, it runs, it works -- but that's *not* good
> enough.  The goal here isn't to "hack out a solution and move on", the goal
> is to "create an example and tutorial that's high enough quality to use to
> teach Pharo to other people".  I don't want to be teaching *my* bad habits!
>
> Also, I know next to nothing about Spec2 or Seaside/Teapot.  I just know
> that I need to learn it, and I need to use it to give my tutorial a UI (or
> two).  Newcomers will show up wanting to learn Pharo, and they need to be
> reassured that they can create nice (enough) UIs without a huge effort.
> (Not everyone is a command line hacker, and end-users certainly don't want
> to be.)
>
> The more I learn (from you), the more I can be independent, and the more
> tutorials I could produce -- without a lot of help.  I'm willing to do the
> work, because that will help make me a Pharo "master programmer".  (I don't
> want to be a hack, and I can't really be a trainer if I'm just a hack
> myself.)  
>
> I'll pay back the community by helping to attract and advance more
> developers' skills.  I just have to have the more advanced knowledge &
> skills myself.  So, train the (future) trainer, anyone??
>  
> -Ted
>
>
>
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>


Reply | Threaded
Open this post in threaded view
|

Re: Intermediate-Level Tutorials for Pharo

Stéphane Ducasse
In reply to this post by tbrunz

Okay, I'll do that.  But this brings up a more general question...

If I wanted to add a diagram, or maybe a document with equations (rendered
in LaTex), then a class comment wouldn't work.  

...Unless that's intended to be part of the newer format??


Microdown supports latex via external services (I should check that the implementation uses the same cache than the one for pictures).
For diagram you can use png but we will have to spot glitches. 

S. 


-t


I would put it in class comment.

We are about to release a nicer rendering of comments.

S.

On 4 Aug 2020, at 06:46, tbrunz <wild.ideas@> wrote:

I wrote a "theory of operation" document for my app,
https://github.com/tbrunz/logic-puzzle

But then I realized, "Where do I put it??"

I thought of a few possibilities:

* Commit it to the git repo, but then it wouldn't be easy to access from
Pharo,
* Add it to a top-level Pharo class comment,
* Make it into a string in Pharo, put it in a method in a class.

What's the standard practice for "attaching" non-code documents to Pharo
applications?

-t





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


--------------------------------------------
Stéphane Ducasse
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

Reply | Threaded
Open this post in threaded view
|

Re: Intermediate-Level Tutorials for Pharo

tbrunz
> > Okay, I'll do that. But this brings up a more general question...
> >
> > If I wanted to add a diagram, or maybe a document with equations
> (rendered
> > in LaTex), then a class comment wouldn't work.
> >
> > ...Unless that's intended to be part of the newer format??
>
>
> Microdown supports latex via external services (I should check that the
> implementation uses the same cache than the one for pictures).
> For diagram you can use png but we will have to spot glitches.

One more thought on this...  I assume you've seen Jupyter Notebooks?
They're starting to see some use where I work (we now have our own
'enterprise server').  I recently took an intro class to see how it works,
and how to use them.

How much of a "Jupyter-style" notebook capability would the community be
interested in?  By that I mean having the ability to mix 'rich'
documentation with code and data to produce interactive 'notebooks' with
similarities to what Jupyter does -- but simpler!  Jupyter is much too
complicated...

What you describe for enhanced comments sounds like a step in that
direction...  Obviously Pharo is already oriented toward mixing code and
data in one document, and enhancing the comments moves it closer to a
notebook with richer documentation possibilities.  

So it seems to me that generalizing this "enhanced document capability" and
making it more prominent (such as giving it its own type of window, rather
than it being a browser pane tied to the code?) would take it closer yet to
realizing a general, flexible "Pharo Notebooks" concept.

My understanding is that Offray's Grafoscopio is essentially what I'm
describing, but maybe more oriented to data analysis & presentation..??  (He
can say better than I, as I'm not sure how accurate that is.)  I am thinking
of something that would include that, but maybe be more general-purpose.

Part of this idea is to feature a "semi-automated" subset of Spec2 that
makes it easier to get nice graphical UIs in a notebook fashion -- but does
not require as much depth of understanding Spec2.  (All of Spec2 allows
anyone to build anything.. but not everyone needs to build so much..?  This
is the value of frameworks and selectable motifs, yes?)  

Could what I'm describing be a way for everyone to step easily into Spec2
when its full flexibility for making GUIs isn't needed (yet)?  By this I'm
implying code generators that create common/typical Spec2 framework classes
& methods that would make up the front-end of the 'documentation' element of
"Pharo Notebooks".  Pharo being Pharo, one could then customize further...

Because "it's always easier to edit something than to create from a blank
page", yes?

I can see Pharo taking away "market share" from Jupyter Notebooks, by being
simpler and easier to work with.  Data + Code + Document: All three elements
being "live" and interactive.  Pharo has the first two.. What about the
third?

-t

>
> S.
>
> >
> > -t
> >
> >
> >> I would put it in class comment.
> >>
> >> We are about to release a nicer rendering of comments.
> >>
> >> S.
> >>
> >>> On 4 Aug 2020, at 06:46, tbrunz wrote:
> >>>
> >>> I wrote a "theory of operation" document for my app,
> >>> https://github.com/tbrunz/logic-puzzle 
> >>>
> >>> But then I realized, "Where do I put it??"
> >>>
> >>> I thought of a few possibilities:
> >>>
> >>> * Commit it to the git repo, but then it wouldn't be easy to access
> from
> >>> Pharo,
> >>> * Add it to a top-level Pharo class comment,
> >>> * Make it into a string in Pharo, put it in a method in a class.
> >>>
> >>> What's the standard practice for "attaching" non-code documents to
> Pharo
> >>> applications?
> >>>
> >>> -t
> >>>




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

Reply | Threaded
Open this post in threaded view
|

Re: Intermediate-Level Tutorials for Pharo

tbrunz
In reply to this post by Offray Vladimir Luna Cárdenas-2
Hi Offray,

I think you're addressing many of the same concerns as I am, with more of a
web/browser orientation perhaps...

Which is good.  Pharo can make nice, interactive web sites as well as nice,
interactive documents, can it not?

>  I think that we still can make a compelling case for wider audiences
> about Pharo and making it more visible.

I agree!  What do the 'wider audiences' need?  What will attract their
attention?  Being visible is necessary, but is it sufficient?  How can we
make them want to learn this new tool?  (Everyone is so strained for time,
and attention is hard to come by these days...)

> agility and resilience are not properties of the
> overcomplicated web of today

So, so true...

> .. making suggestions and helping us to improve the software
> engineering parts behind such problems/projects,

I am also interested in contributing to that.  Better tools & methods for
solving the problems, better documentation to further understanding and
engagement, and better ways for users to employ the results.

> I greatly appreciate the experience and teachings of this community.

As do I.  

Cheers!
-Ted





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

Reply | Threaded
Open this post in threaded view
|

Re: Intermediate-Level Tutorials for Pharo

Offray Vladimir Luna Cárdenas-2
In reply to this post by tbrunz
Hi,

On 5/08/20 9:43 a. m., tbrunz wrote:

>>> Okay, I'll do that. But this brings up a more general question...
>>>
>>> If I wanted to add a diagram, or maybe a document with equations
>> (rendered
>>> in LaTex), then a class comment wouldn't work.
>>>
>>> ...Unless that's intended to be part of the newer format??
>>
>> Microdown supports latex via external services (I should check that the
>> implementation uses the same cache than the one for pictures).
>> For diagram you can use png but we will have to spot glitches.
> One more thought on this...  I assume you've seen Jupyter Notebooks?
> They're starting to see some use where I work (we now have our own
> 'enterprise server').  I recently took an intro class to see how it works,
> and how to use them.
>
> How much of a "Jupyter-style" notebook capability would the community be
> interested in?  By that I mean having the ability to mix 'rich'
> documentation with code and data to produce interactive 'notebooks' with
> similarities to what Jupyter does -- but simpler!  Jupyter is much too
> complicated...

I can't speak for the wider community, but I think that there is some
interest as we have 3 Smalltalk interactive notebooks alternatives. Two
of them where mentioned as a long talks [1][2] in the last ESUG and
Grafoscopio was presented there also as a speed talk (someday I need to
make a proper ESUG long talk, but being self funded means that my
participation has been always confirmed in last moments). I share your
concern about Jupyter being overcomplicated and in fact I started
Grafoscopio in part out of my frustration with the incidental complexity
in the Python notebook ecosystem (see [3]). We can be more lean and agile.

[1]
https://www.slideshare.net/esug/polyglot-notebooks-with-squeaksmalltalk-on-the-graalvm
[2] https://www.slideshare.net/esug/building-a-scientific-workbench-in-pharo
[3]
http://mutabit.com/offray/static/blog/output/posts/grafoscopio-idea-and-initial-progress.html

One of the differences of Grafoscopio with other Smalltalk notebooks is
that is has an older diverse community (since 2015), beyond academia and
software developers, including activists, journalists, librarians,
philosophers, designers, among others. A key concern is to balance
practical choices in such communities with the PhD research that created
Grafoscopio (which was on Design and Creation with immersive community
research). For example a simple extensible format to exchange
Grafoscopio notebooks was an early concern and for that I used the
excellent STON  format to mix documentation markup (Markdown) and Pharo
code. Also I bridged external tools (Pandoc, Lua) to make format
conversions (Markdown to LaTeX, HTML and PDF). The only other Smalltalk
notebook I know that has a notebook format is Documenter's[4] Xdoc,
which is a compressed folder mixing Pillar, JSON, txt and external files
referred in the Pillar document. Our approach for that composed
documents is to use Fossil [5], so such composed document or any
collection of documents in fact is just a self contained Fossil
repository, adding history, web interface and collaboration, while
keeping documents self contained and storage simple and portable. It's
aligned with ideas of SQLite as and application format[5a] and the
Panama Papers 2016 prototypes [6][6a] even predate the idea of Fossil as
a repository document[5b].

[4] https://gtoolkit.com/components/documenter/
[5] https://fossil-scm.org/
[5a]
https://www.pgcon.org/2014/schedule/attachments/319_PGCon2014OpeningKeynote.pdf
[6] https://mutabit.com/offray/blog/en/entry/panama-papers-1
[6a] https://mutabit.com/repos.fossil/panama-papers/dir
[5b] https://fossil-scm.org/forum/forumpost/2ac0171524

What I want to point is that different approaches to rich interactive
documentation related with Pharo exist and they're exploring interesting
alternative spaces beyond what Jupyter has done, despite of lacking the
maturity, momentum and/or visibility behind Jupyter's. Scientific
Workbench, Documenter, or polyglot notebooks for sure are providing
valuable explorations and would be nice to be more aware of each others
work and approaches.

> What you describe for enhanced comments sounds like a step in that
> direction...  Obviously Pharo is already oriented toward mixing code and
> data in one document, and enhancing the comments moves it closer to a
> notebook with richer documentation possibilities.  
>
> So it seems to me that generalizing this "enhanced document capability" and
> making it more prominent (such as giving it its own type of window, rather
> than it being a browser pane tied to the code?) would take it closer yet to
> realizing a general, flexible "Pharo Notebooks" concept.
>
> My understanding is that Offray's Grafoscopio is essentially what I'm
> describing, but maybe more oriented to data analysis & presentation..??  (He
> can say better than I, as I'm not sure how accurate that is.)  I am thinking
> of something that would include that, but maybe be more general-purpose.

In Grafoscopio, interactive notebooks play an essential role with their
own window and usage metaphor (document as an interactive tree). When I
started, microdown was not in the radar and I would like explore further
integration with it, instead of relaying on (excellent) Pandoc for
format conversion. I have scripted Pandoc with Lua and is a pretty
powerful combination and an interesting language, but nothing beats the
Pharo's live coding experience and I would like to have that also for
document exporters and (pre)processors. I think that Grafoscopio is
already general concept-purpose enough. I wrote the Grafoscopio
manual[7] in Pharo. We have done other non-coding and visualization
documents on it, like porting the Data Journalism Handbook[8][8a] and
Data Feminism Book[9][9a] to our pocket infrastructures.

[7]
https://mutabit.com/repos.fossil/grafoscopio/uv/Docs/En/Books/Manual/manual.pdf
[8] https://mutabit.com/repos.fossil/mapeda/doc/tip/intro.md
[8a] https://mutabit.com/repos.fossil/mapeda/uv/mapeda.pdf
[9] https://mutabit.com/repos.fossil/datafem/
[9a] https://mutabit.com/repos.fossil/datafem/uv

That being said, Grafoscopio was the "first real app" I ever did. The
one that allowed me to go from scripting and formal modelling to
programming and development. Its development has been directed by
necessity and I have conceptual gaps and rookie code here and there.
Development has been improved as I learn more, and I have being
fortunate enough to have the attention and support from several
community members, from testing and installing, to answering newbie
questions, to my PhD internship, to bug reporting and even one offered
to pair program with me (but I was too newbie, non-native speaker and
shy to accept at that moment). Our last collaborator is Santiago
Bragragnolo and he has been working on some refactoring.

August will be kind of busy for me until 21th, but I would gladly be
more involved with Grafoscopio after and meanwhile, retaking slowly some
workshops and solving bugs.

>
> Part of this idea is to feature a "semi-automated" subset of Spec2 that
> makes it easier to get nice graphical UIs in a notebook fashion -- but does
> not require as much depth of understanding Spec2.  (All of Spec2 allows
> anyone to build anything.. but not everyone needs to build so much..?  This
> is the value of frameworks and selectable motifs, yes?)  
>
> Could what I'm describing be a way for everyone to step easily into Spec2
> when its full flexibility for making GUIs isn't needed (yet)?  By this I'm
> implying code generators that create common/typical Spec2 framework classes
> & methods that would make up the front-end of the 'documentation' element of
> "Pharo Notebooks".  Pharo being Pharo, one could then customize further...

My idea was to use a "self referential system" to explore the question
about "How can we change the digital artifacts that change us?", from
the perspective of a PhD in design and creation (not in computer
science). But the idea was to create/introduce a tool inside a community
(Grafoscopio) see how the community learn such tool and was able to
change it. Interactive notebooks was my bridge to approach Pharo to
non-coders. We are still far away of changing the tool itself, as Pharo
and Grafoscopio has been kind of behind scenes in the projects we do and
the more visible part has been documentation and a little bit of
scripting. But I hope that the Indie Web workshops talked in other
thread, make more visible the coding and scripting part so people can
use it to customize their web sites, then notebooks and, at some point
Grafoscopio or Pharo. The idea is to use interactive notebooks to
automatize and customize Pharo to user needs and make such learning a
bridge to customize Pharo.

> Because "it's always easier to edit something than to create from a blank
> page", yes?
>
> I can see Pharo taking away "market share" from Jupyter Notebooks, by being
> simpler and easier to work with.  Data + Code + Document: All three elements
> being "live" and interactive.  Pharo has the first two.. What about the
> third?

You could check the "Data continuum environment: data <-> queries <->
code <-> visuals <-> docs" of the Panama Papers blog post [10], that
points in the same direction.

[10] https://mutabit.com/offray/blog/en/entry/panama-papers-1

Cheers,

Offray




Reply | Threaded
Open this post in threaded view
|

Re: Intermediate-Level Tutorials for Pharo

Offray Vladimir Luna Cárdenas-2
Hi again :-),

I forgot to mention about the Spec2 migration plans, so a (hopefully)
short comment on that.

Last ESUG I talked with Guille and Esteban about combining Spec(1) and
Spec2 in a single interface. The idea is to be able to embed Spec old
widgets into Spec2, as they are progressively migrated. and now I'm
needing Johan Fabry's Playground package[1] to embed playgrounds in the
Grafoscopio notebooks. As the Spec2 migration completes and the
rewriting is done, Grafoscopio 2.x series will be launched.

[1] http://static.smalltalkhub.com/jfabry/Playground/

Any advice, bug reporting, bug fixing or comments on Grafoscopio are
greatly appreciated.

Cheers,

Offray

On 5/08/20 1:44 p. m., Offray Vladimir Luna Cárdenas wrote:

> Hi,
>
> On 5/08/20 9:43 a. m., tbrunz wrote:
>>>> Okay, I'll do that. But this brings up a more general question...
>>>>
>>>> If I wanted to add a diagram, or maybe a document with equations
>>> (rendered
>>>> in LaTex), then a class comment wouldn't work.
>>>>
>>>> ...Unless that's intended to be part of the newer format??
>>> Microdown supports latex via external services (I should check that the
>>> implementation uses the same cache than the one for pictures).
>>> For diagram you can use png but we will have to spot glitches.
>> One more thought on this...  I assume you've seen Jupyter Notebooks?
>> They're starting to see some use where I work (we now have our own
>> 'enterprise server').  I recently took an intro class to see how it works,
>> and how to use them.
>>
>> How much of a "Jupyter-style" notebook capability would the community be
>> interested in?  By that I mean having the ability to mix 'rich'
>> documentation with code and data to produce interactive 'notebooks' with
>> similarities to what Jupyter does -- but simpler!  Jupyter is much too
>> complicated...
> I can't speak for the wider community, but I think that there is some
> interest as we have 3 Smalltalk interactive notebooks alternatives. Two
> of them where mentioned as a long talks [1][2] in the last ESUG and
> Grafoscopio was presented there also as a speed talk (someday I need to
> make a proper ESUG long talk, but being self funded means that my
> participation has been always confirmed in last moments). I share your
> concern about Jupyter being overcomplicated and in fact I started
> Grafoscopio in part out of my frustration with the incidental complexity
> in the Python notebook ecosystem (see [3]). We can be more lean and agile.
>
> [1]
> https://www.slideshare.net/esug/polyglot-notebooks-with-squeaksmalltalk-on-the-graalvm
> [2] https://www.slideshare.net/esug/building-a-scientific-workbench-in-pharo
> [3]
> http://mutabit.com/offray/static/blog/output/posts/grafoscopio-idea-and-initial-progress.html
>
> One of the differences of Grafoscopio with other Smalltalk notebooks is
> that is has an older diverse community (since 2015), beyond academia and
> software developers, including activists, journalists, librarians,
> philosophers, designers, among others. A key concern is to balance
> practical choices in such communities with the PhD research that created
> Grafoscopio (which was on Design and Creation with immersive community
> research). For example a simple extensible format to exchange
> Grafoscopio notebooks was an early concern and for that I used the
> excellent STON  format to mix documentation markup (Markdown) and Pharo
> code. Also I bridged external tools (Pandoc, Lua) to make format
> conversions (Markdown to LaTeX, HTML and PDF). The only other Smalltalk
> notebook I know that has a notebook format is Documenter's[4] Xdoc,
> which is a compressed folder mixing Pillar, JSON, txt and external files
> referred in the Pillar document. Our approach for that composed
> documents is to use Fossil [5], so such composed document or any
> collection of documents in fact is just a self contained Fossil
> repository, adding history, web interface and collaboration, while
> keeping documents self contained and storage simple and portable. It's
> aligned with ideas of SQLite as and application format[5a] and the
> Panama Papers 2016 prototypes [6][6a] even predate the idea of Fossil as
> a repository document[5b].
>
> [4] https://gtoolkit.com/components/documenter/
> [5] https://fossil-scm.org/
> [5a]
> https://www.pgcon.org/2014/schedule/attachments/319_PGCon2014OpeningKeynote.pdf
> [6] https://mutabit.com/offray/blog/en/entry/panama-papers-1
> [6a] https://mutabit.com/repos.fossil/panama-papers/dir
> [5b] https://fossil-scm.org/forum/forumpost/2ac0171524
>
> What I want to point is that different approaches to rich interactive
> documentation related with Pharo exist and they're exploring interesting
> alternative spaces beyond what Jupyter has done, despite of lacking the
> maturity, momentum and/or visibility behind Jupyter's. Scientific
> Workbench, Documenter, or polyglot notebooks for sure are providing
> valuable explorations and would be nice to be more aware of each others
> work and approaches.
>
>> What you describe for enhanced comments sounds like a step in that
>> direction...  Obviously Pharo is already oriented toward mixing code and
>> data in one document, and enhancing the comments moves it closer to a
>> notebook with richer documentation possibilities.  
>>
>> So it seems to me that generalizing this "enhanced document capability" and
>> making it more prominent (such as giving it its own type of window, rather
>> than it being a browser pane tied to the code?) would take it closer yet to
>> realizing a general, flexible "Pharo Notebooks" concept.
>>
>> My understanding is that Offray's Grafoscopio is essentially what I'm
>> describing, but maybe more oriented to data analysis & presentation..??  (He
>> can say better than I, as I'm not sure how accurate that is.)  I am thinking
>> of something that would include that, but maybe be more general-purpose.
> In Grafoscopio, interactive notebooks play an essential role with their
> own window and usage metaphor (document as an interactive tree). When I
> started, microdown was not in the radar and I would like explore further
> integration with it, instead of relaying on (excellent) Pandoc for
> format conversion. I have scripted Pandoc with Lua and is a pretty
> powerful combination and an interesting language, but nothing beats the
> Pharo's live coding experience and I would like to have that also for
> document exporters and (pre)processors. I think that Grafoscopio is
> already general concept-purpose enough. I wrote the Grafoscopio
> manual[7] in Pharo. We have done other non-coding and visualization
> documents on it, like porting the Data Journalism Handbook[8][8a] and
> Data Feminism Book[9][9a] to our pocket infrastructures.
>
> [7]
> https://mutabit.com/repos.fossil/grafoscopio/uv/Docs/En/Books/Manual/manual.pdf
> [8] https://mutabit.com/repos.fossil/mapeda/doc/tip/intro.md
> [8a] https://mutabit.com/repos.fossil/mapeda/uv/mapeda.pdf
> [9] https://mutabit.com/repos.fossil/datafem/
> [9a] https://mutabit.com/repos.fossil/datafem/uv
>
> That being said, Grafoscopio was the "first real app" I ever did. The
> one that allowed me to go from scripting and formal modelling to
> programming and development. Its development has been directed by
> necessity and I have conceptual gaps and rookie code here and there.
> Development has been improved as I learn more, and I have being
> fortunate enough to have the attention and support from several
> community members, from testing and installing, to answering newbie
> questions, to my PhD internship, to bug reporting and even one offered
> to pair program with me (but I was too newbie, non-native speaker and
> shy to accept at that moment). Our last collaborator is Santiago
> Bragragnolo and he has been working on some refactoring.
>
> August will be kind of busy for me until 21th, but I would gladly be
> more involved with Grafoscopio after and meanwhile, retaking slowly some
> workshops and solving bugs.
>
>> Part of this idea is to feature a "semi-automated" subset of Spec2 that
>> makes it easier to get nice graphical UIs in a notebook fashion -- but does
>> not require as much depth of understanding Spec2.  (All of Spec2 allows
>> anyone to build anything.. but not everyone needs to build so much..?  This
>> is the value of frameworks and selectable motifs, yes?)  
>>
>> Could what I'm describing be a way for everyone to step easily into Spec2
>> when its full flexibility for making GUIs isn't needed (yet)?  By this I'm
>> implying code generators that create common/typical Spec2 framework classes
>> & methods that would make up the front-end of the 'documentation' element of
>> "Pharo Notebooks".  Pharo being Pharo, one could then customize further...
> My idea was to use a "self referential system" to explore the question
> about "How can we change the digital artifacts that change us?", from
> the perspective of a PhD in design and creation (not in computer
> science). But the idea was to create/introduce a tool inside a community
> (Grafoscopio) see how the community learn such tool and was able to
> change it. Interactive notebooks was my bridge to approach Pharo to
> non-coders. We are still far away of changing the tool itself, as Pharo
> and Grafoscopio has been kind of behind scenes in the projects we do and
> the more visible part has been documentation and a little bit of
> scripting. But I hope that the Indie Web workshops talked in other
> thread, make more visible the coding and scripting part so people can
> use it to customize their web sites, then notebooks and, at some point
> Grafoscopio or Pharo. The idea is to use interactive notebooks to
> automatize and customize Pharo to user needs and make such learning a
> bridge to customize Pharo.
>
>> Because "it's always easier to edit something than to create from a blank
>> page", yes?
>>
>> I can see Pharo taking away "market share" from Jupyter Notebooks, by being
>> simpler and easier to work with.  Data + Code + Document: All three elements
>> being "live" and interactive.  Pharo has the first two.. What about the
>> third?
> You could check the "Data continuum environment: data <-> queries <->
> code <-> visuals <-> docs" of the Panama Papers blog post [10], that
> points in the same direction.
>
> [10] https://mutabit.com/offray/blog/en/entry/panama-papers-1
>
> Cheers,
>
> Offray
>
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Intermediate-Level Tutorials for Pharo

Offray Vladimir Luna Cárdenas-2
In reply to this post by tbrunz

Hi Ted,

On 5/08/20 10:11 a. m., tbrunz wrote:
Hi Offray,

I think you're addressing many of the same concerns as I am, with more of a
web/browser orientation perhaps...

Which is good.  Pharo can make nice, interactive web sites as well as nice,
interactive documents, can it not?

For me web is kind of an "exportation format" as I dislike pretty much programming and writing in the native formats and languages that entangle the web (HTML, CSS, JavaScript) and they seem to me as verbose and/or inelegant. But web is an ubiquitous platform so thinking in it as a "compilation target" seems wise. I will try to Live code as much as I can in Pharo and export interactive documents to PDF and HTML as needed. That's the approach we have followed here so far and it had worked, so it will be the one we use for the indie web[1] workshops powered by Pharo.

[1]https://indieweb.org/


 I think that we still can make a compelling case for wider audiences 
about Pharo and making it more visible.
I agree!  What do the 'wider audiences' need?  What will attract their
attention?  Being visible is necessary, but is it sufficient?  How can we
make them want to learn this new tool?  (Everyone is so strained for time,
and attention is hard to come by these days...)

Totally agree. We have this "attention economy" and almost everything/everyone is sending notifications and messages. Focused attention and effort are a luxury these days.

In the case of grassroots communities, they have huge necessities but they're not a "compelling market". So what solves their needs is the stuff that will attract their attention and working with them and their needs is the best way to inquiry about this. Because we are in a Hackerspace and not in a startup or research facility, we are pretty close with such communities. Retaking the upcoming Indie Web workshop was a product of our voluntary work with grassroots communities. Grafoscopio interactive notebooks are a way to "package" expert knowledge in a low barrier way for non programmers in such communities. They can open and run the notebook and its nodes as they need and the output will be an updated web site that addresses their web presence needs not covered by big corp social media or overcomplicated CMS. The interactive notebook produces a static web site. And the idea is to use personalization of such community web sites via interactive notebooks to introduce them to programming (I will share more details as I have them).



agility and resilience are not properties of the
overcomplicated web of today
So, so true... 

.. making suggestions and helping us to improve the software 
engineering parts behind such problems/projects,
I am also interested in contributing to that.  Better tools & methods for
solving the problems, better documentation to further understanding and
engagement, and better ways for users to employ the results.


Thanks a lot :-)! I will be sharing the interactive notebooks we do and the software packages we create/modify for the Indie Web Worshops and the problems and solutions as they arise. While notebooks and workshops documentation will be mostly in Spanish, the code will be in English, so I think that this is a good bridge exercise and give us this intermediate level tutorials for Pharo.

One of the things I like the most about Pharo and I remember and share in local workshops from  Markcus' Nomads do not build Cathedrals talk[2] is the idea that to solve mode complex problems we need to change the infrastructure behind the projects. I tell the workshop attendants that Pharo's uniformity and readability is key to understand and traverse increased complexity in the platform (there is also a fight to decrease incidental complexity that is deeply rooted in Smalltalk cultures). So even if the "intermediate level" tutorials are a moving target the fact that we read/extend the infrastructure in a similar fashion, despite its complexity could help to address increasing complexity problems with such intermediate level entry knowledge, at least at the beginning.



[2] https://www.slideshare.net/MarcusDenker/2014-esugcathedral

Cheers,

Offray

Reply | Threaded
Open this post in threaded view
|

Re: Intermediate-Level Tutorials for Pharo

tbrunz
In reply to this post by Stéphane Ducasse
> >>> I've been thinking lately that it would be nice to expand the number of
> >>> Pharo tutorials we have available. But rather than (or along with)
> >>> creating
> >>> more "beginner" level tutorials, I'd like to see some good
> "intermediate"
> >>> level Pharo tutorials.
> >>
> >> Me too :)
> >
> > Let's do it, then. I'll volunteer to do most of the work. :^)
>
> I will review anything you write :)
> >
> > My hope is that participating in this will make me capable of creating
> > advanced tutorials all by myself.
>
> I usually like to write to learn and dump what I learned.
> >
> >>> I think that programmers who already know the Pharo
> >>> syntax and messaging semantics could benefit from more advanced
> tutorials
> >>> that demonstrate how to develop "real world" Pharo code for "real
> world"
> >>> processing needs.
> >>
> >> Yes yes I would love that.
> >
> > That was part of my motivation for creating a Pharo app to solve the
> Zebra
> > Puzzle. First, of course, I wanted to solve it. ;^)
>
> I will send you some feeedback and PR.

Okay, I think it's ready to be reviewed...

https://github.com/tbrunz/logic-puzzle

Thanks,
-t



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

Reply | Threaded
Open this post in threaded view
|

Re: Intermediate-Level Tutorials for Pharo

Stéphane Ducasse
In reply to this post by tbrunz

> One more thought on this...  I assume you've seen Jupyter Notebooks?
> They're starting to see some use where I work (we now have our own
> 'enterprise server').  I recently took an intro class to see how it works,
> and how to use them.
>
> How much of a "Jupyter-style" notebook capability would the community be
> interested in?  By that I mean having the ability to mix 'rich'
> documentation with code and data to produce interactive 'notebooks' with
> similarities to what Jupyter does -- but simpler!  Jupyter is much too
> complicated…

I would not go that road for class and package comments.
Now we have a good infrastructure for doing this with Pillar.

> What you describe for enhanced comments sounds like a step in that
> direction...  Obviously Pharo is already oriented toward mixing code and
> data in one document, and enhancing the comments moves it closer to a
> notebook with richer documentation possibilities.  
>
> So it seems to me that generalizing this "enhanced document capability" and
> making it more prominent (such as giving it its own type of window, rather
> than it being a browser pane tied to the code?) would take it closer yet to
> realizing a general, flexible "Pharo Notebooks" concept.

In the future (once I have finished making sure that we can write book in microdown)
we could think about loading book in notebooks with a bit more liveness.
Now it requires man power and we are busy on other topics.
GT is already doing it.


> My understanding is that Offray's Grafoscopio is essentially what I'm
> describing, but maybe more oriented to data analysis & presentation..??  (He
> can say better than I, as I'm not sure how accurate that is.)  I am thinking
> of something that would include that, but maybe be more general-purpose.
>
> Part of this idea is to feature a "semi-automated" subset of Spec2 that
> makes it easier to get nice graphical UIs in a notebook fashion -- but does
> not require as much depth of understanding Spec2.  (All of Spec2 allows
> anyone to build anything.. but not everyone needs to build so much..?  This
> is the value of frameworks and selectable motifs, yes?)  
>
> Could what I'm describing be a way for everyone to step easily into Spec2
> when its full flexibility for making GUIs isn't needed (yet)?  By this I'm
> implying code generators that create common/typical Spec2 framework classes
> & methods that would make up the front-end of the 'documentation' element of
> "Pharo Notebooks".  Pharo being Pharo, one could then customize further…

To me documenting framework is another level.
For now I would be more than happy if we would have a good old way
book containing tutorials about Spec2.

> Because "it's always easier to edit something than to create from a blank
> page", yes?
>
> I can see Pharo taking away "market share" from Jupyter Notebooks, by being
> simpler and easier to work with.  Data + Code + Document: All three elements
> being "live" and interactive.  Pharo has the first two.. What about the
> third?

Having a document renderer is a first step then after we can decide what is the semantics
of certain boxes inside the texte and get some live and others not.
But this requires coding effort.

S.





Reply | Threaded
Open this post in threaded view
|

Re: Intermediate-Level Tutorials for Pharo

tbrunz
In reply to this post by Offray Vladimir Luna Cárdenas-2
Hi Offray,

Just wanted to let you know that I enjoyed your several responses, and that
I'm working on following-up to them.

But first I wanted to look at all your links and make as thoughtful a reply
as you have, and that takes a while...

I think what you've been working on could be a good entry point for some
groups where I work, so I do want to learn more.

Cheers!
-Ted





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

Reply | Threaded
Open this post in threaded view
|

Re: Intermediate-Level Tutorials for Pharo

Offray Vladimir Luna Cárdenas-2
Hi Ted,

Don't worry and take your time. I tend to write looong (this list should
be thankful of English not being my first language and I mostly self
learned after crappy courses, if not, you will have me writing even
longer ;-P).

About entry points, one of the things I like about Pharo is that you
can  traverse complexity in a similar way, because the liveness of the
environment helps you to do it. It's like writing and reading. Once you
learn to do it, core strategies are the same despite of addressing huge
or small books. I felt that with other languages/environments,
traversing infrastructure have pretty particular approaches depending on
the particular tool/architecture I was trying to make sense of
(infrastructure at some point becomes architecture, but I digress).

So we are preparing new entry points with the upcoming Indie Web
Workshop [1]. Those entry points have the same level of complexity for
new comers, despite of being evolving prototypes and hopefully will
attract more experienced ones with Intermediate Level Tutorials. Even
they will have the added value of allow ourselves to create some web
portfolios for showcasing what we are doing here, in a more attractive
and visual way.

I will share advances with the list,

Cheers,

Offray


[1] Invitation poster in Spanish at:

https://docutopia.tupale.co/uploads/upload_51d7d8be27bb53d5dc1eb96d71979313.png


On 11/08/20 12:58 p. m., tbrunz wrote:

> Hi Offray,
>
> Just wanted to let you know that I enjoyed your several responses, and that
> I'm working on following-up to them.
>
> But first I wanted to look at all your links and make as thoughtful a reply
> as you have, and that takes a while...
>
> I think what you've been working on could be a good entry point for some
> groups where I work, so I do want to learn more.
>
> Cheers!
> -Ted
>
>
>
>
>
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>


12