Semicolon - Creative Project Proposal Lucio Cuddeford, Joshua Akinsola, Nikolay Nikolov & Nicholas Camero Project Description The aim for this project will be to create a web-based mobile code editor/IDE1 for Processing2 that adapts to the capabilities of mobile devices and is friendly to people new to programming and Processing. Ideally, it will be a popular learning tool for newcomers as well as a productive playground to more experienced coders. On the surface it would be a mobile-friendly code editor making use of touch gestures for faster code generation and manipulation (for example generating common code - for loops, if statements, drawing functions, dragging numbers with fingers, tapping to show meaning of cryptic parameters and others) but underneath it would provide useful explanation of simple programming, graphical and Processing concepts that would onboard inexperienced users helping them grasp the basics easily and pushing them into experimenting. Which is more ore less one of the core values of the Processing language and community, so in that sense our IDE and Fig.1 Explanation of shapes the language are a close to perfect fit. Additionally, we would provide plenty of simple examples that users can learn from, copy, mix and match. The web nature of our app will mean we can render Processing code as fast as we show the actual code, so unlike the Processing desktop IDE where you look at examples in a text/hierarchical view (and takes an annoying amount of time to open an example project and run it), in Semicolon you could potentially browse at live-rendered example sketches and easily and quickly pick ones you like, or edit them on the fly to see what they are capable of. As a result, the process of coding and seeing the result is closer together. On top of these core ideas we aim to include easy lookup of Processing documentation and reference, on-the-fly pretty error messages, helpful syntax highlighting and generally a pleasant “IDE-esque” experience. A more social feature will be providing some small server storage (which could be part of a pro/paid version of our app) to store user sketches, which then means you can save them as desktop apps on both iOS and Android devices with icons we generate from the 1 http://en.wikipedia.org/wiki/Integrated_development_environment 2 https://processing.org actual sketch. This will be a rewarding experience for learners as they will be able to easily share sketches to their friends’ phones acting similarly to native apps3 (you would tap the icon on your phone and the sketch will run as a standalone app). Including the actual Semicolon editor inside these apps will potentially open up the possibility to easily collaborate on sketches, too. Proposed Method The two possible ways of implementing Semicolon are doing it natively or web-based. While initially going down the first path (as far as having a working prototype) after much thought, we leaned towards web technologies. Web vs. native is not an easy decision to make and even big companies have been known to make mistakes in the past[1]. Web technologies are evolving so quickly4 that six months is enough time to change the landscape and reevaluate things. At the time of writing this, the web stack seems powerful enough to successfully bring our vision to life. The existence of mature open source web code editors such as Ace5 and Codemirror6 gives us the confidence of choosing the Web as our platform. Those two editors are the backbone of many, if not most, popular coding websites. The second big part of the puzzle here is Processing.js7 which compiles Processing code to JavaScript and renders it in the HTML canvas element. Our second working prototype is done with Ace and Processing.js where both the code and the rendered sketch live inside a single HTML page, allowing us to rapidly prototype and test our editor. HTML and JavaScript themselves arguably allow for more creativity than, say the Apple tech stack (either Objective-C or Swift). From our past experiences of building iPhone apps, escaping from the “Apple way”8 of doing things is hard. In the case of our app, that would have been the case, so there is a sense of freedom when working with web technologies. A quick example would be a view where the sketch transparently renders live beneath the code editor. Of course, most things are possible in both environments but one might feel very opinionated while the other could inspire a more DIY/experimental approach to things. 3 Demonstration of saving to homescreen: http://youtu.be/yD_zLO2Qx1c 4 http://kangax.github.io/compat-table/es6/ 5 http://ace.c9.io 6 http://codemirror.net 7 http://processingjs.org 8 In the defence of Apple, their technology is incredibly well documented and is usually a joy to use when you build traditional apps. Libraries like Browse-Sync9 that launch a server to serve the HTML page you are working on (so you can open it on your machine, as well as on your phone) and live-reload the page on file-save is a faster and more pleasant way to rapidly prototype as opposed to code and compile cycle when working natively. Going for the web, of course, also gives us the very important factor of being completely multi-platform. Naturally, ditching mature native technologies is not without its drawbacks10. Native provides easy to use UI libraries that can be either written in code or done in a drag’n’drop interface builder. On iOS for example, navigational hierarchies, transitions, buttons etc., are all provided and done for you. All this has to be emulated when working with web technologies, which to say is not impossible, but certainly trickier. People usually pick native when speed matters but this is a complex topic so we prefer to not be opinionated about it. Another thing to note is native mobile devices capabilities are easier to access through native APIs. Gestures can be implemented with open-source JavaScript libraries (such as jQuery Mobile11 but also many others). As aforementioned, multitouch gestures are possible and can provide a faster way to generate common code and save typing. Single touch and dragging can be used to manipulate code and show documentation, reference, explanations or examples. While Processing is our first choice language at the moment, we have looked at JavaScript as well, in particular p5.js12 which is a library inspired by Processing and has very similar goals. Of course, we aim to build a good general purpose IDE, but tailoring it to a language (with examples, code snippets, reference and documentation, much like Eclipse is tailored for Java, or Xcode to Objective-C) we can create a much smoother and painless developing process. Here is a quick comparison between Processing and JavaScript/p5.js and why we are sticking with Processing at first: Processing Processing is an open source programming language and integrated development environment (IDE) built for the electronic arts, new media art, and visual design communities with the purpose of teaching the fundamentals of computer programming in a visual context, and to serve as the foundation for electronic sketchbooks. The project was initiated in 2001 by Casey Reas and Benjamin Fry, both formerly of the Aesthetics and Computation Group at the MIT Media Lab. One of the stated aims of Processing is to act as a tool to get nonprogrammers started with programming, through the instant gratification of visual feedback. The language builds on the Java language, but uses a simplified syntax and graphics programming model. Processing was our first choice primarily because it is quite popular 9 http://www.browsersync.io 10 Our comparison is mostly against iPhone development since we have no Android experience. 11 http://jquerymobile.com 12 http://p5js.org amongst educational institutions and creative people that want to learn to code, most of its goals are similar to our project’s. Secondly, the language is mature enough to be stable and to have great quality documentations, tutorials and general information on the internet about it. It is a safe choice in the sense that if you need help, chances are you will find it. JavaScript/p5.js p5.js is a JavaScript library that starts with the original goal of Processing, to make coding accessible for artists, designers, educators, and beginners, and reinterprets this for today's web. Using the original metaphor of a software sketchbook, p5.js has a full set of drawing functionality. However, you're not limited to your drawing canvas, you can think of your whole browser page as your sketch. For this, p5.js has add-on libraries that make it easy to interact with other HTML5 objects, including text, input, video, webcam, and sound. While P5 is really new (released in 2014) and still very much in development (there is supposed to be a special IDE coming for it) it could be a good fit for our project. While we would like to add it as an option, we are still aiming at Processing as a preferred target language. We are using git13 versioning in combination with Github14. Since our project is open source it is a natural fit. Git is a great tool and Github is an amazing platform so we decided to make most of it. We have a master branch that has the latest stable working code. Every new feature or bug fix will be developed in a separate branch by one or more people. This will make it possible to have code reviews and discussion before we merge implementations into the master branch. Labeled issues are a great way to organise and deal with bugs, features, enhancement and in general to structure the whole development process. We also make use of Github milestones to keep us on track of our goals and progress. Designing and IDE is quite a challenge, reimagining it for mobile devices, even more so. We realise that building a complete full-featured bug-free piece of software is virtually impossible so we will use this project as a test-bed for experimenting forward-thinking and creative design ideas. That said, we aim to finish a working product that could be used by our nephews, our mothers, and fellow programmers. We will keep the spirit of Processing and the open Web15. Our application will be free and open source software16. If we get at least some things right, we hope to inspire other people who can build on top of our project just as we build on top of the work of others. Proposed Audience We can divide our audience in two groups. The first will encompass a somewhat wide range of people. People mainly interested in getting into programming as a hobby or find 13 http://git-scm.com 14 http://github.com 15 http://en.wikipedia.org/wiki/Open_Web 16 http://en.wikipedia.org/wiki/Free_and_open-source_software it a fascinating creative medium. Those that want to understand basic concepts without wanting to jump too deep at first. People that think of programming as a hard skill (which in all fairness it is, we won’t try to “teach a language in 24 hours” or use similar marketing tricks) but look to start somewhere simple. Of course, our app targeting mobile devices, we reach an audience of smartphone users that don’t necessarily own laptops or have time to learn only while commuting and similar situations where they have no access to laptops. Children that can take advantage of their parents’ phones and tablets are also a valuable part of our first target group17. Secondly, we aim to provide a useful environment for advanced programmers and Processing users. Similarly to our first group, they will use the app in situations where they do not have access to laptops or computers. Since we aim provide a full featured Processing development environment including reference and documentation, Semicolon could be pushed as far as it is reasonable to program on a smartphone or tablet. Personas Maya Williams Undergraduate Student Maya is a 19 year old female student living in East London. She excels in practical & visual skills, & is looking to broaden her knowledge within programming, hoping to add some of her creativity to her own work. She graduated from a standard college in east London. Maya enjoys scenic photography through her casual walks around central London with her friends, but is looking forward to studying in higher education. She has been researching her Media and Technology course wanting to be ready & organised and has found the Semicolon app. Maya is trying to use this app to hopefully straighten her learning curve into the course as she has no background programming experience. By using the beginners reference alongside her classes, she finds learning Processing pretty fun with the different visual representations, explanations & easy code manipulation via the “tweak mode” when she turns her tablet sidewards. With the ability to manipulate her code with real time visuals has helped her a lot in understanding the parameters. Also, with the capability of saving her sketches to come back to, she finds an 17 As of next year, students around the UK will have to take compulsory lessons in programming. These classes will range from ages 5 to 16 (GCSE level), this application can be used as an option which is highly accessible there be used in conjunction with their processing lessons. As more educational institutes are allowing the use of handheld technology such as tablets (which does show positive correlation on educational benefits), being able to use this app will help hugely on their learning curve into their introduction to programming. This past September (2014), the BBC have introduced more resources into learning computing/programming on sites such as CBeebies, CBBC and BiteSize to get children interested into computing. Because of the visual approach we are taking within our IDE, we believe by Keystage 3, students would be able to use this app to create very interesting and educational sketches. [2] easy transition to coding in class to coding on public transport, carrying on from where she left from. Due to her casual use of social media, she has been able to share her sketches in a HTML form to show off on her Twitter & Facebook page, updating her friends what she has been learning or has been working on in her spare time. Maya needs this app to continue to help her understand Processing syntax whether it is in the form of shapes, moving shapes/objects, if statements etc, as it is what the course demands her to have a full understanding of. Jona James Housewife Jona is a 50 year old mother of two, and is unemployed. She owns an iPhone 5s. One of her sons is a visual programmer at university and she has a developed an interest in the work he does. Jona has always been an artistic person, strong in practical forms of artistic expression such as painting and sculpture. She asks her son how she could make digital art like he does and he tells her of an app called Semicolon. He says that this app is a good place to start creative coding as it makes coding easier to understand and it provides simplified explanations of various functions. Considering Jona has no technical background aside from using her phone to check her email and post listings on eBay, she hopes this app will provide her with a starting point to learn the basics of visual programming. She would like the ability to share the work that she has made with her husband and her friends, and this app provides that feature. Being able to see what her son can do with little code, she sees this as a potential creative outlet during her spare time. There is also the option to take it further once she understands Processing, to look at tutorials online and test them on the app to make very small games for herself or friends. Pavel Malenko Creative Coder Pavel, 33, programmer by trade specialising in creative coding, data visualisation, web development and WebGL. He has a background in game development and was part of the Demoscene18 as a teenager. He works with a variety of programming languages such as C++, JavaScript, Clojure, Processing etc, as it usually depends on the project. Pavel had to pick up Processing a while back when one of this project was to create generated visuals for print and projection. He has enjoyed programming in Processing and being part of its community ever since. 18 http://en.wikipedia.org/wiki/Demoscene Pavel has a lengthy commute with public transport to work. He also travels by train or airplane when projects require him to. So Pavel finds himself commonly in situation where he has to wait or stay in unusual places, mostly with no power or wifi. He reads a lot on his phone or tablet but many times he wished he could play around with code. Googling around Semicolon comes up. Pavel is biased towards such code editors but giving it a try he finds himself enjoying the app. As a skilled typist he is usually frustrated to type on the phone but Semicolon provides nice shortcuts to common code snippets. Pavel has finally found a creative solution to killing his time. Self-Evaluation Product-wise, our app as already mentioned targets people new to programming as well as more experienced coders. Appealing to both targets is quite tricky so in the case of advanced users of Processing we are only looking to provide a playground in their free time, whilst on the tube or the train etc. Considering this, Semicolon will be deemed successful if it satisfies both those groups of users. More specifically, we will give ourselves tap on the shoulder if we get feedback from novices that they wanted to get into programming and/or Processing and found that Semicolon was the easiest, or at least on of the best ways to get started. Similarly, if experienced coders who were frustrated with such products tell us they have enjoyed writing quick sketches in our app and that it is a productive environment for experimenting with Processing. Based on that, we will judge if Semicolon is a good IDE for Processing. What is common to both groups though is we would look for a positive feedback on the actual process of writing code, i.e. has our IDE pushed the status quo of mobile code editors, have our design decisions been intuitive and not confusing. Have they made the process faster, slower, or not much has changed? This part could be hard to judge as different people will inevitably have different typing skills and habits on mobile. Perhaps people who type faster might find gesture shortcuts unnatural and useless. People who have a hard time using their smartphone keyboard quickly will hopefully find them useful. In either case we will analyse the feedback for each design decision carefully and consider the target group for each test. Based on that, we will judge if Semicolon is a better way to write code on mobile than the alternative apps. We suspect these two general factors for success described above will get somewhat blurred together in the actual process of testing and analysing but hopefully they will provide a useful framework for self-evaluation. Documentation The basis of all of our project’s documentation will be our Tumblr blog19 for visual and blog-based posts and progress reports. Since our project requires a substantial amount of iterative design, blogging about ideas and concepts with their visual counterpart will provide for a good way to see where we have started and what we have gone through (i.e. rejected ideas or changed ones) to get to a finished product. At a more final stage of the project we suspect we will record videos of us using the IDE, and later other people, namely our target group, using it as well. Drawing conclusions of failed and succeeded goals will be written about. The rest will be on Github20 where we keep the code, labeled issues that represent bugs or features we want to implement next, and last but not least our milestones. Github, as already mentioned above, provides an amazingly powerful platform for collaborative software projects and we are happy to make use of it. Our repo is open so anyone can take a look or fork the code. Using git is a great way to deal with versioning and as a side effect it documents the history of our code and who was involved with which parts of the software. Press Release This press release would be aimed at technology websites and blogs such as The Verge, Engadget, Techcrunch and similar Even if you don’t believe in the “learn to code” movement, let’s face it - even Barack Obama wrote a line of JavaScript. We live in a digital age where most of our productivity and creative process is done through computers and smartphones. And no, probably not everyone needs to learn to code to know how to use them. But a lot of people sure want to. And it is obvious why, programming is fascinating! It provides a completely new medium for creation and creativity. Semicolon is an IDE and code editor that tries to build the bridge between creative people fascinated by coding but finding it hard to dive into. It takes advantage of the most common personal computer there is today - the smartphone. It runs on the most ubiquitous platform ever - the web. It is accompanied by Processing - a language geared towards education and visual and art practices. So.. it seems like you are slowly running out of excuses not to learn to code. 19 http://groupnoto.tumblr.com 20 https://github.com/groupnoto/semicolon Inspiration Learnable Programming by Bret Victor21 Looking into the link above, we believe that some of the features shown would be highly valuable in our app and helps hit our target on what we want our app to achieve. Being able to have a brief description of each line of code would help the user to understand what he or she is creating as well as understand what the sketch is doing. Being able to implement this into our app as well as the visible flow feature will allow a quick and easy understanding of their sketch. Biographies Joshua Akinsola Joshua Akinsola is a second year Creative Computing student at Goldsmiths College, University of London. His focus is on User Experience and empowering easy learning through intuitive interfaces. Focusing on trends such as JavaScript, HTML 5 are of interest, however research in the user experience area is a passion. Discovering small techniques that could have a big impact on the way users interact and learn technology is what he finds fascinating. How technology is impacting areas outside itself is what he is currently exploring; areas such entertainment, media, commerce and politics. That in mind, he also understands that the power of learning technology could transform lives, therefore the act of delivering technology fundamentals in a simple way for people could help him understand the fine detail better whilst giving others the ability to explore it as well. He has a background in entertainment, sports and retail in the consumer electronics industry; therefore he has an ability to understand the users that would be affected by technological changes. Inspired by characters such as Steve Jobs, he hopes to add in his own way to remove the complexity from the new age of technology. Nikolay Nikolov Nikolay is a second year Creative Computing student at Goldsmiths College, University of London. Prior to this course, he has studied one year Sound Arts at London College of Communication, University of the Arts London and has a Software Engineering High School degree from Elsys, Sofia, Bulgaria. Nikolay has also a substantial background in Electronic music. Erwyn Nicholas Camero Erwyn Nicholas Camero, 21, is an under-grad student currently studying Creative Computing at Goldsmiths College, University of London. He is a fairly heavy electronic & gadget user and likes to record live music in his spare time. Erwyn lives an active 21 http://worrydream.com/#!/LearnableProgramming lifestyle, working a couple part time jobs, partaking in different sport clubs & train in the gym and road bike racing. He has chosen a programming degree because he realises there are so many opportunities and interesting projects within the industry that he looks to be apart of. He picked Creative Computing specifically because of the huge range of project ideas & concepts available to work on, and this course also allows him to input his own creative ideas and skills into programming. He believes makes the learning process a whole lot more interesting and fun to dive into. Lucio Cuddeford Lucio Cuddeford is a student at Goldsmiths University. He studies Creative Computing because he is interested in the creative and artistic side of computing which this course provides. Processing was the first language taught on this course and Lucio immediately fell in love with it. Processing allows him to express himself visually and is mostly limited to just his imagination. He has recently chosen a more specific direction in the field with mobile at its heart. The ability to export Processing code into JavaScript has allowed Lucio to create interactive graphics specifically for mobile devices. Biography/Bibliography [1] Drew Olanoff, Mark Zuckerberg: Our Biggest Mistake Was Betting Too Much On HTML5, Techrunch http://techcrunch.com/2012/09/11/mark-zuckerberg-our-biggest-mistake-with-mobilewas-betting-too-much-on-html5/ accessed on 12/11/2014 [2] Sophie Curtis, Teaching Our Children To Code: A Quiet Revolution, Telegraph http://www.telegraph.co.uk/technology/news/10410036/Teaching-our-children-to-codea-quiet-revolution.html accessed on 12/11/2014 Sophie Curtis, Digital Learning: How Technology is reshaping teaching, Telegraph http:// www.telegraph.co.uk/technology/news/11051228/Digital-learning-how-technology-isreshaping-teaching.html accessed on 10/12/2014
© Copyright 2025