Wednesday, 22 March 2017

The Haunting Beauty of The Mandelbrot Fractal

We had the very first Algorithmic Art meetup earlier.

Videos of the meetup are on SkillsMatter.


Clitoris Vulgaris

We started with a great talk by Sinead on a twitter bot, @clitoscope, she and her husband have been working on.

A husband-wife project .. new meaning to pair programming!

The project is combines quite a few interesting themes:
  • raising awareness of half the human population's anatomy
  • rasing money for Wellbeing of Women
  • exploring interactions on the internet, including between bots
  • creating unique pieces of art, with different configurations and textures
  • algorithmically choosing a suitable background colour (using the HSV model) that complements the object's texture
  • language processing to automatically select plausible latin names for the half-botanical creations

Using the HSV colour model to pick a complementary colour.

You can read more about the project here. Myself, I love how this project has raised awareness of a medically neglected part of women's bodies .. in a fun and interesting way.

You can find the slides here.



Mandelbrot & Julia Fractals

The next talk was an attempt to explain how the Mandelbrot and Julia fractals are made.


The talk started with a view of some varied renderings of the fractals, patterns which are self-similar at different scales. These particular fractals are very organic in their intricacy, invoking images of lightning, landscapes, eyes, ferns and seahorses.


The core aim of the talk was to demystify the mathematical algorithm that creates them. Starting with the very simple and familiar idea of repeatedly applying a function ("sausage machine") to a number to create a sequence of numbers, the talk progressed to the idea of creating maps to show which regions of number-land behaved differently. Some starting numbers seemed to create sequences that grew and grew, whilst others created sequences that shrank and shrank.

The key point (in history) was applying these ideas, not to normal numbers, but to complex numbers. A gentle introduction to complex numbers was attempted - they're not complex at all .. and they should be called composite numbers really.

The magic starts when we see a wide range of surprising behaviours ... starting with x=0+0i and a chosen c, the sequences we get from repeatedly applying x2+c can:
  • grow slowly larger, orbiting away from the origin
  • rapidly explode. escaping the origin
  • circle about and approach an attractor point
  • circle in an orbit that doesn't shrink
 

That's pretty amazing .. such a range of behaviour from such an innocent looking funvtion x2+c.

Creating a map, to show which regions behave differently - either escape or remain in orbit - is the same idea as applied to the normal number line earlier. For complex numbers, which can be shown in a 2-dimensional plane, we might expect a circlular zone around the origin for numbers which shrink, or at least, don't explode. Maybe not a circle, maybe a square or a diamond? So we're surpised again when we see the shape to be nothing regular at all! That shape is the Mandelbrot fractal!

Here's what's is considered to be the first rendering done in 1978!

 

Here's a more detailed version:


That's pretty amazing. Such a simple formula leading to such antricate shape. And one that's infinitely detailed and varied .. and in many parts, beautiful!

The talk explained how you could apply a colouring scheme, the most common one using colours to indicate how fast the sequences escaped.

Julia fractals are generated with the same simple formula x2+c, but with the starting value for x set as the point on the map and c being set at a constant throughtout. The resulting images are just as beautiful! Here's an example.


Tools for making your own were pointed, inlcuding xaos which calculates the patterns so fast you can zoom in animated realtime, and websites which dont need any software to be installed.

The talk then showcased some ideas for taking these images further, making 3-dimensional landscapes, applying edge-detecting filters and even a brush-stroke simulating filter.

The slides which contain more detail, more pictures and pointers to resources are at the permanent link: https://goo.gl/I6fIIb


Example Python code for making your own Mandelbrot and Julia fractals canbe found at https://github.com/makeyourownmandelbrot/makeyourownmandelbrot. More blog posts on making these fractals can be found at http://makeyourownmandelbrot.blogspot.co.uk.


More Talking!

After the main session there was quite a bit of enthusiastic talking! Eavesdropping or joining in, I found a few themes emerging:
  • The down-side of social media .. attack bots, fake news bots. Tools for visualising the problem, and helping dealing with this.
  • Someone wanted help with visualising the effects of Einstein's relativity theory .. and someone else suggested MIT has an API for this .. and the meetup comments had the links later! A great example of community problem solving!
  • Someone else was interested in applying fractals to their own design world (including typography!) .. so we talked about other kinds of fractals, including those created by L-systems.  We have an upcoming talk on l-systems.
  • The idea of genetic algorithms creating art objects .. I'd love a future talk on this topic!

Charalampos was working away on his laptop during the talk and came up with these amazing images: https://github.com/papaloizouc/fractals_2... I'm hoped we'll have a future short talk on these.


Friday, 3 March 2017

First Meeting .. What We'll Do and How

We had a great first meeting on March 1st 2017. It was an initial meeting to gauge interest and gather views on what we should do and how we should do it - organising stuff, rather than a normal meetup about a cool idea or amazing art.

I forgot to take a photo of the meeting. So here's algorithmic art instead, Conway's Game of Life.


Great Group!

I was really impressed with the diverse and dedicated group that turned up in the rain, to an unfamiliar part of London. We had people passionate about music, electronics, games engines, 3d rendered scenes, film visual effects, exciting maths and logic puzzles, fine art ..

That diverse mix tells us that lots of people from different fields have a common enough interest! Cool!

We're also lucky in having people that have great experience to bring - from teaching kids to code, to organising coder dojos and art hacks.


What We Talked About

The following briefly zips through some of the things we talked about. It's an initial start at crystallising what we are and how we work - it'll evolve over time as needs change. Having said that, there was a good amount of agreement which, again, kinda say's this is probably a good thing.


Scope

My very early day-dreaming about Algorithmic Art was narrowly focussed on 2-dimensional images. But there's no good reason to be so narrow. So art means visual images, music, sculptured objects, text, ... anything really.

But we have to have a common unifying thread. And that's the algorithmic part of algorithmic art. We had a good chat about what this means. I think everyone knows what it means - we consciously design an algorithm or code - and this is a necessary and important part of making the art what it is.

We had some fun wondering why using a 3d-modeller shouldn't count .. it's clear that a modeller .. or indeed a realistic painting program, don't count because as didn't spend time and effort in creating the algorithm or code that defines a major part of the art. A good example of algorithmic art is coming up with a interesting method for laying out or moving particles.. and allowing a rendering program to light them and animate them, guided by the algorithm we coded.

Anyway - we didn't fret too much as we all intuitively know what we mean by algorithmic art. Here's a working definition (which we won't fret about):

Art is Algorithmic when important elements are made by a consciously designed algorithm by the artist.

That'll do for now.


Audience

Who's our audience? I think it's important that everything we do should come back to our audience.

We're definitely want to:

  • Encourage artists who may not be coders to explore the possibilities of algorithmic art
  • Encourage coders and technologists to explore the artistic potential of their work or talent
  • Appeal to all levels, beginners, intermediates and experts

Some strong themes emerged around this:

  • We should be preferential towards beginners and new entrants, even when we do things that are more advanced, beginners should always have something to take away with them. 
  • We should put some effort into being diverse to reflect the world out there. We agreed this isn't trivial .. you can't "just do it", but we can learn from groups that have a good record of attracting all kinds of people from all kinds of communities.
  • Education - lots of us agreed that education as an objective of the group was important. 

Myself, I think focussing on beginners and people new to algorithms or art is important. There are many many more beginners and reticent people out there for every expert. And experts don't need so much support! I also think it is a good thing to reach outwards to new people. Personally, it makes men happy to see people achieve something, or find they like doing something, that they didn't know about before.

We talked a bit about the practicalities around diversity - you can't reach school children or their parents / teachers if we hold events late n weekday evenings in the middle of London. We need to go where where people are. That might mean eventually organising meet ups in community halls, schools, and of course, art schools like the Slade.

Great ambitions, but we need to grow first!

Also, I don't like the word audience. I prefer community!


Venues & Timing

We're lucky to have secured the CodeNode venue through SkillsMatter. This gives us amongst the very best facilities for talk, tutorials and get-togethers. That's a fantastic start for Algorithmic Art - many new groups really struggle with venues.

However, we want to hold events in different locations too, because not everyone can get to CodeNode so easily, and that's bad for diversity. Also CodeNode is associated with technology people - not artists. That. may be a barrier to the reticent artist reluctant to have a look at code and algorithms.

So we'll try to hold events in places where artists will be happy - like the arts schools, Slade, Goldsmiths, RSA, RCA ..

And for younger people, more local venues like schools .. once we're up and running and ready to do that.

For timing, simplicity and predictability .. and regularity are key to growing.

So we'll try to hold an event every month (yikes! I was thinking every 2/3 months!. At the same point in that month .. so it's easy to remember. London Python, for example, tried to be the last Thursday of every month.

We called this "cadence" .. great word!

We also talked about smaller groups for tutorials and dojo type events, as large groups are less intimate and work less well. About 10 or 20. For the talks we can have much bigger numbers, as is common for many meet ups.

There wasn't a reason to change from the "6.30 for 7pm start" and "try to finish at 8.30 and out by 9pm" that seems to be the pattern for many meetups. It's probably like that so it fit between the end of work and before the later trains home.


The Meetups Themselves

It was very clear that the group didn't want just talks - someone at the front of a room monologuing at a room full of seated people.

Some in the group are experienced organising hands-on activities like dojos and hackathon type challenges. (I'm not .. I'm a boring talk organiser .. and sometimes a tutorial teacher).

The enthusiasm for hands-on events was undeniable - so we'll be doing a mix of talks, tutorials, dojo-style working and hackathon challenges. As well as this we wanted events with a mix of shorter demos, show-n-tells as an evening itself.

So I'll need help! I can do talks and some tutorials ... and I'll need others to help with the more hands-on events. Luckily there wasn't a shortage of energy and will!

For the talk evenings - we didn't see a reason to break from the common main talk + shorter talk or flash talks and community announcements + drinks format.

We agreed blogging was a good idea - meetup is great for organising events .. but not so good at recording what happened, with links to resources, or even a discussion about what happened.

We talked about photos and videos .. we don't have a video recorder .. but SkillsMatter has professional recording of events at CodeNode and we can use the link (but not take a copy of the video). This led to privacy .. apparently there is a system of "blue dots" which people use .. or we could just ask and check.


Organisation

All this talk is great and grand ... but we must walk before we can run, and crawl even before that. So we'll grow and learn and do more then.

We talked about sponsors and agreed that we needed to maintain community feel and values, and avoid becoming overly associated with corporate interests. For me this is really important.

That raised the question of sponsorship from groups like the Python Software Foundation (PSF). We agreed that such groups are there to do public good .. and it is easy enough to tell the difference.


Networks & Links

Many in the group have links to, friends at, or previous experience with, really interesting .. and interested .. organisations. Organisations like Goldsmiths, City, RCA, RSA .. CodeClub, ..

And plenty more were suggested .. ODI, V&A, Royal Festival Hall ....

We should certainly join up with a great plethora of interesting organisations once we're up and running and have some credibility built up.


Values

I brought up the issue of open source .. which can be something that everyone agrees with .. or can be controversial.

Should everything we do be open source? That generated a good debate. Very quickly this distilled into some fairly clear conclusions.

We like open source. It's helped lower barriers to entry for a whole generation of people getting into all kinds of fields from coding to computer art.

But that's not the same as asking those who talk or demo at our events to open source their work. There is no question of "taking" anything from anyone.

However, we don't want the community to attend our events and then feel they can't go home and try it themselves. That means that whatever is demonstrated or talked about must be repeatable in a useful way. That brings us to a really good point of clarity:

The technique or method should be open source .. the thing being made itself doesn't need to be.

That's probably a good enough definition to keep us going for a while.

Fairness, diversity, etc are all good things and we all seem to understand and agree with them. But we didn't want to get entrenched in trying to encode them in a legalese .. so there are ready made codes of conduct we can crib. I don't really want to get into all that but I suspect it's better to have it and not need it, than to need it and not have it.

I talked a bit (probably bored people) about my experience in trying to maintain values for the London Python meetup .. and how values actually do help make micro-decisions. Like the difference between people turning up and handing out flyers (bad) to turning up, participating and doing a community announcement (good) .. as well as clearer decisions about sponsorship from mega-corps.


Annual Exhibition

I raised the grand ambition of an annual exhibition in a real physical space as well as online .. and people didn't laugh!

It seemed a natural extension to the regular things we planned .. and a good idea to celebrate and recognise the effort and great work people have done. Yes, we're realistic that we have to start small and grow from there.

Also we were pretty clear that this should be about or community, and not fly-by-night celebrity artists .. it's an exhibition to celebrate the work of people in our community .. who may be kids complementing their school work, or older people getting into a new hobby, or a traditional artist getting into digital code generated art.

We talked a bit about media coverage and we think it should be possible, certainly my own soundings-out seemed to suggest the media would love to cover a very visual news item.


What's Coming Up?

We're still very new but we already have a meetup organised: The Haunting Beauty of the Mandelbrot Fractal. I'll be doing a talk to gently introduce the crazy concept of mathematical chaos and how very simple maths can lead to extremely intricate beautiful fractal patterns.


Beyond that we could have sessions on using game engines, coding scenes to be animated in blender, computer generated music and poetry, genetic algorithms creating life-forms, .. and maybe even a live video talk from the USA on space filling curves ...

Can't wait!