Category Archives: Creative Arts

Women’s Day Intuition

The first thing I did yesterday, on International Women’s Day 2017, was retweet a picture of Margaret Hamilton, allegedly the first person in the world to have the job title ‘Software Engineer’. The tweet claimed the pile of printout she was standing beside, as tall as her, was all the tweets asking “Why isn’t there an International Men’s Day?” (There is. It’s November 19th, the first day of snowflake season.) The listings were actually the source code which her team wrote to make the Apollo moon mission possible. She was the first virtual woman on the Moon.

I followed up with a link to a graph showing the disastrous decline of women working in software development since 1985, by way of an explanation of why equal opportunities aren’t yet a done deal. I immediately received a reply from a man, saying there had been plenty of advances in computer hardware and software since 1985, so perhaps that wasn’t a coincidence. This post is dedicated to him.

I believe that the decade 1975 – 1985, when the number of women in computing was still growing fast, was the most productive since the first, starting in the late 1830s, when Dame Ada Lovelace made up precisely 50% of the computer software workforce worldwide. It also happens to approximately coincide with the first time I encountered computing, in about 1974 and stopped writing software in about 1986.

1975 – 1985:
As I entered: Punched cards then a teletype, connected to a 24-bit ICL 1900-series mainframe via 300 Baud accoustic coupler and phone line. A trendy new teaching language called BASIC, complete with GOTOs.

As I left: Terminals containing a ‘microprocessor’, screen addressable via ANSI escape sequences or bit-mapped graphics terminals, connected to 32-bit super-minis, enabling ‘design’. I used a programming language-agnostic environment with a standard run-time library and a symbolic debugger. BBC Micros were in schools. The X windowing system was about to standardise graphics. Unix and ‘C’ were breaking out of the universities along with Free and Open culture, functional and declarative programming and AI. The danger of the limits of physics and the need for parallelism loomed out of the mist.

So, what was this remarkable progress in the 30 years from 1986 to 2016?

Good:

Parallel processing research provided Communicating Sequential Processes and the Inmos Transputer.
Declarative, non-functional languages that led to ‘expert systems’. Lower expectations got AI moving.
Functional languages got immutable data.
Scripting languages like Python & Ruby for Rails, leading to the death of BASIC in schools.
Wider access to the Internet.
The read-only Web.
The idea of social media.
Lean and agile thinking. The decline of the software project religion.
The GNU GPL and Linux.
Open, distributed platforms like git, free from service monopolies.
The Raspberry Pi and computer science in schools

Only looked good:

The rise of PCs to under-cut Unix workstations and break the Data Processing department control. Microsoft took control instead.
Reduced Instruction Set Computers were invented, providing us with a free 30 year window to work out the problem of parallelism but meaning we didn’t bother.
In 1980, Alan Kay had invented Smalltalk and the Object Oriented paradigm of computing, allowing complex real-world objects to be simulated and everything else to be modelled as though it was a simulation of objects, even if you had to invent them. Smalltalk did no great harm but in 1983 Bjarne Stroustrup left the lab door open and C++ escaped into the wild. By 1985, objects had become uncontrollable. They were EVERYWHERE.
Software Engineering. Because writing software is exactly like building a house, despite the lack of gravity.
Java, a mutant C++, forms the largely unrelated brand-hybrid JavaScript.
Microsoft re-invents DEC’s VMS and Sun’s Java, as 32-bit Windows NT, .NET and C# then destroys all the evidence.
The reality of social media.
The writeable Web.
Multi-core processors for speed (don’t panic, functions can save us.)

Why did women stop seeing computing as a sensible career choice in 1985 when “mine is bigger than yours” PCs arrived and reconsider when everyone at school uses the same Raspberry Pi and multi-tasking is becoming important again? Probably that famous ‘female intuition’. They can see the world of computing needs real functioning humans again.

Advertisements

Becoming Functional

I’ve been playing with the idea of doing some functional programming for a while now. I’ve been trying to learn and paddling around in the shallows but this week I dived right in the emacs/CIDER pool. I was aware of some dangers lurking beneath the surface: recursion, immutable data structures and the functional holy trinity of map, reduce & filter, so I came up with some ideas to face my fears. I’ve also realised my maths has got rusty so: Some of That Too.

  1. I’ve ‘done recursion’ before but I thought I’d read that my chosen weapon Clojure didn’t do tail-end recursion. This isn’t true. What it can’t do is automatic optimisation of tail-end  recursion, to stop it blowing the stack after a few thousand iterations but Clojure has a ‘recur’ expression to manually signal tail recursion and fix that. I knocked off the programme in a couple of hours and went to bed happy. My code was happily printing the first n numbers of the Fibonacci sequence but a day later I still couldn’t get it the return the numbers as a sequence.
  2. I was finding out about immutable data the hard way. You can’t build up an immutable vector, 1 element at a time. You get to keep the empty vector you created first. It’s a big mind-set change to not have variables that can vary. In my next post, I’ll try to say what I’ve learned. On this occasion it was lazy sequences.
  3. I mentioned the Algorave in my last post. I only found out about that because of an idea I had for improving my theoretical understanding of music. I realised that I could write, for example, a function that would return the 1st, 3rd and 5th notes in a major scale, using a map function.While working the theory out, I found out that Lisps are already popular in the live-coding world.
  4. At Algorave, I was inspired by the live-coded graphics to try automatically generating some graphics too, to work out the maths of mapping triangular grids onto Cartesian co-ordinates. I need that for another idea.

Three basic working programmes in about a week. They aren’t ‘finished’ but is software ever? They have delivered value via increased Clue.

My First Algorave

@algobbz

On Saturday night I went to ‘Algorave Birmingham’, curated  by Antonio Roberts at Vivid Projects. I said I might write ‘a review’ but I’m not going to, because I wouldn’t know how. This is ‘a reaction’ – a digital feedback loop, an emission from the event horizon (should have worn my ‘Big Bang’ T-Shirt – the noughties Brum band, not the nerd show.)

My background is information technology. My current work is writing. I use the word ‘work’ in the artistic sense: something I spend my time on but may never get paid for. Themes recur. Are science and art actually different things? Is maths real or a model? Is software any different to magic, existing only outside the physical realm and communicating via intermediary objects?

Q: How much can you strip away from music and it still exist as an idea: melody, scales, pitch?

I came to Algorave via my functional programming experiments. I’m trying to learn Clojure, a member of the Lisp family of languages but with added time-travel. It messes with whether time is a wave or a set of discrete steps that can be retraced. Not real time, obviously but the model of time our software deals with. Time travel outside of the magical realm would be crazy-talk.

Dance music is often first. Drum machines. I got really frustrated the first time I saw how hard it was to programme beats. Where was the programmatic interface? Sampling, pitch-shifting, the ‘sound’ being manipulated by code. Digits being manipulated by digits, like the higher order functions of functional programming. I wondered a few weeks ago if processors had got fast enough to generate live noises. They have. A Raspberry Pi has http://sonic-pI noti.net/http://sonic-pi.net/. From there I discovered Clojure has, via ‘Overtone’ on ‘SuperCollider’ http://sam.aaron.name/, which resonates with my theory of a super-massive idea colider to mash-up memes.

Algorave Birmingham presented live coders generating sound and visuals. At times I felt that the graphics were pulsing to the beats but I don’t know if that really happened. I saw two pixelated women on the screen typing on ‘real’ laptops and a live drummer on digital drums. Virtuality virtuosos. I had a chat about how to make a hit record and forgot the name of the Kaiser Chiefs but remembered Black Wire who were the first band with a drum machine that I actually liked, because it didn’t sound mechanical, then The Kills who insisted everything was analogue, but now I’m looping.

A: I enjoyed the pulsing white noise. Software can do things that aren’t possible in Reality.

Licensing Pain

It’s a very long time since I’ve used any software that requires a licence but I decided to try the patented MPEG2 codec licence for my Raspberry Pi, to decode MPEG2 in hardware. Now I remember why I disliked software licensing so much. This was the process I followed for the Pi’s default Raspbian operating system.

Step 1: Find my Pi’s serial number. At the command line, type:  cat /proc/cpuinfo
The last line, starting Serial: is the unique number of your Pi.

Step 2: Find where to buy it. http://www.raspberrypi.com/license-keys/
Enter the serial numer of the Pi you wish to buy the licence for..
Pay £2-40 and wait for an email. It may take up to 72 hours. I assume this is because a unique(ish) key must be generated.

Step 3: Add the following line to “the config.txt file in the FAT partition of your SD card:

decode_MPG2=0xfdb4a3ac” You may note that this is not the 10 digit hex you were expecting. That doesn’t matter. The first two digits must be implied zeros.

Others told me this meant sudo my chosen editor to add the line to /boot/config.txt then save and reboot.

and “If you want to verify that the codecs are now enabled, the following commands will report their status:

vcgencmd codec_enabled MPG2”

Step 4: Wonder why that didn’t work.

In my case, I was typing:
“vcgencmd codec_enabled mpg2”. It said mpg2 was disabled. In reality, there was no “mpg2”, because it’s “MPG2”. Case matters.

 

What is Art?

I wanted to set up some thought experiments for my ‘book’ on information metaphysics. I think I’ll need a metaphysical model as a starting point. It probably ought to be a software model. I started with imaginary lumps representing science, politics and religion, all of which I’ve been comparing and contrasting recently, then I realised I’d left out information. As I sketched, I realised that I’d also missed art. What is art?

I think that art observes, interprets, asks questions, reacts then reflects back. Doing that may require craft skills. Do you agree?
Why do we “sketch out an idea”?  Am I “blogging out” now or am I un-secretly blogging in?

The Value of Work

Do you ever simply put real life ‘on hold’ while you think about the meaning of a word? I do it frequently. This time it was “work”.

I haven’t been going ‘to work’ for the last couple of years. You might argue that when I am writing, I am “Working At Home” and that if I ever have a book published, I’ll be paid for that work. What if I don’t? Does it stop having been work then? Obviously not, because people volunteer to do ‘voluntary work’, just as I am writing this blog post with no realistic hope of financial reward. I’m doing it because there is an idea in my head that I want to put in other people’s heads. They might like it.

I thought I wanted to write. I was surprised to discover that I wanted to think. I’ve been paid to think for years – but to think about what They told me to. It had become increasingly difficult to be interested in some of their boring, self-inflicted problems. I wanted to explore my own ideas.

Perhaps work is when you do something you hope someone else will value, even if you aren’t sure?

We broke social

I discovered something alarming yesterday: social media is losing to messaging.

There must be a drift back, from open collaboration to closed channels, from thinking in the open to “Can I have a word in my office, please?”. It isn’t healthy for anyone to be in control of The Message, or for conclusions to have been agreed before meetings begin.

Everything I have done in the last couple of years has led me towards networks, away from the control mechanisms of hierarchy. Please let us not give up now, just because being more open is harder work for dishonest people. If good team players are better, imagine what the awesome creative power of players in multiple teams with overlapping goals could achieve.