Planet Smalltalk

April 13, 2014

Smalltalk Jobs - Smalltalk Jobs – 4/13/14

  • Hong KongGEM Application Developer (Job ID 140004894) at J.P. Morgan
    • Required Skills:
      • Smalltalk
      • Data modelling
      • Code version control
      • Understanding of performant coding and optimisations
      • Enthusiasm for increasing knowledge of financial markets and products is essential
      • Willingness to adopt an agile development process
      • Clear communication
    • Wanted Skills:
      • VisualWorks
      • Gemstone
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

Independent Misinterpretations - IM 170: Reviving the Dead (Code)

James and David talk about dead, nearly dead, and legacy code that you might need to resurrect, or at least understand

Pharo News - 2nd Visualization Contest with Roassal

ObjectProfile is happy to announce the Second Visualization Contest with Roassal:

What can I win?
- 150 euros, sponsored by ObjectProfile
- a über-cool ObjectProfile T-shirt and some wonderful stickers
- maximum publicity of your work
- a nice award certificate, delivered during ESUG

For the full call, have a look here.

Pierce Ng - Pattern Language for Relational Databases and Smalltalk

As I develop NBSQLite3 (tag, repository), I’ve been surfing the web for material on using Smalltalk with SQL databases effectively. This article, A Pattern Language for Relational Databases and Smalltalk by Kyle Brown and Bruce Whitenack, looks like it is from the late 90s but remains an interesting read.

The Seaside book is a bit light on persistency as is. The Hasso-Platter-Institut Seaside tutorial does present an abstract database wrapper class with these words:

In order to decouple your application from the chosen database system, it is a wise decision to encapsulate the required functionality within a separate database wrapper class. This class provides an interface for the required persistence functionality of the application but leaves the concrete implementation of those functions to its subclasses.

April 12, 2014

ESUG news - [ANN] Amber 0.12.4 released

April 11, 2014

ESUG news - ESUG 2014: Call for Contributions

22st International Smalltalk Joint Conference - Call for Contributions

This call includes:


For the past 22 years, the European Smalltalk User Group (ESUG) has organised the International Smalltalk Conference, a lively forum on cutting edge software technologies that attract people from both academia and industry for a whole week. The attendees are both engineers using Smalltalk in business and students and teachers using Smalltalk both for research and didactic purposes.

As every year, this year's edition of the largest European Smalltalk event will include the regular Smalltalk developers conference with renowned invited speakers, a Smalltalk camp that proves fruitful for interactions and discussions. This year will be held the 10th edition of the Innovation Technology Awards where prizes will be awarded to authors of best pieces of Smalltalk-related projects and an international workshop on Smalltalk and dynamic languages

You can support the ESUG conference in many different ways:

Sponsor the conference. New sponsoring packages are described at http://www.esug.org/wiki/pier/About/BecomeSponsor

  • Submit a talk, a software or a paper to one of the events. See below.
  • Attend the conference. We'd like to beat the previous record of attendance (170 people at Amsterdam 2008)!
  • Students can get free registration and hosting if they enroll into the the Student Volunteers program. See below.

Developers Forum: International Smalltalk Developers Conference

We are looking for YOUR experience on using Smalltalk. You will have 30 min for presentations and 45 min for hand-ons tutorial.

The list of topics for the normal talks and tutorials includes, but is not limited to the following:

Teaching Pearls and Show us Your Business

We expect to have several 10 to 15 min sessions aggregated.


How to submit?

Pay attention: the places are limited so do not wait till the last minute to apply. Prospective presenters should submit a request to Stephane.Ducasse at inria.fr AND USE THE following header [ESUG 2014 Developers].

Please follow the template below the email will be automatically processed!

  Subject: [ESUG 2014 Developers] + your name
  First Name:
  Last Name:
  Email where you can always be reached:
  Title:
  Type: Tutorial/Talk/Teaching Pearl
  Abstract:
  Bio:

Any presentation not respecting this form will be discarded automatically

International Workshop on Smalltalk Technologies

Read the page: http://www.esug.org/Conferences/2014/IWST14

Technology Award Competition

The top 3 teams with the most innovative software will receive, respectively, 500 Euros, 300 Euros and 200 Euros during an awards ceremony at the conference. Developers of any Smalltalk-based software are welcome to compete.

More information at http://www.esug.org/Conferences/2014/

Student Volunteer Program

If you are a student wanting to attend ESUG, have you considered being a student volunteer? Student volunteers help keep the conference running smoothly; in return, they have free accommodations, while still having most of the time to enjoy the conference. More information at

We hope to see you there and have fun together.

JR's Smalltalk 4 You - ST 4U 556: Basic VA Usage 7 - Tests

Today we'll create a test case for our simple counter app, and explain how test cases are exercised in VA

Nicolas Petton - Amber 0.12.4 released!

April 11, 2014

After 3 months of development, we are happy to announce the release of Amber 0.12.4.

Highlights:

  • Several improvements in Helios, including UI-related and debugger improvements
  • Loading Amber without cloning the repository has been simplified
  • A new documentation (in progress) can be found at http://docs.amber-lang.net/[1]

Commits: https://github.com/amber-smalltalk/amber/compare/0.12.3...0.12.4[2]

Issues: https://github.com/amber-smalltalk/amber/issues?milestone=12&state=closed[3]

Install Amber 0.12.4 from here!

Comments

Torsten Bergmann - Amber, Pharo and Websockets

Working with Websockets using Amber on the client, Pharo on the server:




Read more here or try the application yourself.

April 10, 2014

Cincom Smalltalk - Call for Contributions ‒ 22nd International Smalltalk Joint Conference

For the past 22 years, the European Smalltalk User Group (ESUG) has organized the International Smalltalk Conference—a lively forum on cutting-edge software technologies that attract people from both academia and industry for an entire week.

Noury Bouraqadi - PhaROS-Based Tracker Robot

Xuan Sang Le is a PhD student who has joined our team mid-february. His work is co-supervized by Ecole des Mines and ENSTA is about speed optimization of Smalltalk robotic software by means of FPGAs. The first step is to develop an application fully in Smalltalk and our PhaROS Robotics framework that will serve as… Continue reading

ESUG news - 2nd Visualization Contest with Roassal

ObjectProfile is happy to announce the Second Visualization Contest with Roassal:

What can I win?

  • 150 euros, sponsored by ObjectProfile
  • a über-cool ObjectProfile T-shirt and some wonderful stickers
  • maximum publicity of your work
  • a nice award certificate, delivered during ESUG

How can I win?

  • you have to produce a visualization with Roassal. You can use the Pharo, VisualWorks or VAST version of Roassal. Here is an example of what we expect http://bit.ly/sunburstDemo or http://bit.ly/GraphET
  • making a video is mandatory. The video will weight the most in our decision. The video could be of any length and has to include your name and say that is was made (partly or completely) with Roassal. No need to talk, just show off!
  • making your code available and easy to install will help you get more points

How can I submit?

  • send the links of your video and other material (if needed) to info@objectprofile.com Every email you will send to this email will be acknowledged. If you do not receive a 'Ok' from us, it means we haven't read it, in that case send your email again after a few days.
  • the deadline for submitting is August 11, 2014

Mini FAQ?

  • Is the object-profile team allowed to participate? No
  • Should my visualization or code be open source? No need for this, whatever license is fine. However your video has to be public.
  • How can I get more information? Just comment on the facebook or using Twitter @ObjectProfile or send email to info@objectprofile.com or the pharo or moose mailing list
  • What I submit two different videos? Yes, no problem with that
  • How will judge the videos? both the esug community and the object profile team. The Esug community will have 30% of the final grade, object profile the remaining 70%

Cheers, The profilers

Pharo News - Artefact PDF Success Stories

The website of the Artefakt PDF Frameworks now lists some successful users:

            https://sites.google.com/site/artefactpdf/succes-stories

External Page: vignettespesenfuchs.png

Pharo Weekly - DigitalOcean initial support

Sean De Nigris announced a first initial support for DigitalOcean. Here is the mail sent by its author.

The embryo is alive. See documentation at
http://smalltalkhub.com/#!/~SeanDeNigris/DigitalOcean

A few supported operations:
DoDroplet allActive.
DoDroplet allActive detect: [ :e | e name = 'mycooldomain.org' ].
DoDropletSize all.
DoDropletSize named: ’512MB’


April 09, 2014

JR's Smalltalk 4 You - ST 4U 555: Basic CST Usage 6 - Testing

Today we'll load support for unit testing, and create a unit test for our simple class

Pharo News - Consortium: New Gold Member Lam Research

The Pharo Consortium is very happy to announce that Lam Research has joined the Consortium as a Gold Industrial Member.

More about
     - Lam Research: http://lamrc.com
     - Pharo Consortium: http://consortium.pharo.org

The goal of the Pharo Consortium is to allow companies to support the ongoing development and future of Pharo.

Individuals can support Pharo via the Pharo Association:  http://association.pharo.org

April 08, 2014

Pharo News - Consortium: New Bronze Member Ta Mère

The Pharo Consortium is very happy to announce that Ta Mère has joined the Consortium as a Bronze Industrial Member.

More about
      - Ta Mère: http://tamere.eu
      - Pharo Consortium: http://consortium.pharo.org

The goal of the Pharo Consortium is to allow companies to support the ongoing development and future of Pharo.

Individuals can support Pharo via the Pharo Association:  http://association.pharo.org

ESUG news - MOOSEDay@UPMC 2014

The aim of this 2 day conference is to bring together both researchers and practitioners that are working on software and data analysis with the MOOSE platform. MOOSE is an open-source platform since 1996 and is supported by several research groups around the world, and is increasingly adopted in industrial projects.

The MOOSEDay@UPMC 2014 conference will be a unique opportunity to exchange information and knowledge, and provide a forum for discussion of new research results, best practices and case studies.

The conference will take place at Pierre and Marie Curie University in Paris during June 5-6, 2014. The conference will be free.

http://www.doesnotunderstand.org/MOOSEDayUPMC/

Pharo News - Renoir.St: cascading style sheet generation

Renoir.st is a DSL enabling programmatic cascading style sheet generation for Pharo Smalltalk.

Goals:
-Improve CSS integration with existing Web Frameworks
-Write & refactor in Smalltalk, deploy to CSS

More information here: https://github.com/gcotelli/RenoirSt

April 07, 2014

JR's Smalltalk 4 You - ST 4U 554: Basic CST Usage 5, Debugging

Continuing with the basic usage scenario for Cincom Smalltalk, today we'll do some debugging

April 06, 2014

Independent Misinterpretations - IM 169: Gemtalk

James and David speak to James Foster about Gemtalk, and what's been going on with the Gemstone/S product suite

Pharo Weekly - Commits: March 21-30

30814

30813

30812

30809

30808

30807

30806

30805

30803

30802

30801

30800


Pharo Weekly - Getting AST Visual in 3 min

There was one announce about C# tool to see ASTs and Alexandre Bergel shows that within minutes you could get the same in Pharo with roassal :). Here is what he is saying:

I am not sure to what syntax visualization is useful for, but indeed, this is easy in Roassal. Assuming a class MyVisitor, that simples collect the nodes of the AST.

| ast visitor g |
“We get the nodes from the AST”
ast := RBParser parseMethod: (ArrayTest>>#testReplaceFromToWithStartingAt) getSource.
visitor := MyVisitor new.
ast acceptVisitor: visitor.”Visualization”
g := RTGraphBuilder new.
g node
if: #isMessage shape: (RTEllipse new size: 10; color: Color red ) + (RTLabel new text: #selector);
if: #isReturn shape: (RTEllipse new size: 10; color: Color red );
if: #isBlock shape: (RTBox new size: 10; color: Color blue );
shape: (RTEllipse new size: 10; color: Color gray ).
g layout use: RTTreeLayout new.
g edge connectTo: #parent.g addAll: visitor nodes.

g applyLayout.
g view

Screen Shot 2014-04-05 at 9.56.35 PM

Pierce Ng - Parsing RSS with Pharo Smalltalk

Soup is a port of the Python Beautiful Soup HTML parser.

Load it:

Gofer new 
    smalltalkhubUser: 'PharoExtras' project: 'Soup';
    package: 'ConfigurationOfSoup';
    load.
(ConfigurationOfSoup project version: #stable) load.

Soup can be used to parse RSS.

| s |
s := Soup fromString: (ZnEasy get: 'http://samadhiweb.com/blog/rss.xml') contents.
((s findTag: 'channel') findAllChildTags: 'item') do: [ :ele |
    Transcript show: (ele findTag: 'title') text; cr ].
Transcript flush.

The above code produces the following output:

ROE with NBSQLite3
Enduring
Scaling Web Applications on PostgreSQL
NBSQLite3 - NativeBoost SQLite for Pharo
OSX NativeBoost FFI Oddity

Tested on Pharo versions 2.0 and 3.0 beta.

Smalltalk Jobs - Smalltalk Jobs – 4/5/14

  • Columbus, GAComputer Programming Tutor through WyzAnt Tutoring
    • Required Skills:
      • Knowledge of Smalltalk-X
      • A love of learning
      • Excellent communication skills
      • Expertise in a variety of disciplines
      • Passion for helping others learn and succeed
    • Pay: Set your own rate (most tutors charge between $30-60/hour)
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

April 04, 2014

Noury Bouraqadi - Journées Nationale Robotique Humanoïde et Architecture de Contrôle en Robotique (JNRH-CAR) 2014

Faisant suite aux différentes précédentes éditions des JNRH et JNCAR, les GT Robotique Humanoïde et Architecture de Contrôle en Robotique (http://www.gdr-robotique.org) et l’Université de Versailles Saint Quentin (Laboratoire LISV) ont le plaisir de vous annoncer la tenue des journées nationales de la robotique humanoïde et des architectures de contrôle des robots les lundi 23 et… Continue reading

Marten Feldtmann - Gemstone/S – PUM 01.02.26

Thanks to James Foster there is now no problem anymore to transfer large source content via jade to Gemstone. Its available in the latest version of Jade.

The last posting had been done for 01.02.08 – where are we now:

-> I changed the enumeration structure to add a comment value to each enumeration entry.

-> Now its possible to mark a special enumeration class definition as error definition enumeration. The comment entry is then the US content of that error message. PUM generates source code to have easier access to all various error messages from REST-Call classes and the main service class.

-> Initial generation of testing Javascript source code to model the Sencha ExtJS4 model definition. This is just a testing phase to look how to support base ExtJS4 and Sencha Architect.

-> Now its possible to create Array based definition for instance variables to base types (String, Integer, …). Therefore we had to change the Swagger support also.

-> Generation of testing Neo-CSV support code …


Filed under: Smalltalk Tagged: ExtJS, Gemstone, PUM, Sencha

JR's Smalltalk 4 You - ST 4U 553: Basic VA Usage 6

Today we'll start adding a new TestCase subclass to our application - which requires a few interactions with Envy first

Nicolas Cellier - Little rant about some runaway pharo refactorings

I'm still trying to explore different ways to play with MC/git/filetree on the pharo-vm substrat.

But there's a serious hurdle, it's named Pharo2.0 image, and unfortunately the VM is produced by this brand.

IMO, it's the worst brand ever. I much much prefer Pharo3.0.

Pharo2.0 tools are constantly getting on my way, here is a small example of a disastrous change.

I have merged several branches directly with git in a batch, I know it won't managed MC meta data, but I want  to see how it goes.
In parallel, I have merged the MC version from package-cache at image side.
When I try to save my merged package on filetree with MC, there is a wait dialog opening but not progressing.
 

Hmm let's interrupt with CMD+SHIFT+. the process is blocked in resultSemaphore wait 
MCRepositoryGroup>>includesVersionNamed: aString
    " check for existing version name in parallel over all repositories "
    | resultSemaphore results |
    resultSemaphore := Semaphore new.
    results := Array new: self repositories size.
   
    self repositories doWithIndex: [:repository :index |
        " fork of test for each repository "
        [[ results
            at: index
            put: (repository includesVersionNamed: aString)
        ] ensure: [ resultSemaphore signal ]] fork ].

    " wait for all requests to finish "
    self repositories size timesRepeat: [ resultSemaphore wait ].
    " check if any repository included the given versionName already"
    ^ results anySatisfy: [:result| result = true ]  
 


Huh? The purpose of anySatisfy: is to exit the loop at first match.
Here we will scan all the repositories, in parallel (well there is a single native thread so far, but this can eventually avoid some long network interrupts if only I/O are non blocking).
Alas, in all case, it will scan all repositories, a tremendous work defeating the purpose of anySatisfy:. Not even thinking what will happen if one is unreachable?
Though, it can make an interesting subject for a future post: how to implement a real parallel version of anySatisfy: that is to launch several processes, stop them at this first positive hit and return?

But there is worse than this unprogressive dialog, since I broke a filetree monticello.meta/version via incorrect git merge, a debugger wanted to open in background, but didn't until I manually interrupted the wait. Ah great tools.

Now let's see how it was cleaned up in Pharo 3.0:

includesVersionNamed: aString
    " check for existing version name in parallel over all repositories "
    | results |

    results := Array new: self repositories size.
   
    self repositories doWithIndex: [:repository :index |
        " fork of test for each repository "
        results
            at: index
            put: (repository includesVersionNamed: aString) ].

    " check if any repository included the given versionName already"
    ^ results anySatisfy: [:result| result = true ] 


Good to sea there is no more fork but in the comments! For sure Pharo code is better... than Pharo.
But don't you see several smells remaining?

In parallel, take a look at Squeak method:

includesVersionNamed: aString
    ^ repositories anySatisfy: [ : each | [each includesVersionNamed: aString] on: Error do: [false]]



OK, OK, Pharo has a license to break things when they are too much entangled. It's not my favourite strategy, but it can reward faster, especially when starting from Squeak.
But in this particular case I fail to see how. Bad code is bad code.

OK, OK, It's easy to pick one wrong fix and criticize.
But the problem is that 2.0 tools are so unusable that I'm quite sure that such wrong refactorings are not isolated.

Squeak is plenty of dust and has room for improvment, no doubt about that.
But it took many years to accumulate all that mud in Squeak, I would say.
If Pharo is accumulating its own at this pace, waouh, I better understand now how the number of closed issues can grow exponentially ;)

Hey, it's a joke, I don't want to ruin the moral of Stephane and Marcus, so I'll mitigate: I see plenty of positive refactorings coming with 3.0, and I wish Pharo will succeed in making a better Squeak. So please enforce the reviews!
Count this post as my contribution of the day to the review process.

April 03, 2014

Nicolas Petton - Running Helios as a desktop app

April 3, 2014

I just pushed on the nw-helios-app branch a working version of Helios running as a desktop app, remotely connected to an Amber app.

niflheim

Figure 1: Niflheim theme

To try it yourself, you’ll first need to install node-webkit then run from the `hw-helios-app` branch:

nw helios.nw

Comments.