On Wed, 18 Dec 2019 at 16:12, Steve Davies <steve@connection-telecom.com> wrote:
Hi,

I'm having yet another go to get to grips with Pharo.

My project is for home automation.�� It seems in principle a great match since object inside Smalltalk are obviously a great match for physical objects being controlled.

I started at the Pharo Wiki on Github "Setting up a new project".

I'm a career programmer but I'm nearly 60 and sadly I can't absorb information like I used to be able to, and I'm just finding Pharo so overwhelming - I feel like a maintenance��programmer trying to find a way into a million lines of code when you don't understand the principles of organisation and the conventions of the developers.

Consider the analogy would be someone wanting to write Hello World as a newcomer in C��
and having the source code for the Eclipse IDE in front of them and feeling like they have to understand all of that source code before writing Hello World.
Just because because the code for the whole Pharo IDE system is front of you doesn't mean you should feel need to understand it all at once, or even ever.
But I remember a similar initial jarring of my workflow before developing a constructive-ignorance mindset.


Is there no way to have some sort of "progressive revelation" of the insides of Pharo?�� Just documentation on most classes, examples of how to use the class, without the implementation being exposed initially?

The books and MOOC are probably the best for this
https://pharo.org/documentation����

For something a bit more goal oriented, try Exercism...
https://exercism.io/tracks/pharo-smalltalk����
��

The stuff I need to look into for my project is mixed in with 1000s of classes that I (hopefully) can ignore for now - but there seems to be no way to hide��away all the irrelevant��stuff.

Traditionally if I was trying to get to grips with a large unfamiliar code base I would use grep to search, skim through source files getting a sense of it.�� With the browser in Pharo I feel like I'm looking through a keyhole.�� No doubt this is just unfamiliarity and I just need to learn the tools better.

A few things I find useful are:
* In the class definition, select a variable the right-click-it > Code Search > References to it
* In the Browser, select a class, right-click-it��> Class Refs to find some unit tests using it, then debug-into those tests.
* Make heavy use of Senders and Implementors to find examples of how things are used.
* Add "self haltOnce" into methods so you can observe the call stack of how they are used.�� Note: "self halt" can be dangerous in system methods you're not familiar with, in case that method is used by the UI loop.�� haltOnce effectively stops the current UI loop and spawn a new UI loop to keep working.

Personally I find it easier to understand the Pharo libraries by watching them run in a debugger than perusing static code.

I'm looking forward to trying out the new object-centric-debugging...��
https://www.youtube.com/watch?v=uDYJIm54yE4
��

Please read this as a request for help as to how to get a finger hold and how to shake this feeling of drinking from the firehose?�� It's not intended as a complaint.

Cool.�� It does read that way.�� Happy to help you settle in.

cheers -ben