Talking Meta

Meta talk about Smalltalk, Seaside, Magritte, Pier and related things.

Pharo by Example

The open-source book Pharo by Example has been announced. It is a new, improved and adapted version of Squeak by Example to Pharo, the new Smalltalk that is quickly approaching its 1.0 release. One of the particularly exciting additions to the book is the chapter Seaside by Example.

Posted by Lukas Renggli at 18 October 2009, 11:15 pm with tags pharo, smalltalk, seaside comment link

Diff in Pier

An integrated diff viewer for Pier is long overdue. The latest development version of Pier has a first implementation with a simple GUI. The implementation is not perfect, but it already starts to be quite useful for the engineering course here at the university.

diff.png

Posted by Lukas Renggli at 28 September 2009, 4:39 pm with tags pier, seaside, smalltalk 2 comments link

Gofer — Monticello and Groups of Packages

Gofer, a person who runs errands. Origin 1960s: from go for, i.e. go and fetch.
The New Oxford American Dictionary

Synopsis

Gofer is a small tool on top of Monticello that loads, updates, merges, diffs, reverts, commits, recompiles and unloads groups of Monticello packages. Contrary to existing tools Gofer makes sure that these operations are performed as clean as possible:

  • Gofer treats packages from one or more repository in one operation.
  • Gofer works with fixed versions or tries to find the "latest" version using a given package name.
  • Gofer automatically assigns repositories to all packages, so that the other tools are ready to be used on individual packages.
  • Gofer makes sure that there is only one repository instance registered for a single physical location.
  • Gofer works with Monticello dependencies and uniformly treats them like the primary package.
  • Gofer prefers to work with faster repositories if there is a choice.
  • Gofer cleans up after Monticello, no empty class categories and no empty method protocols are to be expected.
  • Gofer supports operations to sync remote and local repositories with each other.

Installation

Gofer is included with the latest Pharo and GemStone distributions. In case you are missing Gofer in your image, grab it from http://source.lukas-renggli.ch/gofer.html.

Description

Gofer is very simple by design, the basic useage scenario is always the same and consists of three steps:

  1. You specify one or more Monticello repository URLs. You can do this using the methods url:, url:username:password: (HTTP, FTP), directory:, or repository: if you need full control. You might also use the convenience methods like squeaksource:, wiresong:, or gemsource: for well known repositories. Additionally the following settings are available:
    • Gofer implicitly declares the local package cache as a repository. To disable the local package cache use the method disablePackageCache, to re-enable use enablePackageCache.
    • Gofer throws an error if a repository is not reachable. To silently ignore repository erros use the message disableRepositoryErrors, to re-enable use enableRepositoryErrors.
  2. You specify one or more Monticello packages you want to work with, by adding them to the Gofer instance. Use version: to add a specific version, or use package: to add the "latest" version in the given repository. Furthermore there is package:constraint: that allows you to further constraint the version to be loaded in a block passed in as the second argument.
  3. You specify one or more actions to be performed on the specified packages:
load Load the specified packages.
update Update the specified packages.
merge Merge the specified packages into their working copies.
localChanges Answer the changes between the base version and the working copy.
browseLocalChanges Browse the changes between the base version and the working copy.
remoteChanges Answer the changes between the working copy and the remote changes.
browseRemoteChanges Browse the changes between the working copy and the remote changes.
cleanup Cleans the specified packages.
commit Commit the modified specified packages.
commit: Commit the modified specified packages with the given commit message.
revert Revert the specified packages to the currently loaded version.
recompile Recompile the specified packages.
reinitialize Call the class side initializers on the specified packages.
unload Unload the specified packages.
fetch Download versions from remote repositories into the local cache.
push Upload local versions from local cache into remote repositories.

Example

To use Gofer to update to exact versions of the Kom Server, the ’latest’ code of Seaside 2.8 and the ’latest’ code of the Scriptaculous package that is committed by the author with the initials ’lr’ one could evaluate:

 Gofer new
squeaksource: 'KomHttpServer';
version: 'DynamicBindings-gc.7';
version: 'KomServices-gc.19';
version: 'KomHttpServer-gc.32';
update.
Gofer new
squeaksource: 'Seaside';
package: 'Seaside2.8a';
package: 'Scriptaculous' constraint: [ :version | version author = 'lr' ];
load
Posted by Lukas Renggli at 21 September 2009, 1:41 pm with tags smalltalk, pharo, monticello, tutorial 1 comment link

Dynamic Web Development with Seaside

cover.png We are proud to announce the release of the free online book

Dynamic Web Development with Seaside
http://book.seaside.st/

The book is written in the Pier content management system using the Pier book publishing engine. This allows us to collaboratively edit the contents and generate different output formats automatically. We will soon offer a PDF and a printed version, but first we have to iron out some of the remaining issues.

Over the past years the book got reviewed and revised several times. We want to thank all the persons who helped us: Torsten Bergmann, Damien Cassou, Tom Krisch, Philippe Marshall, Ruben Schempp, Roger Whitney, Julian Fitzell, and Michael Davies carefully reviewed the book and provided valuable feedback. Martin J. Laubach for his Sudoku code. Ramon Leon for letting us using his blog ideas and SandStoneDB, Chris Muller for Magma. Jeff Dorst provided generous financial support for supporting student text reading. Markus Gaelli for brainstorming on the book title. Samuel Morello for designing the cover.

Michael Davies is currently helping us getting things ready for print. And you can help us too by writing down your findings at the bottom of each page. Also, if you want to contribute a missing chapter or support the translation of the book please get in touch with us.

We wish to thank the European Smalltalk User Group (ESUG) and inceptive.be for sponsoring this book. We are looking for additional sponsors. If you are interested, please contact us. If you are a publisher and interested in publishing this material, please let us know.

About the authors

Posted by Lukas Renggli at 10 September 2009, 2:16 pm with tags seaside, smalltalk, book 1 comment link

Preparing for ESUG 2009

I am currently preparing for the International Smalltalk Conference (ESUG) in Brest, France.

helvetia.png On Monday, I will present the paper of Tudor Gîrba and myself titled Why Smalltalk Wins the Host Languages Shutout at the International Workshop on Smalltalk Technologies. The paper argues why Smalltalk is an excellent choice for language engineering as it is done for example in Helvetia.

Then at the Innovation Technology Awards I will support Tudor Gîrba presenting Glamour, a framework to script browser. Don’t miss to vote for us.

glamour.png On Tuesday, Julian Fitzell and I will give a quick Seaside Status Update just before lunch. Afterwards we give a 3 hour tutorial on advanced Seaside topics. The tutorial will introduce participants to some lesser-known areas of and highlight some of the new features in Seaside 2.9.

Last but not least I am looking forward to the Seaside Sprint that follows right after ESUG on Friday and Saturday.

I will try to keep posting on Twitter.

Posted by Lukas Renggli at 26 August 2009, 8:51 pm with tags esug, glamour, helvetia, seaside, smalltalk 1 comment link
<< 1 2 3 4 5 6 7 8 9 10 11 12 13 >>