Monday, June 17, 2013

Presenty

Presenty is a user interface framework for Pharo based on MVP (Model view presenter). Read more about it on Denis blog. Code is on SmalltalkHub.

Friday, June 14, 2013

STIC 13 - VA Smalltalk Roadmap

First video recorded by James from this months "STIC 13" conference, Wigwam resort, Phoenix Arizona (June 9-12). Expect more to come in the next days ...

Barcodes in Smalltalk

Didnt know Barcodes are so easy to implement in Smalltalk. So I started with EAN13 barcode together with unit tests.

Project lives on: http://smalltalkhub.com/#!/~TorstenBergmann/Barcode

You can also load it using the config browser in Pharo 2.0 now. It is already usable - thanks to the power of Pharo.

Short Guide:

 To instantiate: BarcodeEAN13 value: '2109876543210'
You can get the binarySequence of a barcode:

(BarcodeEAN13 value: '2109876543210') binarySequence


calcuate the checksum (last digit):

 (BarcodeEAN13 value: '2109876543210') computeChecksum


 or visualize the barcode:

  BarcodeEAN13 example asForm asMorph openInWorld


 or to write to a file:

   PNGReadWriter putForm: BarcodeEAN13 example asForm onFileNamed: 'sample.png'


  Now includes EAN8 as well

Units in Smalltalk

I uploaded a "ConfigurationOfUnits" to the MetaRepoForPharo20. With this the "Units" framework is easily loadable from the Pharo 2.0 config browser.

Here are some examples from the Unit framework:

(10km + 10km) gives you 20km

You can also convert easily

  (10km + 24m) as: 1m

gives you  10024 metres.

It is also simple to compare:

  1hour < 10 seconds

which gives you false.

Wednesday, June 12, 2013

Log4s for Pharo

Log4s - a logging framework for Smalltalk was open sourced with MIT license by Instantiations. It runs on Pharo 2.0.

Some details about it can be found in this presentation.

libsodium Binding for Pharo and Squeak

libsodium ( a portable shared-library version of the NaCl cryptography library) can now be used from Pharo and Squeak. Read more.

Magritte for Morphic

Magritte is a framework allowing you to easily build seaside apps by adding meta informations to domain classes that can be used to easily build the UI.

Now there is also support for Morphic available. Just watch the video.

Sunday, June 09, 2013

Tab widget

Benjamin implemented a better Tab widet for Pharo. Code is on SmalltalkHub and it was today integrated into Pharo 3.0.

Nice!

 

Circular Menues

Pharo will soon support circular menues. Here is a video demonstrating this feature.

Friday, June 07, 2013

Web with Pharo Conference 6 June 2013 @ Lille

The program from yesterdays Pharo web conference is already on twitter:


Lets see when the first videos appear on the web.

Thursday, June 06, 2013

Tektronix Smalltalk Document Archive

This page contains annotated links to primary documents related to the development of Smalltalk products at  Tektronix in the 1980′s. 

Amber Smalltalk on the iPhone

Sebastian Sastre is playing with Amber - so here is Amber Smalltalk running on the iPhone. Click the image to enlarge.

Wednesday, June 05, 2013

The Power of Clean Code

Pharo gets better and better - Sean DeNigris demonstrates this with a short video.

STIC 2013

The Smalltalk Industry Council STIC'13 Conference will be held next Sunday thru Wednesday, June 9-12 at the Wigwam Resort near Phoenix.

Sunday, June 02, 2013

SourceCity is OpenSource now

SourceCity is a 3D visualization tool for analyse object-oriented systems. It is now OpenSource with MIT License! Read more.

Friday, May 31, 2013

Rubric demo for Pharo

Alain Plantec gives a first demo of Rubric (a deep refactoring of TextEditor) for Pharo in a new video:

http://vimeo.com/67400546

Code lives on SmalltalkHub.

Websela

Another way to make a websites with ST is Websela. You can use Monticello packages to send changes to the website.

Device prototype with Smalltalk from 1991

This device was a prototype for a pen computer called the "ActiveBook". Software part was done with Smalltalk.

Artefact 1.0 - PDF framework for Smalltalk

Artefact 1.0 is released - a project implementing a PDF framework for Smalltalk.

Project and code live at on SmalltalkHub. Read more about the features in the announcement.

To easily try out download Pharo 2.0, open the config browser and load the "Artefact" project.
Then check the class PDFDemos. If you evaluate "PDFDemos runAllDemos" you will find a "pdf" directory with all the PDF samples generated.

Happy Birthday Smalltalk-80!

30 years and still strong!



Smalltalk Debugging facilities for web development

A debugger is not only something a developer uses to hunt for bugs. It is also a tool that makes a developer more productive.

In Smalltalk the debugging experience is really impressive. As someone once said:

"I love Smalltalk. I love coding in the debugger, being able to archive processes and restore them exactly later if they encounter exceptions, the amazing reliability. The economy of expression and the brilliant class library."

Soon Amber Smalltalk will bring this debugging experience also to web development. Have a look at this demo video.

Some Smalltalk history

A picture provided by Allan Wirfs-Brock with the following comment:

 "And this was how you coded a fast Smalltalk virtual machine in 1985"

 

Thursday, May 30, 2013

Reflectivtity for Pharo

Reflectivity for Pharo is out - this tool allows you to annotate AST nodes with "metalinks". Read more.

Tuesday, May 21, 2013

To trap a better mouse

Ian Piumarta (Squeak Unix VM maintainer, long time Squeaker and Smalltalker) who is working for Viewpoints Research Institute will speak Wednesday May 29, 2013, 3:30 pm at Room W1008, West Building 8W, Ookayama campus, Tokyo Institute of Technology about "To trap a better mouse".

Monday, May 06, 2013

Sunday, May 05, 2013

Kinematic Templates in Smalltalk

The Kinematic Templates interaction technique suggests adjusting the user's mouse input to it tends to match a drawing template. That allows the user to draw in free-hand mode and obtain a "beautified" version of it's hand drawing.

There is an implementation for Pharo. Read more or watch the video or read the paper.

Redline ST IntelliJ plugin

There is now a preview video for the IntelliJ IDEA Redline Smalltalk plugin available.

Gnome2 look for VW

A look redesign for VisualWorks matching Gnome2 is now available.


Experiments with ObjectSpaces

Experiments with ObjectSpaces.

Friday, May 03, 2013

Wednesday, April 24, 2013

Smart Suggestions for Pharo

The idea of "Smart Suggestions for Pharo" is to have suggestions based in the text selected or the cursor position in the code editor.

Read more about and see some screenshots here.

Wednesday, April 17, 2013

ObjC bridge for Pharo

Esteban is working on an ObjC bridge for Pharo. Here is a first demo video comparing graphics within the world canvas and outside of the usual Morphic World using the bridge.

Tuesday, April 16, 2013

Pharo 3.0 and Opal compiler

After Pharo 2.0 came out the development on 3.0 immediately started.

Pharo 3.0 already has many new updates and today it also integrates Opal (a new compiler).
If you want to know more about Opal then read here or look at this presentation from the Deep into Smalltalk summer school.

Still Opal is not the default compiler - but step by step...

Monday, April 15, 2013

Sunday, April 14, 2013

Friday, April 12, 2013

Athens Tutorial

Want to use the new Athens graphics package? There is a new tutorial that you can run from within the image. This video from James shows how to use it.

Thursday, April 11, 2013

Profiling using Spy framework

Alexandre Bergel is demonstrating some profiling and visualization of the Spy framework. He uses package "HelpSystem" - stuff that I wrote back in 2010. Interesting point of view on things I did myself in the past. Looks like I should apply these visualizations to the new Online Help system as well to get even better results. Thanks!

Sunday, April 07, 2013

First 13 minutes of PharoConf

First 13 minutes of Pharo conference are available as video. Others are in preparation.

Pharo package for Ubuntu

There is now also a special Pharo package for Ubuntu, so you can easily install it. Read more.

Friday, April 05, 2013

Amber Smalltalk Game

A nice demo of an in-browser game developed in Amber Smalltalk is available
since today. Click here to try or read here.

If the demo runs in your browser click on "class browser" to see the code.

Thursday, April 04, 2013

Alan Kay interview

Again an interesting interview with Alan Kay.

Quicksilver

Quicksilver is a tool for the interactive exploration of hierarchical graphs. Code is on SmalltalkHub.
Gofer new
smalltalkhubUser: 'Quicksilver' project: 'Quicksilver';
package: 'Quicksilver';
load
It requires Moose and can be used to create Roassal visualizations like this from a filesystem.

Wednesday, April 03, 2013

Athens Vector graphics tutorial for Pharo

Athens is a new vector graphics API for Pharo. There is now an in-image tutorial from Igor you can use to get used to it. Really nice!

Trying Parasol with Selenium in Pharo Smalltalk

Johan Brichau answered my question from my last post: about the difference between the "Parasol" and "Webtester":
So I gave Parasol a short try today:
  • a fresh Mozilla Firefox was already installed on my machine
  • Parasol still requires old Pharo 1.4, so even when I prefer Pharo 2.0 I downloaded it again
  • I installed the current version selenium-server-standalone-2.31.0.jar of Selenium which can be found here
On Windows (64Bit) I start the JAR with a batch to tell the Java component about the firefox location

java -jar C:\selenium\selenium-server-standalone-2.31.0.jar -Dwebdriver.firefox.bin="C:\Program Files (x86)\Mozilla Firefox\firefox.exe"
pause

Now in Pharo 1.4 image I installed Parasol using:

Gofer new
    url: 'http://ss3.gemstone.com/ss/Parasol';
    package: 'ConfigurationOfParasol';
    load.
((Smalltalk at: #ConfigurationOfParasol) project version: #development) load: 'dev'.

WAKomEncoded startOn: 8080.
Deprecation raiseWarning: false; showWarning: false.

Took a while since it loads Seaside. After anything is set up I can easily script the webdriver/Firefox from a Smalltalk workspace. Here is an example:

"Start the driver and open wikipedia" 
driver := BPRemoteWebDriver new.
driver get: 'http://en.wikipedia.org/'.
"click on search"
(driver findElementByID: 'searchInput') click.

"enter some text"
driver getKeyboard sendKeys: ('Pharo' , (String with: BPKeys return)).

"query some text from the webpage"
Transcript show: ((driver findElementByID: 'mw-content-text') findElementByTagName: 'p') getText.

driver quit

So it is easy to write SUnit tests or automate some tasks you do on the web using Pharo. With the help of F12 in the webbrowser it is easy to find out about element ids, ... in HTML, so one can easily navigate through pages.

I worked with Selenium in Java and other languages already in the past. Parasol is not as comfortable as with the Selenium IDE recorder - but it works and using Smalltalk usually makes one more productive.

It is nice to see that I can now also control the Firefox browser to automate things and write webtests directly from within Pharo Smalltalk.



Parasol - web testing using Smalltalk

There is a project called "Parasol" allowing you to do web testing using Smalltalk. It uses Selenium.


Still dont know what the difference to "WebTester" is - which is another project for webtesting I already blogged about.

Tuesday, April 02, 2013

Pharo and GitFS

There is a GitFS available for Pharo. It is a work in progress and there is already some docu.

Fuel and Tanker demo session

First videos from PharoConf 2013 appear on the net. One video is about Tanker - an experimental package loader. It uses Fuel to do serialization and deserialization and will allow for faster loading.

Didnt know about the debugger menu item to serialize the stack to a .fuel file. Allows to serialize an error stack in case of problem and materialize the stack in another image to reproduce.

Nice - try that with other technologies out there ;)

Code for Fuel is already in Pharo 2.0. The Tanker project is on SmalltalkHub.




Back to the command line with Pharo Smalltalk

Pharo 2.0 allows you to easily deal with the command line. This is very useful if you want to script some daily tasks or your CI builds.

You can pass arguments to the image and also register own command line commands. Just check out the class comment in class "CommandLineHandler" and check its subclasses.

Creating an own handler is easy: just subclass CommandLineHandler with a custom class:


CommandLineHandler subclass: #TimeCommandLineHandler
 instanceVariableNames: ''
 classVariableNames: ''
 poolDictionaries: ''
 category: 'Custom-CommandLine'

Implement a class side method to return the command name:

commandName
 ^ 'time'

and implement an instance side #activate method:

activate
 self activateHelp.
 
 FileStream stdout 
  nextPutAll: '[time] ';
  nextPutAll: Time now asString

Now call it from the command line

    $PATH_TO_VM myImage.image time

and it will print the current time on stdout. Note that the #activateHelp will activate the --help option which displays the class comment of your custom handler class.

Also note that it is now possible to write in colors in a terminal from Pharo as this photo shows (click to enlarge):

 

Get Pharo easily

If you want to install Pharo on your platform you can go to:

         http://files.pharo.org

and download the specific distribution for your platform from the platforms directory. For instance "Pharo2.0-win.zip" for Windows, "Pharo2.0-mac.zip" for Mac and "Pharo2.0-linux.zip" for Linux.

There is also a "Pharo2.0-portable.zip" if you change platforms often (just put it on a USB stick). Also note that Pharo 3.0 is already available there as well - so if you want to help with fixes and changes feel free to do so.

If you visit

      http://get.pharo.org

there is another way to install it. This page includes the Zero conf script allowing you to easily
install Pharo using the command line. For Pharo 2.0 this is:

    wget -O - http://get.pharo.org/20+vm | bash

And you can use:

    wget --quiet -O - get.pharo.org | bash

for the current stable release of Pharo and the PharoVM.

Tuesday, March 26, 2013

Pomodoro for Pharo 2.0

The Pomodoro Technique is a time management method. There is now also a simple timer implementation for Pharo 2.0 available.


You can load the tool right from the config browser and it allows easy scripting from Smalltalk:

   "Provide an action when pomodoro is finished"
   Pomodoro timerFor: 20 minutes 
            whenFinishedDo: [ self inform: 'Pomodoro finished']

Read more about the details here.

Thursday, March 21, 2013

IRC Pharo

The old IRC channel #pharo-project about Pharo is now closed. So if you want to chat about the Pharo environment use the new #pharo channel on freenode.

Moose 4.8 on Pharo 2.0

Moose moved to Pharo 2.0. All tests are green and the team recommends to use Pharo 2.0 in the future.

Wednesday, March 20, 2013

One-click is dead

Even when then new Pharo 2.0 is delivered as a one-click on the homepage, in the future we will see OS specific packages for Win, Linux, Mac, ...
The platform specific builds are already in place.

Squeak 4.4. for RiscOS

Squeak 4.4. is now available for RiscOS too.

Wednesday, March 06, 2013

Cross dialect Smalltalk CI

Do you want to use cross dialect Smalltalk (Pharo, Squeak and GemStone) continuous integration service? Then have a look at "builderCI" from Dale which is using GitHub and TravisCI.

Wednesday, February 27, 2013

OOP - a critical approach

Some years ago I had email exchange with Huw Collingbourne about programming and Smalltalk and  Smallscript/S# in particular. At this time I helped my friend David Simmons a little bit with some early Smallscript releases.

Huw runs the http://www.bitwisemag.com and he had a tutorial on Smalltalk with Squeak and one about Dolphin Smalltalk.

Huw also published an interview with David as the creator of Smallscript. Smallscript (as some of you may know) is still closed and not released into the wild for various reasons. It is still one of the most fascinating software technologies and dynamic scripting environment/language I was able to get my hands on.
But I dont want to write about Smallscript here.

Huw Collingbourne is instructor on programming languages, he wrote books about Ruby and is director of technology at SapphireSteel Software (known for their Ruby IDE).

I found an interesting post about Smalltalk and other programming languages in the context of object oriented programming from Dec 2012 written by Huw:

  https://www.udemy.com/blog/object-oriented-programming-a-critical-approach/

Read it. It should make you think and again remind you that the IT world made no real progress with recent languages and software technologies regarding objects.

Day by day I see so many people write code or writing about OO code (in blogs, papers, ...).
Not all really understood about OOP and its key concepts.

People learn languages like Groovy, CoffeScript or Scala today, the next day they learn Dart or the next language. Sometimes only the syntax changed. But they never looked at OOP, they never looked at its origins in Smalltalk or Lisp because these technologies are "too old" and not mainstream. But they should - it will help fighting complexity and help when the code grows.

Only a few of them ever took the time to look at Smalltalk. And a few of the few people really continued to look and understand that Smalltalk is not really a language. It is a dynamic object system with the language just built in. Even a class is an object and therefore has a class. It can dynamically changed, created or removed and garbage collected like any other object. If you need new control structures just add them as new methods. It's turtles all the way down and the power is in the simplicity: Objects and Messages.

Worked with several languages and environments I learned to know about both worlds. On one side the text file based, often static compiled world (mostly combined with a horrible grammar) that constraints writing good OOP and on the other side a dynamic live environment where you can lively interact with all the objects around either by using code or direct manipulation.

Smalltalk is still the mother of OO languages - you can not get any closer to OOP than within its environment. And it is also opens the door to metaprogramming - something I will write about later here.

I can only recommend it - grab a free copy and learn about it. You will not regret it even if you continue to work with more mainstream technologies.



Tuesday, February 26, 2013

Network Time Protocol in Pharo

Want to sync server times? You can check your local clock agains other servers using the NTP protocol. Sven provides some sample code in his Neo repository. Since the network time protocol (RFC2030) is based on the UDP protocol you now also have a nice example on how to use UDP datagrams.

Sunday, February 24, 2013

BioSmalltalk screenshots and integrated help

BioSmalltalk provides some screenshots of their Pharo based application. Way cool: it uses my HelpSystem which (as the site states) they could integrate in less than an hour work. Nice! But nonetheless I now provide an online version

Pharo Online Help with Markdown support

The Pharo Online Help now has support for the markdown format. I also made a tutorial available on how to use it. Code is on SqueakSource3, but will soon move to SmalltalkHub.

You can try in a clean Pharo 2.0 image, load it using the configuration browser.

Tuesday, February 19, 2013

Smalltalk Jobs

There is a new site for worldwide Smalltalk Jobs: http://SmalltalkJobs.com

PBE 2 as PDF

Want to read "Pharo by Example 2" book as a PDF. Here you go. Update: Now the book PDF is built by the CI Server and you can find the chapters here.