Planet Smalltalk

November 18, 2014

Torsten Bergmann - Cincom ObjectStudio 8.6 and Cincom VisualWorks 8.0

Torsten Bergmann - SciSmalltalk v0.16

ESUG news - [ANN] SciSmalltalk v0.16

we are to happy to announce SciSmalltalk v0.16

SciSmalltalk is a Smalltalk project, similar to existing scientific libraries like NumPy, SciPy for Python or SciRuby for Ruby. SciSmalltalk already provide the following basic functionalities:

  • complex and quaternions extensions,
  • random number generators,
  • fuzzy algorithms,
  • Didier Besset's numerical methods,
  • Ordinary Differential Equation (ODE) Solver.

Version 0.16 includes updates from Werner Kassens to several packages, the work Nicolas Cellier about arbitrary precision floats.

SciSmalltalk project web page is here. All the code is available under the MIT licence. We have more than 563 green unit tests and we run a CI job here

This version should work on Pharo 3.0/4.0 and also Squeak 4.5 (to be confirmed).

We are looking for more code contributions and also tests, documentation ! Join the mailing-list.

Cincom Smalltalk - Cincom ObjectStudio 8.6 and Cincom VisualWorks 8.0 Are Here!

It is our pleasure to bring you the current version of Cincom Smalltalk. Cincom continues to provide high value and low cost with a rapid return on investment at low risk, allowing you to win more business, operate efficiently and deliver as promised.

Cincom Smalltalk - New Product Information Readily Available on the Cincom Smalltalk™ Website

The Cincom Smalltalk product line, which includes Cincom® ObjectStudio® and Cincom® VisualWorks®, is constantly being updated and improved upon so that the products stay competitive and technologically advanced to attract and bring in new accounts, and to help our clients achieve their goals and simplify the complexity of their businesses.

Torsten Bergmann - Smalltalk-on-Rails

The goal of this project is to provide an object-oriented scripting environment for web applications running on Ruby-on-Rails.

Torsten Bergmann - Treap - a new collection

Benoit St-Jean - Smalltalk en vrac…

Quelques-une des nouvelles des dernières semaines dans notre merveilleux monde!  Un peu de tout ce que j’ai noté ici et là mais que j’ai omis de vous rapporter par manque de temps!  Alors, voici les nouvelles en vrac!







Smalltalk on Rails

Amber Smalltalk


Classé dans:Smalltalk Tagged: 8.0, 8.6.1, Amber, Amber Smalltalk, AmberSmalltalk, épidémiologie, Cincom, courbes de Bézier, EToys, gemstone, Gemstone/S, Instantiations, Journées Pharo, Kendrick, lambda, lambda-calcul, Minecraft, Nim, Pharo Days, Programmable Minecraft, Rails, rapports, Roassal, Ruby, Shellshock Honeypot, Smalltalk Digest, Smalltalk on Rails, Squeak, Treap, VA Smalltalk, VisualWorks

November 17, 2014

Cincom Smalltalk - Focusing on the User — Introducing a Revamped User Portal

To the Cincom Smalltalk Team, there’s nothing more important than serving the needs of its users. Complete customer satisfaction is something that we continuously strive for.

Cincom Smalltalk - Smalltalk Digest: November Edition

The November edition of The Cincom Smalltalk Digest is available now.

Torsten Bergmann - Arbitrary Precision Float in Pharo

November 16, 2014

Smalltalk Jobs - Smalltalk Jobs – 11/15/14

  • Minneapolis, MNSenior Smalltalk Developer through Precision System Design
    • Required Skills:
      • Ability to work independently and multi task effectively.
      • 10 + years of application development and implementation experience using Smalltalk (Object Studio Version 8.2 or greater).
      • Advanced Client Server knowledge.
      • Ability to solve highly complex problems.
      • Ability to perform multiple tasks and meet deadlines.
      • Excellent verbal and written communication skills for diverse audiences.
      • Attention to detail and follow-through.
      • Ability to collaborate effectively with others.
      • Advanced knowledge about Microsoft SQL data bases.
      • Knowledgeable about IBM MQ Series.

Updates on 11/17/14: Corrected the date in the title of the posting. (sorry about that).

Good luck with your job hunting,
James T. Savidge

View James T. Savidge's profile on LinkedIn

This blog’s RSS Feed

Filed under: Employment Tagged: jobs, Smalltalk, Smalltalk jobs

November 14, 2014

David Buck (Simberon) - Pharo Days 2015

Torsten Bergmann has announced Pharo Days 2015 to be held January 29 and 30, 2015 in Lille France. Here's part of his announcement:

Start the year in the right spirit by joining the Pharo community for the Pharo Days 2015 on Thursday January 29 and Friday January 30 at INRIA, Lille, France. Meet your online colleagues, programmers and hackers in real life and experience how much you can pick up in just two days. Learn about key technologies, talk to core developers and other users, pair program and contribute to Pharo. Have fun and enjoy yourself.
It sounds like fun.  Check it out.

David Buck (Simberon) - Essence# in InfoQ

There's a great interview in InfoQ with Alan Lovejoy - the author of Essence#.  Essence# is Alan's ANSI-compliant Smalltalk running on .NET.  Check it out.

Thanks to Peter William Lount for the pointer.

Joachim Tuchel - VA Smalltalk 8.6.1 – first impressions

Instantiations released VA Smalltalk 8.6.1 yesterday. We haven’t ported our project code to the new version yet, but given the fact that this is “just” an update to 8.6, I don’t expect to experience a lot of problems here. The Migration Guide, an often undervalued but very helpful resource, doesn’t really mention a lot that […]

Cincom Smalltalk - A New Collection!

We have a new type of collection that’s available in both of our Cincom Smalltalk products— Cincom® ObjectStudio and Cincom® VisualWorks®.

Arden Thomas - A new Collection!

We have a new type of collection, available in both our Cincom Smalltalk products, ObjectStudio and VisualWorks.

The name of it is …. (drum-roll please)  “Treap” …..   What?!

I know, it doesn’t exactly roll off the tongue.

So what exactly is a “Treap”?

The name Treap is a contraction of the names “Tree” and “Heap”, and is a type of balanced binary tree.   It is not new as a computer science data structure, but as a new addition to our products, you may want to know where and how it can be used effectively.

What is it, and how does it compare with more traditional Smalltalk collections?

Treap is more of a hybrid collection, which makes it very versatile and useful, in the right context.

It has fast keyed lookup (like a Dictionary).

It can use ordered access (like an Array or an OrderedCollection) with enumeration, but the objects are ordered or sorted based on the key.

It also allows bidirectional access to the ordered list.

Treap is structured as a balanced binary tree of nodes.  Each node holds the key and value objects and are also linked as a bi-directional linked list.

In what circumstances might a Treap be useful?

If you are using a Dictionary for lookup and also enumerate through the sorted keys of the dictionary, a Treap might be a better solution, since it already maintains a sorted order based on the keys.

Alternatively if you are using a SortedCollection, but need faster random look-up speed, a Treap might just be the best choice.

Another use is if you have to find an object (quickly), and then access the objects just before or after it. In this scenario you would look-up the node, and then get the prior or following node with #previous or #next respectively, to navigate the linked list forward and backwards.

Are there any drawbacks?

Just like using any Collection or data-structure, there are advantages and trade-offs to using each one.  For Treap, the main drawback is probably the space and overhead to have and maintain the nodes and their links.   My suggestion would be to only consider using it only where you are getting the benefit of the order and look-up speed, and possibly navigation.

Finding Treap.  Treap came into the products as a means for supporting the performance of Text2. You can use it as Text2.Treap for access.  In the future Treap may move into the Collection hierarchy where you would expect to find it.

Performance:  In some simple bench-marking, I find look-up speed using Treap comparable to a dictionary.  If you then have to enumerate through the elements based on the sorted dictionary keys, using a Treap is significantly faster, since it essentially skips the sort by already maintaining that order.

In the meantime, I have made some additions and tweaks for Treap that you may find of use and interest. The methods add in some of the enumerators for a collection class (#do: #select: #collect: #keysDo: ) that were either missing, or could perform better.   See the methods (for the instance side of Treap) below.

I look forward to any feedback, particularly if you have a good use for Treap in your applications!


Arden Thomas

Cincom Smalltalk Product Manager

do: aBlock

“Evaluate aBlock for each of the receiver’s values.”

| node |

node := self minimumNode.

[node isNil] whileFalse:[

aBlock value: node value.

node := node next].

keysDo: aBlock

“Evaluate aBlock for each of the receiver’s keys.”

| node |

node := self minimumNode.

[node isNil] whileFalse:[

aBlock value: node key.

node next].

select: aBlock

“Evaluate aBlock with each of the receiver’s elements as the argument.

Collect into a new collection like the receiver, only those elements for which

aBlock evaluates to true.  Answer the new collection.”

| newCollection |

newCollection := self species new.

self keysAndValuesDo: [:key :value | (aBlock value: value) ifTrue: [newCollection at:key put: value]].


collect: aBlock

“Evaluate aBlock with each of the values of the receiver as the

argument.  Collect the resulting values into a collection that is like

the receiver.  Answer the new collection.”

| newCollection |

newCollection := self species new.

self keysAndValuesDo: [:key :value | newCollection at:key put: (aBlock value: value) ].


ESUG news - [ANN] VisualAge Smalltalk 8.6.1

VisualAge Smalltalk 8.6.1 has been released:

Download here

Torsten Bergmann - Lambda Calculus in Pharo

another nice article from Sven. Read more.

Torsten Bergmann - InfoQ article on Essense# Smalltalk

Torsten Bergmann - VisualAge Smalltalk 8.6.1.

November 13, 2014

Marten Feldtmann - VASmalltalk 8.6.1 has been published …

… and after some hours working with it: it looks pretty cool. Switched the whole PUM project to 8.6.1 just by importing the config maps.

Filed under: Smalltalk Tagged: PUM, Smalltalk

Essence# - Essence# subject of article in InfoQ

Bob Nemec - GemStone based reports & views

My current project is a port of a VisualWorks & GemStone fat client application to Seaside. Part of the porting effort was to map a few thousand VW windowSpec views to a Seaside web views. It all works fine, but it's not ideal. Ported fixed layout views look like fat client windows; they lack a web aesthetic. We want all new views to be more 'web-centric', where positioning and sizing is adjusted by the browser, especially from tablets and mobile devices.

We also need to provide reports. For a web app, answering a PDF for a report works well.

We combined these two requirements and ended up with reports generated on GS using a Seaside-like coding pattern, which is then rendered in by Seaside in VW, and can be viewed as a PDF.

To build the reports we use Report4PDF, something I wrote a few years ago.  It uses PDF4Smalltalk to generate a PDF document. PDF4Smalltalk has not been ported to GemStone, something I'd like to do when time allows (and to VA & Pharo). Fortunately, Report4PDF generates intermediate output before requiring PDF4Smalltalk. This output can be created on GS, which is then moved to VW, where PDF4Smalltalk is used for the final output.

Our VW to GS interface uses only strings, either XML or evaluated command strings. In this case, the report objects are packaged as XML, and then recreated on VW. For most reports building and parsing the content takes about 200ms (we may move this to a command string, which is typically a third faster).

Once the report is in VW we use a 'report component' for the rendering, which reads the report content and builds the Seaside output. Because Report4PDF has a Seaside-like coding style, the mapping is relatively simple.

For example, a table is defined as...

aTable row: [:row | 
row cell: [:cell | cell widthPercent: 20. cell text bold; string: 'Job'].
row cell: [:cell | cell widthPercent: 30. cell text; string: self job description].
row cell: [:cell | cell widthPercent: 20. cell text bold; string: 'Our Job ID'].
row cell: [:cell | cell widthPercent: 30. cell text; string: self job id]].

...and gets rendered as...

...the PDF output is... build the PDF content we use the data already in VW.  No additional GS call is needed.

R4PObject, the root Report4PDF class, has a #properties instance variable to support extensions. We use this to add link and update capabilities to the report when it is rendered in Seaside.

For example, a link to another domain object is coded as...
row cell right bold string: 'Designer'.
row cell text normal string linkOop: self designer domainOop; string: self designer displayKeyString.

...and displayed as...

...but is ignored in the PDF output...

The beauty of this approach is that all of the report generation is done on GemStone, with generic rendering and PDF generation in our VW Seaside code.

Our users are happy with this approach. They like the look of the web rendered report and the option to get the content as a PDF. Having link and simple update capabilities means that most users will not need to use the old fat clients views, which tend to be used by power users, for data entry and for detailed updates.

Simple things should be simple. Complex things should be possible. - Alan Key

David Buck (Simberon) - Instantiations releases VA Smalltalk 8.6.1

Instantiations has released VA Smalltalk version 8.6.1.  New features include real-time code analytics. enhanced refactoring support, SQLite3 support and zip/gz support plus enhancements to Linux and Seaside.  Check it out:

VA Smalltalk 8.6.1

David Buck (Simberon) - Cincom releases VisualWorks 8.0 and ObjectStudio 8.6

Cincom has released VisualWorks 8.0 and ObjectStudio 8.6.  This new version has dramatic new changes to the user interface including Text2, a new source code editor and UISkinning.  The changes are very exciting.  Check it out at the links below.


Cincom Smalltalk - The Cincom® ObjectStudio® GUI Files: Transparency

In all of the following cases, we use the same image and the same drawing code. The only change is in the window style and background.

November 12, 2014