Category: Computing

Cuddly Science at The British Science Festival (by )

Cuddly Science Puppet show Photo thanks to Fiona Austen

The weekend saw me, Alaric and Jean at the British Science Festival in Birmingham. I was doing the most indepth version of Cuddly Science yet - everyone who knows me will no doubt now be sick of hearing about Cuddly Science but just incase here is the run down 🙂

I came up with an idea during my science communication course at UWE and have spent the last six months working on it, initially just as a piece of course work but I soon realised that this was the thing that would link together all my skill sets. It grew and adapted.

It is a set of puppets, larger than life versions of influential scientists, technologist, engineers, maths peeps and medical persons. Initially I focused on Ada - she was a natural choice as we have taken part in every single Ada Lovelace Day so far!

Ada went on a few trips out and about telling kids about programming computers and her own erratic childhood. But right from the beginning I knew this needed to be bigger, I have a list of puppets that need to be made.

I now have 5 puppets, I only actually had two proper shows prepared for the Science Festival as I'd planned to repeat one of them. But people decided that they were going to keep coming back to my next show so I improvised the last show which was more about the experiments and science games we'd sorted out.

As mostly Cuddly Science is just me, each puppet has their own show with an activity of some sort for the kids to take part in. So Darwin told of how he wasn't very good at school or sitting still and about his discoveries and this led onto DNA (which wasn't about in his day!). We then did a little DNA extraction experiment with the kids which they loved.

Alaric extracting DNA

Ada has a game that Alaric designed and I have done the graphics for, called Robo Bob's Jobs. We want to make a giant version of it as too our amazement there were way more than the 30 people we had designed our shows around and we need something seen from the back etc. The size of the crowed and the increase in business of the library during the day caused some issues with noise levels so I want to get a portable PA system as well. I need funding.

We also had some bits from Universe in a Box which the kids loved and was the stage for Brahmagupta, a 1500 yr old maths and astronomy dude. I generally entertained the kids between shows with the puppets and also during the activity sessions. We also had colouring sheets which I had drawn - manga scientists with room for the older kids to write down little factoids about the scientists etc...

I want to draw some more of these and maybe have a proper bundle for people to take away with them or down load from the web etc...

There were also science crayons for the colouring in - it was very popular and parents were desperate for their kids to have one of each of the pictures.

Science crayons

Those who could here the shows seemed to really enjoy them and I had so many people coming up to me to say how brilliant it was, how the children really responded to the puppets etc... I did get very nervous for the Ada show which was strange as I have done that one several times before. There were a lot of people there but not as many as for the last show which was improvised so should have been more nerve racking!

This is why I am off to do an improve comedy course at the end of the month - I am going to nail those nerves!

The appeal of the puppets was pretty universal and I got people who were just in the library and hoping for a story time - I equipped them with programmes for the rest of the festival and some of the kids would have played Al's game for hours and hours and had to be shoed away by Ada Puppet.

Ada was termed a princess by many and at least one parent turn round and said that they hadn't known girls could programme. I obviously thought about all of this when deciding what puppets to put in but was amazed to see impact straight away. Questions from adults and kids a like - mainly about Ada and Brahmagupta - it was the idea that people like "me" have done big science, tech, etc.... I really did not expect to see it so vividly.

I believe science is for everyone and this has been a big part of wanting to do science communication and the science art and it has made me more resolute and determined that Cuddly Science needs to get out there. It maybe one of my mad hat schemes, it may just be stupid puppets that me and my mum designed and games my husband made and a mish mash of my science education, experience running craft workshops, being in musical theatre, being an artist, poet and childrens instructor. It may have gotten it's inspirations from all over the place but Cuddly Science has the chance to make a difference, to help build a better world.

Cuddly Science awaiting at the Birmingham Library

The library and festival volunteers were amazing at looking after us and a chain of people I know from various things came to see me which was very encouraging 🙂 Jeany loved it, especially when I let her set up the Story Steps at the library!

Jean setting up the story steps Jean too tired to continue with the setting up of the story steps

The library itself was pretty epic! And I loved the fact it was connected to the Theatre with poetry on the doors 🙂

The library Birmingham

I even bumped into a fellow poet just outside 🙂

And got to go to dinner with friends and meet their little one and stuff.

More photos of Birmingham:

Jean drinking milk in the Rep Gold dudes Gold Dudes planning topary train Giant flowers on the library buildings with giant crosses on them Reflective buildings Brum in sillohette first proper view of Brum

Jean and Alaric found where they had been doing the custard walking 🙂

Jean and Alaric find where the custard walking had been

And so yeah - Cuddly Science is GO!

A user interface design for a scrolling log viewer with varying levels of importance (by )

Like many people involved with computer programming and systems administration, I spend a lot of time looking at rapidly scrolling logs.

These logs tend to have lines of varying importance in them. This can fall into two kinds, that I see - one is where the lines have a "severity" (ranging from fatal errors down to debugging information). Another is where there's an explicit structure, with headings and subheadings.

Both suffer from a shared problem: important events or top-level headings whoosh past amidst a stream of minutae, and can be missed. A fatal error message can be obscured by thousands of routine notifications.

What I think might help is a tool that can be shoved in a pipe when viewing such a log, that uses some means (regexps, etc) to classify log lines with a numerical "importance" as appropriate, and then relaying them to the output.

However, it will use terminal control sequences to:

  1. Colour the lines according to their importance
  2. Ensure that the most recent entry at each level of importance remains onscreen, unless superceded by a later entry with a higher importance.

The latter deserves some explanation.

To start with, if we just have two levels of importance - ERROR and WARNING, for instance - it means that in a stream of output, as an ERROR scrolls up the screen, when it gets to the top it will "stick" and not scroll off, even while WARNINGs scroll by beneath it.

If a new ERROR appears at the bottom of the screen, it supercedes the old one, which can now disappear - letting the new ERROR scroll up until it hits the top and sticks.

Likewise, if you have three levels - ERROR, WARNING and INFO - then the most recent ERROR and WARNING will be stuck at the top of the screen (the WARNING below the ERROR) while INFOs scroll by. If a new WARNING appears, then the old one will unstick and scroll away until the new WARNING hits the top. If a new ERROR appears, then the old ERROR and WARNING at the top will become unstuck and scroll away until the new ERROR reaches the top.

So the screen is divided into two areas; the stuck things at the top, and the scrolling area at the bottom. Messages always scroll up through the scrolling area as they come, but any message that scrolls off the top will stick in the stuck things area unless there's another message at the same or higher level further down the scrolling area. And the emergence of a message into the bottom of the scrolling area automatically unsticks any message at that, or a less important, level from the stuck area.

That way, you can quickly look at the screen and see a scrolling status display, as well as (for activity logs from servers) the most recent FATAL, ERROR, WARNING, etc. message; or for the kinds of logs generated by long-running batch jobs, which tend to have lots of headings and subheadings, you'll always instantly see the headings/subheadings in effect for the log items you're reading.

This is related somewhat to the idea of having ERRORs and WARNINGs be situations with a beginning and an end (rather than just logged when they arise), such as "being low on disk space"; such a "situation alert" (rather than an event alert, as a single log message is) should linger on-screen somewhere until it's cancelled by the software that raised it emitting a corresponding "situation is over" event. Also related is the idea that event alerts above a certain severity should cause some kind of beeping/flashing to happen, which persists until manually stopped by pushing a button to acknowledge all current alerts. Such facilities can be integrated into the system.

This is relevant for a HYDROGEN console UI and pertinent to my previous thoughts on user interfaces for streams of events and programming interfaces to logging systems.

Home Automation: Phase 1 (by )

I've always had a nerdish fascination with home automation.

There's been a recent trend towards the "Internet of Things" (a.k.a. "IoT"), which is related, but different. The IoT seems to focus more on home devices talking to centralised Web services, which is a hateful model (we all know why: those central services are outside of your control, so unless you're paying a subscription, you are the product rather than the customer; and if they're shut down, your devices become useless; and they can leak your private information whenever they want; and they can take control of your home; and it all falls apart if your Internet connection goes down; and I'm sure there's others).

No, I want to have my house under computer control - but with those computers under MY control. This is something I've planned for for ages, but as with all hardware projects, getting started is tricky; I need to commit to a final design and then afford to buy the parts, and that's scary because I might find out that the parts don't quite work together in the way I wanted. Unlike with software, hardware hacking requires up-front commitment of resources, that can't be backed out of. Scary!

So the trick is to split the thing into small parts, with flexible interconnections, so I can iteratively prototype parts and then connect them up in due course. And this last week I took the first step - building an announcement system in the living room.

Read more »

Thoughts on Programming and Tracing (by )

I was recently pointed at this interesting article: Learnable Programming.

It's a good read, overturning many assumptions the software industry has picked up over the years, and propagated without thought since.

The first part suggests allowing a programmer to trace the flow of execution of a program graphically, using an interactive timeline. My first thought was that this was all well and good, but would rely on every library in the language annotating every operation with information about how to present it - producing the little thumbnails to go in the timeline, or exposing numeric values that can be plotted onto charts. Also, highlighting the "current" drawing operation in red on the canvas relies on those operations being things that affect a canvas; more abstract operations, such as writing to a database (or even generating images to be encoded directly into a file rather than onto the screen) would require a more explicit "object preview".

However, those are not insurmountable goals. And, perhaps, things that can be built on top of my ideas about logging and tracing, making it possible to use such an interface to go through traces of execution captured from production servers, rather than just within a cute live-coding IDE; the trace entries generated by operations in your libraries could, with the help of a meta-library of trace visualisation rules, generate those little thumbnails. However, it would need to be augmented with dynamic scope information provided by the programming environment itself to know which line of code caused the trace event; the kind of thing one finds in a stack trace.

He asks "Another example. Most programs today manipulate abstract data structures and opaque objects, not pictures. How can we visualize the state of these programs?"; so I suggest that the abstract data structures and opaque objects be annotated with code that summarises their state. Many languages have a notion of "return a string representation of this object", generally aimed at debug logging - Python's repr() versus str(), for instance. Perhaps if we moved to expecting objects to return HTML representations of themselves, we could take a step in that direction.

The second part (and I'm taking some temporal liberties here, as some concepts I've included in the first part are touched upon in the second and vice versa) is also inspiring; it looks at the bigger picture, considering how libraries and code-editing environments can be designed to make it much easier for programmers to identify what operations their libraries are making available to them, rather than requiring the first step to be the reading of documentation. It touches on topics such as the dangers of mutable state (preaching to the converted here!), and the choice of library function names to make code using them clear (I'm also a big fan of smalltalk / Cocoa-style function call syntax, and how it might be brought into the Lisp family of languages...)

I've written before that I think modifying software should be a much more widely-practiced activity; and I think that should be achieved through removing unnecessary obstacles, rather than forcing everyone through complicated programming classes. I'm always interested in more thoughts on how to make that happen!

Ada Lovelace Puppet Mk 2 (by )

Ada Lovelace puppet head mk2

After the story telling festival in Bristol I decided to refashion Ada's head (or rather get my mum to do it). The first head had multiple problems - like being a bit bumpy and narrow and not quiet having enough room for my hand. Then the new head came up far too fat and wide!

Needing a bit of a re-make, it also seems a bit too stark for me.

I think there will need to be a mk 3 at some point but kids have loved both puppet heads so I am not too worried and my mum has really had to go to town helping me with the puppets. I am currently at the point of saying I have a working puppet. I am still working on the drawings and colouring sheets to go with it and have only very basic game pieces and I need to sort that out.

Ada Lovelace was the first computer programmer (before there were actual computers!) and so I have chosen her to show computing in a fun and interactive way - not actually using computers to do it either! There are more puppets to come but I am going to need some funding to fully realise the vision - it is very much part of my mission statement of science/+art for all.

Ada Lovelace puppet

WordPress Themes

Creative Commons Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales
Creative Commons Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales