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. obviously like your website however you have to test the spelling on quite a
    few of your posts. Several of them are rife with spelling problems and I
    to find it very troublesome to tell the truth nevertheless I’ll definitely come back again.

  2. Hey I am so happy I found your webpage, I really found you by
    accident, while I was searching on Google for something else,
    Regardless I am here now and would just like to say many thanks
    for a marvelous post and a all round thrilling blog (I
    also love the theme/design), I don’t have time to read it all at the moment but I have saved it and also added your RSS feeds, so when I have time I will be back to read a great deal more, Please do keep up the
    excellent job.

  3. When fathers felt unstable within the marriage and, experienced triangulation in their families at
    the same time, their children have been more likely to have depressive

  4. This paragraph is in fact a nice one it assists new web visitors, who are wishing in favor of blogging.

  5. My relatives always say that I am killing my time here at
    web, however I know I am getting knowledge all the time by
    reading such nice articles or reviews.

  6. Hi, all is going well here and ofcourse every one is sharing
    information, that’s really excellent, keep up writing.

  7. Hi, yes this post is in fact pleasant and I have learned lot of
    things from it on the topic of blogging. thanks.

  8. Excellent blog right here! Also your website quite a bit
    up very fast! What host are you the usage of? Can I
    am getting your associate link to your host?
    I desire my site loaded up as quickly as yours lol

  9. What’s up friends, fastidious post and nice urging commented here,
    I am in fact enjoying by these.

  10. Nice blog here! Also your web site a lot up very fast! What web host are you the use of?
    Can I get your associate hyperlink to your host? I desire my website loaded up as quickly as yours lol

  11. Depois da criação do seu e-book ou curso on the internet em vídeo, você
    poderá trabalhar em casa com seu computador aplicando as técnicas do treinamento.

  12. Hello to every one, it’s in fact a nice for me
    to pay a quick visit this site, it includes valuable Information.

  13. Critics Consensus: Populated by fresh blood annd both recognizable faces and packed with actions,
    The Force Awakens remembers the show’ former glory while injecting

  14. I am sire this piece of writing has touched all tthe internet users, its really rerally fastidious paragraph on building up new weblog.

  15. Another option to have a secure home is to change your
    lock rather than install a new. The very running property that
    is car or other vehicle is also locked to avoid its theft.
    This is one of the miracles an auto locksmith can perform.

  16. Asking questions are actually good thing if you are not understanding
    something fully, except this piece of writing gives fastidious
    understanding yet.

  17. Helppppppppppppp!!!!!!!!!!

  18. A pessoa passa a receber os e-mails em dias e horários
    definidos, e isso tudo de forma automática, por isso nome A Maquina De Vendas On the internet, porque é como se fosse uma máquina trabalhando para você no

  19. Hi there mates, how is everything, and what you wish for to say concerning this post, in my viesw its actually amazing for

  20. In fact, several reports һave estimated that under 1 / 3 of adults and children tɑke іn the roughly tᴡo tto fⲟur cups evеry
    day of fruits and vegetables. Ƭhese are knoᴡn as commercial blenders ɦis or her ⲣrice usually ranges frߋm $300-$600
    ɑnd average households аrᥱ often not wіlling tһat will put a
    whle lot of money in to a blender for private ᥙѕe. Itѕ blades aree powerful еnough to slice thгough thᥱ thickest fruits аnd vegetables.

  21. Nice blog here! Additionally your website loads
    up fast! What host are you the use of? Can I get your affiliate
    link in your host? I want my web site loaded up as fast as
    yours lol

  22. Good blog you hav here.. It’s hard to find quality writing like yours these days.
    I truly appreciate people like you! Takee care!!

  23. Excellent site. Plenty of helpful information here.

    I am sending it to some friends ans also sharing in delicious.
    And naturally, thank you too your sweat!

  24. A green smooothie iis а fruit based smoothie сontaining vаrious vegetables ⅼike kale,
    spinach, collards, celsry οr cucumbers blended in. Thеѕе arе often calⅼeԁ commercial blenders Ƅecause tһeir ⲣrice usually ranges from $300-$600 and average households սsually аre not ԝilling to рut а whole ⅼot of mney іnto
    a blender for personal uѕe. A Fruit slushies to chill with ⲟver a hot summer afternoon, berries,А juice or lemonade ɑnd ice blended up in to a cold frozen tгeat tο
    cool off with or ppop to the freezer with an ice pop for ⅼater.

  25. In fɑct, sеveral гesearch has estimated thаt below 1 / 3 of adults and
    children eat tҺe roughly two tо fouг cups daily of fruits and vegetables.

    Ⲟbviously these traits are right down to thе buyers personal preference
    ɑnd personality. A Fruit slushies tߋ chill served Ьy on ɑ hot summer afternoon, berries,А jice
    оr lemonade and ice blended up in tо a cold frozen treаt to
    cool down the with іn oгԀer to pop in the freezer with аn ice ppop for lаter.

  26. Thanks for your personal marvelous posting! I definitely enjoyed reading it,
    you mmight be a great author.I will make certain to bookmark your blog and definifely will come back
    someday. I want to encourage you to ultimately continue your great
    posts, have a nice morning!

  27. My partner and I stumbled over here different web address and thought I might check things out.
    I ike what I see so i am just following you. Look forward to looking into your
    web pagfe repeatedly.

  28. I know this site offers quality based content
    and additional data, is there any other web site which gives these kinds of data in quality?

  29. I know this web site offers quality depending articles and other
    information, is there any other web site which gives
    these kinds of information in quality?

  30. Right here is the perfect website for anyone who would like to find
    out about this topic. You understand so much its almost tough
    to argue with you (not that I actually would want to…HaHa).
    You definitely put a brand new spin on a topic that has been discussed for many years.
    Great stuff, just wonderful!

  31. I need to to tbank you for this good read!! I definitely loved every little
    bit of it. I’ve got you book-marked to look at new things you post…

  32. Incredible points. Sound arguments. Keep up the ood effort.

  33. You need to take part iin a contest for one of the highest quality sites on the net.
    I most certainly will highly recommend this blog!

  34. Have you ever considered about including a little bit more than just your articles?
    I mean, what you say is valuable and all. However imagine
    if you added some great graphics or video clips to give your posts more, “pop”!
    Your content is excellent but with pics and videos, this blog
    could certainly be one of the greatest in its niche.
    Very good blog!

  35. You’re so cool! I don’t believe I’ve truly read through anything
    like this before. So wonderful to find another person with a few genuine thoughts on this subject
    matter. Seriously.. tanks foor starting this up.
    This website is something that is nneeded oon the web, someone
    with a bit of originality!

  36. This paragraph gives clear idea for the new viewers of blogging, that genuinely how to do blogging and site-building.

  37. Excellent post. I was checking constantly this blog and I’m
    impressed! Extremely useful information specially the last part
    :) I care foor such information a lot. I was seeking this particular information for
    a very longg time. Thank you andd good luck.

  38. Plus, appreciate all the premium live race day attributes
    for Free with any Sprint Unlimited data strategy.

Leave a Reply

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

Subscribe to this comment feed via RSS