Developing and Deploying Applications

myst-applications

The image above shows the Myst application launcher.

No language or framework will become popular unless it can produce applications that people want to use and are willing to purchase.

My focus in developing MySmalltalk is to create non-trivial applications as early as possible. This tests the limits of the language and builds the foundation libraries needed to compete with existing frameworks such as Angular.js, Bootstrap, Backbone.js, and so on.

MySmalltalk is built using the Qooxdoo.org framework which is amazingly good.

As I build tools and applications, I add the Smalltalk bindings to Qooxdoo needed to perform certain tasks.

An example would be the StyleManager and HtmlWriter classes which were created yesterday and are being used today to create the Applications window and the Welcome window on the site.

Today, I also added a new tool called ImageManager which helps me with deploying the Myst image to a local server or to the MySmalltalk.com site.

myst-image-manager

Development and deployment with MySmalltalk is incredibly quick.

Just create a new Smalltalk class using the desktop version, test it on the local server, and then deploy to the main server.

All of this is done while remaining totally in the Smalltalk environment,

The class library is very, very limited at the moment. This will improve as I add better refactoring capabilities to the class browser and add various tools such as inspectors.

The download for the desktop version will be updated about once per day. When everything is a bit more stable, I will upload it to the Google Play store as a Chrome application. That should make installation a lot easier.


MySmalltalk Classes for HTML and CSS

HTML and CSS classes

HTML and CSS classes

Two new classes have been added to the MySmalltalk image:

  • HmtlWriter generates structured HTML tags
  • StyleManager dynamically inserts/modifies CSS rules into the web page

Together, these new classes allow me to create documentation pages for the mysmaltalk.com website.

I work with the desktop version of MySmalltalk to create the new content and then I deploy the image to the remote server.

In the classic Smalltalk tradition, MySmalltalk is being used to develop its own tools needed for deployment and maintenance.

MySmalltalk is not just a language – it is a complete development and deployment ecosystem which works across multiple desktop, website, mobile, and server environments.


The Qooxdoo Framework is Fantastic!

Originally, I had intended to base MySmalltalk on the ExtJS framework.

But the marketing experts at Sencha decided to set licensing conditions that make it impossible for developers like me to use their product.

So, I started searching for an alternative framework and discovered Qooxdoo which is fantastic!

MySmalltalk is 100% based on Qooxdoo.

The main modification that I made to the framework was to add a new property called “klass” at the qx.core.Object level. The purpose of “klass” is to hold a reference to a Smalltalk class – so any Qx object can also act as a Smalltalk object if the “klass” property is set.

Also, I made some changes at other parts of the framework to replace all “eval(…)” and “new Function(…)” expressions with alternative functions. This was required to meet the security requirements for Chrome desktop apps.

I will contribute these changes to the Qooxdoo community after some cleanup and documentation.


Desktop Version Available for Download

I have made the desktop version of MySmalltalk available for download.

https://s3.amazonaws.com/mysmalltalk/desktop/myst-latest.zip

It should work on any Macintosh, Linux, or Windows platform.

MySmalltalk is a Google Chrome desktop application.

1) Make sure that Google Chrome is installed.

2) Unzip the download into a directory

3) In the Chrome browser, open chrome://extensions/

4) On the extensions page, load Myst with the “Load Unpacked Extensions” button at the top.

5) You will need to select the image manually the first time the app runs. After that it should load and save the image without prompting.

I expect that almost all development with Myst will be done on the desktop with applications being deployed to other desktops, websites, mobile devices, and servers.

It is possible to develop online or even on mobile devices, but it is much more convenient using the desktop app.


Yes, It runs in Smartphones also

You can open the MySmalltalk environment in any SmartPhone or tablet.

http://mysmalltalk.com/

And you can run Smalltalk commands in the Workspaces and open the ClassBrowser.

I will be adding a series of widgets for mobile devices in the coming weeks.

Normally, application development will be done in either the desktop or browser window environments.

Applications deployed to mobile devices can should use only mobile widgets.


Running on the Desktop

desktop

Above is an image of a Mac desktop showing the MySmalltalk environment running as a Chrome application.

There is no URL at the top of the window and the application can be started simply by clicking the Smalltalk balloon at the bottom of the screen.

As an application, MySmalltalk has access to the computer filesystem, so it can be run without being connected to the Internet.

When MySmalltalk is started from a server, the Transcript window will show the size of the image that was loaded from the server.

As a desktop application, it loads its image from the local filesystem. In this case, the Transcript is showing “Image (87475 bytes) loaded from file”.

Also, as a desktop application, the browser window has a couple of extra buttons: “Save file” and “Load file”. This allows loading and saving images across different environments (eg, load from a server and save to a file or vice-versa).


Welcome to the MySmalltalk blog.

“MySmalltalk” is a modern version of the Smalltalk language which is implemented entirely in JavaScript.

You can access the MySmalltalk desktop online at http://mysmalltalk.com.

myst-1

The image shows several windows including a ClassBrowser and two workspaces. The code in the workspace at the right is simply asking an object to print itself to the Transcript.

The workspace at the left is sending an object through the socket messaging system. The message is received by the server and then rebroadcast to all current sessions.

Messages are serialized before transmission and deserialized upon receipt, so you can send many kinds of objects as messages. This currently includes strings, numbers, booleans, arrays, dictionaries and blocks.

MySmalltalk runs in the following environments:

  1. browser windows
  2. desktops (Mac, Linux, Windows)
  3. all mobile devices (iPhone, iPad, Android, etc)
  4. servers running Node.js

It is based upon a bytecode interpreter (implemented in JavaScript) and so can run in environments with strict security where dynamic JavaScript statements are prohibited (“eval”, new Function(string), etc).

That is why it is able to run in the desktop environment as a Chrome application.