Running creative coding workshops

Someone from Ada’s List recently asked for  tips on running creative coding workshops for girls. I’ve run a few, so I put together some thoughts.

Workshop plan:

  1. Talk very briefly but enthusiastically at the start about why you love coding (I repeatedly talk about coding as creative problem solving, gives me power to make stuff), show a few simple inspiring examples (maybe something they are going to program themselves, plus something you’ve made – I talk about my cake orchestra :)). I’d also mention/show some more role model/s briefly e.g. Margaret Hamilton (moon software!). But not too much talking! Hands dirty fast :).
  2. Give them a series of practical hands-on tasks that they can replicate/build on at home – I tend to use Processing but you might prefer Scratch
  3. Integrate the students in the tasks directly (e.g. they upload an image of themselves and then gltich it in code; use the webcam; find their own image to use in a game)
  4. Emphasise that it’s OK to get it wrong. I tend to show them my code, then make a mistake / enter some crazy values / break it in some way, and show them how to fix it. Encourage them to break things in interesting ways. Have a printed set of support docs by each computer, including simple FAQs.
  5. Cater for lots of levels. For each task, I make a basic starting example that anyone should be able to run just with copy and paste, but suggest multiple increasingly difficult extensions (including open-ended ones) for those who the task clicks with.
  6. Get them to work in small groups (ideally 2 people) so they can pair-program (and mention that it’s a real thing in coding jobs)
  7. Have some extra helpers (ideally, other female coders) who go round and engage directly with students, instead of just one person talking from the front. If that’s not possible, make sure you  go round and engage one-on-one. Helpers shouldn’t take over the students’ keyboard/mouse or stand over them – get physically on their level and ask them to do the keyboard-driving.
  8. Give them a take-home resource so that they can continue at home (e.g. links to resources, Processing downloaded on a USB drive, copy of their game/whatever).
  9. Do a test run if possible to generate FAQs and a rough idea of how long each task might take. Pref with target audience but I realise most people don’t have spare kids hanging about to test stuff out on – any non-coders in your organisation will do.
  10. Rough structure
    1. have a starter / early bird task open and ready for people to start playing with when they arrive – deals with the awkward waiting-for-something-to-happen bits.
    2. then brief intro to outline what you’re going to do and what they will be doing
    3. then a series of tasks every 10 mins or so so that you can move on – gives people that didn’t like a particular exercise something else to do! (but if a group wants to carry on with a previous task that’s also fine :))
    4. encourage them to share, but don’t force them, at the task changovers. I try to highlight to the group the interesting things I’d seen people do, but don’t force them to stand up and talk.
    5. brief overall wrap up at the end.


Some Processing creative coding workshop tasks

Overall, enjoy :).

Pervasive e-receipts: handy or ominous tracking?

When visiting San Jose for the CHI conference last year, I noticed that coffee shops and cafes tend to issue only e-receipts: tap your details into a little screen, and your receipt gets emailed to you.

For the traveller who has to submit their expenses, and anyone who’s ever mislaid an Important Paper from a stack of random bits of paper (*cough*), this seems like a great idea. Technology can easily support purchase-tracking, it’s more eco-friendly, stores are more accountable. From the seller point of view, they get the opportunity to get some lightweight user feedback.

Screenshot of "how was your experience" with a choice of a smiley face or an unhappy face

Lightweight email feedback

What’s the problem?

Sadly, it seems that once again technology is being used in a “dark pattern”: piggybacking a minor benefit to the customer with much greater benefits to the seller. See store loyalty cards, for example.

The problem is the asymmetry of information the system creates. I may want to print out receipts for expense claims, and have the security of knowing that my email can store receipts in case of problems so I have an archived proof of purchase. I may even want to track my own spending, but the reality is I probably won’t. The seller, however, is tracking my spending and trying to figure out patterns in what I buy and when.

How do you use my data?

The problem is pervasive: as well as e-receipts in shops, I have several contactless travel cards (Oyster, Swift) because it’s cheaper and way more convenient than searching for actual exact bits of cash (I’m looking at you, Birmingham buses, I’m looking at you). I am vaguely aware that Oyster can therefore track me across London; I have no idea what Swift do since it’s still a bit clunky but I imagine they would very much like to track me.

A key issue is the lack of clarity over the purpose and extent of tracking. Freedom of Information requests don’t always make it clear. Oyster records are discarded after 8 weeks, but may or may not be handed over to the policy. It’s not clear what they do with the data, although they are concerned about infringing privacy … And as The Guardian points out, larger retailers can use the info they gather to track your movements. The holy grail from The Guardian article seems to be seamless integration between online and real-life shops, so they can use the tracking to identify what you’ve been browsing to present it to you. While that might in some circumstances be useful – finding items in real-life stores is irritatingly difficult – who wants their idle browsing history to be freely available to the tablet-wielding shop assistant approaching you?

Marketers know more about your behaviour than you do

The bottom line is that for-profit organisations have a bottom line. They exist to maximise profits, and understanding more about consumer habits and triggers helps them to set up the conditions that make purchases more likely. If consumers are not aware of the triggers – and habits are part of automatic behaviours that can be triggered without attracting conscious awareness- they are more at the mercy of the marketeers. We need clarity around how the data is being used, and the opportunity to opt out of that usage even if we accept the email receipt.

At the very least, if someone is mining my data to discover my behaviour patterns, I’d like to know what they are, to give me the choice to try and change them.

Fat finger problem

Plus it’s luddite and error-prone to have to laboriously spell out your email address while waitFingerprinting for an assistant to type it in. Typos in email addresses mean there is no traceability: how can I return a faulty item if ‘pinfec”s got my receipt? Shops need a rapid-entry system for identifying people. We are likely to end up with fingerprint payments and identifications: it’s super easy, hard to lose (I’d like to be able to start my car or unlock my bike with my fingerprint please – imagine how easy that makes a trip to the beach) and there’s a lot of precedent in India so the tech is in place.

Good for democracy because people can uniquely identify themselves to vote without requiring paperwork or complex registration structures. Not so good for privacy: it’s way harder to opt out or claim you don’t have a loyalty card if the shop assistant can see your fingers …


Anticipatory Banking: can FinTech feed forward?

Despite the clamour about FinTech innovation, there’s still a gap in the market for fully-fledged Anticipatory Banking: banking and financial services that accurately predict your money flows and nudges you to act to minimise disruption. For example, if my bank can accurately estimate that I’m likely to go into the red in the near future , I’d like a nudge to suggest I transfer some £ to my current account. The nudge should contain simple tools to customise the suggested action, and a “go” button that enables me to seamlessly authorise the suggestion.

Is this too much to ask? Although traditional banks are starting to provide feedback on spending (finally! what is this, 1997 again?) , I am a lazy customer. I don’t want to have to download my data and pick through it to figure out my spending trends. I don’t even want to have to fiddle with data dashboards either, particularly not on a mobile device. I want feedforward, not feedback: I want my bank to do my smart thinking for me, and anticipate when I might need to act. And make it super easy to act and to tweak the suggestions.

The anticipatory approach needs to be context-aware. My bank will know what money will definitely be leaving my account in the near future (direct debits etc..) and can use the historical data it has on me, plus contextual data like the season, weather and working pattern to predict a probable spend.

In the future, given that FinTech is experimenting with psychometric testing, I’d like the context-awareness to include physiological monitoring. I may well be unaware of any links between my physiological or psychometric markers and my spending. It would be helpful if my banking system can both figure it out and transparently show me how it’s creating its predictions. My bank could then warn me when, say, my stress levels are high and I’m at risk of major spending, without me having to laboriously set up if-then rules, either (if I am stressed, then I might spend more). And while I’m comfortable having a faceless algorithm knowing my secret spending habits, I’ll want a cast-iron guarantee that my bank isn’t going to share them, even with its own staff.

The first problem with this approach is that the needs of the user may conflict with the bottom-line aims of the bank: customers that accidentally go overdrawn make them money, so helping users avoid this may hurt profits. This functonality will only emerge if the profit from new users attracted by shiny anticipatory banking support can offset the lost profits from reducing money management-slips.

Secondly, there’s an habituation problem: I might get so used to my bank doing all my money-related thinking for me, that I no longer bother to check that it has my best interests at heart (hint: it doesn’t) and blitheley click “go” without really thinking it through. Good for the bank, possibly not so good for me.

Thirdly, there’s an attribution problem: if I follow the bank’s advice, and still lose money, who is actually responsible, and who should pay?

Looks like new FinTech services Starling and Tandem are moving in this direction, and have raised a lot of money. It will be interesting to see how their anticipatory services pan out on launch and over the longer term. If they get any serious customer traction, their innovations will leak into the more traditional banks, probably via the hubs/accelerators that the old-schoolers are using to overcome their internal barriers to innovation – see Lloyds, Barclays, Kickstart etc..

Zombies, Cakes & Goddam People

On Saturday, I gave a talk at the University of Birmingham Women in Tech conference, based on 3 key quotes.

Any sufficiently advanced technology is indistinguishable from magic
Arthur C. Clarke

If it weren’t for the people, the god-damn people … always getting tangled up in the machinery. If it weren’t for them, the world would be an engineer’s paradise.
Kurt Vonnegut, Player Piano

I have in me both north and south polarities;
… the deepest Analysis, with brilliant Imagination forever playing on the surface of those grave & fathomless depths.
Ada Lovelace, 1844 (Letter to Michael Faraday)