ICGG2014 paper

August 22, 2014

The 16th International Conference on Geometry and Graphics has come and gone. I had a lot of fun, it was certainly very different from the usual software gigs I attend. This was a congregation of mathematicians and educators from all over the world (though mostly Central and Eastern Europe and the Far East) where most attendees were also presenting a paper or poster. The conferences I usually attend have at least a 1:20 ratio of speakers to audience. That hierarchy was entirely absent at ICGG, which was probably at least in part responsible for extreme levels of conviviality. At the conference dinner a lot of national groups sang songs from the homeland, and we even had the pleasure of hearing the Russian and Ukrainian delegates perform Moscow Nights together.

As promised and agreed with the conference organisers, I’m now making my paper available for download here. The paper is much more technical than the plenary lecture, dealing with the mathematical and algorithmic characteristics of generic solvers and fitness landscapes. During the talk I focused mostly on the graphical aspect of landscapes and how specific problem definitions result in specific landscape geometries/topologies. The Prezi for the lecture is of course also available, as are the files I used for the live demonstrations.

I’ve written a paper for the ICGG2014 conference to go with my talk. It mostly talks about the theoretical side of things, whereas the talk is going to focus on the pragmatic. In case they won’t accept it I’ll post it here soon, but if they do then it will be available online sometime after the conference.

Over the past few years I’ve grown increasingly tired of slick computer generated graphics. They all too often fail to draw attention to salient details and convey meaning. It’s rare these days that I get to make large illustrations, most of my graphic work is for icons, so I do try and savour it when I get the chance. I’ve put the 10 images I drew for this publication below the fold (with LaTeX overlays and captions).

Read the rest of this entry »

My first LaTeX document

February 6, 2014

Donald Knuth is one of the people who got a Grasshopper banner animation (january 10th), but until last week I’d never seriously looked into(La)TeX, probably his most famous contribution to humanity. I’ve been invited to give a lecture at ICGG2014 come August and the abstracts and papers are to be submitted in either tex or doc format. Since I don’t own and can’t stand Word® and pretty much every other word processing software I’ve ever seen*, it seemed like a good opportunity to dive into TeX. It’s a curious mixture of pure awesomeness and horrific muck. One the one hand it’s extremely liberating to be able to program a document rather than write one. It seems that no matter what you want to do, there’s always a way to get there. I’m also very pleased about being able to write in pure text and compiling the final document, as opposed to trying to tell a GUI what it is I want and never quite knowing what monstrously nested makeup and layout tags are silently ganging up on me in the background.

But the implementations of TeX seem to suffer badly from softwareforprogrammersitis. TexWorks (which comes installed with MikTex for Windows) was clearly made by someone who has heard about that thing called UX but wants no truck with it. Once I have some time to do some more research I’ll definitely be looking at a lot of alternative editors, but the dozen or so I’ve seen so far do not fill me with hope. With a bit of luck the LaTeX for Sublime Text will work better.

Anyone has any suggestions?


* TechWriter for RiscOs was ok, but I no longer own an Acorn machine and this was 20 years ago.

An ethical dilemma

January 7, 2014

I can’t quite remember where and when, but a long time ago I heard about or read about an ethical dilemma regarding responsibility and guilt. I think it was in the wake of a Dutch trial in ’94 where a man was charged[dutch newspaper article] with murder and assault by injecting his ex-girlfriend with HIV tainted blood. Although undoubtedly a heinous act, does it qualify as murder before the victim dies? And does it qualify as murder right away if the victim will not die for several years from AIDS complications? At any rate, the ethical dilemma is happily fictional and goes like this:

Three students share a dorm apartment in Albequerque. Alec, Basil and Callum. Alec is a bit of a health-nut and goes hiking —alone— in the desert every weekend. He packs his bag on Friday evening, making sure to include two bottles of water. Basil and Callum both hate Alec to the point of murder and they’ve both decided to try and kill him. However they are not aware of each others feelings and plans. At 11pm Basil sneaks into Alec’s room and pours a small amount of lethal poison into the second water bottle, lest Alec drink it while he’s still close to civilisation. Half an hour later Callum sneaks into Alec’s room, takes the second bottle and empties it before putting it back.

Alec’s mortal remains were found by hikers 3 months later about half a day’s hike from the nearest water source. Who killed him?

The reason this is a dilemma of course is that it’s not obvious who’s ultimately to blame for Alec’s death. It’s clear that both Basil and Callum tried to kill him, so they can at least be charged for attempted murder, but the ultimate responsibility is vague.

We can’t say that Basil killed Alec as the poison was never ingested. It never even came close to Alec as it was poured down the sink while he slept. If Basil had done nothing, the outcome would have been exactly the same.

However it’s also not clear that Callum killed Alec. If Callum hadn’t emptied the bottle then Alec would have died much sooner through poisoning rather than dehydration, a far more definitive death. In fact, one could make the point that Callum’s actions postponed death for several hours, not only —briefly— saving Alec’s life but also giving him a real chance of survival.

If Basil wasn’t involved at all, this would be a clear-cut case. However by doing something which ultimately had no physical effect Basil effectively removed a large portion of responsibility from Callum, and I’m not at all sure where it went. Is there such a thing as conservation of responsibility?

Witness for the Prosecution

December 23, 2013

At the end of the 1957 classic Witness for the Prosecution there’s a brief message to the audience:

The management of this theatre suggests that for the greater entertainment of your friends who have not yet seen the picture, you will not divulge to anyone the secret of the ending of ‘Witness for the Prosecution’.

It was truly a more innocent age…

For reasons which need not concern you dear reader, I’ve been thinking about numbers as of late. There’s a common trope out there which states that since π is infinite and never repeats, every finite string of numbers you care to come up with occurs somewhere in π, simply because it is infinite and never repeats itself. I should point out right at the start that this is believed to be true by the majority of mathematicians, but it hasn’t been proven. It is certainly possible to create an irrational number which lacks this property. A favourite example is:


which is written in base-10, yet only uses zeroes and ones. Every subsequent group of zeroes and ones is one digit longer than the previous group, hence it never repeats and it is infinitely long. But no matter how far you search, you’ll never be able to find the string ‘492’ in this number. Similarly, we could take π and replace all the nines with zeroes:

Actual π:   3.1415926535897932384626433832795028841971693993751058209...
Modified π: 3.1415026535807032384626433832705028841071603003751058200...

No matter how far you search this new irrational, the string ‘492’ will never occur, yet the number is still just as infinite now as it was before we started dicking around with it.

I don’t think this logic is a shocking revelation, this stuff has been dealt with and is reasonably well understood in a post-Cantor world. The reason I bring it up is because —to me— it sounds like this argument is often trotted out by the multi-verse or infinite-universe crowd as proof of our non-uniqueness. If the universe goes on forever, then there must be infinitely many exact duplicates of Earth (where I am right now writing this exact same blog post) out there because you can only arrange a bunch of particles in so many ways. Is that really true, or is it only as inevitable as being able to find any finite string of symbols in an irrational number?

Back home

November 10, 2013

After a 4 week stint in Seattle at Robert McNeel & Associates headquarters I’m finally back home. A lot of things were decided regarding the future of Grasshopper 1.0 and 2.0, however since I haven’t even started writing 2.0 I don’t want to list a bunch of features that may or may not make it in lest it be misunderstood for a list of promises. Instead allow me to list all the areas in Grasshopper where everyone is agreed problems exist that we need to attempt to solve for GH2. As a result of this reformulation I cannot mention any totally new features we are planning. I guess they will remain a secret for the time being…

  • Documentation is woefully inadequate
  • VB/C#/Python scripting tools are woefully inadequate
  • Canvas UI doesn’t scale well to large files
  • Grasshopper is probably only using a small part of your computer’s processing prowess
  • It is too difficult to find out which plugins exist for Grasshopper
  • It is too difficult to find out which plugins you need to open a GH file
  • It is too difficult to use Grasshopper
  • Grasshopper SDK is cumbersome to use in many places
  • Grasshopper doesn’t scale well to high resolution displays
  • Grasshopper UI doesn’t scale well to many custom tabs
  • It is difficult to work with multiple users on the same project
  • It is difficult to debug a GH file, especially if it was made by someone else
  • It takes too long to start Grasshopper, especially if many plugins are installed
  • It is often too difficult to edit data quickly
  • It is difficult to associate custom information with Grasshopper data items
  • It is difficult to maintain version control over large Grasshopper projects (i.e. who made what changes when, which plugins were used and do all the features today work in the same way as they did when this file was last edited?)
  • Grasshopper has badly suffered from feature-creep and bloat and is in need of a thorough spring cleaning
  • It has also been decided that Grasshopper will become part of the standard Rhino toolset, meaning that Grasshopper 1.0 will be available in Rhino 6.0

Once the Remote Control Panel is available again, development for GH1 will stop (apart from bug fixes) and I can start typing on GH2. I’m very much looking forward to this as there is some really exciting stuff that might not even take that long to code up. Running on Rhino6 means that I can switch to .NET 4.0 or even 4.5 and those have some really cool async and threading features. But most of all I want to be able to rewrite a lot of core classes because GH1 is a total mess under the hood.

All in all it’s pretty good news me thinks. I was a bit surprised that we ended up deciding to merge GH and Rhino and that I shall be developing GH2 beta as part of Rhino6/7 beta. It does mean I no longer have to worry about installers but it also means I’m tied to the Rhino release cycle. Luckily our new updating system means we actually tend to push out beta’s every week now so it will hopefully not be a big problem.

If you have specific wishes (especially regarding the SDK if you’re a GHA developer!) feel free to post them on our forums or send them to me directly.

ps. Simon Singh was on my SeaTac → Heathrow flight, 10 rows in front. It was an overnight flight so I didn’t want to disturb him but I managed to make a fool out of myself in a record 3 seconds by thanking him for Big Bang while deboarding. In case you haven’t read it yet, do so now. Seriously. Now. Shared first place with The Selfish Gene and Chaos in the category popular science.