Michael S. Gashler



Husband / father ● Research scientist ● Philosopher
Inventor ● Programmer / Hacker ● Rapidly balding guy

(Not a medical doctor, rock star, quantum physicist,
socialite, super-hero, or billionaire philanthropost ...yet)



Academic mumbo-jumbo:

Research interests

I am fascinated by the process of learning, and I seek to enable machines to learn as humans do. I believe they will eventually be able to understand what they observe and improve with experiences just as effectively as humans. My research focuses on systems that learn to perceive meaning embedded within high dimensional data such as digital images, sensor arrays, and documents. Most of my innovations involve novel training methodologies and structural variations for deep artificial neural networks that make them more effective at perception tasks. My work falls in the proximity of deep neural networks, time-series prediction, non-linear dimensionality reduction, inference of intrinsic feature representations, black-box system identification, and cognitive architectures.

Curriculum vitae

Online courses

See my free online courses.


Philosophical ramblings:



Open source stuff:


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. It includes tools for classification, regression, collaborative filtering, non-linear dimensionality reduction, clustering, Bayesian graphical models, ensemble methods, data visualization, sparse matrix processing, optimization, reinforcement learning, and deep neural network learning.


Miscellaneous Tinkerings:

Read about my instantiation of Archimedes' death ray! Okay, it's really just a sun-oven, but it's pretty-much the same concept.
Here's a picture of a treehouse I built with my kids. It is also wired for electricity.


Graveyard of dead projects:

These are not failures. They are just some of my learning experiences.

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.

I started a project called GPeerReview that enables peer reviewers to sign their reviews with cryptographic signatures. The ultimate idea of this project is to provide an alternate mechanism by which scholars could establish credibility. That is, in addition to publishing in well-known journals and conferences, they could also directly seek the verifiable endorsement of their peers. An extended abstract that I wrote about this project was accepted for publication at a certain peer-reviewed venue, but I decided to pull it due to exorbitant fees and certain questionable review practices.
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 did not write Kolourpaint (a KDE project), but I did once add a couple small features to it.
The Declaration of Independence makes reference to "unalienable rights", which no honorable government can justifiably regulate. The U.S. Constitution enumerates a few of these in its Bill of Rights, but it is by no means exhaustive, and certain branches of government have felt at liberty to exercize little restraint except where explicitly described therein. It is, therefore, necessary for the people to explicitly claim their unalienable rights before power-seekers do. This is my Declaration of Unalienable Rights. Unlike the Constitution, it is not a document directing governments to limit their own actions. Rather, it is a declaration by the people that we will honor no laws that tread in unalienable territory, and that our governments must find the means to govern without infringing on our rights. Also, it is written with the advantage of 200 years of additional experience and hindsight. It is my ultimate hope that this idea may catch on, giving people in oppressed nations a banner under which to unite in defiance of their inappropriate governments.
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 believe in altruism, and I contribute to Wikipedia when I can. I wrote most of the content on the following pages: Manifold learning, Ensemble learning, Transduction (machine learning), Graduated optimization, Markov models, Backpropagation through time, I made non-trivial contributions to the following pages: Lagrange multiplier, Hill climbing, Dihedral angle, Principal component analysis, Long short term memory, Kalman filter, Naive bayes, Random forest, and I have made many small contributions and edits to pages too numerous to list.
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.