Pharo-users
By thread
pharo-users@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
January 2017
- 69 participants
- 408 messages
Re: [Pharo-users] Mouse events in FastTableModel subclass [Spec]
by Henrik Nergaard
You can get the selection directly in FastTableModel by Setting #handlesDoubleClick: to true and the event handler block using #doubleClickAction:
---------------------
FastTableModel new
icons: [ :e | example iconNamed: #forwardIcon ];
items: (1 to: 10) asArray;
handlesDoubleClick: true;
doubleClickAction: [ :ftStrong | ftStrong inspect ];
whenSelectedItemChanged: [ :new :old :something :announcment | { new . old . something . announcment } inspectOnce ];
openWithSpec.
-----------------------
Best regards,
Henrik
-----Opprinnelig melding-----
Fra: Pharo-users [mailto:pharo-users-bounces@lists.pharo.org] PÃ¥ vegne av Matteo
Sendt: 06 January 2017 16:35
Til: pharo-users(a)lists.pharo.org
Emne: Re: [Pharo-users] Mouse events in FastTableModel subclass [Spec]
Update: problem fixed by adding an "Announcer" to the "double click"
event, i.e.:
morWidget
onAnnouncement: FTStrongSelectionChanged
send: #doubleClick:
to: self.
Where "morWidget" is the morphic object representing a list of pictures, "self" is the "MorphicPictureListAdapter", which creates the "morWidget" object.
The method "doubleClick:" contains the actions to be performed when the event is triggered.
Note that, in the "FTAnnouncement" hierachy, the "double click" event is represented by the class "FTStrongSelectionChanged", which I found a little tricky.
Bye,
Matteo
Jan. 6, 2017
Re: [Pharo-users] Mouse events in FastTableModel subclass [Spec]
by Ben Coman
Thanks for the follow up. This will probably be useful for me to know later.
cheers -ben
On Fri, Jan 6, 2017 at 11:34 PM, Matteo <matteob8(a)yahoo.it> wrote:
> Update: problem fixed by adding an "Announcer" to the "double click"
> event, i.e.:
>
> morWidget
> onAnnouncement: FTStrongSelectionChanged
> send: #doubleClick:
> to: self.
>
> Where "morWidget" is the morphic object representing a list of pictures,
> "self" is the "MorphicPictureListAdapter", which creates
> the "morWidget" object.
> The method "doubleClick:" contains the actions to be performed when the
> event is triggered.
>
> Note that, in the "FTAnnouncement" hierachy, the "double click" event is
> represented by the class "FTStrongSelectionChanged", which I found a
> little tricky.
>
> Bye,
> Matteo
>
Jan. 6, 2017
Re: [Pharo-users] Mouse events in FastTableModel subclass [Spec]
by Matteo
Update: problem fixed by adding an "Announcer" to the "double click"
event, i.e.:
morWidget
onAnnouncement: FTStrongSelectionChanged
send: #doubleClick:
to: self.
Where "morWidget" is the morphic object representing a list of pictures,
"self" is the "MorphicPictureListAdapter", which creates
the "morWidget" object.
The method "doubleClick:" contains the actions to be performed when the
event is triggered.
Note that, in the "FTAnnouncement" hierachy, the "double click" event is
represented by the class "FTStrongSelectionChanged", which I found a
little tricky.
Bye,
Matteo
Jan. 6, 2017
<Programming> 2017: Call for workshop, symposium & poster submissions
by Tim Molderez
-----------------------------------------------------------------------
<Programming> 2017 : The Art, Science, and Engineering of Programming
April 3-6, 2017, Brussels, Belgium
http://2017.programming-conference.org
-----------------------------------------------------------------------
We are excited to announce there will be 10 co-located events at the
<Programming> 2017 conference (and more to come!):
- ELS 2017 - 10th European Lisp Symposium
- Modularity 2017 Invited talks - International Symposium on Modularity
- ACM Student Research Competition / <Programming> 2017 Posters
- LASSY 2017 - 2nd Workshop on Live Adaptation of Software SYstems
- MOMO 2017 - 2nd Workshop on Modularity in Modelling
- MoreVMs 2017 - 1st Workshop on Modern Language Runtimes, Ecosystems,
and VMs
- PASS 2017 - 1st Workshop on Programming Across the System Stack
- PX 2017 - 2nd Workshop on Programming Experience
- ProWeb 2017 - 1st Workshop on Programming Technology for the Future Web
- Salon des Refusés 2017 - 1st edition of the Salon des Refusés workshop
All co-located events will take place during April 3-4 2017.
CFPs for each of these events are listed below. (apart from Modularity
2017, which is invitation-based)
****************************************************************
ELS 2017 - 10th European Lisp Symposium
Submissions: Mon 30 Jan 2017
Notifications: Mon 27 Feb 2017
http://2017.programming-conference.org/track/els-2017
****************************************************************
The purpose of the European Lisp Symposium is to provide a forum for the
discussion and dissemination of all aspects of design, implementation
and application of any of the Lisp and Lisp-inspired dialects, including
Common Lisp, Scheme, Emacs Lisp, AutoLisp, ISLISP, Dylan, Clojure, ACL2,
ECMAScript, Racket, SKILL, Hop and so on. We encourage everyone
interested in Lisp to participate.
The 10th European Lisp Symposium invites high quality papers about novel
research results, insights and lessons learned from practical
applications and educational perspectives. We also encourage submissions
about known ideas as long as they are presented in a new setting and/or
in a highly elegant way.
Topics include but are not limited to:
* Context-, aspect-, domain-oriented and generative programming
* Macro-, reflective-, meta- and/or rule-based development approaches
* Language design and implementation
* Language integration, inter-operation and deployment
* Development methodologies, support and environments
* Educational approaches and perspectives
* Experience reports and case studies
********************************************************************
ACM Student Research Competition / <Programming> 2017 Posters
Submissions: Mon 16 Jan 2017
http://2017.programming-conference.org/track/programming-posters
********************************************************************
The ACM Student Research Competition (SRC), sponsored by Microsoft
Research, offers a unique forum for ACM student members at the
undergraduate and graduate levels to present their original research
before a panel of judges and conference attendees. The SRC gives
visibility to up-and-coming young researchers, and offers them an
opportunity to discuss their research with experts in their field, get
feedback, and to help sharpen communication and networking skills.
ACMâs SRC program covers expenses up to $500 for all students invited to
an SRC. Please see our website for requirements and further details.
******************************************************************
LASSY 2017 - 2nd Workshop on Live Adaptation of Software SYstems
Submissions: Fri 3 Feb 2017
Notifications: Fri 3 Mar 2017
http://2017.programming-conference.org/track/LASSY-2017-papers
******************************************************************
When developing current-day software systems, their deployment and usage
environments should be considered carefully, in order to understand the
adaptations those systems might need to undergo to interact with other
systems and with their environment. Moreover, due to the portability,
mobility and increasingly evolutionary nature of software systems, such
adaptations should be enacted even while the system is running.
Developing such software systems can prove challenging, and many
seemingly different techniques to address this concern have been
proposed over the last couple of years.
The intention of the LASSY workshop is to congregate all topics relevant
to dynamic adaptation and run-time evolution of software systems,
ranging from a computer science perspective covering the domains of
programming languages, model-driven software development, software and
service composition, context-aware databases, software variability,
requirements engineering, UI adaptation and other domains, to a human
perspective covering sociological or ethical implications of dynamic
software systems. The workshop provides a space for discussion and
collaboration between researchers working on the problem of enabling
live adaptations to software systems, across the development stack.
Topics of Interest:
* Design and Implementation of Live Adaptive Software Systems
* Context-, aspect-, feature-, role- and agent-oriented programming
* Context representation and discovery
* Context-aware model-driven software development
* Context-aware data management
* Software variability and dynamic product lines
* Self-adaptive, self-explanatory systems
* Inconsistency management, verification, and validation
* Middleware and Runtime of Live Adaptive Software Systems
* Dynamic software evolution, upgrades and configuration
* Dynamic software and service composition mechanisms
* Dynamic software architecture and middleware approaches
* Dynamic user interface adaptation and multimodal user interfaces
* Impact and Assessment of Live Adaptive Software Systems
* User acceptance and usability issues
* Human, sociological, ethical and legal aspects
* Privacy and security aspects of dynamic adaptability
* Live adaptation in smart environments (e.g. smart rooms,
smart robot cells, smart factories, smart cities)
* Self-adaptation and emergence in SoS and CPSoS
****************************************************************
MOMO 2017 - 2nd Workshop on Modularity in Modelling
Abstract submissions (optional): Sun Jan 29 2017
Paper submissions: Sun Feb 5 2017
Notifications: Wed Feb 22 2017
http://www.momo2017.ece.mcgill.ca/cfp.htm
****************************************************************
Extending the time-honored practice of separation of concerns,
Model-Driven Engineering (MDE) promotes the use of separate models to
address the various concerns in the development of complex
software-intensive systems. The main objective is to choose the right
level of abstraction to modularize a concern, specify its properties and
reason about the system under development depending on stakeholder and
development needs. While some of these models can be defined with a
single modelling language, a variety of heterogeneous models and
languages are typically used in the various phases of software
development. Furthermore, Domain-Specific Modelling Languages designed
to address particular concerns are also increasingly used.
Despite the power of abstraction of modelling, models of real-world
problems and systems quickly grow to such an extent that managing the
complexity by using proper modularization techniques becomes necessary.
As a result, many (standard) modelling notations have been extended with
aspect-oriented mechanisms and advanced composition operators to support
advanced separation of concerns, to combine (possibly heterogeneous)
models modularizing different concerns, to execute an application based
on modularized models, and to reason over global properties of
modularized models.
The Second International Modularity in Modelling Workshop brings
together researchers and practitioners interested in the theoretical and
practical challenges resulting from applying modularity, advanced
separation of concerns, and advanced composition at the modelling level.
It is intended to provide a forum for presenting new ideas and
discussing the impact of the use of modularization in the context of MDE
at different levels of abstraction.
We are interested in submissions on all topics related to modularity and
modelling including but not limited to:
* Modularization Support in Modelling Languages and Tools
* Model Interfaces
* Homogeneous Model Composition Operators
* Heterogeneous Model Composition Operators
* Visualization of Modularized and Composed Models
* Effects of Using Modularization and Composition in Modelling
* On Verification and Validation
* On Reuse
* On the Model-Driven Software Development Process
(Requirements Engineering, Software Architecture, Software Design,
Implementation)
* On Maintenance
* Experience Reports / Empirical Evaluations of Applying
Modularization and Composition in Modelling
* Feature-Oriented, Aspect-Oriented and Concern-Oriented Modelling
* Modularization support and composition operators for specific
modelling notations
* Modelling essential characteristics of specific
(crosscutting) concerns
* Multi-View Modelling: avoiding inconsistencies, avoiding
Redundancies
* Support for Detecting and/or Resolution of Feature Interactions
* Domain-Specific Modelling
* Modularization for Domain-Specific Languages
* Composition for Domain-Specific Languages
* Domain-specific Aspect Models
******************************************************************************
MoreVMs 2017 - 1st Workshop on Modern Language Runtimes, Ecosystems,
and VMs
Submissions: Wed 15 Feb 2017
Notifications: Wed 1 Mar 2017
http://2017.programming-conference.org/track/MoreVMs-2017-papers
******************************************************************************
The main goal of the workshop is to bring together both researchers and
practitioners and facilitate effective sharing of their respective
experiences and ideas on how languages and runtimes are utilized and
where they need to improve further. We welcome presentation proposals in
the form of extended abstracts discussing experiences, work-in-progress,
as well as future visions from the academic as well as industrial
perspective.
Relevant topics include, but are definitely not limited to, the following:
* Extensible VM design (compiler- or interpreter-based VMs)
* Reusable runtime components (e.g. interpreters, garbage
collectors, intermediate representations)
* Static and dynamic compiler techniques
* Techniques for compilation to high-level languages such as JavaScript
* Runtimes and mechanisms for interoperability between languages
* Tooling support (e.g. debugging, profiling, etc.)
* Programming language development environments and virtual machines
* Case studies of existing language implementations, virtual
machines, and runtime components (e.g. design choices, tradeoffs, etc.)
* Language implementation challenges and trade-offs (e.g.
performance, completeness, etc.)
* Surveys and applications usage reports to understand runtime
usage in the wild
* Surveys on frameworks and their impact on runtime usage
* New research ideas on how we want to build languages in the future
**************************************************************************
PASS 2017 - 1st Workshop on Programming Across the System Stack
Submissions: Mon 13 Feb 2017
Notifications: Mon 27 Feb 2017
http://2017.programming-conference.org/track/PASS-2017#Call-for-Papers
**************************************************************************
The landscape of computation platforms has changed dramatically in
recent years. Emerging systems - such as wearable devices, smartphones,
unmanned aerial vehicles, Internet of things, cloud computing servers,
heterogeneous clusters, and data centers - pose a distinct set of
system-oriented challenges ranging from data throughput, energy
efficiency, security, real-time guarantees, to high performance. In the
meantime, code quality, such as modularity or extensibility, remains a
cornerstone in modern software engineering, bringing in crucial benefits
such as modular reasoning, program understanding, and collaborative
software development. Current methodologies and software development
technologies should be revised in order to produce software to meet
system-oriented goals, while preserving high internal code quality. The
role of the Software Engineer is essential, having to be aware of the
implications that each design, architecture and implementation decision
has on the application system ecosystem.
This workshop is driven by one fundamental question: How does internal
code quality interact with system-oriented goals? We welcome both
positive and negative responses to this question. An example of the
former would be modular reasoning systems specifically designed to
promote system-oriented goals, whereas an example of the latter would be
anti-patterns against system-oriented goals during software development.
Areas of interest include but are not limited to:
* Energy-aware software engineering (e.g. energy efficiency models,
energy efficiency as a quality attribute)
* Modularity support (e.g., programming language design,
development tools or verification) for applications in
resource-constrained or real-time systems
* Emerging platforms (e.g., Internet of Things and wearable devices)
* Security support (e.g., compositional information flow,
compositional program analysis)
* Software architecture for reusability and adaptability in systems
and their interactions with applications
* Empirical studies (patterns and anti-patterns) on the
relationship between internal code quality and system-oriented goals
* Software engineering techniques to balance the trade-off between
internal code quality and efficiency
* Memory bloats and long-tail performance problems across modular
boundaries
* Program optimization across modular boundaries
* Internal code quality in systems software
* Reasoning across applications, compilers, and virtual machines
****************************************************************
PX 2017 - 2nd Programming Experience Workshop
Submissions: Sat 4 Feb 2017
Notifications: Mon 27 Feb 2017
http://programming-experience.org/px17
****************************************************************
Imagine a software development task: some sort of requirements and
specification including performance goals and perhaps a platform and
programming language. A group of developers head into a vast workroom.
In that room they discover they need to explore the domain and the
nature of potential solutionsâthey need exploratory programming.
The Programming Experience Workshop is about what happens in that room
when one or a couple of programmers sit down in front of computers and
produce code, especially when itâs exploratory programming. Do they
create text that is transformed into running behavior (the old way), or
do they operate on behavior directly (âlivenessâ); are they exploring
the live domain to understand the true nature of the requirements; are
they like authors creating new worlds; does visualization matter; is the
experience immediate, immersive, vivid and continuous; do fluency,
literacy, and learning matter; do they build tools, meta-tools; are they
creating languages to express new concepts quickly and easily; and
curiously, is joy relevant to the experience?
Correctness, performance, standard tools, foundations, and
text-as-program are important traditional research areas, but the
experience of programming and how to improve and evolve it are the focus
of this workshop, and in this edition we would like to focus on
exploratory programming.
The technical topics include:
* Exploratory programming
* Live programming
* Authoring
* Representation of active content
* Visualization
* Navigation
* Modularity mechanisms
* Immediacy
* Literacy
* Fluency
* Learning
* Tool building
* Language engineering
*************************************************************************
ProWeb 2017 - 1st Workshop on Programming Technology for the Future Web
Submissions: Wed 15 Feb 2017
Notifications: Wed 1 Mar 2017
http://2017.programming-conference.org/track/proweb-2017-papers
*************************************************************************
Full-fledged web applications have become ubiquitous on desktop and
mobile devices alike. Whereas âresponsiveâ web applications already
offered a more desktop-like experience, there is an increasing demand
for ârichâ web applications (RIAs) that offer collaborative and even
off-line functionality âGoogle docs being the prototypical example. Long
gone are the days that web servers merely had to answer incoming HTTP
request with a block of static HTML. Todayâs servers react to a
continuous stream of events coming from JavaScript applications that
have been pushed to clients. As a result, application logic and data is
increasingly distributed. Traditional dichotomies such as âclient vs.
serverâ and âoffline vs. onlineâ are fading.
The 1st International Workshop on Programming Technology for the Future
Web, or ProWeb17, is a forum for researchers and practitioners to share
and discuss new technology for programming these and future evolutions
of the web. We welcome submissions introducing programming technology
(i.e., frameworks, libraries, programming languages, program analyses
and development tools) for implementing web applications and for
maintaining their quality over time, as well as experience reports about
the use of state-of-the-art programming technology.
Relevant topics include, but are not limited to:
* Quality on the new web: static and dynamic program analyses;
code, design test and process metrics; development and migration tools;
automated testing and test generation; contract systems, type systems,
and web service API conformance checking; â¦
* Hosting languages on the web: new runtimes; transpilation or
compilation to JavaScript, WebAssembly, asm.js, â¦
* Designing languages for the web: multi-tier (or tierless)
programming; reactive programming; frameworks for multi-tier or reactive
programming on the web; â¦
* Distributed data sharing, replication and consistency: cloud
types, CRDTs, eventual consistency, offline storage, peer-to-peer
communication, â¦
* Security on the web: client-side and server-side security
policies; policy enforcement; proxies and membranes; vulnerability
detection; dynamic patching, â¦
* Surveys and case studies using state-of-the-art web technology
(e.g., WebAssembly, WebSocket, LocalStorage, AppCache, ServiceWorkers,
Meteor, deepstream.io, Angular.js, React and React Native, Swarm.js,
Caja, TypeScript, Proxies, ClojureScript, Amber Smalltalk, Scala.js, â¦)
* Ideas on and experience reports about: how to reconcile the need
for quality with the need for agility on the web; how to master and
combine the myriad of tier-specific technologies required to develop a
web application, â¦
* Position statements on what the future of the web will look like
****************************************************************
Salon des Refusés 2017
Submissions: Wed 1 Feb 2017
Notifications: Fri 17 Feb 2017
https://refuses.github.io
****************************************************************
Salon des Refusés (âexhibition of rejectsâ) was an 1863 exhibition of
artworks rejected from the official Paris Salon. The jury of Paris Salon
required near-photographic realism and classified works according to a
strict genre hierarchy. Paintings by many, later famous, modernists such
as Ãdouard Manet were rejected and appeared in what became known as the
Salon des Refusés. This workshop aims to be the programming language
research equivalent of Salon des Refusés. We provide a venue for
exploring new ideas and new ways of doing computer science.
Many interesting ideas about programming might struggle to find space in
the modern programming language research community, often because they
are difficult to evaluate using established evaluation methods (be it
proofs, measurements or controlled user studies). As a result, new ideas
are often seen as âunscientificâ.
This workshop provides a venue where such interesting and
thought-provoking ideas can be exposed to critical evaluation.
Submissions that provoke interesting discussion among the program
committee members will be published together with an attributed review
that presents an alternative position, develops additional context or
summarizes discussion from the workshop. This means of engaging with
papers not just enables explorations of novel programming ideas, but
also encourages new ways of doing computer science.
Topics of interest
The scope of the workshop is determined more by the format of
submissions than by the specific area of programming language or
computer science research that we are interested in. We welcome
submissions in a format that makes it possible to think about
programming in a new way, including, but not limited to:
* Thought experiments â we believe that thought experiments,
analogies and illustrative metaphors can provide novel insights and
inspire fruitful programming language ideas.
* Experimentation â we find prejudices in favour of theory, as far
back as there is institutionalized science, but programming can often be
seen more as experimentation than as theorizing. We welcome interesting
experiments even if there is yet no overarching theory that explains why
they happened.
* Paradigms â all scientific work is rooted in a scientific
paradigm that frame what questions can be asked. We encourage
submissions that reflect on existing paradigms or explore alternative
scientific paradigms.
* Metaphors, myths and analogies â any description of formal,
mathematical, quantitative or even poetical nature still represents just
an analogy. We believe that fruitful ideas can be learned from less
common forms of analogies as well as from the predominant, formal and
mathematical ones.
* From jokes to science fiction â a story or an artistic
performance may explore ideas and spark conversations that provide
crucial inspiration for development of new computer science thinking.
Jan. 6, 2017
Re: [Pharo-users] understanding existing code
by Ben Coman
On Fri, Jan 6, 2017 at 3:24 AM, Siemen Baader <siemenbaader(a)gmail.com> wrote:
> Hi All,
>
> I may be missing the obvious, but what are good strategies to understand the
> structure of existing code? Specifically, I'm trying to understand more of
> PharoJS to solve my own problems and eventually also to contribute back -
> but this is a general question.
>
> There is this one MOOC exercise:
> http://rmod-pharo-mooc.lille.inria.fr/MOOC/Exercises/Exercises-Pillar/Pilla…
> that helps, and reading tests and comments helps if they exist. But I often
> get trapped in drilling down a long call stack and opening many, many
> browser windows, a new one for every message send to a new class.
>
> While writing this it occured to me that I can use the debugger to follow a
> call stack by putting a breakpoint in the top level method, then stepping
> down using the debugger. There is also a MOOC lecture on that that I will
> look at again,
> http://rmod-pharo-mooc.lille.inria.fr/MOOC/Videos/W5/C019-W2S-VideosDebugge….
>
> Any tips? I think I don't see the forest for the trees here I'm afraid :)
This one I just thought of, so YMMV. Try...
World menu > Tools > Time Profiler
Evaluate code for some point of interest (you may need to wrap it in a loop)
then browse the static call tree to
* view the common execution paths as an overview of code structure
* provide a reading order for class comments
* suggest places to insert breakpoints to watch what live is happening.
In some cases you might need...
World menu > System > Start profiling all processes
Another way I often to learn what happens behind Pharo tools if
opening halos on a button-of-interest (make sure you click cycling
through to the PluggableButtonMorph)
then "Inspect Morph" and determine the method called when the button
is pressed and drop a halt in that method. This might not be
applicable to PharoJS.
cheers -ben
Jan. 6, 2017
Re: [Pharo-users] understanding existing code
by Sven Van Caekenberghe
> On 6 Jan 2017, at 14:39, Henrik Johansen <henrik.s.johansen(a)veloxit.no> wrote:
>
>
>> On 5 Jan 2017, at 20:24 , Siemen Baader <siemenbaader(a)gmail.com> wrote:
>>
>> Hi All,
>>
>> I may be missing the obvious, but what are good strategies to understand the structure of existing code? Specifically, I'm trying to understand more of PharoJS to solve my own problems and eventually also to contribute back - but this is a general question.
>>
>> There is this one MOOC exercise: http://rmod-pharo-mooc.lille.inria.fr/MOOC/Exercises/Exercises-Pillar/Pilla… that helps, and reading tests and comments helps if they exist. But I often get trapped in drilling down a long call stack and opening many, many browser windows, a new one for every message send to a new class.
>>
>> While writing this it occured to me that I can use the debugger to follow a call stack by putting a breakpoint in the top level method, then stepping down using the debugger. There is also a MOOC lecture on that that I will look at again, http://rmod-pharo-mooc.lille.inria.fr/MOOC/Videos/W5/C019-W2S-VideosDebugge….
>>
>> Any tips? I think I don't see the forest for the trees here I'm afraid :)
>>
>> thanks,
>> Siemen
>
> A break once + debugger is a lifesaver if what you really want is a sequence diagrams of a specific operation; for general structure, the browser is usually a better place to start.
>
> In a well-structured package, the different tags will usually also give a good indication about the class collaboration structure (or, sometimes, lack thereof), or at least the areas that are worth investigating.
>
> Some structural pattern uses are quite easy to spot using the class hierarchy view (at least when not restricted to current package...), such as visitors and polymorphic delegation.
> Searching base class references /senders of the polymorphic methods in such cases, will usually progressively take you to classes operating at higher abstraction levels; where the class comment are more likely to describe significant pieces of functionality.
> (Some anti-patterns can also be spotted browsing the methods in a polymorphic base class, such as large methods on a super that has overriddes, usually implying copy-pasta-edit, rather than a habit of extracting the bits that actually differ)
>
> Class collaboration is an area that can be a nuisance to get a good picture of with the standard tools; senders/implementors will usually do the trick when interested in a single area (in a manner similar to the debugger), for a more complete picture, loading Roassal and scripting your own visualizations, or going full throttle and using Moose (which includes a useful set of premade ones, probably/hopefully including scoped collaboration) may be worth the effort.
>
> Cheers,
> Henry
I would also say that trying to figure out the structure/design is more important than going into the details using the debugger. A well designed package should have some logic to it. Even if there are no comments, well chosen names should guide you. Not just class names, but package, protocol names and selector names should normally help you, a lot.
It is also often a requirement that you have a basic understanding of the subject - it is really hard if not impossible to understand how the (quite nice) XML packages are implemented if you don't understand XML, tags, attributes, namespaces, encoding, parsing, DOM, SAX, etc. Wikipedia is a great resource and starting point.
When you get stuck, ask for pointers on the ML.
Sven
Jan. 6, 2017
Re: [Pharo-users] Pharo and WebAssembly
by Ben Coman
A couple of previous threads...
http://forum.world.st/WebAssembly-td4926166.html
http://forum.world.st/Webassembly-and-Pharo-td4928191.html
cheers -ben
On Fri, Jan 6, 2017 at 10:52 AM, horrido <horrido.hobbies(a)gmail.com> wrote:
> Hey, Rust can now target WebAssembly
> <https://blog.rust-lang.org/2016/12/22/Rust-1.14.html> . Pharo must do the
> same!
>
>
>
> --
> View this message in context: http://forum.world.st/Pharo-and-WebAssembly-tp4928888.html
> Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
>
Jan. 6, 2017
Re: [Pharo-users] understanding existing code
by Henrik Johansen
> On 5 Jan 2017, at 20:24 , Siemen Baader <siemenbaader(a)gmail.com> wrote:
>
> Hi All,
>
> I may be missing the obvious, but what are good strategies to understand the structure of existing code? Specifically, I'm trying to understand more of PharoJS to solve my own problems and eventually also to contribute back - but this is a general question.
>
> There is this one MOOC exercise: http://rmod-pharo-mooc.lille.inria.fr/MOOC/Exercises/Exercises-Pillar/Pilla… <http://rmod-pharo-mooc.lille.inria.fr/MOOC/Exercises/Exercises-Pillar/Pilla…> that helps, and reading tests and comments helps if they exist. But I often get trapped in drilling down a long call stack and opening many, many browser windows, a new one for every message send to a new class.
>
> While writing this it occured to me that I can use the debugger to follow a call stack by putting a breakpoint in the top level method, then stepping down using the debugger. There is also a MOOC lecture on that that I will look at again, http://rmod-pharo-mooc.lille.inria.fr/MOOC/Videos/W5/C019-W2S-VideosDebugge… <http://rmod-pharo-mooc.lille.inria.fr/MOOC/Videos/W5/C019-W2S-VideosDebugge…>.
>
> Any tips? I think I don't see the forest for the trees here I'm afraid :)
>
> thanks,
> Siemen
A break once + debugger is a lifesaver if what you really want is a sequence diagrams of a specific operation; for general structure, the browser is usually a better place to start.
In a well-structured package, the different tags will usually also give a good indication about the class collaboration structure (or, sometimes, lack thereof), or at least the areas that are worth investigating.
Some structural pattern uses are quite easy to spot using the class hierarchy view (at least when not restricted to current package...), such as visitors and polymorphic delegation.
Searching base class references /senders of the polymorphic methods in such cases, will usually progressively take you to classes operating at higher abstraction levels; where the class comment are more likely to describe significant pieces of functionality.
(Some anti-patterns can also be spotted browsing the methods in a polymorphic base class, such as large methods on a super that has overriddes, usually implying copy-pasta-edit, rather than a habit of extracting the bits that actually differ)
Class collaboration is an area that can be a nuisance to get a good picture of with the standard tools; senders/implementors will usually do the trick when interested in a single area (in a manner similar to the debugger), for a more complete picture, loading Roassal and scripting your own visualizations, or going full throttle and using Moose (which includes a useful set of premade ones, probably/hopefully including scoped collaboration) may be worth the effort.
Cheers,
Henry
Jan. 6, 2017
Re: [Pharo-users] DWARF parser?
by Ben Coman
Not that I've heard of.
A search found a tiny mention in relation to the VM
http://forum.world.st/Dalvik-vs-ART-Android-virtual-machines-and-the-battle…
but its not Smalltalk code...
https://github.com/OpenSmalltalk/opensmalltalk-vm/search?p=1&q=dwarf&utf8=%…
For the curious... "Introduction to the DWARF Debugging Format"
http://dwarfstd.org/doc/Debugging%20using%20DWARF-2012.pdf
cheers -ben
On Thu, Jan 5, 2017 at 9:29 PM, Luke Gorrie <luke(a)snabb.co> wrote:
> Hoi,
>
> Just a quick question to avoid duplicated effort: Has anybody written a
> DWARF [1] parser for Pharo?
>
> [1] https://en.wikipedia.org/wiki/DWARF
>
>
Jan. 6, 2017
Re: [Pharo-users] Pharo and WebAssembly
by Johan Fabry
Hi Richard,
it seems to me you do not have a compete grasp of what it takes to have a given language cross-compile to WebAssembly. However, if you feel that this is so important for you, feel free to give it a go.
--
Does this mail seem too brief? Sorry for that, I donât mean to be rude! Please see http://emailcharter.org .
Johan Fabry - http://pleiad.cl/~jfabry
PLEIAD and RyCh labs - Computer Science Department (DCC) - University of Chile
> On 05 Jan 2017, at 23:52, horrido <horrido.hobbies(a)gmail.com> wrote:
>
> Hey, Rust can now target WebAssembly
> <https://blog.rust-lang.org/2016/12/22/Rust-1.14.html> . Pharo must do the
> same!
>
>
>
> --
> View this message in context: http://forum.world.st/Pharo-and-WebAssembly-tp4928888.html
> Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
>
>
Jan. 6, 2017