Stuart Keith - Developer

I am a developer specialising in:

I am comfortable with the command line. I am a fast learner and always looking for opportunities to develop my skills and explore new technologies and methodologies.

Please feel free to get in touch, and peruse my GitHub account.

Personal Projects

Web Audio Sequencer

  • JavaScript (jQuery, Backbone.js, RequireJS, Web Audio API, canvas)
  • Python (glue)
  • HTML (HTML5)
  • CSS (CSS3, Sass)

Web Audio Sequencer is an HTML5 web application used to compose music. It sources sounds from external websites, such as FreeSound and SoundCloud, using their APIs.

It uses the Web Audio API to play the sounds, and a makefile to combine assets for production (Sass CSS files, JavaScript, and images).

I later made it compatible with touch devices (such as iPad) by dynamically transforming mouse events to touch events via an extended Backbone view.

For more information, see the GitHub repository's README.


  • ActionScript (Flex 4, Robotlegs)
  • JavaScript (jQuery, Backbone.js, SWFObject)
  • HTML (HTML5)
  • CSS (CSS3, Sass)
  • Python (Django, Tastypie)

loopmesh is a web application used to compose a repeating musical sequence ('loop') using sounds recorded, uploaded, or chosen from a list of sounds previously uploaded by other users.

The user can then submit the loop to the server (via a REST API). The user can also edit an existing loop and save their changes into a new version.

The backend is written in Django, using Tastypie for the REST API. The frontend is HTML and Flash. The Flash part uses Flex with custom components and skins and Robotlegs to help organise the code.

SoundCloud Recorder

  • ActionScript (Robotlegs, MinimalComps)
  • JavaScript (localStorage)
  • HTML
  • CSS

SoundCloud Recorder is a Flash application. It allows the user to record a sound using their microphone. The user may then listen to the sound, re-record another sound, or upload the sound to SoundCloud.

It utilises SoundCloud's API for authorisation and uploading, and stores the temporary authentication token (using localStorage) to avoid re-authorisation each visit.

For more information, see the GitHub repository's README.