InquiryLabs

Politics, Programming and Possibilities

Stanley Williams and the Memristor

Ever since the discovery of the memristor was announced at HP labs last year, I’ve been fascinated by its story and its promises. Now, its inventor Stanley Williams has given a presentation (available on YouTube) that goes in to some of the mathematical details and further predictions that he has for the device.

It’s a 45 minute presentation, but if you’re interested in the future of computing, I think you’ll enjoy it. I was impressed with the foresight of Leon Chua who in the late 1960s and early 70s discovered via mathematical exercise the “missing circuit element” that should relate flux to charge. If I were him, I think I’d have lost a little confidence in my work if my predictions hadn’t panned out after 40 years.

In addition to the neat math behind it (the memristor is the only fundamental circuit component that is time-variant, and therefore cannot be described in a single equality relationship), Williams makes some stunning claims about the potential of the memristor. For example, in strange agreement with Ray Kurzweil’s predictions, Williams shows a 3D cube of memristors on his slides. He predicts that we will soon have memory storage devices that last for “geologic time” (i.e. thousands or millions of years) but that can react at nanosecond switching speeds. What’s more, because the memory is passive (no energy required to sustain) the memristor is perfectly suited to low-power and low-heat systems: in other words, it just makes sense to stack them on top of each other. Williams calculates a theoretical limit of 1 petabit of storage per cubic centimeter (I think he said square centimeter in the presentation, but I assume he misspoke, since his slide shows a 3D cube?)

Another exciting part of the presentation comes near the end where Williams shows how the memristor may play a role in the next 10 years of computing achievements. He highlights the work of the HP photonics lab and claims that data transfer will soon be achieved through light (photons) for distances greater than a micrometer. With the remarkable ability of memristors to be both memory and logic gates (they naturally form the “implication” logic function which Bertrand Russell showed could represent logical operations in the most compact form), Williams envisions a computing device with hundreds or thousands of cores in a 3D matrix, with photonic message passing between devices. He estimates that in 10 years, the combination of these two technologies will increase our computation-per-dollar by 100 times.

And last but not least was the incredible insight, this time once again from Leon Chua, that the memristor behaves much like a human neuron. The HP lab that invented the memristor is already working on a prototype chip that will attempt to emulate the neurons in a brain, much like the Bluegene-L system has achieved. As Williams pointed out in his presentation, the key here is emulation, not simulation. Up until now, we have only been able to simulate the brain with our computing technology. What will it be like to properly emulate it?

Three Roads Diverged

I’ve finally decided that it’s time to switch things up with the blog.  Actually, blogs.  You see, I’ve been blogging in three different places for a while now and it’s time to make it official.  Three roads diverged… and I will be inviting you to travel one of them.

Readers tend to be interested in my blog for one of three reasons (though I’m flattered, of course, when there’s more than one reason):

1. They care about me as an individual, i.e. my family and a few close friends (you will probably be interested in duaneandkelty.blogspot.com)
2. They care about software development, and are especially technical in the knowledge they seek (you will probably like inquirylabs.com/blog2009)
3. They care about philosophy and want to change the world with me (or at least see what I’m doing so they can do the opposite)  (you will probably enjoy canadaduane.posterous.com)

Feel free to determine which of the above categories of blog posts you are interested in and follow them.  The historical content on inquirylabs.com/blog2009 will remain as it is, but the new content will tend to be more technical in nature.

Also, for those who are interested in spiritual and philosophical matters, I will soon be telling my story about how and why I left the LDS church on my philosophical blog (canadaduane.posterous.com).

And finally, I hope you enjoy the many beautiful pictures of our new baby daughter, Rella May Johnson, on our family blog, duaneandkelty.blogspot.com!

Posted via email from Software Engineer on a Mission

  • 0 Comments
  • Filed under: Uncategorized
  • WikiLeaks: the Long-Term solution to War?

    I donated to WikiLeaks today in the hope that my little bit will help solve the bigger problems of the world.  I think WikiLeaks may be the long-term solution to the humankind’s pattern of warfare.  Here’s why:

    Tensions flare when misunderstanding abounds.  Misunderstanding is most common when communication channels are poisoned or non-existent.  Most organizations that are powerful enough to sway public opinion (such as governments and multinationals) tend to do so for their own benefit, not for the benefit of the whole.  WikiLeaks is a new paradigm in mass communication.  It’s the conscience of a new world.  Its premise is simple: anyone can anonymously provide documents to the world for free.  I believe that this simple mechanism could become the tool that eventually ends war because truth is a necessary element of understanding, healing, and eventually, peaceful co-existence.

    Eventually.  In the interim, WikiLeaks has a tough battle ahead.  Apparently the US government is snooping around trying to find ways to shut the operation down, as are many other groups.  Lawyers in the UK are scratching their heads trying to figure out how to get around this paralegal obstacle.  They can get the international courts to file injunctions (forcing people to keep quiet about things they know) but they can’t get WikiLeaks to obey the injunctions.

    Although it’s quite possible that the information released via WikiLeaks will put people like you and me in danger, I think the risk is small and worth supporting.  For example, WikiLeaks released the US Military’s 2007 order of battle—one could argue that this is a terrible threat to national security.  But on the other hand, WikiLeaks also released the CIA’s plans to foment war by swaying French and German popular support in favor of US plans.  From any one nation’s perspective, WikiLeaks is an evil to be overcome.  But from the perspective of a world community, it is the light of conscience that transcends borders.

    Posted via email from Duane’s Quick Posts

  • 0 Comments
  • Filed under: Uncategorized
  • A Few Photos from the Rally

    I just have a few minutes to blog, so I’ll share these photos and write about one highlight.

    Among the line-up of speakers at the Federal Building on Adams & Dearborn was an Iraqi woman named Fatima who was a professor at Baghdad University and is now teaching Arabic at a shelter here in Chicago.  She spoke in broken English, but the words that I understood were powerful.  Two weeks ago, she said, her sister’s family was killed in Iraq. She stood up with courage to tell her story here, and that was a message I felt more than I understood with words.  She is fighting for women’s rights, for justice, and she is trying to make a better world for her family.

    I’m glad Kelty & Rella were with me.  War is so easy to compartmentalize—I do it all the time.  But having my family nearby helped me to understand what the war of words is for and what rallies like this are worth—we want to treat all people with dignity, even if we don’t know them yet.  Everyone is someone’s son, brother, daughter, sister, and they deserve dignity, justice and peace as much as we do.

  • 0 Comments
  • Filed under: Uncategorized
  • Joining the End the War Rally Today

    Kelty and I will be marching with the End the Wars rally on Michigan Ave today (Thursday). It’s been Seven years in Iraq, all because of a false premise. We think it’s time to come home.

    If you’re in the Chicago loop area, join us at 5:30 PM by Dearborn and Adams.

    Posted via email from Duane’s Quick Posts

  • 0 Comments
  • Filed under: Uncategorized
  • Nice time zone converter

    Jonathan Berger made a time zone conversion website in a weekend.  It looks and works great: http://www.thetimezoneconverter.com/

    Posted via email from Duane’s Quick Posts

  • 0 Comments
  • Filed under: Uncategorized
  • If you are looking for a job, I want to talk to you.  Right here, on this blog.

    In an article at The Atlantic, Don Peck makes the statistics-laden observation:

    Even if the economy were to immediately begin producing 600,000 jobs a month—more than double the pace of the mid-to-late 1990s, when job growth was strong—it would take roughly two years to dig ourselves out of the hole we’re in.

    It seems strange to me to consider the economy as a “thing that produces jobs”.  Curiously, it should be the other way around, shouldn’t it?  As a consequence of having a useful skill, we engage in activities known as “employment” that benefit ourselves and others.  This collective “employment” is what makes up the economy.  If the confusion could be dispelled by an aphorism, then I’d nominate, “Ask not what job the economy can produce for you, but what job you can produce for the economy.”

    I feel very lucky to have an income right now, and to be employed at a company that is doing well enough that I don’t need to worry about job loss in the foreseeable future.  I have a privileged view of the world because of this (temporary) stability, and because of my background in computer science.  I’d like to take a moment to write about the future as I see it, given my perspective in technology.  I hope that if you are considering career possibilities right now, then reading this will give you some insight into why you should get as much education as possible in order to pursue a career in an information technology field.

    You should become an expert in computer science and apply your skills to the areas of bioinformatics, physics, robotics, or any number of fields that have problems to solve.  From my viewpoint, all jobs are becoming information technology jobs and everything else is going to eventually disappear except in developing economies.  Consider the following job categories that are on the verge of disappearing or have disappeared altogether: translation services, middle-men like publishers, music retail stores and book storesnewspaper editors, newspaper classifieds, answering services, travel mapsphone directories such as yellow pagestravel agencies, commodity colleges and universities, the entire industrial sector, etc., etc.

    The truth is that although people invest a great deal of time and effort becoming experts in specific areas, most fields of study include the seeds of their own destruction.  They do not teach you how to make yourself obsolete.  And by lacking this information, they lock you into a career that will, eventually, become obsolete.

    Computer science, on the other hand, is the study of solving abstract problems.  Once a problem has been solved, it is packaged up and reused to solve bigger problems.  For example, once computer scientists learned how to compress information in the zip file format, compression become popular all over the place.  Hard drive space was saved, and the time it takes to send files over the wire was reduced.  But consider this: there were no “zip file factory workers” who lost their jobs when zip files were created.  That’s because computer scientists are constantly leveraging their own work to solve harder and harder problems.  That’s why they will never lose their jobs, en masse.  They are positioned to become the gatekeepers of all human knowledge–and not out of some kind of elitism, but out of the nature of their jobs.  I want you to be a computer scientist so that you can solve more problems and find more job security than you ever thought possible.

    Medicine used to be a very slowly evolving science.  It was more of an art, actually, than a science: discoveries such as penicillin were usually made by accident and progress was very slow.  Slow, that is, until the human genome was mapped.  Suddenly, medicine entered the realm of computer science and information technology.  We could leverage the power of hundreds of thousands of processing units on the problems of disease and short life.  Even now, bioinformatics is growing exponentially.  The number of human genomes mapped today is in the dozens but will probably be in the hundreds or thousands this year.  Computer science in the realm of biology is a career move that will serve you well in the long run, and your contributions will serve the rest of humanity.

    Robot technology is finally starting to deliver on the promises it made in the 1970s.  Fewer and fewer of our products are assembled or sorted by hand.  There are robot services available in the home now, such as the roomba and the neato.  You can bet that there will be robots soon that can clean your walls, and a few years later, wash your clothes (if that will even be necessary), and do your dishes.  Once these technologies start working in the home, you can expect that automated processes will start to make more sense in the grocery store and even in the service sector (but better than the ones that already serve there).  Computer science is behind all of these technologies and roboticists will need to be fluent in computer languages as well as electronics and physics.  The beginning of all of these marvels is the internet which is making it possible to communicate between human and machine.  If you are looking for a place to start, may I (in a biased way) recommend web development?

    Then again, you don’t have to quit what you’re already good at.  Enhance it with a degree in computer science.  Learn how to make your job obsolete, and you will have the most job security in the world.  The economy depends on you (and 6 billion others like you) to learn this skill and teach it to others.

    Posted via email from Duane’s Quick Posts

  • 0 Comments
  • Filed under: Uncategorized
  • I’m liking the duckduckgo search engine

    After hearing about it on ycombinator, I switched my browser’s default search engine from Google to DuckDuckGo a couple of days ago and I’ve been quite impressed so far.  I like that it puts the definition of my query front and center, if it’s available (Wikipedia is usually the source of the definition).

    I also think DuckDuckGo has a better disambiguation system than Google’s results page.  For example, I was searching for the price of gold and was lazy so I just typed “Gold” in to the DDG search bar.  A whole list of interesting meanings for gold came up that I didn’t realize existed (such as the Gold parser, or the 1934 film called Gold).  I didn’t find the price of gold, so I typed out the full “Price of Gold” and immediately found what I was looking for.  The “right answer” seems to be the first link more often than not.  I’ll keep experimenting.

    Posted via email from Duane’s Quick Posts

  • 2 Comments
  • Filed under: Uncategorized
  • Getting WxRuby to Work on Mac OS X

    I have Ruby 1.9 running on Leopard and recently tried to get WxRuby running.  Unfortunately, it was giving me the following error:

    irb -r wx
    /opt/local/lib/ruby1.9/gems/1.9.1/gems/wxruby-2.0.1-universal-darwin-9/lib/wxruby2.bundle: [BUG] unknown type 0×22 (0xc given)
    ruby 1.9.1p129 (2009-05-12 revision 23412) [i386-darwin9]

    It turns out that I had installed using “sudo gem install wxruby” when I should have installed with “sudo gem install wxruby-ruby19″.  Fixed!

    Posted via email from Duane’s Quick Posts

  • 1 Comment
  • Filed under: Uncategorized
  • Using Rave : Ruby + Google Wave

    I’ve been playing with Google Wave recently and enjoying the challenge of making a robot for the platform.  My challenge is to create a robot that looks for “Q:” and “A:” markup and submits questions and answers to a flash card service such as FlashCardDB.com so that my Inuversity study group can use spaced repetition to optimize our study sessions.

    Because the Google Wave team first released a Python version of their robot api, I started work on the project from that direction.  Unfortunately, Python’s “mechanize” library is not as well developed as I would like to see it.  For example, among other difficulties, the ClientForm library that it depends on was unable to parse the login form at flashcarddb.com.  In addition, due to the limitation that Python’s mechanize library does not easily allow me to simulate an XmlHTTPRequest, I finally gave up on that approach.  Since Ruby’s Mechanize library is in much better shape, I thought it might be an option.

    Since I am familiar with Ruby, I searched for possible Ruby/Wave solutions and discovered the 3 main contenders (Rave, Robot Sinatra Template and Wave Robot Ruby Client).  I chose Rave because of its “package” feel: The author, Jason Rush, has worked to make each step easy from configuration, to development, to deployment.  For example, building the Java WAR file is a simple “jruby -S rave war” command, and configuration is as simple as filling out a yaml file.

    I followed the directions at Jason’s introductory post about Rave and quickly deployed my first “bot” using jruby and the Rack+Rave framework.  Unfortunately, I soon realized that version 0.1.1 of Rave which has been released to the world does not support robot versioning!  That meant that I could not increment the version number of my software to indicate that I had made changes.  The robot was stuck at version 1.0.

    This problem was solved by Jason and other contributors in the latest source code.  As of this writing, it’s not packaged as a gem yet–so I went to his git repository to get the latest.

    One gotcha: since upgrading from 0.1.1 to 0.1.2, the rackup file (config.ru) has changed.  I received this cryptic error which indicates I needed to change the line in config.ru from “run Remembry::Robot.new(:name => ‘remembry’)” to ”run Remembry::Robot.instance”.

    javax.servlet.ServletContext log: unable to create shared application instance
    org.jruby.rack.RackInitializationException: private method `new’ called for RemembryRave::Robot:Class
    from /base/data/home/apps/remembry/1.339256739153417236/WEB-INF/gems/gems/rack-1.1.0/lib/rack/builder.rb:46:in `initialize’

    Also, I tried using an integer number to version my robot, but integers don’t work (use a string, such as ‘12′ instead of 12):

    sun.reflect.NativeMethodAccessorImpl invoke0: TypeError: can’t dup Fixnum
    /base/data/home/apps/remembry/1.339257167247162572/WEB-INF/gems/gems/rave-0.1.2-java/lib/models/robot.rb:16:in `version’

    In addition, it used to be that the packaged gems were configured in the Warbler::Config block in config/warbler.rb, like this:

    Warbler::Config.new do |config|
      config.gems = %w( rave json-jruby rack builder hpricot )
      config.includes = %w( robot.rb appengine-web.xml )
    end

    But it appears that the new config.yaml file is the place to put gems and other configuration:

    robot:
      name: Remembry Bot
      image_url:
      version: ‘9′
    appcfg:
      version: 1
    gems:
      - hpricot

    And finally, in order to accomplish my task, I needed to use Ruby’s Mechanize library but because the latest version of Mechanize depends on Nokogiri which in turn depends on Ruby’s Foreign Function Interface (FFI), I had to downgrade from Mechanize 0.9.3 to 0.8.5.  According to this google forum, FFI will never be supported in App Engine.

    More details on this project to come later!

    Posted via email from Duane’s Quick Posts

  • 0 Comments
  • Filed under: Uncategorized