Tue, 18 Oct 2016 19:40:30 +0000
Text of a letter I wrote to Theresa May. It was written somewhat in anger and, with a moments reflection, I think it could have been both toned down but also made much stronger. But here it is...
Wednesday 12 October 2016
Dear Theresa May,
I am writing to you regarding your plans for Britain's exit from the EU.
I note that on page 72 of the 2015 Conservative manifesto it says that you will "Safeguard British interests in the common market".
Since you are running out the term won by your party under that manifesto I wonder how you justify your reckless threats to abandon the common market, and the attendant destruction of economic value you are causing even now?
The woeful, non-binding, referendum was won by the Leave campaign on a 51.9% margin. Not even a qualified majority (which is usually taken to be 55%).
I would like to understand on what basis you think this gives you the right to jeopardise the economic future of this country in pursuit of "Fortress Britain"?
Fri, 09 Sep 2016 13:24:39 +0000
I am reading Pricing on Purpose (by Ronald J. Baker) which, even in the 60 pages I've read so far, has given me some great insights. In particular about the extent to which profit is a function of risk. I'd never thought of it this way before but once I contemplated it, it seemed completely natural.
The book is also bringing me face to face with the underpinnings of free market economy thought going right back to Adam Smiths Theory of Moral Sentiments. This from Rose & Milton Freedman is a typical example:
Adam Smith's flash of genius was his recognition that the prices that emerged from voluntary transactions between buyers & sellers - for short, in a free mark - could coordinate the activity of millions of people, each seeking his own interest, in such a way as to make everyone better off. It was a startling idea then, and it remains on today, that economic order can emerge as the unintended consequence of the actions of many people, each seeking his own interest. The price system works so well, so efficiently, that we are not aware of it most of the time. We never realise how well it functions until it is prevented from functioning, and even then we seldom recognise the source of the trouble. Prices perform three functions in organising economic activity: first they transmit information; second, they provide an incentive to adapt those methods of production that are least costly and thereby use available resources for the most highly valued purposes; third, they determine who gets how much of the product - the distribution of income. These three functions are closely interconnected." -- Rose & Milton Friedman, Free to Choose.
This line of thinking really resonates with me but I have a number of problems:
I don't make any claims to economic understanding so if any economists want to chip in with good starting points on tackling these problems.
Mon, 29 Aug 2016 10:17:52 +0000
So this is in the way of being a post to see if my broadcast equipment still works.
Things I am interested in at the moment:
I wonder if this post will see the light of day..?
Sun, 12 Jul 2015 17:49:32 +0000
Okay after even more time away it's unlikely anyone reads this but I'm happy to say that I have my blog working again!
At the moment I am working on general systems theory, cybernetics, value mapping, psychology of price, building Arduino based MIDI modulators (currently using a guitar string and cello bow), business coaching, leadership, and Clojure/ClojureScript.
Time to start posting about some of this stuff!
Fri, 08 Aug 2014 10:01:36 +0000
I answered a question in the reddit learn programming sub yesterday from someone who was about to take their first programming class and wanted to know what to expect about this thing they are embarking on. Here's my answer, maybe you can leave a better one?
It's a very interesting question you raise. I suggest that a good analogy is to becoming an apprentice carpenter.
You will be given a bunch of unfamiliar tools and materials and told "make a chair, start with a simple one like this."
Over time you learn to master the tools so that you can handle them well, you learn the tricks of the trade (how to make hinges, and seamless joints), things not to do or how to recover when you've chiselled the wrong bit (sorry my lack of carpentry knowledge is now failing me). Eventually with enough time, and having turned out enough chairs, tables, cupboards, stairs of increasing quality, you are an artisanal carpenter and can make wood do anything you like.
That takes a lot of practice and dedication.
In the context of programming the tools are languages, learning their syntax and (more important) their semantics, learning the toolset (compilers, build tools, and so on), learning the frameworks and libraries from which you assemble software, learning good idioms, and learning how to problem solve. Eventually after turning out a lot of software of increasing complexity you can make it do anything you like.
This takes a lot of practice and dedication.
At this point you probably end up running a shop full of carpenters and get an ulcer dealing with recalcitrant wood suppliers and clients who don't know which floor their stairs should go to, but that's a story for another question.
The main thing to focus on is enjoying the problem solving aspect: thinking your way through problems is the piece least taught and most important to programming successfully. If you enjoy this, and are willing to put in the time, you will go far and enjoy making many things.
Sun, 13 Jul 2014 11:14:52 +0000I'm out of the habit of writing, particularly about stuff where I am uncertain, exploring, learning, or in the dark. So this post wasn't easy to write and probably won't be very good. But it's a start... Consultancy is hard. I'm not the first person to reflect on this I think. And I am certain I wasn't alone when I assumed that the hard part was knowing what you know (or, perhaps, using what you know). The most obvious lesson I have learned so far is that, rightly or wrongly, most people see consultancy as a business in which people buy advice and/or skills from those that they trust to help them. From this perspective being a consultant is about selling trustworthiness over competence. Because trust is so very hard to create 'on demand' you also look for anything that can short-circuit this process. For a lot of consultants I think this boils down to "shared background". My background doesn't look very consultanty. I'm not ex-KPMG. I haven't worked for huge brands or hip digital agencies. I've spent 20 years in the software development world trying to bring applications into the world. Sometimes I feel this acute sense of being an impostor in calling myself "consultant". My inability to point to an impressive pay-day from the startups I've worked for doesn't help with this feeling. So, why continue..? Last year I did an introductory cognitive behavioural coaching course. This year I am mentoring for UnLtd. While under no illusions about how much I have yet to learn, still I'm learning a lot about working with people who want to achieve things. From the coaching course I learned that helping other people isn't about telling them what to do so much as helping them reveal their own insights about what to do. I have lots of ideas and "insights" and I love sharing them. Partly I think I love feeling clever. Learning to rein this in, that my own self-worth isn't dependent on people perceiving me as clever is a tough one. But I know it's right. Mentoring is different to coaching because there are times when your mentee really does need advice or practical guidance. But even here I am feel the more non-directive approach works best. I am uncomfortable being thrust into the role of expert and prefer to see myself as a peer who is, perhaps, a little further down the road. Suggestions then are more what I feel they should be: sign-posts from a fellow traveller. Up to now consultancy for me has been very much about communicating what I know and/or doing it for a client. I've felt that this is what is expected of me and that my value is very tightly bound to these activities. But, I am wondering, is that true even here? As a coach, mentor, or consultant different things are expected of you, and you use different techniques. But I think the best bit of any of them is when you help people find their own way of unlocking what they need to and achieving a goal in life/business. As a consultant I would like to blend what I see as the strength of coaching & mentoring with my own skills, experience, and judgement. I think the possibilities I see in this are why I continue. For example: I am looking at games and trying to design games in which I can embed my own experience & judgement but which, in the playing, allows the player to use what they know to the best advantage: moving from "advice giving" to a kind of "guided exploration". I haven't tried it yet but feel like this is a very interesting, potentially worthwhile, area to explore. From where I sit today my own goals seem very far off and I worry that they are unattainable. I have so much to learn and in the business of creating a growing business, more still. But I have some excellent supports and feel this is a path worth pursuing. If not an easy one :-) I'm very interested to hear from oth[...]
Sat, 10 May 2014 16:44:20 +0000
One of the interesting things about 4clojure is that you can "follow" other users and, once you have solved a problem, you get to see their solutions. The advice is to follow some of the experts so that you can see what a real Clojure solution looks like.
It's both instructive and depressing to do so. By contrast with some of the solutions from people who've done all 155 of the 4clojure problems mine are are verbose, inelegant, and betray my ignorance of much of the deep power of Clojure's abstractions.
Here's an example:
"Write a function which returns the first X fibonacci numbers."
(= (__ 3) '(1 1 2))
(= (__ 6) '(1 1 2 3 5 8))
(= (__ 8) '(1 1 2 3 5 8 13 21))
Here's my solution to the problem:
(fn [n] (map (fn fib [n] (loop [n n] (condp = n 0 1 1 1 (+ (fib (- n 1)) (fib (- n 2)))))) (range n)))
To be fair to me, it works. But it's long-winded and doing far too much work. Let's take a look at what a more experienced Clojure programmer might come up with. How about:
#(take % (map first (iterate (fn [[a b]] [b (+ a b)]) [1 1])))
#(take % ((fn fib [a b] (cons a (lazy-seq (fib b (+ a b))))) 1 1))
The key difference is the use of a lazy sequence (via either
iterate) that generates an infinite expansion of the Fibonacci series. Then it's enough to just
take as much of the sequence as required.
It's enough that this approach didn't occur to me, although I did try to think about better ways of generating the sequence (even thinking about
iterate but not being able to see how I could apply it). The elegance with which my mentors generate their sequences is pretty inspiring.
I'm not beating myself up too much. Some of these guys may have prior functional experience or have been using Clojure for years. But it does rather highlight the gulf I still have to cross to master this language, not to mention paradigm, I have chosen.