Tag Archives: presentation

My presentations at “Summer School on Languages and Applications”, Bolivia 2014

A few months ago, I was invited to give some talks at “Summer School on Languages and Applications” in Bolivia. I offered several topics I was able to talk about and 3 of them were chosen. The target of the presentations were mostly university students who haven’t seen Smalltalk never before. So my presentations tried to be as friendly as possible for that public.

The presentations were:

Web Development with Smalltalk: This talk was actually mostly about Seaside, but I also gave a very short intro to Smalltalk and, at the end, showed a bit of Amber. Besides the slides, I showed some simple demos. In addition, at the end of the talk, I showed  the financial commercial application we are developing for a client and a video about the great Yesplan.

Smalltalk and Business:  I gave a quick overview of the Smalltalk advantages but from the enterprise point of view. I also talked quite a bit about Pharo (and why a strong open source dialect would matter), its Association and Consortium and all community related stuff. Finally, I explained a little bit about GemStone and Seaside and how the combination of all that ends on what is the stack of frameworks I enjoy the most these days.

Marea: Application-Level Virtual Memory for Object-Oriented Systems: This talk was very similar to the one of my PhD defense… but I tried to explain it a bit simpler (and I removed/skipped some slides).

The general feedback I received was positive and what I found is that most of the people were surprised that one could do web apps and real business with Smalltalk. Most students seem curious and wanting to learn more.

Everybody treat us very well. Everywhere.  In the street, in a restaurant, in the university, in the hotel, etc. The people were very gentle and respectful. We even had time to do some tourism:

visit to Saint Peter Hill

So…. in general, it was a very good experience and I really enjoyed my time there.


Dr. Mariano Martinez Peck :)

Hi guys. Last Monday 29th of October, I did my PhD defense and everything went well (mention très honorable!) so I am now officially a doctor 🙂  My presentation was 45 mins long and I liked how it went. Have you ever wondered why I was involved in Fuel serializer, Ghost proxies, VM hacking, Moose’ DistributionMaps, databases, etc? If so, you can see the slides of my presentation here. Notice that there  lots of slides and this is because I have several animations and each intermediate step is a new slide in a pdf.

After my presentation, the jury had time to ask me any questions they had and give feedback. Lots of interesting questions and discussions came from there. After a private discussion between the members of the jury,  the president read my defense report and we followed with a cocktail with drinks and snacks.

The presentation was recorded (thanks Santi and Anthony for taking care) but now I am processing it … I will let you know when this is ready.

The jury was composed by 8 persons, 4 of which were my supervisors:

-Pr. Christophe Dony, Lirmm, Univ. Montpellier, France.
-Pr. Robert Hirschfeld, HPI, Postdam, Germany.
-Dr. Jean-Bernard Stéfani, DR Equipe SARDES, INRIA Grenoble-Rhone-Alpes, France.
-Dr. Roel Wuyts, Principal Scientist at IMEC et Professeur à l’universté catholique de Leuven, Belgium.
-Dr. Stéphane Ducasse, DR Equipe RMod, INRIA Lille Nord Europe, France.
-Dr. Marcus Denker, CR Equipe RMod, INRIA Lille Nord Europe, France.
-Dr. Luc Fabresse,  Ecole des Mines de Douai, Université de Lille Nord de France
-Dr. Noury Bouraqadi,  Ecole des Mines de Douai, Université de Lille Nord de France

So, the PhD has reached its end. Now it is time to move to a different stage.

See you,

Dr. Mariano Martinez Peck 🙂

My PhD defense: “Application-Level Virtual Memory for Object-Oriented Systems”

Hi all. After 3 years of hard work, my “PhD journey” is arriving to an end (which means, among others, that it is now time to search a job again hahaha). The defense will take place on Monday, October 29, 2012 at Mines de Douai, site Lahure, room “Espace Somme”, Douai, France.

After the defense there will be a kind of cocktail with some food and drinks. If you are reading this and you are interested, you are more than invited to come 🙂 Just send me a private email for further details.

The following is the title and abstract of the thesis:

Application-Level Virtual Memory for Object-Oriented Systems

During the execution of object-oriented applications, several millions of objects are created, used and then collected if they are not referenced. Problems appear when objects are unused but cannot be garbage-collected because they are still referenced from other objects. This is an issue because those objects waste primary memory and applications use more primary memory than what they actually need. We claim that relying on operating systems (OS) virtual memory is not always enough since it is completely transparent to applications. The OS cannot take into account the domain and structure of applications. At the same time, applications have no easy way to control nor influence memory management.

In this dissertation, we present Marea, an efficient application-level virtual memory for object-oriented programming languages. Its main goal is to offer the programmer a novel solution to handle application-level memory. Developers can instruct our system to release primary memory by swapping out unused yet referenced objects to secondary memory.

Marea is designed to: 1) save as much memory as possible i.e., the memory used by its infrastructure is minimal compared to the amount of memory released by swapping out unused objects, 2) minimize the runtime overhead i.e., the swapping process is fast enough to avoid slowing down primary computations of applications, and 3) allow the programmer to control or influence the objects to swap.

Besides describing the model and the algorithms behind Marea, we also present our implementation in the Pharo programming language. Our approach has been qualitatively and quantitatively validated. Our experiments and benchmarks on real-world applications show that Marea can reduce the memory footprint between 25% and 40%

My (past) presentations at PharoConf and (future) talk at ESUG 2012

Hi. As usual, I wanted to share with you the slides of my last talks in case you are interested.


Last month I went to the first PharoConf held in Lille, France, and I gave to talks. One was about using the Fuel serializer for several different hacky things 🙂  You can find the slides here but since most of the presentation was a demo, they are almost useless. The videos of the conference are being processed and will be updated soon. I will update this post once they are finished.

The other talk I gave was about building the Pharo Virtual Machine and you can find the slides here. If you are interesting in the topic, you can see all the blog posts I have written about it.

ESUG 2012

Once again, I will be attending and presenting at ESUG (in Ghent, Belgium). This year I will present something similar to the Fuel talk at PharoConf. As you can see in the ESUG schedule, the abstract of my talk says:

Fuel is an open-source general-purpose object serialization framework developed in Pharo. It is fast, extensible and has an object-oriented design. It can serialize not only plain objects, but also closures, contexts, methods, classes, traits, among others.
This presentation will be mostly a demo with only a few slides. I will show the power of Fuel by using it in several scenarios: rebuilding Pharo from a kernel image, exporting/importing Monticello packages, moving a debugger from one image to another one, persisting (and also import/export) Pier kernels, etc.

So…see you at Ghent?

Loading projects and building your own images with Metacello

As I have already said, I presented at Smalltalks 2011 a talk called “Building your own images with Metacello”. I thought it could be interesting to write down the details of such presentation for those who couldn’t attend or those who want to follow what I did.

Background and Motivations

To help the Pharo community I find myself using new tools (even if they are not completely finished), using/fighting with latest versions (a.k.a bleeding edge), finding/reporting/fixing/testing bugs and issues. So…. I am downloading hundred of images every day. An image can last me a maximum of a couple of days.

Apart from that, after 3 years with Squeak/Pharo I have my own preferences/settings which are different from the defaults. In addition, I often use tools which are not present in the standard Pharo image. I am also working in several projects at the same time. So….. I spend a lot of time building my own images.

If I am downloading hundred of images every day, an image can last me a maximum of a couple of days, and I spend a lot of time building my own images, then there is something that it is not working.

Moreover, I am lazy, I don’t like loosing time with it, and my memory is bad. Hence, I have come to the solution that I will show you in this post.

Types of Operations and Softwares

To explain you what I did, I will use an example my own projects and tools.

Types of Operations

When I am working with Pharo, there are usually 2 types of operations I perform with a particular project: load and build.

Load means that I will just load a project or package into the image where I am working. No more than that. This is useful when I am working with a project with a particular image, and I just want to load another one to see something.

Build, however, not only loads the project or package but also builds my own image for that project. What does it mean to build my own image? well, I install all the tools I use that are not present by default in Pharo, I set my personal settings, etc.

Types of software

There are also 2 types of software: own software and external tools.

Own software are all those projects I own or that I contribute. For these projects, I develop, hence I always want to load the very last version of all packages. In the example of this post, there is Fuel, DBXTalk, Marea and Cog.

External tools are those development tools, addons, themes, or whatever I install when I build my own images. Since I don’t develop these tools, I don’t want the very last version of every package, but instead the last “stable” version. In the example, there are TilingWindowManager,  ‘SimpleLogger’, ‘CodeStats’, ‘Glamoroust’, ‘Keymapping’, ‘SandcastlesThemes’, etc.

Metacello part of the solution

If you have used Metacello before, you are used to see classes like ConfigurationOfSeaside, ConfigurationOfDBXTalk, ConfigurationOfFuel, ConfigurationOfMoose, etc. What I propose is to that you create your own ConfigurationOf. In my case, I have ConfigurationOfMariano. If you want to follow the post watching the real code in your image, then just evaluate:

Gofer new
url: 'http://ss3.gemstone.com/ss/MarianoBuilder';
package: 'MarianoBuilder';

Such configuration has no versions and only one baseline method. The (summary) of such method is:

baseline10: spec
<version: '1.0-baseline'>

spec for: #pharo do: [

spec blessing: #baseline.

" =========================================
The following the list of projects that I DO DEVELOP. Hence, I always want the bleedingEdge, and most of the times, I want to build an image for them.

project: 'Fuel' with: [
className: 'ConfigurationOfFuel';
loads: #('DevelopmentGroup' );
file: 'ConfigurationOfFuel';
versionString: #bleedingEdge;
repository: 'http://ss3.gemstone.com/ss/Fuel' ].

project: 'DBXTalk' with: [
className: 'ConfigurationOfGlorpDBX';
loads: #('default' );
file: 'ConfigurationOfGlorpDBX';
versionString: #bleedingEdge;
repository: 'http://www.squeaksource.com/DBXTalk' ].


" =========================================
The following the list of TOOLS, ADDONS  that I use for my own images. Since they are not my projects, I usually use the latest available metacello version and not the bleedingEdge.
In addition, not all tools and addons are loaded in all type of images I build. Each image decides what to include.

project: 'TilingWindowManager' with: [
className: 'ConfigurationOfTilingWindowManager';
loads: #('default');
file: 'ConfigurationOfTilingWindowManager';
repository: 'http://www.squeaksource.com/TilingWindowManager' ].

project: 'Glamoroust' with: [
className: 'ConfigurationOfGlamoroust';
loads: #('GT-Inspector' 'GT-Playground' );
file: 'ConfigurationOfGlamoroust';
repository: 'http://www.squeaksource.com/glamoroust' ].

spec project: 'Keymapping' with: [
className: 'ConfigurationOfKeymapping';
loads: #('forDeveloper' );
file: 'ConfigurationOfKeymapping';
repository: 'http://www.squeaksource.com/ShortWays' ].


" =========================================
The following is a list of groups for building my own images. Notice that for each image group there should be a class side method #buildXXXImage

group: 'FuelImage' with: #( 'BaseImage' 'SandcastlesThemes' 'Fuel');
group: 'MareaImage' with: #( 'BaseImage' 'Marea');
group: 'DBXTalkImage' with: #( 'BaseImage' 'DBXTalk');
group: 'CogVMImage' with: #( 'BaseImage' 'CogVM');

group: 'BaseImage' with: #('TilingWindowManager' 'SimpleLogger' 'CodeStats' 'Glamoroust' 'Keymapping').


Forget for a moment the last lines about groups. The basic idea is that in such configuration you group both types of software, your own or the one you contribute, and the external tools. There are a couple of interesting things to notice:

  • Whenever I want to install something with Metacello, I never remember whether the ConfigurationOf is in MetacelloRepository or in the same repository of the project. I don’t remember which group/packages I have to load either.  This way such information is stored directly in ConfigurationOfMariano. For example, for Fuel, I have to load ‘DevelopmentGroup’ and the ConfigurationOfFuel is in ‘http://ss3.gemstone.com/ss/Fuel&#8217;. For DBXTalk I have to load ‘default’ and the ConfigurationOfGlorpDBX is in ‘http://www.squeaksource.com/DBXTalk&#8217;. Conclusion? I don’t have to remember that anymore.
  • Notice that for my own projects (Fuel, DBXTalk, Marea, etc) I set #bleedingEdge as the #versionString. This is because of what I have already explained that I always want the last version of each package. In the contrary, for the external tools such as Glamoroust, KeyMapping, etc, I don’t specify anything in #versionString. Hence, the default will be the last stable version, exactly what I want for those cases.

Loading Projects

In the class side of ConfigurationOfMariano there is a category called ‘loading’ and there you can find methods like #loadFuel, #loadDBXTalk, #loadMarea, etc. As an example:

FuelImageBuilder new loadPackages: 'Fuel'

For the moment, forget what FuelImageBuilder does, but imagine it just loads ‘Fuel’ (this is the parameter to #loadPackage:) from ConfigurationOfMariano. Of course, the rest of the #load* methods are the same and they only change the package to load and the builder class.

Conclusion? I can take any Pharo image, Gofer MarianoBuilder and then all I need to do is to send #loadXXX message to ConfigurationOfMariano 🙂 No need to remember anything nor loosing time. In fact what I do is to have  sticky note in my Mac with this code:

Gofer new
url: 'http://ss3.gemstone.com/ss/MarianoBuilder';
package: 'MarianoBuilder';

(Smalltalk at: #ConfigurationOfMariano) perform: #loadFuel.

I copy paste such code and I change #loadFuel for what I want at that moment.

Building my own images

Now let’s see the interesting part. To build your own images with this approach, there are 2 parts. The first part is done in ConfigurationOfMariano. Take a look to the groups defined in the baseline at the beginning of the post.

Basically, we create a Metacello group for each image we want to build. For example, there is a group ‘FuelImage’, ‘DBXTalkImage’, etc. In such groups we can put all external tools that are exclusively needed when we build images for such project. For example, in Fuel I add ‘SandcastlesThemes’ because for Fuel images I want to use such theme. Besides particular tools that each image needs, there is also a group called ‘BaseImage’, where I put all the external tools I want for all images.  In this example, ‘TilingWindowManager’ ‘SimpleLogger’ ‘CodeStats’ ‘Glamoroust’ and ‘Keymapping’.

So…all we do in the baseline of ConfigurationOfMariano related to building images is just to define which packages/projects to load. Now we have to really build the image. Most of the code for building my own images is quite similar among different projects. For example, the code to build a Fuel image will be quite similar to the one to build a DBXTalk image. The image builder is done in Pharo as well so the easiest solution is to use subclassification to customize the build process for each project. The abstract class is GeneralImageBuilder and there are subclasses such as MareaImageBuilder, FuelImageBuilder, DBXTalkImageBuilder, CogVMImageBuilder, etc.

The last part of ConfigurationOfMariano is the class side category called ‘building’, which contains methods such as #buildFuelImage, #buildDBXTalkImage, etc. You can imagine what they do:

FuelImageBuilder new buildImage.

The builder

The main method is #buildImage

self loadImagePackages.
self generalImagePreferences.
self customPreferences.
self cleanSystem.
self lastActions.
self saveImage.

The first step is to load all the packages defined as part of the image. Each subclass of GeneralImageBuilder understands #imageGroupNameToLoad  which answers the metacello group defined in ConfigurationOfMariano. For example, FuelImageBuilder >> #imageGroupNameToLoad   just answers ‘FuelImage’.

The second line is to set all preferences/settings which are general to all images. Line 3 is a hook that allow subclasses to set custom settings. For example, Fuel and Marea they both set their own background picture, logo, theme, log file name, etc (check implementors of #customPreferences).

With #cleanSystem we execute some cleanings to let the image in a nice and clean state.  Then #lastActions is another hook where each subclass can execute something at the end. For example, to set my username and password for all SqueakSource repositories, to set a global/shared package-cache for all projects, etc.

Finally, we save the image. In my case, I want that the image is saved with a particular name and in a particular place. For example, I want that all Fuel images are called Fuel.N.image and to be placed in ‘/Users/mariano/PhD/Marea/Fuel/imagenes/’. Implementing #imageDirectory and #baseImageName subclasses can customize that.

Conclusion?   I can take any Pharo image, Gofer MarianoBuilder and just sending #buildFuelImage or #buildXXX I can automatically build my own image with my own tools, settings and customizations. The image will be named and placed exactly where I want.

My final proposal

As said, you can find the code in http://ss3.gemstone.com/ss/MarianoBuilder and the license is MIT. I didn’t call it MarianoBuilder because of ego, but on purpose to make it clear that MarianoBuilder is just for me, it has my own preferences, my own settings, my own projects. What you should copy is the procedure. Copy the idea of using Metacello for something else than managing projects. Create your own ConfigurationOfYou and YourBuilder. Of course, you are very welcome to take a look to MarianoBuilder to get an idea of how to set certain preferences or settings. You are invited to take it as a base and fork it.

There are more things I would like to tell about this topic but the post is already too long so I will continue after…

My small talks at Smalltalks 2011

Smalltalks 2011 was, as usual, a very nice conference. I am glad I could attend even when living in France. This time I gave 2 talks as I mentioned in a previous post.

The talk “Building your own Pharo images with Metacello” was good or at least that’s what I think. Of course, it was a talk that only makes sense for certain people or scenarios. Moreover, it was a “pre-requirement” to know Metacello which n is something not all people know. The talk was in the big auditorium and there were quite a lot of people. The only thing I regret from the presentation is that I forgot to say that the code was MIT and that everybody could take it and adapt it to their own needs. Nevertheless, I added a slide with this information to the final version of the slides (which will be published in the website).

You can find the slides here but notice that most of the presentation was a live demo. You will need to wait for the video if you want to see it 😉  (it was recorded so it should be online soon). I like the topic of this talk so I will try to do a special post about it in the future.

The second talk was the presentation of my paper: “Problems and Challenges when Building an Unused Object Manager for Pharo”. It was in the secondary room so there were a few people (no more than 20). Besides, the talk was in parallel with a nice talk of Hernán Wilkinson. I hope that I least I could explain more or less what I am trying to do for my PhD. The slides of the talk are here.

That’s all folks 🙂

smalltalks2011Attendees + 1

Hi. I think I was pretty clear in this post when I described my feelings about ESUG Conference: “What is really great is to meet people. Have you ever sent 1 million emails to someone without even knowing his face?. Is he 70 years old? 20 ? What language does he speak?  Well, ESUG is the perfect conference to meet people by real, face to face. The best part of ESUG happens in the “corridors”, I mean, talking with people between talks, after the conference, in the social event, etc. There will be people who will ask you about your stuff, they will give you feedback and ideas. You will find yourself wanting to give feedback to others. It is a nice circle.”

Even though the previous paragraph describes pretty good what I think about ESUG, it can also be applied to Smalltalks Conference as well. This conference, which takes place in Argentina, has started in 2007 meaning this is the fifth edition. It’s true that the audience is less international than ESUG but that doesn’t mean that the conference is worst or not worth it. The conference is really international, people come from different countries and, in the last editions, all presentations were in English. The conference is free and the attendees are more or less between 150 and 300 people.

The conference is organized by FAST (Smalltalk Argentinian Foundation in Spanish) with several sponsors including ESUG. Since last year, there is not only a “technical track” of presentations, but also a “research track” (a workshop). This means there is a full program committee conformed by several international researchers. Papers are submitted and there is even a journal associated to the workshop. Believe me that for me, a PhD student and Smalltalker at the same time, this is awesome. Java fanatisim does not only exist in industry 😉

I have submitted a paper which was accepted so I am attending the conference. This is very good news for me because it means that I will be going to all existing Smalltalks conferences so far (from 2007 to 2011)! Well, at the same time I will be visiting my country so… 🙂  The paper is about my current development/investigation about managing unused objects. Soon, I will do a post and put the link to the paper.

Apart from the paper, I have also submitted a talk which was accepted as well: “Building your own Pharo images with Metacello”. It doesn’t make sense to said more because it is already explained in the conference website.

I would like to mention the effort that FAST and Smalltalkers are doing this year in order to attract new attendees to the conference. They are doing special “pre-Smalltalks talks” in 2 different universities where they give introduction courses to Smalltalk and the VM. It’s nice to see friends of mine taking care of that 🙂  So… if you want to improve your Smalltalks skills before Smalltalks or you want someone else to take the courses, plase visit this link: http://giti.org.ar/announcements/seminarsofsmalltalk-relatedsubjects. Of course, these courses are free as well.

There is also a Pharo sprint just before Smalltalks. It is on Wednesday 2nd at the Universidad Nacional de Quilmes (the same place where the conference takes place). If you have never attended a Pharo sprint, don’t miss this chance!! It’s the perfect place for everyone who loves Smalltalk from newbies to hackers. You can learn and pair program with really experienced guys of the Pharo board and make a real progress in an open-source project such as Pharo. The link is: http://www.fast.org.ar/smalltalks2011/events

Not enough reasons to come? Well, I may be biased but Argentina is a very nice country with a lot of beautiful places and really friendly people. So, why don’t you come to Smaltalks and take some holidays as well?

Fuel: First place at ESUG Innovation Technology Awards

ESUG Innovation Technology Awards presentations

Hi guys. As I have already told you before, I finally presented Fuel at ESUG Innovation Technology Awards. The awards ceremony was quite good. Some people came to the table where I was and asked things about Fuel. Some didn’t know at all what Fuel was about (neither the internals of a general serializer while others knew a lot about serializers. I got interesting talks and some good ideas. Now there are even more items in my infinitive to-do list.

BTW, thanks Adriaan van Os for his wonderful pictures.

Now….showing a serializer is quite boring. What would you show?  Serializing and materializing an object graph is plain boring. So I though I could show something more interesting such as:

  1. Type some code on a workspace, debug it and then, in the middle of the debugging, serialize the debugger and its content into a file. Then I opened another image, I materialized the file and the debugger just opened. I could continue the debugging in this new image, exactly in the same place where it was serialized and with all the temp variables with its correct state. People were amazed about this. It is fun it took me literally 2″  to test it and see it works. There is NOTHING special needed for Fuel to test that.
  2. Following the previous item, Esteban A. Maringolo recommend me in the Pharo mailing list to do more or less the same but with Pharo errors. Pharo writes down an exception into PharoDebug.log (this is done in #logError:inContext:). So what I did is to modify such method so that it also serializes the context into a PharoDebug.fuel. Then, for the demo, I raised an exception so that the PharoDebug.fuel was written. Finally, I could take another image, materialize such file and debug the exception 🙂   That was kind of fun. Of course there are a lot of limitations in this but it was fun anyway.
  3. I showed how to use Fuel with a Riak NoSQL database. This is basically what I explained in a previous post.
  4. I showed how to speed up SandstoneDB by using Fuel instead of SmartRefStream. Again, this was the same as my previous post.

So…that was pretty much what I showed from Fuel. There were much more things I wanted to show but didn’t have time. For example, Martin Dias (main author of Fuel) could export seaside packages, load them in another image and start Seaside!!!

So far so good. Which was the problem? While we (submitters of ESUG Awards) were presenting our projects, Instantiations offered a reception with drinks (wine and scotch) and food. Grrrr I couldn’t take anything. Well…. almost anything. Henrik Johansen took my place a couple of minutes while I took a glass of wine. I may be wrong but someone told me that someone put a nice text in a workspace saying something like “Will be back in a couple of minutes” hahaha. Awesome.

ESUG Innovation Technology Awards Ceremony

The ceremony of the awards was on Wednesday (2 days after the presentation). This happened in the “City Chambers” in Edinburgh. There was a very nice reception (food and drinks again) in a really nice place. Before announcing the winners, “The Lord Provost and Council of the City of Edinburgh” give a nice speech. He (George Grubb) explained Edinburgh was proud of receiving ESUG and the talk was quite fun. Finally, he gave the diploma to each of the winners.

So….as you may guess from the title, Fuel got the first place. First of all, I want to really thanks to all the people who vote for us. There were a lot of interesting projects out there. Second, I would like to thanks Martin Dias. HE is the real Fuel developer. He has been doing a great job with Fuel and I just help him as much as I can. He deserves the honor as much as I do (and even more!). Finally, thanks to ESUG for sponsoring Martin with SummerTalk and to Stéphane Ducasse for bringing Fuel to life.

Paper accepted and slides of the presentation

Apart from presenting Fuel at the ESUG Innovation Technology Awards, we have also submitted a paper to the International Workshop on Smalltalk Technologies. You can get the paper here. The paper was accepted, invited to do an extended journal version of it and then I gave a presentation in the ESUG conference. The talk was more or less good but as always I have something to learn. This time, the problem was the I had too many slides. I was on time (ok, maybe 5 minutes more hahahhah) but I have to be too fast. Next time: less slides.

Anyway, the slides are available here and also in slideshare.

My talks at ESUG 2011

Hi guys. This is a short post to just let you know what I’ll be talking about at ESUG this year in Edinburgh, Scotland. I’ll give a total of 3 talks which are the following:

1) Fuel: Boosting your serialization.

Fuel is an open-source general purpose framework to serialize and materialize object graphs based on a pickling algorithm. Fuel is implemented in Pharo Smalltalk environment and we demonstrate that we can build a really fast serializer without specific VM support, with a clean object-oriented design and providing most possible required features for a serializer.

For more details please visit Fuel website: http://rmod.lille.inria.fr/web/pier/software/Fuel

I will give an introduction to Fuel explaining its pickle format showing some examples of how to use this serializer. Ahhh at the same time, I am submitting Fuel to the Innovation Technology Awards 🙂

I participate in Fuel in several ways:

– Fuel is being sponsored by ESUG SummerTalk and I am the mentor. The student and main developer is Martin Dias.

– I contribute with code and test.

– For my research/PhD prototype, I use Marea as the serializer.

2) Ghost:  A Uniform, Light-weight and Stratified Proxy Implementation

This talk is about the paper we wrote about a novel proxy implementation. I’ve developed Ghost proxies in Pharo Smalltalk and it is part of my PhD.

This toolbox provides low memory consuming proxies for regular objects as well as for classes and methods. Ghost proxies let us intercept all messages sent to a proxy, with clear separation between the layers of intercepting and handling interceptions. Ghost is stratified and does not use the common yet problematic #doesNotUnderstand: for implementing proxies.

For more info please read: http://rmod.lille.inria.fr/web/pier/software/Marea/GhostProxies

3) DBXTalk: Argentinian Connection.

DBXTalk is the complete and open-source solution to relational database access. It has been in development since 4 years already and it includes the following tools:

  • OpenDBXDriver: this is the database driver and it wraps the C library OpenDBX. This subset of DBXTalk was formerly known as SqueakDBX.
  • GlorpDBX: this is a port of VisualWorks Glorp plus some changes to make it work with different database drivers such us OpenDBXDriver.
  • DBXTalkDescriptions: it’s a tool to generate classes from tables and tables from classes, based in Glorp types. Also to generate GlorpConfiguration from Magritte descriptions. And a UI to make it easy to use.
  • DBXPlus: it’s a UI to visualize and browse databases without going out the image. You can execute sql query and review the results, browse into the defined tables and views, inspect the structure and the data stored.

Guillermo Polito, Santiago Bragagnolo and me (all part of the team) will give you an introduction to all those tools of the DBXTalk suite while showing real examples.

For DBXTalk, well…I was part of the authors. I have been actively developed SqueakDBX/DBXTalk and it is the open-source project I have spent more time in apart from Pharo. DBXTalk is used in several production applications and it has already it list of users.

For more info, check the links:



All the schedule of the talks are in here

That’s all for today.

See you at ESUG?

You can notice that I’ve added a picture/link of ESUG on the right column of the blog. Even if I am young and I don’t have experience traveling arround the world, I can tell you that ESUG Conference, as well as Smalltalks Conference, are just AWESOME. I have assisted to all Smalltalks from 2007 to 2010 and ESUG 09 and 10. All of them are great and not only because of the talks. The talks are the less important for me 😉

What is really great is to meet people. Have you ever sent 1 million emails to someone without even knowing his face?. Is he 70 years old? 20 ? What language does he speak?  Well, ESUG is the perfect conference to meet people by real, face to face. The best part of ESUG happens in the “corridors”, I mean, talking with people between talks, after the conference, in the social event, etc. There will be people who will ask you about your stuff, they will give you feedback and ideas. You will find yourself wanting to give feedback to others. It is a nice circle.

And the Smalltalk community is unique in the sense that you can assist ESUG and meet the developers of the tools you use to have fun, make a living, study, do research, work, or whatever. You can take a beer with the developers/creators of Pharo, Seaside, AidaWeb, GemStone, Pier, Moose, Squeak/Pharo VM, DBXTalk, Metacello, Glorp, Cincom, VA, etc….. And what is also great about smalltalkers is that a smalltalker is likely to be a very good person. ESUG is friendly and smalltalkers come from all over the world. Come on, join us 🙂

This year ESUG Conference is in Edinburgh, Scotland. All the information you may need, such as list of talks, schedule, maps, venue, etc, is in http://www.esug.org/wiki/pier/Conferences/2011.

Now, regarding the “Journey through the Virtual Machine”, if you like that topic, you have to attend ESUG. There you can meet Igor Stasenko (author of HydraVM, NativeBoost, Hudson VM configurations, CMakeVMMaker, etc),  Esteban Lorenzano (the new maintainer of Mac Squeak VM and Cocoa port), Andres Valloud (VM developer at Cincom), Javier Burroni and Gerardo Richarte (authors of SqueakNOS and the JIT/GC implemented in Smalltalk), etc. Even more, there is a special workshop for you: “Compiling your own VM” by Igor. This is a hand-on tutorial. So, what are you waiting for? In addition, there are even more talks related to VM. Check the schedule for more details.

I will give some talks as well, but I will comment that in another post.

So…see you there?