Monthly Archives: July 2015

PharoVX

Hi all,

Let me introduce PharoVX: a Pharo binding to OpenVX, the standard for accelerated computer vision.
OpenVX is currently [being] implemented by various vendors, but right now we can download a sample implementation from Khronos for free and use it in Pharo.
PharoVX is mostly written during ESUG 2015 in Italy, and I just wrapped it up a bit on this week before posting to list.
The project homepage provides some instructions on how to obtain and build the reference implementation, how to do the basic setup, and how to debug your VX pipelines.
PharoVX now also allows to run all kernels specified in standard v1.0.1.
There are some known problems:
1. Mapping data to-and-from VX is slow – it is currently done pixel-by-pixel in a Smalltalk code. I will probably try to speed it up with NativeBoost.
2. On the first invocation, the image data can be corrupted. For the subsequent VX executions, it seems to be fine.
Links:
With best regards,
Dmitry

QualityAssistant in Pharo50

Dear all,

QualityAssistant was integrated in Pharo5. You can read more about its functionality there: https://github.com/Uko/QualityAssistant#quality-assistant-
If you will spot any bug please let me know, or report here: https://github.com/Uko/QualityAssistant/issues
Write a good quality code!
Uko

New academic partner: Rych

The Pharo Consortium is very happy to announce that RyCh
has joined the Consortium as an Academic Partner.

RyCh (Robotics and Computation in Chile) is a laboratory 
of the Computer Science Department (DCC) of the Universidad
de Chile. RyCh is a new research group, with a focus on the 
computational aspects of robotics, more specifically machine 
learning and the software engineering process of robotics.
At RyCh, Pharo is the implementation technology for 
Live Robot Programming.

About

   - RyCh: https://rych.dcc.uchile.cl
   - Pharo Consortium: http://consortium.pharo.org

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

Individuals can support Pharo via the Pharo Association:

      http://association.pharo.org

Pharocloud Ephemeric

Dear Pharo users,

I'm so excited to introduce you a project I'm currently working on which is
called "Ephemeric cloud". It is a very simple and fast way to publish your
Images to the web. Basically to publish a Smalltalk Image you just need to
call a usual HTTP POST request to Pharocloud Ephemeric API and you'll get a
hostname in response.

Check those small video examples below. 2 minutes each (and most of the time
is uploading time of my not-so-fast home internet :)

Publish with curl: http://www.youtube.com/watch?v=9dKBCpj96cU
Publish with Drag&Drop: http://www.youtube.com/watch?v=NuGTenCIwik

The main idea of the project is to put as many images as possible and as
simple as possible. And I'm so confident in efficiency of this solution that
I included a free plan for you guys:)

Hooray to Pharo Free hosting! :) (scared smile)

I see Ephemeric cloud as a corner stone of all Pharo web development. 
For instance, I can imagine some kind of "Publish" button on Marina project
site, clicking on which a user will spawn a new instance in the cloud and
will be able to test it immediately. Another good use case is running
unit-tests by publishing an Image and running some API calls on it by
script. Or you can have an A-B publish scheme when a part of users are sent
to a new version for a test and the rest to a stable one. By the way,
ephemerics are a great case for Pharo Remote Debug project;) 

My intentions are to get to the point when Ephemeric cloud subscription is a
must-have tool for a Pharo developer! :)

You may check some project details here:
https://www.pharocloud.com/kb/tutorial/ephemerics-introduction

All questions are so-very welcomed. If anyone is interested in participation
in cloud beta-testing please contact me at support@pharocloud.com and I'll
extend your subscription plan.

Cheers,
Mike
Pharocloud Team

Couple of weeks of continuous enhancements

50183
16009 Reflectivity: always compile primitive methods on Link install
https://pharo.fogbugz.com/f/cases/16009

16007 remove #isAssociation is RGDefiniton
https://pharo.fogbugz.com/f/cases/16007

16010 Fix typos in RBAssignmentInIfTrueRules comment
https://pharo.fogbugz.com/f/cases/16010

50182
15494 Integrate new pretty printer (Blue Ink)
https://pharo.fogbugz.com/f/cases/15494

50181
16004 Cleanup useFaultyForParsing
https://pharo.fogbugz.com/f/cases/16004

16005 Enable new decompiler and remove the old
https://pharo.fogbugz.com/f/cases/16005

15347 rename package GroupManager as Nautilus-GroupManager
https://pharo.fogbugz.com/f/cases/15347

50180
16001 New decompiler
https://pharo.fogbugz.com/f/cases/16001

50179
15979 Make useFaultyForParsing a compiler option
https://pharo.fogbugz.com/f/cases/15979

15968 refactoring move method (class/instance side) does not work anymore
https://pharo.fogbugz.com/f/cases/15968
50178
15995 UnlimitedInstanceVariableSlot
https://pharo.fogbugz.com/f/cases/15995

16002 use pushLiteralVariable for code generated for reflective slot read
https://pharo.fogbugz.com/f/cases/16002

50177
15971 SubscriptOutOfBounds: 0 on whileFalse:
https://pharo.fogbugz.com/f/cases/15971

15999 remove empty package ToolsTest
https://pharo.fogbugz.com/f/cases/15999

13686 Morphic-Widgets-Tabs depends on Spec-Core
https://pharo.fogbugz.com/f/cases/13686

50176
15998 Rename RPackageCreated into RPackageRegistered
https://pharo.fogbugz.com/f/cases/15998

15997 Manifest storing/loading of metaclass is broken
https://pharo.fogbugz.com/f/cases/15997

15393 Optimizing repeat
https://pharo.fogbugz.com/f/cases/15393

50175
15991 System settings search is slow
https://pharo.fogbugz.com/f/cases/15991

14442 ToolsTest package should be Tools-Test
https://pharo.fogbugz.com/f/cases/14442

3893 There is no way to revert a change in a patch browser nor in Plymorph diff
https://pharo.fogbugz.com/f/cases/3893

15993 Temporary variable pos is only written in NumberParser>>#nextInteger
https://pharo.fogbugz.com/f/cases/15993
50174
14616 Package Tags causing merge conflict
https://pharo.fogbugz.com/f/cases/14616

15987 SparseLargeTable>>zapDefaultOnlyEntries creates an unused copy
https://pharo.fogbugz.com/f/cases/15987

50173
15985 Bottom Plugin takes too much space
https://pharo.fogbugz.com/f/cases/15985

15986 implement optionCompileOnLinkInstallation
https://pharo.fogbugz.com/f/cases/15986

15988 add catalog command line handler
https://pharo.fogbugz.com/f/cases/15988
50172
6964 “Changes” in Monticello seems to compare to the latest in the cache
https://pharo.fogbugz.com/f/cases/6964

15976 Feature a buffer with offset type
https://pharo.fogbugz.com/f/cases/15976

15978 disable fasttable
https://pharo.fogbugz.com/f/cases/15978
50171
15928 “Push up” refactoring presents a question as a disappearing notification
https://pharo.fogbugz.com/f/cases/15928

15965 Strange Slice+Changes behavior (shows too many changes)
https://pharo.fogbugz.com/f/cases/15965

15964 RingChunkImporter can not import TraitDefinitions
https://pharo.fogbugz.com/f/cases/15964

15727 RingChunkImporter can not import ClassOrganizationChunk
https://pharo.fogbugz.com/f/cases/15727

15963 Test: code coverage per node
https://pharo.fogbugz.com/f/cases/15963

50170
15958 undeclared in StartupLoader
https://pharo.fogbugz.com/f/cases/15958

15961 Options for Meta Links
https://pharo.fogbugz.com/f/cases/15961

15962 NumberParser>>#makeIntegerOrScaledInteger to be removed in favor of makeIntegerOrScaledIntegerOrFloat
https://pharo.fogbugz.com/f/cases/15962
50169
15956 Temporary variable oldNeg is only written in NumberParser>>#nextInteger
https://pharo.fogbugz.com/f/cases/15956

15952 Update configuration of Rubric
https://pharo.fogbugz.com/f/cases/15952

15953 Replace PluggableTextMorph of the Finder
https://pharo.fogbugz.com/f/cases/15953

15954 Replace PluggableTextMorph of the HelpBrowser
https://pharo.fogbugz.com/f/cases/15954

50168
15955 Replace PluggableTextMorph of the Mail Composition
https://pharo.fogbugz.com/f/cases/15955

15950 create Reflectivity-Examples
https://pharo.fogbugz.com/f/cases/15950

50167
15947 Right and left click exchanged for world menu
https://pharo.fogbugz.com/f/cases/15947

15898 enable FastTable in Nautilus by default
https://pharo.fogbugz.com/f/cases/15898

50166
15856 When we cancel the creation of a class we get an error
https://pharo.fogbugz.com/f/cases/15856

15939 ChangesBrowser missing tests
https://pharo.fogbugz.com/f/cases/15939

15943 Cleaning LessonView
https://pharo.fogbugz.com/f/cases/15943

15937 DNU MethodChunk on change browser file in
https://pharo.fogbugz.com/f/cases/15937

50165
15940 ast Cache: retain entries with linkCount on image save
https://pharo.fogbugz.com/f/cases/15940

14676 World menu should open on right click under Windows and Linux
https://pharo.fogbugz.com/f/cases/14676

15942 drag&drop not working when fast table is activated
https://pharo.fogbugz.com/f/cases/15942

11680 DropListMorph accepts on ESCAPE
https://pharo.fogbugz.com/f/cases/11680

15933 Wrong metacelloPlatformAttributes for pharo 5
https://pharo.fogbugz.com/f/cases/15933

50164
15936 Remove titleAndPaneText
https://pharo.fogbugz.com/f/cases/15936

11730 UTF8TextConverter dependent on Zinc
https://pharo.fogbugz.com/f/cases/11730

15922 Add Jobs to MC version loading
https://pharo.fogbugz.com/f/cases/15922
50163
15907 add beForCode for all tools using specs TextModel
https://pharo.fogbugz.com/f/cases/15907

15921 Make SystemReporter use Rubric
https://pharo.fogbugz.com/f/cases/15921

15934 test: Coverage per method, see #testCoverageMethod
https://pharo.fogbugz.com/f/cases/15934
50162
15912 Classes are not rebuilt when changing only slot parameters
https://pharo.fogbugz.com/f/cases/15912

14310 Renaming a package just by changing upper/lowercase removes the package
https://pharo.fogbugz.com/f/cases/14310

15926 Monticello should raise MCRepositoryError and not Error
https://pharo.fogbugz.com/f/cases/15926

12190 Nautilus right click menus do not work on empty panes
https://pharo.fogbugz.com/f/cases/12190
50161
15925 Reflectivity: test refactoring
https://pharo.fogbugz.com/f/cases/15925

15910 Add a factory method fromUrl on MCRepository
https://pharo.fogbugz.com/f/cases/15910

50160
15914 Add Manifest for the Pharo kernel
https://pharo.fogbugz.com/f/cases/15914

15919 Disable format as you read should put back the unformatted code
https://pharo.fogbugz.com/f/cases/15919

15917 Job can answer who is the owner
https://pharo.fogbugz.com/f/cases/15917

50159
15784 clean Nautilus Plugins
https://pharo.fogbugz.com/f/cases/15784

50158
15906 PharoChangesCondenser broken
https://pharo.fogbugz.com/f/cases/15906

15902 image saved notification showed on image startup
https://pharo.fogbugz.com/f/cases/15902

15916 FastTable scrolling deltas need improving
https://pharo.fogbugz.com/f/cases/15916

15888 use “Smalltalk tools messageList” for “Search Code” result list
https://pharo.fogbugz.com/f/cases/15888

15913 Reflectivity: more tests
https://pharo.fogbugz.com/f/cases/15913

15911 Remove VariableChooserTree from Nautilus-Tree
https://pharo.fogbugz.com/f/cases/15911
50157
15908 Reflectivity: more tests
https://pharo.fogbugz.com/f/cases/15908

15909 Replace Smalltalk at: to Smalltalk globals at: in RPackage
https://pharo.fogbugz.com/f/cases/15909

15237 Spec TextModel for plain text
https://pharo.fogbugz.com/f/cases/15237

50156
14785 intersecting not overlapping rectangles should returen an empty rectangle
https://pharo.fogbugz.com/f/cases/14785

13059 Dynamic Spec Ui cannot resize the window
https://pharo.fogbugz.com/f/cases/13059

15905 Reflectivity: More work on #instead
https://pharo.fogbugz.com/f/cases/15905

50155
15904 fast table need to react better to selections and searches
https://pharo.fogbugz.com/f/cases/15904

15894 nautilus need to take into account the new fast table when selecting and testing
https://pharo.fogbugz.com/f/cases/15894

50154
15884 review rule RBUnaryAccessingMethodWithoutReturnRule
https://pharo.fogbugz.com/f/cases/15884

15895 Reflectivity: reifications for #after working
https://pharo.fogbugz.com/f/cases/15895
50153
15890 some cleaning
https://pharo.fogbugz.com/f/cases/15890

15072 Senders and implementors do not work when one parameter is a string containing :
https://pharo.fogbugz.com/f/cases/15072

15899 Remove destructive example
https://pharo.fogbugz.com/f/cases/15899

15897 Load new Workspace from AlainPlantec/WorkspaceRevisited
https://pharo.fogbugz.com/f/cases/15897
50152
7008 Shared Pools to be treated like dictionaries still necessary?
https://pharo.fogbugz.com/f/cases/7008

15886 Find class dialog from a scope nautilus window shows all classes
https://pharo.fogbugz.com/f/cases/15886

15889 do not call asOrderedCollection on compiled methods
https://pharo.fogbugz.com/f/cases/15889

15892 Cleanups: clean annotation handling + rename HookGenerator2
https://pharo.fogbugz.com/f/cases/15892

50151
15891 Reflectivity: New HookGenerator
https://pharo.fogbugz.com/f/cases/15891

15871 enable ProcessList
https://pharo.fogbugz.com/f/cases/15871

50150
15881 Add a method to lookup a Job in the chain of parent jobs
https://pharo.fogbugz.com/f/cases/15881

15883 LinkedList>>#collect:thenReject: is slow
https://pharo.fogbugz.com/f/cases/15883

50149
15879 No more stepping and huge buttons on a right pane for browsing variables
https://pharo.fogbugz.com/f/cases/15879

50147
ConfigurationOfRubric
15865 code limit panel is HARDCODING colors
https://pharo.fogbugz.com/f/cases15865

15530 Clicking play twice in empty Playground gives DNU
https://pharo.fogbugz.com/f/cases/15530

15227 Horrible drawing glitch in Spotter Breadcrumb
https://pharo.fogbugz.com/f/cases/15227

15351 GTSpotter strange rendering for menu preview
https://pharo.fogbugz.com/f/cases/15351

15792 GTInspector UndefinedObject(Object)>>doesNotUnderstand: #collect:
https://pharo.fogbugz.com/f/cases/15792

15804 GTInspector should not raise an error when inspecting an unitialized morph
https://pharo.fogbugz.com/f/cases/15804

15803 GTInspector should not raise an error when inspecting an unitialized collection
https://pharo.fogbugz.com/f/cases/15803
50146
15874 Reflectvity: small refactoring
https://pharo.fogbugz.com/f/cases/15874

15873 Clean new class builder: #copyTraitCompositionFromExistingClass not needed
https://pharo.fogbugz.com/f/cases/15873

15870 TestRunner: packages is shadowed
https://pharo.fogbugz.com/f/cases/15870

50145
15396 Refactor Duplicated #itemFromPoint: (3 slightly-differing implementations)
https://pharo.fogbugz.com/f/cases/15396

15868 Differentiate ProcessList and LinkedList
https://pharo.fogbugz.com/f/cases/15868
50144
15450 VM crash with disabled optionInlineIfNil
https://pharo.fogbugz.com/f/cases/15450

15867 Fix shortcut for smart suggestions in Nautilus
https://pharo.fogbugz.com/f/cases/15867
50143
15396 Refactor Duplicated #itemFromPoint: (3 slightly-differing implementations)
https://pharo.fogbugz.com/f/cases/15396

15863 Update Glamour to load last version of Rubric
https://pharo.fogbugz.com/f/cases/15863

15867 Fix shortcut for smart suggestions in Nautilus
https://pharo.fogbugz.com/f/cases/15867
50142
15862 Better method comment for withIndexDo: and doWithIndex:
https://pharo.fogbugz.com/f/cases/15862

15864 Reflectivity: error when installing incompatibe link
https://pharo.fogbugz.com/f/cases/15864

15312 Wrong position for completion menu in Rubric/Playground
https://pharo.fogbugz.com/f/cases/15312

50141
13416 Problem with Refactoring : temporary to instvar
https://pharo.fogbugz.com/f/cases/13416

15760 ToggleMenuItemShortcut do not draw on athens
https://pharo.fogbugz.com/f/cases/15760

15854 template proposed to dynamically create class (on the fly)
https://pharo.fogbugz.com/f/cases/15854

15852 Reflectivity: #ensure: wrapping #after
https://pharo.fogbugz.com/f/cases/15852

50140
15851 update Rubric to support edition in place of string morph
https://pharo.fogbugz.com/f/cases/15851

15850 Editable StringMorph revival
https://pharo.fogbugz.com/f/cases/15850

50138
15846 Monticello cleaning and repackaging
https://pharo.fogbugz.com/f/cases/15846

15848 Update Rubric support for temporaries addition
https://pharo.fogbugz.com/f/cases/15848

15835 enable use of experimental fast table for Nautilus
https://pharo.fogbugz.com/f/cases/15835

50137
15843 Tiny cleanup Opal
https://pharo.fogbugz.com/f/cases/15843

14776 Create test package for Jobs
https://pharo.fogbugz.com/f/cases/14776

15841 Removing Monticello dead and duplicated code
https://pharo.fogbugz.com/f/cases/15841
50136
15840 RF: add support for #instead links
https://pharo.fogbugz.com/f/cases/15840

15833 Remove Notifications from Job implementation
https://pharo.fogbugz.com/f/cases/15833
50134
15830 enable compiler subclass for Reflectivity, start to move hooks from superclass
https://pharo.fogbugz.com/f/cases/15830

15836 Abort Rename class refactoring
https://pharo.fogbugz.com/f/cases/15836

New academic partner

The Pharo Consortium is very happy to announce that RyCh
has joined the Consortium as an Academic Partner.

RyCh (Robotics and Computation in Chile) is a laboratory 
of the Computer Science Department (DCC) of the Universidad
de Chile. RyCh is a new research group, with a focus on the 
computational aspects of robotics, more specifically machine 
learning and the software engineering process of robotics.
At RyCh, Pharo is the implementation technology for 
Live Robot Programming.

About

   - RyCh: https://rych.dcc.uchile.cl
   - Pharo Consortium: http://consortium.pharo.org

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

Individuals can support Pharo via the Pharo Association:

      http://association.pharo.org

An interesting testimony

If an opinion from a newcomer is useful, I’m not so obsessed about how popular Smalltalk is.

I came to Smalltalk because a friend of mine (Rafa Luque) was enthusiastic about it, and suggested me to try it.
The candy was not to build applications faster, but to think differently, to question what and how we approach problems with mainstream, industry “best practice” technologies and languages.

I see Smalltalk more like what security researches think of their discipline: it’s a process, not a list of tools or recipes. After almost two decades of developing commercial software for others and open-source projects (mainly) for myself, using mostly Java but also Lisp, Smalltalk has blown my mind. That wouldn’t have happened if I’d tried Seaside just because I wanted to try a different web framework.

In my case, to approach Smalltalk I needed a certain state of mind. You have to be aware programming is not memorizing design patterns and pay for an IDE to do most things for you, including to check for non-functional stuff nobody seems to care about. We’re in the “i’m proud to be lazy” era. I’ve seen smart people reject Smalltalk just because they don’t seem to care about what they do, or at least they don’t want to invest their time and energy.

Probably there’s a way to convert Pharo in node.js or Go, to make people use Seaside instead of ruby on rails. More people potentially means more financial support, and a better, sooner, full-featured, Pharo.

But even then, Smalltalk empowers people to think differently and gives the means to do so, and to promote that has to tackled differently.

I’d focus on how using Smalltalk gradually makes you a better professional, before blaming ourselves for not yet providing sophisticated frameworks anyone can use even if they don’t know what they’re doing.

Let’s take the Scala or the Git case. What made people invest in learning them was, at least in part, that they felt smarter. We should focus on that: comparing how the same problem is solved in other languages. Showing what live programming is. Don’t be humble just to be polite.

On the other hand, Smalltalk enables us to face problems that are potentially unachievable in other languages / ecosystems. Let’s define on a “Pharo way to do X”, which inevitably starts building a domain-specific browser, a custom IDE, and recipes for common scenarios.

In summary, as Martin Bahr says, it’s critically important to ensure we can survive indefinitely until the perfect “timing” arrives. But don’t punish ourselves too much for not being popular. For me, the greatest value lies elsewhere.

Jose San Leandro

New Code Formatter

Hello everyone,

We just integrated Blue Ink, the new pretty printer, in the latest Pharo 5 image ! Basically what was working still is and what was not well now is.

It is not yet enabled by default, we will wait for feedbacks first. If you want to try it, just type :

RBProgramNode formatterClass: BIConfigurableFormatter.

BIConfigurableFormatter formatAsYouReadPolicy: true

Feel free to contact me via the mailing list or personnal mail if you experience a strange behavior. I tried to improve all of them but with you I am sure all the cases will be treated in an exhaustive way.

Thanks for testing it, I hope it will convince you to use format as you read in Nautilus or just automatically format your code.

Franck Warlouzet

Franck

Pharo and OpenMP

Hello,

I haven’t really seen anything related to this on the Internet and maybe some people will find it cool so I just wanted to report one thing I found out today :

NativeBoost works great with OpenMP !

I wrote a C function twice, once with openMP and once without. I made 32 bits libraries and used them from inside Pharo with NativeBoost.

When using the non – openMP library, only one core was used but when using the openMP library, both my cores were used and the time it took to run was really divided by (a little bit less than) 2 !

That’s just me but i find it really cool :p

Cheers,

PharoPro

Dear Pharoers and others,
As you know, the purpose of the Pharo Consortium is to secure Pharo by taking care about different needs, working on essential infrastructure assets and managing updates. The consortium is also an umbrella so that companies can control the system that they use daily.
Since last year, we (the board) has been working to complement this offer with a service completely dedicated to concrete and specific customer needs. PharoPro support for companies and business has as sole objective to make Pharo a strong and reliable choice for developing business critical application. PharoPro will make sure  that Pharo companies can fulfill their needs using Pharo as a platform for business.
Offering this new service will bring Pharo to another level of business acceptance. We propose to offer it in the umbrella of the Consortium.
We sketch the PharoPro services here: http://consortium.pharo.org/web/pharopro
We worked hard to on it and we will be at ESUG to discuss with you about business opportunities.
Do not hesitate to send us feedback about your needs
Esteban, in behalf of Pharo Board