Friday, November 30, 2012

Thursday, November 29, 2012

Redline Smalltalk in Maven (Maven plugin)

Not only is Redline available in a Maven repo (the JAR's, I reported about it). Now there is also a Maven plugin for Redline. Haven tried yet - but the plugin's mojo has one simple goal: stic So adding it to maven pom.xml should be easy. Here is a sample.

Pharo Help additional features

I added some new features to my Pharo Online Help project. Read more.

Smalltalk 30th Anniversary Reunion

There is a new page on Smalltalk-80 history: and a "Smalltalk 30th Anniversary Reunion" in preparation. Read more on James' blog.

Growing Object-Oriented Software Guided by Tests

There is a book called "Growing Object-Oriented Software Guided by Tests" - the examples code is now ported to Pharo Smalltalk. See code at SmalltalkHub.

NativeBoost 1.7 for Pharo 2.0

A new NativeBoost version 1.7 for Pharo 2.0 (which is still alpha as of today) is now available.

Just fire up an updated fresh Pharo 2.0 image and select "Tools" and "Configuration Browser". Then select Native Boost and select "Install configuration (Stable version)".

- Igor changed the API of NativeBoost a little bit (avoid globals, etc.)
- Ciprian contributed special syntax for array arguments
- I contributed some more examples for Win32 by wrapping some common Win32 API functions

So if you are on Windows you can play with:

    NBWin32Shell shellBrowse: '' 
    NBWin32Shell getComputerName
NBWin32Shell showODBCSettings
NBWin32Shell lockWorkstation

A more complete list can be found here.

Using the shell you can also query infos about your system:

   NBWin32Shell getEnvironmentVariable: 'JAVA_HOME'
   NBWin32Shell getDriveType: (NBWin32Shell getHomeDrive)
   NBWin32Shell getPathEntries

You can also open the control panel and control panel applets:

   NBWin32Shell showControlPanel
   NBWin32Shell showDisplaySettingsBackground

See class NBWin32Shell for more examples.

Now there is also support for the "DebugOutputString" API - which allows you to write

    NBWin32Shell outputDebugString: 'Trace me'

These outputs can be viewed with tools like dbmon.exe (from WinSDK) or DebugView.
Very usefull if you run Pharo headless on Windows.

I also played with the MessageBox API allowing you to open native message boxes. Not yet complete but you can test with

  NBWin32MessageBox test

Additionally I started wrapping some Windows GDI functions - so if you need faster native drawing you can write:

   NBWin32Window getFocus getDC rectangleLeft: 10 top: 10 right: 100 bottom: 100

Note that NativeBoost will soon be integrated into Pharo 2.0 by default (before it goes beta).

Monday, November 26, 2012

Test coverage in Java and Smalltalk

When working with Java I usually have several plugins that I preconfigure in Maven. One is the the very usefull Cobertura plugin - it calculates the percentage of code assessed by tests.

That way you usually write a component/classes and try to cover it with as many tests as possible. Or you write the tests first (XP-Style) and then implement code until they are green. Often you want to know if you need more tests and how good they test your code.

When running maven with the Cobertura plugin (in combination with the site plugin) you get a site report that shows the coverage ratio. You can then dive into the report down into the Java packages and classes and see which lines are covered (green) and which not (red). For instance for an if/else you will see if both decision ways are covered by tests, etc.

Here is a sample report from the Java world.

Now Pavel created something similar for the Smalltalk and Pharo world. Here is the report from the Pharo kernel - scroll down to see the colored results. The Java report is still a little bit better structured - but I like that quality tools are available in both worlds.

Thursday, November 22, 2012

Athens Animation and Chipmunk physics library in Pharo

Esteban had a little bit of time to dig deeper into Igors work:
  - NativeBoost (a new mechanism to call external libs and a replacement for the former FFI)
  - and Athens (a vector graphics framework)

On top of these Esteban created a new playground for animations based on Athens for Pharo and wrapped the chipmunks physic engine as this and this video proves. Nice!

New ChangesBrowser for Pharo 2.0

Nearly all Smalltalks I know come with a changes file and are able to easily track changes. Any change on a method - even a doIt is logged.

In Pharo 2.0 it is time to rethink some of the old tools (and change management) and add new features (like tracking semantic changes, undo/redo ...). A first preview is now available.

Just open Pharo 2.0 and evaluate:

Gofer new
 smalltalkhubUser: 'EzequielLamonica' project: 'NewChangeSystem'; 
 package: 'Changes'; 

Then open the "Changes Browser" from the tools menu. Leave the browser open and change a method in a system browser. I like that I can instantly see the change and diffs. I can also change the grouping or undo a method change, etc.

If you create a class then two changes are logged: that a class is created and that an expression is evaluated.
This is not a surprise for a Smalltalker - since a class is typically not created by a wizard or by creating a file (like in Java, C++, ...). It is created by sending a message to the superclass to create a new subclass and follows the "objects and messages" idea that makes Smalltalk. ;)

The UI of the browser needs some work - but it is already based on the new UI Specs in Pharo 2.0. The menu is also a little bit inconsistent (since the "undo" on evaluated expressions is enabled).

But nonetheless a nice and useful tool ...

Wednesday, November 21, 2012

Rossal and Calder

The Roassal visualization engine can also be used for simulation as this new video from the Calder project proves.

Redline Smalltalk for JVM funding

Getting Smalltalk to run on the JVM is not an easy task. There are currently two main projects trying to achieve that. One is RTalk from Mark Roos (that soon will see the open source light) and the other one is an already opens source project driven by James Ladd called Redline Smalltalk.

James now asks for support to fund the development. If you are interested in the campaign you can click here to become a Redliner.

Sunday, November 18, 2012

Thursday, November 15, 2012

Saturday, November 10, 2012

Redline in Maven

When I do Java work I always use Apache Maven. It's a clear step forward in Java world compared old Apache Ant - which is as terrible as old makefiles from C/C++ if the project grows. Although project descriptions (POM) in Maven are also static due to XML (and one has to code a Mojo with Java for non-common tasks) I like the unified way to treat projects and builds and the amount of plugins that are available (ranging from checkstyle, site plugins, project reports, ...).

Nice to hear that Redline Smalltalk JAR is now accessible in a Maven repo too - at least a snapshot ( Will make it easier to use it and follow Redlines development if new versions will show up as maven artefacts.

If time permits I will play with Redline a little bit in the next evenings since according to the latest commits one can now use a Java class like a Smalltalk class within Redline. This is done by dynamically generated Smalltalk to adopt a Java class. Here is an example for java.util.ArrayList.

Tuesday, November 06, 2012

Pharo Online Help (Preview)

Some time ago I wrote a little help system for Pharo. You can see some infos about it here.

I now implemented a hopefully better one and today published a preview of a possible "Pharo Online Help". Documentation and QuickStart tutorials are crucial in my opinion for better adoption of Pharo and Smalltalk. Lets see if the community accepts my proposal and helps moving it forward...

Click the image below for a preview or read about it here.

Smalltalk and multicore programming

Found a new presentation from a talk from Stefan Marr on Multicore programming in Smalltalk

How old are your objects

Nice discussion and info about the age of objects:

"Also, since our GC does not change the order of objects when compacting, you can tell if an object is older than another by enumerating all objects. The oldest ones are of course nil, false, and true (more than 30 years old now)"

Monday, November 05, 2012

Pharo downloads

If you want to grab the latest Pharo development you can regulary use the Pharo CI Server ( Unfortunaletely it is down today - but there is a page with all the latest things for download.

Friday, November 02, 2012

Pharo Server backend

UN Number is a new application for the iPad/Android. What you cant see is that it uses Pharo Smalltalk for the server backend.

Smalltalk is cool

A popular german computer magazine (ct') has a special issue on programming. On the title it states: "Cool Languages: Haskell, Smalltalk and D". Yes - and we plan to make Smalltalk even better.


Interactive Snap! using Seaside

A video about connecting Snap! and Scratch Sensor Board via Seaside - nice.

Yesplan video

This is a new video (in dutch) about Yesplan - a planning software made with Pharo and the Smalltalk Seaside web framework.

Byte Magazine on Smalltalk

The famous BYTE magazine issue about Smalltalk from 1981 is available online.

Aida with Websockets

The Aida web framework is now the first one with full Websocket support. So a new Aida 6.5 Interim release is published for Squeak, Pharo and VisualWorks. Download it from the website.