Michael S. Gashler

My Objectives

  • I am currently working on a Ph.D. in machine learning at Brigham Young University. My E.T.A. is early spring 2011. At that time, I will seek a publication-friendly research position that will allow me to set my own research agenda. I am deeply interested in the problem of enabling autonomous systems to model their own environments. I believe that this research is necessary to open the way for robotic helpers that can perform useful and complex tasks with minimal human direction. Currently, my research focusses on using manifold learning to estimate the hidden intrinsic state of dynamical systems as part of the model-building process.

My Refereed Publications

Pending Papers

  • I have submitted a paper to AAAI that presents a provably (with some reasonable assumptions) optimal method for removing shortcut connections from neighborhood graphs.
  • I have discovered a method for training recurrent neural networks that significantly outperforms evolutionary optimization, backpropagation-through-time, and other existing training techniques, with a certain broad class of problems. I am currently working on a paper that demonstrates using recurrent neural networks to model a complex dynamical system. I am eyeing JAIR as the publication venue for this paper.
  • I have invented a method for creating ensembles of manifold learners. I can demonstrate that my system combines results in a manner that improves overall accuracy, while simple averaging has the tendency to produce unstable combined results. I think ICML is the best venue for this paper, but unfortunately it's in Haifa this year, so I cannot afford to submit it this year.
  • I have invented an algorithm that intelligently selects neighbors. I can demonstrate that this algorithm enables self-intersecting manifolds to be unfolded. I will submit this to ICML or NIPS when I get it written up.
  • I have been working for several years on an open source machine learning package called Waffles. (See the longer description below.) I intend to submit a paper about it to the open source track of JMLR.

Employment History

  • Neural Networks and Machine Learning Lab Research assistant for Tony Martinez in machine learning at Brigham Young University May 2006 – Present
    Edumetrics Institute Worked as a development lead and engineer to build an interpreter training program and a decentralized multiplayer Internet game. Dec 2004 – May 2006
    Microsoft Worked for Microsoft on the Common Language Runtime (the .NET virtual machine.) I developed Code Access Security and the PE file Verifier. Jul 2001 – Nov 2004
    Vision Lab Did Image processing research for Bill Barrett. I worked on finding object boundaries by matching similar parts of successive animation frames. Jan 2001 – Jun 2001
    Microsoft Internship for Microsoft. I did performance work on the startup time of Visual Studio 7.0. May 2000 – Jul 2000
    Incline Software Worked for Incline Software on Ancestral Quest (which later became PAF). Apr 1998 – Sep 1999
    Waterford Institute Developed educational software for children. Jan 1998 – Apr 1998
    Scott+Charles Computer Wrote a Windows version of GlassMaster software for Scott+Charles Computer. GlassMaster is software for running a glass shop. May 1994 – Aug 1994

Open Source Projects

  • I am an avid hobby-programmer. Once an idea takes hold in my head, a mysterious force seems to compel me to immerse myself in bringing that idea to life. The following is an incomplete list of my projects.

  • Waffles is an open source library of machine learning algorithms. I started this project so that other machine learning researchers could benefit from the algorithms that I develop in the course of my research. It has slowly evolved into a huge library with a diversity of machine learning algorithms, utilities for data mining, and all sorts of classes that are useful to a researcher in this field.

  • Gnuology is somewhat like a Wiki for Genealogy. The idea is that all of your relatives should be able to work on the same data at the same time. The program itself is actually a full web server specifically dedicated for displaying genealogy data from multiple views, and for enabling people to edit the data directly through the web browser. This project has been largely eclipsed by the new Family Search tools, but it still has several novel design aspects that I believe are needed in genealogical communities.
  • Isotope is a decentralized massively multiplayer on-line role playing game that focusses on intellectually stimulating puzzle games. The idea is that people can develop puzzle games, post them on their own web server, and link them into the game universe. I invented this game for the Edumetrics Institute.
  • Tesla's Tangle is a board-game that I invented for fun. If you enjoy deep-thinking competitive strategy games, give this one a try. At one point I wanted to start a company behind this game, but I have since decided that I am unwilling to take that much time away from my research.
  • Other Projects

  • In high school (way back in 1993), I developed a package called Gashler's Great Game Generator. It was a map-editor, sprite-editor, tile-editor, etc. It had a wizard interface that would guide you to associate "personalities" with game characters, tweak game parameters with slider-bars, and would generate a game (side-scroller-style). Back then, this was really cool. Some neighborhood kids actually preferred my software to the game console of the time. (Remember the original NES?) I wrote this in Q-basic, but due to the limitations of that language, I had to write some routines in x86 assembly, which I then encoded as a Q-basic string. I dereferenced those strings and then tricked the machine into calling them as a function. I even interfaced directly with the mouse driver through this mechanism. Aah, those were the days, when life was about video games and I had the time to hack around any obstacle that got in my way!
  • I added a couple features to Kolourpaint (a KDE project).
  • To show my admiration for the United States Constitution, I wrote my own version that seeks to incorporate an additional two hundred years of hindsight.
  • I have written tools for pitch detection/correction, and various other signal processing algorithms.
  • Yes, I once worked for the Evil Empire. My code can be found in both VS and .NET, and my work has led to two of their patents. (As penance, I now work tirelessly to always use my powers for good instead of evil.)
  • I once worked for the company that made Ancestral Quest, which eventually became PAF.
  • I once designed a graphical interface for editing programming code called UPL. It could parse a grammar, and then would provide a visual interface that allowed one to edit the code without being able to produce code that violated the language syntactics. In other words, it constrained you to produce code that would compile. Unfortunately, it turned out to be more tedious to use than a plain-old text editor. Oh well, it was an interesting research project.
  • In my freshman assembly class, we were supposed to write a guess-a-number game in assembly language. I was bored, so I went home and reverse-engineered 8086 assembly. With no documentation, just a lot of bit-twiddling and "debug" (a low-level debugger that used to come with DOS), I built my own assembler. Then, using my assembler, I wrote a higher-level languaged called Tu. I was particularly proud of the fact that the image-blit function built into my language was two orders of magnitude faster than the image-blit function built into the language in which I originally wrote the assembler! Unfortunately, I became so engrossed in this project that I forgot to show up to the class midterm. I would have failed, but fortunately the professor agreed to give me a 'C' if I aced the final, which I did. Ha!
  • I enjoy image processing, and have written several tools for manipulating images.
  • I enjoy studying computer security. I invented a symmetric-key algorithm that allows you to plug in your favorite one-way-hash function for making cypher blocks. Cryptpad is a convenient tool I wrote to store my passwords. It uses my symmetric-key algorithm with SHA-256. I've had cryptography experts analyze my algorithm. I've also offered a $50 reward (that's all my wife will let me risk) since 2001 for anyone who can crack it. I also implemented RSA asymmetric-key cryptography from scratch. (I even wrote my own BigInteger class.) I used this to make a secure communication program, and several authentication tools. I also wrote a Javascript version so I could use cryptography within my web apps.
  • I wrote a simple tool that enables you to edit DVDs, without actually having to alter the DVD. That is, it records time-stamps of the ads you want to skip over, or the scenes that you want to skip, and then enables you to play back the DVD without having to manually skip those parts. The idea was that people could collaborate online to share "bleep" files and thereby improve the DVD watching experience for everyone.
  • Long ago I wrote some video games for the Waterford Institute.
  • I got started as a programmer by making video games. In my opinion, it's a great way to get people excited about creating things.