background preloader

Genetic Programming: Evolution of Mona Lisa

Genetic Programming: Evolution of Mona Lisa
[EDIT] Added FAQ here: Gallery here: This weekend I decided to play around a bit with genetic programming and put evolution to the test, the test of fine art :-) I created a small program that keeps a string of DNA for polygon rendering. The procedure of the program is quite simple: 0) Setup a random DNA string (application start) 1) Copy the current DNA sequence and mutate it slightly 2) Use the new DNA to render polygons onto a canvas 3) Compare the canvas to the source image 4) If the new painting looks more like the source image than the previous painting did, then overwrite the current DNA with the new DNA 5) repeat from 1 Now to the interesting part :-) Could you paint a replica of the Mona Lisa using only 50 semi transparent polygons? That is the challenge I decided to put my application up to. So what do you think? Like this: Like Loading...

Optimizing JavaScript code - Make the Web Faster Authors: Gregory Baker, Software Engineer on GMail & Erik Arvidsson, Software Engineer on Google Chrome Recommended experience: Working knowledge of JavaScript Client-side scripting can make your application dynamic and active, but the browser's interpretation of this code can itself introduce inefficiencies, and the performance of different constructs varies from client to client. Here we discuss a few tips and best practices to optimize your JavaScript code. Defining class methods The following is inefficient, as each time a instance of baz.Bar is constructed, a new function and closure is created for foo: baz.Bar = function() { // constructor body this.foo = function() { // method body }; } The preferred approach is: baz.Bar = function() { // constructor body }; baz.Bar.prototype.foo = function() { // method body }; With this approach, no matter how many instances of baz.Bar are constructed, only a single function is ever created for foo, and no closures are created. For example, instead of:

Operational transformation Operational transformation (OT) is a technology for supporting a range of collaboration functionalities in advanced collaborative software systems. OT was originally invented for consistency maintenance and concurrency control in collaborative editing of plain text documents. Two decades of research has extended its capabilities and expanded its applications to include group undo, locking, conflict resolution, operation notification and compression, group-awareness, HTML/XML and tree-structured document editing, collaborative office productivity tools, application-sharing, and collaborative computer-aided media design tools (see OTFAQ). In 2009 OT was adopted as a core technique behind the collaboration features in Apache Wave and Google Docs. History[edit] Operational Transformation was pioneered by C. System architecture[edit] Basics[edit] The basic idea of OT can be illustrated by using a simple text editing scenario as follows. Consistency models[edit] The CC model[edit] T(ins( ),ins( and

Polygons Evolving Into Your Custom Picture Polygons Evolving Into Your Custom Picture There’s now a configurable web app for the semi-transparent vectors evolution approach mentioned earlier. Using Firefox (among other browsers, but not Internet Explorer – the page is Canvas-based), you provide a JPEG URL and then hit the Start button to watch the image mutate and evolve. [Via Reddit. >> More posts Advertisement This site unofficially covers Google™ and more with some rights reserved.

Thinkmap visualization software facilitates communication, learning, and discovery. Why Bloom filters work the way they do Imagine you’re a programmer who is developing a new web browser. There are many malicious sites on the web, and you want your browser to warn users when they attempt to access dangerous sites. For example, suppose the user attempts to access An obvious naive way is for your browser to maintain a list or set data structure containing all known malicious domains. In this post I’ll describe a data structure which provides an excellent way of solving this kind of problem. Most explanations of Bloom filters cut to the chase, quickly explaining the detailed mechanics of how Bloom filters work. In this post I take an unusual approach to explaining Bloom filters. Of course, this means that if your goal is just to understand the mechanics of Bloom filters, then this post isn’t for you. A stylistic note: Most of my posts are code-oriented. General description of the problem: Let’s begin by abstracting away from the “safe web browsing” problem that began this post. of objects.

Software Updates: Courgette ‎(Chromium Developer Documentation)‎ The source code does not have this problem because all the entities in the source are symbolic. Functions don't get committed to a specific address until very late in the compilation process, during assembly or linking. If we could step backwards a little and make the internal pointers symbolic again, could we get smaller updates? Courgette uses a primitive disassembler to find the internal pointers. The non-pointer part is about 80% of the size of the original program, and because it does not have any pointers mixed in, it tends to be well behaved, having a diff size that is in line with the changes in the source code. We bring the pointers under control by introducing 'labels' for the addresses. How do we use this to generate a better diff? server: diff = bsdiff(original, update) transmit diff client: receive diff update = bspatch(original, diff) (The server would pre-compute diff so that it could be transmitted immediately) server: asm_old = disassemble(original) asm_new = disassemble(update)

HTML5, JavaScript and OpenGL: The Upcoming 3D Internet Technologies | TrueHit Designs HTML5, JavaScript, OpenGL and other technologies are paving the way for an upcoming explosion of 3D content which users can interact with on the World Wide Web. These new technologies will continue to help TrueHit Designs build unique websites, web advertisements, entertainment and other media which is attractive to the end user. We have compiled a short list of demonstrations to show you these unique technologies. First we will start with a simple test to show the 3D abilities. We now see a complete environment. With this demonstration you can see how we can demonstrate a 3D model to a user or perspective client. We can take this to an extreme and display a massive scale model, with very fine details. Let us move onto film. We now take the same video and environment as shown in the example to the left and demonstrate just how extreme the environmental effects can be.

Bloom filter Bloom proposed the technique for applications where the amount of source data would require an impracticably large hash area in memory if "conventional" error-free hashing techniques were applied. He gave the example of a hyphenation algorithm for a dictionary of 500,000 words, out of which 90% follow simple hyphenation rules, but the remaining 10% require expensive disk accesses to retrieve specific hyphenation patterns. With sufficient core memory, an error-free hash could be used to eliminate all unnecessary disk accesses; on the other hand, with limited core memory, Bloom's technique uses a smaller hash area but still eliminates most unnecessary accesses. For example, a hash area only 15% of the size needed by an ideal error-free hash still eliminates 85% of the disk accesses (Bloom (1970)). More generally, fewer than 10 bits per element are required for a 1% false positive probability, independent of the size or number of elements in the set (Bonomi et al. (2006)). . . . as before.

Wobzip - (Un)Compress on the Fly Workshop / Chrome Experiments Unfortunately, either your web browser or your graphics card doesn't support WebGL. We recommend you try it again with Google Chrome. Bitap algorithm The bitap algorithm (also known as the shift-or, shift-and or Baeza-Yates–Gonnet algorithm) is an approximate string matching algorithm. The algorithm tells whether a given text contains a substring which is "approximately equal" to a given pattern, where approximate equality is defined in terms of Levenshtein distance — if the substring and pattern are within a given distance k of each other, then the algorithm considers them equal. The algorithm begins by precomputing a set of bitmasks containing one bit for each element of the pattern. Then it is able to do most of the work with bitwise operations, which are extremely fast. Due to the data structures required by the algorithm, it performs best on patterns less than a constant length (typically the word length of the machine in question), and also prefers inputs over a small alphabet. Exact searching[edit] The bitap algorithm for exact string searching, in full generality, looks like this in pseudocode: Fuzzy searching[edit]

Top 10 Best HTML5 Websites of 2013 Here are our editor's picks for the Top 10 Best HTML5 Websites of 2016 based on visual artistry, integrated sound, ease of use, and uniqueness. 1 | The Wilderness Downtown The Wilderness Downtown is an interactive music video for Arcade Fire's song ''We Used to Wait''. Visitors are asked to input the address of the home they grew up in and then the site uses Google Earth and HTML5 to create a personalized music video that takes the user on a journey back home. 2 | Heart of The Artic Heart of The Arctic takes users on an Arctic expedition/scavenger hunt through four distinct environments designed to show users the steps that would be needed to restore climate balance to the arctic region. This site perfectly showcases how Html5 can be used to create fun and educational websites. 3 | Three Dreams of Black 3 Dreams of Black uses HTML5 to promote Danger Mouse and Daniele Luppi's album Rome.

10 Awesome Data Visualization Tools for the WebDigitalAnalog – An Online Publication for Creativity + Code Data Visualization is an upcoming and exciting field that represents data in aesthetically pleasing and readily comprehensible form. Instead of using boring excel sheets, data can be presented in a more creative format with the help of Data Visualization tools. The term Data Visualization is closely related to information graphics, information visualization, scientific visualization and statistical graphics. It presents complex sets of data in an interactive and intuitive way. Today we take a look at some creative and interesting Data Visualization tools that web designers and developers might find useful. Arbor.js Arbor.js is a graph visualization library built with web workers and jQuery. D3.js This is a JavaScript library that helps in manipulating documents based on data. D3.js is not a monolithic framework that seeks to provide every conceivable feature. Envision.js With Envision.js, you can create dynamic interactive HTML5 data visualizations. Google Chart Tools Kartograph Leaflet

dygraphs JavaScript Visualization Library

Related: