Tudor Girba Profile picture
May 17, 2021 30 tweets 6 min read Read on X
Personal computing was conceived to be personal. Personal, as in experiencing computation the way it fits you. Your context should come first and dictate what is interesting. The experience should follow.

1/
For example, consider where you are reading this tweet. Or where you are writing a reply to it. It's not unlikely that you are doing it exactly in the same way many other millions of people are doing it: using the generic interface that Twitter offers.

2/
Of course, this is convenient. At the same time, it might not match your actual needs. For example, say you like writing longer threads. Longer threads imply more consideration and possibly longer time to write. And, you may want to handle multiple drafts in parallel.

3/
Also, when you compose, you might want to do it in an isolated environment where you do not get exposed to the immediacy of the new 10 notifications that just appeared.

4/
The default UI incentivises the opposite behavior. It wants you to act now. If you want a thread, it's one thread. And the writing experience is secondary to the rest of the UI.

This does not necessarily make the UI bad. It just makes it not suitable for your needs.

5/
The needs I described are still generic. Actual needs are much more contextual. You want the tool to match those needs. Not the other way around.

Think of this: if you have an idea, why do you go to a service to deposit it? Why is the experience not coming to where you are?

6/
In a beautiful #TEDTalk from 2013, Iwan Baan talked about how people both adapt to their environment and adapt the environment to their own needs and perspectives.

ted.com/talks/iwan_baa…

7/
One example is how people adapted to living in an unfinished 45-story office building and how they transformed it into a small city.

He goes on to show many pictures of how people "essentially create a home that's completely adapted to the conditions of the site".

8/
When people are provided with a building skeleton, they fill with with beautiful contextual experiences. This stands in contrast with generic "cookie-cutter housing solutions".

9/
The main message is delivered at the very end as a quote by Zita Cobb:
"There's this plague of sameness which is killing the human joy"

I encourage you to watch the talk:
ted.com/talks/iwan_baa…

10/
This is in line with the lessons from Chrisopher Alexander who distilled a language of architecture patterns. The goal: create buildings that make use feel a quality that can only be felt but cannot be named.

11/
A pattern is a building block that can take many shapes. He defined it as a three-party rule: problem, solution and ... context. Context is essential because beauty is always contextual.

12/
Interestingly, context plays a central role in programming, too.

Consider this experiment. Take screenshots of development environments opened on two different systems, ideally from different domains. Stay at an arms length so that you cannot quite read the text...

13/
Can you say which is which? If you are using a typical development environment, you cannot (light theme vs dark theme does not count).

"There's this plague of sameness which is killing the human joy"

14/
A development environment is the gateway to the inside of a system. At the same time, we can also observe a lack of joy associated with working with legacy systems.



"There's this plague of sameness which is killing the human joy"

15/
In 1996, Richard Gabriel put forward the idea of software habitability. Indeed, as developers spend a good deal of their active life inside software systems, it only makes sense to make the inside of those systems suitable for human inhabitance. A beautiful perspective.

16/
Software is an enormously exciting medium.

Yet, software does not look like anything. The editor that you use to type code in might make you believe software is that text. That's deeply misleading.

Software is shapeless.

17/
For software to be habitable, we need a suitable shape. That's what the environment does: it provides the interface through which we experience the inside of systems.

This interface can be powerful, but not any interface would do.

18/
Before we go further, let's take a closer look at Richard Gabriel's words:

"Habitability is the characteristic of code that enables ... people ... to understand its construction and intentions and to change it comfortably and confidently."

dreamsongs.com/Files/Patterns…

19/
He goes on to describe habitability by relating it to Christopher Alexander's "organic order". "Software needs to be habitable because it always has to change," he says. Therefore, it needs to grow together with the people inside (and likely the other way around).

20/
Now, the main argument revolves around code. Indeed, that matches the perspective taken for so long in our field. This perspective led to different languages, paradigms, patterns. A much needed perspective, indeed. Just not sufficient.

21/
Yet, somewhere towards the end of the essay we find this intriguing paranthesis:

"What is important is that it be easy ... to come up to speed with the code ... A language (and an accompanying environment) is poorly designed that doesn’t recognize this fact"

22/
The environment!

We strived for a long time to make code habitable by reshaping code, only for the results to be remain elusive. It's time to revisit our assumptions.

The environment is not an optional paranthesis. It is essential.

23/
The environment is, to this day, perceived as an interchangeable commodity: a glorified editor surrounded by an index of resources and few other bells and whistles. All software is presented in the same way, the only variance being what we read. The how never really changes.

24/
Just like with Alexander's building patterns, context is key when it comes to software environments, too, albeit for a slightly different reason. On the one hand, indeed, software is highly contextual. On the other hand, software is typically larger than fits in our brain.

25/
Presenting a system generically, as it was typed and as it runs might work in the small, but it fails in the large simply because it is too much for us to grasp more than a few screens at a time. When that happens, it feels uncomfortable. Unhabitable.

26/
To make systems habitable we need to compress their inner workings in a way that's comfortable for us. As software is highly contextual, we need presentations that match that context. But, to make it comfortable, we need presentations that match our context, too.

27/
Habitability is born when the experience matches our perspective exactly in that moment. That perspective might change in time and the environment should accompany us, as if with empathy. The environment must become our own.

28/
The environment is not an app.

"Apps are an old, old, bad idea" Alan Kay


29/
The environment must be a langauge. A language made out of operators that can be combined in many ways to match our context as we wish it. We should never have to adapt to the environment. The environment should adapt to us.

30/

• • •

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!

:(