Planet Smalltalk

March 11, 2010

Torsten Bergmann - Trax for Squeak

Stephen Pair released Trax, a general object versioning system for Squeak.

Read more here.

Laurent Laffont - How I build squeak vm on (Arch)Linux

I write this post as a memento for me. I will appreciate some feedback on building the VM on other Linux distro.

1. Prepare a working directory

All the work will take place in ~/squeakvm (/home/lol/squeakvm on my machine):


mkdir ~/squeakvm
cd ~/squeakvm


2. Get squeak-vm source

The easiest part. The VM source code tarball can be found on http://www.squeakvm.org/unix/. At the time of writing, the last stable version is 3.11-3.2135. Go and get it:


wget http://www.squeakvm.org/unix/release/Squeak-3.11.3.2135-src.tar.gz
tar -xvzf Squeak-3.11.3.2135-src.tar.gz


3. Load VMMaker tool

For more explanations on why VMMaker is needed and how it works, here is a good overview.

To generate the source code for your own VM, you need a running Pharo image. Here I use a fresh Pharo 1.0-10508 rc2 image from Pharo website.

Open your image, then load VMMaker by evaluating this in a Workspace:

Gofer new
squeaksource: 'MetacelloRepository';
package: 'ConfigurationOfVMMaker';
load.

(Smalltalk at:#ConfigurationOfVMMaker) project lastVersion load.




4. Load FT2Plugin

To display anti-aliased font of Pharo images, you need the FT2Plugin. To load it:

MCHttpRepository
location:'http://www.squeaksource.com/FreeTypePlus'
user: ''
password: ''.

MCHttpRepository
location: 'http://source.impara.de/freetype'
user: ''
password: ''.


5. Configure VMMaker and generate the VM source

Now you can open VMMakerTool:

VMMakerTool openInWorld


In the Path to platforms field put the path to the extracted Squeak VM tarball: ~/squeakvm/Squeak-3.11.3.2135-src.

Then right-click on one of the plugins pane and select make all external for a simple configuration.



Note you can have a description of each plugin by reading the class comment.Classes are part of VMMaker-Plugins category.

In path to generated source select a directory where the VM source will be written. Here ~/squeakvm/src32.

The VMMakerTool window should look like this:



Then click on the Entire button (top-left of window). Wait a moment, pray, and the code should be generated.

Finally, I replace the original VM source with the generated one.

rm -rf ~/squeakvm/Squeak-3.11.3.2135-src/unix/src
cp -a ~/squeakvm/src32 ~/squeakvm/Squeak-3.11.3.2135-src/unix/src


Note: theorically this should not be necessary as the configure script accepts an option to specify the source directory path, but it doesn't seem to work.

6. Build the VM

First create a directory for the build and go in:

mkdir ~/squeakvm/Squeak-3.11.3.2135-src/build
cd ~/squeakvm/Squeak-3.11.3.2135-src/build


Then run the configure script

../unix/cmake/configure 


First problem. I have this error:

CMake Warning (dev) in /home/lol/squeakvm/Squeak-3.11.3.2135-src/build/=/CMakeLists.txt:
Syntax error in cmake code when parsing string

${=_link_directories}

syntax error, unexpected cal_SYMBOL, expecting } (21)


Thanks to this mail there's a patch to correct it.


cd ~/squeakvm/Squeak-3.11.3.2135-src/unix/cmake/
wget http://lolgzs.free.fr/pharo/Plugins.cmake.patch
patch -p0 < Plugins.cmake.patch
Then clean and run the configure script again
cd ~/squeakvm/Squeak-3.11.3.2135-src/build
rm -rf *
../unix/cmake/configure
You should have the Makefile now. Run make:
make
Then another problem as libfreetype (needed by FT2Plugin) is not found. To correct it, create config.cmake for FT2Plugin this way:
mkdir ~/squeakvm/Squeak-3.11.3.2135-src/unix/plugins/FT2Plugin/
echo "PLUGIN_FIND_LIBRARY(FT2 freetype)" > ~/squeakvm/Squeak-3.11.3.2135-src/unix/plugins/FT2Plugin/config.cmake
More informations on this error here. Clean and run make again:
make clean
make
Then install:
sudo make install
7. Conclusion
The process is not so easy. To help I put all the squeakvm directory (with sources, pharo image with vmmaker) on http://lolgzs.free.fr/pharo/squeakvm.tar.gz

UPDATE: Good post for MacOSX

JR's Smalltalk Daily - Smalltalk Daily 03/11/10: Browser Code Features

Today's Smalltalk Daily looks at a couple of small, but useful features of the browser that you might have missed.

Torsten Bergmann - Building Squeak VM on Linux

Laurent wrote on how to build the Squeak VM on Linux. Nice that the VMMaker metacello configuration I created (see here and here) is used.

Adrian Lienhard - Building a Pharo/Squeak VM from first Principles

I've been building and modifying Squeak VMs for a couple of years, but each time I started afresh it took me considerable amount of time to set up a working toolchain. Changes in Pharo, VMMaker, platform C code, make files, in system libraries etc. can introduce subtle problems and the official documentation typically is obsolete. To help me – and others – be faster next time, I wrote the following step-by-step guide to build a Unix VM on OSX 10.6.

0. Preparation

Make sure you have xcode installed (http://developer.apple.com/tools/xcode/).
Install cmake >= 2.6.2 from http://www.cmake.org/

Create a work directory on your desktop (it is important it has no spaces!):

mkdir ~/Desktop/vmbuilding; cd ~/Desktop/vmbuilding

Let’s download a fresh Pharo image for later testing. In case you are behind a proxy, set the variable http_proxy to make wget work.

export http_proxy=http://<proxy server>
wget http://gforge.inria.fr/frs/download.php/25397/Pharo1.0-10508-rc2dev10.01.2.zip
unzip Pharo1.0-10508-rc2dev10.01.2.zip

Next we check out the VM platform-specific C sources and make files

svn co http://squeakvm.org/svn/squeak/trunk/platforms/ -r 2151

Note the use of hardcoded revision numbers to make sure these instructions still work in the future.

1. Compile from existing source

We start by compiling the source that come with Subversion. This allows us to test the basic setup without the sources we will generate ourselves.

cd platforms; mkdir build; cd build
../unix/cmake/configure --without-RomePlugin --without-vm-display-Quartz
make

If you got here without any errors you can try to start the new VM. Since Quartz does not work anymore on Snow Leopard, we use X11 as display driver and hence have to start up X11 first:

open /Applications/Utilities/X11.app
./squeak ~/Desktop/vmbuilding/Pharo1.0-10508-rc2dev10.01.2/Pharo1.0-10508-rc2dev10.01.2.image &

The Pharo image should start up now. Print “SmalltalkImage current vmVersion”, which shows the version of the image from which the VM source was built.
The result should be 'Squeak3.10.2 of ''5 June 2008'' [latest update: #7179]'.

Print and store the result of “1 tinyBenchmarks” then quit the image.

2. Install VMMaker

Start up the same image with your Mac VM:
open ~/Desktop/vmbuilding/Pharo1.0-10508-rc2dev10.01.2/Pharo1.0-10508-rc2dev10.01.2.image

In a workspace in the Pharo image do the following. If you are behind a proxy first let Pharo know. Then load VMMaker through the following Metacello config (thanks Torsten!):

HTTPSocket useProxyServerNamed: '<proxy server>' port: <port>.
Gofer new
      squeaksource: 'MetacelloRepository';
      package: 'ConfigurationOfVMMaker';
      load.
((Smalltalk at: #ConfigurationOfVMMaker) project version: '1.2') load

This takes some time. When it finished loading, we open the VMMaker GUI:

Preferences disable: #raiseDeprecatedWarnings.
VMMakerTool openInWorld

3. Configure VMMaker and generate sources

First let’s backup the original sources

mv ../unix/src ../unix/src_original

In the VMMaker GUI:
Change path to platform code: /Users/<user>/Desktop/vmbuilding/platforms
Change path to generated sources: /Users/<user>/Desktop/vmbuilding/platforms/unix/src
Don’t forget to accept the changed field by cmd-s. Leave the other settings unchanged.

Make all plugins internal (right-click in list of plugins). Then select as not built (you can drag and drop between lists): Aio, FFT, FT2, InternetConfig, MacMenubar, Mpeg3, QuickTime, Security, Sound, TestOSA

Select as external:  B3DAccelerator, FFI, FileCopy, HostWindow, MIDI, UUID, XDisplayControl.

Note, that I haven't cared to make Freetype work and have just excluded it above. In a related blog post, Laurent describes how to patch Freetype to compile on Linux.

Evaluate the following expression to force the use of LF for line breaks (else the awk script triggered by cmake does not properly work).

MultiByteFileStream defaultToLF.

Click the button Entire to generate the VM sources in the directory ./unix/src/. After the VMMaker has completed, save and quit the image.

4. Compile the new sources

We create a new build directory and compile the source we created in step 3.

mkdir ../build_new; cd ../build_new
../unix/cmake/configure --without-vm-display-Quartz
make
./squeak ~/Desktop/vmbuilding/Pharo1.0-10508-rc2dev10.01.2/Pharo1.0-10508-rc2dev10.01.2.image &

If you get here without an error, you made it! Congrats! ;)

5. Benchmarks

A good way to test the healthiness of a new VM is to run the tiny benchmarks.

1 tinyBenchmarks

The result should be similar to the ones you obtained in step 1.

On my MacBook Pro 10.6.2 with 2.4GHz Intel Core 2 Duo, gcc 4.0.1 I got
479400749 bytecodes/sec; 12303286 sends/sec.

Posted by Adrian Lienhard on March 11, 2010

March 10, 2010

Chris Thorgrimsson - Pango + cairo = Nice Labels!

If you aren’t already aware, the folks (Travis Griggs and his co-workers) at Cincom have developed language bindings for Pango. The Pango website describes Pango as…a C library for laying out and rendering text. The description also goes on to say…integrating Pango with cairo provides a complete solution with high quality text handling and graphics rendering.      

Since my machine animation overviews usually need a lot of labels (some active and some passive), I decided that it was time for a new widget…..the PangoMarkupLabelView (The PangoMarkupLabelView’s model is a CairoTransformWrapper on a PangoMarkupLabel). The reason I called it a markup label is because Pango offers a markup capability as part of its library. I really liked this markup interface since it helped me simplify my widget. The view’s widget spec and associated GUIPainter slices help to configure the markup string. In turn the markup string then plays a central role in how Pango lays out and renders the string on to the cairo context. A nice description of the markup language can be found here.      

Like the CairoPNGImageView, I also wanted my labels to take advantage of all the functions that my transform wrapper provide. If you have watched any of the videos about the transform wrapper, then you probably know what I am referring to.      

Here’s a few pictures and a video of the label in action.      

PangoMarkupLabel Image 1

An example of a PangoMarkupLabel

 Yes…the “glassy effect” has been done to death, but I couldn’t resist seeing if I could make an active widget that had a bit of it. I suppose there is a place for it, but it’s unlikely you would ever see it used on my animation overviews.      

PangoMarkupLabel Image 2

An example of using the labels to build a component

 The only point to this video is to show that the labels can also be active. All you’re going to see is a ticking clock……exciting!  

  

Before I end this post, I figured I should give an update about the progress of putting my Cairo Graphics Kit up on the Cincom public store. As it stands, I am waiting to hear back from our legal department. I am requesting that we use a GNU LGPL license to cover the work (same license that cairo and Pango use).      

I would like to think that all this work is free to give away to the world. The reality however is that the company I work for has the final say since they are paying me to do this work. Fortunately, my VP does see the advantage of putting this in the public domain in the hope that others help to contribute to it. Hopefully our lawyers see it the same way.


PangoMarkupLabel Clock Demo

Joachim Tuchel - The Seaside Training Course had its premiere

Last week I finally gave my first Seaside Training course. It was a two day workshop for a group of six very experienced Smalltalk developers. Like all our training courses, it was focussed around a single example project that grew step by step with each new aspect of Seaside being introduced. The feedback I got was very [...]

GNU Smalltalk Blogs - GTK Tutorial

Hi,

Thanks to Nicolas Petton ;)
The GTK Tutorial is now hosted : http://bioskop.fr/gtk_tutorial

Gwen

Joachim Tuchel - Why Supporting ESUG is important

Stef just sent a message to several mailing lists in order to raise funds and/or find helping hands for the European Smalltalk Users Group (ESUG). Since my company (objektfabrik) is also a sponsor of ESUG, and we greatly appreciate the work they do, especially in organizing the annual ESUG Conference, I put a link here and [...]

Self Blogs - Self 4.4 Beta 1 released

Hi guys,

I’ve released Self 4.4 Beta 1.

Download VM installers for MacOS X and Linux and Clean and Demo snapshots from: http://selflanguage.org/download/.  As usual, the sources for the Self VM and objects are available from http://github.com/russellallen/self including as a tarball.

Barring minor fixes, I will reissue this release as Self 4.4 at the start of April. The proper description of Self 4.4 is a revived Self running on modern Mac OS X and Linux x86 and ready as a base for new functionality.

Self 4.4 will be the first Self release since Self 4.3 which was released in June 2006. In future we will attempt a slightly faster turnaround :)

Please post bugs to the Self bugtracker at http://self.lighthouseapp.com and to this mailing list.

Cheers,

Russell

——————–

Since Alpha 2 we have changed (this is a quick dump from commit messages):

  • Changes to SelfDroplet to ensure proper registration of filetype
  • Minor changes to website
  • Fix for bug ticket #3 – Compressed snapshots now work on Linux
  • Fix to UI1 text editing and small improvement to error handling
  • Fix for bug ticket #2 – Self will now compile on Ubuntu
  • Fix for bug ticket #1 – Linux: Display will now reopen after saving world in new snapshot
  • Added -Wno-write-strings flag to GCC compile
  • Initial copy of Self Handbook (incorporates existing manuals in RST for Sphinx)
  • Changes for Snow Leopard
  • Add a nice icon for the Dock in MacOS X
  • Removed some binaries from the git repository, split sortedList out of the list module.
  • Fix colorsFor: in ‘traits ui2Image’ to account for mapped or unmapped
  • Add PNG support and fix JPG/GIF support in webBrowser
  • Changed flag to be “-headless” to start image without ui2
  • Added Chris Double as an AUTHOR
  • Make webBrowser send Host: header
  • Add linux build files to .gitignore
  • Set the module for linux socketConstants
  • Added value:With:With:With:With:With:With:.
  • Get builds working under Arch Linux
  • Add a socketConstants slot for os_file under linux
  • Fix sockets under Linux
  • Clarification of copyright AUTHORS to include Sun and Stanford University
  • Split mirrorProgramming from mirror, so that Klein won’t need to file it in.
  • Added blockTests.self.
  • Clean up and clarification of copyright terms
  • Source tree cleanup
  • Fixes to UI1
  • Starting to refactor the tests to make it easier to use them in Klein.
  • Also refactored the slotFinder to be iterative instead of recursive.
  • Made the javaServer stuff file in OK (sort of, I think). It still needs to be filed in from the terminal, without the Self desktop running.
  • Updated website to Sphinx 0.6.1 and added links to blog
  • Fixed a typo in some comments, added max: and min: methods to the ordered mixin.

Göran Krampe - First FOSS-Stockholm meeting

On the 24th of february the first FOSS-Stockholm meeting was held in Kista. And I dare say it turned out to be a success!

My company MSC sponsored the event together with Nohup so that there was enough sandwiches and drinks to keep the crowd happy. :)

I taped all of the talks and you will find these movies and more here and here are the original movies if you are interested.

/Goran

March 09, 2010

Lukas Renggli - More Filesystems

In my recent post I’ve mentioned that the Filesystem library can work on different kinds of filesystems. In this post I am going to walk you through the supported filesystems one by one.

Before you proceed with this hands-on blog post, please update to a patched and unofficial version of the Filesystem package. In the meantime some bugs and minor issues got fixed that are not integrated into the official release yet.

 Gofer new
renggli: 'fs';
package: 'Filesystem';
load.

Disk Filesystem

The Disk Filesystem is implemented in FSDiskFilesystem and its platform specific subclasses. As we have seen in the last post the singleton filesystem instance for the current platform can be retrieved using:

 disk := FSDiskFilesystem current.

Subclasses of FSFilesystem implement many methods, but we should resist from calling most of them directly. These methods implement the low-level behavior of the respective file-systems and are private to the framework.

As we have learned in the previous post we should only work with references. Filesystem instances know two methods that return an FSReference object. This is true not only for the disk filesystem, but also for all other filesystem types presented later on:

 disk root.                               " a reference to the root directory "
disk working. " a reference to the working directory "

Given a reference we can navigate to another reference in the filesystem with the method #resolve:. Resolving works similar the command cd (change directory) on Unix and Windows and returns a new reference to a file or directory. Print the result of evaluating the following expressions:

 disk working resolve: '/'.               " the same as 'disk root' "
disk working resolve: '.'. " the same as 'disk working' "
disk working resolve: '/home/renggli'. " an absolute path to a directory or file "
disk working resolve: '../bar'. " a relative path from the working directory "

Note that the message #resolve: is also understood by FSFilesystem itself. Do not call this method though, it is private and does not return an FSReference as you might expect.

Memory Filesystem

The memory filesystem is another simple filesystem type. Think of it as a virtual in-memory filesystem, very much like a RAM disk that lives in your Smalltalk image. The use of a memory filesystem can be very convenient for testing your filesystem code, because it does not pollute your hard disk and is garbage collected as soon as you do not reference it any longer. To instantiate a memory filesystem evaluate:

 memory := FSMemoryFilesystem new.

On this filesystem you can do everything you learned before. A memory filesystem is initially empty:

 memory root children size.               " --> 0 "

To create a file we can use the same techniques we learned previously:

 (memory root / 'foo.txt')
writeStreamDo: [ :stream | stream nextPutAll: 'Hey Memory' ].
(memory root / 'foo.txt') exists. " --> true "

We can also copy files from a different filesystem to our memory filesystem:

 cache := disk working / 'package-cache'.
cache copyAllTo: memory root.

The above code copies all the files in the package cache of your Pharo installation to the memory filesystem. Before you try it out make sure that you don’t have your MP3 collection in that directory, otherwise your image might blow up.

In my case I have now 64 files in the memory filesystem:

 memory root children size.               " --> 64 "

As you would expect we can perform other operations on our virtual filesystem, for example delete all the files that start with the letter F:

 memory root children do: [ :reference |
reference basename first = $F
ifTrue: [ reference delete ] ].

As you see, there is nothing special about a memory filesystem. It behaves and understands exactly the same messages as the disk filesystem does.

ZIP Filesystem

The ZIP filesystem represents a ZIP Archive that resides on another filesystem. To create a new archive instantiate the ZIP filesystem with a reference of a ZIP archive:

 zip := FSZipFilesystem atReference: disk working / 'cache.zip'.

Contrary to other filesystems a ZIP filesystem needs to be opened (and closed) explicitly:

 zip open.

Apart from that, the ZIP filesystem behaves exactly the same way as the other filesystems we learned up to now. To copy the contents of the memory filesystem to the ZIP archive we can evaluate the following code:

 memory root copyAllTo: zip root.

To enumerate the contents we use:

 zip root children
do: [ :reference | Transcript show: reference basename; cr ].

To flush the ZIP archive to the underlying filesystem we simply close it:

 zip close.

This is a convenient way to access archives. Again your code does not have to worry about the details of this particular filesystem, but transparently accesses and modifies it using references.

cURL Filesystem

The cURL filesystem is an experimental extension to the Fileystem framework. It uses the cURL plugin written by Danil Osipchuk to work with filesystems that can be accessed through FTP, FTPS, HTTP, HTTPS, SCP, SFTP, and TFTP.

First, we need to load the extension packages:

 Gofer new
renggli: 'fs';
package: 'Curl';
package: 'FS-Curl';
load.

Note that the cURL filesystem also requires the latest version of the CurlPlugin. Make sure that your VM is up-to-date before you proceed:

 Curl curlVersion.                        " --> 'libcurl/7.19.4 OpenSSL/0.9.8l zlib/1.2.3' "

What about downloading the latest cURL plugin for the Mac VM from within Pharo? To do this we can connect to the directory with the latest experimental code of John McIntosh:

 ftp := FSCurlFilesystem url: 'ftp://ftp.smalltalkconsulting.com/experimental'.

With the resulting filesystem you can do all things you already know. If you are not authenticated however, it is unlikely that you are allowed to write (or upload) to the server. Note that currently enumerating the contents of a directory only works for FTP and SFTP servers. Due to limitations of the CurlPlugin it is furthermore not possible to create directories, delete or rename files. Hopefully that will be fixed sometime soon in the plugin code.

 ftp working children.

To download the curl plugin and save it to your hard disk you can use:

 ftp working / 'CurlPlugin.1.1.0.bundle.zip' copyTo: disk working / 'CurlPlugin.1.1.0.bundle.zip'.

Unpacking the zip archive should be a breeze.

Philippe Mougin - F-Script Switching Options

In F-Script, blocks combined with message sending can be used to create new control structures fitting your needs (and mood!). Indeed, things like if/else, while or exception handling control structures are all provided at the library level, with no need for specialized syntax in the language itself. In F-Script Switching Options, Jeff explore creating new kinds of conditional control structures:

There are many ways to think through the flow of a program, and times when certain constructs like switch statements are a nice option, even in a language with no syntactical support for it, per se. Philippe Mougin was discussing just such options in F-Script back in the Oughts. I had a need for switching in F-Script, and came up with a few versions that I found useful. Read more…


GNU Smalltalk Blogs - Towards a permissive copyleft license for dynamic languages

The problem

With the recent increase in free-software releases for dynamic languages, a serious issue is there for people who would prefer to give their software the protection of copyleft. The issue is the difficulty of interpreting the Lesser GPL in the context of these languages.

The difficulties in turn from two different sources. First, it is hard to interpret the language of the Lesser GPL in the context of languages that have no object files but only source code files.

read more

James Robertson - [Smalltalk Tidbits, Industry Rants] Event Video

I'm processing the videos we shot on our technology event roadtrip - I hope to have them posted by the end of the week (if not then, by Monday). Exporting out of iMovie takes time, and then I have to post-process the resulting export so that I'm not asking people to download an enormous file :)

Smalltalk Jobs - Software Developer IV

Title: Software Developer IV
Required skills: Agile software development experience., Smalltalk, Web Services, Relational Databases, Application Servers, Object-Relational Mapping, OOAD, J2EE, Bachelor's Degree in Computer Science or equivalent education
Region: Canada
Location: Toronto, ON
Type: Permanent
Advertised by: Ontario Teachers’ Pension Plan
Advertised by » More details: www.workopolis.com
Notes: This position has been filled or is no longer available, 3/8/2010
MGP.
Last Modified: yesterday

Smalltalk Jobs - Software Developer III & IV

Title: Software Developer III & IV
Required skills: Smalltalk, Web services, Relational Databases, Application Servers, Object-Relational Mapping, OOAD, J2EE, Agile Development, Bachelor's Degree in Computer Science or equivalent education
Region: Canada
Location: North York, ON
Type: Permanent
Advertised by: Ontario Teachers’ Pension Plan
Advertised by » More details: www.workopolis.com
Notes: This position has been filled or is no longer available, 3/8/2010
MGP.
Last Modified: yesterday

Smalltalk Jobs - Manager Internet

Title: Manager Internet
Required skills: Project lifecycle experience, Smalltalk, Excellent communication skills, Team Lead, Bachelor's Degree in Computer Science or equivalent education
Region: Canada
Location: Toronto, ON
Type: Permanent
Advertised by: Ontario Teachers’ Pension Plan
Advertised by » More details: www.workopolis.com
Notes: This position has been filled or is no longer available 3/8/2010
MGP.
Last Modified: yesterday

JR's Smalltalk Daily - Smalltalk Daily 03/09/10: Working with the Windows Registry

A look at the Registry package, a contributed piece that makes it easier to work with the Windows registry from Smalltalk

Torsten Bergmann - Google Summer of Code with Smalltalk

There is a new page for the Google summer of code with Smalltalk:

http://gsoc2010.esug.org/

You can read more about it here.

Randal L. Schwartz - A brief bit of Squeak history

On a recent "VOIP User's Conference" podcast, during the second (unscripted) hour, I rambled on a bit about Squeak's history, and dynamic languages, and got a little angry at people who suggest that port knocking is sane. Check it out!

Read and post comments | Send to a friend

Yoshiki Ohshima - [その他] ACM Turing Award

今年(というか最新の2009年度)は、Chuck Thackerが受賞ということになりました。ハードウェアの人がとるというのはなかなか聞かないのですが、事情を知る人によればEDSACのMaurice Wilkesが1967年に受賞して以来のことだということです。

March 08, 2010

Torsten Bergmann - Next Pharo Sprint: March 13, 2010

The next pharo sprint:

Date: March 13, 2010
Time: 9:30 - 21:30
Place: Software Composition Group, University of Berne, Switzerland

See here for more details.

James Robertson - [Smalltalk Tidbits, Industry Rants] Video From the Recent Evemts

We've wrapped up the current round of Cincom Smalltalk events - if we schedule more, it'll be announced here. In the meantime, you can check out our video wrapups from 4 of the 5 events (I neglected to hit the "record" button in London) on uStream - I've embedded the player below. I'll have video for the talks themselves up in the next few days - I have initial processing, editing, and post production ahead of me on that - and some of the steps are all about "hurry up and wait" :)

Live Video streaming by Ustream

Technorati Tags: , ,

Torsten Bergmann - The Moose Book

If you want to do software and data analysis then you should read the
new online book from Tudor Girba:

http://www.themoosebook.org/book

about the Moose technology. Moose is an analysis platform written in Smalltalk.

The (yet unfinished) book already includes descriptions on how to use Moose, how to build a browser with Glamour or how to load the latest Moose version into Pharo using Metacello.

One interesting aspect (beside a good documentation on Moose) is that this is now the second dynamic web book on Smalltalk technologies (after the Seaside online book) which is written using the Smalltalk based Pier Content Management System.