Commentary About The Tutorial
First of all, I must say thank you to everyone that has contributed feedback containing corrections. I've also received feedback with clarified text to use in certain places. And of course I want to thank those who have taken the trouble to actually do the tutorial and provide feedback on areas that were confusing or in error. All very helpful.
The praise and feedback have all validated my efforts.
Since the the time the tutorial went public, on June 30th, there's been quite a bit of "buzz" within the Squeak community. Most of it has been very positive. A few comments here and there have been critical of choices made in the tutorial. But even those have been fundamentally supportive of the work. However, I do believe I should share more about my motivations to produce this tutorial and set the context of how I expect it to be seen and experienced.
Also, this project has been in the planning stage for me for quite a while. I've been waiting for Squeak 3.9 to become mature and stable. I've avoided add-ons to the base simply because I think the common Squeak beginner would not seek these out. And frankly, many of the add-ons (including ones I've written and published) are buggy, incomplete and sometimes conflict with each other. I know about the efforts to create a Squeak Universe (an excellent idea) and the Developer's Image. And I love the work Craig is doing on Spoon. Those are great projects. But I think the base Squeak 3.9 is great. I started using Squeak and publishing goodies for it in 1987. Before there even was the venerable Morphic. It's come a long way and has a great future.
These were my goals for this tutorial, by personal priority.
- Grow the community of experienced Squeak and Smalltalk practitioners.
- Lay down the foundation for a book I've wanted to write since early 1992.
- Provide working materials for a class and/or workshop I'd like to teach. I taught programming for a while at a State Technical College back in Cincinnati many years ago and very much enjoyed it.
- Make a contribution to the Squeak community that makes a difference and gets noticed. This last one is selfish.
I also wanted to create a how-to that is very pragmatic. I'm really not a Smalltalker that spends a lot of energy keeping up with the latest trends and goodies. But I do consider myself a craftsman in this art. An artisan, if that's not too bold. And I believe that anyone that has developed skills should share and teach. I've been paid to write Smalltalk code professionally for close to 20 years now. I see it as a personal responsibility to mentor.
The target audience is not the complete Smalltalk and Squeak newbie. Although with some of the feeback I've received, maybe it should be. That would require some rework. It's a possibility I'm considering.
My belief is that there's value in showing a programmer a process of development with a non-academic real-world result. Well, okay, it's a game. But it's an application realized from idea through delivery by careful development. There's real value in learning that skill.
By all means, I encourage feedback. I'm pretty busy and cannot promise to respond to everything. And the truth is that my family was out of town for about a month so I had free time every evening and weekend to work on this tutorial "like crazy". That period is days away from ending. So free time to enhance and push this tutorial further along will be harder to come-by.
There's always risk, to my way of looking at things, in public statements about goals. Say you would like to do something and you set an expectation that you will. However, I do want to communicate the road-map I see for this tutorial as it continues to develop. Near-term I see the following as reasonable goals for this tutorial. This is early July 2007, let's see how it goes.
- Create Laser Game as a stand-alone application.
- Create Laser Game as a web application.
- Add preferences support. This would include
- quit prompt option
- customized colors
- size of game board
- choose which click-region rotates/pushes
- Save and load/resume games
- Publish best scores in a public manner for sharing and comparison by users.
- Laser animation. I took a crack at this idea on July 4th but was very unhappy with the result and tossed the code out. This needs to be done with BitBlt and not with little Morphs like I tried. Too slow. I'll revisit this topic later.
- Networked 2-player game option.
The goal of a simple networked game as basis for a tutorial has always been the real basis for this project. So I hope to get there.
Enjoy the tutorial.
Stephan B. Wessels
July 5th, 2007