Creating Coding across Screens

Creating Coding across Screens

An awareness talk about creative coding platforms and tools for the FITC Screens conference that took place November 11 & 12 in Toronto, Canada to an audience of about 50 attendees ranging from designers, developers, to creative coders.


Scott Janousek

November 11, 2011


  1. 2.

    Creating Coding across Screens at FITC Screens taking place Nov

    14-15 2011 in lovely Toronto Wednesday, November 16, 11
  2. 5.

    Hello @scottjanousek Former Mobile & Device “Veteran” “Analog and Digital

    Artisan” Innovation Architect @ Isobar Wednesday, November 16, 11
  3. 46.

    Target Screens Desktops, Laptops & Netbooks SmartPhones & Pocket Devices

    Tablets TVs Tables, Kiosks, Billboards Projected Displays Wednesday, November 16, 11
  4. 47.

    Mobile Impact In my mind, there is no question these

    are the clear winners ... but what is the “next race”? Wednesday, November 16, 11
  5. 53.

    What are we talking about? “... Computer Programs in art

    such as real life art installations, interactive video, large-scale public projections, computer vision projects, interactive sound recordings, & more ...” OR ... into the realm of ... PHYSICAL COMPUTING. Wednesday, November 16, 11
  6. 57.

    Going Native “A native development kit (NDK) is a software

    development kit (SDK) based on a native application programming interface (API) which allows computer software to be developed directly on a computing platform, rather than via a virtual machine. Creating software on a virtual machine is often easier than on a native development kit. However, the advantages of using an NDK is that it allows developers more options, and can yield higher performance.” Wednesday, November 16, 11
  7. 61.

    Genesis aka (LEFT) Casey Reas and (RIGHT) Ben Fry -

    The Co-creators of Processing Wednesday, November 16, 11
  8. 62.

    “Processing is an open source programming language and environment for

    people who want to create images, animations, and interactions.” Mission Statement Wednesday, November 16, 11
  9. 64.

    “Today, there are tens of thousands of students, artists, designers,

    researchers, and hobbyists who use Processing for learning, prototyping, and production.” Why Processing? “Initially developed to serve as a software sketchbook and to teach fundamentals of computer programming within a visual context, Processing also has evolved into a tool for generating finished professional work.” Wednesday, November 16, 11
  10. 71.

    FYI Processing 2.0 alpha 3 is recently out! * *

    As of November 2011 Wednesday, November 16, 11
  11. 73.

    “Sketch” (i.e. app) void setup() { // define the window

    size & enable anti-aliasing size(200, 200); smooth(); // Set "ink" color, font, and alignment for rendering text. fill(0); // Black // setup the font (system default sans serif) textFont(createFont("SansSerif",18)); textAlign(CENTER); noLoop(); // draw() executes only once } void draw() { // Draw text to screen using the previously set font. text("Hello World!", width/2, height/2); } Wednesday, November 16, 11
  12. 103.

    ` Toxilibs “toxiclibs is an independent, open source library collection

    for computational design tasks with Java & Processing developed by Karsten “toxi” Schmidt (thus far).” Wednesday, November 16, 11
  13. 104.

    Toxilibs “The classes are purposefully kept fairly generic in order

    to maximize re-use in different contexts ranging from generative design, animation, interaction/interface design, data visualization to architecture and digital fabrication, use as teaching tool and more.” Wednesday, November 16, 11
  14. 112.

    Cons Performance is not 100% native Some fragmentation on devices

    Java is powerful, but legacy Wednesday, November 16, 11
  15. 113.

    Pros Simple to install & run Simple, yet powerful language

    Nice learning curve Decent libraries Fast prototyping! Wednesday, November 16, 11
  16. 114.

    Future? Processing is a multi-versatile tool Community driven 2.03a brings

    power & > targets Stellar tool for data viz! Wednesday, November 16, 11
  17. 123.

    Code Basics #include "ofMain.h" #include "testApp.h" #include "ofAppGlutWindow.h" //======================================================================== int

    main( ){ ofAppGlutWindow window; ! ofSetupOpenGL(&window, 1024,768, OF_WINDOW);! ! ! // <-------- setup the GL ! // this kicks off the running of my app ! // can be OF_WINDOW or OF_FULLSCREEN ! // pass in width and height too: ! ofRunApp( new testApp()); } Wednesday, November 16, 11
  18. 124.

    Code Basics #include "testApp.h" void testApp::setup(){} void testApp::update(){} void testApp::draw(){}

    void testApp::keyPressed(int key){} void testApp::keyReleased(int key){} void testApp::mouseMoved(int x, int y ){} void testApp::mouseDragged(int x, int y, int button){} void testApp::mousePressed(int x, int y, int button){} void testApp::mouseReleased(int x, int y, int button){} void testApp::gotMessage(ofMessage msg){} Wednesday, November 16, 11
  19. 125.

    Code Basics #pragma once #include "ofMain.h" class testApp : public

    ofBaseApp { ! public: ! ! void setup(); ! ! void update(); ! ! void draw(); ! ! void keyPressed (int key); ! ! void keyReleased(int key); ! ! void mouseMoved(int x, int y ); ! ! void mouseDragged(int x, int y, int button); ! ! void mousePressed(int x, int y, int button); ! ! void mouseReleased(int x, int y, int button); ! ! void windowResized(int w, int h); ! ! void dragEvent(ofDragInfo dragInfo); ! ! void gotMessage(ofMessage msg); }; Wednesday, November 16, 11
  20. 127.

    OF Core Objects Application Graphics Video Utils Sound Player Sound

    Stream Math Serial Arduino Wednesday, November 16, 11
  21. 128.

    Addons “openFrameworks addons are additional third party libraries that can

    be added to your projects to extend their functionality.” Wednesday, November 16, 11
  22. 137.

    Cons Long version cycles Smaller, niche community C++ learning curve

    Lack of libraries* * check out recent site: Wednesday, November 16, 11
  23. 138.

    Pros Innovative Dev Community Native Performance Audio & Visual Capabilities

    Computer Vision Physical Computing Wednesday, November 16, 11
  24. 139.

    Future? OF is gaining momentum. OF is prime for Physical

    Computing. Wednesday, November 16, 11
  25. 142.

    “Cinder is a powerful, intuitive cross-platform toolbox for programming graphics,

    audio, video, networking, image processing and computational geometry. “ CinderLib Wednesday, November 16, 11
  26. 143.

    “Cinder is a community-developed, free and open source library for

    professional-quality creative coding in C++.” Mission Statement Wednesday, November 16, 11
  27. 144.

    Event Handling, Screensavers, Internet I/O, I/O from flat files, memory,

    resources, & networks, C++ Core, iOS Support & Multitouch, UI Events, XML Parser and more! Support Wednesday, November 16, 11
  28. 156.

    Cons Slow to release updates Smaller, niche community C++ Learning

    curve Lack of libraries Wednesday, November 16, 11
  29. 157.

    Pros Innovative Dev Community Native Performance Audio & Visual Capabilities

    Computer Vision Physical Computing Wednesday, November 16, 11
  30. 158.

    Cinder is still experimental. Last push was Summer 2011. Lots

    of promise. Hopeful it sticks around! Future? Wednesday, November 16, 11
  31. 161.

    Mission Statement Does Adobe even have one for Flash? Roadmap

    URL? ... Video, 3-D, Games I suppose ... Wednesday, November 16, 11
  32. 175.

    Cons Too Versatile? Flash Player for Devices Not native performance*.

    Proprietary Runtimes. Wednesday, November 16, 11
  33. 176.

    Pros Multi-versatile. Cross Platform (on the Desktop). Easy to pick

    up ActionScript. Fast Prototyping. Wednesday, November 16, 11
  34. 177.

    Future? Parts of Flash are Deprecated. Flash is targeting video,

    games, 3-D. Adobe is getting back to its roots? Wednesday, November 16, 11
  35. 182.

    Mission Statement “Polycode is a free, open-source, cross-platform framework for

    creative code. You can use it as a C++ API or as a standalone scripting language to get easy and simple access to accelerated 2D and 3D graphics, hardware shaders, sound and network programming, physics engines and more.” Wednesday, November 16, 11
  36. 183.

    PolyCode “On top of the core C++ API, Polycode offers

    a Lua- based scripting system with its own set of compilation tools. The Lua API mirrors the C++ API and can be used to easily create prototypes and even publish complete applications to multiple platforms without compiling C+ +. Polycode is completely open-source and available under the MIT license and was designed and developed by Ivan Safrin” Wednesday, November 16, 11
  37. 192.
  38. 193.

    Pros Native Performance. Easy to get started. Lua or C++.

    Turning out to be good at 2 & 3D. Wednesday, November 16, 11
  39. 194.

    Future? Polycode is still early in development. Lua is gaining

    popularity within developer circuit. Alternatives are always good. Wednesday, November 16, 11
  40. 196.

    “Be passionate about your work, but do not get emotionally

    attached to your tools ... Tools can, and will be replaced.” TAKE AWAY #1 Wednesday, November 16, 11
  41. 197.

    “Whenever possible, use the right tool for the right job.”

    “Using a Hammer to screw in a nail doesn’t lead to good results.” TAKE AWAY #2 Wednesday, November 16, 11
  42. 198.