2011.11.28
The Mobile Life Centre in Stockholm is an interdisciplinary lab that does serious research on unserious activities and comprises computer scientists, interaction designers, sociologists, psychologists and game designers. They are also part of SICS, and are partners with FoAM on the Lirec project. Last week I was lucky enough to work with them for 5 days focused on Germination X.

The main objective was to start designing a user study to discover people's feelings about their relationships in the game. We started off with a talk and a workshop, inviting the other researchers to help us decide the best ways of doing this - using interviews, online questionnaires, in game surveys or raw data from the game.
The skills you need to design something like this (in order to get the best chance at finding answers to questions you are interested in), of course requires a totally different way of thinking compared to actually designing a game in the first place - it was very inspiring to be part of the process, and see first hand their work on other parts of the Lirec project, such as the ActDresses concept for end user programming of robots.
It was also great to meet the group at the Mobile Life Centre who are working on pervasive gaming who had lots of ideas and directions for the study, as well as for the game itself.
2011.08.01
A third and final update on the Mathematickal Arts Workshop - following the previous outline, some more detail on the process of going from software to textile using plain weave.

First create a program and choose the colours:
Axiom: O
Rule: O => : O O :
Repeat 5 generations
: = Green
0 = Orange
Then "compile" the code to expand the pattern:
1= O
2= : O O :
3= : : O O : : O O : :
4= : : : O O : : O O : : : : O O : : O O : : :
5= : : : : O O : : O O : : : : O O : : O O : : : : : : O O : : O O : : : : O O : : O O : : : :
The resulting weave can be previewed in ASCII as described earlier. This was useful to discover the range of patterns possible. When done, install the compiled code on the loom as a warp thread colour sequence.

Then you follow the same sequence for the weft threads, choosing the colour based on the code generated. In this way you become a mere part of the process yourself.

This is another, more complex program with 2 rules. This expands rather quicker than the last one, so only three generations are required:
Axiom: O
Rule 1: O => O : O :
Rule 2: : => : O :
Run for 3 generations

This technique draws comparisons with Jacquard looms, but obviously it's far simpler as the weave itself is the same, we are only changing between 2 colours (and a human is very much required to do the weaving in this case). However, one of the activities I would have tried with more time available would have been reverse engineering Jacquard woven fabric - to attempt to decode the rules used.
During the workshop it was also suggested that a woven quine may be possible - where the pattern somehow contains the instructions for it's own manufacture.
2011.07.30
For my contribution to the Mathematickal Arts workshop, I wanted to explore weaving, specifically plain weave. This is the simplest form of weaving, but when combined with sequences of colour it can produce many different types of pattern.

Some of these patterns when combined with muted colours, have in the past been used as a type of camouflage - and are classified into District Checks for use in hunting in Lowland Scotland. This is, I guess, a kind of less prestigious form of Tartan.
I started off by trying to understand how the patterns emerge, beginning with the basic structure:

The threads running top to bottom are the warp, those running across are the weft. If we consider the top most thread as visible, we can figure out the colours of this small section of weave. A few lines of scheme calculate and print the colours of an arbitrarily sized weave, by using lists of warp and weft as input.
; return warp or weft, dependant on the position
(define (stitch x y warp weft)
(if (eq? (modulo x 2)
(modulo y 2))
warp weft))
; prints out a weaving
(define (weave warp weft)
(for ((x (in-range 0 (length weft))))
(for ((y (in-range 0 (length warp))))
(display (stitch x y
(list-ref warp y)
(list-ref weft x))))
(newline)))
I've been visualising the weaves with single characters representing colours for ascii previewing, here are some examples:
(weave '(O O O O O O O) '(: : : : : : : : :))
=>
O : O : O : O
: O : O : O :
O : O : O : O
: O : O : O :
O : O : O : O
: O : O : O :
O : O : O : O
: O : O : O :
O : O : O : O
(weave '(O O : : O O : : O O) '(O : : O O : : O O :))
=>
: O : : : O : : : O
O : : : O : : : O :
O O O : O O O : O O
O O : O O O : O O O
: O : : : O : : : O
O : : : O : : : O :
O O O : O O O : O O
O O : O O O : O O O
: O : : : O : : : O
This looked quite promising as ascii art, but I didn't really know how it would translate into a textile. I also wanted to look into ways of generating new patterns algorithmically, using formal grammars - this was actually one of the simpler parts of the project. The idea is that you begin with an axiom, or starting state, and do a search replace on it repeatedly following one or more simple rules:
Axiom: O
Rule: O -> :O:O
Generation 1: O
Generation 2: :O:O
Generation 3: ::O:O::O:O
Generation 4: :::O:O::O:O:::O:O::O:O
We can then generate quite complex patterns for the warp and the weft from very small instructions, next I'll show what happens when some of these are translated into real woven fabric...
2011.07.29
Textiles and mathematics have a long but sometimes easy to ignore shared history. The Mathematickal Arts workshop at FoAM in Brussels last weekend celebrated and brought this history to the fore with Tim Boykett and Carole Collet taking us on an exploration including knots, origami, group theory, mobius strips, donut making, weaving, symmetry, crochet and non-euclidean geometry systems.
This workshop underlined the importance of applying a hypothesis led process to creative work - testing your assumptions, recording experiments well and attempting classification to further understanding and avoid repeating mistakes. Right at the start we were confronted by the strange things that happen when you cut a moebius strip in half, a good reminder of the fragility of intuition and common sense.

As always with FoAM, the food blended seamlessly into the workshop with woven, rolled and knotted dishes being provided by Annabel Meuleman. We also contributed to the sugar intake by making donuts from knotted and pleated dough and observing the transformations undertaken while cooking (and shortly after, eating).
This workshop was one of the first activities connected with the resilients project which is engaged with promoting long term thinking. One of the things we discussed related to this was the way that textiles are used to store memory. For example knots were used as a language in the Inca civilisation in order to communicate using Quipu. Carole also introduced us to Ikat, a weaving technique where warp and weft fibres are tie dyed prior to weaving. This is a very complex process, and the accumulation of slight errors results in a hazy look (It's known as "abra", or “cloud” in Central Asia). The knowledge of the precise technique - where to tie the fibre to achieve a desired pattern, are passed down the maternal line from mother to daughter.

Many many more pictures here, and another post soon on what I ended up making.
2011.05.08
Yesterday I had the chance to take part in Julian Oliver's and Damian Stewart's Artvertiser walk around Helsinki. Advertising space was augmented with new artworks made by the workshop participants and displayed by their custom built camera goggles. It was also a chance to chat with the group behind m-cult, who were supporting the workshop. I found it significant that many of the locations chosen came with their own musical augmentation too - a deliberate choice, I'm sure.

2011.03.16

Part of our groworld bazaar at Pixelache 2011 was the "draw your own plant spirits" workshop/gallery installation in the Augusta gallery on Suomenlinna island. This was the first event to use the Germination X game in a public setting, and the idea was to get people to help us design characters to represent the layers, or groups of plant types that permaculture companion planting uses.
This started with a drawing challenge, to draw on paper your idea of what a "spirit" would look like for trees, leafy ground cover plants or shrubs. The drawing was then instantly scanned and automatically put into the game, connected with the FAtiMA AI system and animated. The game with it's new characters being projected on the wall at all times.

We wanted to ask more questions about how emotions could be expressed by the characters in different ways - along with how the fundamentals of permaculture could be described by the game itself in a social network setting. In the gallery format this proved difficult - as people had more than enough to think about being put on the spot and asked to draw something!
The thing that impressed me most was the range of the styles and ideas resulting from this simple request. Despite being able to see the characters drawn by other people around them on bits of paper, and in the game, each one was quite unique - giving us a lot to think about.

2011.03.16
After much organisation, shopping for seeds, clay, compost, drawing equipment, aronia berry products, packing, catching ferries, unpacking and then finally tidying up - Pixelache 2011 and FoAM's groworld bazaar is over!
Suomenlinna island was a great venue for the festival, despite the logistical challenges it brought a good vibe with it's fortified buildings, village atmosphere and fresh sea air. Due to my commitments I didn't see as much of the other events as I'd have liked, but I still managed to meet a lot of interesting people. I'll write a report on the "draw your own plant spirit" germination x event at camp pixelache shortly.

2010.11.25
Piksel 2010 (un)stable was the 8th piksel, and the second time I've been lucky enough to participate. I was there to present Naked on Pluto and general livecoding duties.
I didn't have as much time or energy to get involved with the other things going on as I'd have liked, so this is mainly a report on my activities. I did see a super talk by Audun Eriksen about the visual programming language scratch and it's use for teaching kids to make games - very inspiring stuff.

Scratch was where I started with the idea for scheme bricks, so it was great that the next day Alex and I had the functional livecoding workshop, where people could get their hands dirty with some of our live coding performance ideas.

This was followed in the evening by a slub performance, where we got a little carried away by the responsive audience and the rather nice sound system. It's always good to do performances with stuff you've done a workshop on earlier as the participants can put it in context (and tell other people what's going on!). The image is a link to a video of the performance on giss.tv.

The next day was a switch to Naked on Pluto with Aymeric and a presentation where we discussed clouds, problems with social media, farmville and the intricacies of the facebook graph api.

(pictures thanks to Régine Debatty)
It was great to get questions from people who have tried playing the game before seeing our talk. Hopefully this can be the case as we discuss the project more widely.
2010.11.01
Some schemebricks hacking in preparation for a workshop I'm doing with Alex McLean at Piksel in a few weeks. This is just a case of making it work a little bit more like you'd expect - messing with empty parentheses:
2010.07.15
A few days of summertime in the Finnish archipelago at the M.A.R.I.N. hacklab at the sea.


This experience included a lot of swimming in the sea, saunas, boat activity and simply exploring the environment, but the hacking seemed to fit in surprisingly well with this routine.
Having the privilege of being in such a place makes you aware of your footprints. With only renewable power resources available, I wanted to lower the power consumption of my computer to extend its battery life. I came across some useful instructions from the ubuntu wiki and from that discovered powertop which I can't recommend highly enough.
This is the script I'm currently using to switch everything to low power mode, cobbled from the resources above.
# Set CPU scaling / max freq to battery mode
for x in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
echo "conservative" > $x
X=${x%/*}
# The second column is the second from the highest freq most power savings / least slowdown
awk '{print $2}' $X/scaling_available_frequencies > $X/scaling_max_freq
done
# Tweak virtual memory to conserve power when running on batteries.
echo 10 > /proc/sys/vm/swappiness
echo 0 > /proc/sys/vm/dirty_expire_centisecs
echo 1500 > /proc/sys/vm/dirty_writeback_centisecs
echo 60 > /proc/sys/vm/dirty_background_ratio
echo 95 > /proc/sys/vm/dirty_ratio
# Enable SATA ALPM link power management via:
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy
# Disable 'hal' from polling your cdrom with:
hal-disable-polling --device /dev/cdrom
# 'hal' is the component that auto-opens a
# window if you plug in a CD but disables SATA power saving from kicking in.
# Change the wireless power mode to Battery.
for x in $(/bin/ls -d /sys/class/net/*/wireless | /usr/bin/cut -d'/' -f5); do
/sbin/iwconfig $x power on power period 2 power timeout 300u
/sbin/iwpriv eth1 set_power 7
done
I worked a little more on plant sensing, trying a simple approach of testing the electrical resistance of parts of growing plants with a sensor boosted to extremely high sensitivity. This area is fairly rife with pseudoscience, but has some basis in reality. I was quite surprised to see some changes between the values from a real plant and a dead twig, or air, with distant electrodes - but this requires a scientific test in controlled conditions, and any variation is most likely due to changes in the temperature of the wood with sunlight changes.

Returning to power consumption, it was a good opportunity to build a solar engine, which is a device that collects low currents from small solar cells and periodically dumps them into a circuit which requires a higher current (usually a motor). It should be possible to use this approach to drive self powered microcontrollers for limited bursts of activity, making their state persistent and cleanly shutting down on the low power interrupt, waking up the program where it stopped when new power is available. This could be useful for a remote device running for months or years from a very small power source.
I could only attend the first couple of days, so I'm really looking forward to seeing the results from the other projects being worked on.
|