About Mnemosyne Studio .*;

Welcome

My name is John McCullock, and Mnemosyne Studio is a private site I've devoted to the creative expression of artificial intelligence and robotics. In many ways I think of it as a semi-organized collection of my notes. It's handy to have access to all this--from any computer--anywhere I go. It's also handy to use parts of this collection for presentations in class.

Although everything found on this site is freely viewable to the public, I didn't originally intend for anybody but myself to understand any of it. So, forgive me if my train of thought wanders off in the middle of various subjects, leaving you with unanswered questions. As with anyone's research notes, these are bound to reflect how my mind works.

I hope the resources at this site will inspire more private inventors, robot-builders and creative thinkers in their endeavors.

Why Name It "Mnemosyne Studio"?

One of my college professors once wrote:

"As the engine of personal identity, memory stores our knowledge of self, offers a conscious awareness of being, allows us to present ourselves in an unending variety of ways, imagines different egos, and alters self-concept as needed. It forms a stable personality but simultaneously permits us to change with experience. It also governs creativity, just as Mnemosyne, the Greek goddess of memory, rules her nine daughters known as muses. And with memory we come closest to mastering time: In many ways, remembrance is our strongest link -- indeed, our only link -- to past, present and future."

-- Janet L. Jones

Funny thing about the human brain; the sheer size of its vast memory system dwarfs the modest mechanisms which do the processing. To better illustrate this disparity, allow me to make an outrageous analogy: Imagine building a computer with an old Intel '486 SX 33Mhz processor. Now let's add in 500 gigabytes of RAM and 100 times that in hard drive space! Sounds silly, but it's closer to the truth than you would expect. Take away all that gray matter (i.e.: the memory storage parts like the cerebrum, and a good chunk of the cerebellum), and the human brain isn't much more complex than that of a rodent's. Bill Gate's famous "640k" claim would be unspeakable.

So far, the development of artificial intelligence has focused mainly on processing, and little attention has been paid to memory. There's libraries and libraries full of algorithms for problem solving. These algorithms can support processing any size of input, no matter how small or vast. Some algorithms even store small representations of input in memory for later comparison. What most of these algorithms have in common is that the algorithm is in control, and memory is just there for support.

What would happen if we let the memory system be in control, instead of the algorithms?

What if we let the memory system choose the algorithms that solve the problems?

Last century, these ideas were difficult to implement, much less conceive. The technology was still evolving, and memory-driven A.I. would have to wait. It's only been in the last decade or so that A.I. has involved large amounts of memory; probably because computing technology recently evolved terabyte-sized hard drives and small memory chips with gigabyte capacity. Now we're seeing things like the Blue Brain Project, IBM's Watson, the LIDA cognitive architecture and others emerge on the A.I. scene, making use of this century's powerful computing technology.

Personally, I believe the real beauty of A.I. will appear as we try matching huge memory systems with comparitively modest processors. After all, Mother Nature proved it possible.

What's That Robot at the Top of the Page?

The little black robot pictured in the upper-left corner is a "Tobor" toy robot. A Tobor was the first robot I got to tinker with as a kid. Somewhere around 1978, Schaper Toys, Inc. produced the 9-inch tall Tobor with a simple remote control mechanism. Basically, it responded to sharp, loud noises like the populular "Clapper" electric switch (some of us older folks might remember this T.V. jingle: "Clap on! Clap off! Clap on, Clap off...The Clapper!"). Schaper called it their "telesonic system". The Tobor would drive straight until a loud, sharp sound was heard, which made it turn in circles. Another sharp sound would make Tobor drive straight again. In fact, the handheld "remote control device" was nothing more than a plastic lever that made a loud, sharp clicking noise when rubbed against the handle.

Unfortunately, Tobor became boring very quickly since it only did two things: drive straight, or drive in circles. It might have been more interesting if the arms and head moved, but I guess controlling all that with a simple loud noise would have been too complicated. And since Tobor was too slow and top-heavy, jumping it off a ramp wasn't much fun either.

Truth is, Tobor was much more fun to take apart with a screwdriver and study than it was to operate.

Why Is My Python and Javascript So Weird?

The way I see it, there are basically two camps in the coding style world: the "Compiler Camp", and the "Scripting Camp.

In the Compiler Camp, whitespace is practically a creative medium for any kind code format or documentation style. In C, C++, Visual Basic, C#, Java, etc., the compiler largely ignores whitespace. Hundreds of thousands of lines of whitespace won't hurt anything because the compiler strips it out.

In the Compiler Camp, programmers can easily afford to use long form code structures, because modern compilers optimize everything. We don't have to use the short-hand versions of a language, it doesn't matter. We don't have to use ternary operators, we can be creative and write out the whole "if-then" structure, curly braces and all.

In the Compiler Camp, variable names can be as long and descriptive as we want. Why care? Some say it's easier to read. But it doesn't matter because the compiler replaces the variable names with shorter symbols, anyway.

In the Scripting Camp, however, there are important reasons why things are different.

In the Scripting Camp, every last byte of code matters. Whitespace matters. Big time. Javascript, Perl, Python, etc., all get fed to their interpreter in raw form at run time. Every last byte of white space is something the interpreter has to spend time on, which can potentially slow everything down. So script coders have to optimize their code themselves; meaning tight, compact code. No long form structures. No long variable names. So the nature and conventions of scripting languages are very different from compiled languages. Python and Javascript are designed with the shortest short-hand methods of doing everything. Heck, when I look at Python, it seems like the short-hand of short-hand.

I imagine my Python and Javascript must look like a crazy person's delirious ravings in code. I think it's because I try to use the older long-hand coding styles where scripting languages expect short-hand. I mainly deal with compiled languages, and rarely do any scripting, so it shouldn't be any surprise that I never pay attention to scripting etiquette.

I thank those from the Scripting Camp in advance for their patience and sense of humor when reading my Python and Javascript.

About John McCullock

Currently a student at Portland Community College with plans for transfer to Oregon Institute of Technology, seeking a second bachelor's degree with double-major in computer science and electronic engineering.

Inducted into the Psi Chi Society at the Fort Lewis College Chapter in 1996.

Began building personal computers from scratch in 1993. Also introduced to microcontrollers, servos and rudimentary electronics.

Artificial intelligence first piqued my interest in 1992.

Spent the majority of high school life in the Art Department. Class work was displayed in Colorado Springs Fine Art Center three years in a row. Recognized by city of Colorado Springs for donating a fifty-foot mural to the downtown Red Cross Shelter.

Received first computer at age 11: The Commodore Vic-20. The most totally awesome thing to an eleven-year-old kid at the time, with its television output adapter, data storage tape recorder, 20kHz clock and whopping 5k of RAM!