Skip to content

Paradigm Shift: Back to the Past, and No Small Talk About Smalltalk

by Benjamin L. Russell on August 25th, 2009

Those who have been reading my posts may have noticed this trend, but there has been a decided shift in the nature of my posts starting on June 18, 2009.

Specifically, prior to this date, the majority of my posts focused on Haskell, Scheme, and category theory, with a focus on purely functional programming. While I am still interested in purely functional programming, one of my other major interests is in creating a three-dimensional virtual world with some innovative functionality (I have something specific in mind).

At first, I was intent on finding a way to create such a world using a purely functional programming language. However, most purely functional programming languages do not have enough libraries to enable easy creation of such a world. Furthermore, in order to create such a world, most purely functional programming languages would require a rather sophisticated knowledge of linear algebra, which is one area of mathematics that my visiting discrete mathematics professor in college did not adequately cover, and which I have never had enough time to study fully on my own; by contrast, my favorite areas of mathematics are all related to set theory, recursive function theory (a.k.a. “computability theory”), and philosophical logic.

Therefore, I began searching for a programming language which would enable feasible writing of a three-dimensional virtual world without requiring explicit knowledge of linear algebra. Furthermore, since I was interested in programming language theory, I wanted a programming language that was at least based on a general-purpose programming language, as opposed to a domain-specific language.

After an intermittent search that lasted several months, I eventually came across a tool called “Cobalt,” based on Croquet, further based on Squeak, a dialect of Smalltalk. Unfortunately, Smalltalk is a pure object-oriented language, not a functional programming language, and after repeated attempts at approaching Squeak, the basis for Cobalt, I found the GUI-based interface rather difficult to get used to, having come from an Emacs-based textual environment. In addition, having come from a functional programming background, I found the concept of object-oriented programming highly counter-intuitive. (Apparently, I’m not the only person who has experienced this problem; similar arguments have been advanced by Paul Hudak [1] and Jonathan A. Rees [2].)

In short, I was encountering a paradigm-shift problem (with apologies to Shriram Krishnamurthi, who claims [3] that paradigms are ill-defined and hence significantly meaningless).

Here, I was faced with a dilemma: If I tried using a functional programming language, I would probably need to do a lot of work in writing the necessary libraries for the three-dimensional manipulation of graphical objects, which would additionally require learning linear algebra, which, between my full-time translation job and my busy weekends, I simply did not have enough time to learn. On the other hand, if I tried using Squeak, then every time I tried to learn the language, I would feel uncomfortable with the object-oriented paradigm, and with the GUI-based environment, and keep returning to such familiar programming languages as Scheme and Haskell, and to such development environments as Emacs.

After some thought, I realized that the problem with learning Squeak did not have to do with any inherent difficulty in Squeak itself; rather, I needed, at least temporarily, to unlearn functional programming and unlearn working in Emacs. In short, I needed to restore a blank mental slate. Well, where did I first learn functional programming and Emacs? Ah, that’s right: in college.

Although I couldn’t actually un-attend college, I could, in a sense, restore my mental state to just before attending college: What I needed to do was to go back to the past, mentally speaking, to just before college, and approach Squeak with a fresh mind. To borrow Scheme terminology, I needed to resume the continuation in the process of my life from just before attending college: Then it would be straightforward.

One night, just after midnight on Thursday, June 18, 2009, I was walking back home, reminiscing: Let’s see … what was I doing back then. Going back in time …

2007 (changed jobs again, and became patent translator),
2006 (became patent checker, then changed jobs, and became software project leader),
2004 (moved from Manhattan to Tokyo),
2002 (political difficulties at work; job further downgraded to English teacher),
2001 (WTC disaster in Manhattan, where I lived; severe downsizing at workplace resulted; job downgraded to Materials Coordinator),
1999 (became Localization Coordinator at Berlitz),
1997 (first moved to Manhattan from New Rochelle, NY),
1996 (began first major job as Systems Engineer in White Plains; moved to New Rochelle from Jersey City),
1995 (first moved to Jersey City from New Haven),
1994 (graduated from college),
1993 (took courses in recursive function theory, philosophical logic, and the lambda calculus, especially enjoying the lambda calculus; first exposure to Haskell in auditing a course on Haskell),
1992 (finished leave of absence and self-study of discrete mathematics; took a course in axiomatic set theory),
1991 (began leave of absence and self-study of discrete mathematics),
1990 (took a course on Pascal and hated it; embarked on Computer Science major; started learning Common Lisp and Scheme: hated Common Lisp because of all the funcalls and idiosyncracies, but enjoyed Scheme because of the relative simplicity and regularity of structure of the language; started learning Emacs; learned how much I did not know, and how stupid I was, and became chronically depressed),
1989 (moved from Tokyo to New Haven, and matriculated at college).

1989. Ah, there: Continue from the continuation of my life-process at that point: the early afternoon of August 31, 1989, just before leaving for Narita Airport to go to New York to take the bus therefrom to New Haven to begin my (dreaded) college studies.

No Emacs. No Scheme. No Haskell. No category theory. No chronic depression. Return of math phobia. Return of Japanese popular music. Return of a simple mind which is not depressed because it does not know how much it does not know. Return of interest in multimedia. Aha!

Multimedia: the missing link! At that time, I was very interested in the Fujitsu FM Towns, a Japanese personal computer modeled on the Macintosh, the interface of which was based on Smalltalk [4]! Proceeding to Smalltalk from this continuation would be relatively trivial!

Sometimes, one needs to move backward in order to move forward.

So I decided to resume my continuation from this point on, with a fresh mind.

Resuming continuation….

I awoke, as if from a trance.

The next day, I returned to my computer, continuing the continuation. Suddenly, this strange text-based interface on my screen called “Emacs” seemed like a monstrosity that some text-based hacker must have concocted just for the sheer challenge of mastering arcane keystroke-combinations. Yuck! There must be a way to do programming without having to master arcane keystroke-combinations.

Let’s see; where can I find a point-click-drag interface that allows me to program without having to use a textual editor … preferably, one similar to the graphical user interface of the Fujitsu FM Towns, based on the user interface of the Macintosh….

Aha! what’s this mouse-face-icon on my desktop labelled “Squeak?” Double-clicking on the icon labelled “Squeak”….

Hmm … a colorful background with illustrations. Sound. Multimedia. Point. Click. Drag. How intuitive: just like the Macintosh interface! Hmm … some research shows that it is an implementation of a language called “Smalltalk,” the interface of which was the basis for the Macintosh … what a coincidence … how curious…. I wonder who put it here….

Hmm … found a note here. It says, “Note to myself: Learn Squeak and Cobalt, and build a virtual world using Cobalt, using ideas described on the attached sheet.” Sure; why not?

[1] Hudak, Paul. “[Haskell-cafe] a regressive view of support for imperative programming in Haskell.” Online posting. 8 Aug. 2007. 25 Aug. 2009. <news://>. Also available at <>.

[2] Rees, Jonathan A. “JAR on Object-Oriented.” Online posting. 11 May 2003. 25 Aug. 2009. <>.

[3] Krishnamurthi, Shriram. “Teaching Programming Languages in a Post-Linnaean Age”. Cambridge:_2008 SIGPLAN Workshop on Programming Language Curriculum_ (2008): 81-83. <>.

[4] Kay, Alan C. “The Early History of Smalltalk.” Cambridge, Massachusetts: _History of Programming Languages: The second ACM SIGPLAN conference on History of programming languages_ (1993): 69-95. <>. Also available at <>.

  1. I would like to thank you for the efforts you’ve put in writing this site.
    I’m hoping to see the same high-grade content by you in the future as well.
    In truth, your creative writing abilities has inspired me to get
    my own, personal blog now ;)

  2. I think that what you said was actually very logical.

    But, what about this? suppose you added a little content?
    I am not saying your information isn’t good., however what
    if you added something to maybe grab folk’s attention? I mean Paradigm Shift: Back
    to the Past, and No Small Talk About Smalltalk | Monadically Speaking:
    Adventures in Programming Language Theory is kinda vanilla.
    You ought to glance at Yahoo’s front page and see how they write article headlines to
    grab viewers interested. You might add a video or a related pic
    or two to grab readers excited about what you’ve got to say.

    In my opinion, it would bring your posts a little livelier.

  3. I like the valuuable information you supply to your articles.
    I will bookmark your blog aand take a lok at once mre
    here regularly. I’m reasonably certain I’ll learfn lots
    of new stuff right here! Best of luck for the next!

  4. You ought to take part in a contest for one of the most useful blogs on the
    net. I’m going to recommend this site!

  5. Excellent weblog right here! Additionally your website
    so much up fast! What host are you the usage of? Can I get your affiliate hyperlink to your host?
    I wish my website loaded up as fast as yours lol

  6. A person who says that they do not follow fashion, tell them they are lying.

  7. Another option to have a secure home is to change your lock rather than install a new.
    Usually a security code is used to open these kinds of locks.
    In certain emergency situations, the availability
    of an expert locksmith in Delta BC is really helpful for the users.

  8. Have you ever thought about including a little bit more than just your articles?
    I mean, what you say is fundamental and all.
    However think about if you added some great pictures or videos to give your posts more,
    “pop”! Your content is excellent but with pics and video clips, this website could undeniably be one of the most beneficial in its field.
    Amazing blog!

  9. She said that it wasn’t the terrifying mid-1990s AOL chat room that I imagined it to be, and that it was an excellent way, if nothing else, to get the confirmation that there were human males on the planet.

  10. Sometimes a friends-with-benefits relationship will continue for ages, partially
    because one or both parties is concerned that if it is taken further, there could potentially be a breakup followed by losing that person for good.

  11. We should be cautious even though picking a locksmith,
    as we will need a skilled that will be ready to securely
    safe our treasured items. The very running property that is car or other vehicle is also locked to avoid its theft.
    Are you looking for an effective way to protect your family and your home.

  12. They can also provide you the total security systems installation for your residential or commercial purposes.

    The very running property that is car or other vehicle is also locked to
    avoid its theft. Make sure you clean your face thoroughly before moisturizing.

  13. Hello, yes this paragraph is in fact good and I have learned lot of things from it on the topic of
    blogging. thanks.

  14. I know this web page presents quality depending posts and additional stuff,
    is there any other web site which gives these kinds of information in quality?

  15. There is no reason you buy jewelry without being well-informed.

  16. Thanks a lot for sharing this with all of us you
    really understand what you are talking about! Bookmarked.

    Please also seek advice from my web site =). We can have a hyperlink change contract between us

  17. We would like to thank you just as before for the stunning ideas you offered Jesse when preparing a post-graduate research in addition to, most importantly, for providing every one of
    the ideas in a single blog post. If we had been aware of your website a year ago, we
    will have been rescued from the needless measures we were choosing.

    Thank you very much.

  18. Attractive portion of content. I simply stumbled upon your website and in accession capital to
    assert that I acquire actually loved account your weblog posts.
    Anyway I will be subscribing in your augment and even I fulfillment you access
    consistently quickly.

  19. Hello very nice web site!! Guy .. Beautiful
    .. Superb .. I’ll bookmark your site and take the feeds also?
    I am satisfied to search out so many helpful info here in the publish, we need develop more techniques in this regard, thanks for sharing.
    . . . . .

  20. Our writers will not have issues reading by way of your essay directions and figuring out precisely what you want in your model.

  21. Why visitors still use to read news papers when in this technological world all is accessible
    on net?

  22. Yet another substantial result associated with the research
    indicated that the label applied to the product packaging or cartridges marked as ‘Comprising
    No Nicotine’ in reality has nicotine. Technological
    advancements today have led to the creation of
    the new electronic cigarette, a device that aims to help even the most seemingly hopeless smoker to quit.

    An additional benefit about the electronic cigarette is you won’t have to glance stained teeth or fingernails that
    the smoke makes.

  23. Hi there, You have done a great job. I’ll certainly digg it and personally recommend to my friends.

    I am confident they’ll be benefited from this site.

  24. Some truly nice and useful information on this web site,
    likewise I think the style contains fantastic features.

  25. I loved as much as you will receive carried out right
    here. The sketch is attractive, your authored material stylish.
    nonetheless, you command get got an edginess over that
    you wish be delivering the following. unwell unquestionably come more formerly again as exactly
    the same nearly a lot often inside case you shield this hike.

  26. You are my intake, I have few web logs and rarely run out from post :

  27. I relish, lead to I found exactly what I was taking a look for.

    You’ve ended my 4 day lengthy hunt! God Bless you man. Have a great day.

  28. you are in point of fact a just right webmaster. The web site loading speed is amazing.
    It kind of feels that you’re doing any unique trick.
    Also, The contents are masterpiece. you have performed a wonderful activity on this

  29. My programmer is trying to persuade me to move to
    .net from PHP. I have always disliked the idea because of the expenses.
    But he’s tryiong none the less. I’ve been using WordPress on numerous websites for about a year and am worried about switching to another platform.
    I have heard excellent things about
    Is there a way I can import all my wordpress
    posts into it? Any help would be really appreciated!

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS