Projectional+Editing+Features

Place suggested names, descriptions and citations of relevant projects and articles here.

Scratch, a free programming language intended for the use of children has grown in popularity in recent years. The great thing about the language is that it uses both text and visual elements for programming. Users are able to drag text-based objects that have code information within them in order to make a change to an object, usually a character, or to design or upload an entirely new character to work with. The language is great in the sense that it's easy to follow and understand, it has a good amount of documentation, and is easily accessible over the web. Scratch also has a fairly large online community of users. The language has been brought into the education system, and has done so to broaden the amount of children expose to programming. The language is meant to get children learning about creative building, basic coding, and design.
 * Areas of Exploration: Visual Live Coding Languages**

Scheme bricks is another visual coding language which uses a layering of different coloured rectangles to work with the Scheme programming language. You can add and remove layers, as well as drag and replace layers. One thing that becomes rather difficult in live coding with the language is the ability to keep track of various tasks and instruments that are running at the same time. Scheme bricks has a funny way of keeping track of things that are playing, which is by lighting them up in white as they play. It's a great way to keep audiences entertained with live coded visuals, and is also an interesting take on keeping tasks organized.

The Threnoscope is an 8 channel system which visualizes harmonics (drone music). Any type of music can be played with the system, but its designed to encourage a certain kind of thinking, where tuning, harmonics, scales, and slow movements are greatly emphasized. In the visual representation of the Threnoscope are a series of lines, crossing lines on the interface represents the speaker set up (8 triangular shapes, cut up like a pie). The series of circles represent the harmonics of the note being played. What is particularly unique in this kind of design is the way layers of harmonics work, and move slowly together to create a kind of beautiful visual representation of a score.

Texture is a visualization of Alex Mclean's Tidal programming language. Which is a sample based live coding language built upon Haskell. Texture is exactly what it's name articulates, it uses textured lines to link Tidal's programming text together. Tidal uses small pieces of code to simplify its syntax for users, and Texture links these different syntax dynamics together using draggle lines with moving texture patterns.

Gibber is a coding environment that ruins within the browser, and the audio component is also a standalone JavaScript library. Gibber was designed to present high level abstraction to enable users to accomplish complex tasks simply, all while staying within the syntax of JavaScript. Unlike many JS audio libraries, Gibber comes with music theory built-in as a core component so that users can easily create beats and melodies. Gibber also provides 2D, 3D and shader programming capability.

Atom has become a popular text editor and it has some useful projectional qualities. It helps fill in gaps for users by placing closing brackets, and connecting types together, just to name a few of its projectional features. Brackets, another free text editor also share similar features to Atom, including "filling in" code for the user by estimating what they intend (i.e. for example, connecting an HTML page to a CSS script based on the title of the page).
 * Text Editing Interfaces**

//Maximus of Information// - Green points out the psychology of programming interfaces and highlights two maxims of information representation: firstly, that “every notation highlights some kinds of information at the expense of obscuring other kinds” (6). Simply meaning, that not everything can be highlighted or observed at once in a program, things usually follow a set path of action, especially in a rule-based language. The second maxim contends that “when seeking information, there must be a cognitive fit between the mental representation and the external representation” (6). Simply meaning, that the mental representation of the programming language needs to relate to the actual physical representation of the language.
 * Important Terminology (As Addressed by Green's Cognitive Dimensions)**

//Cognitive Fit// - “One way to improve the ‘cognitive fit’ is to include cues to improve the accessibility of information. So textual languages may include perceptual cues, such as indenting or choice of typeface, or symbolic cues. Alternatively, the environment may offer comprehension aids, such as software visualization tools, which present their information in a structure that highlights what the programmer wants to know” (9).

//Error-proneness// - “Textual programming languages contain a number of syntactic design features that help slips to occur or make them hard to find once they have occurred. Merely having to type long identifiers is a source of mistypings, obviously enough, and early language designs had no facilities for catching these; until the declaration was invented, new identifiers were declared by being used (as they still are in some languages). In consequence there are well-known war-stories recounting how a single mistyping in a Fortran, Basic or Prolog program caused untold disasters long after the program was thought to be fully debugged” (23).

//Role-expressiveness// - “In the folklore of programming it is widely agreed that some programming languages are hard to read; unfortunately, which ones are hard is not so widely agreed. The dimension of role-expressiveness is intended to describe how easy it is to answer the question ‘what is this bit for?’” (31).


 * Sources of Reference**

Green, T. R. G., and M. Petre. (1996). "Usability Analysis of Visual Programming Environments: a ‘cognitive dimensions’ framework." In Journals of Visual Languagesand Computing, 7(2): 131-174.

Magnusson, T. (2014). “Improvising with Threnoscope: Integrating Code, Hardware, GUI, Network, and Graphic Scores.” In Proceedings of the International Conference on New Interfaces for Musical Expression 2014.

Magnusson, T. (2013). "The Threnoscope: A Musical Work for Live Coding Performance." In Proceedings of the International Conference on Software Engineering 2013.

Magnusson, T. (2013). "The Threnoscope - A demo session." @https://vimeo.com/63335988

Maloney, J., Resnick, M., Rusk, N., Silverman, B., & Eastmond, J. (2010). The Scratch Programming Language and Environment. In ACM Transactions on Computing Education, 10(4).

McLean, A. "Alex McLean: Making music with texture." @http://yaxu.org/category/texture/

Roberts, C. "Gibber: Creative Coding for JavaScript." http://charlie-roberts.com/gibber/about-gibber/

Roberts, C., Juchera-Morin, J. (2012). "Gibber: Live Coding Audio in the Browser." In Proceedings the International Computer Music Conference 2012.

Sanchez, J. (2013). "SLUB - Live coding." @https://vimeo.com/62615513