Skip to content

Software, In the beginning.

20140504 (2014 May 04 Sunday)

This article only concerns the world of computers. If you never use a computer then this is of no use to you, stop reading now. But if you do then read on.

In the beginning [of the world of computers], there was Software, and the software had Freedom, and the Software was Free. The Software had freedom in the beginning. Through Free Software all computations were made; without Free Software no computations were made that have been made. In Free Software was life, and that life was the light of all mankind. The light shines in the darkness, and the darkness has not overcome it.

“Free software” means software that respects users’ freedom and community. Roughly, the users have the freedom to run, copy, distribute, study, change and improve the software. With these freedoms, the users (both individually and collectively) control the program and what it does for them.

When users don’t control the program, the program controls the users. The developer controls the program, and through it controls the users. This nonfree or “proprietary” program is therefore an instrument of unjust power.

Thus, “free software” is a matter of liberty, not price. To understand the concept, you should think of “free” as in “free speech,” not as in “free pizza”.
The freedom to run the program, for any purpose (freedom 0).
The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
The freedom to redistribute copies so you can help your neighbour (freedom 2).
The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

Do we need Free Software — How can we bring about a socially just, environmentally sustainable, and spiritually fulfilling human presence in our computers? — part 0 Introduction — part 1 Where are we now? — part 2 How did we get here? — part 3 What is possible now? — part 4 Where do we go from here?


A single rule for apostrophes.

20140109 (2014 January 09 Thursday)

a sad apostropheApostrophes don’t have to be complicated. Normally we are taught several rules and many exceptions, and are expected to remember them. I have one rule and some examples. (If you already know how to do apostrophes then skip this post, unless you are teaching.)

Rule: Use apostrophes for contractions, that is when a word or words are made shorter by removing letters, use the apostrophe as a place-holder for the missing letters.

Examples simple contraction:

  • it is → it’s
  • it is → ’tis
  • do not → don’t
  • will not → won’t
  • can not → can’t
  • are not → aren’t
  • of the clock → o’clock
  • Holloweven → Hollowe’en
  • cat-of-nine-tails → cat-o’-nine-tails
  • will-of-the-wisp → will-o’-the-wisp
  • it was → ’twas

But not all contractions.

  • gymnasium → gym
  • advertisement → ad
  • etc.

Rule: Use apostrophes for contractions, that is when a word or words are made shorter by removing letters, use the apostrophe as a place-holder for the missing letters.

Examples possession:

  • John his ball → John’s ball
  • the cat its ball → the cat’s ball
  • Sarah hers ball → Sarah’s ball
  • the bus its wheels → the bus’s wheels
  • its ball → its ball
  • his ball → his ball
  • her ball → her ball
  • their ball → their ball

These seem a bit odd in the long form, nobody uses them any more, we always use the short form. However they are useful to help us remember where to put the apostrophe. (The history in this post is made up, it is just an aid to memory.)

We don’t have an apostrophe for Plurals, there is no contraction.
Rule: Use apostrophes for contractions, that is when a word or words are made shorter by removing letters, use the apostrophe as a place-holder for the missing letters.


  • cats → cats
  • dogs → dogs
  • buses → buses
  • TVs → TVs
  • LEDs → LEDs

So what about plurals, possession and words ending in s? The answer is the same.

Rule: Use apostrophes for contractions, that is when a word or words are made shorter by removing letters, use the apostrophe as a place-holder for the missing letters.

Example plurals and possession:

  • the cats there ball → the cats’ ball
  • the girls there ball → the girls’ ball

If a singular noun ends with an s-sound (spelled with -s, -se, for example), practice varies as to whether to add ‘s or the apostrophe alone. A widely accepted practice is to follow whichever spoken form is judged better: the boss’s shoes, Mrs Jones’ hat (or Mrs Jones’s hat, if that spoken form is preferred). In many cases, both spoken and written forms differ between writers. — (paragraph taken from wikipedia)

Years 1990 to 1999 that is the 1990s, the 10 years between 1990 and 1999, but for some reason Americans write 1970’s.

Now for the other anomaly:

Individual letters and numbers when pluralised have an apostrophe.
12341567189 has 3 1’s, not 3 1s, or better 1 appears three times.
abcdaefgahi has 3 a’s, not 3 as, or better a appears three times.

There are a few other exceptions, however this is the simplest system I could think of. One rule that covers over 90% of it, and a few exceptions. If you go by the other systems then these exceptions are exceptions to exceptions to exceptions.

If you do not learn the exceptions then you will be well ahead of every one else. If you need to look up an exception I recommend the Penguin guide to punctuation. Its rules are simple (though the rules on apostrophise, are not as simple as mine), take the result and fit it into your newly learnt model (or just look it up each time, until you learn it).


20131215 (2013 December 15 Sunday)

First let us assuming (for now) that growth is possible, and it has no limits in a finite world, and that it is desirable. We will do this because my argument does not depend on it and for now it will make things simpler.

If the economy was a car, then GDP (Gross Domestic Product) would be a measure of how much petrol(gas) it uses, and not how fast it goes, how much it can carry, or what it looks like, or the quality of the sound system. We may not all agree on which of these is the most important, but who of us thinks that the most important measure of a car is the speed at which in empties the tank, that future cars need to grow in the fuel using ability. Like wise we need a better measure of the economy.

So we need to ask what sort of growth should we have, and how do we achieve it.

Here are some things worth growing in:

  • Better efficiency in production and other work.
  • Making things that last, even if they cost more.
  • Make devices that don’t over consume.
  • Make devices that produce renewable energy.
  • Make things that are repairable.

If it is worth doing, it is worth doing forever, and for everyone. Therefore it must be sustainable. By sustainable I just mean we do it in a way that makes the first sentence in this paragraph true. Note: I did not say always, just forever.

Give a person a fish, then they have a fish. Teach them to fish, then they will sell all the fish (no more fish). We need to insist that we like fish, we want to eat fish until we are old. If this means not eating fish as often, then ok. Just make sure there are plenty more fish in the sea.


20131115 (2013 November 15 Friday)

The word economics comes from the Greek word to study the home.

If we look at the home/house/family as a model, then we will find some things that may work at a world or country scale and some that won’t.

I have heard lots of suggestions of things, that I don’t think will work.

Suggestion 1:
Buy lots of stuff, throw it away, and buy more stuff.

This does not work at the home/house/family level. Some dis-functional families do this, but it does not lead to good. The same is true at the global or country level.

Suggestion 2:
Get a lazy person to vacuum the carpet, even when it is clean, to produce work.

This may help with training, distribution of money, and avoiding free-loaders, but that is all.

Suggestion 3:
Give money to the rich and hope that it trickles down.

This can help in a closed system such as a family. But in a closed system, where does the money come from? In country wide system, there is no problem of money creation, but the effect is just inflation(this is bad as reduces savings), and reduction of debts(this is good). Therefore the creation of money also creates irresponsibility “it is better to be in debt than to save”. Targeting of the needy or of the cause of the problem makes this irresponsibility problem even worse.

Here are some that I think may work, or at least be better.

Suggestion 1:
Encourage people to do useful work, that benefits society as a whole.

Suggestion 2:
Pay everyone in a society a living allowance, not means tested. Everyone retains a right to work, without loosing this allowance. Take away all means tested benefits, such as unemployment benefit.

There can be additional allowance for disabilities, based on a fair judgement, not on whether you do or don’t work, but on needs and whether you can or can’t work (irrespective or if you do or don’t). If a person can’t but does work, then there status is still can’t work so they still get the benefit. If it is can but does not work, there status is can work so they don’t get additional benefit. If they need equipment they get an allowance for it. If they get it cheep second hand (charity shop, ebay etc), then good for them, they get to keep the difference. People should NEVER be punished for doing what is best, even if it costs more. In the long term this is best.

This encourages people to do the right thing, the best thing is that we do not need to know what the right thing is. We just stop rewarding behaviour that leads to bad outcomes(capitalist). And we give an allowance to everyone, without judgement (socialist).

An energy equation of grace — god and science

20130810 (2013 August 10 Saturday)

The food equation

1 Corinthians 3:6 — “Paul planted the seed, Apollos watered it, but God has been making it grow.”

Imagine some food, imagine a loaf of bread. Now for simplicity imagine it is you source of energy, you get all of your energy from bread like this. Now Imagine that energy is your only need, you need nothing else, no shelter, no water, no air, no sleep, no warmth, no love, no stuff, just energy. However you have to work for the bread, I don’t mean you have to just plant and water, I mean you have to earn every last Joule of energy. So let us imagine we want to make a loaf of bread with 100 units of energy in it: The field is ready (as if my magic), we scatter the seed (a few units), as if by a miracle it rains (saving us a few units), then we have to make it grow (that must be at least 100 units of shining on it), then we pick the wheat (a few units), then grind it (more units), add water (fetching water is hard work), cook it (we will need to grow some wood), eat it (a few units). As you can see even if we can make this process even more efficient, we can never do it: if it where 100% efficient then we would put 100 units in, and get 100 units out, but it can not be 100% efficient so to get 100 units of energy you will have to do more than 100 units of work.

So what is happening? You are getting into energy debt. We will not have enough energy, We are slowly loosing what we started with, and eventually (probably quite quickly) die of lack of energy.

So how does it work in the real world? God does the shinning. God makes the wind, the waves, the tide, to grind the grain. We just do our little bit. James 3:4 — “Or take ships as an example. Although they are so large and are driven by strong winds, they are steered by a very small rudder wherever the pilot wants to go.”

So when you eat, know that you did not earn it. If you are rich, you did not earn it. If you are poor, you did not earn it. It is by grace that you eat, by grace that you have surplus energy. Use this energy wisely, and give thanks.

Romans 12:3 — “For by the grace given me I say to every one of you: Do not think of yourself more highly than you ought, but rather think of yourself with sober judgement, in accordance with the faith God has distributed to each of you.”

A missing pattern: Command, Query, Observer and ???

20130710 (2013 July 10 Wednesday)

When I read about the observer pattern in design patterns, I though but what about the other patterns. By this I mean the other patterns that govern the communication relationship between exactly 2 already existing objects.

There is a finite set of patterns governing the relationship between 2 objects that already exist. This finite number I believe is 4. (These relationships do not involve creation or destruction.) The 2 objects may have any combination of these relationships.


UML is inadequate for what is being shown here, so I have used another notation.

Rectangular box

A rectangular box represents an object

an arrow with a solid line

An arrow with a solid line, represents data flow

an arrow with a dotted line

An arrow with a dotted line represents control flow.

an arrow with a zigzag line

An arrow with a zigzag line represents synchronization, when to do something. A simple method call with possibly no arguments and no return value, and no action except to tell the called object that something has happened. The called object then synchronously does something.

The patterns — but only an introduction


Also called: procedure.

Uses: method, routine or sub-routine
Used by: Command Query Separation
Implements: Setter, Do-er

Command methods/sub-routines should be verb phrases.

A Command is a method/sub-routine or even a code fragment, used to make an object do something. A command can be passed data, but can not retrieve(return) data, in it self. The command read-line-from-file returns nothing, though it will change the state of the object, the object will store this line of text and any error condition.

A controls and passed data to B


Also called: function

Uses: method, routine or sub-routine
Used by: Command Query Separation, functional programming
Implements: getter

Query methods/sub-routines should be noun phrases, unless the return type is Boolean, in this case it should be an adjective phrase. It should not start with the verb get.

A Query is a method/sub-routine or even a code fragment, used to find out something about an object. A command can retrieve data, it can except data, but it can not change the object.

A controls B, but B passes data to A


Uses: method, routine or sub-routine
Used by:
Implements: dependency inversion

Observer is used when B is in control, but A knows when things need doing.

B Queries A, but at A's request

Note: It is an anti-pattern, to use observer to update state in B when state in A changes. Use Query chaining for this. Use observer to update objects that you do not know if they are being queried, e.g. a display that is queried when a person looks at it. Or to trigger processing, that can not be deferred e.g. event logging.

The other pattern

Also called: to be decided

Uses: method, routine or sub-routine
Used by: see below
Implements: see below

So first we see from the diagrams that the following diagram has not yet been described.
B Commands A, but at A's request

When I looked at this diagram I realized I had seen it before. It us used in Graphical User Interface frameworks, when there are multiple overlapping windows. If a window is covered the windowing system may forget what is covered; When the covered window is exposed the windowing system can not on its own redisplay the missing region. It therefore sends an expose event to the owner of the uncovered window. This owner then sends commands the the windowing system to redraw the area.

Used by: Windowing system, …
Implements: Refresh, …

One day you will die — what inspires you?

20130610 (2013 June 10 Monday)

Don’t be inspired by how short your life is. Instead be inspired by your life being finite (one day it will end). What will you leave behind?

  • Start something, a project, that you will not personally finish.
  • Work on a project you did not start.
  • Work on a project that has no end.

Do not try to make a difference, that way leads to chaos; A negative difference is still a difference. If you aim for a difference you will get what comes easiest, a negative difference (many people do this).

Try to make everything you work on better; Don’t try to fix everything, but if you work on it, then ask how can I make it better. So that the next person to use or work on it will find it less frustrating, and a joy.