Planet Smalltalk

August 02, 2015

Torsten Bergmann - ScrumBoard, part 4

Torsten Bergmann - Tabular and XLSX

XLSX import functionality was added to Tabular

July 30, 2015

Ricardo Moran - Conociendo coordenadas reales con Kinect

Hola!
En el marco del proyecto de SLAM que estamos desarrollando en este grupo de investigación (Ver aquí), les mostraré un extracto del trabajo en proceso.

Kinect nació como un periférico para la consola de juegos Xbox 360 de Microsoft. Llegaba dispuesto a cambiar la forma de jugar a los videojuegos, transformándonos en el “mando” con el que controlar a los personajes y demás movimientos virtuales, con movimientos corporales.
Rápidamente, dado su éxito, este dispositivo ha ampliado sus horizontes, convirtiéndose en un sistema de visión artificial muy utilizado por investigadores de todo el mundo, para lo cual la propia Microsoft decidió lanzar un SDK (software development kit) para facilitar el desarrollo de aplicaciones basados en Kinect.
Cuenta con una cámara RGB, un sensor de profundidad y un micrófono, que nos proporciona mucha información.

De las imágenes tomadas con la cámara RGB, podemos conocer las coordenadas “virtuales” de un punto (pixel) visible, como se muestra a continuación:
Visión Kinect

Además de estos datos, el Kinect nos otorga información sobre la profundidad de cada pixel (depth), gracias a su cámara infrarroja.
De esta manera, utilizando trigonometría, podemos calcular las coordenadas reales del punto reflejado en cada pixel.
Tomando como ejes cartesianos las rectas perpendiculares que pasan por el centro geométrico de la imagen, obtenemos las coordenadas virtuales en 2 dimesiones (Xo;Yo) del plano de la imagen.

Para esto, conociendo los ángulos de visión del Kinect y las medidas –en pixeles- de la imagen, podemos calcular a qué ángulo corresponde cada pixel.
El ángulo de cada pixel se calcula así: 57º/Width = xAngle; y 43º/Height = yAngle. Por lo que multiplicando por Xo e Yo respectivamente, obtenemos los ángulos en X e Y (desde el centro) del punto virtual, que coincidirá con los ángulos del punto real.
Una vez obtenidos estos ángulos, y conociendo la distancia real al punto en cuestión: Depth (proporcionada por el Kinect), calculamos las coordenadas del punto real.
Zr = Depth;
Estos valores se pueden obtener gracias a las razones trigonométricas que surgen de un triángulo rectángulo. En particular que: tan(“ángulo”) = Opuesto / Adyacente

Triángulo rectángulo

En nuestro caso, consideramos que la cámara (Kinect) se encuentra en el vértice correspondiente al ángulo “tita” (ángulo que ya hemos calculado), y también conocemos la distancia del lado “Adyacente” (Depth), por lo que la única incógnita por calcular es la distancia del lado “Opuesto”, que corresponderá a la distancia real de nuestro punto desde el centro de la imagen o visión de la cámara (coordenadas reales: Xr e Yr).
Xr = Tg(xAngle) x Depth;
Yr = Tg(yAngle) x Depth;

July 27, 2015

Adriaan van Os - Photos from ESUG Conference in Brescia

First photos of the conference are here:

23rd ESUG Conference, Brescia, 2015

More will be added in a couple of days.

Smalltalk Jobs - Smalltalk Developer, Glasgow, UK

The capital project (VisualWorks and GemStone) is hiring.  They want a financial developer to work in the core projects team – there will also be some support duties, including being part of the production support rota.  OO experience is wanted.  Prior experience in financial applications is a plus.


Filed under: Employment

Torsten Bergmann - k means clustering visualisation with Roassal, Pharo

Torsten Bergmann - Smalltalk User Group Hamburg

has a meetup on 30th of July. Read more.

Smalltalk Jobs - Smalltalk Jobs – 7/26/15

  • Fremont, CAIntern-Admin at Lam Research
    • Required Skills:
      • Currently pursuing an undergraduate or graduate degree in Computer Science
      • Strong software engineering skills: modular design, data structures, and algorithms.
      • Clean coding habits, attention to details, and focus on quality.
      • Strong communication skills.
    • Wanted Skills:
      • Smalltalk
    • Additional listings: Lam Research
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 Tagged: jobs, Smalltalk, Smalltalk jobs

July 26, 2015

Andres Valloud - New Reference Finder / Weight Tracer

During ESUG's Show Us Your Projects, I gave a demo of a really fast reference finder I had written in Cuis a number of years ago.  During ESUG, Jan Vrany and I wrote an enhancement to the reference finder: a so-called weight tracer.  What this tracer does is tell you which objects only "hang" from a given object.  That is, if the given object goes away, the weight tracer shows what other objects would be collected as well.

Initially, the weight tracer required about two minutes per scan.  I managed to cut that in half at ESUG with some less than ideal hackery.  But today I really understood what was going on.  After deleting the unnecessary hackery, and with just a few tiny changes, the weight tracer runs just as quickly as the reference finder: a couple tenths of a second.

And it's tidy code, too :).

Pharo News - Pharo Ephemeric Cloud

<p>Dear Pharo users,</p> <p>I'm so excited to introduce you a project I'm currently working on which is called &quot;Ephemeric cloud&quot;. 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.</p> <p>Check those small video examples below. 2 minutes each (and most of the time is uploading time of my not-so-fast home internet :)</p> <ul><li> Publish with curl: <a href="http://www.youtube.com/watch?v=9dKBCpj96cU">youtube</a></li><li> Publish with Drag&amp;Drop:<a href="http://www.youtube.com/watch?v=NuGTenCIwik">youtube</a></li></ul> <p>You may check some project details <a href="https://www.pharocloud.com/kb/tutorial/ephemerics-introduction">here</a></p> <p>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.</p> <p>Cheers,</p> <p>Mike, Pharocloud Team</p>

Pharo News - Pharo Ephemeric Cloud

<p>Dear Pharo users,</p> <p>I'm so excited to introduce you a project I'm currently working on which is called &quot;Ephemeric cloud&quot;. 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.</p> <p>Check those small video examples below. 2 minutes each (and most of the time is uploading time of my not-so-fast home internet :)</p> <ul><li> Publish with curl: <a href="http://www.youtube.com/watch?v=9dKBCpj96cU">youtube</a></li><li> Publish with Drag&amp;Drop:<a href="http://www.youtube.com/watch?v=NuGTenCIwik">youtube</a></li></ul> <p>You may check some project details <a href="https://www.pharocloud.com/kb/tutorial/ephemerics-introduction">here</a></p> <p>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.</p> <p>Cheers,</p> <p>Mike, Pharocloud Team</p>

ESUG news - Smalltalk meetup Hamburg, Germany

The "Smalltalk User Group Hamburg" will meet for the first time July 30.

For more infos, see http://www.meetup.com/de/Smalltalk-User-Group-Hamburg/

July 24, 2015

Pharo Weekly - 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

Chris Cunnington - Compiling a 64-bit virtual machine

I just compiled a 64-bit Spur Stack VM and I’m a bit confused, because it works. This is contrary to my experience. I’m jotting down what I did to remind myself.

Download the following:

sudo svn co http://www.squeakvm.org/svn/squeak/branches/Cog/spurstack64src

sudo svn co http://www.squeakvm.org/svn/squeak/branches/Cog/build.linux64x64

sudo svn co http://www.squeakvm.org/svn/squeak/branches/Cog/platforms

sudo svn co http://www.squeakvm.org/svn/squeak/branches/Cog/src

While doing the following, open up the preferences for the files. I execute “chmod -R 777 directorynamehere” into each thing downloaded.
Put the first three downloads in a single directory called StackSpurBuild. Put the src directory aside for a moment. We’re only ransacking it for parts.
Go to spurstack64src and delete the examplePlugins.ext and examplePlugins.int files.
Go to the src directory you downloaded and drag the plugins directory, examplePlugins.ext and examplePlugins.int into spurstack64src. You can now move the src directory into the trash.
Open examplePlugins.ext and delete the BochsIA32Plugin line. You’re not building a simulator.
Go to /build.linux32x86/squeak.stack.spur/build/mvm and open it up. We need to make some changes.
Go down to the “test -f config.h” line. Ensure that you have the following:
–with-src=spurstack64src
–with-plugins=spurstack64src/plugins
Those two flags should now gibe with the directory dragging we’ve been doing.
Drag the /squeak.stack.spur/build directory onto the Terminal. Use Ctrl+A to go to the front of that line, write “cd” and execute, so we are in that directory. It’s our current directory. At this point its a good idea to have the /squeak.stack.spur/build directory open on your desktop, so you can see the explosion of directories on the left, while configure and compilation details scroll in the Terminal on the right of the screen.
Execute “sudo ./mvm”. Give your password and say yes to a “clean build”.
Wait. If all goes well you have a new directory in StackSpurBuild called /products. It has a /stkspur64linuxht/squeak script you can drag on to a Terminal to start an image. The actual binary is deeper in the directories at /stkspur64linuxht/lib/squeak/5.0-3411/squeak.

The image to run on this is at http://mirandabanda.org/files/Cog/SpurImages/

You need trunk46-spur-64.image and trunk46-spur-64.changes. You’ll also need a SqueakV41.sources file. You can get one at http://ftp.squeak.org/4.5/

This was on an Ubuntu 15.04 systemd laptop.
Dependencies for compiling an 64-bit vm ought to be less noisome than for 32-bit. It’s been a while since I loaded this laptop but I added some of the following to compile 32-bit vms. Are any of these necessary? I don’t remember.

apt-get install lib32z1-dev -y # install 32-bit libs
apt-get install libsm-dev:i386 # for Squeak vm
apt-get install libglu1-mesa:i386 # X11 for Squeak
apt-get install uuid-dev:i386 # for Squeak vm
apt-get install mesa-common-dev:i386 # add gl.h

Naturally, these do need to be 64-bit related. And I do know you need uuid-dev. That’s important. This is the official HowToBuild document. It’s 32-bit centric.

http://squeakvm.org/cgi-bin/viewvc.cgi/squeak/branches/Cog/build.linux32x86/HowToBuild?revision=3126&view=markup

 


Marten Feldtmann - PUM, Gemstone and SearchPath definitions

In our Gemstone projects we have used the same strategy: the data is located in a tree structure – started from a root. We have no large structure (e.g. index bag) where one simple lookup will find the object.

During REST calls we therefore have the need to find the objects in that tree structure.

This is – how I call it – a search path. The search path goes from the root via several multiple-/single-cardinality associations and leads us to the object we are are looking for.

The parameter of the REST calls therefore has to deliver the needed ids to find the objects in the numerous multiple-cardinality associations contained in the search path.

PUM now allows to define searchPath attributes (normally in the project class, where the data root is located) and it creates the needed access methods in various classes.


Filed under: Smalltalk Tagged: Gemstone, PUM, SearchPath, Smalltalk

July 23, 2015

Pharo Weekly - 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

Pharo Weekly - 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

Pharo Weekly - 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


Torsten Bergmann - Jun4Pharo texture mapping

A texture mapping demo of Jun4Pharo. The World as a flat texture and the World as a spherical surface.

   

Torsten Bergmann - BlueInk

Pharo 5 now also includes a new pretty printer (BlueInk). Read more.

Torsten Bergmann - More from Woden

Woden quick demo: parallax mapping



 Woden: Blender exporter

Pharo Weekly - 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


Marten Feldtmann - PUM, Gemstone: Raspberry Pis as REST testing clients

The Python code generator proved to be very useful.

We generated the REST client code for our production system in Python. Then we programmed a simple user simulator tool in Python (login, do several actions and then after some time: logout and repeat …).

Wonderful: it worked out of the box. Then we transferred the files to our multiple Raspberry PIs available and started the code there. Worked out of the box or to be more precise: concurrency errors showed up at once.

With these results we entered Gemstone programming again and changed the behaviour of the Zinc REST server and introduced automatically repeats of requests and at the end of the day we had only a few errors coming up in the clients – due to concurrency. That seems to be ok.

In our case one PI has to capacity of simulating around 50 concurrent users – we have 5 PIs here available for a testing system … will be fun.


Filed under: Smalltalk Tagged: Gemstone, PUM, Python, Raspberry PI, REST, testing

Pharo Weekly - 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

July 22, 2015

Marten Feldtmann - PUM, Gemstone, Python – enumerations

Today I added the generation of all defined enumeration values to the Python code generator, which improves the readablity of the client REST code.


Filed under: Smalltalk Tagged: code generation, enumeration, Gemstone, PUM, Python, REST

Marten Feldtmann - PUM, Gemstone and derived attributes (access paths)

Another feature of PUM is the possiblity to define derived attributes in a class.

Derived attributes are attributes, which are accessable in object A, but the value is defined in another object (object B), but there exist an access path from A to B via various associations over (perhaps) multiple objects.

These definitions can also be used in index definitions. Due to the cardinality of the associations you can be pretty sure if you get a value from that access path or nil (this knowledge is needed when defining an index).


Filed under: Smalltalk Tagged: Gemstone, PUM