Speaking to my boiler

My boiler clock stopped working.

A somewhat stereotypical seasonal response to the dropping temperatures and clock changing back last night!

I do hope the central heating engineers out there are raking it in right now, but I am sorry to say, not from me.

Like my late father, I am perhaps too careful with my money despite being able to afford a call out. But for me, it is an opportunity and incentive to experiment with home automation.

I looked at the price of smart controls and blanched. Maybe instead I could replace the aged thermostat with a smart plug? I had to do some considered thinking about how that would work, and paused for a couple of days to do a little online research and devise a solution before deciding I could go for it.

The smart speakers I have are Echo Dot 5s, which can measure room temperature. I planned to write Alexa ‘routines’ to respond to changes (up or down) and do the timing too, so that it is not on overnight. A simple kind of programming, but interesting to think about as it means setting up a feedback-loop to operate at certain times only.

All I needed to do is understand how the thermostat was wired, and instead of the temperature alone switching the boiler heating on, I could perhaps replace it with essentially a home made programmable relay to do the work of thermostat and timer?

The inner workings of the thermostat are simple enough, but I had to think out loud all the connections and label them up before I went further (John Davitt would be proud).

Of course I had already turned off the boiler in the consumer unit and at it’s fused spur outlet for double safety.

The trick was to take the ‘switched’ wire, which needed to be live when the new ‘thermostat/timer’ called for heating, and wire it into an ordinary plug which then is inserted into the smart socket, which can switch it on and off.

Here is the final wiring. Note that the plug needs no neutral connection(!), hence the earth sleeving to indicate that the blue wire was used for earth (for safety) in the lamp flex I used:

And after screwing it all together and plugging it in where the thermostat used to be:

I was pleased to be able to recycle an old plug and especially an old switched socket from my store in the garage, so if anything goes wrong with the smart socket, I can take it out of the equation, plug in the plug and still control the heating manually with the switch on the old socket.

Finally I had to write two routines for Alexa to respond to temperature change and, for now, notify me it has done so, to check it is working. These are simple to make in the Alexa app on my iPhone. Ziggy is the name for my bedroom Echo Dot 5, which I decided to use to monitor my small flat’s temperature. In the living room, I have an Eco Flex, currently on sale at less than £5 on Amazon, which is an amazing bargain! Sadly it has no thermometer function, but it does play music on my hifi and let me control the lights and the rest of the house.

Here are the two routines:

  • first, ‘Turn on heating’ to turn on the smart socket when the temperature is below 17C, within a specified time period;
  • second ‘Turn off heating’ to turn off the smart socket when it is above 18C – at any time. By saying ‘Alexa disable turn on heating’ as I leave the house, I can ensure I am not wasting energy when away.

Total outlay, £7.50 for the smart socket.

Sashiko

No, this not a term of endearment for my son Sasha, not another Russian diminutive of the name Alexander – here are those:

  • Alexander– used at work, in official circumstances, or by people he doesn’t know
  • Sasha – used by his friends and family. An alternative diminutive is Shura
  • Sashenka – used as a form of affection by members of his family
  • Sashulya – used very affectionately, probably by his girlfriend
  • Sashka – used very informally by family and friends, but is impolite if used by a stranger

No, this is Sashiko, a four hundred year old Japanese cultural concept, of a craft that revives old clothes or makes them stronger and warmer.

A man with a holey shirt repaired using a Sashiko technique of embroidery designed to look like a spider's web.

I have this old cotton shirt. The fabric is thin and worn and torn slightly near the breast pocket. I wanted to repair it based on the values and ideas of the Japanese craft of Sashiko.

I made a digital embroidery design, rather like a spider’s web, by writing a program using Turtlestitch, hoping it would strengthen the fabric and prevent the tear from spreading. So far so good – you can see the results in the photograph above – the hole was made bigger by the process, but I think more secure – we’ll see!

I also have a knitted cotton jersey, which I had torn lying down in a plane and catching it in the seat frame, doh!

The fabric is much stretchier, and with the experience of the first repair enlarging the hole, I thought I would try to stabilise the fabric on both sides with washable backing.

To further improve the stability, I chose to make some flour and water glue (with again the intent to wash it away afterwards) and stuck the jersey to the backing before mounting it in the embroidery frame:

The flour and water glue placed on the jersey
Now with the washable backing
Ready to go!

I had to wait overnight for the glue to fully dry and then the fun began:

Stitching the web
The end result before removal and washing
After washing away the backing and glue.

The result should stop the jersey from unravelling, but either way I am pleased with the process and the outcome!

I was unsettled by the amount of trigonometry and list processing I had to use in my first spider web solution, so spent some time while waiting for the glue to dry making a simpler program for the jersey spider’s web, that relied on Turtle Geometry only.

This confinement to Turtle Geometry – move and turn commands from the perspective of an imaginary turtle-like robot – means that when trying to fix or improve the program, one has recourse to bodily movement (imagined or real) to figure out what the program is doing. Seymour Papert, one of the inventors of Logo, on which Turtlestitch is based, called this ‘body-syntonic’.

This has been a focus for my inquiry over several years and I have blogged before about it:

Concepts in Computing – a taxonomy under review

This concept map is derived from a list first developed as a spreadsheet in 2016 by Miles Berry, in the context of Project Quantum. That project produced a mass of multiple choice questions for computing, and to make them searchable, they were tagged with a unique topic code (hence the numbers on each). The project’s output was delivered as part of Diagnostic Questions by the company EEDI, which I worked for in 2019.

On reviewing new computer science questions made by teachers, I found many topics that were not covered by the taxonomy. The outcome of my work wouldn’t be so clear in a spreadsheet, so I constructed the concept map above using Cmap, and my additions are shown in red.

I was a little surprised at the omissions, but it isn’t an easy task to get right. I had the great good fortune to be critiquing it through a form of practice – the development of tests by teachers.

But, since then I have often wondered about this categorisation, and in particular, question its completeness and its hierarchy.

Sub-program

I am particularly surprised at the relegation of sub-program (in all its forms) under a heading of ‘modularity’.

Seymour Papert held a different view of the sub-program.

In MicroWorlds, Papert held that:

“The idea of programming is introduced through the metaphor of teaching the Turtle a new word.”

(Papert, 1980, p. 12)

Papert’s idea suggests the sub-program a more dominant concept than selection and iteration, which with sequence, are held to be the three key algorithmic ideas in the English and Irish curricula, which have little mention of the sub-program as an algorithmic idea.

Parallelism

In a similar way, there is no sign of parallelism – the concept that two or more sequences of instructions may be executed at the same time. This is surprising since this is a major feature of beginning programming languages such as Scratch (and all its derivatives) and MakeCode. Parallelism features strongly because of the way it can simplify the programming of complex behaviours, such as those found in games with multiple independent graphics, that children love to make. Parallelism can bring its own problems of coordination too, but these are rarely noticed at this level.

Much is made of the challenges children face when moving from jigsaw languages like Scratch to text languages like Python, but the focus of concern is on the change of environment and the need to be accurate with syntax and grammar, rather than functionality. The loss of functionality that children suffer when they don’t find it easy to program games in Python as they could in Scratch, can so often lead to a return to Scratch programming – for its greater sophistication! This challenge is identified in the work of the Pytch project lead by my Trinity College Dublin colleague Glenn Strong.

Some of the problem is the way in which technology is a moving target. Scratch appeared in 2007, and although parallelism was in many programming languages around before that, it was not considered a beginner’s topic.

So it probably is a good idea to review the concept map regularly, and I intend to do so at conferences in China, Spain and New York – if my proposals are accepted – in the coming months.

Morse Code MakeCode

Before Christmas, I was working with four schools in County Mayo, Ireland, and challenging the students to use MakeCode to make a Microbit lighthouse showing the actual sequence of flashing lights that the lighthouses round Mayo use.

Tomorrow all four schools are gathering in Atlantic Technological University in Castlebar, county town of Mayo, to show off their work with artist Bryan Duffy and their digital skills combined.

My rôle will be to extend those digital skills, and I intend to do that by introducing Morse code:

  • You are on a small boat out to sea
  • Your engines have failed and the waves are getting bigger all the time
  • You can see the lighthouses and you want to send a message using the only technology you have left – a powerful torch
  • How do you say ‘help’?

We are working in four groups of students in rotation, mixed from each school.

I will start by introducing Morse code and asking them to simulate the torch just by raising and lowering their hand – can they send messages? can they read them?

Then we will move to coding the Microbit in MakeCode, imagining it to be the torch and automate the sending of a distress signal.

Finally we will write our own message to be sent from the Microbit and challenge the other groups of students to decode afterwards.

Here are the two sheets that will support the workshop:

The sheet to explain Morse Code and propose an activity to make it real
The sheet to ‘copycode’ the program to automate an SOS signal from the MicroBit

I’ll update this blog after the workshop and tell you how it went!


Update:

Well it was a great day.

I left the house in Essex at 5am to fly to Knock West of Ireland from Stansted and collect a hybrid hire car from the redoubtable Pauline on my way to Castlebar.

We set up in a lovely hall in Atlantic Technological University, with ample space to spread out for our four group workshop rotation day.

The Morse code MakeCode workshop went well, despite the difficulty of talking in a noisy space – ironic given the topic of using morse code to communicate!

Students were inventive and quick with sorting out how Morse code worked, planning messages and then sending them across the hall with arm movements for dots and dashes in the absence of torches.

Explaining Morse Code and how to signal with your hands

Having acquainted themselves clearly with the concept of Morse code, the students then went on to use laptops, programming in Makecode to automate the sending of an SOS distress signal.

It gave me a chance to introduce them to sub-programs in Makecode as a way of structuring the work. Some were too enthusiastic to read my notes and coded it in a linear way, with a long ‘tower’ of jigsaw pieces. They quickly saw how much tidier and easy to adapt it was by using functions, which they readily understood.

Explaining the functions used in the program to transmit morse code from a Microbit

As the day progressed, the tower of decorated cubes, one made by each student in the four schools, was assembled on stage, directed by artist Bryan Duffy.

Artist Bryan Duffy masterminds the construction of a lighhouse tower of cubes

We placed one microbit at the top of the lighthouse tower, broadcasting a secret message to everyone:

Microbit broadcasting morse code message

One teacher and three students managed to work out what it was broadcasting – can you?

The four schools stood for a group photo with the tower on stage.

All-in-all a very satisfying day as we re-assembled the tower in the Mayo Education Centre next door, where the staff happily decoded the message, with some coaching!

Many thanks to the four principals – Adrian Ormsby at the Clogher School, Dermot Walsh at Cornanool School, Farnan Harte at Ardagh School, Kevin Munnelly at the Quay School – for trusting me with their students. A pleasure working with Bryan Duffy – a powerhouse. Most of all, a privilege to be working with the almost 100 students who worked tirelessly, noisily, enthusiastically, politely and generously.

Lighthouse coding

A lighthouse lit up at night time on an isolated rock in a rough sea.
Blackrock Island photo by Helen Geraghty Munnelly

This November, I have had the pleasure of working with colleagues Dermot Walsh, Farnan Harte, Kevin Munelly and Adrian Ormsby. They are the principals at Cornanool, Ardagh, Quay and Clogher primary schools respectively in Co. Mayo, Ireland. They formed a Digital Creative Cluster project to combine digital technology in an art work made collaboratively across the schools.

In truth the privilege was the chance to work with their energetic, imaginative and polite students.

Student at Ardagh school designing an art work of a light bulb incorporating an LED
Student at Ardagh school designing an art work of a light bulb incorporating an LED

My goal was to establish the competence to use Microbit and LED technology to include in a work of art to be developed.

Over two sessions, we:

Given a free rein, the art produced included many spaceships, cars, light bulbs and signet rings, as well as a couple of lighthouses.

Artwork of colourful lighthouse with LED from Ardagh School
Artwork of colourful lighthouse with LED from Ardagh School

This inspired discussion with the principals and raised the idea to focus on the flashing lighthouse, with its symbolism of identity and function of communication, as an exercise to make a dynamic Microbit project.

Could students code the Microbit to simulate a lighthouse?

We explored the LEDs on the Microbit and discussed the pause function in Makecode and decided we could, but after some introduction, it was left as an exercise for students to complete after I left.

So last night, I slept restlessly with troubling thoughts of unfinished business. I’ve learnt to get up and do something when this happens, rather than lose sleep in fitful discomfort!

So this is fruit of my feverish night mind – a simple Microbit program that I could have offered as a solution.

The challenge to you, is to run my program and study its output, before you inspect the code, while imagining you are:

  • Out to sea on a clear Christmas night off the western Irish Coast.
  • The battery is flat on the GPS.
  • All you can do is spot stars and lighthouses.
  • Where are you and which direction are you heading?
  • What has this to do with Christmas?

You can find out by downloading my program, unzip it and drag the hex file into a new project in Makecode, run it there with the emulator or download it to a Microbit and then imagine you are seeing the lights on the Microbit as objects in the landscape before you.

If you want, you can print my poster for this challenge on card, cut out the window to see the microbit display having fixed it to the back, and mount it on the wall in class for students to look at and attempt to work it out. Email me with their answer to the challenge and I’ll send the fully commented code.

Can you answer the questions, before you read the code?

Can you answer them after inspecting the code?

Merry Christmas to all the learners (including principals and me) in the four schools and all my colleagues, friends and family!

Hints to help:

UPDATE: Here is the fully commented code which explains everything I hope!

Computational Thinking in Primary

@AttyMassNS "At the recent [CESI] Conference, we mentioned our plans to explore decomposition and patterns/generalisations through Damhsa/Irish dancing. Integrates with/comhthathú le Seachtain na Gaeilge" March 2018
@AttyMassNS     “At the recent [CESI] Conference, we mentioned our plans to explore decomposition and patterns/generalisations through Damhsa/Irish dancing. Integrates with/comhthathú le Seachtain na Gaeilge”     March 2018
I was delighted last November to be asked to write this  Research Paper on Computational Thinking for the Irish National Council for Curriculum and Assessment, and now it is out.

I couldn’t do it on my own, so I invited a team of colleagues and friends in the Computational Thinking for Life group at Trinity College Dublin to help:

  • Nina Bresnihan, who had been conducting literature review on this for her PhD;
  • Dermot Walsh who had been looking at professional development in his PhD as well as being an innovative primary practitioner and
  • Joy Hooper, formerly working to advise both New Zealand and the UK on technology enhanced learning and also an experienced primary practitioner.

We were advised by friends and colleagues Stephen Powell and Glenn Strong and also consulted with Jane Waite, Dave Smith and Amanda Jackson – key players in the UK’s efforts to bring computing to the Primary level. I felt pleased to have such an experienced, knowledgeable and willing bunch to call on.

As well as benefiting from their collective wisdom, the result is a chance to exercise ideas I have been developing since completing my PhD in 2013, but material from the PhD also gets an airing. I hope it is helpful.

Keynote voting wearables at CESI conference

Richard Millwood and Elizabeth Oldham presenting at CESI conference 2018 with voting wearables
Richard Millwood and Elizabeth Oldham presenting at CESI conference 2018 with voting wearables [Photo: Stephen Howell]

I had a mad idea.

Having learnt all about the amazing  Microbit at CESI•CS meetings and in particular their capacity to inter-communicate using Bluetooth Low Energy (BLE) after being shown by the indefatigable Keith Quille, I wondered “how many Microbits could be broadcasting at once?” and “could I put together a voting system where the audience have Microbits and the speaker has a wearable with Microbit that listens for their votes and displays the outcome?”

I had been asked by the Computers in Education Society of Ireland (CESI) to present a keynote speech with my good friend and colleague Elizabeth Oldham at the CESI conference on 10th March 2018 at Dublin City University. I told Elizabeth about my idea and suggested we dramatise disagreement from time to time in the speech and then ask the audience to settle our dispute. She agreed!

Keith Quille also thought I wasn’t mad, but I’m not confident he is the best judge 🙂

So, Keith started me off with a first go at a program for each Microbit. Then I tried at our CESI•CS meetings to get participants to try and solve the problem – they all came up trumps within only an hour or so, some with no experience at all – amazing!

In Cork, a group with primary and secondary teachers quickly made a solution:

Richard Millwood, Sean Manning, Dawn O'Sullivan, Dominick Donnelly, Kathleen Touhy & Liam OCallanain in Cork
Richard Millwood, Sean Manning, Dawn O’Sullivan, Dominick Donnelly, Kathleen Touhy & Liam OCallanain in Cork

In Donegal, Sharon, Pauric and Claire collaborated to make their solution:

Richard Millwood, Sharon Lee & Pauric O'Donnell in Donegal
Richard Millwood, Sharon Lee & Pauric O’Donnell in Donegal

In Athlone, Elizabeth and Maeve made a plan, using a Design Thinking process by treating me as their client and empathising, before writing down their ideas and then programming:

The Barbie design think process - Elizabeth Mullan & Maeve Cormican
The Barbie design think process – Elizabeth Mullan & Maeve Cormican

In each case, we discussed design processes, collaboration and the project work proposals in the Leaving Certificate for Computer Science. There were good discussions about foundations, progression and continuity, since all the CESI•CS meetings included primary and post-primary teachers.

So, having established feasibility, I set about making something Elizabeth would be prepared to wear, so cut up an old shirt and got stitching and glueing according to this fabric flower design.

Making Elizabeth's wearable
Making Elizabeth’s wearable

And the result (from a distance it looked OK!):

Elizabeth's wearable
Elizabeth’s wearable

Behind her flower (and with no adornment on my wearable) was a Kitronix Zip Halo fixed to a Microbit, and with a safety pin provided by Adrienne Webb (thanks!) Elizabeth pinned it to her cardigan, and I mine to my shirt.

The final task was to complete the programming. With Keith’s inspiration and the many design conversations and prototypes made by CESI•CS participants, I finally completed the code with two hours to spare – I only had time to test with three audience voting Microbits, so there was no certainty it would work. Once in the room and with minutes to spare, we set about downloading the audience program to a pile of Microbits generously lent to me by Stephen Howell of Microsoft. It couldn’t be done without the generous help of Stephen Howell, Keith Quille, Tony Riley and John Hegarty. We think we had over fifty voting in the room!

Three voters and a speaker in testing
Three voters and a speaker in testing

There were three programs – a program for the audience ‘microbit-audience’, a program for my wearable to control the voting process & display votes for ‘A’ positions ‘microbit-A-speaker’, and a program for Elizabeth’s wearable to display votes for ‘B’ positions ‘microbit-B-speaker’:

Program for 'microbit-audience'
Program for ‘microbit-audience’

Program for 'microbit-A-speaker'
Program for ‘microbit-A-speaker’

Program for 'microbit-B-speaker'
Program for ‘microbit-B-speaker’

I leave it to the reader to puzzle out how it all worked and will welcome suggestions for improvement!

Mental models to support competence in computer programming

Mental models

These are the mind’s ‘mechanisms’ for explaining and predicting phenomena. I have written more in my PhD, and you can find good expansions of the idea in Michael Simmons’ post or in the Wikipedia article on Mental Model The idea originated with Craik in World War II and elaborated by Johnson-Laird amongst others, all of whose work made me interested in developing computational models(!) of mental models – a subject of interest to me in the late eighties when I was a member of the London Mental Models group.

I do not think this is the same thing as modelling phenomena in mathematics or in computer programs – such simulation models are expressions in external languages, unlike mental models, which are mostly private to our minds: interconnected, fluid, faulty and ultimately unknowable. When we create and communicate external expressions in natural or formal language, this leads to the possibility of proof, execution and formal reasoning in a shared world of knowledge. But these external expressions aren’t mental models: they are in a linguistic form that can be interpreted by others and in formal cases, by machines.

Nevertheless I believe the unknowable internal mental model remains a useful notion when we think about designing effective learning. I apply the notion here to the design thinking needed for effective courses, materials, pedagogy, software, assessment to teach programming.

Mental models in Computer Programming

This is my second draft diagram which represents four five key mental models that a learner must develop (and continue to develop) as they increase competence in programming. It has been much improved after listening (and reacting) to Jane Waite talk about abstraction in programming. I have now made a poster – Mental models to support competence in computer programming – for the London Computing Education Research Symposium on June 11th 2018.

Programming - five areas of mental model
Programming – five areas of mental model

Problem Comprehension

This mental model allows the learner to reason about the problem itself – it may develop as the learner combines problem solving and design to make a solution. Sometimes prior knowledge can help; for example, Papert would argue that children enjoy, are competent and have mental models about the way their body can move in the physical world. If a problem is aligned to such competence, they can more effectively debug their program (body syntonic) and feel engaged with the challenge (ego syntonic).

Programming Language

This mental model is about the parts of the language – the distinctions between different linguistic components and their connection to create programs. Scratch supports this mental model by categorising statements and thus offers recognition rather than recall. It also reinforces appropriate syntactical combinations, so that the focus is on their meaning, in isolation and in combination.

Notional Machine

The notional machine is a mental model concerned with the variables, computer memory (for data and program), ‘program counter’ – a hidden variable that determines which statement is executed next and thus flow of control. It is much more complex with Scratch than in the past, since multiple parallel process are readily designed using sprites. The design of solutions in this way can be quite different from that made with single process thread programming, but makes the mental model challenging. My favourite example of this was the solution I developed using Scratch with three sprites to draw lines to fill in a shape, hoping to use it with TurtleStitch to make embroidery. Then I discovered that TurtleStitch (a Snap derivative) had only one sprite – my solution was useless due to a mismatch of my mental model of notional machine for Turtlestich and Scratch.

Microworld / Domain

The microworld is the concept of a limited ‘space’, designed to suit a particular class of problems and usually with an ‘object to think with’. The turtle geometry microworld is the most famous, but not the first in Logo. Before that came sentence construction using lists of words to manufacture amusing nonsense! Making a mental model of a microworld’s affordances allows the learner to map solutions to problems and to relate to the notional machine and the programming language, within a limited but meaningful domain.

Interactive Development Environment

The mental model here is of a complex user interface to understand and write programs, manage program files, debug programs and produce results. Sometimes it spans several computer applications, such as an editor, file manager and version control, and sometimes it csn be combined in one place, as with Scratch. It is the interactive development environment (IDE) which can help or hinders the user in forming the mental models of programming language, notional machine and microworld through visualisation and interactivity.

Connections between mental models

The greatest challenge to the learning programmer is in the connections and overlaps between each of the mental models. I believe the educational designer (especially the designer of the IDE) must pay attention to each of these and the questions in the diagram are to help the designer think about that.

Computational Thinking content

Computational Thinking content
Computational Thinking content

It is often argued that we need clarity about the nature of Computational Thinking and how it relates to the more established mathematics and problems solving worlds. This diagram is an attempt to set out some of the key elements of computational thinking content and their interrelationships, particularly with respect to computer science.

Using my notion of competence, the content analysis in the diagram focusses on those aspects of knowledge:  facts, concepts and mental models, but does not describe knowledge strategies, craft skills and dispositions of character that might be needed for a full description of Computational Thinking.

It is my contention that much of the content of Computational Thinking is to be found outside the subject of Computer Science, in other subject disciplines and in the everyday world. Computing offers the chance to make such ideas programmable and thus transform sometimes abstract ideas into more concrete, executable form – making their learning all the more amenable to the loop of expression and evaluation described in my view of Expressive Constructivism as set out in my PhD.

Niklaus Wirth’s famous equation (and book):

Algorithms + Data Structures = Programs

lies in the centre of the diagram to remind us of the importance of data structures in a time when  algorithms are the fashion. It is my thought that computational thinking is better defined as: combining problem solving and design to create useful solutions, informed by the possibilities that Computing offers.