Photo Taken in Uganda

No Straight Lines

I think we can learn about abstraction and system thinking from all kinds of situations in life. For this one, we have to take a big detour.

Back in 2012 as I was traveling across East Africa I couldn’t help but notice that trees weren’t planted the way I was used to see them in Uruguay: forming a nice, tidy grid. Instead they were just scattered across the field, like following no pattern at all.

My Westerner mind couldn’t understand it, and of course I started to come up with my own explanations for it, stopping at the lazy answer that it all had to do with education. “In Uruguay of course we know how to better use the land yada yada…”. I was just another ignorant westerner passing judgement to things I didn’t even understand, ethnocentrism and all that.

Luckily for me, I found some books to school me and get rid of part of my ignorance and bias and learn a bit more about how different cultures adopt other kinds of geometrical shapes to take advantage of their land. One of those books is African Fractals, Modern Computing and Indigenous Design by Ron Eglash[2].

In that book I learnt that my biased way of looking at African countries and their culture isn’t at all new. In fact, arguments similar to mine were used by colonizers to justify why their culture was superior. Yes, you read that right. Europeans thought that using straight lines for architecture and city planning was an indication that they had a higher status compared to the people of Africa.

The politics of straight lines

For Europeans, seeing a lack of Cartesian coordinates in many African settlements, meant that Africans needed the help of the colonialist to improve their living conditions, explains Eglash. When Europeans discovered huge Yoruba cities the size of Timbuktu, they dismissed them as mere villages, because they lacked Cartesian regularity. That’s obscene.

Eglash’s book has a section titled “The politics of recursion”, which made me wonder how recursion could have politics? Well, take a look at this story about Development policies in Tanzania by Pat Caplan, cited by Eglash:

In Tanzania the flexibility of housing allowed women to create new homes to escape divorce, or to extend existing ones, creating a fractal architecture that gave them some freedom. Later a social plans for modernization tried to improve living conditions by imposing a certain type of house structure. This threatened women’s autonomy to escape a bad marriage and rebuild their lives somewhere else.

Haussmann straights again.

A similar story appears in the book The Battle for Home by Marwa Al-Sabouni[1]. One chapter narrates the development of the Syrian city Baba Amr.

These houses were tacked along a Hausmann-style[sic] Cartesian plan with straight streets leading to amorphous squares. As the area continued to grow, each cluster of back-to-back houses had to adapt to the main street network, as laid down by the government.

This kind of city layout didn’t work for the actual lifestyle the people in this area had, so they adapted it, as Al-Sabouni explains:

Between the contiguous clusters, people opened their own thorough-fares: narrow winding paths such as a stream might carve into the hillside. Small business consisting of tiny shops and grocery stores, along with workshops for clean industries such as carpentry, tailoring and blacksmithing, were dotted in between the dwellings.

What are we missing out?

When I read these stories of foreign powers judging the validity of other cultures and their architectural styles, or city layouts that don’t adapt to the people that live there, I wonder what are we missing out? Specifically when we approach system architecture problems with a predefined set of abstractions where we want to fit our problem in.

If we take a look at software’s history, we can see that technology comes and goes, but when one particular tool is in vogue, we want to solve every problem with that hammer. Not only we are doing our clients or our companies a disservice by thinking like that, but we also tend to divide the developer community into the cool ones that know what’s on, and those that are still using the old tech. Everybody loses.

Am I against adopting new tech? Of course not. I’m just arguing against elitist ways of thinking. Functional Programming vs Object Oriented Programming or non relational databases vs. relational ones… These are divisive thoughts that just put back our developers communities, instead of favoring cross pollination and diversity.

If we take the partisan glasses off, we will see that technology works more like a rhizome, where one side learns and grow with help from the other, OOP incorporates ideas from FP, NoSQL sees the need of data relations by looking at traditional DBMS. Not one abstraction fits all.

Neither fractal nor Euclidean geometries have any inherent ethical content; such meanings arise from the people who use them –– Ron Eglash


  1. Al-Sabouni, Marwa. The Battle for Home, Memoir of a Syrian Architect. Thames & Hudson. 2017.
  2. Eglash, Ron. African Fractals, Modern Computing and Indigenous Design. Rutgers University Press. 2005.