Dear all
After the short preview at the last Moose Dojo, I am happy to let you know
that the first version of the brand new CodeCity is out.
CodeCity is a 3D visualization engineased on a city metaphor, which enables
us to depict software systems as cities. If you want to know more about
this approach, have a look here:
http://www.inf.usi.ch/phd/wettel/codecity.html
I have now implemented the basic functionality of CodeCity in Pharo and
integrated it with Moose. Here is a code city of ArgoUML in the new
CodeCity:
[image: Inline image 1]
To install CodeCity, you need to run this code in a Moose image (setting
Moose as a prerequisite is on my TODO list):
Gofer new smalltalkhubUser: 'RichardWettel' project: 'CodeCity';
configuration; load. (Smalltalk at: #ConfigurationOfCodeCity)
loadDevelopment
You can also get the latest successful build from:
http://ci.inria.fr/moose/job/codecity/lastSuccessfulBuild/artifact/codecity…
The new CodeCity does not provide a configuration UI, but it relies on
scripting. A script to obtain a city visualization of a Moose model is
shown here:
[image: Inline image 4]
A good way to get familiar with the scripting API of CodeCity are the
examples. You can open CCBuilder in the new workspace (Playground) and you
can browse the examples (the "e.g." tab).
[image: Inline image 2]
While CodeCity was initially aimed at software systems only, there is
nothing that stops us to use it at visualizing any kind of data! One
example was the visualization of the data taken from a database
(population, city, countries, continents) presented at the Moose Dojo. I'm
sure Doru will be pleased to show you more of that.
In conclusion, I hope you'll enjoy playing/working with CodeCity as much as
I have been enjoying re-implementing it in the last few months. Playing
with CodeCity integrated in the Moose workflows is pure fun. But don' take
my word for it, just give it a try!
Cheers
Ricky
I changed CCBuilder>>wallLayout to have 10000 elements instead of 1000. That had a significant
impact on the speed of the playground. Doing CCBuilder (cmd-O) took >15s.
It looks like something is getting precomputed prematurely. Rotating and zooming the resulting
view worked well.
Stephan
I’ve just tried and it works pretty well! Impressive!
Below I describe a small example that fetches some data about the US Universities from DBPedia and visualize them using Roassal2.
Pick a fresh 3.0 image.
First, you need to load Hernán work, Sven’s NeoJSON, and Roassal 2 (If you are using a Moose Image, there is no need to load Roassal2 since it is already in):
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Gofer it
smalltalkhubUser: 'SvenVanCaekenberghe' project: 'Neo';
package: 'ConfigurationOfNeoJSON';
load.
((Smalltalk at: #ConfigurationOfNeoJSON) load).
Gofer it
smalltalkhubUser: 'hernan' project: 'DBPedia';
package: 'DBPedia';
load.
Gofer it
smalltalkhubUser: 'ObjectProfile' project: 'Roassal2';
package: 'ConfigurationOfRoassal2';
load.
((Smalltalk at: #ConfigurationOfRoassal2) loadBleedingEdge).
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Using Roassal2, I was able to render some data extracted from dbpedia:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
| map locations rawData rawData2 rawData3 |
map := RTMapBuilder new.
map countries: #('UnitedStates' 'Canada' 'Mexico').
map color: Color veryVeryLightGray.
rawData := DBPediaSearch universitiesInUS.
rawData2 := ((NeoJSONReader fromString: rawData) at: #results) at: #bindings.
rawData3 := rawData2 select: [ :d | d keys includesAll: #('label' 'long' 'lat') ] thenCollect: [ :d | { (Float readFrom: ((d at: 'long') at: 'value')) . (Float readFrom: ((d at: 'lat') at: 'value')) . (d at: 'label' ) at: 'value' } ].
locations := rawData3.
locations do: [ :array |
map cities addCityNamed: array third location: array second @ array first ].
map cities shape size: 8; color: (Color blue alpha: 0.03).
map cities: (locations collect: #third).
map scale: 2.
map render.
map view openInWindowSized: 1000 @ 500.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
This is what you get:
This is a small example. Naturally, adding popup for locations is trivial to add.
I have described this on our Facebook page:
https://www.facebook.com/ObjectProfile/photos/a.341189379300999.82969.34054…
Hernán, since SPARQL is a bit obscure, it would be great if you could add some more example, and also, how to parametrize the examples. For example, now we can get data for the US, how to modify your example to get them for France or Chile?
Cheers,
Alexandre
On Mar 2, 2014, at 3:43 PM, Hernán Morales Durand <hernan.morales(a)gmail.com> wrote:
> I have uploaded a new configuration so you can query the english Wikipedia dataset from Pharo 3 using SPARQL. Some examples follow:
>
> 1) Retrieve in JSON movies from the beautiful Julianne Moore:
>
> | jsonResults |
> jsonResults := DBPediaSearch new
> setJsonFormat;
> timeout: 5000;
> query: 'SELECT DISTINCT ?filmName WHERE {
> ?film foaf:name ?filmName .
> ?film dbpedia-owl:starring ?actress .
> ?actress foaf:name ?name.
> FILTER(contains(?name, "Julianne"))
> FILTER(contains(?name, "Moore"))
> }';
> execute
>
> To actually get only the titles using NeoJSON:
>
> ((((NeoJSONReader fromString: jsonResults) at: #results) at: #bindings)
> collect: [ : entry | entry at: #filmName ]) collect: [ : movie | movie at: #value ]
>
>
> 2) Retrieve in XML which genre plays those crazy Dream Theater guys :
>
> DBPediaSearch new
> setXmlFormat;
> setDebugOn;
> timeout: 5000;
> query: 'SELECT DISTINCT ?genreLabel
> WHERE {
> ?resource dbpprop:genre ?genre.
> ?resource rdfs:label "Dream Theater"@en.
> ?genre rdfs:label ?genreLabel
> FILTER (lang(?genreLabel)="en")
> }
> LIMIT 100';
> execute
>
> More examples are available in DBPediaSearch class side. You can install it from the Configuration Browser.
> If you want to contribute, just ask me and you will be added as contributor.
> Best regards,
>
> Hernán
>
> _______________________________________________
> Pharo-business mailing list
> Pharo-business(a)lists.pharo.org
> http://lists.pharo.org/mailman/listinfo/pharo-business_lists.pharo.org
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi!
Where can I download the one-click experience with Moose 5.0 ?
By the way, when is the release?
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi, I am Tommaso Dal Sasso from University of Lugano and tomorrow I will
attend the Moose Dojo in Bern.
I would like to show a quick demo of a project I am working on to report
exceptions from the Pharo image.
Looking forward to meet you tomorrow in Bern!
Tommaso
Hi,
This is just a reminder that tomorrow between 10:15 - 11:30 we will have a
demo slot.
First, there will be a Moose intro demo (for newcomers) and then follow by
other more focused demos. Up to now, we have:
- Me: GTInspector
- Ricky: CodeCity 2D (it's not a typo)
- ?
Who else would like to give a demo?
Demos are limited to 7 minutes, so please make sure that you prepare it
beforehand.
Cheers,
Doru
--
www.tudorgirba.com
"Every thing has its own flow"
Status: New
Owner: ----
CC: alexandr...(a)gmail.com
Labels: Type-Defect Priority-Critical Component-Roassal Milestone-4.9
New issue 987 by tu...(a)tudorgirba.com: Roassal does not display edges when
the source is not visible
http://code.google.com/p/moose-technology/issues/detail?id=987
Try this:
view nodes: { 1 . 2 }.
view edgeFromAssociation: 2->1.
view horizontalLineLayout horizontalGap: 1000.
I think it is easy to fix, but at the same time it is really annoying, so I
mark it as critical :)
--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings
Hi,
Andrei did a wonderful job and added both line selection and dynamic
variables to the Playground and Inspector.
So, now, the Playground replaces the default Workspace in the Moose image.
Enjoy,
Doru
--
www.tudorgirba.com
"Every thing has its own flow"
Status: New
Owner: chisvasi...(a)gmail.com
Labels: Type-Enhancement Priority-Medium Component-Glamour
Component-GlamorousToolkit
New issue 1050 by tu...(a)tudorgirba.com: Playground should create dynamic
variables
http://code.google.com/p/moose-technology/issues/detail?id=1050
evaluating
a := 41.
a + 1
should work as in the default workspace
--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings
Updates:
Summary: GTInspector should select the current line when Cmd+o is pressed
Comment #1 on issue 1041 by tu...(a)tudorgirba.com: GTInspector should select
the current line when Cmd+o is pressed
http://code.google.com/p/moose-technology/issues/detail?id=1041
(No comment was entered for this change.)
--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings
Hi!
I am playing with unicode characters:
-=-=-=-=-=-=-=-=-=-=-=-=
Gofer new
url: 'http://smalltalkhub.com/mc/abergel/Sparkline/main';
addPackage: 'Sparkline';
load.
-=-=-=-=-=-=-=-=-=-=-=-=
#( 1 2 3 4) spark => '▁▃▅▇’
#(-5 10 0) spark => '▁█▃'
RxsNode withAllSubclasses spark: #numberOfMethods => '▂▃▂▃▁▁▅█▁▁▂▁’
I got the inspiration from https://github.com/holman/spark
By the way, I would love to have a short tutorial about unicode characters at esug.
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
[Apologies for multiple copies]
>
> [CFP] Dyla'14, Workshop on Dynamic Languages and Applications, at
> PLDI, Edinburgh
>
> - What: 8th Workshop on Dynamic Languages and Applications.
> - Where: Co-located with PLDI'14, Edinburgh, UK
> - When: June 12th,
>
> Sponsored by ACM SIGPLAN
>
> Submission deadline: March 15th
>
> More info on the website: http://www.lifl.fr/dyla14/
>
> Dyla is a place where developers and researchers can discuss new
> advances in the design, implementation and application of
> dynamically-typed languages.
>
> The expected audience of this workshop includes practitioners and
> researchers sharing the same interest in dynamically-typed languages.
> Lua, Python, Ruby, JavaScript and others are gaining a significant
> popularity both in industry and academia. Nevertheless, each community
> has the tendency to only look at what it produces. Broadening the
> scope of each community is the goal of the workshop. To achieve this
> goal Dyla's program and organization committees are composed of
> leading persons from many such languages.
>
> Topics
> --
>
> - live programming
> - programming language extensions
> - programming environment extensions
> - domain-specific languages & tooling
> - executing environments
> - static & dynamic analyses
> - meta-object protocols
> - optional type-checking
> - reverse engineering
> - testing environments
>
> Organizing committee:
> --
>
> - Damien Cassou, University of Lille 1, FR
> - Carl Friedrich Bolz, King's College London, GB
> - Johan Andersson, Burtcorp in Gothenburg, SE
> - Roberto Ierusalimschy, Catholic Univ. in Rio de Janeiro, BR
> - Tom Van Cutsem, Vrije Universiteit Brussel, BE
>
> Program committee:
> --
>
> - Anne Etien, University Lille 1, France
> - David Schneider, Heinrich-Heine-Universität Düsseldorf, DE
> - Didier Verna, EPITA/LRDE, France
> - Edd Barrett, Department of Informatics, King's College London, GB
> - Joe Gibbs Politz, Brown University, USA
> - Peng Wu, IBM T.J. Watson Research Center, USA
> - Tim Felgentreff, Hasso-Plattner-Institut, DE
> - T. Stephen Strickland, University of Maryland, US
> - Yoshiki Ohshima, Viewpoints Research Institute, USA
> - Zachary P. Beane, Portland, USA
> - the 5 workshop organizers
>
> Abstract:
> --
>
> Java and C# have been a major influence in the adoption of
> object-oriented language characteristics: academic features like
> interfaces, garbage collection, and meta-programming became
> technologies generally accepted by the industry. However, with the
> adoption of these languages, their limitations became apparent, as
> testified by industry reactions: invokedynamic has been
> included in the latest Java virtual machine release; the dynamic
> language runtime (DLR) is gaining popularity; C# adopted
> dynamic as a valid static type.
>
> Researchers and practitioners struggle with static type systems,
> overly complex abstract grammars, simplistic concurrency mechanisms,
> limited reflection capabilities, and the absence of higher-order
> language constructs such as delegation, closures, and continuations.
> Dynamic languages such as Ruby, Python, JavaScript and Lua are a step
> forward in addressing these problems and are getting more and more
> popular. To make these languages mainstream, practitioners have to
> look back and pick mechanisms up in existing dynamic languages such as
> Lisp, Scheme, Smalltalk and Self.
>
> The goal of this workshop is to act as a forum where practitioners can
> discuss new advances in the design, implementation and application of
> dynamically-typed languages that, sometimes radically, diverge from
> the statically typed class-based mainstream. Another objective is to
> discuss new as well as older "forgotten" languages and features in
> this context.
>
>
> Format and Submission Information
> --
>
> The workshop will have a demo-oriented style. The idea is to allow
> participants to demonstrate new and interesting features and discuss
> what they feel is relevant for the dynamic-language community. To
> participate in the workshop, you can either
>
> - submit (before March 15th 2014) an article (ACM Tighter Alternate
> style) describing your presentation and/or tool. Your article, which
> must include from 2 to 15 pages, will be carefully reviewed by the
> program committee. If accepted, your article will be presented
> during the workshop and be published to the ACM Digital Library (at
> your option) and the workshop's web site. Please submit to
> http://www.easychair.org/conferences/?conf=dyla14.
>
> - or give a 10-minute lightning demo of your work. A dedicated session
> will be allocated for this, provided there is ample time available.
> In this case, send us the title of your demo.
>
> A session on pair programming is also planned. People will then get a
> chance to share their technologies by interacting with other
> participants.
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium
New issue 1049 by alexandr...(a)gmail.com: topleft pane is oddly filled
http://code.google.com/p/moose-technology/issues/detail?id=1049
Describe the problem: what do you get? what do you expect?
How to reproduce the problem: step by step if necessary
- open a meta browser from the WorldMenu/Moose
- select a box in the roassal visualization, and the top left pane is not
properly filled. It seems like many items are at the same position
Additional information: platform, context which may impact the problem
- the last successful artifact, loaded today.
Please fill in the labels with the following information:
* Type-Defect, Type-Enhancement, Type-Engineering, Type-Review, Type-Other
* Component-XXX
--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium Component-EyeSee Milestone-5.0
New issue 1024 by tu...(a)tudorgirba.com: EyeSee Editor crashes by default
http://code.google.com/p/moose-technology/issues/detail?id=1024
Just open an EyeSee Editor and press Cmd+s. The diagram is not initialized.
--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings
Hi,
As you probably know, the latest Athens entails a bug that scrambles text.
For the time being, to work around it, you have to load older versions of
Athens packages. To make it easier, I added a utility in the
Moose-Development-Tools
Please note that this is not a solution. Just a workaround until we manage
to find a solution in Pharo.
See the comments below:
Name: Moose-Development-Tools-TudorGirba.67
Author: TudorGirba
Time: 26 February 2014, 5:34:12.97393 pm
UUID: a2943f1b-a12a-c847-9a91-ce52d016110e
Ancestors: Moose-Development-Tools-TudorGirba.66
added utility for loading older athens packages to correct the font caching
problem described here:
https://pharo.fogbugz.com/f/cases/12777/Athens-font-cacheing-bug
Do:
MooseImageSetupCommandLineHandler new
loadOlderAthensPackagesToCorrectTheFontCachingProblem
Cheers,
Doru
--
www.tudorgirba.com
"Every thing has its own flow"
Hi everybody,
I'm currently trying to programatically copy a Moose model
What happens is that only the message isInterface returns nil, when the
original Moose model has this information. All the other "is*" messages
return something or false. I have no problem copying other information from
the model whatsoever.
Looking at the code, this variable is directly set on
FAMIXClass>>#isInterface: and the other ones use the
FAMIXNamedEntity>>modifierSet:for: message (lazy attribution I guess)
So, why this specific information is not set? Can we change this?
Cheers,
--
Gustavo Santos
Hi,
On March 4, we will organize a Moose Dojo at the University of Bern. So
far, it looks we will have some 16-20 people joining. The main focus of the
dojo will be on users rather than core code.
If you have a specific issue you want to see addressed (a problem, a
question, etc), please send an email to this mailing list with a short
note. The idea is to prepare a list of issues before the event so that we
can maximize the effectiveness of the interactions. This is particularly
important given that there will be many people around.
More details below.
---------- Forwarded message ----------
From: Mircea Filip Lungu <mircea.lungu(a)gmail.com>
Date: Wed, Feb 26, 2014 at 8:57 AM
Subject: Moose Dojo
To: "SCG (staff)" <scg-staff(a)iam.unibe.ch>, "SCG (all)" <
scg-all(a)iam.unibe.ch>, Andrea Mocci <andrea.mocci(a)usi.ch>, Tommaso <
tommaso.dalsasso(a)gmail.com>, Yuriy Tymchuk <yuriy.tymchuk(a)me.com>, Roberto
Minelli <roberto.minelli(a)usi.ch>, Pattamon.Thamsukati(a)unibe.ch, Roger
Stebler <roger.stebler(a)students.unibe.ch>, cedric.reginster(a)gmail.com,
michu.baertschi(a)students.unibe.ch, christoph.reinhart(a)students.unibe.ch,
dominic.sinu(a)gmx.ch
Cc: Oscar Nierstrasz <oscar(a)iam.unibe.ch>, Tudor Girba <tudor(a)tudorgirba.com>,
Michele Lanza <michele.lanza(a)usi.ch>, Iris Keller <keller(a)iam.unibe.ch>
Hi Folks,
This is a reminder that we are hosting a Moose Dojo at SCG in Bern on
Tuesday, March 4. The start is officially at 10:15 but the informal meeting
starts even earlier.
A tentative program of the day can be found at:
http://scg.unibe.ch/wiki/events/Moose-event-march-4
See you there,
M.
--
www.tudorgirba.com
"Every thing has its own flow"