Is Martin Fowler Martin Fowler?

OK so here I am sitting in a restaurant in Salford Quays, aka MediaCityUK, aka BBC North's now home, on my tod, and bizarrely finding myself reflecting on personal history. In particular, at the moment, wondering how the heck I am in the position of presenting Python training courses (*). For some obscure reason I am transported back to a lecture room at UCL, sometime around 1985, where I was presenting one of a 30 lecture course on Software Engineering. I recollect in particular two faces, one I shall label Winnie Pun, the other I shall label Martin Fowler. The question in my mind is: is Martin Fowler Martin Fowler? Winnie Pun I know to be Winnie Pun as she subsequently undertook, successfully, a PhD with me as supervisor. But is Martin Fowler Martin Fowler?

I remember a number of conversations in the corridor between the aforementioned lecture room and John Washbrook's office involving John Washbrook, myself and the individual I have labelled Martin Fowler - who may or may not be Martin Fowler.

I then skip across the Paradigm Wars (object-oriented vs. functional), various OOPSLA conferences involving drinking sessions with Bruce Anderson trying to kick start the pattern movement (cf. OOPSLA 1990 and 1991), and workshops with Kent Beck on "what is an object?" (cf. OOPSLA 1990), but I come back to: is Martin Fowler Martin Fowler.

What is really at the heart of this angst is: have I done enough real world work with Java, Python, Groovy to be able to teach Java, Python, Groovy? In 1985 I had had so little experience of actually doing big systems development, that my lectures were basically entirely theoretical based on published work by people who had even less practical experience than I had - is this a synonym for bullshit. I had at least been a successful UNIX systems programmer before becoming an academic. I continue to wonder if any of the people writing about software engineering in the 1980s had any actual experience of doing it at all: far too many of the 1980s software engineering community clearly had absolutely zero real experience of developing systems. How can anyone who has not done something for a period of time even pretend to be able to teach that something?

OK, a necessarily rhetorical question in reality. Or perhaps not...

If Martin Fowler is indeed Martin Fowler, did he realize at the time I was lecturing that it was all theoretical waffle or did that realization only come later?

There is a flip side here: being an effective teacher/trainer is a skill in itself. A good teacher/trainer needs some real experience, but do they need more than is required to have empathy with the practitioners and what it is they do? Or is this just self-involved double-think?

I guess the real question here is what gives a person the right to be considered as, and consider themselves as, a guru on a given subject. Does being a guru allow one to pontificate? Or even teach/train? What balance of practitioner and teacher/trainer is the right one? Oh and is Martin Fowler Martin Fowler?

(*) Now don't get me wrong, I really like Python and presenting training courses on Python. Not only do I like doing this sort of thing, I like the income it generates :-)

FP and OO - two worlds collide and merge

_ The Scala user mailing list regularly and seemingly increasingly frequently has debates about attitude. This is not just about the attitude of the theorists to the pragmatists, it is about newbies to oldbies, trainers to practitioners, etc. Ultimately though, at the core, is the functional programming versus object oriented programming debate. The difficulty is that this is not being debated in a programming paradigms context alone, all the alignmnets of people on all the dimensions are conflated. A posting by Tony Morris:

I don't really buy into the "two worlds coming together" thing. There aren't two worlds -- it's an illusion -- a destructive one in my opinion. The issues at hand are so easily resolvable and indeed, they are regularly resolved for certain individuals. It's comes down to a matter of what is important to whom.

prompted me to write the following, initially as an email to the list but also as this blog entry - which is a slightly amended and extended form from the email. I agree with Tony's view that the way forward is possible and should be trodden, but I disagree with him saying it is an easy technical matter. It isn't. It is about the social structures arising from 30 years of Paradigm Wars. _

In the UK at least, there is very much a "two worlds", at least historically. In the 1980s, the functional programming (FP) folk set themselves up as people involved in the only form of computing that mattered. They got into positions of research power and hence research funding. But they became insular, and indeed dismissive of the non-declarative forms, e.g. object-oriented (OO). Also they did not worry about being relevant to folk making money from software. As OO rose in the late 1980s and early 1990s, the OO folk became an equally arrogant and insular crowd, who were as dismissive of non-believers as the FP folk were. The FP crowd began to demean the approach of being relevant to industry and commerce, a line being trodden by the OO folk. Both sides made jokes about any integrative work, cf. FOOPlog.

There was a real Paradigm War. You were on one side or the other, the two could never merge, cf. making FOOPlog the butt of jokes.

End result: C++ and Java are the only programming languages that matter in an industrial and commercial setting, with a smattering of C for the embedded systems folk. OO won the battle and the war. At least for the hearts and minds of CEOs, CTOs, CIOs and entrepreneurs. Not to mention the VCs.

C++ though led the way for the comeback of FP. The STL opened the door to a more FP approach to data structures in an OO world. Moreover template meta programming is FP.

Simon Peyton Jones (with Simon Marlowe) has been putting Haskell "out there" not just for its FP purity but because it can be made to be industrially and commercially relevant in an increasingly parallel world. Old views of concurrency are (finally after 40 years) almost irrelevant in the post Multicore Revolution world of ubiquitous parallel processors, involving many different hardware architectures.

Nonetheless there is a underlying and pervasive "two worlds" mentality. People are being engaged by the ideas of FP, are even looking to Haskell as an alternative to OCaml (which has a global interpreter lock (GIL) and so is problematic). Yet unless the there is a connection to C++ or Java, languages do not get actually used and hence absorbed into "real world" use.

It is not clear where the future is for native code, is it Go, is it C++, is it a merge of Miranda and C++ totally unlike the Objective-C mashup of C and Smalltalk?

On the JVM there is a much more obvious route given Groovy, Jython, JRuby, Clojure and Scala. Integration is available for free on the JVM, unlike the attempt via p-code 40 years ago.

Scala is in a position to bring the "two worlds" together in association with the Groovy, Jython, JRuby and Clojure communities. By not acknowledging that there really are, from a social perspective, "two worlds" out there, then the opportunity to create a new computing fit for the ubiquitously parallel world will be missed.

Jeepers GPars Edinburgh - The Aftermath

Last Wednesday evening I did my talk about GPars to the BCS Edinburgh Group. I am not sure whether the audience was bigger or smaller than usual, but most of the chairs set out in the room were taken, so about the number the organizers expected turned up. The biggest problem was not the projector, which seemed to "just work", it was that the lectern was facing the wrong way, and so not usable, and the video cable wasn't long enough to reach a good place to talk from. Nothing the meeting organizers could do about it, but something the venue folk really ought to look to. In the end though a minor inconvenience.

For some reason or other, almost certainly a figment of my imagination, I had the belief this was to be a 90 min session and had planned accordingly. In reality the organizers were expecting 50 to 60 mins of presentation, with a hard deadline of being out of the building 89 mins after the session was due to start! Not a disaster, or even really a problem, but it meant rearranging the code presentation part of the session on the fly to just pick out the core highlights rather than the lengthier flow originally planned. Or to put it another way: sorry to the audience for a less than smooth presentation of the code.

Having said that, the audience reacted in the expected ways at the expected points in the session, and the questions and points raised were all on point and perceptive. Also the conversation at the adjournment to a local hostelry was good. I enjoyed it all, I hope the audience did.

Oh, and I finally got to meet one person I have been having email exchanges with for four or five years and another person I have been emailing with for two or three years without previously having met them. It was great to finally meet them both. It must be said though that the photos on the Web do not make it entirely easy to recognize them!

A PDF file of the slides I used for the session can be found here.

Thanks to Seb Rose for the invitation, and to whoever sacrificed whatever to ensure a dry and sunny two days to ensure The Royal Mile etc. was at it's best for September.

Software Patents Legalize Protection Rackets

OK so I am referring to a report of a report of a report, but this article on The Register makes it absolutely clear that racketeering is not only legal but a whole business strategy when you have software patents.

Microsoft claim, but have never put to the test, that they have software patents that are infringed by Linux. Without facts, we have just FUD. FUD is though that which you can threaten people with. Microsoft are now bullying and cajoling manufacturers of Android-based equipment into signing protection deals, sorry IP licences. Since Microsoft have no input at all into the development of the software that is the focus of the deal, there can be no maintenance contract involved. It must be purely to do with software patents. Yet there is no proof that the patents exist, let alone apply to Linux. And even then this would only apply in those jurisdictions in which the patents have been taken out and approved.

Microsoft are clearly executing a protection racket, there can be no other word for it. Yet this protection racket is actually legal since it involves state approved monopolies, i.e. patents. So what we have here is state sponsored crime. Should the US government be put on trial for sponsoring crime? Won't happen of course - patents are tools of business, not of crime, and it is these businesses that keep the politicians in their positions of power.

Perhaps the Mafia should invest in a portfolio of software patents and thereby make their protection racket operations entirely legal?

Endnote. This article on Groklaw is interesting. Further reasoning as to why software is mathematics. Mathematics cannot be patented - well not yet, I am sure some big business will start making inroads on this soon. Till mathematics can be patented it would seem software cannot be patented. On the other hand try telling that to the big business who are making shed-loads of money from either extortion relating to, or licencing of, software patents.

Jeepers GPars, It's All So Easily Parallel

GPars logo _ Repeat announcement since it is not under a week away. Which means I probably need to think about writing the talk :-) _

I am doing a session with the above title for the BCS Edinburgh branch on 2011-09-14 at 18:30, unsurprisingly in Edinburgh. Details are to be found on their website here.

Mobile Internet and B21 8EQ

As I have ranted about previously, Vodafone claim they have excellent 3G signal in B21 8EQ, and yet there is provably (by experiment) absolutely no 3G signal at all. Vodafone really do need to reconsider what their coverage map is saying, it clearly looks like an assumed expectation, rather than an experimentally determined fact.

I decided therefore on this trip to B21 8EQ to try other network operators. I purchased a T-Mobile dongle from the still open (this is a significant observation a week after the Clapham Junction "looting with serious violence" incident) and busy T-Mobile store. I was also going to get an Orange and a 3 dongle so as to compare. The 3 shop was trashed by the "looting with serious violence" of last week and was closed, whilst the Orange shop was pristine but no customers. The 02 shop was also trashed and closed. I took these observations as a sign and went to Carphone Warehouse for a 3 dongle. There are two Carphone Warehouse shops in Clapham Junction, both had been trashed in the "looting with serious violence" but both were in good state, open and busy.

After an uneventful, but extremely wet, drive to the B21 8EQ destination, I was eager to try things, so I did. Knowing that 3 block port 25, whereas Vodafone and T-Mobile do not, I tried Vodafone first. Why did I bother? Very little 2G signal and definitely no 2.5G, 3G or 3.5G signal. T-Mobile next. Very weak 3G signal but connection made. reported 0.6Mb/0.1Mb. Fairly poor. Then it dropped out to 2G. Very poor. But at least they allow HTTP, IMAPS, SSH, and SMTP. Next up 3. Poor signal but definitely 3G, reported 1.2Mb/0.3Mb. But no port 25 and I need SMTP. Bed time.

Next morning I try things again and put the dongles on the other side of the laptop. 3 gives 3.2Mb/0.6Mb. Healthy. T-Mobile 1.4Mb/0.6Mb. Passable. T-Mobile allows SMTP so wins - hands down.

Summary: Vodafone, get your act together and stop lying to people, and actually get 3G to where you say you have it. O2, care more about your business. 3, care more about you business, and get your act together and open port 25. T-Mobile get your act together and stop over-profiling TCP/IP connections.

PS Oh for a globally accessible WiFi, at a non-extortionate price.

PPS Why is mobile Internet so poor in the UK?

Software Patents, A Millstone for Ever More?

There has been an increasing number of articles recently coming out against software patents. The latest that I have seen are Martin Fowler and Brad Feld. I guess my problem is that the whole situation is simply depressing, not only of me but also of innovation in software. The actions that Lodsys are bringing (see for example Groklaw's archive) against developers of smartphone apps is clear indication that patent trolling is going to kill small company and individual software developer activity, leaving the field clear for the huge corporations to be the only organizations able to develop new software. This will definitely lead to a significant lowering of innovation. This is not because large corporates don't innovate, they do, but the pace of their innovation is driven by commercial pressures not by the ability of technology to support new and novel ideas.

What makes it all worse is that the situation is a self perpetuating one. Given that legal costs generally exclude individual software developers and small and medium size enterprises (SMEs) from any form of legal activity - be it offensive or defensive - the only players are the big corporates. Big corporate either have large patent war chests, or they have to buy them. Notice this is exactly what Google is having to do as a protection from Apple, Microsoft, and many others. If you don't have patent war chests, then when an organization with a big patent war chest decides to attack, you have no form of defence - there are only three forms of defence against a (assumed) valid patent attack, and that is either to have patents for a counter attack, leading to a cross-licencing deal, to have enough money to win in court against all comers, or to get the patents found invalid. Sadly this last relies on the judges ensuring cases are only heard after challenges are made to patents, and so is very unreliable - as Google and others are discovering.

The upshot of all this is that big corporates have to have patent war chests to stay in the game. Google is proving this. It means there is no way of stopping patents being the tool of business.

In some areas patents can actually be sensible: Dyson's cyclone technology for vacuum cleaners springs to mind. There is an application of physics leading to a new and novel technology for which the inventor deserves some protection so as to recoup development costs and make a profit. Less clear cut are drug formulas. New drugs cost a lot of money to research and develop, there needs to be some guarantee on a return on investment. So having patents on the formulas seems like a good idea. Of course, patent holders then charge extortionate amounts of money for their drugs especially to captive markets, e.g. the National Health Service. There needs to be compromise between using patented drugs, generics, encouragement of research and innovation, and profit margins.

Then there are user interfaces. Should these be patentable? My instant answer is no, and despite some issues, I'll stick with this. The problem is the Apple problem: Apple has spent many years building up a brand image based on certain user interface styles, architectures and techniques. Their brand deserves some form of protection from "knock offs". It is just not clear that patents are the right tool. The whole of business processes really come under this heading as well. Why should processes be patentable? Are they ideas or inventions? Well they are both, but patents relate to physical artefacts not to ideas. So user interfaces should not be patentable, but products employing them should be. There must be a way for the lawyers to enshrine this in law?

Finally for this piece, software. I have no problem with software embedded in a physical artefact having the protection of patents. I have a huge problem with patents on software itself and software techniques. The obvious one I have used before in the patent of linked lists. Why should anyone have a patent on this idea. True these ideas have to be invented, they are inventions, but they are actually just new ideas explained in source code. By all means patent products using such ideas, but not the ideas themselves.

Of course the problem is that now software patents are an integral part of the USA way of business, they are immovable. The efforts of the USTR to force all signatories to ACTA to have software patents means all ACTA signatories will have to have USA style software patents. This will kill innovation dead. How can it be stopped? Only by direct political intervention. Big corporates cannot now get out of the game, indeed they have to get into the game - cf. Google. Politicians can put a stop to this, but will they? They seem to have been caught up in the web of power being pushed by the agents behind ACTA, a tool for big corporates to maintain control of brands. (Not a bad thing per se, but some of the side effects inserted into the tool are.) Moreover politicians have to be funded, this is generally by large corporates, and the politicians then basically have to support the business interests of their funders. We have Catch-22. The upshot seems to be that software patents cannot go away, even though they kill innovation. Time perhaps for all software developers to give up interesting things and get jobs with the big corporates? As I mentioned earlier perhaps depression is an appropriate state of mind?

Footnote: Only one person I know is a supporter of software patents. I think he is wrong, but he is entitle to his opinion - albeit wrong :-) He is though very clear that he thinks that the current system is broken. Patent trolls need to be removed from the system, and the granters of patents need to stop granting clearly stupid software patents. You know, if the system actually did this, there would be an awful lot less objection. Still wrong, but less so.

I hate the smell of melting batteries in the evening

UPS batteries have a short life, 3-6 years on average. The usual indicator of a failed battery is a failed UPS self test. Till last evening, I had purchased a new battery immediately on a self-test fail, had it arrive next working day, installed the new one, and taken the old one to the recycling centre. No dramas, just a period of tension between old battery fail and new battery fitting, in case of power problems.

Last evening was special. Self test fail, new battery ordered, enter tension state as always. Then something new, horrendously nasty smell, and unusual irregular beeps from the UPS, not to mention the batter charge lights going off and coming on. So I turned off all the equipment, and found that the whole UPS casing around the battery was too hot to touch. I let it cool overnight, to discover the battery casing was severely mis-shapen. The previous evening the battery had got so hot it had started melting its casing. It is a good job the human olfactory sensors detected the problem, it seems the UPS internal sensors didn't have this as a use case.

Copyright © 2005–2020 Russel Winder - Creative Commons License BY-NC-ND 4.0