!(http://skillsmatter.com/custom/images/groovy-grails-exchange_im- speaking-100x84.gif) Groovy & Grails eXchange 2009 was a 2-day conference on Groovy and Grails. I was asked to do a talk on Gant. As well as doing a bit on Gant, I did some on GPars. The slides and a video can be found here on the Skills Matter pages.
The slides are also available from the Concertant LLP website.
The organizers of ACCU 2010 asked me to be a keynote presenter and I accepted. I guess I'll have to do a presentation on parallel and distributed systems given their run up!
I have a Sony Viao PCG SRX51P/B. It is old, about 8 years - which in computing terms is ancient. It is small and light; a netbook before netbooks, yet it is perfectly good working as a notebook/laptop. OK, it only has 384MB of memory which is a serious problem these days where 1GB seems to be the minimum requirement. However despite this it still works quite usefully.
Most importantly for this post, it has what is reported as a "Yamaha YMF753" sound system which not only provides sound and balance controls, it also has tone controls and a 3D processor. The speakers are a bit small, but through earpieces/headphones, the sound is really quite good.
I recently purchased a Lenovo ThinkPad T500 as a portable workstation (1680×1050 version). It's less than 6 months old, and so at least reasonably new. It has a serious dual-core processor running at a very healthy speed. As a tool for programming, presenting training courses, processing email, VOIP, etc., it is superb. The sound system though is pathetic. Actually it's appalling. It reports itself as a "Conexant CX20561 (Hermosa)", it provides volume and balance and absolutely nothing else. The sound is tinny and, well, totally rubbish.
The T500 is supposed to be a top-end laptop, so why put a really crap sound system in it? Will things change or will the quality of sound system just get worse and worse even in top-end laptops?
I took the plunge earlier this week and started the upgrade of my Ubuntu machines from Jaunty to Karmic. I have five machines running Ubuntu to process: two laptops, a modern twin quad-core workstation, and old Pentium 4 workstation, and my (really very old) server (Pentium 3, but new SATA controller and discs). I haven't started the quad-core workstation yet, I am trying to decide whether to upgrade or install from scratch.
The two laptops were the first to change, the upgrades seemed to go reasonably on both. The Lenovo ThinkPad T500 seems to have upgraded fine. The problem of the machine failing to start Compiz on login remains. This is really infuriating and the Ubuntu people seem to not care. The Sony PCG SRC51P/B upgrade has been disastrous, Bluetooth and WiFi now fail to work ever. Overall not good. Also the sound control/mixer that was standard on Jaunty and entirely fine has been replaced in Karmic by something completely inadequate. gnome-alsamixer is also severely inadequate. So if you want to control your sound system then it looks like "use another distribution, not Ubuntu" is the best choice.
The disc structure on the Pentium 4 workstation was not up to an upgrade - didn't have 3.8GB of free disc on the root partition. So I had to do a fresh install so I could repartition the disc. The install went fine. Compiz still fails to start on login and the sound control/mixer is totally inadequate, but I already mentioned those issues early. Did I mention how infuriating this problem is and how even more infuriating it is that the Ubuntu support does nothing about it. On the up side Emacs 23 is way, way better than Emacs 22.
Upgrading the server seemed to go fine. There is no longer a distinction between workstation Linux kernel and server Linux kernel but then who cares as long as it works. The real problem was that /etc/resolv.conf failed to get set up which caused many a bizarre problem. Once found though, it was easily cured and the server seems to be operating fine.
Now the real gripe: Launchpad appears to refuse to accept any bug reports against Ubuntu. I can post new bug reports using Launchpad for all the other projects and packages I want to but not for Ubuntu. Hopefully this is not a hidden censoring of anti-Karmic facts.
Yesterday saw the completion of my role as "First Opponent" in the PhD examination of Anya Helene Bagge. Don Sannella was the "Second Opponent". Whilst there was an element of examination, it was really more a public spectacle - this is the first time I have been an external examiner for a non- UK PhD, so the system was entirely new to me. There will no doubt be pictures on the Web somewhere soon - there were certainly lots people taking lots of photos.
It is an open question is whether the idea of strongly typed parameters to C++ templates (aka concepts) are a good or bad thing pragmatically in trying to keep C++ as a main programming language for highly parallel, HPC, numeric applications, or whether it is time to ditch Fortran and C++ in favour of languages more suited to a truly parallel view of algorithm. There is a workshop here in Bergen tomorrow to pick away at this problem.
Anyway, congratulation to Anya for passing, and hopefully she has fun continuing work on Magnolia.
I have been interested in parallel processing for over 20 years. Starting in the mid-1980s at UCL heading the research programme that developed the Solve programming language -- this was an object-oriented, parallel programming language with transactional state. It was a few years ahead of its time, but the funding ran out. Sadly there is no online material as yet for this.
I then ran the UC++ project to bring active objects to C++. This evolved into KC++ - there may be lots of broken links on these very old, archived webpages. All this contributed to various efforts at London Parallel Application Centre (LPAC) which looked at developing a European-wide standard for a parallel C++ language via the Europa project.
Since then of course OpenMP and MPI have become the de facto, possible de jure, standards for parallel programming using Fortran, C and C++. The Java Platform went a different route.
The Java Platform has had threads since its very inception. However shared memory multi-threading is a tar pit of confusion and problems. Synchronization of shared memory is the problem, and people are not very good at it. Of course we have had models of parallel processing such as Actor Model and CSP for decades. What we are now seeing is a resurgence of these models as it becomes clear that shared-memory multithreading is not a viable programming model for applications programming. Erlang has had what is effectively the Actor Model for years. Scala has also taken this up. Clojure is going this route. What about Java? Nothing :-( Doug Lea's java.util.concurrent is a huge benefit. Futures are the future if you have to use threads.
The JVM seems to be the really active platform for applications programming, and Groovy is a great language that works symbiotically with Java. It has potential for being a great coordination language for parallel computations. Groovy can provide domain specific languages for describing parallel computations, raising the level of abstraction at which the programmer works.
I had said many months ago that I would coordinate an effort to move this forward. Meanwhile Václav Pech acted. He started the GParallelizer project. Recently we have all clubbed together to take this as a basis for a strategic push. GParallelizer has become GPars and is now a fully recognized Codehaus project.
Anyone interested in parallelism using the JVM should be interested in GPars. Go check it out. Join in.
The main thing about this release of Gant is the new pre- and post-target hooks, see http://gant.codehaus.org/Per-Target+Hooks. There are also a some bug fixes. And of course it uses Groovy 1.6.5.
Pre-packaged versions are documented at http://gant.codehaus.org/Prepackaged+Distributions.
!(http://skillsmatter.com/custom/images/groovy-grails-exchange_im- speaking-100x84.gif) I will be doing a talk on Gant at Groovy & Grails eXchange 2009, which is being held 2009-12-09 and 2009-12-10 in London. Not so much a "using Gant" talk, though there will be some of that, more a look at some of the Groovy techniques used for making this Ant task scripting DSL (domain specific language), and why Gant got used in Grails.