Category Archives: Smalltalk

Smalltalk: Links, News And Resources (20)

Previous Post

Objective-Smalltalk talk at FOSDEM 2014 – YouTube
https://www.youtube.com/watch?feature=player_embedded&v=NZmgVsk1K6k

Alan Kay On Messaging
http://c2.com/cgi/wiki?AlanKayOnMessaging

Pharo Smalltalk – YouTube
https://www.youtube.com/channel/UCp3mNigANqkesFzdm058bvw

pathToolsFramework – Squeak Community Projects
https://www.hpi.uni-potsdam.de/hirschfeld/trac/SqueakCommunityProjects/wiki/pathToolsFramework

Pharo4 Plans and Dreams – YouTube
https://www.youtube.com/watch?v=mUV9E03u52g&feature=youtu.be&a

39 – Leandro Caniglia – self ideas asStream next – YouTube
https://www.youtube.com/watch?v=tuOqJU9BtkQ

20 – Nicolas Petton – Amber Smalltalk – YouTube
https://www.youtube.com/watch?v=L6ixtb9w8R0

32 – Hernan Wilkinson – Web Development In Smalltalk For Newbies – YouTube
https://www.youtube.com/watch?v=73MZkGEG-uc

15 – Dale Henrichs – tODE: And Now For Something Completely Different – YouTube
https://www.youtube.com/watch?v=m4LcZ4_1Yic

Smalltalk reddit
http://www.reddit.com/r/smalltalk

Where Smalltalk Went Wrong 2
http://www.ianbicking.org/where-smalltalk-went-wrong-2.html

Where Smalltalk Went Wrong
http://www.ianbicking.org/where-smalltalk-went-wrong.html

Saying Goodbye To Python
http://www.ianbicking.org/blog/2014/02/saying-goodbye-to-python.html

Interview with Esteban Lorenzano
http://nicolas-petton.fr/blog/interview-esteban.html

RMoD
http://rmod.inria.fr/web/
The goal of RMoD is to support remodularization of object-oriented applications. This objective is tackled from two complementary perspectives: reengineering and modularity constructs for programming languages.

PhaROS – FOSDEM 2014 – Slides
http://car.mines-douai.fr/2014/02/pharos-fosdem-2014-slides/

My Links
https://delicious.com/ajlopez/smalltalk

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Smalltalk: Links, News And Resources (19)

Previous Post
Next Post

ESUG: 2014
http://www.esug.org/wiki/pier/Conferences/2014

Pharo Open Source Smalltalk — News
http://www.pharo-project.org/news?dialog=pharo-3-at-fosdem&

mpw/Objective-Smalltalk
https://github.com/mpw/Objective-Smalltalk

Philippe Back Interviews Nicolas Petton on Amber Smalltalk by philippeback on SoundCloud – Hear the world’s sounds
https://soundcloud.com/philippeback/nicolas_petton_on_amber_smalltalk

pharo-project/pharo-vm
https://github.com/pharo-project/pharo-vm

smallworks: Why I’m using git in my Pharo projects
http://smallworks.eu/web/blog/2014-01-16-Why-Im-using-git

Dyla’14 at PLDI, Edinburgh, UK
http://www.lifl.fr/dyla14/

Morphic
http://wiki.squeak.org/squeak/30

docs.selflanguage.org/4.4/pdf/SelfHandbook-Self4.4-R2.pdf
http://docs.selflanguage.org/4.4/pdf/SelfHandbook-Self4.4-R2.pdf

stephane.ducasse.free.fr/FreeBooks/CollectiveNBlueBook/morphic.final.pdf
http://stephane.ducasse.free.fr/FreeBooks/CollectiveNBlueBook/morphic.final.pdf

Self Mallard (4.5.0) released | Self
http://blog.selflanguage.org/2014/01/12/self-mallard-4-5-0-released/

Self | Fun through simplicity
http://blog.selflanguage.org/

stic13 – YouTube
http://www.youtube.com/playlist?list=PL8aumV3VUz66Rs8-xcD8V57ZTBNYPlzmj

(349) Programming Languages: Why create any more programming languages? – Quora
http://www.quora.com/Programming-Languages/Why-create-any-more-programming-languages

Anyone interested in smalltalk? : learnprogramming
http://www.reddit.com/r/learnprogramming/comments/1to0wm/anyone_interested_in_smalltalk/

ST 4U 510: Dynamic Code Generation in Pharo
http://www.jarober.com/blog/blogView?entry=3565419024

Was Alan Kay wrong? And why does that matter?
http://braythwayt.com/2013/12/22/wrong.html

Smalltalk on Raspberry Pi | a blog on Smalltalk on the Raspberry Pi
http://pismalltalk.wordpress.com/

My Links
http://delicious.com/ajlopez/smalltalk

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez
http://github.com/ajlopez

AjTalk Implementing Smalltalk In C# (4) The Project

Previous Post

Year and a half since I didn’t write about this project in C #, but I was working on it, and the parallel implementation I have in JavaScript (in fact, I introduced some concepts of both the Smalltalks 2013 conference, Rosario, Argentina).

The project is at:

https://github.com/ajlopez/AjTalk

Current structure:

The projects are:

AjTalk: class library, with a compiler to bytecodes implementation. There is a compiler to JavaScript too. There is an interpreter of those bytecodes.

AjTalk.Compiler: a console project that uses the compiler to JavaScript.

AjTalk.Console: a simple REPL (Read Eval Print Loop)

AjTalk.Gui: a work-in-progress example using windows

AjTalk.Tests: the test I wrote, followin TDD (Test-Driven Development) flow.

I guess now I don’t need the compiler to JavaScript, because I have a native JavaScript implementation at:

https://github.com/ajlopez/AjTalkJs

It can compile to bytecodes or to JavaScript. The project is written in JavaScript.

The window implementation is very primitive. I plan to replace it for direct AjTalk program using .NET types and object.

One point that I find very interesting (in both projects, C # and JavaScript) is to have a modular implementation: instead of loading an image yet defined, my plan is to define modules to load, as happens in the Node.js environment . The modules would be published in the NPM (Node Package Manager’s), and each could indicate which modules need in your program instead of lifting all Smalltalk.

Another topic in this C # project I have implemented that can run more than one AjTalk machine at the same time. And I can even make a machine “help” to the other. For example, if the machine does not have to compile methods to new methods, machine B can go to his aid. Thus, A machine (and his image, I’m already recording binary image) can be kept small.

Another feature that I have implemented: the ability to send a message to an object, without waiting for a response, a “fire and forget”. And that the target object can attend ONE OF those messages as models of actors.

I have to review the implementation of remote objects (now based on the old Remoting. NET). But I think it is an important feature to maintain and explore.

Well, you see, many issues remain for other posts, such as implementation details Smalltalk concepts such as Object, Class, ClassDescription, Behavior, MetaClass, etc..

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Smalltalk: Links, News And Resources (18)

Previous Post 
Next Post

gravel-st/gravel · GitHub
https://github.com/gravel-st/gravel
Smalltalk in Java

http://www.rowledge.org/resources/tim’s-Home-page/Squeak/RTOSinSmalltalk.html.pdf
http://www.rowledge.org/resources/tim’s-Home-page/Squeak/RTOSinSmalltalk.html.pdf

SmalltalkInspect
http://smalltalkinspect.podspot.de/post/024-en-smalltalk-under-the-pi-an-interview-with-tim-rowledge/

tim’s Home page
http://www.rowledge.org/tim/

Oral History of Adele Goldberg – YouTube
http://www.youtube.com/watch?v=IGNiH85PLVg

ALTO-Smalltalk-72
http://lively-web.org/users/Dan/ALTO-Smalltalk-72.html

hhzl (Hannes Hirzel)
https://github.com/hhzl?tab=repositories

Lively Kernel – Home
http://www.lively-kernel.org/

Viewpoints Research Institute
http://vpri.org/index.html

Welcome to Self — Self – the power of simplicity
http://selflanguage.org/

Fast and Dynamic
http://www.infoq.com/presentations/dynamic-performance

Jon’s Place: Roz & RobotsConf
http://blog.huv.com/2013/11/roz-robotsconf.html

rmod.lille.inria.fr/archives/papers/Poli13a-IWST13-ObjectSpacesVirtualization.pdf
http://rmod.lille.inria.fr/archives/papers/Poli13a-IWST13-ObjectSpacesVirtualization.pdf

Smalltalk intro i
http://www.slideshare.net/garduino1/smalltalk-intro-i

Smalltalks13 pharo techoverview
http://www.slideshare.net/pharoproject/smalltalks13-pharo-techoverview

Smalltalks 2007 to 2012 History – YouTube
http://www.youtube.com/watch?v=fSjugDrjUpw

norvig.com/design-patterns/design-patterns.pdf
http://norvig.com/design-patterns/design-patterns.pdf

SqueakSource de l’Ecole des Mines de Douai
http://car.mines-douai.fr/squeaksource/@DYCJfebGRHRMSKdm/eRqLNQqo

Seed: Pharo Kernels
http://www.youtube.com/watch?v=kfSCGYUAv4s

Germán Arduino: Finalizó Smalltalks2013
http://germanarduino.blogspot.com.ar/2013/11/finalizo-smalltalks2013.html

Smalltalks2013 – a set on Flickr
http://www.flickr.com/photos/garduino/sets/72157637139811735/

nativeboost – Squeak NativeBoost plugin source code – Google Project Hosting
https://code.google.com/p/nativeboost/

My Links
http://delicious.com/ajlopez/smalltalk

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Smalltalk from Scratch

I think Smalltalk is a wonderful technology that influence the past decades in programming. But not directly: its influence is not via its killer apps. Smalltalk influenced programmers. The Smalltalk mark can be traced in Python and Ruby design decisions. And many programmers have been touched by Smalltalk ideas. But Smalltalk, as technology, didn’t exploded. We can discuss the reasons: early “balkanization” of providers, no early open source implementation. My thoughts: it is too couple to its own “GUI IDE”, and it is a bit overwhelming (too many pieces).

I think that is time to explore alternatives path. In the past decades, I visited many technologies and languages, and in the past ten (more or less) years, I took again Smalltalk and tried to follow an alternative path.

My position: we should try a simpler Smalltalk. An Smalltalk not tied to GUI IDE, not tied to thousands of classes. A simple implementation that can access the rest of the world advances in programming.

So, I started three own implementations: Smalltalk hosted in .NET, in Java and in JavaScript/Node.js:

https://github.com/ajlopez/AjTalk
https://github.com/ajlopez/AjTalkJava
https://github.com/ajlopez/AjTalkJs

More info in https://ajlopez.wordpress.com/category/smalltalk/.

But this post is not dedicated to review those implementation. Its purpose is to write down some ideas about how to create an Smalltalk, without struggling with the shrinking of a previous image.

The Core

I think that a new Smalltalk from scratch could be developed. An Smalltalk that runs in a host environment, like .NET, Java or JavaScript. Or another one. But it’s time to have an Smalltalk that is not an autism program: it should leverage the work of other technologies. For example, an Smalltalk running on JavaScript could access the JS ecosystem, via browser modules and libraries, or using Node.js or other engine package ecosystem.

The core Smalltalk should implement:

Object: the base object and class, with some base methods, like #subclass:.

Array: for arrays with numeric index, starting from 1 (to not break with Smalltalk tradition)

Dictionary: to map keys (names) to values

Primitive types: the underlying language (.NET, Java, JavaScript) could implement numbers (integers and floats), bytes, chars, strings, etc.

Access to native objects and types: to create them, to call type methods, to call instance methods.

The Library

First, a minimal implementation of some classes, that can be shipped with the initial implementation.

But then, and this is important: try to live in an ecosystem of packages. Instead of having all classes in the image, try to have an ecosystem of packages. Each Smalltalk application could define the needed packages, and then, the packages could be installed from the package ecosystem. In my implementations, I started to explore the use of NPM (Node Package Manager) to publish new package, and to install them per application, even with the use of explicit package version, so we have a less brittle ecosystem.

Package candidates:

– Test library (with an initial assert method)
– HTTP server
– MVC web framework (I have a minimal sample using Node.js Express)
– Distributed messages (I have a naive implementation in C#)
– etc.

In this way, the adoption of a package will be easy: not need of porting a package, only consume it, given the right dependencies in place. And, as in other technologies (Python, Ruby with gems, and notably, Node.js with NPM), each package can keep the description of the needed dependencies (NPM takes care of versions too).

Additional Items

I want to have an environment feature: that a class/package can load other classes, but only for internal use, without pollute the global Smalltalk environment.

I want to have an image running with the help of other image. That is, the Smalltalk VM should manage MORE THAN one running image. And one image could help another one. For example: one minimal image could have no compile method, but this method could be provided by the host image. In this way, a minimal image could be created, without any convoluted “shrinking” step. I already implemented this feature in my C# implementation.

In some implementations, I want to have an image (save and restore). But it is time to explore the development without the need of an image.

Any GUI should be created over the host environment. Use Windows.Form if your Smalltalk is running over C#. Or use another library, in Java (Swing? SWT?). But the idea is that the GUI management should be something clearly separated from the core implementation. Current popular Smalltalk implementations are too coupled with GUI management. Look at other technologies: Python, Ruby, Node.js, Go, etc.. There are lots of developers not using a technology so tied to a GUI IDE. And they are producing useful applications.

As I usually say: explore. That is the verb. We must explore alternative path, even when the outcome and gains are not clear. If I had seen killer applications in Smalltalk, or the use of Smalltalk in the creation of application that are really used by other developers (like in Python, Ruby, Java, JavaScript, Node.js, and others), I should stop thinking in this way. But, for some reason, Smalltalk is not taking the world by storm. Alternatives are here, floating around us, ready to be taken and to be explored.

Keep tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Smalltalk, JavaScript, NodeJs, C#, and Tutti Li Fiocci

Past year, I gave a talk at Smalltalks 2013, Rosario, Argentina. The conference was a great experience to me, and there were many interesting talks, implementations and ideas.

My talk was about implementing Smalltalk, in C#, and JavaScript. The main repos are:

http://github.com/ajlopez/AjTalk (I presented it at Smalltalks 2010)
https://github.com/ajlopez/AjTalkJs (I presented it at Smalltalks 2011)

My recorded talk:

http://www.youtube.com/watch?v=-KFjSneVE2s

The presentation:

https://github.com/ajlopez/Talks/tree/master/Smalltalks2013
http://ajlopez.github.io/Talks/Smalltalks2013/index.html
More talks at http://ajlopez.github.io/Talks/

The first project is an interpreted based on byte codes, written in C#. It can compile to JavaScript, but the key features is to have a VM based on bytecodes, that have access to native .NET types and objects, remote execution, actors, and more. See my posts.

The second project is an implementation of Smalltalk but in JavaScript. Internally, it have a compiler to JavaScript, but also a compiler to bytecodes and then, an interpreted VM written in JavaScript. Both projects now supports NPM (Node.js package manager) for new modules.

In 2013, I added Node.js support and access to AjTalkJs, so I can run an Express application from Smalltalk:

 

Next experiments: distributed message. That is, an object in one machine sends a message to an object in a remote machine/process,  in a fire and forget way. I think Node.js ecosystem is a good plate to host such experiments. My previous work at Distributed Applications with Node.js. I want a distributed Smalltalk machine/application. Maybe, if the communication protocol is easy or pluggable, I could add clients/servers implemented in other Smalltalk dialects. But baby steps first 😉

Keep tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez