New Website!

We have a new website and a new logo for our community. Go Smalltalk!

Smalltalk was designed for Kids!

Yes! Alan Kay was trying to develop an environment to be used in the education of our kids.

Did you Know that Smalltalk was created in 70's at Xerox?

The use of the mouse, the "copy and paste", the bitblt and others technologies was firstly created in Smalltalk. Steve Jobs saw those ideas at Xerox and he developed a new language, Objective-C.

Mailing List in Spanish!

Please, go to http://groups.google.com/group/clubsmalltalk and join us!

Showing posts with label Interview. Show all posts
Showing posts with label Interview. Show all posts

October 16, 2011

Mariano Martínez Peck, winner of the 2011 edition of the Esug's Innovation Technology Awards.

Mariano Martinez Peck is an argentinian PhD Student at Ecole des Mines in association with RMOD-INRIA. . FUEL has been the winner of the 2011 ESUG edition of the Innovation Technology Awards, and Mariano is one of it developers. Here is a little talk about FUEL and his present work.

CS: What was the motivation to create a new serializer?
MMP: Well, this is an excellent question since most people's reaction when we announced Fuel was: "Yet another object serializer?". The truth is that I am doing a PhD with Stéphane Ducasse and others and, from the very beginning of my PhD, it was clear that for my solution I needed a good-designed, reliable, flexible, uniform and very fast serializer. I needed a serializer that I could understand, change, adapt for me needs and, mostly, I needed (because of my PhD domain) a serializer able to serialize all type of objects including classes, compiled methods, closures, contexts, traits, etc. At the same time, it was extremely important to make it fast. The main goal of the serializer needed to be the performance and not, for example, the portability as happens with other serializers. I checked all the serializers available for Pharo (since my PhD prototype is based in Pharo) and none of them met my expectations.

Stef also wanted a fast binary serializer to provide a future infrastructure for Monticello. I didn't have time to do my PhD and, at the same time, do the serializer so he decided to help me by asking Tristan Bourgois to make Fuel from scratch. Just a couple of weeks later, Martin Dias, from Universidad de Buenos Aires in Argentina, came to Lille for a 4-month internship. The team decided that Martin could also work on Fuel and use it for his thesis. Few months later, when I was starting to need the serializer for my PhD, I jumped directly into the team and I have been helping them since then. Tristan is not working anymore in Fuel so Martin and I are the current developers now.

Once Martin finished his internship and come back to Argentina, ESUG decided to sponsor him through the ESUG SummerTalk project. He is the student in such a project and I am currently taking the role of "mentor". So we should thanks ESUG for such a sponsorship. 

CS: Fuel is clean, platform agnostic and incredible fast in some scenarios. What were the topic most difficult to resolve in the framework?
MMP: The key characteristic in Fuel is the usage of a specific type of pickle algorithm. The only Smalltalk serializer that we are aware that uses such technique is VisualWorks Parcels. However, Parcels can be better described as a serializer for managing code than as a general purpose object graph serializer. Fuel is not focused in code loading and is highly customizable to cope with different objects. Fuel is the infrastructure on top of which you can then build other tools.

So, the pickle algorithm/logic in itself was not complicated since it is well known and there are papers or references about it. The main challenge was how to build a real object oriented approach for such algorithm. How to find the correct abstractions and hierarchies, where to put each responsibility, and all related questions that make a better design. It is also difficult  to maintain a good design without loosing performance. I think in Fuel we have a very clean and object oriented solution while having a good performance as well (it is really important to have a large set of benchmarks as we have).

Another complex topic was being able to serialize all type of objects because you have to know which objects are "special" and how they are represented internally. How to encode and decode the objects in a stream was difficult for us as well. Neither Martin or I are experts in streams nor in optimizing code, so we have learnt a lot about it in the process. 

CS: What is the pickle algorithm?
MMP: I think that, sometimes, there is some kind of confusion regarding this term. "Pickling'' and ``Unpickling'' are synonyms for "Serializing" and "Deserializing". In Fuel, we use the terms "serialize" and "materialize" (deserialize). In addition, we call "pickle" to the algorithm or format we use to encode or decode the objects in the stream.

It is a little bit complicated to explain Fuel pickle format in a couple of lines but I will do my best.

Traditional pickling formats take the object graph to serialize and, while traversing it, they serialize the object plus an identifier of its type into a sequence of bytes (Note that the type is usually its class but not necessary). The unpickling then starts to read objects from the stream. For each object it reads, it needs to read its type as well as determine and interpret how to materialize that encoded object. The materializer needs to determinate the type, search what it needs to do with it and perform the materialization. So, in the common case of a regular object, it will read its type and then it will need to get its class from the system and send #basicNew in order to get a new instance. Then, of course, it will fill its instance variables.  This unpickling is terrible slow because it means a lot of work for every single object. In other words, the materialization is done recursively.

Fuel pickle format is completely different. There is a first traversal of the graph (we call this phase "analysis") where each object is associated with an specific type which is called "cluster" in Fuel. As a result of the analysis phase, we have a list of clusters and, each cluster, contains the list of objects that belong to it. After that, we proceed to serialize. However,  there is another key aspect: the serialization is split in serialization of instances first and, then, references. This means that, first, we only serialize the instances (nodes of the object graph), and, then, all the references. This is different than the regular serializer that encodes both things together. Notice that, if an object is all references (those objects that are not variable), then nothing will be written in the "instances part" and everything will be in the "references part".  In the stream, we encode how many clusters there are and how many instances each cluster has.

During materialization, we first materialize the instances. Since all the objects of a cluster have the same type, we write/read that information in the stream only once. The materialization can be done in a bulk way which means that we can just iterate and instantiate the objects. Once we have finished with the "instances part", we continue with the "references part". Here, we iterate and set the references for each of the materialized object. In other words, the materialization is done iteratively.

So....the conclusion is that Fuel materialization is so fast because it can be done iteratively. To do that, we need to serialize instances separated from their references. This also means that we are a little bit slower during serialization as we need to map objects to clusters. Nonetheless, all benchmarks show that Fuel is the fastest serializer in materialization and still one of the fastest ones in serialization.

CS: How do you resolve the references in a serialization?
MMP: We encode references in Fuel by using an integer that denotes the position of the referenced object inside the stream. Then, during materialization, we can read that integer and we know exactly in which position is located the object we are looking for.

CS: What happens with the identity of an object? In other words, When an object it is materialized, is it the same object or it is a clone from the original?
MMP: It depends on the object you are need to serialize. For regular objects, yes, the identity changes and the materialized objects will be like a clone of the original. In fact, some consider a serialization as a very deep copy.
Now, Fuel supports what we call "global objects". Imagine that you serialize a graph that contains a reference to Transcript. You don't want to serialize the instance Transcript and then, during materalization, get yet another Transcript instance in your system. You want to use the same.

Global objects are not written into the stream. Instead, the serializer stores the minimal needed information to get the reference back at materialization time. In this example, we just store its global name to get the reference back during materialization. The same happens with the Smalltalk class pools and with classes. This means that, at materialization, all the classes and globals have to be present in the image.

The previous is normally the expected scenario. However, Fuel does support real serialization of classes. This means that Fuel can take a class and correctly serialize it together with its method dictionary, compiled methods, superclass, subclasses, etc. Of course, this is not the default behavior (the default is considering classes as globals) but the API will let you do that. In fact, this is needed for a small proof of concept we developed to manage Monticello packages with Fuel.

If I said ... Would you answer
Sports?
Soccer
Food?
Asado
Computer brand?
self isPayByEmployee
       ifTrue: [ Mac ]
       ifFalse: [ computers anyOne ]
Operative system?
self amIInMac
       ifTrue: [ MacOS]
       ifFalse: [ Ubuntu ]
Mobile Phone?
Android
City?
Miami
Book?
Lord of the Rings
Film?
Back to the Future
TV Series ?
The Big bang Theory
Magazine?
No one these days...only papers and blogs.
Car?
My mother-in-law’s Ford Focus. I have a special relationship with that car!
Open Source?
Sure! As much as I can

October 18, 2010

Citilab Cornella interviews to Leandro Caniglia and Hernan Wilkinson at ESUG

This is a video interview (in Spanish) made by Citilab Cornellà where the ESUG was held in 2010. Leandro Caniglia and Hernan Wilkinson give their point of view of some of the reasons of why Smalltalk is being used in Argentina.
Here is the link to the video: http://blip.tv/file/4211623/Por

September 13, 2010

Skype interview to Dan Ingalls by Goran Krampe

Here is the MP3 file with the interview. Read more about this in the Goran's Blog.

06/07/2012 Update

The Blog is down, so you can reach the interview at the Cincom Blog. The podcast Industry Misinterpretations from Cincom, has the interview in the chapter 205.

July 30, 2010

Juan Vuletich, working for a simplier and clean Smalltalk

Juan Vuletich is an Argentinian Smalltalk programmer who has been collaborating with Squeak for many years. In 2010, ESUG is going to sponsor one his projects, Morphic 3. Here, we have a rich talk about Smalltalk :-)

CS: Juan, you have been involved for many years with Squeak and Morphic, what can you tell us about Morphic 3 and this announced support from ESUG?
JV: Well, I discovered Squeak in 1997. I had been using OS/2 as my main OS, because it had been for several years the only one to allow for multithreading programming. Then Squeak came. An open source Smalltalk at last! And straight from Alan Kay and Dan Ingalls, and from Smalltalk-80! I immediately decided to port it to OS/2. That was my first Squeak related project.
Later, Morphic was ported to Squeak from Self. Morphic was an incredible discovery. I realized a new era was starting, and the books I'd bought to learn about MVC were obsolete. However, several things happened that made it hard to understand it. The biggest hurdle for me was the introduction of Etoys. Etoys was added to Squeak without a clear separation of what was part of the base Morphic framework, and what was part of the Etoys application. Besides, Etoys supports a programming style based on instances (a la Self) and the code was not easy to understand. This only got worse as time passed. People kept adding stuff, and nobody did any cleaning. You can see, for example here: http://wiki.squeak.org/squeak/920 that Dan Ingalls always felt that serious cleaning was needed. Also John Maloney (one of the creators of Morphic, and the guy who ported it to Squeak) speaks about the history of Morphic and the issues he thinks that should be fixed in the SqueakNews interview. Get it at http://forum.world.st/squeak-dev-Squeak-News-td83662.html.
For some time, I hoped Squeak Central would finally focus on cleaning Morphic and Squeak. I started thinking about doing it myself around 2003. Then Tweak was announced, but it was not what I wanted. So, around 2005, I started to clean Squeak and Morphic myself. I'd been interested in scalable user interfaces for over a decade, so that was the main feature I wanted. I worked on this in my free time and showed it in Smalltalks 2007 and Smalltalks 2009. People liked it, and Esug offered some support.

CS: You have announced that in Morphic 3 you have developed some algorithm using the sampling theorem, which is the basis of the digital audio and photography. How did you start studying this and when did you realize that could be applied to 2D rendering?
JV: I studied CS at the University of Buenos Aires. I took several courses on Image and Signal Processing, starting in 1999. The PhotoSqueak project was part of this. At the same time, I did my thesis on a technique I developed to do "smoother audio". This gave me the mind set and tools to attack the problems in 2D graphics with a new perspective. As Alan Kay says, "point of view is worth 80 I.Q. points"!

CS: In your website (www.jvuletich.org) we can read that Morphic 3 is looking for a highest-quality 2d rendering, even more that Cairo or other libraries and it's 100% done in Smalltalk, what can you tell us about the architecture, the speed and the compatibility of this new version of Morphic?
JV: At the current state, there are 2 parts to this. One is the Morphic 3 classes that would replace the Morph hierarchy. The other one is the rendering engine that would replace Canvas, BitBlt and Balloon. Morphic 3 is not meant to be compatible with Morphic 2. Back compatibility is the single major force against progress in software. On the other hand, the rendering engine is pretty general, and it would not be too hard to integrate it with Morphic 2, giving better quality to most morphs.
With respect to speed, the code is right now in Smalltalk, so it is not very fast. When turned into a VM plugin, performance will be similar to the other rendering alternatives.

CS: What are the major problems do we have with Morphic today?
JV: In Cuis, there are no real big problems, but just that the features are a bit outdated: It doesn't do high quality anti-aliasing, and the UI is not scalable (well, no widely available UI is scalable yet!). Those are the issues I want to fix in Morphic 3. Besides I also believe that a normalized programming style on widget composition and model dependency is needed. I have already developed one, and I use it for my projects. It would be good to rewrite the programming tools using it.
In Squeak / Pharo, the biggest problem (that I have already solved in Cuis) is massive unneeded complexity. You can see it in the Squeak and Pharo mail lists, on the problems people have with Morphic, the kind of questions they ask, and the answers they give. Nobody can understand Morphic. It is slow and bloated, and nobody knows why. And all they do is to keep adding layers on top of the previous ones, making it bigger.

CS: You have developed a new spin off from Squeak called Cuis, what are the objectives of Cuis?
JV: Some of the main ideas and objectives for Cuis are: (from http://www.jvuletich.org/Cuis/Index.html)
  • Close to the ideas in Smalltalk-80 and "Design Principles Behind Smalltalk".
  • Include only kernel functionality.
  • Included stuff should be in very good shape.
  • Include a greatly simplified version of Morphic as the main UI.
  • Easy to fix and extend.
  • Cuis is yours to extend it to suit your needs.
  • Stable. Smalltalk kernel should not change much.
  • Compatible to a reasonable degree with packages intended for other Squeak distributions.
  • Lead by Juan Vuletich (jmv) after these principles.
I believe that Squeak and Pharo don't follow Dan Ingalls's ideas expressed in the Design Principles paper. The idea of avoiding unneeded complexity has been central to Smalltalk since the beginning, but it seems to have forgotten in the last decade. To me there is no real advance if the system is still a mess. And working in a Smalltalk where all the time you are faced with old, silly and buggy code that nobody dares to try to understand is a constant pain for me. That's why I do Cuis.

CS: Do you think that Smalltalk should move from raster-based to vector-based graphics to be a step ahead again in graphics?
JV: I don't think that being a step ahead is an objective for Smalltalk. The objectives for Smalltalk have always been "do the best we can with the knowledge we have today" and "be a good tool to experiment, create new knowledge and express knowledge in a runnable form". I believe that software to drive computer displays will move away from the individual pixels exactly in the same way that printers have done it many years ago. No desktop publishing application lets you deal with the individual dots drawn on paper by a laser or ink-jet printer. As all software follows this trend, Smalltalk will also do it. I'm doing in Smalltalk because, to me, it is the best tool for any programming.

CS: What benefits could the scalable user interface give us?
JV: Independence of pixel resolution. Applications that look almost the same on a 72 dpi screen or a 300 dpi screen. (Printers have done this for over 20 years!) The ability to make a gui look bigger or smaller to fit our individual taste, while maintaining very high visual quality.

CS: You said that it couldn't be hard to integrate Morphic 2 with Morphic 3, you could use them at the same time or you will have to change a configuration?
JV: I said that the Morphic 3 rendering engine could be adapted for Morphic 2 rather easily. That would give better visual quality to Morphic 2, but it won't make it a ZUI. May be Morphic 3 morphs could also be used in a Morphic 2 world. Not sure about that.

CS: If new primitives must be added to the VM then the portability will be affected?
JV: This has no relation to Cuis or Morphic 3, right? I'm not adding new primitives to the VM! In general, the answer to your question is that it depends on the primitives. If they are properly written, that should not affect portability.

CS: You said that Squeak and Pharo don't follow Dan Ingalls's ideas expressed in the Design Principles paper, in that line, what do you think about SqueakNOS for example? Do you think that we should go back to the roots?
JV: I think that SqueakNOS doesn't follow "Design Principles". Especially when Dan says "Operating System: something that should not exist"! WRT "go back to the roots", I think it is a bit silly to declare Dan one of our biggest heroes and maintain a system that is bloated and convoluted for no good reason.

CS: You said that MVC is obsolete and Morphic represents a new era but what do you think of HTML and that the whole IT world is looking for web-based applications?
JV: MVC was obsoleted by Morphic over 20 years ago, when Morphic was written in Self. WRT my opinion about HTML and web-apps, listen to any talk by Alan Kay (for example http://softwareengineering.vazexqi.com/2009/10/22/how-complex-is-personal-computing---by-the-fine-folks-from-vpri), or check the Lively Kernel by Dan Ingalls.

CS: So, if we sum Cuis and Morphic 3, we can say that you're looking for a clean Smalltalk that could be simpler to understand for everyone? 
JV: Yes, indeed.

If I said ... Would you answer
Sports?
Soccer. Motorcycle racing.
Food?
Food, as a cultural artifact, from all over the world is interesting.
Computer brand?
Anyone, as long as it can run Squeak (better if small and silent).
Operative system?
Anyone, as long as it can run Squeak (and it doesn't crash too often).
Mobile Phone?
None is best.
City?
Paris
Book?
Ficciones (Fictions) by Jorge Luis Borges.
Film?
American Beauty
A Music Album?
"Kill Gil" by Charly García and "Genesis for 2 grand pianos".
TV Series ?
Two and a half men.
Magazine?
Scientific American.
Car?
Mercedes Unimog (not exactly a car!)
Open Source?
Yes, please.

June 20, 2009

Gerardo Richarte, Hacking & No Operative Systems


Gerardo Richarte is a well know smalltalker in the community. He has contributed with a lot of interesting works, one of the most interesting and famous is SqueakNOS project and he has been working in computer security for many years.

CS: You work for a company that has a history between hackers, security and other very interesting stuff. Where does Squeak fits in that puzzle?

Not much... sadly. A few years ago, when we were starting developing what is now our main product, we had to decide what VM based language we were going to use and Luciano [Notarfrancesco] and I preached for Smalltalk. Actually, the first prototype of what now is part of the product, was implemented in Squeak (and assembly), and it did work quite well, but we later decided to reimplement it in C++ and chose python as VM based language. I think that if ruby had had been big at the time we would have chosen it. We dropped Smalltalk early, pretty much because we wanted to create a framework and development environment, and we feared how well it could be accepted by the security community if they had to learn Smalltalk to use it.
At some other time we started actually developing a full product in Squeak (CORE WISDOM) but although it was sold at least once and we love it and consider it was ground breaking in the security visualization area, it pretty much fell into oblivion. You can still download it and cry with us for a big loss...
In any case, I still think and hope there's a space for Smalltalk at Core, because I truly believe Smalltalk helps you understand things from a very rich and interesting point of view.

CS: How was your first approach to the Smalltalk culture?

Leandro [Caniglia] was the one who definitively introduced me to Smalltalk and the joy of it. It was back in 1997, when I was a mathematician wannabe at the Universidad de Buenos Aires, and he was a professor there. He'd put together a wonderful course entitled "Mathematical Objects in Smalltalk", that's where the MathMorphs team was born, and where lots of great ideas originally came from (http://mate.dm.uba.ar/~caniglia/mathMorphs.html). Squeak was very new at the time, and we started using some version of Digitalk Smalltalk, but we very quickly switched to the younger and incredibly active Squeak, after Luciano [Notarfrancesco] came one day with the news that the Original Team was giving birth to a new son (or daughter maybe).
My first approach to Smalltalk was fun and happy, inspiring and creative. Smalltalk made me feel again what I had felt with a few other programming styles, it slowly settled in, it absolutely changed my way of approaching computing, and the world. Relationships between things, how they are defined by the way they interface with the world, how they talk to each other, that's how everything goes, the language may vary, Messages, in any level of communication, are of the at most importance.

CS: Richie, You have been working behind the SqueakNOS project for several years now. Could you tell us a little about the history behind the project?

Sure, I like to remember the first day, when four of us (Luciano, Leandro, Valeria [Murgia], Andrés [Valloud] and me) where in Mar del Plata, in a Smalltalk conference. All of us had a history doing Assembly and low level stuff, and we started playing with the idea of doing an OS in Smalltalk.
I think it was when we were experimenting with Celeste (http://wiki.squeak.org/squeak/1467) as mail reader, and we really just wanted to bring everything into the Image, and make everything else disappear. We started approaching the idea, until one of us actually said "it's possible, I think we can do it!"... and we went back home.
At the time we used to do the SqueakNicks, and in the next weekend we got together after the conference, a couple of us just brought a working
first booting version of SqueakNOS... it was just amazing! We actually did it!
On the technical side, this first version was a big hack, a stripped down interpreter, based on a headless version of Squeak, using a mini.image, we probably had no keyboard and no graphics, but it was starting to interpret, and #startUp actually worked and printed "Hello from Squeak!" on the text screen... it was all a feat! :)

CS: How could the Smalltalk community help you to leverage this project to the next phase?

It already did, our work is absolutely standing on the shoulders of giants, we just wrapped it in a different package, and gave it a twist and a nice bow. Also all the happy faces we saw last year at the ESUG, and all the encouraging words I've got before, the random encounter with two squeakers at a security conference who actually were waiting for SqueakNOS to be usable, everything helped a lot, and each time gave us a kind push forward.
And then, of course, there's a huge lot to do and experiment. From simple things to big things... it's kind of weird, but we truly feel alone, although lots of people would like to see SqueakNOS working. Maybe everybody thinks it's complicated to help, but it truly is not.
Support for more hardware is of course needed, and the harder part of doing it is getting the right documentation, because after that, it's just a matter of translating it into Smalltalk... no assembly or C is required for anything, at least not until you want to go deeper.
Then, the networking part is very important too. Luciano has made and incredibly legible TCP/IP implementation, and although we think it's complete, we can't call victory until it's tested further: it needs testing, and it can be in a regular Squeak, if it really makes any difference.
Then we also need to plug this TCP/IP implementation to Squeak's sockets, but then, it already has some sort of streams, so it's just a matter of making the interfaces correctly tessellate.
What else? oh, of course we could try to port it to other platforms (PowerPC? ARM? bare FPGAs? XO/OLPC?) And of course there are lots of ideas and plenty of room for experimentation!

CS: What are the plans for the future?

Plans? oh, of course, rule the world! What else? heh, no seriously: change the world :-)
This is just an experiment, we dream of producing something actually useful, but during the last ESUG (2008), when we were back into it, we started dreaming awake and plotting for making SqueakNOS the main OS in the XO/OLPC, we just couldn't stop repeating to everybody who bumped into us "Can you imagine what could happen if you put this in the OLPC and kids, at least some, started discovering they could completely understand and change ALL the software in their computers? What could happen if they started seeing, for example, the ProcessScheduler as a little bit more complex eToys activity? How would anything built by this kids look like?! it would truly be amazing, it could truly change the world!!!" wow, sorry, I just got exited again...
So yes, we actually do still plan to change the world, it's only we are preparing to jump :-)
Oh, you meant more real plans? Personally I would like to see, and work, on trying to put SqueakNOS on bare hardware. Quite a significant number of people from the hardware world approached me saying they'd like to try SqueakNOS on their own hardware systems, and I'd love to give it a try. And truly, no kidding, I would also like to see it working on the OLPC, with a complete OLPC system on top of it... just to see if we could convince "someone" to actually give it a real try with kids.
But well... you know, we've only get one life at a time, all this could only be possible if a good bunch of us seriously get together and contribute... even the smallest contribution is more than no contribution, right? :-)

April 3, 2009

Interview with Gabriel Honoré, the creator of a Commodore 64 emulator in Smalltalk

In the second edition of Smalltalks, the Argentinean Smalltalk congress, he presented a Commodore 64 emulator. The talk was the most voted by the public and, as the result, he won the historical Byte magazine issue. In this interview, he answered some questions about his motivations and future plans.

CS: Gabriel, tell a little about your background
GH: My name is Gabriel Honoré, I'm 24 and I live in Buenos Aires, Argentina. I'm studying Computer Science at the University of Buenos Aires, and I work as a game developer.
Since I was a child I developed a special interest for computers. The first computer I used was a Commodore 64 that belonged to my brother. I remember how much I enjoyed playing its games. In the meantime, I found out that I could use a computer to make programs, and since then, programming became one of my favorite hobbies.
When my parents bought me my first IBM compatible I learnt new programming languages. Eventually, I discovered the demoscene and immediately became interested in computer graphics and low level programming.
During my studies in the university I realized that I was also very interested in other things I hadn't investigated previously in depth, such as computer architecture and software development using the object paradigm.

CS: How did you start with Smalltalk?
GH: The first time I heard about Smalltalk was in one of the subjects I attended, called Paradigms of Programming Languages. The last classes corresponded to the object paradigm, and to show the concepts behind it, my teachers used Smalltalk.
What was my first impression? Well, first I was amazed with the keyword messages; I had never read such a clear code! The "everything is an object" concept resulted quite natural and at the same time, made me feel curious. Afterwards, we went over some of the other language features such as late binding and its dynamic typing system.
All those language features along with those of the object paradigm awoke a spark in me that led me to decide to attend two subjects about the paradigm. In those subjects I learnt in detail what the paradigm was about, along with Smalltalk. I found out that Smalltalk was more than a programming language and I came to know its other virtues such as its excellent dynamic environment, its free access to all the system objects, the persistence of objects and the non-distinction between a development time and an execution time, just to name a few.
Since that moment, all my personal projects started to be done in Smalltalk. And where I can't use Smalltalk, I try to apply its principles!

CS: Why did you decide to build a Commodore 64 emulator?
GH: Nostalgia was a determining factor. The Commodore 64 was the first computer I had at home, and as a child, I spent hours and hours in front of the TV writing my own programs or copying them from books and magazines.
From that moment on, I've been interested in everything that concerns that computer; you will be surprised to know the amount of software and hardware projects that are being developed for the C64 after such a long time!
On the other hand, my interest in the object paradigm and the discovery of Smalltalk awoke in me the desire of making a relatively big project involving them.
There were other things that motivated me to start with this project. For example, I realized that almost every emulator was written in statically typed languages and just a few in dynamically typed ones (actually, I found just one, written in Python). Also, very few of them were developed based on the object paradigm, and the ones that did failed at identifying unrelated entities and giving each one a different object in the model.
All this things made me wonder: Could it be done? Could I make an emulator in Smalltalk that works at full-speed, can run the majority of the games available, and at the same time has a good object oriented software model? Would I have to sacrifice a good model in order to obtain a reasonable performance?
Making a C64 emulator in Smalltalk meant a big challenge, a lot of fun and a huge satisfaction as I knew I would be joining two things that I like a lot: the C64, and software modeling using the object paradigm.

CS: What were the most difficult parts to resolve in an emulator?
GH: The most difficult part is to achieve a good and clean design, while at the same time working out specific problems of the software domain, such as performance.
This is especially true when it comes to the modeling of hardware components, because an isomorphic representation in software usually requires high computation power. A lot of times, the available solutions to reduce this negative impact imply changing the software model in a way that it doesn't work exactly like the real counterparts anymore, making the model poorer.

CS: What is the conclusion after the experience?
GH:It was a very great experience! As regards the emulator, I could achieve all the objectives I set myself. The result was a functional emulator with a high level of compatibility and a reasonable performance, while keeping a clear and simple model, and with many concepts being reified.
Personally, I had a lot of fun during this project. I acquired greater knowledge about computer architecture, and I learnt a lot about how sound works (something I felt always curious about). I kept discovering more about Smalltalk and I improved my skills to model with objects.
As a bonus, my thesis director offered me to make a thesis based on my C64 project. Afterwards, my lecture at Smalltalks 2008 showed me that people also liked it. What more can I ask for!

CS: A Commodore 64 emulator and Smalltalk could be, for a lot of trendy IT Colleges, like a couple of things from the past. How do you feel about the trendy market of today?
GH: I don't think it is a healthy decision to define the choice of a programming language, or a development environment, exclusively because it is a tendency. Needs are not the same for everyone, and different development languages/environments tend to solve different needs.
I think the decision has to be made with the improvement of productivity in mind, allowing software developers to only worry about creating good software, and not to waste time dealing with technical issues of the language or the environment they use.
Smalltalk is a system that was thought with productivity in mind; we can see that, for instance, in the excellent level of its tools, its dynamism, its capabilities to be extended and adapted to any context, and its high fidelity to the object paradigm.

CS: What are your future plans?
GH: Within a short time I will intend to develop a framework that makes easier the development of emulators for all kinds of old computers and consoles. Once that is finished, I'd like to develop at least one more emulator that uses it. A NES console Nintendo Entertainment System and other Commodore computers are possible candidates.
I also want to publish my C64 emulator, for free, even though I would like to add first some features that I consider important and that are lacking now.

October 29, 2008

Interview to the Argentinean Smalltalk organization committee

The Argentinean Smalltalk congress has its second edition this year, and we interviewed the organizers. The key people to get this congress going on are Leandro Caniglia (LC), Andrés Valloud (AV), Hernán Wilkinson (HW), Andrés Fortier (AF) and Gonzalo Zabala among other well known people in the Smalltalk community who help them. 

How was the idea to organize a Smalltalk congress in Argentina born?

LC: When attending ESUG 2007 last year I suddenly realized that we had to do something similar in Argentina. I was just starting to consider that possibility myself when Stefan Ducasse came and told me exactly this: "you guys should organize a conference in Argentina". It became crystal clear to me that the time to do that had finally arrived.

More profoundly, I see the Smalltalks conferences as a new stage in the history of Smalltalk in our country: The first one started in the old days when Gustavo Rosi introduced Smalltalk in the University of La Plata. Years later we had the SUGAR crusade that spread the Smalltalk enthusiasm irradiated by the Squeak project. Then we had a rather introverted period where real Smalltalk jobs started to be offered and more opportunities to use Smalltalk emerged. All that evolution that took two decades made it possible for many local smalltalkers to grow up as professionals and, in some cases, to acquire international notoriety. The maturity achieved today is so visible that we abandoned our contemplative stance and started to be proactive actors of the international community. Because of these reasons, I don't see the 2007 and 2008 conferences of as a new venture but as the logical result of the irresistible appeal that Smalltalk had always had on Argentinean programmers.

AV: In some regards it was an accident. While in Argentina during in May of 2007, Leandro and myself had talked about building a conference like ESUG for Argentina, with the idea to do the real thing in 2009 or so once we had enough practice. I suggested we should do a draft conference first, so we thought about doing something in 2008. Later in the year, in the last few days of September, I spoke with Hernan Wilkinson and commented that some people were trying to do something. He was very enthusiastic, and once we saw we could have room at UBA things started happening very quickly. Andrés Fortier got invited to the organizing committee. It continued to snowball and that's how we had Smalltalks 2007 in the first days of December.

HW: From my point of view, all started when Andres told me via chat about people wanting to do a Smalltalk conference in Argentina... after a while I realized that those people were Leandro and him! I always wanted to do something like that but had never had the time neither the support to do it. I still do not have the time but hey, it is like in software development, there is never enough time to do what you want to do. But last year Andres and Leandro wanted also to do a conference and then Andres Fortier joined the team so we were a group of people that could share the responsibilities and duties. It became a great group really fast! We could solve the differences without problem; we decided how we would like the conference to be, etc. There was a great synergy among us. It also helped that the Computer Department of the FCEyN at UBA gave us all we needed for the conference to be possible. It was an exciting time and at least I could fulfill a dream I used to have. Here are some of the lines of a chat that was the kick-off of the congress:

4:02 PM Andres: que tal? todo bien? (How are you? is everything fine?)
4:03 PM me: todo bien. vos? (everything is fine. And you?)
4:03 PM Andres: tenia curiosidad... anduvo circulando la idea de hacer una miniconferencia de Smalltalk en Buenos Aires este diciembre, te interesa? (I was curious... there is an idea to hold a mini-conference of Smalltalk in Buenos Aires this December, are you interested?)
4:04 PM me: estaria muy bueno! yo hace rato que vengo pensando en una cosa así pero no tengo tiempo... (it would be great!, I have been thinking about something like that but I do not have time..) que estas pensando? (what are you thinking about?)
4:04 PM Andres: por ahora no hay nada en concreto... 1 solo track, asi todos pueden ver todo (right now there is nothing real... just 1 track, so everybody can see everything)
4:05 PM me: si, algo tipo esug... (yes, something like esug...)
4:06 PM Andres: si, algo asi (yes, something like that)
4:06 PM me: dame un segundo... (give me one second...)
4:06 PM Andres: ok... 0... 1...

What was the first repercussion among your university colleagues and private companies?

AV: We had very good feedback in our survey at the end of the conference. Also, organizations such as ESUG and GemStone were very positive in their comments.

AF: Here at the university we had good news seeing that Smalltalk was getting attention again. I'm particularly very happy about last year's result and for the support from my colleagues who also helped us in different areas.

HW: The question is kind of ambiguous, which is great! Because AV answered the repercussion after the conference, I'll concentrate on the repercussion before the conference, after the announcement.
As soon as we sent the email to the lists (Smalltalk lists, universities, programming groups, etc.) we got great feedback. We started to receive mails telling us that it was a great idea, that it was about time to have a Smalltalk conference in Argentina, etc. The repercussion was bigger than expected. In our first talks, when laying the groundwork of the conference, the idea was to have a one day conference, with no more that 40 to 50 people and with 8 or 10 talks, no more than that, but the response of the Smalltalk community was amazing. Everybody wanted to participate, everybody wanted to show what they were doing. I think it was the foundation of the conference that made it possible. We did not ask for really formal papers (like in research), we just asked the presenters to send a few lines about the topic they wanted to show and stressed the idea that we wanted everybody to participate. That I think, gave the presenters the courage to participate and it was a big surprise and really rewarding to see the kind of talks we had with the technical level they had.
So, I feel that the repercussion was more than we expected, that the Smalltalk community in Argentina needed something like that... it was just great.

LC: The repercussion surpassed our expectations, and its echoes are still audible. Andrés and I could confirm that in Smalltalk Solutions and ESUG 2008, where the interest in Argentina was very visible. In the local arena we are seeing new Smalltalk projects in companies that don't have a Smalltalk tradition, as well as foreign corporations keeping an eye on Argentinean human resources.

HW: I think that the international Smalltalk community was shocked by the outcome of the conference. I do not recall a Smalltalk conference with that many people. So I think this sends a message to the world: "In Argentina the Smalltalk community is big". Now we have to demonstrate that it is a good one from the technical point of view.
Going back to your question, we had really important support from international companies like Cincom, Instantiations and GemStone and from Smalltalk organizations like ESUG. The support that ESUG gave us was great! They sent us books and dvds to give away to the attendees. I think that that paid off... Look at the number of Argentine participants in the ESUG's Innovation Award, that is not just a coincidence, it is the result of the support we got from ESUG last year.
GemStone was a big player too. They sent James Foster to give a talk and a one day tutorial on GLASS, which was great also.
So, I feel that the Smalltalk community in Argentina is getting more attention from the international community, maybe not from the economic point of view because Argentina's economy is not as big as that of Europe or the US, but as source of good technical skills and ideas.

How is the congress financed? We know that registration to other conferences is quite expensive but this one is free.

LC: Very little money is required to grant everybody access to real knowledge, especially in a country with a solid tradition of public education. Funding is only crucial when friends are scarce. Fortunately, that's not our case and several companies and institutions are supporting this initiative. In 2007 we had the privilege of using the facilities of FCEyN for free and this year the UAI will host the conference at no charge. Money is not a problem when you are highly motivated by a broad audience.

AV: This was one of our goals from the beginning. I remember that LC was quite adamant that it should be free.

AF: As AV says, LC always said that the conference should be free and I think that it is great to be able to do it that way. As this year's conference, Smalltalks 2007 was possible thanks to all the sponsors that supported the event.

HW: Yes, it is like AV says. We wanted the conference to be free but we had concerns about it. LC pushed that idea really hard, and as in many other decisions he was "right on the money". The fact that the conference was free allowed more people to come and participate, and I think it goes hand by hand with the type of education that the four of us had, which is a public-free education. So, in some sense I felt I was returning to the people of our country what they gave us, the possibility of a good graduate education and I'm really happy with that. This is something we should not change while possible. Our goal is not to make money out of this, our goal is to promote a better way of programming, a better way of doing things in our profession and we believe Smalltalk is a good way to do that.

Today, what is the balance of the first congress and what are the motivations for the future?

LC: We have many concrete objectives for the short and long term. For instance, we want to encourage organizations to take advantage of Smalltalk for teaching and learning concepts that are crucial in Computer Science, so we organize the conferences in educational institutions. We want to encourage professionals to rediscover the joy of programming, and that's why we introduced a challenging coding contest this year. We want to provide developers with a forum for fruitful discussion, a place where those that had worked hard can proudly present their achievements, so we carefully select the best submissions we receive for the presentations. We want to facilitate the communication with the rest of the world and that's why we invite international speakers and, in turn, attend international conferences trying to involve well known Smalltalkers with our activities. Above all these goals there is the decision to start building something for the future. We are creating a non-profit foundation that will allow us to help the Smalltalk community to develop itself more efficiently. Unlike other professional associations our idea is to create a foundation because we don't want to restrict our support to the members of a club, but to the community as a whole.

HW: From my point of view, and as I said before, the balance is more than positive. The congress surpassed all our expectations, the feedback we had was great and we already had good feedback about doing it again this year. We achieved more than we expected and that gave us the "means" to continue. I think the motivations for the future include the same ones we had from the first time, but also include our desire to make the conference more "international". We would like more people from outside to come, but we know it is not easy because there are already two Smalltalk conferences (Smalltalk Solutions and ESUG) and we do not want to compete with them, on the contrary we want be part of the same goal. The language is another problem of making the conference international. It is not going to be easy for all the Argentine presenters to give their talks in English. I would be more than happy if we can bring well known people of the Smalltalk Community to give a talk in the conference, that would be the "heaven" for me.

What can we expect from the second edition?

AV: Perhaps it is easier to state what are our own expectations, and I'd like to share one of mine. I have been very lucky in that I have had the opportunity to learn from really talented people. Not everybody has that chance. So, something I would like our conferences (and now the foundation as well) to provide is a context in which it is possible to share what we know with each other so that we can move forward into the future.

LC: The second edition will confirm that the annual Argentinean conference has continuity. That will give authors that did not present their work last year a good reason to do that this time. Moreover, it will install in the conscious of all Smalltalkers that the event will come back next year. This is the constructive character that I mentioned before; people and companies will know that they are not alone and that starting a Smalltalk project is not a risky bet but a wise decision.

HW: I think it will be as good as last year's conference and maybe better from the technical point of view. I have no doubt that there are going to be really good presentations. We will have people from GemStone, for example, that will talk about their experience with Smalltalk, we will have the coding contest that will provide a new track we did not have last year, etc. I believe it is going to be a really good conference. This year we plan the conference to have three days from the beginning, last year we planned one day and finally took three. Although I'm very optimistic about this year I'm not sure we will get as many people as we got last year. I think that the conference last year was like an "explosion", it was something new and everybody wanted to participate. I'm not sure what is going to happen this year about the number of attendees. Although there are already 130+ people registered, my guess is that this year it is going to be difficult to pass the 300 registrations we got last year. I would be very happy if we could match that number of registrations. But do not get me wrong, I'm not disappointing with this, I think it is "business as usual" and we are working really hard to get an attractive schedule and I think we will get one.

How many people are working behind the organization?

AV: The organizing committee is the same one as in Smalltalks 2007, with the addition of Gonzalo Zabala who is managing the venue for this year. We would like to thank Gonzalo and the UIA for their generous offer to host the conference for free.

HW: As Andres says, we are 5 people working on it.

The last edition of ESUG was a record. Do you think that this congress can repeat this success?

AV: While I was at ESUG, I got a question from one of the organizers. Perhaps with a bit of disbelief and amazement, it was phrased along these lines:
"This year we have about 170 people at ESUG, and we literally sold out. But you guys had 300 registrations last year, in your first year, and in a single country! How is that possible?"
Perhaps the answer to that is in some of the cultural idiosyncrasies of Argentina. I'd say that as long as we satisfy these needs, the conference will do well. Of course we would be very happy if each year we doubled the assistance, but on the other hand we would have a big problem in a few years :).

HW: Well I guess I kind of answered that in part before. Although I think it is going to be difficult to get 300 people again, I might be wrong. But I would not measure the success of the conference only from the number of registrations, I think it is important to measure the number of presentations and the quality of them, and here I'm sure we will get the same success or maybe more than last year.

About Smalltalk

In the last year, there has been a steady growth in the amount of Smalltalk projects in Argentina. In your opinion, what could be the reasons and motivation of this growth, when in the whole world there are a lot of projects based on the trendy languages?


AV: I think this is also related to the cultural background of Argentina. Note that I moved to the US 8 years ago, so maybe this is my idealized rationalization of what is going on. But, while I would say there is a certain amount of people who go with what is most popular, I also remember an environment in which exploration and a desire for more transcendental work is rewarded. Smalltalk is an ideal complement for this.

HW: Well, I think there are many reasons. Some of them I can think of are:
  1. The importance that dynamically typed languages are gaining around the world. With Ruby, Python and the like, programmers are starting to realize that dynamic typing was not so bad after all, on the contrary, it has many advantages over static typing. So, smart people, people that care about creating good software beyond what tools the "market" imposes, is starting to think "hey, these Smalltalk guys have been saying this for a long time... let see what other things Smalltalk has..."
  2. There is an important group of people that have been pushing and teaching Smalltalk for quite a long time, no matter what technology is the "hottest" one. I believe that it is paying off... I know people that have been teaching Smalltalk for more that 15 years already! That's quite a long time in "computer technology" terms. So, I believe this is another reason of the importance of Smalltalk in Argentina, the education.
  3. Another reason is, I believe, the fact that there are companies in Argentina that work with Smalltalk and have been doing it for a while. So this is an indication that working with Smalltalk cannot be that bad after all.
  4. I think there is a "cultural" reason also. In Argentina we have some kind of "revolutionary" trait; we do not get along with standards so easily. I'm not saying this is good or bad, it is just a way of being. This helps when people have "to go against the flow", and working with Smalltalk is like going against the flow of technology.

Anyway, those are some reasons I can think of right now.

Nowadays, we can see a lot of new languages based on Smalltalk like Ruby, Python but what are the major misunderstandings in the IT industry about Smalltalk? Why do all those companies prefer new languages that maybe aren't so mature instead of a more evolved environment like Smalltalk?


AV: To some extent, I'd say that it is a reflection of the availability of developers. It is here where I think the root of this phenomenon hides. Basically, there is something exciting about going in a new language. Having been there, I think that there is this feeling of most people being basically on the same skill level --- clearly this must be so because for a new language you will not find developers with decades of experience. Also, since the language is new, most of the technical issues that are visible will be the ones that have been solved over and over again in the last 30 years or so. This also means that most problems have a clear solution path, and that to some degree it will be relatively easy to find developers knowledgeable enough to reimplement a known solution in this new language. So at first there seems to be vibrant, unstoppable progress, and this attracts more people. Eventually, however, the more fundamental issues become more apparent. This is when a new language is launched to start the process all over again, in the name of addressing the hard problem.
Note that in the same way that Smalltalk would not be considered trendy because it is not taught to most people in colleges for example, I'd venture that neither is C even though nobody could deny its relevance. Rather, I'd say that most developers are taught Java or something like that. In as much as we go for the apparently easy stuff, we continue to neglect the difficult problems.
Carl Sagan once said that our value is in the courage of our questions and the depth of our answers. Knuth recently complained because he sees rampant one-upmanship in computer science research. To me, what happens in computer languages is just an illustration of their keen observations, and it goes back to our goals for the conference and the FAST foundation.

HW: Well, I think AV put it very clear. We live in a "pop culture" in which "new" is believed to mean "better", and Smalltalk is "old", so why use it? When people are faced with Smalltalk for the first time they ask me, "can you do a web app with it? can you connect to a relational database? can you parse an XML document?". All of these are technical questions, they do not care about the "essentials" of programming, of having a good model, of being able to develop an app in a short time, in getting feedback of your changes immediately, etc., they just care about technology because that is what they have been taught. They think Smalltalk is not prepared because it is old and new technology has appeared. Of course, they do not know if this "new technology" is better or not, they do not know if Smalltalk was a pioneer in that kind of technology, they are just "pushed" by the market... In some sense it is what some people want education to be. Some people just want graduate students to be prepared for the technology of the moment because they want to sell that technology! And it is better to sell new technology than old technology. It is like fashion, does somebody understand why we have to change our shoes every year? Why do they get out of fashion? There is no reason but a commercial one. So I believe this is one reason (Thank God we still have public-free universities in Argentina where the professors are free to choose the technology they want, they are not pushed by the market of some companies).
Another reason is because Smalltalk is still way ahead of the common languages, it is still revolutionary after almost 30 years! In the beginning of the 90s it was revolutionary because of the VM, the Garbage Collector, etc. and it was not accepted because of that. Java killed that myth by the end of the 90s. Now we are starting to see another revolution regarding dynamically typed languages and it is going to get some time before it gets fully accepted, for this to became true Java has to go through the same thing that happened to C++, some similar language has to kill it (Maybe that language is Ruby...)
But Smalltalk has one more revolutionary characteristic that no other programming environment has, the image. That is the last barrier on the revolution. The image is the big difference, the image is what makes you work with objects in "real time", no difference between compile time and execution time, no files at all, just objects. It is going to be difficult to get out of the "file" world imposed by Unix in the 60s but I think that is the last barrier. When I see people trying to get rid off the Smalltalk image I believe they are wrong, I think they are not truly "Smalltalkers". Which Smalltalker wants to get rid off the image? I know nobody! Is losing the image a good price to pay to be "compatible" with the old Unix style? I think not, at least I do not want to lose the inspector neither the great Smalltalk debugger.
So I believe that there is a long way to go for Smalltalk to get really accepted, before that the "files paradigm" has to come to an end, and this change is going to take a long time because it is not only a change in a programming language but in the whole computer architecture (from operating systems up to the applications), and it may be Smalltalk is not the language that will do it, it may be another language, with another name but with the same object-message-meta-circular-image-model Smalltalk has.

September 10, 2008

Andres Valloud: Maths, virtual machines & books

Andres Valloud was born in Buenos Aires, Argentina. He has been working as Lead technical engineer at Cincom Systems. In this interview he answered some questions about the present in his job at Cincom and some questions about his recently published books.

CS: Andrés, How did you know Smalltalk and what was your first impression?
AV: I first learned about Smalltalk while studying mathematics in college. A math instructor, Leandro Caniglia, had found that I was also programming mathematics related stuff in things like x86 assembler, and he began insisting that I should give Smalltalk a try instead. At first I basically thought "Smalltalk what's that?", and dismissed the suggestion. But eventually he convinced me to go to his place on a Saturday afternoon. We had a 3 hour session. Within an hour I knew all my work had become obsolete. The simplicity of the language was astonishing. All the inconveniences typical of other programming languages were gone and nowhere to be seen. In fact we spent more time thinking about trees and math problems rather than about Smalltalk itself. To me this was unquestionable proof that the language was designed to help people solve problems, as opposed to forcing people to solve programming language problems on top of their original issues.

CS: You have been working in the Smalltalk Industry for a long time and now you are working with virtual machines. How did you end up working on the lowest level of a Smalltalk environment?
AV: I think it has to do with the orientation with which I have gone through challenges in the past, and perhaps a sprinkle of personality traits. From the beginning I didn't feel it was acceptable to take everything at face value, and rather concentrated on figuring out how things fit together as a whole on my own. This was applied to things like x86 assembler, then to Smalltalk, and perhaps the inevitable consequence is that now the process requires knowledge of the VM in order to continue.

CS: What are the constraints when you are working at that VM level? And, what are the usual requirements?
AV: Right now I am working on a VM that runs on 15 or so different platforms. The requirements are that the same source code should compile and run correctly on all of them, and that this implementation must provide the same visible behavior to the image. This turns out to become an unintended constraint, because it is here where you begin to see that standards look great on paper, and yet practice has all sorts of oddball and exceptional cases that must be addressed.

CS: If you have code that run in so many platforms with their particular issues, how is a VM tested before been released?
AV: At Cincom we have a test suite with which we test each interim build we make, on every platform. Also, there are numerous tests that verify that image functionality works as expected. Finally there is also the Cincom Smalltalk developer program, which gives customers access to weekly builds so they can be evaluated in advance.

CS: The VM of VisualWorks has been one of the fastest in the market, what are the secrets behind this VM?
AV: The techniques used are well known. For example, the VisualWorks VM uses a JIT approach to translate Smalltalk methods into native code. These translated methods do not have to abide by the usual C stack calling conventions, and so a lot of stack traffic is eliminated. Some primitives are also translated, and so they do not need the overhead of a C stack frame either. In addition to this, the compiled methods have polymorphic inline caches which for the most part avoid costly method lookups.

CS: If we talk about performance, what are your recommendations and what kind of code should we avoid?
AV: From the point of view of a Smalltalk image, arguably the number one performance offender is ifTrue:ifFalse:. It may not be evident at first sight, and perhaps it may even seem counterintuitive. However, typically what one does with ifTrue:ifFalse: is to do things like this:

anObject hasSomeProperty
ifTrue: [anObject doSomething]
ifFalse: [anObject doSomethingElse]
But how could be ifTrue:ifFalse: be a problem? Most, if not all, Smalltalks heavily optimize ifTrue:ifFalse:, so this does not look like it can be made faster. However, there is a way. The issue here is that the program is making a run time distinction that perhaps could be made a design time. In other words, if we made two classes, one for objects that have some property, and another for objects that do not have some property, then we would be able to rewrite the code above like this:

ObjectWithSomeProperty>>doWhatIsAppropriate
^self doSomething
ObjectWithOtherProperty>>doWhatIsAppropriate
^self doSomethingElse
Once we have these methods, we can simply replace our original ifTrue:ifFalse: with a single line of code
anObject doWhatIsAppropriate
So we have made the ifTrue:ifFalse: disappear. Where did it go? Into a cached message lookup, which in VisualWorks will resolve to a few assembler instructions to check for the class of the receiver in a polymorphic inline cache. In other words, the code will run faster, and in addition it will better express the knowledge available to developers while modeling the problem at hand.
Fast code does not have to be unreadable.

CS: If someone wants to start learning about Smalltalk's virtual machines, which books and resources would you recommend to start looking at?
AV: Personally I have found several loose resources to be useful. For example, there are presentations by people like Eliot Miranda which are available on the web. Furthermore, there are published papers that describe things like polymorphic inline caches and so on, particularly the Self papers such as the one here: http://research.sun.com/self/papers/pics.html.

CS: You wrote a book about hashing. Could you explain us what is the importance of the hashing in ourdaily work over a Smalltalk environment?
AV: Hashing is a technique to handle large amounts of data which offers O(1) access time regardless of the size of the data set. In today's world of increasingly large amounts of data that applications must handle, hashing becomes very attractive because of its O(1) behavior characteristics. Consider for example the need to detect duplicate objects. One could keep a sorted list of the unique ones seen so far, and then use binary search to determine whether any object should be added to the list or classified as a duplicate. While this could be reasonably fast for moderately sized data sets, hashing can do this in constant time for each object tested, and keep doing so regardless of the number of objects seen so far. Note that sorting is not necessary either. Compared to the sorted collection approach, hashing scales significantly better and will also execute the task in considerably less time

CS: You have written a mentoring book about Smalltalk, could you tell us a little about the motivation behind this book and who should read it?
AV: Some of us are lucky to be mentored, but most of us will not have that opportunity because there are not many mentors in the first place. My main motivation was to write down things that I have learned from my mentors, to remove the luck factor in having access to this kind of material. I have found this knowledge invaluable, so I hope it proves useful to others too.

If I said ... Would you answer

Sports?
Soccer.
Food?
I have very few dislikes, and I enjoy a variety of different cuisines from all around the world.
Computer brand?
Mac
Operative system?
*nix, Mac OS/X.
Mobile Phone?
As simple as possible.
City?
Portland, Oregon, Yosemite National Park / Mammoth Lakes, no country of preference so far.
Book?
Concrete Mathematics, by Graham, Knuth and Patashnik
Film?
Akira Kurosawa's Dreams
TV Series?
I don't watch TV anymore :).
Magazine?
None.
Car?
Honda.
Open Source?
I have no strong preference one way or the other. To me, the interesting distinction is whether software is either useful or not, where its usefulness also depends on the licenses attached to it.

August 15, 2008

Interview with Luca Bruno, the creator of Smalltalk YX

Luca Bruno is the mind behind the Smalltalk YX, a new free environment in the Smalltalk's world. He born the 27th august of 1988 in Paola, Italy. After discovering his work, we want to know more about Luca and his motivations. He accepted to answer some questions.

CS: How did you know Smalltalk?
LB: Well, I like to see new technologies and perhaps new programming languages. So I first looked for the IO programming language. I liked very much the prototype paradigm. I then opened the about page and discovered that it was inspired by Smalltalk. It's been a couple of years ago.
CS: Which was your first Smalltalk?
LB: My first Smalltalk version I've used was Squeak.
CS: What was your first impression?
LB: My first impression was made by a few questions to myself: is this language useful? why has it its own graphical environment? Why isn't such elegant and powerful language is more known to programmers and used in the world?Well all these questions have been answered themselves with the time being.
When I've used Squeak the first time, I didn't reopen it for at least a couple of week because I didn't like it very much. After I reopened it and I've gone through reading the class library in the browser and writing some simple programs: it has impressed me then.
CS: Are you developing with Smalltalk?
LB: No I'm not developing with Smalltalk. There's no good environment yet to create my applications on. I've maintained SqueakGtk for a long time but I haven't created any application with it. There are several reason why I hadn't. The most important one for me is that there's no good GUI environment around, or the ones good don't have the expected VM/flexible image management.
I'm now developing Smalltalk YX to create the most open general purpose language and hopefully create my applications with it, it's my dream.
CS: Why did you decided to choose Smalltalk?
LB: I choose Smalltalk because I like it, it's coherent, powerful, elegant, innovative, easy, well-structured, easy to debug, hard to create bad OOP usage. You can make what you want with Smalltalk. It's awesome how with a few syntax rules you can write good-reading and well-structured programs.
CS: Why do you think Smalltalk is not popular?
LB: It's popular, but not for a general purpose view point. Lots of companies are using it, and many experiments are done with it. Its technology is more used for particular environments instead.
Another issue is the image. Developers are afraid of it, and that's normal. Using the filesystem is more secure than using a single file for everything. Starting from the compatibility ending up with the stability.
Another serious serious _serious_ problem is: lack of demonstrating applications. Do you see any widely used applications running on users' desktop? I don't, that's a problem. It's not the lack of libraries like many people say, if you create applications using non-internal libraries programmers will see that's possible to "create" with Smalltalk.
What I want to do with Syx is to invest creating desktop and web applications, that's much more than marketing, books, etc. IMHO.
CS: What do you think Smalltalk has and the other tools doesn't have?
LB: Smalltalk has the "ability" to let you write your applications the good OO way, other tools don't. Smalltalk has the "ability" to make your applications flexible and maintainable more than any other tools. It's not what Smalltalk offers, it's what Smalltalk is.
CS: What tools do you recommend to work?
LB: In Smalltalk? Actually only seaside.

If I said ... Would you answer
Sports?
I usually play billiards (8 ball), beach volley, tennis and table tennis. I don't follow sport on the TV so much.
Music?
Rock/metal old style music is needed while programming.
Food?
Everything made in Calabria the natural way.
Computer brand?
Compaq AMD64
Operative system?
I've several partitions on my HD, I currently use Microsoft Windows XP and Debian GNU/Linux lenny/sid.
Mobile Phone?
Nokia 3220
City?
I live in Longobardi, a very very small city with lots of green, mountains and a clean sea. Though there're no people in winter I like it.
Film?
I like war films, also japanese and chinese like "The last Samurai".
Magazine?
I don't read any magazine but my RSS feeds.
Open Source?
GNOME/GTK+/Glib