I like it very much. I love the aesthetics. This will greatly enhance Instantiations’ image (pun intended) within the programming community.
In addition to the rebranding, Instantiations has been very actively developing its product (VAST) with all kinds of innovations and improvements. I am particularly impressed by the efforts of Instantiations’ lead software engineer, Mariano Martínez Peck.
Keep an eye on this company. I believe it has a bright future.
Last night, I had a premonition in my sleep that I was going to get brain cancer. It literally scared me awake.
And do you know what was the first thought on my mind? Not that I was going to leave my friends and family behind. Not that I wouldn’t survive to the average Canadian life expectancy of 80 years (for men). Not that I would miss the upcoming Star Trek series with Michelle Yeoh (“Section 31”).
No, my first thought was whether I would live long enough to shepherd next summer’s Camp Smalltalk Supreme event to success. If I die without seeing this through, I’ll never be able to live with myself.
So, pray to whatever god you believe in that I don’t get brain cancer, please.
I did a quickie survey of 50th birthday celebrations for programming languages. I was disappointed to find very few legitimate events.
Now, obviously, only programming languages created before 1972 could have had 50th birthday celebrations, languages like FORTRAN, LISP, COBOL, BASIC, and Pascal, to name the few living, prominent, surviving languages today.
For these, I found this event for FORTRAN: Fortran’s Fiftieth Birthday. Not exactly a big deal. No birthday banquet nor free swag that I could determine.
There was this event for LISP, but it was couched in a larger, general event: The Evolution of Lisp. Again, no birthday banquet nor free swag.
For the rest, some people published articles to celebrate the birthdays. Borrring.
Don’t major programming languages deserve real birthday celebrations? Maybe I’m being silly.
Will there be 50th birthday celebrations for C, Prolog, Ada?
Anyway, I invite people to attend the 50th birthday celebration for Smalltalk at Camp Smalltalk Supreme next year. It should be a real blast!
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 a groundbreaking tool for software developers.
Glamorous Toolkit is the moldable development environment. It is a live notebook. It is a flexible search interface. It is a fancy code editor. It is a software analysis platform. It is a data visualization engine. All in one.
Rust has been selected as the Most Loved programming language at StackOverflow Developer Survey for five consecutive years! No other language commands so much respect.
StackOverflow Developer Survey’s Most Loved
And for good reasons. Rust is greatly lauded for:
memory safety guaranteed by the compiler (type system) and making garbage collection unnecessary
close-to-the-metal native code performance
efficient multi-core concurrency
These strengths are Smalltalk’s weaknesses, but Smalltalk’s strengths are also Rust’s weaknesses:
supremely simple object-oriented programming model (suitable for children and beginners)
supremely scalable object-oriented programming model (Alan Kay called Smalltalk a “software internet”)
flexibility of dynamic typing and late binding
super productivity and flexibility due to live coding (up to 5X more productive!)
portability of language virtual machine (byte code like in JVM and CLR)
convenience of image-based computing (persistable containerized environment)
(While multi-core concurrency is possible in Smalltalk as demonstrated by the RoarVM, unfortunately this is an experimental project that has lain fallow for a decade.)
Both programming languages are very useful in their respective domains, but neither can be used universally for all applications. The nice thing, however, is that these languages are perfectly complementary. Between them, there isn’t anything you can’t do.
If you need critical, real-time performance, Rust is your ticket, although programming is considerably more complicated. For just about everything else, Smalltalk is tickety-boo: web, desktop, mobile, data science, machine learning, Internet of Things, robotics, virtual reality, enterprise business computing, and so on. And it’s much easier, too.
It’s worth noting that in 2017, StackOverflow’s survey voted Smalltalk as the second Most Loved language after Rust. Why it disappeared from all subsequent surveys is anybody’s guess.
This is a case study of The James Robertson Memorial Programming Competition, which was created to promote the Smalltalk programming language. This is a case study by example, showing what was done and how it was done.
Promotion and Marketing
Advertising the competition at CBC.ca proved ineffective and costly. The click-through rate was infinitestimally small. Otherwise, we relied heavily on YouTube and social media.
Two websites were created, one for advertising the competition and the other for operating the competition (team registrations and team submissions). The advertising website has been archived. This website was based on WordPress.com. The domain name, jrmpc.ca, was purchased from Google Domains.
The operational website has also been archived. In the home page, Internet Archive has a problem with the embedded YouTube link, but the unplayable video is the same as the first one shown above in the YouTube Videos section (Mission: Impossible-themed).
The operational website was hosted at OVH (VPS SSD 1 running Ubuntu 16.04 LTS). The web application was written in Pharo in conjunction with the Teapot framework. The domain name, teams.jrmpc.ca, was configured at Google Domains, and the PositiveSSL certificate was purchased from Namecheap.
High schools across Canada were contacted by email, as well as snail mail. Attempts to contact various school boards were unproductive.
The T-shirts were sent to all the participating teams; they were a big hit with everyone. About 100 shirts were made available for a public giveaway at the awards ceremony at Ryerson.
If budget allows, I think Smalltalk-styled coffee mugs would be a very nice giveaway.
The open source software for the JRMPC Organiser is now available, thanks to the great effort by Ben Coman who developed it.
The trophies for First, Second, and Third Prizes all came from Innovative Imprints in Pickering, Ontario.
The awards ceremony was scheduled for Saturday, April 18, 2020 on the campus of Ryerson University. However, due to COVID-19, a virtual ceremony was conducted instead. Here was the result:
Since this is the first edition of JRMPC, there were bound to be some teething pains. We learned several important lessons:
First, the website should’ve been clearer about team composition, esp. the fact that a team must comprise four students. No exceptions.
Second, the website should’ve been bilingual so that Quebec would participate.
Third, better instructional materials should’ve been provided to the teams. Our existing tutorials and such were found wanting. Some teams complained that Pharo was too difficult to learn.
Fourth, the competition software should’ve been fully prepared, tested and debugged by the start of competition. During the course of the competition, bugs were found and the competition maps revealed weaknesses.
Fifth, a larger team of volunteers should’ve been assembled. This competition entailed a great deal more work than I imagined.
Sixth, we were fortunate that we only had 30 registered teams. In hindsight, we weren’t really set up to handle more. In order to scale the competition properly, we’d need more money, more volunteers, and we’d need to limit the competition to 100 registered teams. Also, only the first 30 teams would receive T-shirts.
Despite it all, we are pleased at the outcome.
The competition was a smashing success. Thirty teams registered from across Canada. Videos were created for each of the five rounds. I’ll just show the first and last of them here to avoid repetitiveness:
Hopefully, the information here can help you with your own programming competition.
Alan Kay, one of the co-creators of Smalltalk, has said that he’d like to see Smalltalk evolve beyond what it is today. He believes that Smalltalk is stagnating and failing to advance the software industry. While I agree with him in principle, I also take a more pragmatic position. I believe that we cannot wait for this mythical new programming language and that we must use whatever we have available today because the software industry is in crisis. The demand for more and better software created in a timely manner is continually increasing and it’s causing considerable stress for programmers and users alike.
At the moment, there is only one programming language that has any hope of meeting this demand. I do not posit this lightly nor frivolously. Here are the key reasons why Smalltalk is perfectly suited to this mission…
Smalltalk has a great and storied history.
A programming language ideally should command respect, and there’s no better way to do this than by demonstrating a wonderful record of achievements. History matters.
Smalltalk pioneered the language virtual machine and JIT compilation. It created the world’s first modern IDE. It introduced the MVC architectural pattern. It pioneered TDD (test-driven development) and XP (extreme programming). It made live coding easily accessible. It pioneered the development of object-oriented databases. It created the world’s first refactoring browser. It was instrumental in developing GUI and WYSIWYG.
It influenced the design of Objective-C, Ruby, Java, PHP, Perl, Python, Groovy, Scala, Dart, and other languages.
It popularized object-oriented programming starting with the now-iconic cover of BYTE magazine.
Today, there are three major Smalltalk vendors with thousands of enterprise users around the globe: Cincom, Instantiations, and GemTalk Systems. Many of these enterprise users are big names in the financial industry, manufacturing sector, shipping, utilities, etc., for example, JP Morgan, Desjardins, UBS, Florida Power & Light, Texas Instruments, Telecom Argentina, Siemens, and COSCO.
Smalltalk is incredibly simple and easy to use.
It’s even simpler and easier than Python! The syntax is as simple as you can imagine. It fits on a post card!
Smalltalk is extremely flexible and versatile.
Smalltalk has developed an extensive ecosystem. In the web space, you have the Seaside and Teapot web frameworks, and Amber and PharoJS for front-end development. In data science and machine learning, you have the PolyMath library, Roassal data visualization, and language bindings for TensorFlow and Keras. For Internet of Things, you have the PharoThings platform. For robotics, you have the PhaROS platform. Smalltalk is great for virtual reality!
Smalltalk is the most productive programming language in the world.
Smalltalk’s remarkable live coding capability plays a critical role here. Only two other significant languages support live coding: Forth and Lisp. But Smalltalk makes its very easily accessible.
Any new programming language, no matter how superior to Smalltalk, would lack history, a track record, an ecosystem, a user base, and mindshare. Marketing the language would face an uphill battle and growing the language’s mindshare would take a considerable amount of time.
Meanwhile, we wait and we wait and we continue fighting a backlog of software that demands to be written.
There are newer languages that compete with Smalltalk, such as Dart, Go, Julia, Kotlin, Rust, Scala, Swift, TypeScript. Some are very large and complex (Kotlin, Rust, Scala, Swift, TypeScript). Some are used in narrow domains (Julia, Rust, Swift, TypeScript). None are as simple and easy as Smalltalk. None are as productive and scalable. None support live coding. None are as elegant.
So, really, the best choice we have today is Smalltalk. It comes in various flavours to meet various needs:
Instantiations’ VA Smalltalk for enterprise markets
Cincom’s VisualWorks for enterprise markets
GemTalk Systems’ GemStone/S for high-volume, high-availability transaction processing