thefoundationhttp://www.thefoundation.de2011-06-09T09:38:36Z(c) 2012 Michael Kurze, Aachen, GermanyLighting Design Award for Telekombridge2011-06-09T09:38:36ZMatthias Schulzhttp://www.thefoundation.de/about/matthiastelekom-bridge<p><a href="http://www.iald.org">IALD</a> Radiance Award for lighting design. In cooperation with <a href="http://lichtkunstlicht.de">LICHT KUNST LICHT</a> we designed and animated the video content for the integrated LED installation.</p><p> The bridge was constructed due to a lack of options to cross the road to other Deutsche Telekom Buildings. There was no way in several hundred meters for Deutsche Telekom employes in Bonn, Germany to cross the road. A railroad track and a four lane road blocked the way across.<br/> As a result they constructed this pedestrian bridge. </p> <p> The LED installation is the main visual attraction of the bridge. It has around 444.000 pixels over both sides and uses a very bright LED technology that works during night and day times.<br/> The idea of our video theme was to visualize the energetic connection between both sides. A group of typical Telekom digits makes its way across at a normal walking speed. More and more groups of digits start its way across, coming from both sides. On collision they emit a short flash of energy. Depending on the viewers perspective it may seem as if the digit groups follow the people on the bridge. </p> <p> From the beginning our goal was not to make this architectural installation to one of the typical advertisement screens. The idea was to make a subtle video content that supports the idea of the lighting design concept. </p> <p> <iframe src="http://player.vimeo.com/video/12735798?title=0&amp;byline=0&amp;portrait=0&amp;color=ffffff" width="400" height="235" frameborder="0"></iframe> <i>Video produced by <a href="http://bildundtonfabrik.de">btf</a></i> </p>Scalable Text Clustering 2011-03-01T17:25:05ZMichael Kurzehttp://www.thefoundation.de/about/michaelscalable-text-clustering<p>The updated version of the Grouperfish clustering plans, now published on the Mozilla <a href="http://blog.mozilla.com/data/2011/03/08/scalable-text-clustering-for-the-web/" title="Blog of Data - Scalable Text Clustering for the Web">Blog of Data</a>.</p><h3>The Background</h3> <p>During my work as <a href="http://blog.mozilla.com/metrics/">metrics</a> liaison with the <a title="Firefox Input" href="http://input.mozilla.com/">Firefox Input</a> team, an exciting <a title="Bug 629019: Cluster themes and sites as publicly available and output to JSON" href="https://bugzilla.mozilla.org/show_bug.cgi?id=629019">requirement</a> has come up: scalable online clustering of the millions of feedback items that the users of Firefox share with us.</p> <p>When designing a service at the metrics team, besides functional requirements (<em>accept text messages, produce clusters</em>) we consider scalability and durability. In fact, scalability concerns play a major role in wanting to replace the <a title="Dave Dash’s textcluster" href="https://github.com/davedash/textcluster">current solution</a> (which has done a fine job so far) and not picking another powerful <a title="Carrot2 clustering framework" href="http://project.carrot2.org/">existing tool</a>: We expect the influx of messages (already heading towards 2 million) to increase up to 50x once Firefox 4 is released.</p> <h3>On to Architecture</h3> <p>There is a <a title="Grouperfish architecture" href="https://github.com/michaelku/grouperfish/blob/master/doc/medium_sized_picture.pdf?raw=true">slide</a> outlining what the system (called <a title="Grouperfish on github" href="https://github.com/michaelku/grouperfish">Grouperfish</a>) is planned to look like. As this service is to be developed quickly and in iterations, even major parts of the system might be replaced in the future though. <em>This</em> is the rationale for our first version, to be released sometime around the Firefox 4 release:</p> <h4>Concurrency</h4> <p><em>We want to be able to handle tens of thousands of GET’s and thousands of POST’s per second, provided we have enough commodity hardware at our disposal.</em></p> <p>To accept incoming documents and queue them for clustering, <a title="Node.JS Website" href="http://nodejs.org/">Node.JS</a> fits the bill. Its event-based concurrency model dominates thread- and process-based designs in IO-bound tasks such as this. Also, depending on the storage you pick, requests might pause to wait on garbage collection or to rewrite store files. Node can handle a lot of waiting requests because it does not use system level threads (or even processes) for concurrency.</p> <h4>Storage</h4> <p><em>Grouperfish must store millions of documents in hundreds of thousands of collections. The generated clusters may reference thousands of documents each, each ranging from a few bytes to about a megabyte. Also, we want to store processing data for clustering.</em></p> <p>When planning for more data than fits into your collective RAM, you usually have two options (SQL not being one of them since RAM has become pretty big):</p> <p><a title="Wikipedia: Amazon Dynamo" href="http://en.wikipedia.org/wiki/Dynamo_%28storage_system%29">Dynamo</a>-style key/value stores like <a title="Basho Riak" href="http://www.basho.com/riak">Riak</a> and <a title="Apache Cassandra" href="http://cassandra.apache.org/">Cassandra</a> allow to store replicated values with high write rates, and also to quickly retrieve individual items from disk. You do not need to worry about one machine getting too much attention (e.g. when one of your services gets slashdotted), thanks to consistent hashing. Riak even has a notion of <em>buckets, keys</em> and <em>values</em>: We would intuitively use buckets for collections of documents (and of clusters), and values for individual documents (and clusters). No wonder we looked at this more closely. Unfortunately though, Riak’s buckets are more of a namespacing device than anything else. It is expensive to get all elements of a bucket, since they are neither indexed by a common key nor stored together on disk. The Riak design can be a bit <a title="Getting all the keys" href="http://lists.basho.com/pipermail/riak-users_lists.basho.com/2011-January/002947.html">misleading</a> in this regard, as buckets are in fact <a title="Layout of Riak buckets" href="http://en.wikipedia.org/wiki/There%27s_a_Hole_in_My_Bucket">spread</a> throughout the key space. To retrieve all keys in a bucket, Riak will check every single key — possibly scanning gigabytes of main memory (for the very recent <a title="Riak search for Riak values" href="http://wiki.basho.com/Riak-Search---Indexing-and-Querying-Riak-KV-Data.html">Riak search</a> to help, you’d need to blow up your values quite a bit). And you still only have the keys. To get possibly millions of associated values, you need to move your little disk heads a lot. This is not always as bad as it sounds because Riak gives you streaming access to the data as it comes in. But in general, the smaller your buckets in relation to the entire key space, the higher the cost of retrieving many of them.</p> <p>The other major contender are column-oriented data stores of the <a title="The Google BigTable paper" href="http://labs.google.com/papers/bigtable.html" target="_blank">BigTable</a> family, the most prominent of which is <a title="Apache HBase site" href="http://hbase.apache.org/">Apache HBase</a> (the aforementioned Cassandra is actually somewhat in-between, having properties from both worlds). The two main differences for users of HBase vs. Dynamo style stores as far as we are concerned: <em>1. Data is stored per column family:</em> to retrieve the vector representations of a million documents, we do not have to scan through a million document texts. <em>2. Records are sorted</em> <em>by key</em>, much like in a traditional database (but optimized for fast inserts, using <a title="Log Structured Merge Trees" href="http://nosqlsummer.org/paper/lsm-tree">LSM trees</a>). This is a blessing and a curse. A blessing, because we can scan over contiguous collections of documents. A curse, because we are vulnerable to <em>hotspotting</em> on popular collections. To counter this, we need to make sure that there are random parts in our row keys, e.g. using UUID’s. Because HBase divides tables into regions as they grow and hands them off to other nodes, this method avoids hotspots. And we do not lose the streaming advantage as long as we use common prefixes per collection.</p> <p>Given our access patterns (insert documents, update clusters, re-process entire collections, fetch lists of clusters), efficient sequential access to selected parts of the data is very important. Sorted, column oriented storage seems to be the way to go. There are other pros and cons (single point of failure, write throughput, hardware requirements), but if we don’t cater to our use case, those won’t ever matter.</p> <h4>Clustering</h4> <p><em> Grouperfish must be able to handle small numbers of large corpora (millions of documents), as well as large numbers of small corpora (millions of collections). The generated clusters may contain thousands of messages each.</em></p> <p>This is practically a no-brainer: Apache Mahout supports in-memory operation (for smaller clusters) as well as distributed clustering (using Apache hadoop, for larger clusters). Mahout can update existing clusters with new documents and generate labels for our clusters. Of course, Mahout is a java-library, so we need to run it within a JVM. To simplify management and introspection, we will run our clustering workers in jetty web containers.</p> <h4>Scheduling</h4> <p><em> We need to be able to add workers to increase clustering frequency. When there are more new messages than can be clustered right away, we want them to be queued. Also, we have Node.JS and we have Java/Mahout. We want our queue to bridge the gap.</em></p> <p>Messaging has become a big topic as systems have become larger and more distributed. We want to use messages to decouple write requests from processing them. There is a very elegant solution to maintain queues, offered by the in-memory data store <a title="Redis" href="http://www.redis.io/">Redis</a>. Redis is somewhat like a developers dream of shared memory. No encoding and decoding of lists, maps and values as they enter and leave the stores — just operate on your data structures within shared memory. Unfortunately, Redis queues are really just a linked list with a blocking POP operation. While that is very nice, we want to track and resubmit failed tasks when a worker node falls victim to <a title="Not exactly rodents" href="http://theoatmeal.com/blog/fail_whale">rampaging rodents</a>.</p> <p>The considerations of choosing <a title="RabbitMQ" href="http://www.rabbitmq.com/">RabbitMQ</a> to realize a task queue are worth an article of their own. Suffice to say, it has Node- and Java-bindings, and it supports message Acknowledgement from workers. We still want to use Redis to keep track of collection size, to cache the actual incoming data (no need to ask hbase if we use it right away), and for locking of colections, so that every collection is only modified by one worker at a time. We also <em>might </em>use it to cache frequently requested clusters.</p> <h3>More Thoughts</h3> <p>Selecting these components, I learned that it is important to choose technologies in an unbiased fashion, and to reconsider decisions when a technology has no answer for your requirement. For example, I originally wanted to use just Riak for storage — I like its simplicity and style, and the bucket metaphor — but the enumeration of large buckets would be too slow for an online system. It might be fine for a batch-only system, or a system that just does not operate on collections of varying size as much.</p> <p>For a Message queue, <a title="zeromq" href="http://www.zeromq.org/">ØMQ</a> sounded awesome, offering low latency and powerful constructs, but I quickly realized that it is not really what I understand a <a title="Wikipedia on Message Queues" href="http://en.wikipedia.org/wiki/Message_queue">message queue</a> to be, but rather a very smart abstraction over traditional sockets. Probably someone will eventually build a distributed task queue on top of it though.</p> Spardabank Frankfurt Lights Up the Dark!2009-05-26T22:54:28ZMatthias Schulzhttp://www.thefoundation.de/about/matthiasspardabank-frankfurt-illumination<p>With <a href="lichtkunstlicht.de">Lichtkunstlicht</a> from Bonn, Germany and <a href="http://www.lichtwerke.com">Stefan Hofmann</a> we worked on the illumination concept for the <a href="http://www.sparda-hessen.de/">Spardabank Hessen</a>.</p><p>It all began in mid 2007, when I received the request for the production of a facade animation. For us the task was to deliver an animation of about 15 to 20 minutes, to be played back on the new mediafacade.</p> <p>We received several pixel mapping instructions from <a href="http://www.barco.com">BARCO</a> so <a href="http://www.thefoundation.de/daniel/">David</a> could start programming. He developed a script to convert <a href="http://www.thefoundation.de/daniel/">Daniel's</a> and mine animations to the format required by the content player of the facade.</p> <p> The most important goal was to create a seamlessly integrated animation, with the demand not to work as a advertisement screen, rather than to merge with the architecture of the building. <br/> Due to a resolution of approx. 50 horizontal and 1120 vertical pixels, it was not easy to create the content. The 50 horizontal pixels cover the entire new glass front of the building of about 150meters. The 1120 vertical pixels only cover 5 stories (approx. 20 meters). So we have a very different resolutions across the facade, what made it hard to imagine the final impression, while working on the animations with a computer. <br/> Finally we figured out a pretty fast workflow to preview our animations. We completely rebuilt the building with <a href="http://www.blender.org">blender</a> and thus used it to preview our work. We produced several preview animations in advance so we could test the animation before we render them in full resolution. </p> <p> <gallery slug="production-days-spardabank-frankfurt">Mediafacade Project »SPARDABANK«</gallery> </p> <h2> The Wave Theme</h2> <p> Since our work on the <a href="http://www.thefoundation.de/matthias/2008/oct/18/project-infinity/">Infinity light ínstallation</a> we thought about creating a wave theme for the bank's facade. The width of the building suited very good for animations on the horizontal axis so we developed several transformations of the wave from more static to more dynamic motions. The size of our <i>screen</i> forced us to slowdown the speed of our wave. The impression of the motions speed on the facade is completely different to that on a computer LCD. <br/> With the wave theme in mind we designed the rest of the animation. </p> <p> <youtube id="0rbD6Q64fJ8" /> </p> <h2>The Goldrain Theme</h2> <p> For christmas time we animated a special goldrain theme. After several test with ourt previz worklflow, we figured out that it was not easy to accomplish. Movement of falling vertical pixels looked boring, so we had to work with 3d particels to create the glittery effect. But finally we managed to create the look we wanted. </p> <p> <youtube id="lBXjqO_RfqQ" /> </p> <p> Finally we started the video in January 15th, about 2 year after the project began. </p> <h3>More information:</h3> <ul> <li><a href="http://www.thefoundation.de/matthias/2008/sep/10/animating-frankfurt-1/">Animation Frankfurt #1</a></li> <li><a href="http://www.thefoundation.de/daniel/2008/nov/04/production-days-spardabank-frankfurt/">Production Day: Spardabank Frankfurt</a> - Daniel's great article about our second field trip to Frankfurt!</li> </ul> Cheonan Architecture Visualization2009-01-15T00:01:16ZMatthias Schulzhttp://www.thefoundation.de/about/matthiascheonan-architecture-visualization<p>With Lichtkunstlicht we worked on an animated visualization of a complex, two layered media facade of a new Galleria store in Cheonan, South Korea.</p><p> Daniel, David, Julian and me met at our new production studio in Cologne. We had to complete the project within six days, so we had to start immediately. Fortunately Julian already worked on the 3d model of the building so we didn't lose too much time during our main production phase. </p> <p> The idea was to previsualize a facade concept of the light design agency <a href="http://www.lichtkunstlicht.de">Licht Kunst Licht</a>. The architects from <a href="http://www.unstudio.com/">UNStudio</a> designed a facade consisting of two layers. Each layer has its own structural bearing so that the facade seems to be transforming while the spectator changes his perspective. <a href="http://www.lichtkunstlicht.de">LichtKunstLicht's</a> concept was to seamlessly integrate an invisible media facade between the two layers. <abbr title="Light Emitting Diode">LEDs</abbr>, placed on the inner side of the outer facade layer, projected their light onto the milky inner layer. Over the main entrances of the building a high resolution facade is also seamlessly composed into the architecture. There is also a smooth transition between the high resolution and the low resolution parts of the facade. </p> <p> It was very important for the design concept that the integration of the facade would serve the art of the architecture rather than operating as a screen for information or advertisement. </p> <p> <gallery slug="cheonan-production">CHEONAN production team</gallery> </p> <h2>The final visualization:</h2> <p> <youtube id="UIHbZe2MFMw" /> </p> Production days: Spardabank Frankfurt2008-11-04T21:20:23ZDaniel Beckerhttp://www.thefoundation.de/about/danielproduction-days-spardabank-frankfurt<p>Again we are having some working days in Frankfurt to finally set up the illumination of the Spardabank-Hessen e.G. headquarters' facade.</p><p><a title="Matthias Schulz" href="/matthias/">Matthias</a>, <a title="David Murmann" href="/david/">David</a> and me are sharing a room in the <a href="http://www.moevenpick-hotels.com/de/pub/ihre_hotels/worldmap/frankfurt_city/uebersicht.cfm?CFID=1710177&amp;CFTOKEN=44466986">luxury Mövenpick Hotel</a> next to the <a href="http://www.messefrankfurt.com/corporate/en/">Frankfurt Trade Fair</a> and&nbsp;&ndash;&nbsp;determining this choice&nbsp;&ndash;&nbsp;<span title="French: literally »face to face«" lang="fr">vis-à-vis</span> with the <a href="http://www.sparda-hessen.de/">Spardabank-Hessen e.G.'s</a> <a href="http://maps.google.de/maps?hl=de&amp;q=osloer+stra%C3%9Fe+1+frankfurt&amp;ie=UTF8&amp;z=16&amp;g=osloer+stra%C3%9Fe+1+frankfurt&amp;iwloc=addr">headquatres</a>!</p> <photo slug="production-days-spardabank-frankfurt-2" size="display">Elevator crammed with equipment</photo> <p>After arriving on last sunday afternoon, we built up our tentative office in the top floors room 737. All together we have five computers, including two notebooks and one PC serving as main render client. This way we are able to keep on working, while our creations get rendered. Our daily routine includes working on <a href="http://www.adobe.com/products/aftereffects/">AfterEffects</a>-compositions till afternoon, <span lang="fr" title="French: literally »in passing«">en passant</span> rendering new and final compositions as well as test screens. During todays blue hour we took some footage of the building gaining the hindmost, steelblue sunbeams of this wonderful autumn day.</p> <photo slug="production-days-spardabank-frankfurt-4" size="display">David, working</photo> <p>Night is the time to check out how our work takes effect on the facade. From the roof garden of our hotel, we document which parts of our animation need to be altered and which geometric shapes are recognizable or not. Nearly every sequence of moving lines, dots, shapes and colors has to be altered again and again to get this last little dodge, which makes most of the capabilities of the LED-lightened facade. In the end there should exist a looped <q>movie</q>, shown on the facade from dawn till midnight.</p> <photo slug="production-days-spardabank-frankfurt-6" size="display"></photo> <photo slug="production-days-spardabank-frankfurt-10" size="display"></photo> <p>We have two days left to get some new themes running on the <a href="http://www.sparda-hessen.de/">Spardabank's</a> facade. I am looking forward to show you some video footage of the facade, up to now this footage is still waiting to be edited. Maybe this article will see an update with video soon!</p> <gallery slug="production-days-spardabank-frankfurt">Production Days: Spardabank Frankfurt</gallery> <p>By the way we are following the first predictions of the <q><abbr title="short for »President of the United States«">Potus</abbr></q> elections, presented by <a href="http://ard.de/"><abbr title="Arbeitsgemeinschaft der öffentlich-rechtlichen Rundfunkanstalten der Bundesrepublik Deutschland">ARD</abbr></a> on the giant, muted flatscreen dangling off the wall right beside my workstation! Exciting!</p>Touch Me - Interactive Lights2008-10-18T23:58:37ZMatthias Schulzhttp://www.thefoundation.de/about/matthiastouch-me-interactive-lights<p>Visualization for my idea for future architecture lighting. Sensors of any kind can have influence on light mood or even animation.</p><p> I created this short video for my portfolio for the <a href="http://www.khm.de">KHM</a>. It's an idea on how future architecture lighting could be solved. With sensors placed in the ground in front of a building with a media facade videos can be manipulated by the sensors values. </p> <p> <youtube id="ZjYWM69cUJ4" /> </p> <p> Here some high res images of the video:<br/> <gallery slug="touch-me-interactive-lights">"TOUCH ME" images</gallery> </p>The Foundation Showreel 20082008-09-21T01:42:13ZMatthias Schulzhttp://www.thefoundation.de/about/matthiasreel-2008<p>This <cite>showreel</cite> represents our visual effects and animation work of the past 3 years. It includes 3d work from <a href="/david/">David</a> and <a href="/on/animation/" title="articles on animation">animation</a> and <a href="/on/compositing/" titles="articles on compositing">compositing</a> work from <a href="/daniel/">Daniel</a> and me. </p><youtube id="41RT9SCHZB8" /> <p> In April I edited this <cite>showreel</cite> with nearly all the projects we finished during the past years. From short school projects to recent <a href="/on/compositing/" titles="articles on compositing">compositing</a> jobs. It mainly contains non commercial work we did, but work with our most creative output.<br/> I especially thank Jan for his crazy intro sound mix for my title displace animation. Excluded of this <cite>showreel</cite> are short films and recent projects we are working on right now. I hope to soon find the time to update this <cite>showreel</cite> because there are several visually interesting projects nearly finished. </p>Network rendering with After Effects2008-09-11T22:49:32ZMatthias Schulzhttp://www.thefoundation.de/about/matthiasnetwork-rendering-after-effects<p>How to use the outdated methods of Adobe.</p><p> I am still sitting here with <a href="/daniel/">Daniel</a> and <a href="/david/">David</a> in this small hotel room in Frankfurt. We have completed an animation for the facade and now we want to render the animation. </p> <p> Because of the resolution of the facade we animate with a resolution of 7000x1120pixels. And that is a lot of data! After Effects has the option to render only every 20th pixel, but unfortunately this doesn't always work with the used effects. Some effect are relative to the comp size and when you render only every 20th pixel the effects thinks the comp is much smaller and so the effect is different to the big comp size which produces unusable images for us. </p> <p> So this forces us to render the full frame, every of the 7000x1200pixels. To speed things we now render with two computers, one MacPro and one MacBookPro.<br/> <p> To achieve this you can use the hidden app <cite>aerender</cite> in the After Effect directory. Here you can finde it: </p> <p><code>/Applications/Adobe After Effects CS3/aerender</code></p> <p> Aerender is a command line tool to start and control After Effects rendering jobs. You can access everything of your project and set everything up. I actually do not know all the commands and much about using the terminal or other crazy stuff <a href="/david/">David</a> uses, but I managed to start the rendering :-) . Here is what I did: </p> <ol> <li>I have an animation completed and set it up in the <cite>render queue</cite> as I need it. Check the <cite>Skip existing frames</cite> box, when multiple machines render the same image sequence.</li> <li>Now, don't hit the <cite>render</cite> button! Just save the project and quit After Effects. It's easies if you only have one pending job in your <cite>render queue</cite>.</li> <li>Open the terminal and type:<br/> <code>cd /Applications/Adobe\ After\ Effects\ CS3/</code></li> <li>Then type:<br/> <code>./aerender /yourharddrive/projectfolder/project.aep</code></li> </ol> <br/> <p> This renders everything in the <cite>render queue</cite> as you set it up in the steps before. You can open a second terminal and run the commands again an now you have two instances. When doing this you have to render image sequences, otherwise it won't work. In my case this doubles rendering speed! If you have several computers in your network you can do the same on them.<br/> But for this you have to be sure After Effects has the same file paths on every machine. In this case it is useful to have all your data on a network storage, so you have the same mount point on every machine.<br/> </p> <p> <a href="http://livedocs.adobe.com/en_US/AfterEffects/8.0/help.html?content=WS3878526689cb91655866c1103a4f2dff7-79a3.html">Here</a> you can find Adobe documentation of <cite>aerender</cite>. </p>Animating Frankfurt #12008-09-10T14:56:53ZMatthias Schulzhttp://www.thefoundation.de/about/matthiasanimating-frankfurt-1<p>Creating images for a media facade. 2km of cabels and a UMTS internet card in a small three bed hotel room in the middle of Frankfurt, Germany. </p><p>Yesterday, <a href="/daniel/">Daniel</a>, <a href="/david/">David</a> and me moved all our stuff to Frankfurt, Germany to proceed with a project we began in 2007. A bank in Frankfurt redesigned their front facade and integrated a grid of LEDs into the glass facade. <br> So now we are here to animate a video for the facade. The tricky thing about this is the arrangement of the pixels. We have a grid of <abbr title="approximately">approx.</abbr>1100 Pixels vertically and only 49 horizontally on a building that is 6 stories high and 250 meters long. So we have 49 high resolution LED lines on the building. For our animations we have to consider this lack in horizontal resolution.<br> <a href="/daniel/">Daniel</a> and me animate the themes while <a href="/david/">David</a> is in charge of the correct pixel conversion of the animation and all the connection to the servers we need.</p> Now we really have to get something to eat! I will add some images soon...