Welcome to the Future of Smart Web Development


Today is the official launch of a campaign to promote the use of Smalltalk (and Amber) in the modern age of software development, especially as it relates to the Web. In our highly connected world, web technologies are absolutely central to the economic growth and social evolution of our society.

Why Smalltalk?

Smalltalk is a pioneer in programming language development. Constructed in the 1970s by those clever folks at Xerox PARC in California, Smalltalk was the first major OOP language, and still widely regarded as the best. Over the past four decades, it has been highly influential in the design of other important languages, such as Objective-C, Ruby, Groovy, Scala, and Dart. Today, Smalltalk is still used to write industrial and financial applications (rather like a secret weapon that confers a competitive advantage). It is alive and well, particularly in the Pharo incarnation, and it is emerging as a contender in client-side web development with the creation of Amber.

The beauty of Smalltalk lies in its simplicity and elegance, as well as its novel concept of a “live” development environment, where every object is active and you can examine it and change it at will. Ironically, this “novel” concept was created more than four decades ago! As a result, Smalltalk is eminently readable, almost like English, but it still manages to be succinct.

Smalltalk is prized for its development power and extraordinary productivity. The word “productive” is vastly overused and bandied about by nearly every new programming language that arrives on the scene today. However, Smalltalk has a long history to show definitively that a simple and expressive language, combined with an innovative approach to the IDE, can pay enormous dividends in academia and in the commercial enterprise.

Now with Amber, which compiles efficiently to JavaScript, we have brought the benefits of Smalltalk to the world of browser-based application development, the “final frontier,” as it were. Welcome to the future of Smart Web Development!



Why is Smalltalk still relevant today? It may be viewed as a “modern” language in as much as it is closely tied to a novel approach to IDEs: the Smalltalk environment is a world of “live” objects that you can examine and change at will. The Smalltalk environment is not file-based; it is a system of live objects that can be stored, system state and all, into one location. Compare this to the traditional method of organizing source code using files and folders which is positively antediluvian!

“Source code in files. How quaint.”
Kent Beck

Moreover, Smalltalk adheres to modern language design principles that have become very popular. It’s a simple language with a highly readable syntax. Its language features are orthogonal with no unpleasant interactions. Not only is it designed to be easy to learn, it is also designed to be very practical and expressive in daily use.

Smalltalk can stand shoulder to shoulder with the likes of Dart, Swift, F#, and Scala, all recent entrants in the highly competitive field of programming languages.

Which Smalltalk should I use? Smalltalk is available in many different flavours and unfortunately this can be confusing to newcomers. In order to make things simple, I always recommend open source Pharo or Amber (which uses Pharo as the reference implementation). If you’re inclined toward a commercial Smalltalk, you have principally three choices: Cincom Smalltalk, VA Smalltalk, or GemStone/S.

Squeak is Pharo’s predecessor and still fairly popular. Redline Smalltalk is for those who want to run Smalltalk on the JVM. Essence# is for those who want to run Smalltalk on .NET. Dolphin Smalltalk is specifically for Windows. And there are still others. But, really, just keep it simple: stick with Pharo or Amber.

What resources are available for Smalltalk newcomers? To begin with, here is a most informative series of podcasts:

Here is an excellent Smalltalk tutorial video to get you started:

I actually went through the online interactive tutorial discussed in the video above. You get a better feel for the language by doing rather than watching.

This introduction to the Pharo programming environment (despite the title, it doesn’t really talk about the language itself) is very well done:

So is this introduction by Noel Rappin:

If you’re inclined to read, I recommend the book “Pharo by Example” (also available as a free PDF), which comes with a downloadable version of Pharo tailored for the book.


Announcing Camp Smalltalk Supreme

I have the green light to proceed with Camp Smalltalk Supreme, the 2022 50th anniversary edition of Camp Smalltalk.

It’s scheduled for June 10-12, 2022 at Ryerson University in Toronto, Canada.

I’ve confirmed Adele Goldberg, Dan Ingalls, and Kent Beck as keynote speakers for this very special event! Adele and Dan were part of the original team at Xerox PARC, and Kent is a renowned Smalltalk pioneer.

Here is the official website:
Here is the promo video:
Here is the GoFundMe campaign:

I hope many people will attend this event. It should be a blast.


JRMPC 2020 Awards Ceremony

The awards ceremony for The James Robertson Memorial Programming Competition has just been published. Read all about it here:

In fact, you should follow from now on, as the Smalltalk Renaissance blog is being deprecated.

Thank you all for following this blog.


Do you like the idea of Camp Smalltalk Supreme and do you support it?

With regards to 50th Anniversary of Smalltalk

Thanks for participating in the poll.


Interview with a Smalltalk Evangelist

[This is an imaginary interview conducted by an imaginary IT magazine called Technophobe. It was done in January of 2020.]

Richard Kenneth Eng is a Smalltalk evangelist who’s been blogging about Smalltalk for five years. He is something of a celebrity at Quora and Hacker News. He organized a high school competition recently called The James Robertson Memorial Programming Competition, or JRMPC for short, to wide acclaim.

Technophobe: Thank you for agreeing to this interview, Mr. Eng.

Richard Eng: Glad to be here.

Technophobe: What are you trying to accomplish as an evangelist?

Richard Eng: I’m trying to market the Smalltalk programming language to the public. The goals are to grow the user base, as well as the supporting ecosystem, and to make Smalltalk popular again, the way it was back in the 1980s and 1990s.

Technophobe: Why did you feel that Smalltalk needs to be “marketed?”

Richard Eng: For years, Smalltalkers tried publishing technical articles, giving technical seminars, offering technical workshops, producing GitHub repositories, making demonstration videos, and so on. They believed that this would lead to wider Smalltalk adoption.

So I asked, “How’s that working for you?” After all this time, adoption was still anemic and Smalltalk was still mired in relative obscurity. Smalltalk jobs were still rare as hen’s teeth. Smalltalk was nowhere to be found at TIOBE, PYPL, RedMonk, IEEE Spectrum, and StackOverflow Developer Survey.

I decided that there had to be a better way. I decided that somebody had to accept the mantle of Smalltalk evangelism. This would be an enormous undertaking, which would entail a full-time effort of advocacy and blogging on social media. It would entail proper marketing, not just technical presentation.

So I focused on winning people’s attention and persuading them at the emotional level, not just the logical level. I took my cue from master marketers like Steve Jobs and Elon Musk.

Technophobe: Do you recommend other programming languages do the same like Crystal, Elixir, F#, Haskell, Haxe, Idris, Julia, Nim, etc.?

Richard Eng: Yes, I do. The hard part will be finding a volunteer who has the time, energy, and creativity to do all the hard work. This is a marathon, not a sprint.

Smalltalk evangelism took out a full five years of my life.

Technophobe: What inspired you to take on this task?

Richard Eng: James Robertson, one of the best Smalltalk evangelists who ever lived. Also, this article by Blake Watson: Today’s Smalltalk: A Second Look At The First OO Language.

I had the wherewithal to realize that I could do this job. I simply had to make the decision to proceed. This was in late 2014.

Technophobe: Why couldn’t someone else do this job?

Richard Eng: Someone else could. The problem is that no one stepped up. The truth is, most people do not have the inclination to become a full-time evangelist. They have other responsibilities like earning a living, taking care of their family, and engaging in recreation for their own well-being. Doing this job on a part-time basis would take many, many years — much too long to be effective.

Nevertheless, I hope I can set an example for others to follow.

Technophobe: Why does Smalltalk deserve such a great undertaking?

Richard Eng: Smalltalk is one of the greatest programming languages ever created. Its unique, synergistic combination of small, simple language and live coding environment, as well as a total system of live objects, makes Smalltalk one of the most productive programming languages in the world. It is not uncommon to hear stories of five times productivity improvement.

Imagine the cost savings in cutting your development time in half. Imagine much shorter “time to market.” Imagine not having to hire more developers to meet your demanding schedules.

At a time when there is a programmer crunch and a vast backlog of software that needs to be written, it would be a terrible shame for the world to overlook this hidden treasure.

Technophobe: What has been the result of your advocacy?

Richard Eng: Well, so far, the needle hasn’t been moved at TIOBE. Smalltalk remains stuck outside of the Top 50. But I am encouraged by the fact that my Smalltalk blog has been read by more than 100,000 people worldwide. There is probably a bit of a lag time before the public is mobilized to try out Smalltalk. I’m hoping to see Smalltalk re-enter TIOBE’s Top 50 (it was #37 in 2013) in the next couple of years, just in time for Smalltalk’s 50th anniversary.

Technophobe: Thank you for your time.

Richard Eng: You’re most welcome. Thank you for having me.


How is Smalltalk’s revival like the e-car’s revival?

It’s not a riddle. I’ll give you the answer.

There are several interesting parallels between the evolution of the electric car and the evolution of Smalltalk. Let’s look at e-cars first.

E-cars were pioneered in the 1830s. By 1900, they had reached their peak of popularity with a third of all cars manufactured in the United States being electric.

By 1920, the maturity and popularity of the internal combustion engine had made e-cars no longer viable. So e-cars faded away.

By the 1960s, however, rising gas prices and concerns over pollution caused people to re-examine the electric car. But it would be another three decades before the Toyota Prius made electric viable again, if only in the form of hybrids.

The big breakthrough for true e-cars came in 2006 with Elon Musk’s Tesla Roadster. Everybody wanted one.

And today, Tesla remains the e-car that everybody wants.

Now, let’s look at Smalltalk. Smalltalk was pioneered in the 1970s. (The first official language release was Smalltalk-80 in 1980.)

Smalltalk had reached its peak of popularity in the early 1990s when it became the second most popular object-oriented language in the world (C++ was #1). Even IBM chose it as the centrepiece of their VisualAge enterprise initiative.

By 1995, that began to change. Sun Microsystems’ Java language burst onto the scene and sucked all the oxygen out of the room. Smalltalk was among the casualties.

By 2007, however, a modern variant of Smalltalk known as Pharo was birthed. It arrived at the right time because the world was suffering from low programmer productivity and a backlog of software applications begging to be written. The world was also suffering from a plethora of overly complex programming languages like C++, Java, C#, D, Groovy, and Scala. This group would be later joined by JavaScript, Kotlin, Rust, Swift, and TypeScript.

People are clamouring for fresh air. They want simpler languages. That’s one reason for the resurgence of Python (though calling Python a “simple” language is rather dubious).

It’s also why Golang took off, and why Dart, Elixir, Lua, and Nim are beloved.

Today, Pharo is a very exciting language. It has been innovating by leaps and bounds over the past decade. One of the most notable developments is the Glamorous Toolkit.

But Smalltalk is a family of languages, so we should also give a shout out to other great Smalltalk flavours such as GemStone/S from GemTalk Systems, VA Smalltalk from Instantiations, and VisualWorks from Cincom. Not to be overlooked are Amber (transpiles to JS), Cuis Smalltalk, Dolphin Smalltalk (optimized for Windows), GNU Smalltalk (for command line lovers), Hoot Smalltalk (JVM support), and Squeak.

Pharo is also extremely versatile which is well-explained in this article, “Smalltalk: It’s Not Your Grandparent’s Programming Language.”

Let me close by pointing out another interesting parallel. In the early years of the e-car, there were technical obstacles that limited its popularity. E-cars had a very limited range. They couldn’t compete with low-cost gas. They had limited horsepower.

In the early years of Smalltalk, it required expensive hardware to run on (processor and memory). It needed high-resolution graphical displays. It couldn’t compete with C/C++ and FORTRAN and BASIC and Pascal.

Today, both are experiencing a revival. E-cars are more economical than ever. Smalltalk can run on devices as small as the Raspberry Pi, and run well!

The epitome of the e-car is Tesla. It is the most aspirational electric car in the world.

The epitome of programming languages for productivity and ease of use is Pharo/Smalltalk. It, too, is aspirational. Is there a programmer alive who doesn’t want to write their applications quickly and easily, like in half the time? I don’t know about you, but I don’t want to work harder than I have to.

(Previously published at Gitconnected.)


Why Smalltalk is so easy to evangelize

Of all the programming languages in the world, Smalltalk is, by far, the easiest one to evangelize. Why is that?

First, Smalltalk has a wonderful historical legacy. It has contributed an enormous amount to the software industry, to computer science, and to programming language design. It pioneered the language virtual machine and JIT compilation. It created the world’s first modern IDE. It made live coding easily accessible. It introduced the MVC architectural pattern. It was largely responsible for TDD (test-driven development). It pioneered the development of object databases. It gave us the first refactoring browser. It was instrumental in developing GUI and WYSIWYG.

It influenced the design of Objective-C, Ruby, PHP, Perl, Python, Groovy, Scala, Dart, and other languages.

It popularized object-oriented programming (whereas Simula 67 academically introduced the concept of classes and objects). Remember the famous August 1981 cover of BYTE magazine?

Second, Alan Kay and his group at Xerox PARC are legendary. Alan Kay’s vision was extraordinary. His object-oriented philosophy was brilliant. It was far superior to the philosophy espoused by people like Bjarne Stroustrup.

Alan Kay on the early days of Smalltalk (jump to 2:17)

Third, Smalltalk has a wonderful track record. It actually achieved a significant measure of popularity in the 1980s and 1990s. It was adopted by IBM for their VisualAge enterprise initiative. It was used by many prominent customers, including the U.S. joint military, JP Morgan, Orient Overseas Container Lines, Desjardins, UBS, Texas Instruments, Telecom Argentina, BMW, and Siemens AG.

It has a very significant commercial vendor presence which enterprise companies appreciate. Look at Cincom (VisualWorks), Instantiations (VA Smalltalk), and GemTalk Systems (GemStone/S). It has significant corporate sponsorship from the Pharo Consortium.

Fourth, Smalltalk has statistical evidence (in the Namcook Analytics study by Capers Jones) to support the claim of enormous programmer productivity. This is consistent with much anecdotal evidence for the same claim.

Fifth, Smalltalk has a rich family of languages like Pharo, Squeak, Cuis Smalltalk, Dolphin Smalltalk (optimized for Windows), GNU Smalltalk (for command line lovers), Amber (transpiles to JS), Hoot Smalltalk (JVM support), VisualWorks, VA Smalltalk, and GemStone/S (high-performance object databases) that can satisfy a myriad of needs.

Moreover, Pharo is the fastest evolving and innovating Smalltalk in history! It has remade itself in just under a decade.

Sixth, Smalltalk makes object-oriented programming very easy, much easier than in C++, Java, C#, and others. Smalltalk is supremely simple and easy to learn. Its complete syntax fits on a post card. You can learn all of Smalltalk’s syntax within 15 minutes!

Seventh, Smalltalk is remarkably versatile. You can do back-end web with Seaside and Teapot frameworks. You can do front-end web with Amber and PharoJS transpiled languages. You can do mobile with Cordova/PhoneGap. You can do data science with PolyMath library, Roassal data visualization, and Moose data analytics platform. You can do machine learning with TensorFlow. You can do IoT with PharoThings. You can do robotics with PhaROS. You can do virtual reality. You can even script the Unreal game engine!

Roassal demonstration
virtual reality demonstration
Unreal game engine demonstration

In other words, Smalltalk provides a huge stockpile of ammunition. You can fire salvo after salvo after salvo.

What other language can be as easily evangelized? Clojure? Crystal? Dart? Elixir? Golang? Haskell? Julia? Kotlin? Nim? Racket? Rust? TypeScript? Nope. Not even close.

(Previously published at ITNEXT.)


How can we celebrate the 50th anniversary of Smalltalk?

The 50th anniversary of Smalltalk is coming up in 2022. What can we do to celebrate this momentous occasion?

Smalltalk is still one of the greatest programming languages ever invented. It keeps company with other great languages like LISP and Scheme and Forth.

Smalltalk has had a profound influence on the software industry and computer science and programming language design. Objective-C, Ruby, PHP, Perl, Python, Dart, Groovy, Scala, and others owe their OOP implementations to Smalltalk.

Smalltalk helped invent the modern GUI and WYSIWYG interface. Apple and Microsoft thank you.

Smalltalk invented the modern IDE by integrating a text editor, class browser, object inspector, and debugger. Visual Studio and IntelliJ IDEA thank you.

Smalltalk advanced live coding by adding a GUI front end, thus making it very easy and convenient to use. Live coding makes you supremely productive.

Smalltalk practically invented TDD (test-driven development), as well as XP (extreme programming).

Smalltalk invented the MVC pattern (Model-View-Controller).

Smalltalk helped pioneer the language virtual machine. Java and C# thank you.

Smalltalk helped pioneer JIT compilation.

Smalltalk gave us the world’s first refactoring browser. This tool helps make Smalltalk a very maintainable language.

Smalltalk remains the finest OOP language in the world. It is just about as versatile as any other language you can think of, including Python and Java.

Smalltalk can be used for back-end web with Seaside and Teapot, front-end web with Amber and PharoJS, mobile with Cordova/PhoneGap, data science with PolyMath, Roassal, and Moose, machine learning with TensorFlow, IoT with PharoThings, robotics with PhaROS, virtual reality, games, enterprise business computing, and so on. It has even been used to create an operating system (SqueakNOS)!

Smalltalk belongs in any programming language hall of fame. Let’s celebrate its anniversary with gusto.

Add your suggestions in the comments. The winning suggestion will receive a Smalltalk T-shirt:

This shirt is part of a giveaway at The James Robertson Memorial Programming Competition held in Canada in 2020.

The winner will be reported in a subsequent blog post, so make sure you follow this blog. When you see your name, send me an email with your name and shipping address.


Is Smalltalk a weird cause to fight for?

This question occupied my mind last night as I slept.

I came to the conclusion that it’s not weird at all. Why is it any more weird than, say, the following causes:

  • environmental causes, like climate change, Amazon rainforest, pollution, etc.
  • endangered species, like tigers, whales, sharks, eagles, etc.
  • welfare of chimpanzees (Jane Goodall)
  • domestic abuse
  • animal abuse
  • human rights abuse
  • medical diseases, like cancer, MS, ALS, Alzheimer’s, etc.
  • arts & culture
  • disability causes
  • elderly care
  • religious causes
  • political causes, like corruption, unethical foreign policies, Edward Snowden, etc.
  • cyberbullying
  • sports causes

And many more I haven’t thought of.

Ultimately, one fights for a cause they have a personal connection with. I have no connection with any of the listed causes, except perhaps for cancer and tigers.

Some people might think that a humanitarian cause (like human rights, domestic abuse, diseases) is more “worthy” than a programming language.

Some people might think that the survival of the planet is more worthy than Smalltalk.

But this depends on one’s belief system, personality, and personal experiences. They’re different for everybody.

I think Smalltalk is a most important cause. How can I possibly justify this outrageous claim?

Well, consider this: We live in a highly technological world where information underpins nearly every aspect of our lives. Without software technology, our modern world would collapse. We would be thrown into utter chaos.

And what is at the very heart of software technology? Programming languages. People must use programming languages to create all of this wonderful (and not-so-wonderful) software.

Now, what if we were all using shit programming languages? How would that impact our world?

Well, we’d have flakey, unreliable websites. We’d have unsecure, hackable systems. We’d have a huge backlog of software that needs to be written, and not enough time nor resources to write them.

We’d have generations of shit programmers who’ve graced us with their crapware. They’ve been “trained” to program in JavaScript and Python. They have no idea how to ensure the highest quality of software.

Surely, you say, using languages like Smalltalk and Rust won’t solve all of our software woes. And you’d be right. But it would be a wonderful huge step in the right direction.

This is why I’ve devoted my life to this cause. Is that weird?

How does Python make thinking in code easier?

[This question was asked at Quora and Louis Cyphre wrote a great answer. Published with permission.]

The conventional answer is that Python has a clean, concise, readable syntax that gets out of your way and lets you focus on the problem at hand. However, Python is hardly unique in this respect.

Ruby also has a clean, concise, readable syntax. Elixir also has a clean, concise, readable syntax. Smalltalk also has a clean, concise, readable syntax.

However, Pythonistas will also tell you that Python’s syntax reads like English and this is hugely beneficial. Well, if English isn’t your first nor most familiar language, I don’t know how much of a benefit that is.

But I’d like to push back on the notion that Python is English-like. Let’s compare Python with Smalltalk…

Here’s some Smalltalk code:

| car |
car := Dictionary new. "create an empty dictionary"
car at: #brand put: 'Ford'.
car at: #model put: 'Mustang'.
car at: #year put: 1995.
car keys. "evaluates to #(#brand #model #year)"
car associations. "evaluates to {#brand->'Ford'. #model->'Mustang'. #year->1995}"
car removeKey: #model.
car associations. "evaluates to {#brand->'Ford'. #year->1995}"
car removeAll.
car associations. "evaluates to #() which means empty"

The hash (#) signifies a symbol. Python doesn’t have symbols, so strings must be used.

| car | declares the variable car. In Python, you don’t declare variables. Consequently, a mere typo can create a new variable and potentially cause a subtle bug.

Now, let’s look at the Python equivalent:

car = dict() #create an empty dictionary
car['brand'] = 'Ford'
car['model'] = 'Mustang'
car['year'] = 1995
car.keys() #evaluates to ['brand', 'model', 'year']
car.items() #evaluates to [('brand','Ford'), ('model','Mustang'), ('year',1995)]
del car['model']
car.items() #evaluates to [('brand','Ford'), ('year',1995)]
car.items() #evaluates to []

Which is more English-like,

car at: #brand put: 'Ford'


car['brand'] = 'Ford'

Which is more English-like,

car removeKey: #model


del car['model']

Last time I checked, del isn’t a word in English and car[‘model’] is hardly English.

Which is more English-like,

car removeAll



English doesn’t employ dot notation, and I’ve never seen empty parentheses in English.


car associations

is much more English-like than



car keys

is much more English-like than


Even Smalltalk’s use of double-quotes for comments is more English-like than Python’s use of hash (or Python’s use of triple-quotes).

So I submit that Smalltalk is much more English-like than Python.


Green Light for JRMPC!

JRMPC registration has closed. I am pleased to announce that we have the final list of teams for The James Robertson Memorial Programming Competition. Thirty teams will compete for $13,000 in prize money. This is the richest purse for a school competition in Canadian history!

Eighteen schools from thirteen cities and three provinces all across Canada will compete:

St. Michaels University School (Victoria)
St. John’s School (Vancouver)
John G. Diefenbaker High School (Calgary)
Robert Thirsk High School (Calgary)
Webber Academy (Calgary)
Strathcona High School (Edmonton)
Waterloo Collegiate Institute (Waterloo)
Centennial Collegiate Vocational Institute (Guelph)
Westmount Secondary School (Hamilton)
Marc Garneau Collegiate Institute (Toronto)
Woodbridge College (Vaughan)
Langstaff Secondary School (Richmond Hill)
Henry Street High School (Whitby)
Bayridge Secondary School (Kingston)
A.Y. Jackson Secondary School (Ottawa)
Longfields-Davidson Heights Secondary School (Ottawa)
Nepean High School (Ottawa)
St. Patrick’s High School (Ottawa)

Here is the list of participating teams: Let’s give it up for these 120 brave digital warriors!

Starting on January 31, 2020, you will be able to follow the progress of the competition and the ranking of the teams at our leader board:

On January 10, 2020, we will make available on this blog all the material necessary for Round 1 of the competition, including the specification of the challenge. This will give the teams additional time to prepare.

In fact, we will publish all the material for every round at the start of each round. In this way, everyone can follow along and “compete,” even if they’re not directly participating in the competition. It’s all in good fun!

Speaking of fun, here are some fun videos of the Smalltalk programming language:

Let the games begin!