{"id":164,"date":"2019-04-10T17:10:39","date_gmt":"2019-04-10T15:10:39","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/"},"modified":"2020-01-31T11:23:23","modified_gmt":"2020-01-31T10:23:23","slug":"behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/","title":{"rendered":"Behind the scenes of Codemotion 2019\u2019s opening live coding performance"},"content":{"rendered":"<p>Codemotion Rome 2019\u2019s opening performance combines dance, motion capture, live coded generative visuals and live music performance.<br \/>\nJoin us in this article to discover how we used <span id=\"urn:batch-analysis-21fe2781-ffdf-4fce-af8b-0be25407a38d\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/websocket\">WebSockets<\/span>, Vim, visual applications such as TouchDesigner or Blender and much more to build the infrastructure behind it.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-2474 size-full\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/00_codemotion_intro.jpg\" alt=\"\"><\/p>\n<p><span id=\"urn:batch-analysis-e4708334-f45c-4432-a80f-ed3f7a147e88\" class=\"textannotation disambiguated wl-no-link wl-organisation\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/codemotion_2\">Codemotion<\/span> 2019\u2019s opening performance was such an entertaining <span id=\"urn:batch-analysis-fc4ab459-6aa0-48b2-8136-6ed3f4ff88a4\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/experience\">experience<\/span> and just as inspiring was the process that we as <a href=\"https:\/\/chordata.cc\/new-arts\/\" target=\"_blank\" rel=\"noopener noreferrer\">Chordata New Arts<\/a> went through to give birth to it.<br \/>\nAs the artistic branch of the emerging tech project <a href=\"https:\/\/chordata.cc\/\" target=\"_blank\" rel=\"noopener noreferrer\">Chordata<\/a>, we are always confronting the new relationships between technologies, media and artistic languages.<br \/>\nThis work is powered by Chordata\u2019s homonymous open-source motion capture framework.<\/p>\n<p>Discussing with <span id=\"urn:batch-analysis-ac18215c-84b4-4632-85cf-b527cc31074a\" class=\"textannotation disambiguated wl-no-link wl-organisation\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/codemotion_2\">Codemotion<\/span> our intentions for the opening show with co-founder <a href=\"https:\/\/www.codemotion.com\/speakers\/mara-marzocchi-888\" target=\"_blank\" rel=\"noopener noreferrer\">Mara Marzocchi<\/a>, we were both immediately intrigued by the idea of combining dance, live coded generative visuals and live music. This led to a <span id=\"urn:batch-analysis-ac862053-4f41-4cc9-960c-83a7ad87305c\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/performance\">performance<\/span> where the dancer\u2019s movements gave life to a digital body, transforming through time and space.<\/p>\n<p>Join us in this article to discover how we used <span id=\"urn:batch-analysis-aca84470-edfb-47a3-9943-c7471fed9c3d\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/websocket\">WebSockets<\/span>, Vim, visual applications such as TouchDesigner or Blender and much more to build the infrastructure behind the <span id=\"urn:batch-analysis-1c22a73d-5c8f-4d8e-9d2d-d139d7dedc1a\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/performance\">performance<\/span>.<\/p>\n<h2>A microservices-like infrastructure<\/h2>\n<p>Many of you might have heard of the emerging trend of Microservices. As artists, we just recently came across the concept and noticed how, interestingly enough, our systems and workflows spontaneously evolved to resemble the patterns and methodologies of that architecture, where a group of autonomous services contribute to a part of the process in a modular fashion.<br \/>\nHere\u2019s a representation explaining of how the machines involved in our system cooperate:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-2474 size-full\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/01_block_diagram.png\" alt=\"\"><\/p>\n<p><q>Our systems and workflows resemble the patterns and methodologies of a microservices architecture.<\/q><\/p>\n<p>Each laptop is processing one conceptual and technical part of the whole computational process that powers the <span id=\"urn:batch-analysis-a8af7d1b-862f-49bd-9262-edf23a851bdc\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/performance\">performance<\/span>, while exchanging informations with the others.<br \/>\nOne laptop is being used for real-time audio synthesis, another for real-time video processing and a third one for handling the motion capture data and for the live-coding input. A microcomputer attached to the performer\u2019s body takes care of managing the sensors.<br \/>\nLet\u2019s dig deeper into the details.<\/p>\n<h2>Motion capture<\/h2>\n<p>The core of the motion capture system is the service running of the Raspberry Pi: the <a href=\"https:\/\/gitlab.com\/chordata\/notochord\" target=\"_blank\" rel=\"noopener noreferrer\">Chordata Notochord<\/a>. Its <span id=\"urn:batch-analysis-69ab1a76-814d-42bf-967d-6467cd99b089\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/job\">job<\/span> is to read values coming from the motion sensors, processing this <span id=\"urn:batch-analysis-e74a2dba-ff95-4191-ae3d-df6e598c4355\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/data\">data<\/span> and sending it via <a href=\"http:\/\/opensoundcontrol.org\/introduction-osc\" target=\"_blank\" rel=\"noopener noreferrer\">OSC<\/a> (a flexible protocol built over UDP, very popular among digital artists) to a laptop running <a href=\"https:\/\/www.blender.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Blender<\/a>.<\/p>\n<p><q>The open source motion capture framework Chordata, and 3D manipulation software Blender are used to get the live movements of a performer on stage.<\/q><\/p>\n<p>The real-time motion data is processed inside Blender, through an operation of forward kinematics. This sums up to a fancy way of saying that they end up representing a humanoid figure. This newly acquired <span id=\"urn:batch-analysis-f0d8cce1-e2d6-4bd3-a1bc-b6bafd5e20f0\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/data\">data<\/span> is sent to the core visual processor: <a href=\"https:\/\/www.derivative.ca\/\" target=\"_blank\" rel=\"noopener noreferrer\">TouchDesigner<\/a>, a flow based, graphically oriented development platform.<br \/>\nOnce again, the protocol of choice for this communication is our beloved OSC.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-2474 size-full\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/02_Chordata_capturing_blender.gif\" alt=\"\"><\/p>\n<h2>Real-time visuals<\/h2>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-2474 size-full\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/03_Touchdesigner_flow.png\" alt=\"\"><\/p>\n<p>The backbone of the visual processing is created assembling a network of nodes inside TouchDesigner.<br \/>\nOne of the first tasks performed is receiving, interpreting and visualizing motion capture data. The incoming movements are applied to a 3D humanoid model. Further controlled deformations are implemented to give us the ability to move towards more abstract dimensions.<\/p>\n<p><q>Several 3D and 2D image manipulation processes are implemented as a network of nodes inside TouchDesigner.<\/q><\/p>\n<p>The nodes in the middle of the flow are responsible for setting the model into a 3D world with virtual lights and camera. The 3D space is then flattened into a two-dimensional texture (Rendered). This will be fed into further nodes, allowing 2D texture manipulations. You can spot in the screenshot above how all the nodes on the right side of the network are violet. In TouchDesigner, this is the color highlighting nodes working with bidimensional textures.<br \/>\nThe source image will be finally composited with the code being written and streamed live.<\/p>\n<h2>Audio reactive visual effects<\/h2>\n<p>You might have noticed, in the diagram shown at the beginning of the article, how our Digital Audio Workstation communicates with the machine running TouchDesigner through OSC messages. These are numerical representation of the results of a real-time envelope following operated on the audio being produced. This allows us to achieve audio-reactive effects, using the sound intensity as a parameter for our video effects.<\/p>\n<h2>Live coding<\/h2>\n<p>Although TouchDesigner being a flow based programming environment, one of its wonders is being completely scriptable with Python.<\/p>\n<p>The pink nodes on the left of the flow form a <span id=\"urn:batch-analysis-d786bb47-f820-45dd-9e4a-383991825d25\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/websocket\">Websocket<\/span> server that listens for messages containing Python code to be executed. This allows us to inject arbitrary Python code written to control the operators in the TouchDesigner flow, making the live-coding approach possible.<\/p>\n<h2>Websocket communication with TMUX and Vim<\/h2>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-2474 size-full\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/04_tmux_session.png\" alt=\"\"><\/p>\n<p>If you came from a Unix-like <span id=\"urn:batch-analysis-77d51ea0-48da-48bd-82b8-f4903afcb43b\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/operating_system\">operating system<\/span> you might already be familiar with TMUX (Terminal Multiplexer). Apart from being a great productivity tool, TMUX is what allowed us to display the code on the screen. Under the hood it works by storing the content of every pane in an internal buffer. The contents of that buffer can be retrieved with a convenient CLI interface. We leveraged that possibility to create a <a href=\"https:\/\/gitlab.com\/chordata\/livecoding_touchdesigner\/blob\/master\/live_coding.py\" target=\"_blank\" rel=\"noopener noreferrer\">simple program written in Python<\/a>, that sends the content of a particular TMUX pane on every keystroke.<\/p>\n<p><q>Code is captured from a terminal emulator session and streamed to the laptop in charge of the graphical processing.<\/q><\/p>\n<p>On the captured pane, we can issue shell commands, or use a console text editor like Vim to edit the code to be sent.<\/p>\n<p>However, when there\u2019s code there might be errors. In particular if that code is being written live to control a dynamic process. In order to retrieve the error messages from the TouchDesigner runtime a full duplex communication was vital. That necessity made clear that the adoption of <span id=\"urn:batch-analysis-b81eb1e8-eab3-4222-9ac9-00b99e35be0f\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/websocket\">WebSocket<\/span> for this task (instead of UDP-based OSC) was a no-brainer.<\/p>\n<h2>Is that all there is?<\/h2>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-2474 size-full\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/05_codemotion_intro_anim.gif\" alt=\"\"><\/p>\n<p>We tried our best to give you an insightful, while not overwhelming, overview of our work and we deeply hope you can take something from it and put it in your own creations.<br \/>\nObviously there would be much more to say for each of the topic we briefly discussed. That\u2019s why we gathered some resources for you to learn more about these subjects:<\/p>\n<ul style=\"padding-bottom:1rem\">\n<li><a href=\"https:\/\/wiki.chordata.cc\" target=\"_blank\" rel=\"noopener noreferrer\">Chordata Wiki<\/a><\/li>\n<li><a href=\"https:\/\/docs.derivative.ca\" target=\"_blank\" rel=\"noopener noreferrer\">TouchDesigner Wiki<\/a><\/li>\n<li><a href=\"https:\/\/docs.blender.org\/api\/blender2.8\/\" target=\"_blank\" rel=\"noopener noreferrer\">Blender Python API Docs<\/a><\/li>\n<li><a href=\"http:\/\/opensoundcontrol.org\/introduction-osc\" target=\"_blank\" rel=\"noopener noreferrer\">Introduction to Open Sound Control<\/a> (OSC)<\/li>\n<li><a href=\"https:\/\/hackernoon.com\/a-gentle-introduction-to-tmux-8d784c404340\" target=\"_blank\" rel=\"noopener noreferrer\">Introduction to TMUX<\/a><\/li>\n<\/ul>\n<p>Feel free to contact us if you\u2019re interested in knowing more about our creative processes, techniques or literally whatever you can come up with. We are always open to share our <span id=\"urn:batch-analysis-1cb22946-2868-4d99-875e-46633a8a7e74\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/knowledge\">knowledge<\/span> and experiences with the world \ud83d\ude42<\/p>\n<p>You can find the sources used for the <span id=\"urn:batch-analysis-9f6064c3-915b-4e88-8cfb-f2d5be519837\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/performance\">performance<\/span> on our <a href=\"https:\/\/gitlab.com\/chordata\/livecoding_touchdesigner\" target=\"_blank\" rel=\"noopener noreferrer\">repository<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Codemotion Rome 2019\u2019s opening performance combines dance, motion capture, live coded generative visuals and live music performance. Join us in this article to discover how we used WebSockets, Vim, visual applications such as TouchDesigner or Blender and much more to build the infrastructure behind it. Codemotion 2019\u2019s opening performance was such an entertaining experience and&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/\">Read more<\/a><\/p>\n","protected":false},"author":64,"featured_media":165,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[12],"tags":[4],"collections":[],"class_list":{"0":"post-164","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-stories","8":"tag-codemotion-rome","9":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Behind the scenes of Codemotion 2019\u2019s opening live coding performance - Codemotion Magazine<\/title>\n<meta name=\"description\" content=\"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Behind the scenes of Codemotion 2019\u2019s opening live coding performance\" \/>\n<meta property=\"og:description\" content=\"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-04-10T15:10:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-01-31T10:23:23+00:00\" \/>\n<meta name=\"author\" content=\"Codemotion\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Codemotion\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/\"},\"author\":{\"name\":\"Codemotion\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/201bb98b02412383686cced7521b861c\"},\"headline\":\"Behind the scenes of Codemotion 2019\u2019s opening live coding performance\",\"datePublished\":\"2019-04-10T15:10:39+00:00\",\"dateModified\":\"2020-01-31T10:23:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/\"},\"wordCount\":1135,\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o.jpg\",\"keywords\":[\"Codemotion Rome\"],\"articleSection\":[\"Stories\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/\",\"name\":\"Behind the scenes of Codemotion 2019\u2019s opening live coding performance - Codemotion Magazine\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o.jpg\",\"datePublished\":\"2019-04-10T15:10:39+00:00\",\"dateModified\":\"2020-01-31T10:23:23+00:00\",\"description\":\"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/#primaryimage\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o.jpg\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o.jpg\",\"width\":1013,\"height\":675},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dev Life\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/dev-life\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Stories\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Behind the scenes of Codemotion 2019\u2019s opening live coding performance\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Codemotion.Italy\/\",\"https:\/\/x.com\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/201bb98b02412383686cced7521b861c\",\"name\":\"Codemotion\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/cropped-codemotionlogo-150x150.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/cropped-codemotionlogo-150x150.png\",\"caption\":\"Codemotion\"},\"description\":\"Articles wirtten by the Codemotion staff. Tech news, inspiration, latest treends in software development and more.\",\"sameAs\":[\"https:\/\/x.com\/CodemotionIT\"],\"url\":\"https:\/\/www.codemotion.com\/magazine\/author\/codemotion-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Behind the scenes of Codemotion 2019\u2019s opening live coding performance - Codemotion Magazine","description":"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/","og_locale":"en_US","og_type":"article","og_title":"Behind the scenes of Codemotion 2019\u2019s opening live coding performance","og_description":"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.","og_url":"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2019-04-10T15:10:39+00:00","article_modified_time":"2020-01-31T10:23:23+00:00","author":"Codemotion","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o.jpg","twitter_creator":"@CodemotionIT","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Codemotion","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/"},"author":{"name":"Codemotion","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/201bb98b02412383686cced7521b861c"},"headline":"Behind the scenes of Codemotion 2019\u2019s opening live coding performance","datePublished":"2019-04-10T15:10:39+00:00","dateModified":"2020-01-31T10:23:23+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/"},"wordCount":1135,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o.jpg","keywords":["Codemotion Rome"],"articleSection":["Stories"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/","url":"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/","name":"Behind the scenes of Codemotion 2019\u2019s opening live coding performance - Codemotion Magazine","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o.jpg","datePublished":"2019-04-10T15:10:39+00:00","dateModified":"2020-01-31T10:23:23+00:00","description":"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o.jpg","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o.jpg","width":1013,"height":675},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/behind-the-scenes-of-codemotion-2019s-opening-live-coding-performance\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Dev Life","item":"https:\/\/www.codemotion.com\/magazine\/dev-life\/"},{"@type":"ListItem","position":3,"name":"Stories","item":"https:\/\/www.codemotion.com\/magazine\/dev-life\/stories\/"},{"@type":"ListItem","position":4,"name":"Behind the scenes of Codemotion 2019\u2019s opening live coding performance"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/201bb98b02412383686cced7521b861c","name":"Codemotion","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/cropped-codemotionlogo-150x150.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/cropped-codemotionlogo-150x150.png","caption":"Codemotion"},"description":"Articles wirtten by the Codemotion staff. Tech news, inspiration, latest treends in software development and more.","sameAs":["https:\/\/x.com\/CodemotionIT"],"url":"https:\/\/www.codemotion.com\/magazine\/author\/codemotion-2\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o-600x400.jpg","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o-600x600.jpg","author_info":{"display_name":"Codemotion","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/codemotion-2\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o.jpg",1013,675,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o-150x150.jpg",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o-300x200.jpg",300,200,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o-768x512.jpg",768,512,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o.jpg",1013,675,false],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o.jpg",1013,675,false],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o.jpg",1013,675,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o.jpg",100,67,false],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o-180x128.jpg",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o-896x504.jpg",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o-400x225.jpg",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o-600x400.jpg",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55905177_2296071663964596_6132104428326486016_o-600x600.jpg",600,600,true]},"uagb_author_info":{"display_name":"Codemotion","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/codemotion-2\/"},"uagb_comment_info":0,"uagb_excerpt":"Codemotion Rome 2019\u2019s opening performance combines dance, motion capture, live coded generative visuals and live music performance. Join us in this article to discover how we used WebSockets, Vim, visual applications such as TouchDesigner or Blender and much more to build the infrastructure behind it. Codemotion 2019\u2019s opening performance was such an entertaining experience and&#8230;&hellip;","lang":"en","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/64"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=164"}],"version-history":[{"count":3,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/164\/revisions"}],"predecessor-version":[{"id":3110,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/164\/revisions\/3110"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/165"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=164"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}