EMERGENT README.TXT ------------------- version 1.02 (00.09.21) created by Alex Weyers (weyers@artsalliance.com) at the Arts Alliance Laboratory, San Francisco, CA Emergent is a random web college generator. It is an application written in C++ (using Microsoft's Visual C++) for use on the Windows 95/98/NT/2000 operating systems. Emergent is freeware available for you to try and use at your own risk. OPERATION - Double-clicking on the Emergent executable icon will start up the application. It will immediately attempt to establish an internet connection and begin crawling the web from a starting URL (at the moment, this is initially "cnn.com"). As it crawls, the URLs of the images encountered are stored and utilized to dynamically generate on-screen collages. The user may double-click on any image to bring up the web page whence it originated in the computer's default browser. The last 100 server URLs are remembered and used to randomly determine where the application crawls to next. The application will continue both crawling the web and regenerating the collage until it is toggled off (by selecting Collage->Active or pressing ESC) or quit (either by choosing File->Exit or by closing the window). FEATURES - Toggling on/off... Toggle both the web crawling and the collage generation on/off by selecting "Collage->Active" from the menu or by pressing the ESC key. Surf the web from an image... Double clicking on any image in the collage will bring up that image's source web page in the computer's default web browser. (this same feature is available when viewing the text listing of all visited/unvisited URLs in the Server Listing Dialog or the Current Image URLs by double clicking on any selection). Viewing where the Emergent is currently crawling... The URL of whatever page Emergent is currently scanning for new images is always displayed in the status bar at the bottom of the window. Setting the maximum number of images on-screen... Selecting "Collage->Set Number of Images" allows you to put a cap on the maximum number of images used in the collage. After this maximum is reached, new images continue to be added, but randomly chosen older images are replaced. This parameter can be set from a single image to 100 (a number arbitrarily chosen to keep things reasonable). Setting the speed of collage generation... You can control the length of pause between the presentation of one image and the loading of the next by selecting "Collage->Set Pause Duration." This number is in a meaningless unit that almost corresponds to miliseconds but doesn't really. Because some images take longer than others to load, this number does not necessarily represent a consistent speed of image replacement. The number can range from 10 (meaning the fastest image turnover/collage generation possible) to 30000 (which should represent about 30 seconds between each new image). * note - this does not affect the rate of web crawling which is always as fast as possible. Setting background color... You can set the background color by selecting "Collage->Set Background Color" and utilizing the standard Windows color-picker. Directing the web crawler to a particular URL... You can force the web crawler to go to a particular URL and begin searching for images there by selecting "Collage->Go To URL." This currently does not necessarily clear the memory of all images collected so far, so it does not guarantee that the collage will be formed solely from images found at the new URL. To do this, you need to check the "Restart search from this URL" box. This will clear out all known URLs for sites visited, unvisited, and images. Neither option, however, guarantees that the web crawler will remain at the site/domain you have chosen (it may very well end up somewhere completely different). Viewing an actual listing of the URLs collected... You can view a listing of all the URLs collected by the Emergent web crawler by selecting "View->Server Listing". This will display a listing of all the server/domains located by the crawler. These servers may be expanded by clicking on the '+' symbol next to them to display visited URLs at that domain, unvisited URLs at that domain, and image URLs located at that domain. In all of these cases, you can actually click on a URL to pull up that site in a separate window. You can also view a listing of all the URLs of the images currently being displayed as part of the collage by choosing "View->Current Image URLs." Once again, double clicking on a URL will pull it up in a separate window. Both of these dialogs were really put in for my own debugging purposes, but I'm explaining the functionality so you know what they do. FUTURE FEATURES - More intelligent crawling... More control over web crawling/image selection... More intelligent collage layout... Loading/Saving of collage sessions... Exporting of collages as bitmap, GIF or JPEGs... Background images... Image processing (transparency, resizing, cropping...)... Let me know if you come up with more ideas... KNOWN ISSUES - Program leaves a file called "EmergentImage" on my machine... This is a temporary file used when downloading images from the internet. In theory, I could delete it myself I just continue to neglect to. In theory, you could delete it yourself. It'll just come back again once you run the program. No harm, no foul. Program doesn't terminate immediately upon exiting.., This is because an internet operation is still in progress and currently the program waits until it finishes downloading the page or graphic before terminating. At the time that I created this, my knowledge of thread communication was nonexistent. Some day I'll fix this. But for the moment, an annoying little window begging for your patience will appear. Web Crawling is unintelligent... At the moment, the program will easily become stuck on web sites with many self-referential or redundant links. It is also possible for the crawler to simply run out of unexplored links and stop. A more intelligent algorithm will be utilized in the next version. Meanwhile, the program can be spurred on by feeding it a new URL with the Collage->Go To URL... menu selection. Collage generation seems random... Well, it is. But the algorithm for collage layout is not as intelligent as it could be. The next version will feature some increased efforts to minimize white-space between images and eventually multiple layout algorithms will be accessible to the user. The speed of image replacement is inconsistent... When you set the duration of pause between image loads, you are setting exactly that, NOT the duration between image replacement on-screen. There is a fine shade of difference. Some images (such as large jpegs) take a ridiculous amount of time to load, while others (such as small GIFs) take very little. Consequently, if several GIFs are loaded in a row, you might get a spurt of new images replaced before a long pause as some monstrous JPEG is downloaded and decompressed. In later versions, I will correct this by having multiple image loading connections open at once as well as a more accurate timing device that gives units in something resembling fractions of a second. The windows that list current images and servers don't refresh... Yes, these dialog boxes (which were really just there for my own debugging purposes) do not automatically refresh. They may be removed or significantly altered in future versions anyway. For the moment, you don't have to close and re-open the current images dialog to get an updated list. Clicking on the radio buttons to select current images should refresh the list. Sometimes checking "Restart from this URL" does not seem to work... This is because of sloppy multithreading on my part. If the crawler is currently crawling around some other site, it may still store that site's URLs while clearing out all others. If you want to be absolutely certain that the crawler starts afresh from some URL, deactivate the crawler (Collage->Active) and THEN select Collage->Go To URL... (with the "Restart" box checked). Send compliments, comments, bugs, and complaints to: weyers@artsalliance.com Emergent is Copyright (c) 2000 Alex Weyers This Documentation is Copyright (c) 2000 Arts Alliance Laboratory