Projects In Progress

  • tomsmith 

This is a collection of the bits I’m currently working on. They are a mix of tools, Cows, Optical Illusions with text, Camera works, and audio experiements. With most of them source code is easily available. Other half-finished related projects are also available at and of course on my Instagram page.



Mondrian Fragments – or Watmap.js, getting the average colour and brightness of chopped up pieces of an image. I already have code that “makes things out of other things”. Here is a former UK MP made from pigs’ ears, but the process is slow and I want to make this so that it does it on-the-fly, perhaps from scraped newspaper images.

Blackout Poetry Generator

The Helpful Text Editor

Throws suggestions at you whilst you type. Not sure if these are suggestions or distractions but I like the effect. Try typing with it. This sort of tool makes you realise the endless possibilities that present themselves as soon as you start writing anything. Even a shopping list.

The Blackout Poem Maker

This takes some text and turns them into pseudo-physical objects with the Matter.js library. Although not working at the moment. I want to create a text editor that puts words, like blocks on screen based on text input. Then clicking any of the words will make them disappear, creating a reductive means of creating your own poem from someone else’s text.

Zine Machine

This is tool for someone to draw some simple doodles, that organised and rotated so that it can be printed off on an A4 sheet, and carefully folded to create a simple zine.

This is working towards a vaguely activist approach, creating cool zines that can be dropped into public places.

Markov and Illusion Texts

I’m attempting to make text that “won’t sit still” similar to Akiyoshi Kitaoka’s work here based on recent experiences. I haven’t quite got it working yet, but when it works, the text really slides around. I am having to create code that “lays out text” in quite a sophisticated way, so that I can know whether a word will fit into an upcoming space, and if not, then move down onto the next line. Having wanted since forever to complete a line of Kruger knock-offs, I really want to get this working and see where it leads.

I want this to be good enough that I can focus on what the text says, and then have a bespoke rendering engine to make them for me.

Finally got the optical illusion to wobble, well, for me anyway…

Kruger-esque Text works – Just sized text

Audio Soundscapes

Music Of The Trees (Latest)

This is going to be a mobile app soundscape that alters as you walk around the University of York campus as the trees species you are closest to changes.

Mars (The God Of War) Keyboard

Display and play sections of an audio file. I am aiming to take random audio data, such as Boris waffling on, and turn it into “a beat” or a drum track, or morse, or another form of encoding data. Something, still recognisable is presented as something else, vaguely recognisable.

And the BoJo keyboard:

Sentence to beat/visualisation

Audio TSNE

Onsets, or similar sounds, found and clustered by similarity. These audio fragments are created with audioTSNE python files. Using AI of sorts to maybe make the instruments for a soundFont. So far I haven’t managed to get this so that the samples are long enough… and “play” like a bizarre piano.


The Stupid Cursor

A huge cursor and a small screen. This is based on one of the students’ work on the Anti-Rom project which to this day still haunts me as a minimalist masterpiece. An honour to work with them an Andy C.

Dying Cursor

Frogger Goes To Tiannamen

The Road Home

Adding depth maps to photographs to animate them. This is related to the optical illusions above. I made a series of visceral images from a video I made from an ambulance window (of trees, not guts and stuff) and want to be able to make them subtly breathe. This is a start.

Painting Apps

Bacterial Drawings

I love the idea of creating something that is both a drawing, and recognisable as such, but that it has a “life of its own” and goes on to develop, or degrade, or grow in ways you couldn’t have achieved with draughtsmanship.

Simple Drawing Apps

Ink painter

And also an Almost Sparkler shader-based drawing app.

Simple Red Blue Painting (with Firebase)


With creepy bugs – again a painting that “comes to life”.


Just painting in my particular red and blue.

Rotating Canvas Painting app

A creative coding trope, of “drawing with text” and concrete poetry yet still worth exploring. Here I’ve drawn Baloo with the lyrics of King of the Swingers, and created a simple interface so you can add your own choice. The point being that once you have the trope and ability to do this sort of thing, what will you draw? What text will you use as your pigment? That for me is where the real fun is.

Random Stuff

Screen Capture Node project – As with most Node projects they aren’t running but are just here to remind me that I’ve figured this stuff out and could use these abilities as and when I need to, and to remind myself that I either need to learn how to use the Glitch or Heroku hosting services.

Video Effects – Serious.js is a powerful collection of GLSL-based video effects that I may be able to integrate into a project for added budget va-va-voom!

Shark – Get Mirror’s Images and Mask Node project – This project grabs newspaper images and automatically processes them.


Tree Shapes – roses (above) – simply playing with textual analysis to generate shapes – using random data and masks to create images Circle packing.


Betula Anaglyph


Dot Dash Morse

Wish Star

Forgive Them Morse



– animation on top of a YouTube video

Boris Says…

The Boris is is an example of fitting text to a box size like this … which is my attempt to auto-Krugerize text. Oh and it highlights just some of the dangerous bile this idiot spouts.


Simple Waves WebGL Waves

Pavement Wave – video masking example

Cows and Sheep

Horizontal Glitching Cow

Really Glitching Cow


Swirly Cows

Concentric Cow

Slitscan Sheep

Sheep Slitscan SRl2S_2To Vertical and Horizontal slitscan.

Slitscan Sheep Carpet Sheep slit-scan to carpet. and another

Webcam: Displacement Cows – Beasts of the Fields

Circular Masks

and cows

Negative Elephants Negative elephants slow fade example. Or here and


-simple fading image example and text. I made the images using RunwayML tool. And the same with the ChimpElephants

The Golden Section


Medusa’s Selfie and Spark Shader Example

A simple example of integrating a GLSL shader.


Here is DANGER! with added wobble

Face Lightning

Angry Mob(s)

Image used as a texture in a 3D world.

3D Angry Plane Mob: and distribution (needs work)

To Do: Webcam Live NEWS

This Machine Makes Fascists

An example of finding a pixel colour and sprouting a tree on it, radially, which ends looking very viceral. Wobbly blob.

My Problem With Teaching To Code

  • tomsmith 

I often come across people who at some point, got the bug for coding (sorry) and signed up to LEARN HOW TO CODE, and then spent weeks learning Python. And all of them expressed a disappointment that it had been really difficult and at the end of the day it hadn’t been worth it.

The thing is, I kind of think it’s Python’s fault. Whilst I’m a massive fan of Python, and spent rougly 14 years where it was a primary tool, and the story went, back in the day that “Google was written in Python, you know”, it’s not a fun tool, it’s an astonishingly capable programming language.

Python is not the tool to teach coding

I have had lots of ridiculously positive feedback from teaching tools with which you can do fun things fast. I tried to write a game in PyGame once. That was a hard year.

For example, with (Livecode Community Edition) you can quickly create a multimedia adventure game and compile it to an .apk file for Android. Amazing!

With Thunkable, which uses Scratch code blocks, we create an app that immediately runs on the students’ phone that speaks whatever you type. Great fun!

With p5js within the hour we create ridiculously fun animations and visualisations, whilst student stealth-learn Javascript.

These are sorts of tools people should be learning when “learning to code”.

With each of them you learn the fundamentals of coding, variable, control structures, repeat loops, lists etc… BUT the results are completely immediate and fun!

There’s an interesting discussion about the whole area of “teaching to code” vs. “teaching to Adobe” which for me boils down to helping students to see the possibilities rather than only the outcomes and deliverables, or end product.

More later…

My Problem With Interactive Fiction

  • tomsmith 

I’m planning to teach a session on Twine soon. Draft here.

Don’t get me wrong, I’m a huge fan of hypertext, but when it comes into Interactive Fiction, I both love it (conceptually darling) but also, have these issues.

Presentation. The fonts, font size and screen layout are awful. They need to be Kindlized. Often just hard to read. Reading. I link to the Temple of NO because it was a breath of fresh air in this regard. It felt both subversive (of the genre) and stylish at the same time.

There is always the nagging feeling of “have you read it all?” or “How far through this am I?” because it breaks the physical contact of a book. I don’t like the loss of control of time but love the loss of control in narrative. It could end at any point

And whilst the uneccesary diversion is a fantastic thing in itself, a weird island of experience, for some reason, I feel like I’m not getting anywhere. Maybe that’s just something I need to get over?

Temple of No Spoiler alert… “Er, yeah…. psshh, pff, pff!”

There is a fear of losing one’s place or stare, and that feeling that you haven’t won somehow and the idiocy of “getting a different outcome” and therefore wanting or needing to play the game again to get a different outcome, or a better outcome. What’s that all about?

But then. I have a problem with fiction. It’s all made up you know.

When I watched Bandersnatch, to be honest I wasn’t in the mood. I didn’t like having to click all the time, when sometimes I want something to just wash over me. I stopped half way through, although where half way is moot, and watched that Ennio Morricone/Tarrantino film.

Then, all interactive narrative has to deal with the distractions of the internet. See Netflix. I wonder what Twine on a Kindle is like?

What I Like About Interactive Narrative

In the case of Temple of NO, it was the playing with form and the humour.

Authors make people DO things. The inverse of the clicking thing. I actually sang along with a song. I clapped. I’m not sure how much sentience and agency the media I am interacting with has. Can it hear me? Can it see me? Can it rifle through my internet history and send for help? I don’t want to give away any spoilers but this is an idea I want to play with myself.

With I really enjoyed what the author did. Go try it. I’ve always wanted to time travel and this must be what it is like.

I have always been a fan of dada and the disclocatative. I love Tristram Shandy, Monty Python, Q8, Vic Reeves Big Night Out. Personally, I am naturally distracted, distractable and passionate. I get lost in thought rabbit-worm-holes every second. Maybe this tendency makes interactive narrative games a challenge, not that they’re too weird, but they’re too close to home.

Despite being hyper since Ted Nelson’s Intertwingularity, the rise of indie games and interactive narrative is all new to me, and it’s clear I have a lot to learn.

So here goes.

Creativity is like Marmite

  • tomsmith 

Can You Teach Creativity? Of course you can’t, but let’s do it anyway.

The thing is, creativity is like Marmite, but not in the “you either love it or hate it way“. No, creativity is exactly like Marmite because it a byproduct of some other completely unrelated thing. In Marmite’s case, that thing is “beer” or the brewing industry. Marmite is like PostIt notes, which were the product of researchers at 3M trying to develop the world’s strongest glue and accidentally developed the weakest.

When it comes to creativity, it is a byproduct of doing and being.

By that I mean, if you be, then you are in a context. And if you do, something will come out.

Do-be-do-be-do… lalalala… do-be-do-be-do…. etc

Now, like the Marmite factory, they don’t just randomly select sludge and waste from the brewing industry, although to be fair, it might be said that that was how Marmite was invented, or is it discovered? And so it is with creativity. It helps if the raw material you feed into this over-reaching metaphor has a quality that will result in something worth spreading on toast, or indeed engaging with in any sense.

The being part, I feel, is important. And by this I mean that creativity, unlike Marmite, is really easy. You can start being creative and not stop quite easily, but I don’t recommend this as an approach, although it is fun. What being brings to the table is a context in which to do.

At this point I get nervous, because that sounds like I’m advocating an almost design ethic to creativity, in which the context provide the problem that you then solve with creativity. This isn’t what I mean at all, but there are elements of it in there. Having suffered, and although I say, suffer, I mean, enjoyed, lengthy periods of mania in which every stroke of an ultraviolet pen was “genius at work”, I don’t advocate this as a way of working, because whilst it might be true, it doesn’t sit well with that most evil of beasts “the real world”.

The real world couldn’t give a fuck, and probably rightly so, and so, a better way of fostering creativity, in my opinion is to give yourself over to certain ways of being, totally. Imagine being Kate Bush singing Wuthering Heights in a Marmite factory, but simultaneously foster an inner critic who has an eye on your rent and the fact that you’ve had a verbal warning about not wearing a hair net.

Here we are with a paradox about what creativity even is, because creativity is only creative after the fact, after something has been created that was “any good”. If something is valued, then the creative process is worth it, but, the cliché of the starving artist isn’t a cliché for nothing.

If your creations aren’t valued, welcome to club. It doesn’t mean they aren’t creative, it’s just being “ahead of your time”, or born without the right connections isn’t a career because, like medieval times, the “winners” are the ones that write the history, or have it written about them. If I had a pound for every thrid rate artist who found a gallery, and a market for their work, I’d be a millionairre. Assuming “art” is the creativity game, which it really, really, isn’t, it does seem that creativity is, as well a being hard to define, is definitely scewed, not just in the art world towards almost random accolades for very average work.

Or do I need to get over myself?

So rather than fretting about what creativity is, or how you foster it, you simply have to do. And by do, I mean you don’t do creativity, that is a nonsense. You simply engage with something as you. And it really doesn’t matter what that is, and it will probably be more successful if you find something that really resonates with you as person, and if the thing you are doing also has that tingle about it.

It will also help if you engage with lots of things, with lots of people. An openness is essential, and whilst you can’t do everything (take a moment to accept that), you will benefit if you are open. Being open often involves feeling out of your depth and a whole heap of “Why the fuck am I doing this?”. Trust me, it will be time well spent.

I still haven’t got to the good bit. The DO part.

That is easy in many ways. You may have lots of avenues you want to walk down, but over the centuries many creatives have outlined both reasons for an means to develop creativity, and the results I’m afraid are GUARANTEED.

The only part of selling the notion that “creativity is easy” that I feel uncomfortable about is that it analygous to a gym membership, which is guaranteed to make you buffer, but you’ve got to turn up and put the work in. And by putting the work in I might mean, taking things out.

“Putting the work in” in creative terms is easy to qualitify:

  • You are interested
  • You make stuff
  • You are curious
  • You collect stuff
  • You prune your collection
  • You reflect on all of this

And there are shed loads of beautiful creativity methodologies, including:

  • Automatic Writing
  • Blackout Poetry
  • Montaging
  • The Cut-up Method
  • Introducing Randomness – like Eno’s Oblique Strategies
  • Creative Prompts

All of the above are great fun, look ’em up and give them a whirl. Even better, why not try them and add your own twist.

I love using both physical real world creativity techniques. Why not get a pack of Story Cubes and write something?

… but I also like to use digital tools to get things started, adding a “bit of random” like…

Generate N Words: 

Generate Three Nouns:

William S. Burroughs and David Bowie are both famed for using the Cut-Up method to help bring ideas to life.

Get a notepad, or a magazine and a pair of scissors, or again, use digital equivalents such as…

The Cut-up Machine

The N+7 Machine progressively mushes your text. Or maybe a text you’ve found.

Text Mixing Desk

Not that I fully understand them, but Markov Chains are an oft used programming algorithm to generate text from a body, or corpus of text.

Whether you understand them or not, there are some interesting tools that may help get started writing such as…

Poetry Generators

Automatically generated lyrics based on a database of all lyrics

Character Generators

You can even use Artificial Intelligence to help you with your writing. Using the tool below, you start writing and AI finishes your sentence or paragraph. Can you adapt to what it creates?

Write With AI Transformer

I used Transformer to start writing, and although quirky it did help me send this story about a snowflake in directions I wouldn’t have considered.

Once upon a time there was a tree in a forest who felt all alone.

Or did he? He wasn't sure what he felt. 
It was either that h
e was there, and he didn't know it,  or he wasn't and didn't care about it. He couldn't make up his mind. partly because he didn't know if it was his to make up, or not.

Whilst he was busy pondering these questions a passing snowflake landed on one of his branches.

"Hey get out of the way, I'm try to fall over here!" shouted the little snowflake.

"What?" said the tree, not sure of where the sound had come from.

"I'm trying to get down to the snow down there" said the snowflake, pointing towards the fresh snowfall below.

A little confused the tree said "I don't want to be part of your conspiracy theory. What has any of this got to do with me?"  The tree had been watching too many YouTube videos for his own good, he thought. Or did he? He wasn't sure.

 "Yes I understand." the snowflake grumbled.... "I know you didn't mean it, but I'm stuck here and can you shake your branch a bit?"  The tree shook his head, then thinking better of it, shook his branches too, tutting under his breath.

 And the snowflake thought back to a dream , of him being a little water droplet and how at times all the other water droplets would become him and he'd become a bigger drip. They'd be him and he'd be them. Although thinking about it, some were probably girls. Why hadn't he realised this at the time he wondered.

"Thanks old fella" shouted the snowflake as he tumbled free, realising that probably wasn't the best term to have used in that situation. 

The tree huffed and dozens more snowflakes flurried out from his needles. 

When the snowflake landed,  he squished into all the other snowflakes and felt very uncomfortable. 
"Can you budge up a bit?" he asked the snowflake next to him.
"What? And risk damaging my crystalline uniqueness? Sod off!" 
And so, our snowflake, grunted and literally tried to "get with the drift" of things, as fellow flakes started landing on his head.

All around him all he could hear was "Ooof!" sounds, and snowflakes felt other snowflakes landing on them.

It all was a bit of let down and not what he'd expected. Not at all.   He'd probably have had a better staying up the cloud he thought, I mean, up there did used to long for the quiet life and get "cloud sick" but at least he had a bit of space to himself.

The snowflake found himself getting angrier and angrier about everything.

OK. It’s not great, but I only started writing anything so I could get a screenshot of something being written in the tool. I’m not a writer, as you can see, but the way it sort of cajoles in a rubbish way, really helps. The effect is hard to describe.

Educational p5js projects

  • tomsmith 

Just some bits and bobs that are useful for learning p5js, or bits that I might use later.

Image Classification and web cam. What is the web cam seeing?

Colour-tracking of video file.

Video pixel editing:

SLOGANS images generator

Text to Lightning

Markov Chat App:

Strobes Expanding squares. Contrasting colours.


Geo YouTube

An example of displaying YouTube videos, in the background, and fired off by the user’s location (mobile) – unfinished.

Drag-n-drop Image Example (that works) .

The p5js documented examples don’t work.


Example of zooming faded images.

Tory Leadership

This is an example of tinting and fading between images. It also shows how to load a .csv file and read its data/images.

Blending between images, loading CSV of image URLs.

Chicken Kaleidoscope

An example of “chopping shapes” from images and then rotating them. Video shape kaleidoscope.

And Devil Woman is an example of taking the web-cam and creating a cheesy Cliff Richard effect.

Eyes and Teeth Webcam

Using face recognition and a web camera.

Audio Experiments

Simple FFT Visualisation

Working with audio and audio visualisations

Working with audio synthesis.

Animated Gifs

This is just an example of how to use one. Using an Animated Gif in p5js requires using a library. See the index.html file to see how to add it. You can do it by creating a DOM image, but that’s another story… I need lots of these sorts of examples for when/if I work with kids. I have just discovered the p5.Play.js library that makes game creation and interaction ridiculously easy. I need to explore that more.


A very simple automatic synth sounds… Sounds like Eno. Part of the problem I have with audio synthesis, Tone.js and the like is that a lot of the time I don’t know how to make a “nice sound”. Why aren’t there tools that let me shape the sound, and then copy-and-paste the code.

Black and white cow shaped noise – slow but maybe useful to make Friesians or maps later.

Example Falling Boxes – not finished/started.

More Audio Experiments

Simple Tone.js experiment? Working? Nope

Simple Tone example – not there…

Very simple Tone.js another

Solfa Cipher
Turns text into mid, music and other things, configurable.

SOUNDFONTS Nice + standard p5js!

All Trees

Something -Basic Firebase projects

Text to speech – working?

Falling letter blocks

Slogans with Firebase – Markov experimentation taking commercial and poltical slogans scraped from Wikipedia and generating new ones.

Camera as dots How to draw a spiral.

Nexus UI



Simple Posenet Example

Text To Points

Disunion Jack