Approximity blog home
20 of 23 articles InfoSyndicate: full/short

Praisal to Dolphin Smalltalk   11 Nov 06
[print link all ]
"I planned 6 weeks to convert from ST/V to Dolphin, realizing that much of the non-GUI code was re-usable.—Here’s the killer, remember this was my First real Dolphin project, and second ‘smalltalk’ project.….The conversion took only 2 days, mainly because I could build and test in a workspace, and used SUnit Testing for non-gui stuff as needed. "

groups.google.com/group/comp.lang.smalltalk.dolphin/msg/fae4a931c64f5311

Smalltalk: 15 lines, XAML-C#L: 1000 lines   24 Jul 06
[print link all ]
A nice example, and probably more typical than one thinks: Using the right tool for the right job greatly reduces development time.

Read the full story.

On myth and religion in the incredibly ugly network   26 Apr 06
[print link all ]
Comop.lang.smalltalk excerpt between Joachim Tuchel and Andre Schnoor.
 Joachim Tuchel wrote:
 > >> ... Why on earth does it seem everybody believes that JBOSS or any EJB
 > >> environment will scale with no limits? After all, it's a bunch of Java
 > >> classes running in a JVM, just like seaside is a bunch of SMalltalk
 > >> classes runnung in a Smalltalk-VM....

 Andre Schnoor answered
 Marketing. The right buzz words and false promises within a perfect
 > opportunity window in history - and there you are. If something is new (I
 > mean so new that nobody can actually grasp it), hype and buzz sometimes
 > work like religion: You believe what you want to believe. You find
 > yourself spreading the word before you actually had a look at it. Suddenly
 > there are 5 million people chiming in, while only a mere 0,05% of them
 > really know what they are talking about. The big bang of myths.
 >
 > I ran rather large sites with 8 million+ monthly visitors and 7-8
 > Terrabytes of bandwith on a single 4 CPU Sun. Others required 16 Suns for
 > less traffic. It mostly depends on your database model and how frequently
 > users interact with content that is compiled "live" (not cached). The
 > basic application scripting doesn't account much to it.
 >
 >  From the perspective of a classic software engineer (and with an extra
 > bias towards German "Gruendlichkeit"), web technology in general is a huge
 > pile of complicated, heterogenous, incredibly expensive and annoying crap.
 > All that in-band signalling, all those stone age protocols and character
 > sets, quick & dirty hacks, spaghetti scripting,
 >   what-happens-next-machines ... think about how incredibly *ugly* this
 > network actually is  ;-)
 >
 > Seaside looks like a very beautiful and innovative thing. You should give
 > it a try.
 >
 >

.. Largo Argentino ..

Croquet video   26 Apr 06
[print link all ]

Marcus Denker’s Seaside talk from 22C3 is available as video now: events.ccc.de/2006/04/21/gentlemen-fire-up-your-clients/

The file is called 22C3-599-en-seaside_squeak.mp4 (almost an hour, 346 MB).

The image used (This contains all slides as Squeak Projects): www.iam.unibe.ch/~denker/talks/22c3.zip "Slides" as pdf (e.g. for printing): www.iam.unibe.ch/~denker/talks/22c3.pdf

Great Croquet talk   26 Dec 05
[print link all ]
Simple awesome

Introduction to Refactoring Streamzine   18 Dec 05
[print link all ]
Net Objective’s latest stream-zine demonstrates refactorings and code-smells. Audio and slides.

www.netobjectives.com/streamzines/CurrentStreamzine/

Very good introductory material.

Rails vs Seaside   23 Nov 05
[print link all ]
Marcus Denker posted this to squeak-ev:

Ive been playing with Avi Bryants continuation-based web framework Seaside, which is written in Smalltalk. Wow. Thats all I can say. After some recent work with Rails, I had come to admire the cleanliness of the frameworkeven if, on occasion, I had some complaints about short-cuts taken that need not be necessary. Compared to Seaside, Rails seems to me to be a jalopy. Dont get me wrong, its a seriously pimped out jalopy, but the easy with which one can build interactivity and modify it on the fly with Seaside is mind-blowing.

NB: Dont take this as a slam of Rails, as its not. Rails is brilliantfor what it is. It takes the historical model of page interaction and data storage to new heights of simplicity. It doesnt, however, change how you view the web. Seaside does. Whether you use it for your next project, or not, its worth looking at, going through the tutorials, and allowing your mind to conceive of a web that simply behaves more naturally.

blog.amber.org/2005/11/23/she-sells-seashells-by-the-seaside/

With Seaside Avi wrote sth. interesting: dabbledb.com/about/.

Ruby versus Smalltalk versus Objective-C versus C++ versus Java versus Python versus CLOS versus Perl5   22 Oct 05
[print link all ]
I just now updated my old language comparison table as I got feedback from Mark Aufflick. A big thanks to all the people that contributed to this table in the last two years.

Smalltalk Irony   11 Sep 05
[print link all ]
jarober posted this to comp.lang.smalltalk

You have to love the irony here:

1) IBM drops Smalltalk, handing it to Instantiations:

www-306.ibm.com/software/awdtools/smalltalk/transition.html

2) Another part of IBM, focused on syndication technology, starts to realize that dynamic languages like Smalltalk are the wave of the future:

www.intertwingly.net/blog/2005/09/09/The-Case-for-Dynamic-Languages

What programming in Smalltalk really is about   05 Sep 05
[print link all ]
A fascinating point of view from Chris Uppal on comp.lang.smalltalk.dolphin: groups.google.com/group/comp.lang.smalltalk.dolphin/msg/75719c339369ba5e

Damon wrote: > I bought the book Smalltalk Companion, by Ted Bracht, to see if I can > pick up Smalltalk. I’ve programmed in Java for several years, and I > think I have a decent grasp of OOP issues. > […] > Missing though are insights that I seek to translate the concepts that > I learned in developing in the file-based language of Java with its > edit/compile/test iterative development process to the image-based > interactive development process of Smalltalk.

 Welcome aboard!

 I made the Great Leap Forward from Java to (Dolphin) Smalltalk a few years ago
 and I think I can still remember how it felt. My motives were not too unlike
 yours -- curiosity about what was claimed to be a better way of working, more
 than anything. What I got out of it wasn't quite what I'd expected. I was
 hoping to find better tools, what I found was a different way of thinking about
 OO.

 You've already had a couple of fairly direct answers to your specific
 questions. I'm going to try to take a step back and talk a little about the new
 way of thinking. I'll try to relate it to your questions as I witter on, but
 the connections may seem (be) rather indirect.

 BTW, this is all -- obviously -- only my own opinion. Other Smalltalkers might
 disagree with much, or even all, of what I want to say.

 The "image" is the *central* concept of Smalltalk. In comparison, nothing else
 is very important. (I'm aware that there are Smalltalk dialects that don't have
 images, but I -- personally -- can't see the point.). If you are like me, then
 you are currently thinking of a big difference between Smalltalk and Java being
 that Java stores code in files, whereas Smalltalk keeps it in the image. That's
 sort of true, and I'll get back to it, but, for a minute, just forget about
 code, it's not important (really!). What matters is *objects*.

 The image is the place where the objects live. Technically, the image is a
 garbage-collected heap that can be saved to file, and later restored, thus
 saving and resuming the state of a computation. *Technically* that's true, but
 it isn't at all a helpful way to think about it. A more organic metaphor works
 much better. I think of the image as a deep, murky, pond where objects move
 around in the depths like fish. It's an important part of the metaphor that the
 objects are *independent* of me. Even if I designed and wrote the classes, once
 an object has been created it has an independent existence. I can talk to it, I
 can ask it to perform operations, but it is separate from me. In a sense it is
 "my" object, but it is only "mine" in the same way that a pet, or a rose bush,
 or a table, could be "mine".

 The image is where the objects live. Not the code, the objects. We'll get back
 to the code in due course, but not yet. The Smalltalk environment is just a
 place where you can talk to objects; no more, no less. Oh, sure its got class
 browsers, debuggers, editors, etc, but that's all tinsel. What matters is that
 it is a place where you can interact with the objects.

 I'll get back to the "tinsel" later too, but for now, I want to talk about the
 one part of the environment that isn't just a productivity aid: the workspaces.
 Workspaces are the medium through which you talk to objects. You *can* describe
 workspaces as "containing snippets of code" which you execute, but IMO that's
 exactly the wrong way to think of it. A better picture (slightly
 tongue-in-cheek) is as a kind of singles bar, where you can meet objects, talk
 to them, check them out, get to know them. Each workspace has a number of
 objects that are (temporarily) living there; they are the values of the
 variables in the workspace. In most cases they'll die when you close the
 workspace, but until you do they'll survive and you can talk to them. I keep
 some workspaces hanging around for days if they contain objects that are
 important for what I'm doing. The way you "talk" is by sending messages written
 in the Smalltalk programming language, but that's almost incidental. The
 important thing is that you are communicating with them using an interactive
 text-based medium, like using an IRC channel.

 I very much like that picture. A workspace is like an IRC channel for talking
 to objects. One difference is that the other users of a real IRC channel don't
 usually die when you sign-off (at least I don't think so, I admit that I've
 never actually used IRC).

 (BTW, you can save the *text* of the workspace in a .ST file -- it's actually
 saved as RTF -- but that just saving a transcript of the conversation. If you
 re-opened the text in a different workspace window then you'd see the text but
 the objects wouldn't be behind it. Using cut-and-paste from one workspace to
 another has the same effect and can be a good way of killing unwanted objects
 without loosing the record of what was said.)

 Another way of interacting with objects is to use the Inspector(s). They give
 you a much more nuts-and-bolts, low-level, view of the object -- a more
 intimate view, if you like. I, personally, don't think that the Smalltalk world
 has yet woken up to what inspectors *could* be, but the current implementations
 (like "flipper" in Dolphin) do at least allow you to see inside the objects.

 An image will contain many objects, some long lived (living, perhaps, for
 decades), most very short lived indeed. Some will be simple or trivial, like
 Strings and Points. Others will have complicated internal structures, and/or
 complicated behaviour. But they are all objects, and they all live in the
 image, and you talk to them in workspaces.

 Classes are one particularly interesting kind of object. Remember I'm *still*
 not talking about code (that comes later), I'm talking about the objects called
 classes. Just like any other objects, you can invite them to join you in a
 workspace:

     class := String.

 and then you can use the magical Smalltalk object-oriented IRC to talk to them:

     class name. "--> #String"
     class allSubclasses size. "--> 3"

 and so on. So classes are objects, and they live in the image.

 Since Smalltalk is a programming environment with GUI features, there's nothing
 more natural once we've reached the point where we have an image full of
 objects, than to start writing tools that allow us to interact with the objects
 in more structured/convenient ways. Workspaces and Inspectors are fine for the
 basics, but we'll soon want better tools that allow us to see the relationships
 between objects (or some subset of objects -- the classes for instance), or
 what messages they understand. Maybe we'll want to be able to modify their
 behaviour, or create new kinds of objects. That's exactly what the IDE
 provides. The class browsers, etc, are merely a collection of tools for talking
 to objects. They are useful, even highly desirable, but ultimately dispensable
 because we could talk to the objects without them, anyway.

 But now it's time to get to the subject of code. The progression I've taken,
 starting at objects, then the important tools, then classes, then more tools,
 and finally code, really does represent a progression from the most important
 to the least. In this way of thinking the code is the least important part of
 programming in Smalltalk. (Of course, I'm schizoid about this, I don't
 *really* think that the code is the least important part -- just muck with my
 code's formatting and watch me explode -- but on the other hand, I really *do*
 think that the objects are more important.)

 Code is how we tell objects how to behave. It's text in the Smalltalk
 programming language. We're programmers so we care about code; when we wrote
 the tools for looking at objects, we naturally designed the tools so that we
 could also see the associated source code. For instance our special tool for
 looking at classes (the class hierarchy browser) allows us to see the source of
 the methods, to change the source and recompile, etc. That's natural for us as
 programmers. If we weren't programmers then we'd want different tools, and we'd
 be interested in talking to different objects. Such systems, built for
 non-programmers, are called "applications", but they are still just
 Smalltalk -- tools for talking to objects that live in an image. (A big
 difference is that the "image" of an application is typically not persistent,
 unlike the image of the IDE).

 Back to code. Granted that the most important thing is the objects and how they
 behave, we still do care about the code. We want to organise it, back it up,
 put it under source code control, etc. A class is an object that lives in the
 image, but the source code *for* that class is something else. For all sorts of
 reasons, we want to keep that outside the image. The way that Dolphin organises
 source-code is via Packages. A package is a collection of the source code for
 classes and methods (and a few other things too, which don't matter here) that
 is kept outside the image in one or more files. You can load the package into
 the image, which will create an actual Package object, and class objects
 corresponding to the source-code. Or you can "uninstall" the package, which
 really means killing the Package object and the Class objects.

 So a package is just a way of collecting related source-code together. Some
 Smalltalks go further and associate namespaces with packages. Dolphin doesn't
 (and I'm not at all sure that I think that's a bad thing). You can load the
 same package into different images, in which case you'll have duplicate
 versions of the class objects living in both images. If you do that then you'll
 want to be careful not to make changes to the classes in one image and not the
 other, because then the package file cannot reflect the state of both images.
 The package mechanism is relatively simple; it could be improved, but I find it
 adequate for my needs. Package files are text files, you can edit them with vi,
 or notepad, or whatever. Occasionally I do that if I want to make particularly
 sweeping changes to the source. Of course, if you do that then you have to
 install the changed version into the image before it'll do anything useful.

 Notice how very different this way of thinking is from the way that even the
 best Java IDEs encourage you to think. When I started out in Smalltalk I was
 thinking of the IDE as if it was a Java IDE. I though of it as a tool that
 allowed me to write code, and had features to allow me to browse and test the
 code. After a year or so I realised that I'd turned the picture upside down
 completely, and in the process had revised my conception of what
 Object-Oriented programming is all about. As a Java (or C++) programmer I had
 pretty much thought my .java (and .cpp) files *were* the classes, and I thought
 that creating classes was what programming was *about*. I now think of the
 objects as being the important thing, and the classes as very secondary, hardly
 more than an implementation detail.

 I *feel* that that has made me a better programmer. Of course it's not possible
 to know for sure, but if it has, then it all comes down to Smalltalk's
 workspaces...

 (A couple of asides for seasoned Smallalkers, if any are still reading:

 Was Dolphin the first Smalltalk to have workspaces that kept the values of
 variables rather than throwing them away after each evaluation ? VW used to
 discard them and I think VASt still does. Squeak keeps the values, but I don't
 know how long that's been true. Anyway, whichever implementation it was that
 introduced the idea can -- I think -- claim to be the first *truly*
 object-oriented Smalltalk. Presumably also the first truly object-oriented IDE
 of any kind.

 Writing this has made me focus on the unease that I still feel with
 programming-in-the-debugger. I was already a bit suspicious that it might
 encourage a (crypto-)topdown approach to decomposition. I'm now starting to
 wonder whether it also is part of a "code-centric" way of thinking, rather than
 the "object-centric" mindset that I think Smalltalk *should* foster.)

 BTW. One book on Smalltalk that I heartily recommend, especially if Ted
 Bracht's "teach-by-example" approach isn't right for you, is Chammond Liu's
 book, "Smalltalk Objects, and Design". It's the best book on Smalltalk that
 I've ever read (although it's not Dolphin-specific), and in fact I'd say it's
 the best book on OO that I've ever read too.

 Oh well. Once again, this has been a longer post than I'd intended. I don't
 know if anything I've said has made any sense to you, or has seemed even
 slightly relevant. I've had fun writing it anyway...

 -- chris

SmallTalk ...   02 Oct 04
[print link all ]
Phlip posted this into the XP-ML.
 Smalltalk is an amazing and legendary language
 divulged to humans by Prometheus. This angered the
 gods enough they condemned him to refactor a big ball
 of Hadean mud for all eternity.

 Smalltalk can only be used by humans with a psi power
 greater than 17, with adjustments. Smalltalk
 programmers do not type, they lean their heads towards
 their monitors, and meditate. The more advanced
 programmers do not even need monitors.

 Smalltalk responds to their thought patterns by
 testing itself, coding itself, and refactoring itself.
 When humans with low psi powers need to _see_
 Smalltalk, it manifests itself as a physical avatar of
 a series of almost meaningless ^[]: characters,
 interspersed with intention-revealing selectors.
 Squinting at these symbols will reveal a Mandala
 symbolizing the 7th Chakra of the nearest programmer
 who is romantically involved, if any.

 Smalltalk itself generates its own refactoring
 browser, test rig, IDE, and 3D graphics subsystems as
 you write your program with it. So as you structure
 your program, Smalltalk uses that structure to
 generate the refactoring browser needed to refactor
 its structure. This is why some advanced Smalltalk
 Gurus know the best way to program Smalltalk is to
 simply pick up the CPU and shake it.

 The only reason such an obviously superior language
 has not taken over the world is because it interferes
 with the plans of the astral Lizard People, and their
 avatars and representatives among us. These can be
 recognized by their MCSD plaques, their years of
 experience writing distributed application servers
 that serve application distributors, and - especially
 - their books with code samples in Java.

Smalltalk with Style   25 Sep 04
[print link all ]
Stephane Ducasse posted this to the Squeak-ML. download
 Smalltalk With Style is now freely available.
 Thanks Suzanne, Ed, and Dave. This is a great book everybody should read!!

 I added the chapter 27 of Smalltalk by Example.
 I added a link to point to the book of Liu: Smalltalk, Object and Design

GNU Smalltalk 2.1e (Development)   25 Sep 04
[print link all ]
GNU Smalltalk is a free implementation of the Smalltalk-80 language.

Changes: Several bugfixes were made for the JIT compiler. A working Java-to-Smalltalk bytecode translator (which does not support networking and reflection yet) was added.

homepage download

[Squeak-ev] Deutsches 3.7g zum testen   25 Sep 04
[print link all ]
Markus Denker posted this to the Squeak-ev list
 Ich habe mal ein erstes deutsches 3.7g zusammengestellt:

 http://www.iam.unibe.ch/~denker/Squeak3.7gDeutsch.zip

 Das ist einfach das letzte 3.7g Full Image + deutsche uebersetzungen.
 Die englischen Fenster habe ich geloescht, die engl. Demo-Projekte sind
 aber noch drin.

 Was wir brauchen ist

 -> Eine deutscher Willkommen-text
 -> ein paar deutsche Demo Projekte
 -> am besten ein deutsches tutorial...

 Bi den Einfuehrungs-texten sollten wir uns nicht an den englischen orientieren,
 die sind naemlich eher sinnlos, denke ich.

Smalltalk isKindOfLike: Yogurt   25 Sep 04
[print link all ]
(Source: Stefan, comp.lang.smalltalk) Smalltalk is like an Apache hellicopter. Java is like a B52 bomber with pretty heavy duty jet engines.

Smalltalk is very well thought out, extremely well engineered, very flexible, and generally gives quite good performance in a multitude of situations. It’s very adaptable to many different situations, and has lots of tricks up it’s sleeve. Driving it is a bit of a paradigm shift from driving your average plane, it has some new fancy controls, but once you get the hang of it, it can be totally amazing and really fun. Even if you don’t totally know what you’re doing you can still get yourself out of a jam. Given that you’ve got a good pilot you can launch off to a quick start and really do some very heavy and impressive damage in a very short time. It also tends to perform quite impressively if you’ve got a few of them around, and easier to coordinate an army of them.

Java is pretty difficult to drive, and once you get it going in a certain direction it’s pretty hard to get it going somewhere else. It has a few turbo buttons on it so that if you really know when and where to use it, it can fly pretty well. You can surely get it going really fast if you fly it high enough and then point it straight into the ground. It’s generally not very flexible and often a real pain to deal with, but overall once you’ve got a flightplan fixed in stone you can fly it reasonably well and run it reasonably efficiently. If you are meticulous in your planning and implementation, it can really deliver the goods. If you make some mistakes, things can go very wrong that may become almost impossible to correct. Don’t count on any big changes, quick maneuvers, or any sort of fancy tricks that just might save the day, and leave yourself a good bit of time for planning and implementation before you expect to be able to deliver the goods. If you come accross any surprise attacks or come up against an Apache hellicopter, you could be doomed.

Squeak is a toy - so ?   25 Sep 04
[print link all ]
(source: email from Martin Drautzburg to stx-users ML; Oct, 22, 2003)
 > PPS:
 > I remember working for a company, where it took the make utility3/4 of
 > an hour to figure out *what* to compile, and the compilers a day to
 > compile- it was a C++ project b.t.w. which was canceled and replaced by
 > a Smalltalk program after they spent 50man-years on a non-working
 > program - so much for non-toy languages !

Yeah and I just spent 3 days in an inhouse J2EE workshop held by one of our chief architects. We spent most of our time fighting with the tools. Changed setting over and over. The goal of the workshop was to demonstrate how to insert a row into an oracle table. At the end of the 2 days the table was still empty. Another non-toy language.

I have written two small apps (apx 5000 LOC) one in squak and one in stx. It was a dream. Got up in the morning and fixed two or three bugs before breakfast. You can only do this with a real cool environment.

Easy (better: familiar) things are most successful   25 Sep 04
[print link all ]
(Source: James A. Robertson) www.cincomsmalltalk.com/blog/blogView

Smalltalk must be dead because ...   25 Sep 04
[print link all ]
Donald Raab posted this goodie to the st-mailinglist.

It’s probably because in order to post in the Java ng he has to be 10x as verbose as in the Smalltalk ng.

He probably has to declare himself, cast himself, wrap himself in a try catch block, bubble up any exceptions, use some external iterators, implement some interfaces, and wrap up his primitives in real objects. Maybe after auto-boxing and generics are supported, he’ll only have to post 7 or 8x as often.

Don’t worry James, we appreciate and understand your terseness over here. ;-)

On reading a text file in Smalltalk   25 Sep 04
[print link all ]
(Source: comp.lang.smalltalk, Lex Spoon) If you accept losing one notch of performance, then you can make much clearer code in Smalltalk. The "file lines" idiom in this thread is very useful, because you can then use collect:, select:, etc., on the resulting collection of lines.

And it is important to consider that once you commit to, say, iterating over an entire file, that the file must be reasonably small anyway to get decent performance. The same issue exists with collections. Who cares if collect: creates an extra collection or if WriteStream wastes space at the end of a long underlying collection; if these concerns are really so important then probably this huge collection should not exist and/or you should not be iterating over the entire thing anyway.

To put it very simply: you just can not expect a program to work on large data structures just because you micro optimized everywhere. If you want to handle large data structures then it takes planning and specialized algorithms and test cases. If you are not going to put in that effort, then don’t sweat the small stuff. It is very liberating to code with an eye towards correctness and towards algorithmic performance, and not to worry about getting down the constant factor. It seems to lead to lower stress, faster code production, and fewer bugs generated.

DE: Squeak Artikel C't   25 Sep 04
[print link all ]
In der C’t 7/2004 erschien ein Artikel ueber Squeak. Programmieren lernen mit Squeak: Von kleinen und grossen Erfindern. pdf

 

Powered by Rublog