Tudor Girba Profile picture
Nov 9, 2021 20 tweets 9 min read Read on X
I gave a talk at #QConPlus on "Moldable Development by Example".

A summary.

1/ Image
The talk consisted mostly of two stories. Two examples.

I started with a little story inspired by our recent experience of going through the Open edX system.



2/
It went like this. Imagine you have a system written in Python and you want to split it for various reasons.

You'd first look for components that already exist. In this case, the system already seems to have top components available (as documented by top folders).

3/ Image
And then you'd look for dependencies. When we think of dependencies, we typically think of how a system calls or sends a message to another part.

But, there are dependencies that are less obvious.

For example, feature toggles can pose a challenge.

4/
Feature toggles? Yes, feature toggles.

In this particular system, feature toggles are used in many places, as highlighted on this treemap (sorry, @swardley. I know it's not actually a map, but that's what they called this before that distinction was obvious :))

5/ Image
Having many usages of feature toggles is not a problem per se, but it can become relevant if a toggle is defined in one component and used in another, as that would induce a dependency.

That's why it would be ideal to see something like this.

6/ Image
To draw a graph like this, we'd need to know how toggles are defined and used. But, while a feature toggle is a generic concept, the way to define and use it is framework specific. To make matters more interesting, in our system there are actually 3 different ways to do that.

7/
This means we can only create the tool after we know the specifics. You can't download it. You must build it. And that's the gist of #MoldableDevelopment.

(the alternative is to manually read code, but that's a too expensive data mining tool)



8/
Back to our case study, the picture is indeed generated through a custom tool. Looking at it, we can already see that there are a significant amount of cross component toggle usages. And that there seem to be cycles, too.

This is already interesting, but ...

9/ Image
To bridge the gap to action, we need more details. It would be great to go from the picture to the places in code that induce the dependencies.

Something like this.

10/ Image
This can be achieved through a little model and a few object inspectors with custom views.

The model is not more complicated than the model already used by the runtime of the system, only in this case it's retrieved statically.

11/
This demo is based on #GToolkit, the moldable development environment that we designed specifically so that we can put together interactive custom tools inexpensively.

(It's free and open source, too. Go look at it: gtoolkit.com)

12/ Image
The second story is based on a recent issue we actually had with the continuous integration server that builds #GToolkit itself:
github.com/feenkcom/gtool…

Namely, we had an error during the build, and I wanted to highlight the error message from the console.

13/ Image
(Incidentally, I showed how I access the Jenkins server right from the knowledge management / multi language system embedded in #GToolkit)



14/ Image
Ok, long story short, I extended the tool in place to emphasize the error.

15/ Image
Taking a step back, these two case studies look quite distinct. On the one hand, we have something we'd denote as architecture. On the other hand, we have some API calls and monitoring.

Yet, they were served through very similar custom tools and flow ...

16/ ImageImage
That is likely only possible if they are actually not that distinct. That's what we show with #GToolkit. That we can look at the development environment not as a set of features, but as an expressive language that can accommodate many kinds of use cases.

17/
Software development problems are unforeseeable, so answers should not be confined to predefined boxes. We need a #MoldableDevelopment environment.

18/
The talk ends with an overview of #MoldableDevelopment as seen through a #WardleyMap, and with hinting at the far reaching implications towards compressing communication and decision making.

19/ Image

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Tudor Girba

Tudor Girba Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @girba

Jun 2, 2023
I have witnessed the refinement of the mapping process described by @swardley first hand. I can attest that it does work.

You still need the skills to transform words into maps and back. But I have seen it work consistently with people that do not know each other upfront.

1/
@swardley I find that the most exciting part, which might also be the most difficult to explain, is that conclusions seem to emerge before people agreeing with each other, or even before any of the participants having the conclusion formed a priori.

I think that's extraordinary.

2/
@swardley Perhaps an example might shed some light.

In one of the groups, we build 3 maps. Each of them started with a certain assumption, and in each case mapping further sentences eventually turned the assumption upside down. Literally. In all three cases. With the same people.

3/
Read 6 tweets
Sep 27, 2022
This article 👇 offers an introduction to #MoldableDevelopment.

It's written for a first time reader. It's not quite short, but it's not that long either (~4000 words). It has concrete examples, but also a little broader theory.



1/
It starts from the reading problem: reading accounts for the single largest expense in software development today, but it's just a strategy to gather information from the system. We can automate much of it, but we should do it through custom tools.

2/
To give a hint as to why this is relevant, I describe of an experiment in which we gave student teams the same requirements and a constrained tech. They produced very different structures which suggests that a system's inside emerges over time and that we need to react to it.

3/
Read 11 tweets
Jul 29, 2022
A case study of #MoldableDevelopment:

A while back we implemented the squarified treemap algorithm in #GToolkit.

The implementation is based on a paper written by Bruls, @mackees and van Wijk in 2000 that describes a heuristics-based algorithm.

1/ Image
The paper describes the algorithm in detail, and most of the explanations are based on visual depictions.

Here is a visualization showing the core iterative steps taken by the algorithm.

2/ Image
Of course, the main goal of implementing an algorithm like this is to produce the final picture. Here is how such a result looks like in #GToolkit.

3/ Image
Read 7 tweets
Feb 21, 2022
A beautiful example of #MoldableDevelopment. The view itself is not the most interesting part. The fact that you can write it with a screen of code is. That code is the legend of the tool.

1/
While the tool is generic, we can easily imagine customizing it for specific contexts. For example, highlight specific files that are important for a specific investigation, like those from a special folder. When every view is an extension, you enable a rich experience.

2/
In the not too distant future, we’ll look back to this age and find the present default tools rather quaint.



3/
Read 4 tweets
Feb 19, 2022
"Everyone in the team should know the vision. Including the technical people." Sure, says everybody.

"Everyone in the team should know how the implementation. Including the non-technical people." What?!

Yep.

Let me take you on a ride.

1/
Typically, it all starts with a vision.

2/ Image
The interface kind of reflects it.

3/ Image
Read 19 tweets
Jan 3, 2022
Last year we shipped a first version of #Lepiter and it felt great to see it flying out the door:


Lepiter is the latest significant step in our journey to making systems explainable. Here is a behind the scene peak of how we got here.

1/
Our guiding north star @feenkcom is making the inside of systems explainable. We spent a great deal of energy rethinking how we can figure systems out, and this led to #MoldableDevelopment and #GToolkit.



2/
#GToolkit proposes a new development experience. We see the environment as a language made out of visual and interactive operators that can be combined in many ways while working with the environment.

3/
Read 20 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(