An orbit of the sun

So a year in and a few things are apparent. First I am not really a blogger. While I have many ideas for interesting blog posts my focus is on the idea. The activity to turn it into a blog post worth publishing seems to add little value for me – so it doesn’t happen. The idea gets logged and I move on to the next.

I enjoy what I do. I had frequently thought to myself ‘in an ideal world what is it that I would do?’ and found that there were no evident opportunities out there to do it. For me it is to understand knowledge using the medium of ideas. There are opportunities once this has progressed to commercialise – but commercialisation is not a directing objective, and brings along with it its own negative trappings. Demanding a focus on the machinery of commercialisation rather than the underlying inspiring activity.

The cult of productivity is ingrained in the current commercial culture and seems to be becoming more ingrained. By exposure it also habituates into the minds of the participants in that culture. But an optimisation of productivity also digs a pit on the top of a hill that is a barrier to change when that hill is discovered to be a local maxima – or even inhibits the vision to see that the hill is a local maxima. For me this resulted in an initial focus on activities that, while they delivered visible progress, denied me the opportunity to deconstruct the foundational pillars they were built upon.

In the field of AI it is naive to think that we are even close to what is achievable. Many of the current generation solutions are little more than complex calculation tools that can solve a specific problem of a general class of problems. They can add significant value to what we do at the moment, so are not to be dismissed, but they are just a step along the way. Much as balancing one flat rock on top of another is a step along the way to reaching the current capabilities of architectural construction.

So far my focus has been on generating ideas towards reasonably undirected objectives.  A process that I have developed reasonably useful practices around. I will continue that. While I am not imposing direction on my future self, a couple of ideas that might indicate near term activities are; to try to project into code a paradigm that more closely fits with working with knowledge and ideas, and designing practices and expression forms that allow me to build second order value on top of ideas.

Playlist

Dancing / Kylie Minogue

An Agile Brexit

I have recently been investigating the complexities and challenges posed by large scale software development processes. In doing so I wanted to find other activities that have similar structural challenges.

In this blog post I define large scale software development as an activity that encompasses a group of skilled software developers working on a shared construction (the codebase) requiring flexible methodology over a significant period of time with potentially changing requirements. I will go through each of these characteristics to give a little flavour.

A group of skilled software developers is an example of a group of skilled professionals. Small scale software projects can be achieved by a single individual. As such some of the challenges of collaboration do not exist. A handyman or a plumber working on a single small job is similar. Professionalism may be required, but not collaborative professionalism.

A shared construction means that not only are these developers working to the same objective, they are also working on the same piece of work. A gardening company that hires out gardeners to work on different sites can be seen as a group of professionals working together. But the fact that they are working on separate sites removes the complexity that would exist if they worked on the same site.

A requirement for flexible methodology means that the actions and choices of each professional may need to adjust to the scenario they encounter within the codebase. A production line pumping out cars might have apparently similar challenges, but methods and process get honed, standardised and scripted to a level where they are automatable or precisely teachable. This enables cars to be created in a predictable time and with consistent quality. Greenfield software projects might require little flexibility in the methods of developers, but every greenfield project turns into a brownfield project quite rapidly.

The endurance of the activity over a significant period of time introduces complexity. Projects that are just too large to complete in a short time period require enduring effort. This enduring effort means that personnel, best practices and individual familiarity with the work will vary over time. This opens the door for misinterpretation of existing work and obsolescence of work in progress requiring rework during the delivery phase. Refactoring may be unavoidable but it is always a challenge to communicate to an outsider that views the product as a single piece of work.

Changing requirements are a fact of life for most software developers. These can be prompted by a change in request from customers, a change in priorities of the business, a discovery of complexity during the implementation, a clarification of previously ambiguous requirements or other sources. Discovery of complexity is also a challenge to communicate to stakeholders. It is akin to finding a structurally unsafe wall when working on building an extension. It increases the scope of the work without delivering any increase in externally visible benefit.

Many of these characteristics interplay with each other. For example when working over an extended period of time the competitive landscape may change, leading to a change of requirements.

It occurs to me that Brexit negotiations (for both sides) have a high similarity to large scale software development (with some differences.)

The procedure of Brexit can be seen as encompassing a group of skilled professional (lawyers, negotiators, civil servants) working on a shared construction (the Brexit agreement) requiring a flexible methodology (the structure and detail of each part of the agreement being distinct) over a significant period of time (an initial timescale of two years from article 50) with potentially changing requirements (realpolitik is at the whim of the populous and influenced by the media.)

As such it is likely to encounter many of the challenges that large scale software development processes encounter.

So are there any techniques that can be translated from software development to the Brexit negotiation process? Given that far more software projects have run (successful or not) than Brexit negotiations.

For me two things jump out.

First – trying to deliver the project as a single piece of work carries very significant risk. Individual details can balloon to take up far more resource than expected. In an all-or-nothing scenario details that are not significant can delay work on details of far greater significance. They can also push back the timeline of the project, with the accrual of such delay likely to be significant. Also pieces worked on at a later time can impact earlier work that is considered complete – either making it obsolete or requiring additional work to bring it into line with the new work.

Software development has evolved towards an approach of early and frequent releases of small product increments to address these issues. After each release the most important pieces can be worked on next. Functional (production ready) product is delivered at each release. Reworking / refactoring is absorbed piecemeal into subsequent releases.

Second – there will be bugs. In software these impact through a variety of scenarios ranging from the product not working to users having to adopt work arounds to achieve goals that they want. For Brexit these may emerge an unintended or unforseen adaptations of business to the new regime, or arbitration and courts reaching decisions that are valid and even required by the framework but not in line with the intended spirit of the agreement.

As with software, don’t expect the first release of the agreement to be the only release of the agreement. Provision should be made to allow subsequent modifications to the agreement to address bugs that only become apparent after the event.

Another software rule of thumb may also prove useful – estimate how long it will take, then double it.

Playlist

Come together / The Beatles

Perpetual democracy

Democracy is a fine thing – for reasons covered elsewhere in far greater depth than I could achieve. But populism in democracies that are relatively young poses a threat that a populist leader could move away from democracy with the support of the people.

It is a scenario covered in fiction many times where a functioning democracy descends into totalitarianism. The dilemma being that if the populous vote for a dictatorship then why should the leadership go against the will of the people.

The fallacy here is that you are taking a snapshot of the will of the people at one point in time. By diverging from a democracy you are removing the freedom for the people to be represented at all points in the future. This includes people that were not yet born at the time when the decision was made.

As such democracies should aim to maintain the future freedom of their population to be represented. They should become perpetual democracies.

Along with the the right for each individual to be represented by their government, a perpetual democracy should have a tenet that denies a right. The government and the population should be denied the right to move away from a democratic system of government.

The seemingly regressive act of denying a right protects against decisions made in response to a short term swell of populist opinion. It protects future freedoms.

Playlist

The sound of silence / Simon & Garfunkel

The art of craft and design

I was recently in the British Museum for the first time in a long while. After the customary stop to see the ever popular Rosetta Stone I had a look in the room on the opposite side of the main courtyard – the King’s Library.

As well as books in the bookcases that lined the walls there were a number of crafted pieces from across the globe and through the ages. I didn’t have a camera with me – which proved to be a good thing. It allowed me to really look at the pieces rather than check them off as seen – as so often happens when taking a photo.

When you look deeply you realise that these pieces probably took an individual a significant amount of time to create – either in learning the craft, creating the piece or both. As such each piece represents a dedication to the processes that led to its construction.

In the present day many of these pieces would be easy to create using modern tools and modern machinery. As such the same pieces from today do not necessarily carry the same weight of dedication.

Instead that dedication typically goes into the understanding and creation of processes and techniques that can craft things at a mass consumer level. The end piece may not look as visually stunning, but if you look closely you may be able to envision the dedication of time that has gone into its design and the design of its fabrication technologies.

An example may be tucked in your pocket right now, waiting for the next call.

Playlist

Call me maybe / Carly Rae Jepsen

Arcing back to the start

I have been working more on the structure of my planned novel. Two places jump out as important to focus on – the start and the end.

For the start – character, scene, world and scenario introductions can happen in isolation to the rest of the story. This is the first time that the reader will be encountering anything about the world represented in the novel. As such the need for it to follow on from the rest of the story does not exist.  Of course if something at the start is to be used later in the novel then it needs to be presented in a consistent manner.

The end is different.

The end is encountered by the reader after they have read through the whole of the novel (hopefully.) It is also responsible for delivering the reader a satisfying and fulfilling conclusion to the novel. As such it needs to build on material delivered through the rest of the novel.

The technique I have decided to use is to have the ending of the novel as the culmination / resolution of an arc that will be revealed through the rest of the story. I have identified what I think that resolving action should be and from that the subject of the arc that leads to it.

I am also working on other arcs that feed into the construction of this ending-providing arc. As such these additional arcs and situations are worked back from the end of the novel – rather than created by plotting from the beginning of the novel.

Hopefully this will deliver a rich and rewarding experience to the reader.

Playlist

Time / Pink Floyd

I ai mianbao

I am progressing through the HelloChinese app picking up more Mandarin.  I dip into it a few times a day – doing a lesson or two which each take about five to ten minutes.

The hardest part to learn by far is the Chinese script. I do not think I can yet recall any of the characters that I have so far covered in my lessons. Although I am starting to build a mental model of the stroke ordering to expect for any given character. An unconscious cognition as cognitive scientists might call it.

Pinyin – the romanization of Chinese script – helps a lot, although remembering the tonality to apply adds a layer of complexity.  My favourite word so far is mianbao (excuse the lack of tone marks) which mean bread – and is just nice to say.

But don’t let the complexity of Chinese script put you off learning Mandarin. Learning by listening and talking along with pinyin simplify the challenge a lot.  Also the lack of conjugation more than makes up for the complexity of script.

Playlist

Talking to you / Izzy Bizu

Start it anyway

I have found that the removal of pressing future time demands has an interesting psychological impact. Things that previously remained undone for a protracted period of time are now easier to start and complete.

A characteristic of these activities is that they have an unknown effort or time requirement before starting them. For example finding the power cable of a music keyboard or refactoring a particularly gnarly class. It seems to be this unknown (and before the event unknowable) commitment that leads to their continual postponement.

A part of this, for me at least, is the desire to determine what is the best use of time. What things should I commit to and what things are not worthwhile to commit to. Because an activity may have an unknown duration beforehand, the benefit received for time committed cannot be accurately calculated. This fuzziness puts in into the delay basket even though a probabilistic calculation of return may indicate that it is more valuable than an activity that has a know time requirement.

With the removal of future time demands the calculation changes. Because time is no longer a scare resource, activities with unknown requirements can just be started. If during performing these activities I think they are taking too long, or not delivering the benefit expected I can just stop. When I do bail out of an activity my retrospective analysis of time spent no longer leads to regret at starting it.

And yes, I did find the power cable. It took about ten minutes.

Playlist

Get ready for this / 2 Unlimited

Antagonist in the driving seat

I have recently managed to get some plotting done for a planned future novel, working on how to get reader engagement with the characters at the start of the novel.

While considering other novels I have read recently I noticed the commonality that it is the antagonist in the story that drives the plot.  The protagonist, who the reader typically empathises with, usually plays a more passive role – at least initially.  They react to the situations and scenarios thrown up by the actions of the antagonist.

An antagonist as described here is not necessarily a ‘bad guy’ in a story but they are a character that is driven by their own motivation and as such impose their will on the protagonist, for example a Gandalf figure calling Frodo to a journey.  At a stretch an antagonist can be a situation or ‘the system’, for example the favela culture in the 2002 film City of God.

If the protagonist is not the driver of the plot then does this shape how many stories are presented to the reader? In effect they become questions of ‘how would you react to this situation?’ which turn into cautionary tales if the protagonist picks poorly or educational tales if the protagonist picks wisely.

Playlist

The Water Margin Theme / Godiego