Right now it has some images captured from the program with some explanations, and I will likely use it more and more and update this page less and less, since its easier than vice-versa.
I have been intending to make HayWire/Barn Burner, my real-time memory visualization program available for everyone to play with for most of this year. As "Beta" is usually defined as being "feature complete", the problem was that I kept thinking up new features! That, plus a desire to show the program at a high level of craftsmanship, has caused me to keep putting off the release date. However, delay presents its own set of problems. My programs always come out best when I have a lot of people chiming in with suggestions, critiques, pointers to related projects, and error reports. The code gets right much faster that way, and I don't feel so lonely either.
I have uploaded a distribution to see what kind of response I get.This is the first version I am doing this with, on July 17, 2009. If you feel daring, give it a try. If you are not, then please wait a little while so we get rid of some of the nasty stuff.
All the usual warnings apply and then some. While it has been remarkably stable for what it does, it does do a lot to your running system while it is active. Almost entirely "reading" and no "writing" whatsoever into any other address space or process. Most of its impact comes from its intensive use of the processors and memory. Please don't run this on a system that people depend on for their safety or livelyhood, or that you can't afford to crash.
Also remember that this program dumps memory to your video screen, and that it doesn't care if the information is secret or not. Putting a high-quality screen dump up for other people to download just might release an unencrypted password, credit card number, or the URL of a porn site best kept private. If nothing else, consider converting images to lossy formats like JPEG at lower quality before sharing them. It isn't perfect. I am investigating sources for "blacklists" of memory areas I should redact (censor), and if there is ever a mainstream version of this program, auto-redact is essential.
So what exactly does this program do?
Its very simple - it copies memory from somewhere in the vast range of your computers equipment to a window on your screen at a rate of 10-30 frames each second. It dumps memory - in unconventional ways. Various sliders, menus, edit fields, and adjustment tabs let you adjust where, what, when, and how the dumping occurs.
Unlike almost all debugging and dumping tools in existence, this one is not designed as a working tool for programmers, rather its for entertainment and amusement. (Although I have found it useful as a tool as well). There are related programs like this that people use for forensic investigation, This one isn't. It isn't the best tool for spying on people, or for defeating copy restrictions either. This program is dedicated to extending human awareness of what their computers are doing in the large and small.
When the program starts up, you see something like this on your screen:
The program has a Dump Button which captures the current display buffer contents and writes it to a sequentially numbered file. Here is a recent capture from deep within Adobe PhotoShop CS-II:
A recent addition involved creating a perspective fly-over effect like this. It doesn't used DirectX3D yet (but later versions will):
An important tool for discovery is the Line Width Control, which lets you set the number of pixels per horizontal line. This unscrambles bitmaps and highlights regularities
The following link takes you to a PDF version of a presentation about Haystack I created using the Google web application for presentations. The screen graphics are several versions behind reality, but most of the information is otherwise valid. Lets Make Hay
While I am not commited to the license form I will use, I hope to make this available as free software. (I am waiting to see where I wind up working before I commit,in case they want to work Money$hot into their product plans). If its "just me", then I am intending to have a free version and a pay version, with the free version trailing by 6-12 months behind the pay version in functionality. This model seems to work well for GhostScript. Since we are starting with a free version, the timing is flipped, but should eventually drift to this plan.
So that is what we have. A FreeFrame plugin that runs EffecTV. Plus a DirectShow filter module that loads Windows-compatible FreeFrame plug-in, Plus a small Windows media-player demo application that uses that DirectShow filter to call the FreeFrame plug-in that runs the EffecTV system (which is itself a plugin media architecture).
Display of 16 of the 49 Effectors (visual transformation processes) available in the FreeFrame EffecTV plug-in. This plug-in was derived from the EffecTV project, lead by Kentaro Fukuchi and his international team.
The easiest part was getting EffecTV to run under FreeFrame. I had an excellant port of EffecTV from Linux to Windows to start with, courtesy of a mysterious individual named TimeCop. This boost, coupled with the designed-in simplicity of EffecTV and FreeFrame, made enormous + visible progress easy. Connecting EffecTV and FreeFrame took a long weekend, while geting the image "right side up" on Windows took a Summer. All of this convinces me that simple multimedia APIs are feasible and in fact have appeared in the wild.
My port of EffecTV to Freeframe, and the adapter for running it under Windows can also be found on the SourceForge project.
The implications of this are enormous. I now can produce an interactive sample reel program on a CD/DVD or "thumb drive", which runs by double clicking on an icon, that loads Freeframe and DirectShow filters included within itself, and not only promises but can be verified as to not change the Windows registry in any way that could cause DLL Hell or CODEC Hell. (I do save some settings related to file directory preferences in the HKEY_CURRENT_USER/Software/Multimedia Classics registry key, which I may eliminate just so I can brag about it without caveat. Since modern WinTel-type computers often come with 2 to 4 Gbyte of main memory, the address space is vast, and locating a partiuclar feature is like "looking for a needle in a haystack". So Haystack is the Freeframe plug-in name, and HayWire is the demo application.
Image from HayWire dump generator. It has three windows. A full-height virtual page map on the left, scale 1 pizel : 4Kbyte, on the right of this is a display of process-memory 512 pixels per scanline x 256 lines. Below that is a 512 x 224 variation with the bitmap-stride set to 64, revealing a collection of icons in memory. Memory can be visualized in many other ways than this by varying the control parameters sent to the Haystack data-visualization plug-in.
The drive to improve FFRamDump and FFDemo was intensified when I learned about Dmitry Vostokov. Dmitry Vosokov is an engineer at Citrix involved with debugging their virtualization products. Dmitry has attacked the debugging problem with rampant imagination and has created a large blog, written half a dozen books on debugging (with more to come). Dmitry has gathered a collection of cartoons about debugging, and developed a database of crash dump pattern-types. He has proposed a system of Astrology, several Sciences, and recently founded a Religion based on memory dump analysis. About 2 years ago, Dmitry experimented with rendering crash-dumps as music, and a friend suggested he create bitmap images, so he created a program called Dump2Picture which creates dumps that look very much like those produced by FFRamDump.
I told him about my stuff, and he replied with an invite to write a book for his publishing company. He then put out a book of artistic images that he had discovered with Dump2Picture while I improved FFRamDump. (There is nothing like the spectre of "getting scooped" to light a fire under an engineer). Dmitry has played with HayWire, HayStack, and even the earlier FFRamDump and has made several useful suggestions already.
I hope to have HayStack and HayWire ready in a week or so. If you wish to beta-test, let me know. (jamie A T fentonia period com).