Friday, November 30, 2012
Redline Smalltalk article on jaxenter
There is a new online article on jaxenter (online page from Java's JAX magazine) about Redline Smalltalk.
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.
Smalltalk 30th Anniversary Reunion
There is a new page on Smalltalk-80 history:
http://www.smalltalk-80.com/
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: 'http://world.st'
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).
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: 'http://world.st'
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.
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.
Sunday, November 25, 2012
Redline Smalltalk on Heroku
Will Leinweber got Redline Smalltalk running on Heroku (a cloud platform):
https://stout.herokuapp.com/
You can read more here.
https://stout.herokuapp.com/
You can read more here.
Another Storm example
Another example from Estebans Storm project: 500 objects/balls in a cube. Storm is a small game engine - primarily a binding to the Chipmunk physical library using Athens.
Smalltalks 2012 presentations
The presentations for Smalltalks 2012 conference are available online.
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!
- 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:
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 ...
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'; load
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.
James now asks for support to fund the development. If you are interested in the campaign you can click here to become a Redliner.
Tuesday, November 20, 2012
Pharo and fOSSa Conference
Pharo will participate on the fourth edition of the fOSSa Conference. fOSSa is the "Free Open Source Academia Conference"
Sunday, November 18, 2012
Amber and Google Charts
Want to use Google Charts with client side Amber Smalltalk. Then have a look here.
Thursday, November 15, 2012
Pharo Association
The website for the Pharo association is up and running:
http://association.pharo.org/
http://association.pharo.org/
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 (https://oss.sonatype.org/content/repositories/snapshots/st/redline/redline/0.2-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.
Nice to hear that Redline Smalltalk JAR is now accessible in a Maven repo too - at least a snapshot (https://oss.sonatype.org/content/repositories/snapshots/st/redline/redline/0.2-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.
Thursday, November 08, 2012
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.
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)"
"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 (http://ci.pharo-project.org). 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.