Steering agile architecture video training published by O'Reilly

I am proud to announce that O'Reilly published my video training on Steering Agile Architecture. The training is based on my experience of working on the Moose analysis platform and of creating and applying the humane assessment method.

The training is conceived as an argumentation split into five parts that are both available separately and together.

In Steering Agile Architecture Fundamentals I address the questions such as: "How can we steer architecture toward a cohesive result in projects developed with agility?", or "How do we judge the nature of this problem?". I argue that architecture is an emergent property, and I introduce the notion of software assessment as an essential discipline for decision making and steering agile architecture.

In Case Studies of Steering Agile Architecture I explore how steering agile architecture can look like in practice by learning from concrete case studies. Even though each case study exhibits a distinct problem, all of them can be dealt with in a uniform way suggesting that there exists a systematic approach.

In Growing Agile Architecture by Empowering Teams I describe the process of dealing with architectural constraints through a daily assessment process, and I detail the skills and techniques required.

In Assessing Agile Architecture I dive deeper into the nature of tools and how they affect the way we work. I show how the same skills and techniques that were described in Growing Agile Architecture by Empowering Teams are also applicable to a broader range of problems, and I introduce humane assessment as a systematic method for software assessment. The theoretical parts are exemplified with concrete case studies.

In Exposing Agile Architecture we look more closely at tools and on why they have to be customizable. We pay detailed attention to visualization techniques and tools, and we show how they can make a difference when thinking about agile architecture.

The videos are also available on the Safari Books Online platform:

Posted by Tudor Girba at 12 April 2017, 12:38 am with tags assessment, training link

Introducing PetitParser2

I am happy to announce the availability of PetitParser2, a redesign of the original PetitParser developed by Jan Kurš. The version is already present in the latest Moose 6.1 development image.

The main goals of the redesign is performance and flexibility. The speedup ranges between 2-5x. This is achieved through the idea of a kind of a parser compiler that performs a static analysis of the parse tree to identify patterns that can be optimized and then changes the actual parser execution.

The original implementation of the compiler was actually implemented in PetitParser. However, the problem was that the resulting parser was not easy to understand. This was the main reason that prompted the redesign of PetitParser. In PetitParser2 the concept of a Parser is split in two:

  • Nodes: These essentially provides only the AST of the parser, but without actual logic inside. They mirror the previous PPParser classes.
  • Visitors. These provide the actual parsing behavior. Optimizations are implemented in this hierarchy.

For a typical external user, PetitParser2 has the same structure as PetitParser. The main difference is that asParser is changed to asPParser. For example, the following original snippet:

#letter asParser, #any asParser star


#letter asPParser, #any asPParser star

In this way, the two versions of PetitParser can co-exist in the same image to ease the transition. This transition is needed for parsers that rely on deeper constructs from the original PetitParser, such as concrete names of classes.

Another new feature is the availability of streams. The original PetitParser required the whole string to be present in memory to allow for indefinite backtracking. PetitParser2 offers stream utilities that apply parsers on a stream by keeping a buffer in memory for backtracking purposes.

Of course, the new version comes with all development tools that we got used with PetitParser. The nice thing is that the tools work even when we are using the optimized version of a parser.

For example, the picture below shows the PetitParser browser opened on the Smalltalk parser.


The one addition is a larger run button which performs the optimized parsing. Triggering it for our case renders the result as shown below. The only difference is that in the above version, there were 907 individual parsers involved, while the optimized version only used 258 of them.


To get a better feeling of how the magic happens, let’s look at a small sequence parser.

#any asPParser star

Inspecting the parser allows us to play with the sampler.


The unoptimized version of the parser triggers independent parsers for each of the letters, and then concatenates the results in another collection. However, triggering the optimized version only involves one parser that knows how to consume the entire sequence in one collection.


All in all, PetitParser2 is an exciting development. Take a look at let us know what you think.

Posted by Tudor Girba at 8 November 2016, 5:07 pm with tags moose, tooling link

Glamorous Toolkit at ESUG 2016 (video)

At ESUG, I gave a talk about the Glamorous Toolkit, and the talk is now online. We have announced the Glamorous Toolkit project two years ago at the same conference. On that occasion I argued that IDEs should have different properties than what typical IDEs have to offer today. Over the last two years, we introduced 4 significant tools inside Pharo, namely Inspector, Playground, Spotter, and Debugger, and in this talk I focused on how these tools can affect the way you think about programs and programming.

Please take a look, and let us know what you think.

Posted by Tudor Girba at 28 September 2016, 7:57 am with tags gt, tooling, presentation link

Lam Research evaluates Pharo

We are very happy to make the following announcement:

Lam Research, a leading supplier of wafer fabrication equipment and services to the global semiconductor industry, is an experienced user of the Smalltalk programming language. Smalltalk is a key component in Lam's software control system for a broad range of the equipment it manufactures. Tudor Girba is a leading member of the tools and environment development effort in Pharo, having architected the Glamorous Toolkit for live programming. Eliot Miranda is author of the Cog virtual machine that underlies Pharo and other Smalltalk dialects.

Lam has engaged Tudor and Eliot to explore potential enhancements in Lam's use of Smalltalk. These enhancements range from running highly optimized Smalltalk on low cost, single board computers, to enhancing Lam's Smalltalk development practices with state-of-the-art live programming. During the engagement, Tudor and Eliot successfully moved a key communication component of the control system to Pharo. It was a challenging task aimed at extending the reach of Lam’s system to the Pharo world including the option of executing on ARM processors.

Tudor Girba, Eliot Miranda and Chris Thorgrimsson

Posted by Tudor Girba at 25 August 2016, 11:16 am link

Moose 6.0

We are happy to announce version 6.0 of the Moose Suite, the platform for software and data analysis built in Pharo:



The key highlights are:

  • It is based on Pharo 5.0 including the latest version of the Glamorous Toolkit.
  • It includes the SmaCC parsing framework together with parsers and abstract syntax trees for Java, JavaScript and Swift.
  • Roassal2 comes with several enhancements.
  • Famix features a new and generic query API engine.
  • Moose Finder and GTInspector come with more custom presentations and visualizations.
  • SmaCC comes with a dedicated debugger.
  • The debuggers for Glamour, PetitParser and Announcements received a new update.
  • DeepTraverser is an order of magnitude faster.

Extra highlights:


The Moose Suite 6.0 comes for each platform as a separate bundle:

The Moose Suite 6.0 can also be loaded in a Pharo 5.0 image either from the Configuration Browser, or by executing the following script:

Metacello new
 smalltalkhubUser: 'Moose' project: 'Moose';
 configuration: 'Moose';
 version: #stable;

The Moose team

Posted by Tudor Girba at 15 August 2016, 9:10 am with tags moose, tooling link
<< 1 2 3 4 5 6 7 8 9 10 11 >>