Becoming proficient in Pharo
Hello, As I struggle, not without fun of course, to learn more about Pharo and its frameworks and idea came to my mind. We could put together some guidelines on how to become proficient in Pharo, and eventually come to be a power user and / or a developer. I read several of this recommendations on various list of other programming languages. Basically the idea is to have some sort of guide, with theoretical and practical stuff. For example: *Beginners.* Start by reading Pharo by Example for getting to know the system. On Agile development read XXXX book or article. On Object Oriented design and programming read this or that. For practice do this exercises from this book or site. For a background on Smalltalk read here or there Some stuff on algorithms. *Intermediate* Object Serialization read from here. The VM from here.. Building UIs Basic Frameworks Deep into Pharo Pharo for the Enterprise etc, etc, etc *Advanced* etc, etc, etc Like a road map to becoming a serious Pharo users and / or developer. I know this takes years but I think it would be very useful. Well at least for me. I sometimes get lost when I read things like serializing, marshalling, object memory, not to mention the internals of Pharo. Here is a link of something someone prepared for Haskell: http://stackoverflow.com/questions/1012573/getting-started-with-haskell <http://stackoverflow.com/questions/1012573/getting-started-with-haskell> Just an idea, it will be collaborative. I volunteer to keep and maintain the list updated in a place where it will be available to anyone but of course can't contribute much besides doing that. Cheers Nacho ----- Nacho Smalltalker apprentice. Buenos Aires, Argentina. -- View this message in context: http://forum.world.st/Becoming-proficient-in-Pharo-tp4799284.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
very good idea indeed. I try to do something similar with my video tutorial, my aim is to help beginners go beyond the basic of pharo. I find creating video tutorial much easier and more fun than writing stuff down. But yes we can do so much more in the area as well. On Tue, Jan 13, 2015 at 4:13 PM, nacho <0800nacho@gmail.com> wrote:
Hello, As I struggle, not without fun of course, to learn more about Pharo and its frameworks and idea came to my mind. We could put together some guidelines on how to become proficient in Pharo, and eventually come to be a power user and / or a developer. I read several of this recommendations on various list of other programming languages. Basically the idea is to have some sort of guide, with theoretical and practical stuff. For example: *Beginners.* Start by reading Pharo by Example for getting to know the system. On Agile development read XXXX book or article. On Object Oriented design and programming read this or that. For practice do this exercises from this book or site. For a background on Smalltalk read here or there Some stuff on algorithms.
*Intermediate* Object Serialization read from here. The VM from here.. Building UIs Basic Frameworks Deep into Pharo Pharo for the Enterprise etc, etc, etc
*Advanced* etc, etc, etc
Like a road map to becoming a serious Pharo users and / or developer. I know this takes years but I think it would be very useful. Well at least for me. I sometimes get lost when I read things like serializing, marshalling, object memory, not to mention the internals of Pharo.
Here is a link of something someone prepared for Haskell: http://stackoverflow.com/questions/1012573/getting-started-with-haskell <http://stackoverflow.com/questions/1012573/getting-started-with-haskell>
Just an idea, it will be collaborative. I volunteer to keep and maintain the list updated in a place where it will be available to anyone but of course can't contribute much besides doing that. Cheers Nacho
----- Nacho Smalltalker apprentice. Buenos Aires, Argentina. -- View this message in context: http://forum.world.st/Becoming-proficient-in-Pharo-tp4799284.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
i really like that idea, but it seems like with someone as huge as a programming language, it might be best to reign it in a little. when people come to me asking for advice on learning a new language/ecosystem, i always have them come up with a small (but non trivial) problem to solve using that language. the act of building something small and non trivial usually brings you head on with most of this concepts you are going to want to figure out pretty quickly.. but i do think this is a good idea.. On Tue Jan 13 2015 at 9:20:05 AM kilon alios <kilon.alios@gmail.com> wrote:
very good idea indeed. I try to do something similar with my video tutorial, my aim is to help beginners go beyond the basic of pharo. I find creating video tutorial much easier and more fun than writing stuff down. But yes we can do so much more in the area as well.
On Tue, Jan 13, 2015 at 4:13 PM, nacho <0800nacho@gmail.com> wrote:
Hello, As I struggle, not without fun of course, to learn more about Pharo and its frameworks and idea came to my mind. We could put together some guidelines on how to become proficient in Pharo, and eventually come to be a power user and / or a developer. I read several of this recommendations on various list of other programming languages. Basically the idea is to have some sort of guide, with theoretical and practical stuff. For example: *Beginners.* Start by reading Pharo by Example for getting to know the system. On Agile development read XXXX book or article. On Object Oriented design and programming read this or that. For practice do this exercises from this book or site. For a background on Smalltalk read here or there Some stuff on algorithms.
*Intermediate* Object Serialization read from here. The VM from here.. Building UIs Basic Frameworks Deep into Pharo Pharo for the Enterprise etc, etc, etc
*Advanced* etc, etc, etc
Like a road map to becoming a serious Pharo users and / or developer. I know this takes years but I think it would be very useful. Well at least for me. I sometimes get lost when I read things like serializing, marshalling, object memory, not to mention the internals of Pharo.
Here is a link of something someone prepared for Haskell: http://stackoverflow.com/questions/1012573/getting-started-with-haskell <http://stackoverflow.com/questions/1012573/getting-started-with-haskell>
Just an idea, it will be collaborative. I volunteer to keep and maintain the list updated in a place where it will be available to anyone but of course can't contribute much besides doing that. Cheers Nacho
----- Nacho Smalltalker apprentice. Buenos Aires, Argentina. -- View this message in context: http://forum.world.st/Becoming-proficient-in-Pharo-tp4799284.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
good idea. Now something I recommend you become practiced at.... Pick some system function, e.g. <Add package...> in the System Browser, bring up the halos on it and <Inspect Morph> from the debug halo icon. Look for a likely selector and put a HALT in that method. Then invoke the menu item and trace through the system with the debugger. You can learn a lot of magic from seeing how things work under the covers. Also, try checking Fogbugz for cases marked "Resolved (Fix Review Needed)" or "Resolved (Fix Reviewed by the Monkey)". Someone already did the hard work adding some feature or bug fix. You can learn A LOT from seeing what they've done. Again, put HALTs in some of the changed methods and trace through that code. cheers -ben On Tue, Jan 13, 2015 at 10:47 PM, sergio_101 <sergio.rrd@gmail.com> wrote:
i really like that idea, but it seems like with someone as huge as a programming language, it might be best to reign it in a little. when people come to me asking for advice on learning a new language/ecosystem, i always have them come up with a small (but non trivial) problem to solve using that language.
the act of building something small and non trivial usually brings you head on with most of this concepts you are going to want to figure out pretty quickly..
but i do think this is a good idea..
On Tue Jan 13 2015 at 9:20:05 AM kilon alios <kilon.alios@gmail.com> wrote:
very good idea indeed. I try to do something similar with my video tutorial, my aim is to help beginners go beyond the basic of pharo. I find creating video tutorial much easier and more fun than writing stuff down. But yes we can do so much more in the area as well.
On Tue, Jan 13, 2015 at 4:13 PM, nacho <0800nacho@gmail.com> wrote:
Hello, As I struggle, not without fun of course, to learn more about Pharo and its frameworks and idea came to my mind. We could put together some guidelines on how to become proficient in Pharo, and eventually come to be a power user and / or a developer. I read several of this recommendations on various list of other programming languages. Basically the idea is to have some sort of guide, with theoretical and practical stuff. For example: *Beginners.* Start by reading Pharo by Example for getting to know the system. On Agile development read XXXX book or article. On Object Oriented design and programming read this or that. For practice do this exercises from this book or site. For a background on Smalltalk read here or there Some stuff on algorithms.
*Intermediate* Object Serialization read from here. The VM from here.. Building UIs Basic Frameworks Deep into Pharo Pharo for the Enterprise etc, etc, etc
*Advanced* etc, etc, etc
Like a road map to becoming a serious Pharo users and / or developer. I know this takes years but I think it would be very useful. Well at least for me. I sometimes get lost when I read things like serializing, marshalling, object memory, not to mention the internals of Pharo.
Here is a link of something someone prepared for Haskell: http://stackoverflow.com/questions/1012573/getting-started-with-haskell <http://stackoverflow.com/questions/1012573/getting-started-with-haskell
Just an idea, it will be collaborative. I volunteer to keep and maintain the list updated in a place where it will be available to anyone but of course can't contribute much besides doing that. Cheers Nacho
----- Nacho Smalltalker apprentice. Buenos Aires, Argentina. -- View this message in context: http://forum.world.st/Becoming-proficient-in-Pharo-tp4799284.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
Ben, How do you actually use the halt method? I don't follow you. Seems like an interesting thing to explore. thanks Nacho ----- Nacho Smalltalker apprentice. Buenos Aires, Argentina. -- View this message in context: http://forum.world.st/Becoming-proficient-in-Pharo-tp4799284p4799495.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
The halt method is used to put a breakpoint in the code, popping up the debugger. Just write the following: self halt. and when this gets executed the debugger jumps into action. I am surprised this is not clear, I thought that all beginner documentation mentioned this. Can you tell me what documentation you used to learn the language? Now I am afraid that some students of mine donât know about this, while it is so incredibly useful â¦
On Jan 14, 2015, at 10:56, nacho <0800nacho@gmail.com> wrote:
Ben, How do you actually use the halt method? I don't follow you. Seems like an interesting thing to explore. thanks Nacho
----- Nacho Smalltalker apprentice. Buenos Aires, Argentina. -- View this message in context: http://forum.world.st/Becoming-proficient-in-Pharo-tp4799284p4799495.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
---> Save our in-boxes! http://emailcharter.org <--- Johan Fabry - http://pleiad.cl/~jfabry PLEIAD lab - Computer Science Department (DCC) - University of Chile
by using the message "self halt" inside any method. When it reaches this message it will stop execution and pop up the debugger, from there on its just a matter of using the debugger to inspect the variables and move execution one step at a time, the true power of smalltalk. This way you can see exactly what code is executed and how it affects the variables. Of course you can do this with other IDEs too but where it gets real interesting is that the smalltalk debugger allows you to change the code on the fly thus perform tests on the code to see how it behaves. On Wed, Jan 14, 2015 at 3:56 PM, nacho <0800nacho@gmail.com> wrote:
Ben, How do you actually use the halt method? I don't follow you. Seems like an interesting thing to explore. thanks Nacho
----- Nacho Smalltalker apprentice. Buenos Aires, Argentina. -- View this message in context: http://forum.world.st/Becoming-proficient-in-Pharo-tp4799284p4799495.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
Thanks! Kilon, is this feature included in one of your amazing videos? thanks ----- Nacho Smalltalker apprentice. Buenos Aires, Argentina. -- View this message in context: http://forum.world.st/Becoming-proficient-in-Pharo-tp4799284p4799505.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
The other thing I like about Smalltalk debugger is from there being able to select code and spawn a sub-debugger, so later I can return to the original location and continue. On Wed, Jan 14, 2015 at 10:18 PM, nacho <0800nacho@gmail.com> wrote:
Thanks! Kilon, is this feature included in one of your amazing videos? thanks
----- Nacho Smalltalker apprentice. Buenos Aires, Argentina. -- View this message in context: http://forum.world.st/Becoming-proficient-in-Pharo-tp4799284p4799505.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
i am afraid not. But it will definitely be my next video tutorial ;) On Wed, Jan 14, 2015 at 4:18 PM, nacho <0800nacho@gmail.com> wrote:
Thanks! Kilon, is this feature included in one of your amazing videos? thanks
----- Nacho Smalltalker apprentice. Buenos Aires, Argentina. -- View this message in context: http://forum.world.st/Becoming-proficient-in-Pharo-tp4799284p4799505.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
you asked and I delivered. A video tutorial on the debugger , deeper into live coding and a powerful tool to understand the internals of objects and their structure https://www.youtube.com/watch?v=ZE2T2D8hikE I will of course follow it with additional tutorials since its a rather big subject but this tutorial should be more than enough to get you started and make you dangerous with Pharo. Always remember to save images before changing code , for example a self halt inside Morph initialize method was more than enough to freeze my image. On Wed, Jan 14, 2015 at 5:00 PM, kilon alios <kilon.alios@gmail.com> wrote:
i am afraid not. But it will definitely be my next video tutorial ;)
On Wed, Jan 14, 2015 at 4:18 PM, nacho <0800nacho@gmail.com> wrote:
Thanks! Kilon, is this feature included in one of your amazing videos? thanks
----- Nacho Smalltalker apprentice. Buenos Aires, Argentina. -- View this message in context: http://forum.world.st/Becoming-proficient-in-Pharo-tp4799284p4799505.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
Master kilon, thank you very much. This is an excellent videcast. As always with your videos a lot of questions arise after watching them! I really appreciate you taking the time to put this togheter. Cheers nacho ----- Nacho Smalltalker apprentice. Buenos Aires, Argentina. -- View this message in context: http://forum.world.st/Becoming-proficient-in-Pharo-tp4799284p4799717.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
Thank you , it means great deal to me to help people appreciate what excites me about Pharo and the debugger is No1 reason for me and I suspect for the majority of Pharo developers too. I actually have my own questions too that I will try to answer with my next video, these videos are an opportunity for me to test my knowledge. The Debugger is a huge chapter and there is a lot of technomagic you can do with it. On Thu, Jan 15, 2015 at 5:09 PM, nacho <0800nacho@gmail.com> wrote:
Master kilon, thank you very much. This is an excellent videcast. As always with your videos a lot of questions arise after watching them! I really appreciate you taking the time to put this togheter. Cheers nacho
----- Nacho Smalltalker apprentice. Buenos Aires, Argentina. -- View this message in context: http://forum.world.st/Becoming-proficient-in-Pharo-tp4799284p4799717.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
Me too! Le 15/1/15 16:09, nacho a écrit :
Master kilon, thank you very much. This is an excellent videcast. As always with your videos a lot of questions arise after watching them! I really appreciate you taking the time to put this togheter. Cheers nacho
----- Nacho Smalltalker apprentice. Buenos Aires, Argentina. -- View this message in context: http://forum.world.st/Becoming-proficient-in-Pharo-tp4799284p4799717.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
Le 13/1/15 15:13, nacho a écrit :
Hello, As I struggle, not without fun of course, to learn more about Pharo and its frameworks and idea came to my mind. We could put together some guidelines on how to become proficient in Pharo, and eventually come to be a power user and / or a developer. I read several of this recommendations on various list of other programming languages. This would be reallllllly great
Basically the idea is to have some sort of guide, with theoretical and practical stuff. For example: *Beginners.* Start by reading Pharo by Example for getting to know the system. On Agile development read XXXX book or article. On Object Oriented design and programming read this or that. For practice do this exercises from this book or site. For a background on Smalltalk read here or there Some stuff on algorithms.
*Intermediate* Object Serialization read from here. The VM from here.. Building UIs Basic Frameworks Deep into Pharo Pharo for the Enterprise etc, etc, etc
*Advanced* etc, etc, etc
Like a road map to becoming a serious Pharo users and / or developer. I know this takes years but I think it would be very useful. Well at least for me. I sometimes get lost when I read things like serializing, marshalling, object memory, not to mention the internals of Pharo.
Here is a link of something someone prepared for Haskell: http://stackoverflow.com/questions/1012573/getting-started-with-haskell <http://stackoverflow.com/questions/1012573/getting-started-with-haskell>
Just an idea, it will be collaborative. I volunteer to keep and maintain the list updated in a place where it will be available to anyone but of course can't contribute much besides doing that.
Super!
Cheers Nacho
----- Nacho Smalltalker apprentice. Buenos Aires, Argentina. -- View this message in context: http://forum.world.st/Becoming-proficient-in-Pharo-tp4799284.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
Excerpts from nacho's message of 2015-01-13 15:13:41 +0100:
As I struggle, not without fun of course, to learn more about Pharo and its frameworks and idea came to my mind. We could put together some guidelines on how to become proficient in Pharo, and eventually come to be a power user and / or a developer. I read several of this recommendations on various list of other programming languages. Basically the idea is to have some sort of guide, with theoretical and practical stuff. For example: *Beginners.* *Intermediate* *Advanced* etc, etc, etc
Like a road map to becoming a serious Pharo users and / or developer. I know
one thing i noticed, is that such guides need to be topical. as a web developer i am not interested in GUI stuff, and if i have to go through tutorials that teach me how to build games than that's not very motivating. fortunately there are several web tutorials out there, but not all of them assume a pharo newbie, but expect me to learn pharo first (which brings me back to the game tutorial) one advantage pharo has is that new users need to learn the IDE and smalltalk at the same time. kind of like learning eclipse and java at the same time. i could learn eclipse using another language i already know, and i could learn java without using eclipse, but i can't really learn smalltalk without learning the IDE at the same time. so a new-user tutorial needs to explain every step in the IDE while teaching the language. a good example for a tutorial on the web-side is http://zn.stfx.eu/zn/build-and-deploy-1st-webapp/ it does not assume any prior knowledge about pharo, yet it is sufficiently high level that it will be interesting for an experienced developer (like me) even a person without programming experience will complete this tutorial successfully. i just had two students go through this tutorial during google code-in with more success than i had for other tutorials. one of them just started to learn programming, so throughout the tutorial he didn't really understand all of what he was doing there, but understanding comes from practice, and a few more tutorials and a good book or course on programming basics, and he'll get it. another aspect where this tutorial shines is, that it not only covers coding, but also deployment and packaging. the only thing missing is testing and debugging. in other words it introduces me to the major aspects i'd need to know to start building websites.
Just an idea, it will be collaborative. I volunteer to keep and maintain the list updated in a place where it will be available to anyone but of course can't contribute much besides doing that.
as i am involved as mentor for code-in, semester of code and summer of code programs with a few smalltalk projects, i'll likely have more opportunities to test different approaches to get started, and hopefully will be able to provide more input. greetings, martin. -- eKita - the online platform for your entire academic life -- chief engineer eKita.co pike programmer pike.lysator.liu.se caudium.net societyserver.org secretary beijinglug.org mentor fossasia.org foresight developer foresightlinux.org realss.com unix sysadmin Martin Bähr working in china http://societyserver.org/mbaehr/
Hi, I totally agree with what Martin says here. In my case I was interested in Smalltalk for long time, but the game tutorial didn't catch my attention. I planned several projects to learn, but none of them where easy to start with. It was not until the expansion of Moose from software analysis to data analysis and visualization and the idea of moldable tools that I found my way to learn the program by solving a small but non trivial problem (as Sergio suggested in this thread also). Now I'm making my interactive documentation platform for data narratives and visualization. I can start small and hopefully with this tool introduce newbies to the internals of Pharo/Smalltalk as we need them. It's a still buggie but useful tool for me. My way yo introduce others to this will be by workshops in our local hackerspace. We're documenting everything and creating non-English docs for Spanish speakers. We will share them when they're in better shape. Cheers, Offray El 13/01/15 a las 12:13, Martin Bähr escribió:
Excerpts from nacho's message of 2015-01-13 15:13:41 +0100:
As I struggle, not without fun of course, to learn more about Pharo and its frameworks and idea came to my mind. We could put together some guidelines on how to become proficient in Pharo, and eventually come to be a power user and / or a developer. I read several of this recommendations on various list of other programming languages. Basically the idea is to have some sort of guide, with theoretical and practical stuff. For example: *Beginners.* *Intermediate* *Advanced* etc, etc, etc
Like a road map to becoming a serious Pharo users and / or developer. I know
one thing i noticed, is that such guides need to be topical. as a web developer i am not interested in GUI stuff, and if i have to go through tutorials that teach me how to build games than that's not very motivating.
fortunately there are several web tutorials out there, but not all of them assume a pharo newbie, but expect me to learn pharo first (which brings me back to the game tutorial)
one advantage pharo has is that new users need to learn the IDE and smalltalk at the same time. kind of like learning eclipse and java at the same time. i could learn eclipse using another language i already know, and i could learn java without using eclipse, but i can't really learn smalltalk without learning the IDE at the same time.
so a new-user tutorial needs to explain every step in the IDE while teaching the language.
a good example for a tutorial on the web-side is http://zn.stfx.eu/zn/build-and-deploy-1st-webapp/
it does not assume any prior knowledge about pharo, yet it is sufficiently high level that it will be interesting for an experienced developer (like me)
even a person without programming experience will complete this tutorial successfully. i just had two students go through this tutorial during google code-in with more success than i had for other tutorials.
one of them just started to learn programming, so throughout the tutorial he didn't really understand all of what he was doing there, but understanding comes from practice, and a few more tutorials and a good book or course on programming basics, and he'll get it.
another aspect where this tutorial shines is, that it not only covers coding, but also deployment and packaging. the only thing missing is testing and debugging. in other words it introduces me to the major aspects i'd need to know to start building websites.
Just an idea, it will be collaborative. I volunteer to keep and maintain the list updated in a place where it will be available to anyone but of course can't contribute much besides doing that.
as i am involved as mentor for code-in, semester of code and summer of code programs with a few smalltalk projects, i'll likely have more opportunities to test different approaches to get started, and hopefully will be able to provide more input.
greetings, martin.
participants (8)
-
Ben Coman -
Johan Fabry -
kilon alios -
Martin Bähr -
nacho -
Offray Vladimir Luna Cárdenas -
sergio_101 -
stepharo