Thursday, 28 May 2009

Economics

My thoughts have frequently moved to economic issues over recent months. This is partly because we are selling thing off in preparation for a move to the UK but it also reflects the issues surrounding the economic environment and my reading on the train.

Today was the reading of New Zealand's budget in parliament. I have to say that I don't see there being any surprises in what was in the budget or in the reaction of the opposition and members of the public that were reported in this evening's news.

The research method that I used for my PhD looked at the different ways that object-oriented software development practitioner's perceived what an object-oriented program is. As I expected, we uncovered a number of different perceptions from a technical perspective and from a design perspective. Hopefully, I will get into this more in another blog.

Anyway applying this thinking in the economic realm means that I expect there to be different perceptions of how to economy works or can work, and of how to resolve the current crisis.

The monetary based understanding of economics says that we have borrowed more than we can afford and that the New Zealand government should live within its income. The credit rating system works on this basis. So in order to maintain a good credit rating the New Zealand government has reneged on some of its election promises and decided not to borrow to continue funding a superannuation scheme and to fund promised tax cuts. Basically, it has primarily decided to stay with things the way that they are until the economy picks up again and there are surpluses to play with.

This whole system is based on the idea of profit and lose. A government does create credit for the things that are needed rather it borrows from a banking system that generates credits from deposits that people have made into the system. Of course people have done the same. When a large enough group of the people can no longer afford to fund their debts (as is currently happening), the whole system falls into chaos with companies failing and governments either increasing their borrowing and higher interest rates or slashing the spending often on the very things that are needed to enable the country to recover.

Of course none of this matter while things seemed to be charging along on an ever increasing debt mountain. Now though, we are paying for our consumerism and desire for better things. We must learn to live within our resources or be consigned to begging on the street corners. Never mind that you may not have enough resources for basic needs. The holders of the credit strings can dictate what you can or can not do. They hold the power!!!!

It is made worse by the way that we trade in the very commodity that we use to determine value (i.e. money / currency). We can speculate on future exchange rates and future cost of imports. In fact, we can make or lose money trading currencies. We don't have to produce anything or even have any real assets to trade in. we can just play a game with changes in rates other winning or losing in a game of chance.

Most economic proposals aim to become a will-to-power. They aim to centralise control in government or big corporations. Companies need to consolidate into bigger companies in order to compete (and to be able to run up bigger debts). Money is lent to people so that they become enslaved to a need to work in order to pay of the debts (employmentism) (Dobbs 1974).

Marketing strategies are designed to generate a sense of artificial need so that the wheels of production can keep producing (productionism) (Dobbs 1974). The power isn't with the consumer it is with the producer and the enslaving to employment. It is all about controlling the people.

C.H. Douglas (1974) argues that the alternative is a will-to-freedom. An approach which puts the consumer in control of the credit. As I understand it, Douglas would argue that a government shouldn't be borrowing to meet real needs. Instead, it should be generating debt free credit. That is a government shouldn't be borrowing for basic services or for social welfare payouts. These are needs of a society and should be paid for from generated credit.

Of course the credit agencies don't like this because they lose the power to control and dictate how a government and its people should behave (will-to-power). Instead, this moves the power to the people to decide how they should meet their needs (will-to-freedom). Douglas argued that increasing mechanisation of production would reduce employment opportunities so there would be a greater number of people who were without employment but not without needs. The thing is that production will never be done away with. Goods need to be produced so that people can live. That production should be controlled by genuine need not a system that is dictated to by a need to produce and employ.

As I look at our current transactions selling off furniture and property so we are more easily able to make a move around the world, I realise the real risk that in the financial stakes, we are likely to go backwards. When we arrive in the UK, we are probably going to find that we can't afford to own a house with the same low level of debt as we have enjoyed here. We may find that we can't even raise a mortgage despite having a very healthy deposit. We are probably not going to be able to buy similar assets to what we have enjoyed here. But I also need to recognise that we have probably enjoyed a number of assets that we haven't really needed (luxuries of earning a good income).

My argument isn't very elegant and I am sure that there are plenty who will endeavour to pull holes in it but maybe it is time to re-examine the assumptions behind our economic system and really ask whether it is a servant of the people (will-to-freedom) or whether the economic system is little more than a tool for controlling the people (will-to-power).

References:

Geoffrey Dobbs (1974) Introduction. In:
C.H.Douglas (1974) Economic Democracy. (Fifth (authorised) edition) Bloomfield Publishers: Epsom, Surrey, England.

Monday, 18 May 2009

Justice

In continuing to read Viv Grigg's (1984) book, “Companion to the poor,” he reminded me of the call for justice that is evident in the bible. He draws from Isaiah 42:1 where God chooses and empowers to bring forth justice. This is also a theme that Jesus picks up with respect to his ministry when the talks of the “Spirit of the Lord” empowering him “to preach the gospel to the poor” so that justice might be done (Luke 4:18). Neither Jesus or the prophet, Isaiah, saw this as justice being brought forth in power but rather a gentle bringing forth (Isaiah 42:3). God starts with those who are suffering, building them up, and strengthening.

Reading this material made me think about what justice means in the current economic downturn. Who suffers the most in these circumstances? Some companies are failing but it isn't the managers or executives who suffer most. In many cases, these executives who have borrowed beyond the limits of the company, are still regarded as leaders in the community. Is it really likely that these leaders who brought us into this situation, can claim to lead us out of it? Yes, I am aware of the literature of learning from failure and have used this in my own teaching to help students learn. However, in this situation, the type of thinking that will lead us out of this mess isn't the type of thinking that lead us into this mess.

It isn't just the financial state of the world where this applies. It also applies to “the war on terror.” A recent letter to the editor in the Communications of the ACM highlights the issue (El Moulat 2009, p 9). My concern with “the war on terror” is that those using the terminology assume that the western approach to trade and politics is superior to any other. They don't recognise the injustice caused by western capitalism. This is despite the obvious failure of the current economic practices. A new style of thinking is required that places more emphasis on economic and political justice for all.

I would like to argue that this should be based on Christian principles but feel that this has supercharged meaning and that these principles have been distorted in the current situation. The prosperity gospel has no place in God's system of justice nor does the gospel of personal salvation at the expense of others. Christians need to rethink their understanding of the gospel in light of goods call for community salvation. Also arguing bluntly from Christian principles ignores the ethical claims of other groups. In making this claim, we need to recognise that capitalism isn't a Christian philosophy although it has built its roots in Christian communities. God's call for justice should make us look to the interests of others ahead of protecting our own stake in this world.

References:

Viv Grigg (1984) Companion to the poor. Sutherland, NSW: An Albatross Book.

Othman El Moulat (2009) What role for Computer Science in the War on Terror? Communications of the ACM 52(4). p 9.

Friday, 15 May 2009

Graduation

Graduation in Palmerston North was primarily a very positive experience although I did find it difficult to join other academics on stage after receiving my PhD certificate. The opportunity to share this achievement with my wife, her parents, our son, my mother, my sister, and one of my nieces made this something of a special occasion.

My thesis citation sounded a bit out of place in a ceremony for graduates of the College of Education but since my primary supervisor was from the College of Education and there is no recognition of Computer Science Education within Massey University, this ceremony was the only place where I could graduate. The citation for my PhD reads:

“Mr Thompson examined how practitioners of object-oriented programming expressed their experience of the programming task. Starting from the premise that the conceptions of the programming task determine the type of output from the task, assisting novice programmers to become aware of what the required output should be, may lay a foundation for improving their learning. Thirty one practitioners were interviewed about the ways in which they experience object-oriented programming. Categories of description and critical aspects related to the nature of an object-oriented program were identified. These critical aspects were then used to examine the spaces of learning provided in introductory textbooks. The study uncovered critical aspects that related to the way that practitioners expressed their understanding of an object-oriented program and to their approach to designing programs. The study of the textbooks revealed a large variability in the cover of these critical aspects.”

One of the disappointments of the ceremony was not having either of my supervisors present. My primary supervisor has retired and was in Europe and my assistant supervisor is based in Canada. No one from my old faculty attended but that seems to have happened to another graduand who received his certificate in the College of Business ceremony in which the Department of Information Systems was based. Having taken redundancy rather than the demotion, I suppose none of them saw me as part of the remnant of the department. My Wellington colleagues would have supported me had I graduated in Wellington.

The other point of mixed feelings was joining academics on stage. My voluntary redundancy, rather than taking demotion and to allow me to complete the writing of my PhD, left me feeling rejected and discarded by an institution that I had given eleven years of my life. Joining the academics on stage was in some respects a symbolism of being accepted again into their ranks even though these academics were not those that I left 17 months ago.

Reading a commentary on Leviticus this morning caused me to think about God's guiding through these last few years of struggle. The commentary writer talked of God speaking to Moses or more correctly God's word calling to Moses. One of the things that has developed over this period has been an increasing piece of mind that God is leading and talking with us through his word.

As this part of the journey has come to an end, we look forward to God's plan for the next steps of the journey. The door has closed on the PhD portion of the journey and we step out with some degree of uncertainty but at the same time confidence that God has a plan prepared for this next stage. Joining the academics on stage is the up side of having achieved this qualification and a sign of God opening up new opportunities. The journey isn't over, it has only just begun.

Has God talked to us or revealed to us anything about this next stage of the journey? We may not have the details and He may not have stood before us in some spectacular vision, but daily in meeting with Him in quiet times, He has shown us things about His truth and our lives. Because it isn't spectacular revelation, we tend to say that He hasn't spoken when each day He has done so through quiet reflective challenges.

God will lead us where we will allow Him to take us. If we seek to hold on to possessions or things of the past, they will limit where God will lead us. Being open to His leading means letting go and allowing God to take control. As we do so, we will hear Him speak more often to us.

Instead of seeing the contradiction in Massey's rejection, we need to see the victory through the symbolic re-entry to or acceptance into the academic and research community. Where it looked like we had nothing to offer, now the door is opening and we can pass through according to God's leading. The rejection allows God to move us, where we may have remained unmoved of Massey had not closed the door on an academic career within the institution.

Sunday, 10 May 2009

Variation in perception and resulting code base

Having now spent six months working back in industry having completed my thesis on practitioner perceptions of an object-oriented program, I have been seeing the practical out working of some of the findings in my thesis. My thesis focused on the way that practitioners expressed their understanding of an object-oriented program. In analysing the interviews that I conducted, I looked for aspects in their descriptions that clearly distinguished the way that the practitioners perceived an OO program.

The results of my produced two hierarchies of perceptions. The first related to the nature of an object-oriented program and the second to the design characteristics. The critical aspects for the nature of an object-oriented program are flow of control, object usage, and problem solution. For the design characteristics, the critical aspects are technology, principles, cognitive process, and modelling. If you want to gain more insight then I suggest that you read my thesis.

In doing the data gathering for my thesis, I never collected code examples so I can only draw conclusions about the type of code produced by the practitioners based on what they said in their interviews. However, in the workplace, I am seeing those different perceptions in action and seeing differences in the type of code produced.

One of the key differences relates to the use of classes and the size of classes. Where the emphasis in flow of control tends towards a procedural or imperative understanding, I am seeing objections to using classes for the separation of concerns and a willingness to create classes that have large numbers of often long methods.

There is one area where this is very noticeable. The original architecture used an MVC pattern with commands to perform asynchronous requests for data. In the framework being used each asynchronous request has a command, an event, and a method in a delegate class. Linking these all together can prove quite tedious as can creating the individual commands and events. The commands and events have a very similar code structure.

One solution to reduce duplication in the code base is to factor out the common code into super-classes within a class hierarchy. To further reduce the duplication, consistent parameters can be established for the asynchronous requests further eliminating the differences in the command classes and possibly eliminating the need for some altogether. Further refactoring could be used to ease the programmer knowledge on the underlying event structure. In one stream of the project, this is the approach that has been taken, although not as yet to its full extent.

In another stream, the individual command classes have been eliminated by pulling them all into one big class with a method for each of the asynchronous requests. Each of these methods have similar structure and in many cases similar operations. Additional framework code has been produced to manage the new class structure. The number of classes has been dramatically reduced but the size of the classes has increased. This approach has the advantage that the programmer simply calls the appropriate method for each request.

As I look at the differences, I see a clear difference in the perceptions that the programmers bring to the task. If the code base differences are to be addressed then theses differences in perceptions need to be dealt with and resolved.

What this situation raises for me is another future direction for my research. There is a need to analyse code basis produced by different programmers and to interview them about why they wrote the code the way that they did. The interviews would be designed to uncover the perceptions that the programmers have of the task that they are working on and what they perceive as the essential design characteristics. This type of research would extend my work further into the practitioner space rather than the current educational focus of my thesis.

The question is whether funding could be raised for such research.

Thursday, 7 May 2009

Seeking work

With the move to the UK, I am looking for work. Having been employed in both industry and academia over the last 34+ years, I am now more focused on being able to achieve specific goals rather than trying to develop a career. As a result I have some specific things that I would like to achieve. In times of recession, beggars can't be choosers but I figure that as I am looking forward to what I want to do beyond the next ten years of employment rather than simply picking up skills or ticking off performance counts.

So here are some of the things that I am looking at as I look for work. I would like to be able to:

  1. continue to pursue my computer science education research (see my thesis)
    1. continuing to explore practitioner conceptions, and
    2. applying what is discovered in planning and assessing teaching
  2. apply the scholarship of learning and teaching through the use of
    1. variation theory in planning, teaching, and assessing learning
    2. action research cycles, and
    3. space of learning analysis with respect to what is taught
  3. apply these concepts through the development of game / scenario-based learning environments
  4. research the space of learning in games

There are specific contexts in which I would like to pursue this research. These are in

  1. cooperative rather than competitive environment,
  2. an environment that fosters encouragement

I am keen to apply these in specific areas. The first is to continue with my work in computer science and with software development practitioners and learners. In this context, I would like to take my thesis research on to explore issues such as

  1. the relationship between the perceptions of a practitioner and the resulting code structures that they produce, and
  2. the implications of different perceptions on language usage and system architecture.

I am also interested in other areas of training such as training commissaires for cycling.

Despite the best efforts of management and some of my colleagues, I am not convinced that the performance measures used for research and teaching actually assess quality nor foster quality of performance.

Assessment of teaching has to relate to changes in the learner. Having the learners rate their lecturers isn't ensuring quality of learning. There is a saying “no pain, no gain.” In learning, often more can be learnt from failure than success. If as a teacher my performance is assessed based on learner feedback then failing a student is the last thing I want to do. It is like the assessment of education technology based on whether the learners liked it. They might have liked using it but did they learn what they were supposed to learn? Assessment of teaching or any learning environment has to relate to the learning that is occurring. Of course, we don;t want to offend the learners or cause them to drop out but for some it is going to have to get very uncomfortable before they will really begin to learn.

Likewise a measure of research performance based on research papers presented at a select group of conferences doesn't ensure quality research. Some areas of research are completely ignored by the ranking system or are seen as a dumping ground for experience papers. Unfortunately, computer science education or computing education research is these areas. The other issue that I have with the output count mentality is that it encourages lots of short term projects designed to produce rapid outputs or for researchers to use an onion skin approach to publishing. Some research takes time to complete with meaningful results. One that I am involved in has been running for at least five years. It took over a year before we managed to publish anything but no we have a steady flow of papers. For my thesis work, there has been very few papers so far partly because it has been rejected because reviewers wanted tips and techniques for teaching rather than genuine education research but that is another story.

As a consequence I am not interested in a job that has an emphasis on counting research outputs. I would much prefer to see my research being put to practical use improving learning and addressing areas of conflict.

Wednesday, 6 May 2009

Joy and sorrow

We seem to be in a period of ups and downs. Next week, we celebrate my graduation with a PhD in Computer Science Education and then in a months time, we will fly to the UK to start a new leg of our journey through life hopefully spending more time with our grandchildren. It should be a time of celebration but it is hard to celebrate when people dear to us are sick and possibly dying, or we see the effects of the man made economic system cause pain as it goes through a recession.

While this is happening, we have concerns for the two people that I talked about in an earlier blog (10 April 2009). Both these people are very close to us. One is a sister-in-law and the other is our daughter-in-law. Things seem to progress slowly with cancer or at least in these cases.

Our sister-in-law's condition seems to have deteriorated and death looks like a possible release but is that what God wants. Even at this late stage, we believe God can heal physically and remove the cancer from her body. He can restore the damage and bring new life. Again though, we need to ask whether that is our dream or whether that is what God is seeking in this situation. Above all else, he seeks a relationship with each of us and to bring healing in all facets of life. Yes, I pray for healing but above all else, I pray that “God's will be done.”

It is the relationship issues that concern us more with our daughter-in-law. She has her next chemotherapy session tomorrow and then on the 18 May will have a PET scan to see whether the cancer is dying. We pray that the PET scan will show the cancer in decline and that there will be no need for further treatment beyond the current chemotherapy cycles. But is this a selfish request? We have to say that “God knows the plans that he has for them. Plans for welfare and not for evil. Plans for hope and for a future” (Jeremiah 29:11). Like Israel in exile, it isn't always easy to see the end of the journey when we are in the depths of the struggle to get past the current obstacles.

On any relationship, there are always pressures from all different angles. Work places pressure on us; as do commitments to different groups. An illness like cancer with all of the tests and prolonged treatment really stresses a relationship. The person who has the cancer desires support but the partner has commitments often made long before knowledge of the cancer occurred. How do you balance these pressures in such a demanding situation. God doesn't seek to destroy relationships. Rather he would seek to make them stronger. Where there is no pain, there can be no gain but it isn't always nice going through the pain.

If all that we are asking is for God to heal so we can go on enjoying life then we have missed the point. God's healing doesn't work like that. If God heals, it will bring new challenges and demands on our life. Life won't get easier. In some respects, I see healing like a call on our life. It isn't so much that his healing brings obligations as that his healing brings changes to the way in which we view the world and its demands on us. Each criss in life brings change and that change affects the way that we interact with others from that point on. If those changes are to be positive and not negative then we need to hear what God is saying to us and trust Him to guide us through.

Friday, 1 May 2009

View update thyself

The more I work with rich internet applications, the more I am becoming focused on ensuring that the view updates itself through data binding. Two recent issues have brought this thinking to the fore again. One relates to how we think about the view and its updating and the other is the way that user interface controls are implemented.

With respect to the we think about the view and its updating, there are multiple alternatives but the two that I am seeing most frequently are “how can a responder update a view after an asynchronous call to the server ?” and “what data reflects what the current status of the view?” The first of these approaches tends towards an attitude of pushing data into the view while the second sees the view responding to changes in the underlying presentation data model.

When I started my current project, I reread the patterns described by Martin Fowler (2006). With the patterns he describes, I lean heavily toward the supervising controller approach in my implementation of Flex applications. as a consequence, I don't talk about "how the responder updates the view?" but rather about “what data in the presentation model reflects the required changes in the view?” My views are written in MXML and extend (inherit) a base supervisor (ActionsScript). I endeavour to make the view (MXML) use data binding to retrieve changes in state and function calls to the base supervisor to handle user gestures. The direction of communication is always to the next level in the architecture so even the base supervisor doesn't expect to receive function calls from things that it calls or initiates. It uses commands or presentation model objects or domain objects to achieve the changes that will be reflected in the view.

The systems that I have worked on so far, haven't involved visual objects that move on the view (i.e. virtual worlds but a system that I am looking at may require such changes). We do have data grid columns and other visual components conditionally appearing and / or changing visual state. What we have done is define a data model that can be bound to that reflects the way that we want the visual components to behave. The binding utilities allow the higher level objects to recognise changes in the lower level objects without the lower level objects needing to know about the objects that are making use of them.

Well almost!!!

My most recent effort has been to implement a control that allows selection of branches of a tree and the multiple selection of entries in a Combobox. The difficulty is the assumptions behind the way that the UI controls are implemented.

For the tree control, I started with a data model that managed the selection of nodes in the tree and the retaining of state of the selected nodes. I then extended the the tree control so that it reflected the changes from the underlying data structure. My control and supporting data structure still has a long way to go before I would call it a reusable control but what it does prove is that a user interface control can be separated from the data that it uses. The remainder of the code doesn't have to ask the UI for what is selected. That is done by enquiring of the data.

In preparing to write my version, I looked at other examples that were available. I found them complex and difficult to adapt to our specific needs. What was more frustrating is that I found the Flex Combobox difficult to adapt. Not only does the Combobox attempt to control what is selected and how the selection is made, it makes assumptions about the nature of the drop down. My current implementation of the tree selection control doesn't use the Combobox control simply because it is difficult to control when the Combobox rolls the drop down up.

For a single selection from a tree, we had already had to change the way that it reopened the drop down because it would reposition to the wrong object. With the more complex selection strategy of the new control, trying to overcome the roll up and repositioning problems in the time available were just simply inadequate so we choose a path that would give us an implementation that almost works as we want.

The second UI component is one that allows the user to select multiple entries from the Combobox drop down. Here we were fortunate and found what seemed to be a working control. The only problem is that you give your data to the Combobox and at some point, you have to ask the Combobox what has been selected. Yes, it fires the change event so that could be used as a way of monitoring what has been selected but what you end up with is a duplication of effort. The control and your own data model track what has been selected.

At this point, I have made some adaptations to the control but I personally don't like the way that it behaves. I see the way these controls working as the control is given a reference to your data and then spits out at some point the selections or changes.

With a controls like these two, the user may select a number of items and then through a button request some processing. If you are using the change event or some other event to track changes then you land up duplicating a process that the control is already doing. Why no use data binding to an underlying data structure that the programmer can access directly to determine what has been selected.

References

Fowler, M. (2006, 18 July). GUI Architectures.   Retrieved 9 November, 2008, from http://martinfowler.com/eaaDev/uiArchs.html

Fowler, M. (2006, 19 June). Supervising controller.   Retrieved 9 November, 2008, from http://martinfowler.com/eaaDev/SupervisingPresenter.html

More haste less speed

I originally made a note to write this entry on the 6th February 2009. In fact, I wrote an entry in my personal work / research journal on that date but never transcribed it to a blog. At the time of writing my journal entry, I said “I have become so focused on the work project that I am failing to take time for reflection.” At the time, the pressure was on to deliver functionality and I felt under pressure to deliver to prove my capabilities.

In the desire to reach implementation targets, I discarded my preferred approach of test-driven development and simply endeavoured to implement functionality. The further I pushed in this direction, the more time I spent debugging instead of designing and building. The result was considerable difficulties and a stall in the development. A similar thing happens when we write tests that take too big a jump. In this case, the time in the debugger went up and progress went down.

Some see the debugger as their best friend. I am beginning to see it as my worst enemy and a sign that I am not thinking clearly about my design. In an event driven environment like Flex, the debugger can be the most unhelpful tool. Simple tests and simulating events and interactions has been the fastest way to resolve issues. The thoughts become focused and the problem is resolved faster and with greater ease. Thinking about how to specify a piece of behaviour in a way that enables it to be tested helps clarify the intent of the code and the design that will enable that intent to be achieved.

Writing lots of code quickly doesn't bring about good design. Code duplication is often ignored and the implications of certain actions are not thought through. All programmers go down paths which they need to back out of but without the time of reflection, it is easy to write code that becomes redundant once a better grasp of the requirements and the intention of the code is obtained.

Thinking through how to write a behavioural specification either as a behaviour-driven development specification or as a unit test helps clarify the structure of what is required. With the improved clarity and smaller steps for testing, better pace in implementation can be achieved.