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.

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 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.

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.

My first task is to write an MQTTClient.  MQTT is a messaging protocol.
MQTT has "clients" - who subscribe for "topics" and receive matching
messages, and which can publish to topics.  And there are brokers which
distribute published messages to subscribing clients.

I only need to implement a client.  The protocol is binary, not text.  It
runs over TCP.  Here's a description of the messaging

SInce I envision objects inside Pharo that model the real external objects
then I will need some sort of background process running the connection to
the mqtt broker, and each object would receive and send MQTT messages via
that process.

So to tackle this I need to understand:

   1. How to implement a TCP client (subclass ProtocolClient?  Or do I need
   to work at a lower level with SocketStream?)
   2. Packing and unpacking binary data, working with bits.
   3. How to talk to and from a background process.

Any and all suggestions and help to get going would be welcome.  I do
understand the principles of Smalltalk and can read code OK.

Thanks,
Steve

Reply via email to