Prof Russel Winder

The University of Wolverhampton invited me, and I accepted, to be Visiting Professor of Software Engineering. Apart from doing some interesting research concerning parallelism in Python with Sarah Mount, it is not yet clear to me what all the responsibilities are. I suspect I will have to give some public lectures, but that will be fun. Assuming I can do lectures on programming languages and parallelism that is.

Why does Vodafone hate Handsworth so much?

Many years ago, when Vodafone was supposed to be just about covering the whole of the UK with 3G as well as 2G, Handsworth - that's B21 in Birmingham, supposedly England's second or third city depending on who you ask - was a 3G "black hole". I wrote to Vodafone and asked about this. The response was along the lines of "there will be complete 3G coverage within a year". Significantly more than two years later Handsworth remains a 3G "black hole". Worse, you can't even get 2.5G. If you travel 1km in any direction from Handsworth there is excellent 3G. Vodafone clearly cannot be bothered with coverage in Handsworth for some reason known only to someone.

Handsworth is not an area with next to zero population per square kilometre, almost exactly the opposite, it is an area with a high population density, so that cannot be the reason for lack of 3G coverage. 2G Vodafone signal is excellent, so there must be Vodafone aerials covering the area. Hence the question: why is Vodafone not supplying 3G coverage to an area it has excellent 2G coverage in? Or put another way: why does Vodafone discriminate against the inhabitants of Handsworth?

This is not a rhetorical question.

Just Keep Sending the Messages

Yesterday I presented my session "Just Keep Sending the Messages" at ACCU 2011. A number of the audience came up after the session and thanked me for a great session, so I can only surmise it went down well. Which is good. I thought I'd put down some of my reflections.

The aim of the session was to inspire people to appreciate that shared-memory multi-threading is like heap and stack, it is a resource we know underpins our applications, but it is not something that should be explicitly manipulated in our applications programs: our applications programs should be using higher level abstractions and thereby avoid all the incomprehensibility of using locks, semaphores, monitors, etc. The goal of the session was to explain Actor Model, Dataflow Model and Communicating Sequential Processes (CSP) as higher level models for concurrent and (in particular) parallel programs, and to show some small examples of actual use in small applications. Of course nothing ever goes quite to plan.

I had originally intended to be very much demonstration oriented and use a twin-Xeon workstation with an NVIDIA CUDA-enabled card for all the demonstrations, but I couldn't get the graphics card to do any CUDA stuff. So the idea of showing actors and dataflow working with a collection of CPUs and GPUs went out of the window. Sad because this is the future for all computing. Plan B had been to use two laptops to show clustered multicore parallelism and the issue of dealing with communications costs between actors and dataflow operators. Sadly though I couldn't get simple Scala RemoteActor code to compile, and I didn't have time to switch to creating some Akka examples. The MPI examples worked reliably though so at least I had some Fortran, C, C++ and Python examples to rely on. None of this involved Java, Groovy and GPars - all my ready-made examples for the JVM were single machine multicore focused and I didn't have opportunity to get Hadoop working nor Pervasive DataRush in distributed mode.

The first couple of days of the conference showed clearly that the arrival of a standard thread model in C++0x and the increased acceptance that multicore parallelism has to be harnessed rather than worried about, meant people were thinking about shared memory multithreading and missing the importance of asynchronous function call, futures and other such higher level abstract models. I therefore switched to a dynamically generated Plan C which was to do a little more explanatory, almost tutorial, material and de-emphazise the structured demonstration.

So, after a quick rewrite of the slides the night before, I did 60mins as a presentation (slides are here) and then went into total risk mode by asking the audience what example languages they wanted to have a look at in demonstration given the two examples were calculating "Pi by Quadrature" and "the sleeping barber problem". Scala was requested first so we looked at an actor implementation of "Pi by Quadrature". This and many many other variants of the same code can be found in a Bazaar branch: for branching with Bazaar the URL is, for Web browsing there is a Loggerhead instance running at Having looked at that and shown it scaling reasonably - as much as is possible to show on a dual core hyperthreaded processor pretending to be four processors (hyperthreads seem to be a real waste of time) - I asked the audience for the next language to look at and someone shouted Fortran, perhaps not realizing that I had the Fortran/MPI version ready and waiting. So the audience got to look at the traditional HPC view of "message passing", multicore and cluster parallelism. Sadly though it took far to long to get the right mpirun command to execute. But we did get to see all six (!) cores across two laptops working on the same problem. There was a huge insufficiency of demonstrations and I never did show the Pervasive DataRush or the Go examples, but time had run out.

I asked the audience if they were interested enough to go and investigate actors and dataflow more and to treat shared-memory multi-threading as hidden infrastructure (so as to avoid locks, semaphores, monitors, etc.), and everyone seemed to be enthusiastically saying yes. Result.

ACCU 2011

ACCU 2011 was a good one. It was good to meet with all the ACCU folk again.

I did a session on actor model, dataflow model, CSP and message passing and how these modesl are the right level of abstraction for applications programming: shared-memory multi-threading is infrastructure for building applications programming models not for direct use, it is too low level. As we leave stack and heap management in our applications to the runtime system, we should be leaving thread management to it as well. The slides can be found here. The code examples are held in Bazaar branches, for branching use these URLs: Pi by Quadrature, Sleeping Barber, for just browsing go via Loggerhead Pi by Quadrature, SleepingBarber.

Software Patents - A Variant on the Rant

_ There has been a very lengthy exchange on The Java Posse email list about software patents. Most contributors are against them. One contributor seems determined to say the system works, but is using the technique of not answering directly and requiring opponents to deal with spurious and deflecting issues. At one point there was the admission "I hadn't really thought about it . . . by simply observing that the system seems to be working okay for the most part". I had not contributed to the thread till this point on the grounds that the debate was going nowhere. However, I had to chip in at this point. Below is a minor variant of that email. _

The problem here is that only the high profile cases are being talked about. High profile cases involve Big Money. Big Money is where the patent system works because it is all about offensive and defensive patents as a business tool. It has absolutely nothing to do with protecting "the small guy" and allowing "the lone inventor" to licence his invention. In fact it never was about that, letters patent used in this way have always been about the state protecting monopolies for their friends - e.g. their use by Henry VIII.

The cases you need to know about to see that the whole software patents in the USA system is fundamentally broken are the one you never hear about - and will never hear about unless you are personally involved because of the "gagging orders" that are generally involved.

OK so let's have a data point. Exhibit A. ?id=26aJAAAAEBAJ&dq;=linked+list

So now everyone who uses skip lists in any software that has a presence in the USA is required to pay licence fees to Ming-Jen Wang.

I bet though there are very few people paying the licence fee that is legally required? Two of the reasons:

  1. Ming-Jen Wang does not have the resources to enforce the patent. I assume he is waiting for someone in the Big Money set to buy it off him so they can enforce it. e.g. GIF.
  2. The patent will never stand up in court due to prior art.

The real problem is USPTO issues patents willy-nilly and abdicates responsibility to the courts. USPTO take no responsibility for researching the application. At least the UKIPO do proper searches (though they obey the European ruling you quoted in an earlier email which says no software patents - though the EPO have started issuing some mainly due to pressure from Big Money, which means EU and Asian corporates as well as the obvious USA ones).

So in the end the lawyers make money. For the conspiracy theorists, the USA software patent system is by lawyers for lawyers. The fact that they have turned it all into a business tool for Big Money is a happy bonus that means they make more money.

It all comes down to resources. If you have them then you are in the game, if you don't you aren't. Lone inventors are not in the game.

On The Stupidity of Apple's Arrogant Fascism

Can it really be the case that Apple are deeming Opera to be unsuitable for people under 17, but fine for people over 17? (See the Opera press release and this article from The Register.) It appears so.

Why on earth have an age limit for using a Web browser? It's just a Web browser after all. And there is no such ban on using Safari. Aha. There we have it. Apple are trying to provide barriers to use of products that compete with their own. I guess they are hoping that no-one will challenge them under the various discrimination laws -- age discrimination in browser choice. Are there any lawyers out there up for that one?

I wonder how long it will take before the following argument bubbles up: Opera allows access to websites deemed inappropriate for children to view and Safari doesn't. Wrong obviously, but it might leverage all the angst about parental control that seems to whip up random censorship frenzy.

Clearly there are some things that society decides requires an age limit, under it you can't, over it you can. Driving a car, voting, etc. Choice of Web browser really is not in the same category. Apple are clearly trying to put in place inappropriate barriers. If this were Microsoft, Internet Explorer and Opera, we'd be hearing of the court case already. Will Apple be allowed to get away with this petty, almost vindictive, behaviour?

JSR166 and the Maven repository

Anyone who programs using Java is aware of the java.util.concurrent package - if you program in Java and aren't aware of this package then stop whatever you are doing and go and read all about it now. Development of this package comes under JSR166. The observant will notice that JSR166 is complete (all the material then available made it to Java 5), but not entirely closed. Doug Lea continues to manage development of the materials (see here). JSR166x was a set of extension that made it to Java 6 along with a few updates to the old JSR166 material. JSR166y is a set of new features (the ForkJoin framework) to be added in Java 7. Extra166y is some further enhancements (ParallelArray) that will not make Java 7 but is scheduled to make Java 8. Of course, we want it all, and we want it now. And we can have it.

On the Concurrency JSR-166 Interest Site you are able to download the current version of all the jar files. This however isn't the way the Java milieu operates in terms of dependencies these days, the Maven repository is where stuff that actually gets used has to be.

So a few days ago I emailed Doug asking for his permission to create a route to get all the JSR166 work into the Maven repository, enabling everyone to use all these good things now with Java 6 via idiomatic dependency handling techniques. Obviously given this blog entry, he agreed. The splendid folk at Codehaus have allowed me to create the JSR166-Mirror project. This provides an easy route to getting JSR166 artefacts available in the Maven repository.

The JSR166-Mirror project hosts a Git repository which is a mirror of Doug's CVS repository, but with an extra branch containing the Gradle build - the JSR166 project currently uses Ant, but using Gradle makes doing things such as uploading artefacts to repositories so much easier.

I have uploaded artefacts to the Codehaus snapshot repository - note this is the snapshots repository not the main repository, if you want to make use of these artefacts you'll have to add this repository to your resolver be it using Gradle, Maven, Ivy, Gant or Ant. The artefacts have groupId org.codehaus.jsr166-mirror and version 0.4.40-SNAPSHOT there being the artefacts jsr166, jsr166tck, jsr166x, jsr166y and extra166y. The ones of interest are jsr166y and extra166y - the rest are effectively already in Java 6 anyway.

There are a number of checks that haven't yet been done:

  1. I haven't compared a CVS checkout with the Git repository to ensure the HEADS are actually the same source code. Clearly this needs to be done, I feel a Bash or Python script coming on :-)
  2. The Gradle build needs to be finished to make it not need a specific sequence of commands to avoid some dependency issues.
  3. There is a TCK test fail when testing via the Gradle build. I need to check this out to see if it is a Gradle build failure or a real error that is masked by the Ant build.
  4. There needs to be a comparison of the jars made via Ant and the jars made via Gradle to ensure that they are mutually consistent, both in terms of the class files, and the meta data. I have to admit, I am not sure of the best process to achieve this.

So currently this is a work in progress. If you are able to try things out and report back any problems, or that everything is exactly as it needs to be, feel free to contact me.

We can be fairly certain that the GPars concurrency and parallelism framework for the JVM will be harnessing jsr166y and extra166y just as soon as it can.

The Rhythm(box) of the Banshee

No-one who uses Ubuntu can fail to be aware of the Rhythmbox/Banshee situation: Rhythmbox was the default media player, but as of Ubuntu 11.04 Natty Narwhal, Rhythmbox will be replaced by Banshee. If you run the two side- by-side, the similarity is remarkable -- they are fundamentally the same user interface. Well except that Banshee displays lots of images of album covers taking up lots of space, whereas Rhythmbox just displays a list of titles. Moreover Rhythmbox tells you the number of tracks (parenthesized after the artist or album name) which is very useful, but Banshee doesn't do this. The main difference between them is that Banshee is written in C# and Rhythmbox isn't. So Canonical is continuing the strategy of ensuring its distribution is dependent on Mono and hence dependent on not being sued for patent infringement by the owner of all those dastardly software patents that encumber the entire C# milieu. Why bother with this unnecessary risk?

I have been using Rhythmbox for many years now, it's minimal, it displays the information needed, and it works. I see absolutely no reason to change, so I won't be. Well actually I may just stick with Debian Testing and treat the 11.04 Ubuntu update as my goodbye to Ubuntu.

Banshees (at least in Irish folklore) are female spirits that wail to warn of impending death; whose death is Banshee announcing. Hopefully not Ubuntu.

The Facebook Blue Pencil - Can its current strategy survive?

Facebook is beginning to get a reputation for ridiculous, well actually pathetically stupid, censorship episodes. Material gets censored (usually stupidly and to a wrong code of morals/ethics) and then when the stupidity is brought to light, the censorship is removed and censored material reinstated. The latest episode is documented here. Facebook really is going to have to do something about this attempt to impose somebody's (it really isn't known whose) warped moral and ethical code on the rest of the universe.

To date, most of these censorship episodes seem to relate to sex - in one guise or another anyway. Why isn't any of the censorship related to guns. I find machines designed solely for one human being to kill one or many more other human beings far, far more offensive than anything to do with the sex industry. Why isn't Facebook doing something about limiting the progress and advertising of gun culture?

Facebook's current censorship policy is increasingly being ridiculed by more and more people, and yet Facebook continues to accrete to itself the ability to determine what people think is acceptable and not acceptable. One wonders if there is a "monopolies", aka anti-trust, issue rapidly rising here. If Facebook want to avoid "the auditors", they are going to have to amend their strategy.

The League of Evil Empires Updated

And in the "completely and totally unsurprising" section, Nokia has crawled into the League of Evil Empires at a lowly Number 9. Why? Mostly for compromising the tenets they had operated by for the last 20+ years. It is true that the last five years, maybe more, has seen the business strategy be a total failure, but to react by completely upending the company structure and abdicating responsibility for the entire software stack on which its business depends, handing it over to another company, seems to be a suicidal note of desperation too far. Of course, it seems very likely that Nokia is destined to rapidly move to position 100 or lower in a league of 9! The value of the Nokia is being decimated in the markets, perhaps to the point at which Microsoft will simply acquire it. Perhaps this was Microsoft's plan in having a prominent employee be put in place as Nokia President and CEO?

Bad management and poor executive vision have reduced a once nigh-on monopolistic organization from one driven by innovation and out-geeking even the geekiest, to being a commodity box shifter desperate for an angle in a world in which its market share is collapsing at a speed rivalling that of the collapse of a red giant star into a white dwarf. What to do? Turn to an organization that was a monopoly but is now desperately trying to return to the glory days of monopoly in the face of the obvious fact that it is destined to become a minor player. Both are desperate for success with this role of the dice.

Sadly there is the outside chance that they might both succeed with this play. It's all about the business mindset (versus sanity). Companies might switch from iPhone, Android and Blackberry as the corporate tools to WP7 as the corporate tool. If this happens, it will be the saving of Microsoft as well as Nokia, and likely the herald of the demise of Blackberry. At which point of course Nokia will re-establish itself at Number 9 in the League. It may even climb higher. If it isn't bought first of course.

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