This post originated from an RSS feed registered with Agile Buzz
by James Robertson.
Original Post: Getting Started
Feed Title: Cincom Smalltalk Blog - Smalltalk with Rants
Feed URL: http://www.cincomsmalltalk.com/rssBlog/rssBlogView.xml
Feed Description: James Robertson comments on Cincom Smalltalk, the Smalltalk development community, and IT trends and issues in general.
I ran across this post from an apparently new user of VW non-commercial. He raises a lot of potential problems that new users might run across, so I figured I should explain some of them. First off, he ran into the infamous "Smart CR/LF" handling of WinZip:
First thing I wanted to do is getting Store working. I ran into my first smalltalk problem at that time. For some reason, when I loaded some base VisualWorks packages, Store was launching some obscure exception for some of them, refusing to load them and breaking the currenly running image. I also had problems with some parcels refusing to show up the code in the browser even if the source file was present in the correct directory.
After some experimentations, I found a documentation stating that Winzip's "smart CR/LF conversion" should be disabled before extracting the archives. I reinstalled and restarted everything from scratch after disabling that so-called smart feature and that fixed my problems. But I'm still wondering why that caused so many troubles and why VisualWorks did not report an understandable error message. Weird.
if possible, you should just grab the entire ISO file and install that - it will obviate this entire issue. People on slower connections do download the compressed archives though, and we know this is an issue - we intend to post a network installer in the near term future. Here's what's going on though - the compressed archives are tar gzip files. By default, WinZip has an option called "Smart CR/LF conversion" turned on - what it does is convert Unix style CR or LF lines into DOS cr/lf combos. What's the problem? Well, the parcels (loadable components) of VW ship as two files - a .pcl (binary) and .pst (source). The binary file contains pointers into the source file so that you can browse loaded code. If the file is munged by the WinZip conversion, you lose source access. As well, you can get strings for menus (etc) completely hosed up. If you see that the launcher menus are screwed up when you start vw nc, this is what happened. Turn that option in WinZip off, and try again.
The next issue Ludo ran up against is GUI building - specifically, building UI's that look good on Window resize:
Then I started playing with the GUI Painter. I must say that this tool is of very high quality and that the doc is quite well done. The only thing I found a bit crappy is the handling of window resizing. Maybe I did not understand how it's really working but I could not manage to get a nice looking resizeable GUI. Weird.
This is something that I used to have trouble with as well - but fortunately, there are two excellent summaries of what you need to do on Vassili's blog:
I found both of those posts to be invaluable for me - I was able to fix up BottomFeeder properly only after reading those. Highly recommended. Next, Ludo ran across some database problems:
Then I wanted to play with databases. So I read the Database App Dev Guide and tried the "New database application" wizzard. All I got was MessageNotUnderstood: #newDataMain exception. It took me an hour to figure out that I did forget to load the Lens-Dev parcel. Weird.
This is easier to run into than it should be. In general, what you need to do is make sure that you've loaded one the "for Lens" database connects. That will make sure that you have all of the necessary pieces. However, something else you should probably check out is Glorp. The parcels are all in goodies/parc, and are being developed rapidly. Glorp is where our database stuff is going, and it's well worth looking at. If you have questions, stop by the Smalltalk IRC channel; Alan or one of the other Glorp users are usually on hand and willing to answer questions.
Finally, Ludo had a look at Seaside, the continuation based web app server that Avi is largely responsible for:
Finally I read about Seaside and continuations. Sounds so cool that I must try it. I loaded the parcel and started reading the one-page tutorial and quickly started playing with the counter example. Then with the multi-counter example. Amazing. Simply amazing. This framework is much more powerful than everything else I've seen before. So I wanted to create my own application from scratch using Seaside. I could not understand how components are related to each other nor what are the basic rules to create an app. I read the docs. Twice. But still could not understand. Maybe because the doc is sparse, maybe because the code is not documented and I still have difficulties reading Smalltalk, maybe something else but I could not manage writingg something equivalent to the store example. I also tried to understand the store example which was also a dead-end so I tried to remove its code from the image hoping things would become a little clearer just having the framework code to read but one more time I failed to do it. So I abandoned my idea of writing a Seaside application thinking I needed much more experience in Smalltak first. Weird.
We only just started including a Seaside port with VW as a goodie - it was developed in Squeak, and proted by Michel Bany, one of our tech guys in Europe. There is doc on the net for this, but you have to look for it - this is another thing that we ought to include some pointers to. In any case, here's a pointer to a Seaside tutorial (pdf).
All of Ludo's complaints are pointers to things we need to improve on - and we intend to do so. At this point, you might wonder how I stumbled on Ludo's post - I wasn't even aware of his blog's existence before this morning. Well, I subscribe to a PubSub feed that searches for references to "Smalltalk" - and this post turned up in it. I subscribe to a bunch of search feeds using PubSub, BlogDigger, Feedster, and Technorati - they make my Product Management job much, much easier.