Planet Smalltalk

July 02, 2015

Andres Valloud - Camp Smalltalk Portland 2015 --- registration is open!

Camp Smalltalk Portland 2015 in beautiful Oregon is go for August 21st through the 23rd!  (and if you arrive earlier on the 20th that's cool too)  Please register for the event here --- help us by filling in the questions so you can get your event shirt.  And also see that we're having a BBQ with live music on Saturday.  You can't miss it!

July 01, 2015

Pharo Weekly - Another Quake Like Editor

Hello Everyone,

I started making a Quake style level editor using Woden. I made an initial demo in this video:

https://youtu.be/YDLwGNlAy5U

I am creating an user interface similar to the one present in Blender. Currently I have these commands:

G: Grab tool
S: Scale tool
E: Expand tool
X: Delete selected
Shift-A: Add block

Greetings,
Ronie

Torsten Bergmann - Yaqe - Yet Another Quake Editor for Pharo

Ronie is working on a Quake style level editor using Woden (World Dynamic Engine for Pharo), a with a user interface similar to the one present in Blender. Video is below and code is here.


 

June 30, 2015

ESUG news - Camp Smalltalk PDX --- August 21st through the 23rd

Camp Smalltalk Portland 2015 is go for August 21st through the 23rd! (and if you arrive earlier on the 20th that's cool too) Please register for the event here:

https://www.picatic.com/event14352674835773927

Help us by filling in the questions so you can get your event shirt. And also see that we're having a BBQ with live music on Saturday.

Torsten Bergmann - Interactive Table with Pharo

Interactive table support in Pharo (thanks to the new OS window architecture). Thanks Thales for the sponsoring!

 

Torsten Bergmann - Example of Recognizer with Pharo

Torsten Bergmann - Modern Events Touch and Gestures in Pharo

Torsten Bergmann - Camp Smalltalk Portland 2015

Camp Smalltalk Portland, August 21st through the 23rd: Register here.

Andres Valloud - Camp Smalltalk Portland 2015

Dear artful programming enthusiasts,

The Pacific Northwest Smalltalk crew would like to invite you to Camp Smalltalk PDX this summer.  Come join us August 21-23 in beautiful Portland, Oregon!

We all know coding is a lot of fun, and that the best coding is done with the delete key.  Accordingly, Camp Smalltalk PDX will be at Portland’s CTRL-H hackerspace, http://www.ctrlh.org.

There is no set schedule, but of course we all have strong interests.  Some of the areas that will surely be covered include:

* Smalltalk on small devices, such as Scratch on Raspberry PI
* Web frameworks such as Seaside
* Virtual machine implementations
* Data processing applications
* Language design, Smalltalk and beyond

If you are curious about Smalltalk, feel free to drop by and give Smalltalk a try.

And yes, there are also the well known regulars --- we all know who you are :).  It’s time to catch up and plot inventing our future.

Feel free to contact us directly if you have questions regarding travel or accommodations.  Also, if you know you will be coming and you haven’t completed our survey yet, doing so will help us coordinate the infrastructure around the event: http://goo.gl/forms/XVLOLRe8OF.  For event information, see here: http://www.pdx.st/.  As the dates get closer, additional organization information may become available here: http://wiki.squeak.org/squeak/811.


See you in Portland!

Torsten Bergmann - ESUG 2015

June 29, 2015

Torsten Bergmann - Squeak Website

Squeak Smalltalk got a fresh new look on the

 http://squeak.org

website,

The Weekly Squeak - Check out the New Squeak Website

SqueakWeb

A lot of work has gone into the new Squeak.org website.  Go check it out!

Nice work to everyone that worked on it, it’s beautiful and well organized!

[announcement on Squeak-dev]

Dear Smalltalkers

I am pleased to announce new look of the Squeak Website

http://squeak.org

Personally, I want to thank Fabio Niephaus, who invested a lot of effort into the new site.

Best regards

-Tobias Pape


Torsten Bergmann - MetaBorg

MetaBorg, a framework for building board games. Read more here and browse code here.

Pierce Ng - UnQLite Jx9

I’m playing with Masashi Umezawa’s PunQLite wrapper for unQLite. UnQLite provides both a key-value store and, interestingly, a JSON document store based on an embedded programming language named Jx9.

Here’s an example Jx9 program:

if (db_exists("students")) {
  db_drop_collection("students");
}
db_create("students");
$s = { name: "james", age: 26 };
db_store("students", $s); 
$sid = $s.__id;

And here’s Smalltalk code to execute the above Jx9 program:

| j db |

j := '...'. "Above Jx9 program."

db := PqDatabase openOnMemory.
[   db jx9Do: [ :exe |
        exe compile: j.
    exe execute.
    Transcript show: exe @ 'sid' asString; cr ]
] ensure: [ db close ]

PunQLite supports extracting values from an executed Jx9 program, as in “exe @ ‘sid’” above. PunQLite currently does not support UnQLite’s APIs for exchanging JSON objects between Smalltalk and an Jx9 program which provide functionality similar to parameter binding in SQL APIs. That means Jx9 programs, including data to be stored, has to be constructed from strings… As OWASP says about NoSQL injection:

Because these NoSQL injection attacks may execute within a procedural
language , rather than in the declarative SQL language, the potential
impacts are greater than traditional SQL injection. 

June 27, 2015

Pharo Weekly - DragPanels: Floating palette windows with drag-and-drop in Morphic

Morphic offers everything needed to create highly interactive applications in Pharo. It is however, difficult to find out how to actually create those applications. Morphic tutorials provide a starting point, and are not very good at showing how the different features interact and are supposed to be used together. Morph has lots of methods, and some of them are not in the method category where you might expect them. The result is that most Morphs in Pharo do not use much of what Morphic has to offer.

Wouldn’t it be great if there would be some sample code, showing how Morphic can be used to great effect?

Well, here is some code that takes a first step towards that goal.
DragPanels shows how to create a floating palette, filled with
wells that support dragging a property towards a target. It shows how to combine drag-and drop with click: and context menu actions, and show  to give UI feedback when over a well and when holding the mouse down over an element that reacts to click:.

You can see the code in action here:
https://vimeo.com/131889858

The color panel shows some colors. If you don’t set the allowDropBlock,
it will work with any morph that responds to #color: (like the world).
By clicking on the plus, you can add more colors to the panel. The panel has a context menu to restore the default values.

ColorPanel withSevenPaleColors
allowDropBlock: [ :source :target |
target class = CardMorph ];
openInHand

The people panel shows avatars belonging to an email addres. By default it uses gravatar for them, and caches the images.

PeoplePanel new
defaultValues:
#(‘stephan@stack.nl
serge.stinckwich@gmail.com
nicolas.anquetil@inria.fr
thierry.goubier@gmail.com
stephane.ducasse@inria.fr
marcus.denker@inria.fr‘);
allowDropBlock: [ :source :target |
target class = CardMorph ];
openInHand

When dropping, the dragSource sends #color: resp. #email: to the  target by default. By setting the dropSelector of the DragWell this
can be overridden.

You can try the code by do-ing

Gofer new
smalltalkhubUser: ‘StephanEggermont’ project: ‘Dragpanels’
package: ‘DragPanels';
load.

It is used in (a work in progress)

Gofer new
smalltalkhubUser: ‘StephanEggermont’ project: ‘Documentation’
package: ‘CardsMorphic';
load.

Stephan

p.s.

On the wishlist are
– add more color palettes
– add a dark theme, refactoring the colors
– add a small close cross in the title bar of the palette
– define the dropSelector in the panel, not the well
– support different sized wells, refactoring the sizes
– make the mouseOver rectangle color content dependent
– add pharo contributors as an avatar source
– add a configuration


June 26, 2015

Torsten Bergmann - Roassal - New Preview for ESUG 2015

ObjectProfile is working hard on new Roassal visualizations. A preview of what will be presented will be found in this video.

Torsten Bergmann - Morphic Scrum Board Part 2 - DragPanels

Torsten Bergmann - Roundtrip

When I use Eclipse and Java I still like the nice eUML2 AddOn Tools as they allow to define quickly a conceptual model in UML. It's also the only tool I've found for Java that is able to support roundtrip engineering and that allows you to keep close to the code while still doing modeling.

DynaCase for Pharo looks promising but such roundtrip tools are still missing in the Pharo tools universe.

Torsten Bergmann - Demo stories

Tudor gave a demo on demoing stories including a demonstration of Spotter. Video is here.

Torsten Bergmann - Sonar importer for Moose

June 25, 2015

Pharo Weekly - Choose your high goal and tell its story through the system that you build

Hi,

I gave last week a talk at NDC Oslo on “Don’t demo facts. Demo stories!”. While the talk is less technical, I did exemplified the message by demoing Spotter in comparison with the search support from Eclipse. https://vimeo.com/131632605
There are several things I would like to emphasize.
I compared our solution with an “industry standard” one. We often think our system as being niche and perhaps not mature enough. We need to change that perception about our work. We build state of the art.
One thing that I did not mention explicitly in the talk is the size of the implementation. The Spotter implementation is 3500 lines of code — and that it is so large because it currently comes with its own widgets. Furthermore, the extensions average 8 lines per custom processor (including the method header and the pragma). This is orders of magnitude smaller than what is typically out there, and it is precisely the reason why we can compete even if we are fewer.
But, to get out there and compete we have to set that high goal for ourselves. For example, with GT we do not want to compete. We want to outcompete. So can you.
While details are important, high goals require us to get away from those details. Only polishing details will tend to limit you to incremental improvements. We need to jump from time to time. But, these jumps are hard. On the one hand, it is hard to find the right jump and convince people to jump with you. On the other hand, they are hard to predict. For example, Spotter would have not been predictable one year ago.
Yet, dry goals are not enough to keep us going. We need stories that make us dream. And the beauty is that Pharo breaths such a story. We should not limit ourselves to that story only. For example, with GT we want to reinvent the developer experience by making the developer be able to mold visual tools to her context because that is the only effective way to build sustainable systems. This little point of view will turn the IDE upside down, and this is only possible in a system like Pharo.
Choose your high goal and tell its story through the system that you build. And remember that Pharo already offers a beautiful story to start from.

Pharo Weekly - Sonar importer for Moose

Hi,

I would like to announce that I developed a Sonar importer to get sonar data into a Moose model.

It imports the list of metrics and projects available in the Sonar repository.

On demand, it imports chosen metrics for all the projects. I let you see the tests and documentation to check the behavior of this importer.

The configuration is on the Pharo catalog, so it is very easy to load it (else the repo is here).

The importer is based on the public Sonar REST API Version 3.7.2, but should work with recent ones.

Don’t hesitate to contribute if you want to add new features, the project is in public access!

Cheers,

Vincent


Torsten Bergmann - Unified IDE

Lots of new editors for JavaScript appear - Atom, Brackets, ... and now Nuclide.

The web page of the last one tells us that Nuclide is a "A unified IDE". Hey - wake up! It is just a fancy editor - nothing more and I really wonder if these guys have ever see a real unified IDE with browsers, refactoring tools, test runner etc.

June 24, 2015

Pharo Weekly - Pharo is pulsing steady and regular

50133
15831 Replace PluggableTextMorph with RubScrolledTextModel in Nautilus for source code
https://pharo.fogbugz.com/f/cases/15831

15832 Integrate new FastTable
https://pharo.fogbugz.com/f/cases/15832
50132
15568 removeClass does not work for Last modified/Most viewed DynamicGroups
https://pharo.fogbugz.com/f/cases/15568

15827 Update Rubric
https://pharo.fogbugz.com/f/cases/15827

15272 RBPatternMessageNode>>match:inContext: SubscriptOutOfBounds
https://pharo.fogbugz.com/f/cases/15272
50131
12728 requestImplementorToInline: is missing in NautilusRefactoring
https://pharo.fogbugz.com/f/cases/12728

15828 NECController must check that its editor morph is not nil before unsubscribing from it
https://pharo.fogbugz.com/f/cases/15828

15826 Clean up discouraged uses of SourceFiles and friends (10)
https://pharo.fogbugz.com/f/cases/15826

50130
15825 Move Reflectivity changes from Opal into a Opal translator subclass (part1)
https://pharo.fogbugz.com/f/cases/15825

15824 Clean up discouraged uses of SourceFiles and friends (9)
https://pharo.fogbugz.com/f/cases/15824

50129
15823 Clean up discouraged uses of SourceFiles and friends (8)
https://pharo.fogbugz.com/f/cases/15823
50128
15818 Clean up discouraged uses of SourceFiles and friends (7)
https://pharo.fogbugz.com/f/cases/15818

50126
15813 Reflectivity: #value for ReturnNodes
https://pharo.fogbugz.com/f/cases/15813

50125
15812 MessageNotUnderstood: RGMethodDefinition>>ast (Suggestions expects it)
https://pharo.fogbugz.com/f/cases/15812

15791 Cleanup Script actions for methods
https://pharo.fogbugz.com/f/cases/15791

15557 New PackageManifests should be classes, not instances
https://pharo.fogbugz.com/f/cases/15557

50124
15809 Update Rubric
https://pharo.fogbugz.com/f/cases/15809
50123
15806 Clean up NautilusRefactoring
https://pharo.fogbugz.com/f/cases/15806

15805 support #newValue on assignmentNode + cleanups
https://pharo.fogbugz.com/f/cases/15805

15807 Revisiting RBUnpackagedCodeRule
https://pharo.fogbugz.com/f/cases/15807

15801 MorphTreeMorph improvement
https://pharo.fogbugz.com/f/cases/15801

50122
15801 MorphTreeMorph improvement
https://pharo.fogbugz.com/f/cases/15801
50121
15799 replace last #gather: reference
https://pharo.fogbugz.com/f/cases/15799

15800 Fix concurrency problem with RemoteString
https://pharo.fogbugz.com/f/cases/15800

15795 Playground enter does not work well anymore
https://pharo.fogbugz.com/f/cases/15795

15793 Better comment for Margin
https://pharo.fogbugz.com/f/cases/15793

13463 Monticello Browser doesnt scroll packages correctly
https://pharo.fogbugz.com/f/cases/13463

50120
15789 Progress with reifications
https://pharo.fogbugz.com/f/cases/15789

7367 Nautilus Colors “not in this package” methods differently on instance/class sides
https://pharo.fogbugz.com/f/cases/7367

15794 Clean up discouraged uses of SourceFiles and friends (5)
https://pharo.fogbugz.com/f/cases/15794
50119
15788 Clean up discouraged uses of SourceFiles and friends (4)
https://pharo.fogbugz.com/f/cases/15788

15785 Fix do it etc in class comment in Nautilus
https://pharo.fogbugz.com/f/cases/15785
50117
15783 First cleanup of Workspace
https://pharo.fogbugz.com/f/cases/15783

15778 The meaning of command-click (apple-click) on class names changed from Browse class to References to class
https://pharo.fogbugz.com/f/cases/15778

15779 Clean up discouraged uses of SourceFiles and friends (3)
https://pharo.fogbugz.com/f/cases/15779

15724 RB lint rules should not directly query the system dictionary
https://pharo.fogbugz.com/f/cases/15724
50116
15754 New Code Critic for unary “accessing” methods without explicit returns
https://pharo.fogbugz.com/f/cases/15754

15739 lastKeystroke broken
https://pharo.fogbugz.com/f/cases/15739

15146 Spec TabManagerModel>>selectedTab: aTab manipulates with Morphic tab
https://pharo.fogbugz.com/f/cases/15146

15781 Fix TraitMethodDescriptionTest>>testArgumentNames
https://pharo.fogbugz.com/f/cases/15781
50115
15776 Clean up discouraged uses of SourceFiles and friends (2)
https://pharo.fogbugz.com/f/cases/15776

15681 Manifest-CriticBrowser
https://pharo.fogbugz.com/f/cases/15681

15775 remove some “halt” that where left over
https://pharo.fogbugz.com/f/cases/15775

50114
15765 OrderedCollection>>#at: and #at:put is slow
https://pharo.fogbugz.com/f/cases/15765

15753 wrong styling for comments
https://pharo.fogbugz.com/f/cases/15753

15770 Methods are in wrong protocol on ThemeIcons
https://pharo.fogbugz.com/f/cases/15770

15711 The File Browser has a Context Menu “Workspace with Contents”. It opens an Edit Window (String Morph), but not a Workspace …
https://pharo.fogbugz.com/f/cases/15711
50113
15276 radioUnselectedFormContents and radioSelectedFormContents broken in Pharo3UIThemeIcons
https://pharo.fogbugz.com/f/cases/15276

15766 remove explicit isKindOf: PluggableTextFieldMorph in rubric
https://pharo.fogbugz.com/f/cases/15766

15767 remove explicit isKindOf: PluggableTextFieldMorph
https://pharo.fogbugz.com/f/cases/15767

50111
15761 remove package Tool-Browser-Old
https://pharo.fogbugz.com/f/cases/15761

14614 FileList is not working
https://pharo.fogbugz.com/f/cases/14614

15640 Call to obsolete method in LinearGradientPaint class
https://pharo.fogbugz.com/f/cases/15640
50110
15746 clean up RPackage-SystemIntegration
https://pharo.fogbugz.com/f/cases/15746

15681 Manifest-CriticBrowser
https://pharo.fogbugz.com/f/cases/15681

15718 Remove StringHolder
https://pharo.fogbugz.com/f/cases/15718

15532 Methods in Object category drag and drop should be a Morphic extension
https://pharo.fogbugz.com/f/cases/15532
50109
15660 Add String methods for removing prefix/suffix
https://pharo.fogbugz.com/f/cases/15660

15756 Move FileStream usages to File and Friends
https://pharo.fogbugz.com/f/cases/15756

15759 Remove debug code from ASMJit
https://pharo.fogbugz.com/f/cases/15759

15718 Remove StringHolder
https://pharo.fogbugz.com/f/cases/15718
50108
15740 openInWorld: aPasteUpMorph raises MNU PasteUpMorph>>startSteppingSubmorphsOf:
https://pharo.fogbugz.com/f/cases/15740

15726 unimplemented methods for new change list
https://pharo.fogbugz.com/f/cases/15726

15720 RubTextEditor references StringHolder
https://pharo.fogbugz.com/f/cases/15720
50107
15741 PluggableTextMorphWithLimits should be removed
https://pharo.fogbugz.com/f/cases/15741

15749 RB: Dont Add Parens Around Lit Array Elements
https://pharo.fogbugz.com/f/cases/15749

15751 catalog (with spotter) needs to show projects after classes and packages
https://pharo.fogbugz.com/f/cases/15751

15752 make browsing versions of removed methods working again
https://pharo.fogbugz.com/f/cases/15752
50106
15745 add API to enumerate AST nodes
https://pharo.fogbugz.com/f/cases/15745

15747 cleanup tools to get rid of undeclared
https://pharo.fogbugz.com/f/cases/15747

15748 Reflectivity: fixes for reifications
https://pharo.fogbugz.com/f/cases/15748

15703 integrate new Catalog Browser
https://pharo.fogbugz.com/f/cases/15703

50105
15735 Start to move RPackage-SystemIntegration to into RPackage
https://pharo.fogbugz.com/f/cases/15735

15744 CatalogBrowser moved to PharoExtras
https://pharo.fogbugz.com/f/cases/15744

15742 Small clean up in ChangesBrowser
https://pharo.fogbugz.com/f/cases/15742

50104
15636 PharoTutorial contents
https://pharo.fogbugz.com/f/cases/15636

15731 Kill the last two #asTimeStamp methods
https://pharo.fogbugz.com/f/cases/15731

15734 More tests for reifications
https://pharo.fogbugz.com/f/cases/15734


Cincom Smalltalk - Smalltalk Digest: June Edition

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

Pharo News - Job Offer | 1 year Post-Doc/Research & Teaching Assistant

<p>A 12 months position for a post-doc/Research &amp; teaching assistant is available at Ecole des Mines de Douai (France). Applicants should have a PhD degree.</p> <p>Find out more about the work at Ecole des Mines (Pharo and Robotics) at <a href="http://car.mines-douai.fr">http://car.mines-douai.fr</a>.</p> <p>Contact <a href="http://car.mines-douai.fr">Noury Bouraqadi</a> for more information.</p>

Pharo News - Job Offer | 1 year Post-Doc/Research & Teaching Assistant

<p>A 12 months position for a post-doc/Research &amp; teaching assistant is available at Ecole des Mines de Douai (France). Applicants should have a PhD degree.</p> <p>Find out more about the work at Ecole des Mines (Pharo and Robotics) at <a href="http://car.mines-douai.fr">http://car.mines-douai.fr</a>.</p> <p>Contact <a href="http://car.mines-douai.fr">Noury Bouraqadi</a> for more information.</p>

June 22, 2015

Torsten Bergmann - Babelsberg/S

allows for Object-Constraint Programming in Squeak. Check it out here (based on Squeak) or read about the JS variant here.