Tag Archives: family

Processing for Kids

Liam (7) has been playing a little recently with Processing, mostly drawing shapes and moving them around. The Hello Processing interactive video tutorial is an excellent introduction, for kids too. Thanks to Jon Nordby for suggesting Processing.

Liam is gradually working through the Getting Started with Processing book, typing in example code and changing it as the book suggests. Previously he has used Scratch and he’s started using the Lego Mindstorms programming environment, which is surprisingly visually complicated. But Processing is a nice introduction to real text-based programming, where you must type everything perfectly correctly or the computer will complain with incomprehensible error messages.

So far this seems to be the closest modern-day equivalent to my childhood experiences of sitting down with a Sinclair ZX81, Spectrum, or BBC Micro and trying things out from a book on BASIC. The expectations are low so you can easily feel that you’ve achieved something significant.

IMG_20141219_124554

The Processing IDE is a very simple and obvious UI and a Processing hello-world can be just one line, without any platform initialization, without specifying anything about exactly where your output should appear:

line(15, 25, 70, 90);

By default there’s just one screen that you draw on, and all functions and types appear to be in a global namespace. So you can start making things happen without the distraction of boilerplate code and without figuring out where in that mess to put your own code. You don’t need to learn about objects, inheritance, or encapsulation, though of course you should later.

Writing an iPhone or Android app might seem more interesting to modern kids, but they’d have to wade through so much kibble just to get started, while always noticing how far they are from achieving anything like the existing apps they see.

Processing is actually Java. When you write code, that code then seems to be the contents of a method in a (derived?) PApplet class, though you don’t see that other than in some compiler error messages. The functions such as size(), stroke(), point(), ellipse(), color(), strokeWeight(), etc, are actually member methods of this class. You don’t need to import any Java classes to use this API.

Java is fairly forgiving, particularly for the simple examples that people will start with. And it  offers a nice route into object orientated programming without the lower-level pain of C or C++.

Instead of just writing a bunch of code to run and then stop, you can instead define (override) setup() and draw() functions that do what you’d expect. The draw() method can make use of member variables such as mouseX and mouseY (these are not parameters of draw()). Likewise, you can implement keyPressed() and make use of keyCode. So you get a simple introduction to making a program interactive by doing event-driven programming.

Processing is not perfect, and I think you’d feel the lack of a real API and IDE as soon as your project became more serious, but it’s a great introduction to real programming.

Family Research

I’ve been doing some family tree research. My parents and their parents were so adverse to talking that I unfairly associate Scottishness with unusual levels of reticence. Luckily, Scotland has excellent public records of births, marriages and deaths, so you can be sure of some facts without having to talk to each other.

I didn’t find out as much as I’d hoped about my immediate family, but I did fill in a few details. I hoped to find a few people who might have photographs, but that hasn’t happened so far. However, I was surprised to be so interested in the lives of people who were so long forgotten.

First I’ll mention some of the websites I used, and then I’ll mention some of the family members that I researched, so that search engines can find their names.

Scotland’s People: Public Records

I’m lucky that almost all my ancestors for several generations lived in Scotland, in Edinburgh or nearby. For some reason, Scotland took excellent records of births, marriages and deaths from 1855 as well as regular census records, and you can search for these records online at scotlandspeople.gov.uk. You can download most of them online, though you need to order some as paper copies – usually the more recent ones. They have some church records from before 1885 too, but these don’t generally include enough detail (such as parents of people getting married) to identify people properly. It’s not awfully expensive.

The Scottish birth certificates, marriage certificates and death certificates include the names of the parents and the professions of the fathers, and the birth certificates include the marriage years too, so you can use them without much doubt. Often, a death certificate will mention the spouse, or be signed by a previously-unknown child or sibling. Sometimes a sibling is the witness for a marriage. Then you can track that person down via birth and death certificates. I don’t know of any other way to find siblings because scotlandspeople.gov.uk doesn’t let you search births by both parents’ names.

The occupations are particularly interesting. For my family they seem to show a move into Edinburgh from surrounding villages at the end of the industrial revolution, moving from menial labour into trades and then the (newly created?) middle class with office jobs. For instance, my great-grandparents and great-great grandparents include several “scavengers” with occasional labourers, bakers, miners, brush makers or factory workers, but some of their (male) children became mechanics or clerks. Their children became clerks and shopkeepers or even doctors.

English Public Records

This is far harder for the English birth, marriage and death (BMD) records. They seem to exist, but they aren’t online, and you can’t even order them easily unless you know the exact place and year. freebmd.org.uk only has an incomplete index, but it looks like you’d have to look through the complete set of BMD microfiches in a major English city to be thorough. This is a huge waste.

For instance, I can’t find the certificate for my aunt’s (Joan Isabel Lawrence) death in London around 1995.

Ancestry.co.uk / ancestry.com / ancestry.de

The Ancestry.com service (or their regional versions) is genuinely useful. They have many (but apparently not all) English records that I wouldn’t have found otherwise, and most of the Scottish records. Most usefully, you don’t need to do individual searches – their Hints system will find possible supporting records for people in your family tree and offer to add new family members that those records mention. However, they don’t have all the Scottish records, so you’ll still need to use scotlandspeople.gov.uk.

They have some other sets of records of varying levels of completeness, such as boat passenger lists, phone books and military service records, which I’ve often found useful.

Likewise, the Hints system lets you expand your tree by using the public family trees from other users. I’ve even found a few photographs of slightly-distant relatives this way. This can tend to offer the illusion of certainty when people accept conclusions that may be based on inadequate records.

23andme

I’ve also used 23andme‘s DNA Relatives feature. This is generally full of a thousand 4th or 5th cousins who are far enough removed that it’s almost impossible to see the connection, but I’ve had one 2nd/3rd cousin (and her son) show up. Because I got my father into 23andme too, it could show me that she was related on my mother’s side. She didn’t know much about her family, but she gave me enough clues for me to use scotlandspeople.gov.uk to see that her grandmother was the sister of my mother’s grandmother.

In general, 23andme’s list of possible relatives has not been very useful so far. Most connections that it shows are almost impossible to investigate using public records or family knowledge. Many must be due to unofficial biological fathers or mothers that don’t show up in marriage and birth records.

Most people on 23andme are in America and I have noticed a tendency for them to fixate on proving that they are directly related to settlers from northern Europe, happily ignoring the hundreds of other ancestors who would have been in the same generation. Maybe this will be harder once 23andme has a broader cross-section of even American society.

My Grandfather, Ian Murray Lawrence, and my grandmother, Isabella Forsyth

My grandfather, Ian Murray Lawrence (1914-08-17 to 2006-09-26) lived in Edinburgh but my parents had moved to Swindon, which was around 10 hours away by train at that time. My mother didn’t talk to him. I didn’t meet him often until I was in Edinburgh at University in 1991/1992 and even then he was a wall of silence. My mother, Margaret Maya Lawrence (1944-12-03 to 1999-07-15) died in 1999 and he died in 2006.

He was a pharmacist, as was my mother. My father says his pharmacy was in Pilton, Edinburgh, and the 1950 phonebook on ancestry.co.uk lists him at 33 W(est) Pilton Park, Davidson’s Mains, Edinburgh, near where he lived in Blackhall, Edinburgh. I’d love to find a photograph of it though it was apparently a fairly temporary structure that’s since been replaced with a health center.

My grandfather mentioned once vaguely, while drunk, that he had been in the pacific during World War 2, but never wanted to talk about it. Indeed, my mother’s birth certificate in 1944 mentioned that he was a Sick Bay Petty Officer in the Royal Navy. Now that I’m his next of kin, I could request his service records from the Royal Navy (this works for the Air Force and Army too). The forms are slightly awkward and they only take payment via paper cheque, but after a couple of months they gave me his complete list of postings. They showed that he was mostly at onshore Royal Navy hospitals, starting in Wales and England, but then in Australia and Hong Kong. This is his complete record, in case anyone else with similar results (or photos!) finds it via Google:

1942-12-30 to 1943-02-08: HMS Glendower: Probationary Sick Berth Attendant
1943-02-09 to 1943-02-09: Passage: Probationary Sick Berth Attendant
1943-02-10 to 1943-05-26: RNH Plymouth: Probationary Sick Berth Attendant
1943-05-27 to 1943-06-27: RNH Plymouth: Sick Berth Attendant
1943-06-28 to 1943-09-02: RNH Plymouth: Sick Berth Petty Officer
1943-09-03 to 1944-03-27: HMS Drake: Sick Berth Petty Officer
1944-03-28 to 1944-03-28: HMS Pembroke: Sick Berth Petty Officer
1944-03-29 to 1944-03-29: Passage: Sick Berth Petty Officer
1944-03-30 to 1945-03-05: RNH Chatham: Sick Berth Petty Officer
1945-03-06 to 1945-03-08: HMS Pembroke: Sick Berth Petty Officer
1945-03-09 to 1945-04-09: Passage: Sick Berth Petty Officer
1945-04-10 to 1945-04-14: HMS Golden Hind: Sick Berth Petty Officer
1945-04-15 to 1945-04-30: HMS Furneaux: Sick Berth Petty Officer
1945-05-01 to 1945-09-10: HMS Brisbane: Sick Berth Petty Officer
1945-09-11 to 1945-09-20: HMS Furneaux: Sick Berth Petty Officer
1945-09-21 to 1945-10-10: Passage: Sick Berth Petty Officer
1945-10-11 to 1946-03-22: RNH Hong Kong: Sick Berth Petty Officer
1946-03-23 to 1946-05-29: HMS Pembroke: Sick Berth Petty Officer

My grandfather’s wife, Isabella Forsyth (1915-10-02 to 1996-02-19), was said to have disappeared in the late 1950s or early 1960s, but I went with my mother to her cremation in 1996. I now have her death certificate showing that she died (apparently of suicide) in a (psychiatric?) care home in Edinburgh (since closed). Presumably my grandfather and mother knew all along where she was. I’d like to know when and why she was there, but I don’t think I’m entitled to access to any of her medical records.

I did discover that she had a sister, Margaret Pevey Forsyth (1911-10-26 to 1986-03-13) who had two sons David Shaw and John Shaw- my mother’s cousins. I even found those sons’ children (my second cousins) on Facebook, but there’s no real way to contact strangers on Facebook. Three are in England and one is in Florida. I have a picture of the English 2nd-cousin’s father with my mother, and I do wonder if they have more pictures of my family.

My grandfather’s (Ian Murray Lawrence) father’s death certificate from scotlandspeople.gov.uk was signed by his brother Alexander Lawrence who I’d never heard of. I then found him on the 1911 census (the parents’ ages and father’s profession matched) via ancestry.co.uk, and found his death certificate via scotlandspeople.gov.uk. He died of a heart attack in 1982 on North Bridge in Edinburgh while staying at the Salvation Army hostel at 1 Pleasance. Presumably they couldn’t find any relatives because he was listed in 1982 under “estates fallen to the crown”. My mother apparently had no idea that this uncle existed. So my grandfather seems to have mislaid at least his brother, his wife, and two daughters.

My aunt, Joan Isabel Lawrence

This is still  the biggest family mystery.

I never met my  mother’s sister, Joan Isabel Lawrence (1954-02-09 to approx. 1995) who nobody seemed to have hear of since before I was born. In 1995 we heard that she had died in London of sclerosis of the liver – she’s assumed to have drunk herself to death. But that’s just what my father says that my mother said that my grandfather found out when someone replied to a Christmas card that he sent her. We were surprised that he had an address for her and we don’t know what it was. Apparently it took a few months for them to identify her body and my father thinks she was using the name Joan Maclaren, maybe as a stage or modelling name. The GRO say they can’t find any death certificate for Joan Lawrence, Joan Forsyth (her mother’s maiden name) or Joan Maclaren,for England and Wales for 1994 to 1996.

My grandmother, Isabella Stubbs Sparks

I actually knew my grandmother Isabella Stubbs Sparks (1911-07-10 to 2000-03-10) and grandfather Richard Cummings (1904-06-02 to 1990-02-11) because they moved to London and then to Swindon, where I lived. She was always strange, but now I can see that her family life must have been difficult. The last of 9 children, her parents lost five of her siblings within just a few years, mostly before she was born. In 1903 the 7th child died 3 days after birth. In 1906 the 8th child died after 1 yearof spina bifida. In 1908 the second-oldest died at age 11 from drinking Tuberculosis-infected milk.  In 1914, the 5th child died at age 16. In 1917 the oldest died at age 25 at the Somme in WW1. This cannot have been a happy home.

This is the other major change that I see when looking at the family tree that I built up. People just 2 or 3 generations ago regularly had around 10 children and lost half of them. We forget how lucky we are.

Programming For Kids

I tried a couple of applications with my four-year-old son: Pictomir and MIT’s Scratch.

Neither seem particularly well maintained and neither are suitable for young children without lots of supervision. Pictomir is easier to get started with, but not easy enough. Scratch is probably more interesting to older children, though they’ll partly be learning about how software is still so often arbitrarily annoying, and I’d prefer that they were introduced via a better example. I’m very tempted to write something better.

Pictomir

pictomir
Pictomir at first start up.

Pictomir leads the child through a series of levels, telling an R2D2 robot (Don’t tell George Lucas) to move around some isomorphic squares to paint some tiles. At the beginning the program exists and the child just needs to click the play button. In subsequent stages the child has to build part of the program himself, and then all of the program.

The available commands, at least at the start, are icons for left-turn, forwards, right-turn and paint at the top of the screen. These may be be dragged into the available boxes in the program at the right of the screen, though you can instead put them there by clicking to select and then clicking on the empty box in the program. However, the available commands are far away from the program where you must place them, so the child has to spend lots of time moving the mouse pointer back and forth across a wasteland of empty space.

I found an official Ubuntu package in the developer’s PPA. It was last updated to Ubuntu 10.10 (Maverick), but you can install it manually on later versions. All of its UI is in Russian, though you can ignore most of it because the UI is icon-based. When I built the newer code from source a few months ago, I think the UI was translated.

I guess that Pictomir was developed for a specific screen size and generally older PCs. It does not scale the playing area up, so the child has to deal with a tiny R2D2 on a tiny grid in the middle of wide empty space.

pictomir has a bare svn repository, though I can’t see how clean its commits are, and I don’t know if it’s still used. There are no commits since last year. My svn says that the svn format is too old to check it out, though I’ve checked it on on previous Ubuntu installations.

It’s website it quite awful (and only in Russian). I only discovered Pictomir thanks to commenters on Google+.

Scratch

The Scratch UI has several problems that make life hard for the child:

scratch
Scratch, after creating and running a small program.
  • Scratch requires the child to cope with tiny targets (See Fitt’s Law)
  • Scratch demands the use of drag and drop. This is frustrating for normal users, let alone children, and really hard with some laptop touchpads or trackpoints.
  • Update: Scratch requires the child to understand the difference between left-click and right-click. Right-click brings up a help context menu, which just causes confusion.
  • Update: The tiny commands have tiny text edit boxes. Children have a high chance of clicking it instead of clicking the command block itself. This problem could be partly solved by accepting drags on the edit box.
  • Scratch requires the child to double-click (see below).
  • The commands require the children to read, but a subset of the commands could instead be respresented by icons. The words are particularly hard for beginner readers because they are written in such a tiny font.
  • To get started with scratch, you need to figure out that you need to double-click on the first program command to actually start your program. There is no simple run button. You can cause your program to be run by clicking the green Flag button, but that’s something you need to put in your program.
  • When you try to move a command around in the program, it moves the command and all subsequent commands, as a group. So moving just one command means moving stuff around and then moving some of the stuff back to where you started.
  • Your program moves the Scratch cat sprite around the canvas, but that canvas is tiny, and the sprite can move off screen. The only way I found to get it back was to double-click the set-x-to and set-y-to program commands. I can figure that out, but beginners will not.
  • When you’ve drawn all over your canvas, the only way to wipe it is to go to the Pen set of commands and double-click the Clear command.
  • The sprite moves far too fast for the child to understand the relationship between the commands and the motion, without someone explaining it. If the command says move-10-steps then I’d expect the sprite to visibly move 10 steps. Advanced users might prefer it to be faster and smoother, but the default should make things obvious.

There are some other strange things in the UI which are probably a side-effect of its eccentric (Smalltalk) implementation.

  • Scratch has a menu (well, an icon-menu) for changing its language, instead of just using the user’s regular language.
  • None of the UI elements (menus, tabs, buttons, file chooser dialog, etc) match other standard applications on the system.

I think Scratch could be really popular with younger kids if it ran on Android with a touch interface and with less text, maybe as a simpler version. But the developers don’t seem to have any interest in that – they seem to be working on a Flash-based version of Scratch for the web, which is unlikely to work well with touchscreens, even if they can get Flash to work on Android and iPhone (they won’t). And I have no interest in hacking on Smalltalk. There seem to be various programming-language-based forks of at least the underlying engine, but none seem to be successful.