Russel Winder's Website

First London D Users Meeting

A number of months ago, on one of the D programming language mailing lists there was a thread about D users getting together. I suggested that D users in London should get together. Iain Buclaw said that would be an excellent idea. I checked out Meetup as a tool, but then something came up and I never got back to doing anything about getting a London meeting group organized.

A few weeks ago, Kingsley Hendrickse, create the London D Users Meetup group on Meetup, and suggested a "Play with D" meeting for 2015-02-03 and arranged with Skills Matter to allow us use of one of their rooms.

13 people turned up, which was excellent for the first meeting. Kingsley had arranged an agenda, which looked like it might work well, and it did. Everyone gave a brief thumbnail sketch of who they were, their experience of using D, and why they had come to the meeting. Some attenders were "old hands" at D, some were brand new to it and looking to "check it out".

There were a number of people from various areas within the London finance industry: investment banks, hedge funds, etc. Some of the people are using F# and Haskell in preference to Java and C++, but are interested in D as it seems to combine the F#/Haskell approach with the Java/C++ performance. Also, there are C++ (and Fortran) libraries to be used and D handles this better than any of F#, Haskell, Java.

Kingsley then showed his alpha version of a plugin for developing D code using IntelliJ IDEA. It was most impressive. This led to a discussion of tooling for D development with the standard candidated of Vidual-D, DDT, VIM, Emacs all getting mentions. One that wasn't mentioned that should have been was CLion. Of course a plugin that works for IntelliJ IDEA (Mainly JVM focused) should work with CLion (mostly C++ focused).

We then had a shorter than most people desired period of pair working using D. People new to D paired with people who knew D to get a feel for the language by tackling a small dojo type problem – given some data create a "Secret Santa" solution. Judging by the "vibe" at the end of the session everyone thoroughly enjoyed themselves.

Most people then headed for an hostelry, I'm afraid I had to wend my way home.

I am hoping we can turn this into a monthly or bimonthly meeting. There is clearly energy associated with native code languages that are better for programmers than C and C++. The candidates of the moment are Go, Rust, and D. Go, with the backing of Google (*), clearly has traction. Rust will undoutedly create some user energy because it is (relatively) brand new. D has no big corporate backer, and is a 10 year old language. Yet it still has a lot going for it.

(*) And the fact that it has processes and dataflow integrated into the language.

London GoGathering 2015

Tuesday 2015-02-03 there was a London GoGathering at Google's Campus London. Shoreditch is definitely reinforcing it's position as the world's 'silicon ditch': The Ditch should become a well known location for computer-based systems activity. The room was more or less filled, most of the attenders were 'gophers', but some were "checking out" Go to see if it would suit their needs better than their current languages.

Andrew Gerrand kicked thing off, as well he should as the leader of the Go project! He reprised the session he did a few days earlier at Fosdem, which seemed fair enough as the current state of Go had changed very little in those few hours. The really big news, at least for me, was that Go 1.5 would be released later than originally planned (booo), but with the whole toolchain totally rewritten in Go, including the runtime (hoorayyyy). He introduced the agenda:

10:00 Welcome/Tea  
10:10 Andrew Gerrand The State of Go
10:50 Matt Heath Channeling Failure
11:30 Francesc Campoy JSON, interfaces, and go generate
12:10 Lunch  
13:00 David Crawshaw Go on Android
13:30 Brad Fitzpatrick HTTP2
14:20 Afternoon Tea  
14:40 John Graham-Cumming How Go spread at CloudFlare
15:20 Peter Bourgon Go and the Modern Enterprise
16:00 Pub  

Matt talked, [slides here](, about how to stop thinking of errors as things that don't usually happen, and how to integrate processing all outcomes into your code. The backdop here is that Go does not support exceptions as Java, Python, etc. do, but insists on the use of error codes. Many claim this is a 1970s style of working, but once you properly "get into" Go's way of using error codes, it stops being that much of a problem and starts leading to systems that do not go wrong quite so much as Java and Python ones do.

Francesc talked, [slides here](, about many thing, but the highlight for me was a thorough analysis of how to do enums in a whole collection of different contexts. The main thrust though was to get people interested in 'go generate' which is a way of running tools to generate code. In a sense it is embedding into the Go compiler some aspects of what might have been done with Makefile, SConstructs, etc.

David introduced Go on Android, just as it says in the title. This was really about toolchains to get Go executables onto Android devices and the work being done on a UI widget library. This session has made a lot of people not only happy, but also very excited.

Brad gave a frenetic demo-based introduction to HTML/2 and how to harness it with Go code. The performance of HTML/2 is extremely impressive compared to HTML/1.1.

John presented on how he evolved CloudFlare from a PHP company to being a Go company by guerilla tactics. He also get massive kudos for showing some real CSP. Go's real USP for developing systems are the goroutines and the channels, leading to a very dataflow oriented approach unconcerned with hardware threads. The model isn't CSP exactly but it is directly analogous.

Peter rounded the day off by trying to create a discussion of how other organizations can move to being focused on using Go rather than any other language.

A splendid day, especially as I met a few people I already knew, and chatted with a number of people I had never met before.

Many then went of to the pub, some went home, I went on to the first London D User group meeting…

Meeting people after 20+ years

Background and Introduction

Some time ago I got Markdown posts working in Pyblosxom and promised myself I would blog more. Clearly I did not; so much for New Year Resolutions. However, a number of things have happened over the last two or three months that mean maybe I can get back in the habit of doing regular posts.

I presented sessions at:

  • JAXLondon 2014: a half-day workshop on dataflow computing on the JVM; and a 45 minute presentation (with live coding!) on Spock, the Groovy-based test framework.

  • UBS Tech Conf: an internal conference for UBS staff with a mix of sessions from internal and external people. I was an external presenter doing a 45 minute session on message-passing-based computing (dataflow CSP (communicating sequential processes), actors, data parallelism).

At the second of these someone introduced themselves and said "you don't know me but I read your blog". My response was "but I haven't written anything for 10+ months". He smiled. The moral of this incident is that I must blog more about Python, Groovy, parallelism, GPars, D, Go, C++, patents, etc.

This has prompted me to write about two other incidents.

JAXLondon 2014

At JAXLondon 2014, one of the keynote speakers was Chris Richardson. He spoke about creating Cloud Foundry, selling it to SpringSource (now part of Pivotal), and the whole micro-services architecture that made it all work. Last time I met Chris was in the early 1990s when he was a Common Lisp programmer working for Harlequin on parallel garbage collection, part of a joint project on parallelism and parallel programming languages with UCL and others.

We managed to speak for a short while early on in the conference, before his session, and then we "hung out" for a while at the end of the conference, even managing to go for a beer. As well as chatting about social things, lives for the past 20 years, his move from UK to USA, etc., we also managed to chat over some technical stuff and various interesting tensions between dynamically-typed programming languages and statically-typed programming languages, and the rise of proper "in language" parallelism. Nothing specific to write about here, but lots of things that slightly change the way you think about these things.

Hopefully it isn't another 20 years before we meet again.

UBS Tech Conf

UBS have shown real interest in the technical development of their staff by putting on an internal technical conference. They got Skills Matter to do the organizing. The remit was two-fold: help foster internal communication about successful technical innovations with parts of the organization; and bring in some new ideas from renowned "thought leaders". Skills Matter asked Russ Miles (who had in the past worked at UBS) to front the two-day event, and I was asked to present on emerging idioms, techniques, patterns, and architectures in programming languages. This is of course a pet topic of mine so it was easy to say yes.

The first day of the conferences was splendid, as was the second. The format worked very well in supporting the remit, especially getting fluid communication within UBS. It turns out my session was the last formal session, so I though I needed to introduce a few extra bits and slides to my session so as to complete some of the running gags that happened unplanned and unrehearsed.

The real point of this part of the post though is that someone came up to me in the break just before my session and said "hello, do you remember me?". I think I must have looked quizzical, as he said "I'm Tony Chau I am CTO here, I was a researcher at UCL with Paul Otto". Crickey I thought, that was 26+ years ago! We chatted for a while, mostly social stuff, but also a little bit of technical stuff about his role at UBS and what they were doing with parallelism. I had to rush off to prepare AV. Tony took time out to be at my session. Moreover he came along with a few of us to the local hostelry for a quick post-conference drink. It was fascinating finding out the sort of thing UBS was doing with parallelism, and especially GPGPU. I already believed getting better support for GPGPU into Java, Groovy, D, Go and Python was needed, speaking with Paul gave me data that it is actually essential. CUDA and OpenCL as they are now really do not "cut it" for the things computers are being used for – think data science.

Hopefully it isn't another 26 years before we meet again.

Summing up

Meeting Chris and Tony after 20+ and 26+ years respectively has been a wonderfully refreshing experience. In both cases, although we reminisced a little, it wasn't in a "looking backwards" way, it was always about what we had learned along the way and "looking forward" what is to come. Also we were able to mix social chit chat and technical discussion in a way that I found warming.

Hopefully it isn't another 11 months before I blog again.

The Last Day of 2013

Testing, testing


As 2013 comes to a close (yes I know it already has in some timezones as I write this, but let's stick with the local timezone GMT, aka +00:00), it is clear that I have not been blogging much this year. I think this is because I am using Twitter and Google+ much more. Also, I hate writing HTML code, which is the entry format used by Pyblosxom, which is what I use to power this blog. I have recently discovered that Pyblosxom has not only changed it's name (it used to be PyBlosxom), it can also support Markdown and ReStructured Text.

The experiment

So this blog is entirely about trying out the Mardown capability. It is almost certainly totally content free, but then this is what is needed for a experiment like this.

Well that seems to have worked

I seem to have a working toolchain and workflow. Thus I am now obligated to:

  1. Do some more blogging.
  2. Write about stuff people want to read about.
  3. Get "Python for Rookies", 2nd edition done.
  4. Play my guitars more.

I am sure this amounts to a "New Year's Resolution" or four, let's hope I do not fail – at least not on all of them.

The NSA, USA government, extraterritoriality, and The Cloud

The NSA spying on every packet on the Internet "scandal" continues. The question is, of course, for how much longer will this be an issue. Countries around the world are increasingly seeking to avoid having Internet packet traffic routed via the USA. The logical consequence is that the USA will rapidly lose economic benefit from the Internet worldwide.

What does this mean for "The Cloud", well at this rate it's current USA- centric future is in grave doubt. As soon as a USA company is involved in a service, or there are servers associated with the service on USA territory, the USA claims jurisdiction and believes it can order the NSA to spy on all traffic associated with that service. So can Amazon Web Services (AWS), the current market leader in Infrastructure as a Service (IaaS), survive? Possibly not. Ditto all services hosted using AWS. Amazon as a company, and a parent of other companies, is a USA company and so the USA claims jurisdiction over all the Amazon group no matter where they are incorporated. So purchasers of "Cloud Services" need to know how a service is hosted in order to know whether the USA will spy on their traffic. This undermines the whole market.

Will the Brazilians, Chinese, Indians, Russians foster their own infrastructures independent of the USA. Of course they will. Sadly though they also believe in spying on Internet traffic. Either that or simply censoring it.

"GroovyFX: or how to program JavaFX easily" BCS APSG 2013-03-14

The BCS Advanced Programming Specialist Group (APSG) asked me to do a presentation about GroovyFX to the group 2013-03-14, which I was most happy to do. Despite all the planning, the session did not go at all as planned.

I started with a little historical background to indicate why GroovyFX exists. Originally JavaFX had a declarative UI specification language JavaFX Script. However JavaFX didn't take off as perhaps it should have done. When JavaFX 2 was being planned it was decided to drop JavaFX Script and make JavaFX purely a Java API. GroovyFX is therefore the scripting language for JavaFX.

The audience were not familiar with either Groovy or JavaFX so I tried to stick to a few simple examples to just get people interesting in learning more about the whole area. Given that I use Gradle as my build tool, and it uses Groovy as its build specification language, I digressed into a bit of build to demonstrate Groovy, and also introduced an element of polemic against Maven (and Ant).

I got back onto the contents list by doing some demonstrations of code actually running. This led to discussion of SceneBuilder and then finished off with a pointer to Griffon, which is a development environment for Swing and JavaFX based desktop applications.

Slides (*) for the session are available on Slideshare here or on my website here.

The session was videoed but appears to have been posted in two parts. Part one is here, part two is here.

_ (*) There is an import error in the code on one of the slides: groovyfx.javafx should read groovyx.javafx. _

"Switch to Python 3… now… immediately." TLPG at SkillsMatter 2013-02-12

_ For some reason known only to no-one, I have only just noticed that a post I had intended to make 2013-02-18 never actually made it to the website. I have therefore ditched that post and written this one instead. _

Many moons ago The London Python Group (TLPG) was formed. This has generally been considered a good thing.

The organizational strategy has been to have monthly meetings alternately being a pub meet-up and a technical presentation session. For 2013-02-12 it was technical session time, and I volunteered to present a session encouraging people to drop use of Python 2 and to take on board Python 3. For various reasons we held the session at Skills Matter. The original notice is here. As ever Skills Matter videoed the session and the page with the video is here.

The slides associated with the talk can be found on Slideshare here, or on my website here.

My presentation was really a polemic against organizations failing to even plan to switch from Python 2 to Python 3. Some folks in the audience said they had no plan to switch because critical packages and modules were not available in Python 3, which ironically, made my point exactly. People writing applications need to ignore Python 2 only package and modules, and work only with ones that are Python 3 or both Python 3 and Python 2, even if this means switching away from de facto standards. I am now ceasing to use, and indeed replacing, any Python sub-system that isn't already Python 3 compatible or at least has a short timescale milestone to be Python 3 compatible.

The Python software Foundation should set a date for the term Python to mean Python 3 not Python 2. In the meantime, organizations should just get on with it, pull their fingers out, and upgrade.

As it happens TLPG got a sponsor for the evening, so it turned into something of a social event as well as a technical session. BMC were looking for a senior technical person to run some of their product developments. They chose to spend some money on post-session beer and food for the audience, in exchange for being allowed a 5 minute pitch at the start. The pitch was handled in excellent spirit, so added to the overall experience, rather than being a tedious thing. The beer and food went down well with the audience, and some great social happened.

_ I am told that BMC have yet to find the right person for the role they have available, if you think you might be a contender see here. _

Greach 2013

Alberto Vilches asked me when we met at Gr8Conf EU 2012, whether I would submit a session proposal for the Greach 2013 conference. As it made a great excuse to visit Spain for the first time ever, and do a session on GPars to a different audience, I said yes. Good choice.

Well the conference is just over, and great fun it was, as well as being informative. It being a Spanish conference, most of the business was in Spanish, but it also ensured an international accessibility by having a lot of business in English. Given the French, English and Mexican/Colombian contingents at the conference, along with the majority Spanish audience, the mix of Spanish and English sessions worked well.

Given that the core Groovy and Grails activist community is fairly small, many of the speakers were familiar faces. Many speakers though, and this is really good news for Groovy and Grails, were new faces presenting really good material based on solid experience.

My session, a GPars Workshop was intended as a hands-on practical session. Things started as planned and seemed to be going well. However, a website failure and my using an exercise topic that was too ambitious for the context, meant I ended up having to do much more of a presentation session. Indeed I ended up having to skip some of the material. I believe I got the core message across in a form that people learnt from, but I didn't feel this was the session I had advertised. Still there were tweets that people liked the session, so in its dynamically amended form it does seem to have been liked. I will be further amending and re-presenting this session at future conferences to make it work well as a conference activity. Eventually I think I may well generate a 2-day training course as an intermediate/advanced Groovy programming course – I am told 2-day rather than 1-day works better logistically for training courses. It also works better for course content and usefulness.

A PDF file of the "slides" intended (not all were used) for showing at the workshop can be accessed by clicking here.

LJC UnConference 2012

The London Java Community (LJC) UnConference 2012 happened Saturday 2012-11-24 and I failed to write up my contribution.

I had a more or less prepared 45 minute session presenting Groovy as a programming language to prefer over Java 8, which I proposed, was accepted and given. The slides for this session are here. Hopefully those people who turned up went away thinking Groovy is cool, who needs Java 8.

I proposed a more or less prepared lightning talk Trying to convince people that GroovyFX was the one true language for programming the JavaFX API (instead of fighting with Java), and it got accepted and presented. The slides for this talk are here.

I was convinced to propose a completely unprepared session on Gradle as a build tool to replace Ant and Maven. This was accepted and given. I hastily prepared a content free set of slides and did the presentation entirely as a live programming activity with some presentation of already undertaken projects. The slides for this talk are here.

I enjoyed presenting the sessions I did, and I very much enjoyed all the other session, and the breaks, and the social afterwards. A great event.

Copyright © 2015 Russel Winder - Creative Commons License BY-NC-SA