Russel Winder's Website

Groovy and Grails eXchange 2012

Last week was the 2012 incarnation of the Groovy and Grails eXchange annual conference held, as ever, at Skills Matter. Two days of Groovyness and Grailery. I think most people were Grails users, and primarily there for the Grails track, but there was a solid presence of non-Grails Groovy folk which made the Groovy track (which is what I was attending) really interesting.

I was not presenting on GPars this year, but there was still a GPars talk. It was Aurélian Maury presenting on his experience of using GPars for real, "in the wild". See here for the page on Skills Matter's website, which includes their video of the presentation.

My contribution to Day 1, other than being at sessions, was to be on the end of day panel. There were known to be questions coming on concurrency and parallelism along with issues relating to Groovy and Grails process. As a person known to have some knowledge and strong views on these topics, I was inducted into the panel. I thought the issues relating to concurrency and parallelism led to an interesting and constructive exchange, but then I am biased! I also managed to have the last word, mostly since the audience, after I had my little rant on avoiding excessive backward compatibility and going forward managing change and user expectations, burst into spontaneous applause. Peter Ledbrook, who was leading the session, took this as a suitable closing. The Skills Matter page and link to the video can be found here. I seems to be the only person not wearing dark clothes!

As is traditional Day 1 starts with a Groovy keynote by Guillaume Laforge, and Day 2 starts with a Grails keynote by Graeme Rocher. Sadly I missed the first few minutes of Graeme's presentation due to traffic jams that delayed busses by many, many minutes. But I got to see most of it, and Grails just seems to get better and better. As was hinted at in the previous day's panel session, Grails will be ditching Gant and using Gradle as from Grails 3. As I understand it, Gant is not being replaced by Gradle per se, it is that Grails wants some facilities that Gradle offers and as a side effect Gradle can do all that Gant is used for. It thus makes great sense for Grails to go this route. To be honest Gant needs either a rewrite or to pass into history. I suspect a rewrite will never happen.

My session was intended to be an analysis of the position of Groovy in the JVM-sphere, based on the tensions between dynamically typed languages and statically typed languages. Groovy started as a dynamically typed language but with optional run-time type checking but is increasingly supporting compile time type checking and indeed compile time code generation as per statically typed languages. The questions are whether the traditional barriers between dynamic and static languages should be attacked and if they should is Groovy doing the right thing. Cédric Champeau the person driving the static type checking and compilation was in the audience and I survived. Perhaps I wasn't contentious enough. The intention was really to make people think about the direction Groovy was going and whether it can and/or should attempt to replace Java. The slides for the session are here and the page with the Skills Matter video is here.

All in all a good conference, I am already looking forward to the 2013 version.

USPTO, wrong, as if proof were needed...

Paul Allen via his organization, Interval Licensing Inc., is currently suing Apple, Google, Yahoo!, and AOL, for some amount of money based on various patents including U.S. Patent Nos. 6,034,652 and 6,788,314. Looking at Groklaw, particularly this article, various stupidities of the case are highlighted. For myself, I find it incomprehensible that a patent system can provide monopoly to the invention of: information to a user in non-distracting ways that do not interfere with the user’s primary activity on a device such as a computer. It's not even a physical device containing a computing system that the claims are being made on, just the act of presenting information. So in the USA you can patent the display of information.

The folks at Groklaw are trained in USA law and far better commentators on this case than I am. I will therefore leave the detailed argumentation of how stupid this case is to them. I do however want to highlight something that, for me, proves the USPTO is not fit to operate as the government tool for granting monopoly.

Let's consider the difference of title and abstract between the 6,034,652 and 6,788,314 patents:


Indeed, the answer is they are exactly the same. The 6,034,652 patent was filed in 1996 and granted in 2000. The 6,788,314 patent was filed 13 days after grant of the earlier patent in 2000 and granted in 2004. So the USPTO believe it is right and proper for an organization to apply for a patent using exactly the same title and abstract as a patent that had just been granted two weeks earlier after a four year wait. First reaction has to be, well that is cynical behaviour by Paul Allen and Interval Licensing Inc. Second reaction has to be: USPTO clearly do not actually read the patents and check in any way shape or form for obvious similarities to earlier patents. Nor, clearly, do they check for obviousness, nor suitability for patent.

The only deduction, or even inference, from incidents such as this is that the USPTO exists only to provide jobs for patent lawyers, and to keep the patent courts full of business. Why is this a bad thing? Two reasons: firstly, it increases the costs of products to the end user since the costs to suppliers is increased by all the patent litigation undertaken; and secondly it stifles innovation by small players as they have to plan for potential litigation in patent court. Either of these is a reason to reform USPTO with respect to software and business patents, but put them together and the argument is undeniable.

Even if you are a believer in software patents, and I am not, I think they should be forbidden, you have to admit the current system is out of control, favouring only patent lawyers, and hurting everyone else. The current high profile Apple vs. Samsung case serves only to reinforce this. Mobile phone manufacturers and network operators compile massive software patent war chests in order to attack and defend against each other as a part of the performance of trade. When Apple sue in their own backyard, confident in having a positive jury, which provides the right decision for them, and then it is clear that the jury were biased and cheated, the whole corruptness of the system is brought into stark relief.

Who wins? The patent lawyers. Who loses? Everyone else. How can the USA government justify USPTO behaviour? Is it because most politicians are ex- lawyers?

On USA Presidential Campaigns

I caught a part of an interview last evening that summarized for me the fundamental corruptness of the USA presidential system. Prior to seeing the interview fragment, I already believed the system biased and problematic. To start, the system is a closed one; it is invariably a two-horse race between candidates offered by the only two political parties with a viable presence in the USA: Democrats and Republican. Both of these parties are fascist right wing parties according to The Political Compass, and nothing in the history of the two parties really belies this analysis.

The parties go through an enormous spend-fest just to decide on their candidate. Even this is an effectively closed system: only successful senators are allowed to enter the race and only those with very deep pockets can afford to continue far into the race. Spending money is at the heart of the USA primaries. This is political power by the purchasing of votes.

Once elected as the candidate, spending is even more important: candidates believe they have to buy the votes in the swing states, and spend some on their secure states as well. "He who has the cash can win the election". And note this is a definite "he". There has not been a woman as candidate, though Hillary Clinton almost got there.

So why does an interview fragment make me write about what is so obviously a corrupt system? The interviewer asked something like "many people worry about the negativity of the Obama campaign, what do you say to this" in answer to which the interviewee, who was a prominent Barak Obama campaigner, went into a tirade of how Mitt Romney had failed at this and done that wrong. The interviewer responded with something along the lines of "but does not that just show that the campaign is one of negativity" to which the interviewee responded "no the campaign is not a negative one" and then proceeded to effectively repeat the tirade. You could see the interviewer metaphorically throw up his hands in frustration. I just thought "Americans really don't seem to get irony".

What then came out was a discussion of spending, and the huge amounts of money spent on campaigns and how it was spent. The answer was an eye opener to the cynicism and blatancy of the vote purchasing. Spend just enough to keep your secure states happy and spend as much as you can in those states where there is a possibility of the opponent winning to try and ensure you win. Given the system, a not unreasonable strategy. But as a commentary on the fundamental corruptness of the system it was brilliant. The system relies on the purchase of votes by trying to show your opposition is the voters enemy. This led to clear statements of the racist and discriminatory assessment of the population. White working class in certain states were assumed to be racist and therefore anti Obama because of the colour (or color) of his skin. There were other instances of these discriminator assumptions dictating the nature of the spend of huge amounts of money.

USA presidential campaigns are cynical spends of amount that can only be categorized as "conspicuous consumption" to purchase votes.

Thank goodness the UK system is nothing at all like this.

Oh dear my irony meter just went off the scale. Clearly the UK system is as bad in it's closedness and attempt to purchase votes by any means necessary. Basically democracy as we know it today is an appalling system. It just sucks less than any other system. This is depressing.

NightHacking with Stephen Chin


logo.](/Images/nighthacker_80x77.png) Stephen Chin, one of the Java evangelists at Oracle (his blog is here) is currently undertaking "NightHacking Tour - The Road to Devoxx". It involves Steve riding a very serious BMW 1200cc bike round Europe having two hour hacking sessions (that's hacking as in doing good programming) whilst putting out a video and audio feed to live streaming (using some very serious Nikon kit).

Steve's first session was with James Gosling (yes, the James Gosling) in the USA. He then flew in to the UK and did the second session with Ben Evans, one of the driving forces of the LJC. Yesterday Steve visited me at home for a session on GroovyFX and there was supposed to be some GPars, but we didn't get that far since we only had a couple of hours.

_ This blog entry written whilst watching the fourth session, Steve with Stephen Colbourne, the person behind JodaTime and JSR310. Steve is on a fairly hectic schedule. He does the LJC session later today, and a session with Trisha Gee before that. _

I have been intending to do a GroovyFX version of 2-d balls bouncing in a box as a vehicle for looking at quadtree algorithms and the use of GPars to support parallelization for many months. Steve's visit was the impetus needed to get going on this. So I got a repository going for something to work on. In the process I realized I didn't know as much as I should about JavaFX and GroovyFX. The repository, called GroovyBalls, is on GitHub here. (I also have it on my own website here.)

For technical reasons to do with the video and audio stream, we had to work on Steve's laptop. This necessitated setting up his NetBeans configuration for Groovy. In the process we got rid of some bugs in the Gradle build. I use Gradle now for everything build on the JVM. Even if using Eclipse, IntelliJ IDEA or NetBeans, everything centres on the Gradle build file: Gradle can generate Eclipse and IntelliJ IDEA projects, and NetBeans with it's Gradle plugin "Just Works".

Having got my initial code working on his machine, Steve got stuck in to working with me to improve my JavaFX knowledge by working on a couple of small evolutions of the code. It was great fun. I should be able to provide a link to the video soon.

Having got a head start now I should be able to get the code into a position to apply GPars to. I have a deadline: Groovy and Grails eXchange 2012. GroovyBalls all has to work for then!

JAX London 2012

JAX London 2012 speaker
image.JAX London 2012 was last week (2012-10-15 to 2012-10-17) but I haven't had time to sit down and think about what to write till today for lots of reasons, none of which are interesting to anyone other than me.

I had two sessions in the program: It's All About Processes Communicating (PDF here); and Closures: The Next "Big Thing" in Java (PDF here).

The first of these, It's All About Processes Communicating, was really an introduction to dataflow approaches to solving problems and to ![GPars project

logo.](Images/gpars_64x64.png)GPars as a framework for supporting them using Java and ![Groovy

project logo.](Images/groovy_logo.png)Groovy codes. The first part of the talk was a bit of a rant against application level us of the operating system technique of shared mutable memory multi- threading - this is where the squirrels played their part. Squirrels are very territorial and despite there being five bird feeding stations to choose from the senior squirrel refuses to let any other squirrel eat from them. Squirrels therefore deny parallelism. This led to a short discussion of the synchronized keyword in Java and the fact that any and all locks are designed to stop parallelism. So in today's world if you need more performance, you need to use parallelism, so you need to avoid locks.

The session then moved onto a short description of actor model, dataflow model, and Communicating Sequential Processes (CSP). Although I had been intending to present examples of dataflow model and data parallelism, both of which are well supported in GPars, I took the decision to focus on actor model, which is also well supported in GPars. So I skipped the material about approximating the value of Pi, and moved straight to the Sleeping Barber problem. This led to showing various examples of Java and Groovy code using GPars to create a simulation of the problem. This isn't really about performance increase it is about avoiding deadlock. I think the examples worked well. They and many other are in a Git repository. To clone use to just browse go via

The second talk the following day, Closures: The Next "Big Thing" in Java, was proposed before I knew Brian Goetz was giving the opening keynote. Since he covered much of what IO was going to cover I did a serious overnight rewrite of my talk to try and be a reprise and follow on from what he had talked of.

The session started with a concern over whether people would follow the changes in Java or whether they would just stick with the version they know: many people are still using Java 1.4.2. Personally I find this shocking: they consider the changes of Java 5 to be to big a change for no benefit, and Java 6 and 7 with them. Of course Java 8 will be an even bigger change. The session then moved onto a short description of the lambda expression syntax, trying to ease people towards it using examples from Scala and Groovy.

Of course the lambda expression syntax is really just a bit of syntactic sugar in many ways, but the introduction of defender methods and the massive changes in the way data structure libraries are used is the real message of Java 8. Stopping using "external iteration" and starting to use "internal iteration" is the big shift: a move to a more functional viewpoint. Actually also a move to a more object-oriented viewpoint. Too many people are writing Java code in C idioms of iteration.

The shift brings massive pay off when wanting to harness parallelism. You can get it for free. At least data parallelism, the sort of parallelism associated with the use of sequences. The squirrels made an impromptu appearance here to deny the need for parallelism a bit more.

The session closed by showing GPars and Scala examples of what Java 8 will bring. Java 8 is in the future, Scala and GPars are here now. Indeed GPars can be used to do Java 8 style programming using Java 6 and Java 7. So the push was to get out there and use GPars to change you programming style now the new Java style.

Of course the squirrels had to make a reappearance. Hopefully people found the sessions enlightening and informative.

The Gr8Conf Europe 2012

Gr8Conf is a tricorn of a conference, it has sessions in Australia, Denmark, and USA each year. I haven't been able to get to any of the previous instances, but I did have the opportunity to get to the European part this year. I therefore submitted a proposal for a talk, about GPars, and it was accepted.

I wasn't sure on the level to pitch the presentation, for beginners, intermediates, or experts. In the end I decided to go for a "manifesto" type presentation - the long-term plan being to submit a session each year going into various different aspects of parallelism on the JVM using GPars. So somewhere between beginner and intermediate then.

The initial part of the talk was to provide an impactful and humorous argument as to why locks (semaphores, mutexes, monitors, etc., etc.) are a tool for managing time division multiplexing of multiple processes and/or threads on the processors available. It turns out that there is an interesting analogy from our front garden - if you can call such a small area a garden.

We have a number of feeding devices in our small front garden for feeding the robins, blue tits, great tits and blackbirds that live in our very urban, but right next to a cemetery, area. Cemetery, trees, squirrels. The squirrels come in and eat all the bird food they can. However, squirrels are hugely territorial and have definite "pecking order" hierarchies. The senior squirrel (in this case a female) always claims all of the bird feeding stations to the exclusion of all other squirrels. The behaviour emulates an application that demands all processor resources but only uses one at any one time. If another squirrel (process) tries to feed (use idle processors) then the senior squirrel simply chances the intruder away. One squirrel, all resources.

The point here is that any use of any explicit locking algorithm can, and does, destroy any and all parallelism. The answer is to use an architecture where the model itself manages all the processor, process, and thread resources, and, most importantly, manages the synchronization. Most application programmers no longer explicitly manage stack; most application programmers no longer explicitly manage heap; most programmers no longer explicitly manage memory; so why are programmers told how they must manage processors and threads? Wrong model, wrong abstraction.

Underlying all this is the point that processor speeds are no longer increasing, only the number of processors is increasing. Thus there is no way of increasing application performance without moving into parallel processing.

These points lead directly the re-emergence of a number of models of concurrency and parallelism that were side-lined in the rush to encompass shared-memory multi-threading as happened in the 1980s and 1990s. Actors, dataflow, Communicating Sequential Processes (CSP) and data parallelism, are now architectural and design models that application programmers need to understand and work with.

On the JVM, GPars provides a framework allowing Groovy and Java programmers a way of working with these architectural models. In this presentation I showed actors and futures using dataflow variables. I didn't get to a full dataflow version or the CSP versions due to lack of time in this 50min presentation. The application used for the code presentation was calculating "Π by Quadrature" a classic embarrassingly parallel, but small, application. Small is needed so as to exemplify the points being made rather than getting lost in large amounts of code. Anyone who has been to any of my talks in the last 5 years will know I love this problem. I also love the "Sleeping Barber" problem but we didn't get to that in this session even though I have some material on it prepared.

The "Π by Quadrature" problem allowed me to discuss using the different architectural models and to talk about using the right tool for the right problem. The right tool in this case is data parallelism and this allowed me to show a few features of GPars. It also allowed me a short rant on languages that provide one, and only one model of parallelism are not giving application programmers a suitable toolkit. Mentioning no names, and I won't, but the audience knew.

I ended the session slightly rushed so as to stay within my allotted time, with a propaganda statement that application programmers should never explicitly use any form of locking unless they absolutely have to and there is no other way. GPars has the tools to allow programmers to avoid explicit locking, to abstract away from explicitly managing processors and threads, and that therefore there was no excuse.

Audience reaction to the presentation seemed very positive, but I haven't seen the feedback. Hopefully people learned stuff as well as had a bit of entertainment.

Thanks to Søren and his team for organizing a great conference.

The slides for my presentation are here as a PDF file.

The Git repository of all the "Π by Quadrature" examples (only a few were presented) is at Or if you just want to browse the code click here.

The Git repository of the "Sleeping Barber" examples (none of which were shown) is at Or if you just want to browse the code click here.

ACCU 2012, The Aftermath

ACCU 2012 was another great conference in the series. Lots of good sessions, occasional not so good one, lots of time for socializing (we'll ignore the euphemism networking, and call it what it is) and a lot learned.

There was more of an explicit emphasis on C++ this year, but this was due to the submissions offered to the conference committee rather than any direction on their part. Almost certainly the history of ACCU being a C and C++ focused organization, and the publishing of the C++11 standard, had much to do with this.

A great deal was made of the "death of C", but everyone was explicit that this is C being a dead language in the way that COBOL is a dead language: you don't use it but there is an awful lot of it about.

My contributions this year was, as ever, to do with concurrency and parallelism. I did a session "Go, D, C++ and the Multicore Revolution" which was asking whether the changes to C++ due to the C++11 standard was just too little too late. C++ now has a memory model, asynchronous function call and futures but this is still an abstraction level below that that applications programmers deserve. Go is trying to replace C and incorporates Communicating Sequential Processes (CSP) as its model of concurrency and parallelism. Go is considerably simpler than C++ and yet achieves most of the tools for abstraction and programming that most programmers need most of the time. D is trying to replace C++ and has far better facilities for generic programming and uses actors as its model of concurrency and parallelism. It could be said that D is already that which C++ is evolving to become.

I introduced the C++ actor system that Anthony Williams' Just::Thread Pro will have - I have a preview version - to show that C++ could catch up with Go and D if there was a recognition in the C++ community and standards committee that C++ needs to make use of the goodwill generated by the C++11 standard. C++ has the potential to be an interesting programming language. In the mean time Go and D are already very interesting languages, they make native code working feasible. Unlike C, but then that is now a dead language.

The slides for the session are here but they probably don't mean that much out of context. The codes shown are in the Bazaar branch to be found here. We didn't do any of the Sleeping Barber material, interactions during the session meant we only looked at the Π by Quadrature material.

I did a second session in collaboration with Schalk Cronje. The core technical content was to show actors, dataflow, and CSP in action. The subplot was to some some comedy. We had sketched out the plan a few weeks before, but had to leave final planning to the very last moment. So we had a structure and a rough plan, but hadn't done a full script; we had to do a lot of ad libbing. I am not sure it worked completely, but the audience got involved and didn't leave. The problem we tackled was generating signatures for files in a directory hierarchy. This is a real problem from Schalk's work, not a toy problem. If people were enthused that Groovy already has, via GPars, everything that all the other languages desire in the way of actors, dataflow and CSP support, and that the future of applications programming is to use these models, then the session was a win.

The slides for this session are here. The code used is in a Git repository: the bare repository for cloning is, if you just want to browse without cloning then you want to go here.

Uncle Bob, ACCU 2012, Sexism and Despair

In his keynote at ACCU 2012 this morning, Uncle Bob made a couple of arguably ill-judged asides. They weren't grossly sexist, but they clearly came from a certain view of sex/gender stereotypes. A woman in the audience, quite reasonably, pulled him up on them at the time, and again after the keynote. Which was good. Uncle Bob, not actually being a sexist, nigh on immediately wrote and published a statement. For me this showed what an excellent person Uncle Bob really is. Serious respect - as the saying goes.

Being from the same era, albeit from the UK rather than USA, and a regular public speaker, I fully appreciate his difficulty. All through growing up we had stereotype sex/gender role models rammed down our throats. In the heat (and stress) of presenting, it is way too easy to let those early year attitudes creep through despite 40+ years of trying to ameliorate them and replace them with sensible attitudes of real equality. Let's forget political correctness here, that is almost as bad as the 1950s and 1960s sexism, let's talk about real equality.

Sadly UK and USA society remains fundamentally sexist: parents are the problem here. Boys are dressed in blue, given monster truck and guns as toys, and expected to be brilliant sportsmen or massive intellectuals. Girls are dressed in pink, and expected to learn to be good mothers, even being given dolls from Day 0. Dress codes and attitudes are fundamentally sexist: girls wear skirts, shirts or trousers, and from puberty onwards, are often expected to wear as little as possible in public showing as much skin as possible. Boys were shorts and then trousers and are expected to always be covered. Think of the rules of evening dress: women are expected to be in fabulous gowns showing as much skin, especially around the breasts as possible, men wear dinner suits. Only Scotsmen have permission to wear skirts and only then if they are 8-yard knife-pleat kilts with the full Victorian extras - but not a dirk, that would be illegal.

OK so there is a massive simplification here but...the core point remains valid. Parents enforce sex/gender stereotypes from Day 0 of a child's life and that is at the core of our society. Is it any wonder those children of more enlightened parents who want to break out of the standard models have a problem? In the case of ACCU 2012 we are talking "Girl Geeks". Sadly there remain far, far too few of them.

Uncle Bob's slip was not that serious but has become a bit of a storm in a teacup. However the underlying problem is very real and is a serious problem: our society has no real equality no matter what the law says. Until we find a way of men and women having equal opportunity generally even though women have to bear the children, sexism will remain systemic. Biology may assign sex/gender roles, but humans are surely intelligent and enlightened enough to be able to create equality despite this. Currently it seems not.

Being an individual male from the same era as Uncle Bob, I feel almost completely unable to do anything that will actually change things for the better. This is really depressing.

On Samsung Galaxy Nexus, Vodafone, Bluetooth, Internet, and Failure

Vodafone did me a part-way reasonable deal on a new contract involving me taking possession of a Galaxy Nexus to replace the N900 I have had for two years. Of course when I got home and found it was a 16GB machine instead of a 32GB machine I was not entirely happy; the Galaxy Nexus has no memory expansion capability. Still it is Android, Maemo being well dead, ditto MeeGo, and version 4 at that. (No I am not going to use inane terms like Ice Cream Sandwich, or even ICS.)

I have been reasonably pleased with the phone over all, and the Android Market, sorry Google Play, downloading has worked - even to the extent of updating all the out of date operating systems and applications. I am even looking forward to paying for some apps, not to get rid of adverts but to get some of the extra functionality. I have actually been quite surprised at how immune I have been to the advertising on free apps. If advertising can fund some apps, whilst having no effect on me, then long live free apps.

But there is a downside. Actually there are two:

  • Vodafone 3G coverage is still very poor and almost, but not quite, totally unrelated to the coverage map that they publish. For a world rapidly going 4G, the UK is woefully under-resource with 3G and 3.5G. How can the UK compete in the information era with such appalling mobile network systems? Thankfully the 3 UK coverage is not bad. Pricing for data is still a complete rip-off: the whole 3Gb for 1 month business model should surely come under scrutiny. Either it should be unlimited for a month or 3Gb for an unlimited period. I dread to think how little I'll be able to do on 500Mb per month on the Vodafone contract if I can ever get 3G on Vodafone.
  • Bluetooth tethering does not work. USB tethering works fine. Wifi tethering works fine. Bluetooth tethering says it has succeeded to the PC, but reports failing on the phone.

So I went to my local Vodafone store where I got the new contract a few weeks back. The very nice chap there listened to my question and with good grace said he didn't know the answer. This I though was good customer service because of the way he dealt with it. He suggested I should contact Technical Support via telephone and set me up using their in shop free phone. Sadly this was the beginning of the problems.

Vodafone answers, and requires you to enter your phone number or account number and PIN number before you can get anywhere. OK, annoying but... You then have to go through four, yes four, layers of listening to a sequence of options before you get to talk to a human being. Well I say human being, but I am not entirely sure it wasn't a trained monkey.

First question: "Please can I have your phone number." For ##### sake Vodafone get your systems working. I already typed in the number to get through, you should present this useful information to the call centre monkeys so that they can give at least a simulacrum of good customer service. So having ranted at the monkey about this, I gave the seemingly duplicate information that he clearly was not being given (not actually his fault though). I then explained the situation and his response was "It's a Samsung problem." I tried to explain that I didn't think it was, but he insisted it was. Basically he was reading the one-line answer printed on the sheet in front of him: "This is not a Vodafone problem, please contact phone vendor." I gave up, asked him to text me the number, which to be fair he did within about 30s. Good monkey. Bad Vodafone.

So, Samsung, or anyone, why is this your fault and not Vodafone's. I switch on Bluetooth on phone and laptop. I switch on Bluetooth tethering on the phone. I select the "connect via Bluetooth" networking option on the laptop. The phone reports tethering is activated, flashes up a message too fast to read and then reports "not tethered" - I have absolutely no idea how to find out what the flashed message was, but perhaps it is crucially important? So the phone believes Bluetooth tethering is active but not happening. Meanwhile on the laptop it is entirely happy that a suitable connection is in place. Even DNS lookup appears to be working. But no packets escape the NAT network. This would indicate that Vodafone is black holing the connection, or am I missing something?

|> ifconfig bnep0 Link encap:Ethernet HWaddr 70:f3:95:4e:b3:da inet addr: Bcast: Mask: inet6 addr: fe80::72f3:95ff:fe4e:b3da/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:24 errors:0 dropped:0 overruns:0 frame:0 TX packets:38 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2859 (2.7 KiB) TX bytes:2702 (2.6 KiB)

eth0 Link encap:Ethernet HWaddr f0:de:f1:2f:cb:b3 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:20 Memory:f2500000-f2520000

lo Link encap:Local Loopback inet addr: Mask: inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:126757 errors:0 dropped:0 overruns:0 frame:0 TX packets:126757 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:11639041 (11.0 MiB) TX bytes:11639041 (11.0 MiB)

|> route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default UG 0 0 0 bnep0 link-local * U 1000 0 0 bnep0 * U 0 0 0 bnep0

|> dig

; <<>> DiG 9.8.1-P1 <<>> ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58035 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0



;; Query time: 29 msec ;; SERVER: ;; WHEN: Wed Mar 28 18:06:45 2012 ;; MSG SIZE rcvd: 53

|> traceroute traceroute to (, 30 hops max, 60 byte packets 1 ( 6.028 ms 8.318 ms 11.069 ms 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20 * 21 * 22 * 23 * 24 * 25 * 26 * 27 * 28 * 29 * 30 * * *

So Samsung, Vodafone claim this is your problem, that the Galaxy Nexus phone is borked with respect to this functionality. What the #### is wrong. Of course my suspicion is that Vodafone is detecting Bluetooth tethering instead of USB or WiFi tethering and blocking all packets, they are just not going to admit that this is the case.

Actually what I want Samsung to do is to tell me how Vodafone are doing this so that I can undo it. I want Bluetooth tethering. I used to have Bluetooth tethering on the N900. It is a good thing. I want it to work again.

_ Footnote: I am under no illusions, no-one other than me is ever going to read this mini-essay/rant, but it has been cathartic writing it, so I will publish it anyway. _

Groovy - From Zero to Hero

On 2012-04-02 and 2012-04-03 the JAX Days are being held in London. On the first of these days, 2012-04-02, I will be presenting a one- day "learn in" on the Groovy programming language.

Groovy is a dynamic language designed to be symbiotic with Java: Groovy and Java work together on the JVM, they don't fight each other. When developing systems on the JVM, Groovy makes a very dynamic partner to Java: you write the bits of your system that are best handled by a static language in Java, and those bits best handled by a dynamic language in Groovy.

This one-day session at JAX Days is designed to be for people who have some knowledge of Java to be able to start learning and become proficient at using Groovy, and indeed mixing Groovy and Java in the same system. The intention is for this to be a fun as well as informative day: I am strong believer that programming should be fun.

Copyright © 2017 Russel Winder -