Planet Smalltalk

August 03, 2015

Torsten Bergmann - ESUG2015 Photos

Torsten Bergmann - Choosing Smalltalk On Porpoise

Torsten Bergmann - Amber Alert: We can do mobile apps!

Torsten Bergmann - Pharo 5 progress

Pharo News - Update 200 for Pharo5

<p>Last week, update 200 for Pharo5 has been released.</p> <p>Highlights include: </p> <ul><li> Quality Assistant now comes by default and shows code critics right in the system browser</li><li> a new bytecode decompiler that can decompiler the whole system</li><li> a new pretty printer</li><li> further progress with Reflectity and First class variables</li><li> A new code editor in the code browser and some other tools</li><li> A &quot;Pharo Project Catalog&quot; to easily find and load code</li><li> STON: A lightweight text-based, human-readable data interchange format (based on JSON) now included by default.</li><li> many bug fixes and smaller improvements</li></ul> <p>For Pharo5, already we closed 642 issues tracker entries, even though development started just some months ago. Pharo5 will be frozen in December 2015 with a release planned for early 2016.</p> <p>To download the current development version of Pharo5, see <a href="http://pharo.org/download">http://pharo.org/download</a>.</p> <p>There are 600 open issues on the <a href="https://pharo.fogbugz.com/">issue tracker</a>. Help now to close one!</p> <p>For more frequent updates about what is happening with Pharo, follow on twitter: <a href="https://twitter.com/pharoproject">@pharoproject</a>.</p>

Pharo News - Update 200 for Pharo5

<p>Last week, update 200 for Pharo5 has been released.</p> <p>Highlights include: </p> <ul><li> Quality Assistant now comes by default and shows code critics right in the system browser</li><li> a new bytecode decompiler that can decompiler the whole system</li><li> a new pretty printer</li><li> further progress with Reflectity and First class variables</li><li> A new code editor in the code browser and some other tools</li><li> A &quot;Pharo Project Catalog&quot; to easily find and load code</li><li> STON: A lightweight text-based, human-readable data interchange format (based on JSON) now included by default.</li><li> many bug fixes and smaller improvements</li></ul> <p>For Pharo5, already we closed 642 issues tracker entries, even though development started just some months ago. Pharo5 will be frozen in December 2015 with a release planned for early 2016.</p> <p>To download the current development version of Pharo5, see <a href="http://pharo.org/download">http://pharo.org/download</a>.</p> <p>There are 600 open issues on the <a href="https://pharo.fogbugz.com/">issue tracker</a>. Help now to close one!</p> <p>For more frequent updates about what is happening with Pharo, follow on twitter: <a href="https://twitter.com/pharoproject">@pharoproject</a>.</p>

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