“I do not want to live in a generation whose most notable accomplishment is Angry Birds”.
I'm a complex person, and I feel keenly the passage of time. By nature, this summary is going to leave many facets of my personality, skills, talents, and philosophies out. I'll try to paint a more complete picture in the following sections, but no number of words can completely characterize something as ineffable as a life.
That said, what do you want to learn about me?
My name is Michael Barnathan. I guess you could call me a computer scientist, though that's sort of incomplete. The pinnacle of my "traditional" career was likely the Senior Software Engineer position I held at Google, which also kicked off a nationwide speaking tour on reforming STEM education at the high school level. I've also been the Director of Software Engineering at Owen Software, Chief Software Developer at Wixity, and a Data Scientist at Media6Degrees (where I was known as “Dr. D”). Though my defensive skills in ultimate frisbee may be the stuff of legends, the doctorate is quite real - I earned a Ph. D. in Computer and Information Sciences from Temple University in May 2010 after four years of determination and hard work.
I was born on October 9, 1984 (three weeks premature and with severe atrial tachycardia, which I outgrew after my first year) in Brooklyn, New York, where I lived until the age of 9. My family then moved to Monmouth County, New Jersey, where I currently reside. I am not a “city person”: I have attempted to live in both New York and Philadelphia in the past, yet always find myself returning to my suburban roots.
My Myers-Briggs type is INTJ and I fit it fairly well. Consider yourself warned :)
Pretty much anything that I find interesting, though most would label me either a computer scientist or an entrepreneur. I'm sort of a generalist, but I'm not spreading anything - were I to specialize, I would demonstrate no additional ability… I would just be very bored. I know this from experience. One of these days, I hope to be called a polymath, but I'm not sure I've earned that label yet. So far, I've done work in theoretical computer science and mathematics research, programming, system administration, web development, biomedical research, musical composition, art, poetry, philosophy, photography, and even some psychology and sociology. I've also found the time to found one business and one non-profit, though these endeavors are confounded by my inability to effectively market. (If you can market, we should collaborate on something).
If I must be pigeonholed, my primary field is computer science, particularly in the areas of machine learning, programming, web development, and system administration, all of which I have pursued since childhood (albeit machine learning in a very primitive way). My primary research interests are in data mining / machine learning, bioinformatics, data structures, discrete and continuous mathematics, software development and associated methodologies, artificial intelligence, and artificial creativity. Within data mining, I find automated manifold learning particularly fascinating, as it replicates the concept of abstraction using only statistics. I also have a significant amount of expertise in graph mining, owing to my work in graduate school, at Media6Degrees, and at Google. However, my single greatest exposure within machine learning is to singular value decomposition, its high-order variants (HOSVD, PARAFAC, Tucker...), and their applications. By formulating the grid-based clustering problem as a localized (and locality-sensitive) form of latent semantic analysis and using WaveCluster as a base, I was able to synthesize the first high-order clustering algorithm, forming the basis of my dissertation. Following this work, I GPLed my implementation of the low-order WaveCluster algorithm, making it the first publicly available implementation of WaveCluster.
The sections of this site comprise almost all of them. I also summarize them in my resume and CV.
Here's a brief and tragically incomplete summary: I started programming at 7-8 years old, did web. dev. from 10, released an online game that eventually attracted about 10,000 users at 12, was coding rather advanced algorithms at 14, won a 50k user programming contest at 15, got a job as a lead web developer at a small historical documents business at 16 (it succeeded my first job as a cashier; I received it by telling customers what happened during the years of their purchase totals), started doing research at 17, published my first article at 20, graduated Monmouth University with the highest GPA in my class in 2006 (B.S. CS, Math minor, Summa Cum Laude, GPA 3.96) at 21, winning a $5,000 award in the process, earned my Master's Degree in CIS from Temple University (2006-2007, GPA 3.89) at 22, became an adjunct professor of computer science at Monmouth University at 23, took a data scientist position at a fast-growing advertising company at 25, and earned my Ph. D. in Computer and Information Sciences from Temple University (2006-2010, GPA 3.92) at 25 as well. Right before I turned 26 I left the job at the advertising company and joined Google as a Software Engineer. I was promoted to Senior Software Engineer at age 27, then left to focus on my startups. It has been a wild ride and I've picked up many awards and responsibilities along the way.
I do in fact hold myself to an internal timeline, and I am in fact running behind it, thus the tally of ages. Here's the longer version:
I began accumulating credentials at 8ish, when I began programming. I took to it like a duck to water (but only after breaking 5 or 6 systems in the course of my early learning) and was exhibiting signs of talent by 10 (around the time that I began designing websites as well). This culminated in what I refer to as the magnum opus of my childhood: I released a multiplayer online puzzle game called Metasquarer at the age of 12. Nothing I'd do until 18 would beat this. Several algorithms used in this game were quite sophisticated and demonstrated an intuitive understanding of concepts such as geometry, linear algebra, and computational complexity theory well before my first exposure to these subjects (in particular, do refer to the “square finding algorithm” in my portfolio. It has a complexity of O(n) - which is optimal - and I first wrote it at 12). Within a few years, approximately 10,000 users were attracted to this application through word of mouth (though the popularity has since declined). At age 14, I created a computer opponent that used alpha-beta pruning (an AI concept which I wouldn't hear about until 6 years later) from intuition. I ran an Ultima Online shard called Final Aegis from 16 onwards and became somewhat of a scripting legend in the Ultima Online emulation community, since I wrote a lot of really creative things that people didn't previously think were possible to write given the restrictions of the Sphereserver emulator.
Despite this, my middle and high schools did not offer any sort of computational training and no one was present to notice or care about these accomplishments (indeed, I didn't realize their full depth myself until I reached university), so my learning was entirely autodidactic until I enrolled in a university, frequently conflicting with the more prosaic work I was assigned in high school. The programming took priority, which damaged my high school GPA severely but conferred priceless experience in my future major and profession. The introduction of a conflict between what was right and what was acceptable also proved highly developmental. Even now I still look back to it for inspiration, painful as it was to be a pariah at the time.
I attended Monmouth University from September 2002 to May 2006, graduating with a Bachelor of Science degree in Computer Science (Mathematics minor) Summa Cum Laude as well as a $5,000 award for graduating with the highest GPA in my class (3.96, Class of 2006). The irony of catapulting from a high school ranking in the bottom 50% to the very top in college was not lost. For a complete list of awards I received at Monmouth, please refer to the “academic” portfolio section.
Though not a particularly challenging school (likely a result of my “deviant” priorities: I had 10 years of experience in my major at a time when most were just starting out), Monmouth allowed and encouraged me to fully explore my own potential, and I participated in activities as diverse as tutoring mathematics, computer science, and history, leading the campus ACM chapter as Vice President (2004-2005), President (2005-2006), and Webmaster (2004-2006), publishing an AI paper with Dr. Richard Scherl, performing independent research in computer science and mathematics, organizing community service events as an Officer of the Lambda Sigma Tau honor society, representing the entire School of Science, Technology, and Engineering as a member of the STE advisory council, making my concert debut as both a pianist and composer (at the same concert), and starting my own business.
I also worked two concurrent tutoring jobs from 2004 to 2006 and in a SCEP position in Ft. Monmouth from 2005 to 2006 while doing this.
Following my graduation, I immediately enrolled in the Ph. D. program in Computer and Information Sciences at Temple University, studying machine learning and computer assisted diagnosis. After four years of long, arduous, and frequently pointless work (and an amazing number of administrative delays which prevented me from finishing it in three), I defended my dissertation, entitled “Mining Complex High-Order Datasets”, and attained the degree. Though my exposure to the machine learning field, as with computer science as a whole, is broad, I have particular experience with keyblock-based texture learning within MRIs and mammograms, branching pattern analysis of galactograms, functional magnetic resonance image (fMRI) clustering and analysis, recommendation and co-clustering systems based on singular value decomposition (SVD) and tensor decompositions, graphical mining and metrics, and spatiotemporal data mining. My dissertation work involved creation of a comprehensive data mining framework for classification, co-clustering, concept discovery (e.g. detecting the concept of “handedness” in subjects based on fMRI scans), summarization, and compression of high-order spatiotemporal datasets, with principal applications in fMRI. In the course of this work I also devised a tensor-theoretic multidimensional discrete wavelet transform, extended the WaveCluster algorithm to accept real-valued high-order image data, created a novel clustering algorithm based on WaveCluster called TWaveCluster, mitigated the massive partial volume effect inherent in grid-based segmentation (by deforming the grid in a context-sensitive manner prior to clustering), and released the first public implementation of WaveCluster (which I have opensourced under the GPLv3).
In English, I am working on getting computers to automatically read your medical scans for you. I have founded a medical company, Living Discoveries, which specializes in computational diagnostics. In addition to developing its first project, Digital Mammographer (see just how good I have been able to make it), I am working on two separate projects for diagnosing and monitoring Parkinson's Disease, among some other machine learning projects which I'm not yet ready to reveal. Actually, very many of my inventions have yet to be revealed, as I have become extremely disillusioned by the system of academic publication and tend not to formally publish many of my findings anymore.
I earned my Master of Science in Computer and Information Sciences (as a Ph. D. student) at Temple in August 2007 with a GPA of 3.89 and at last earned my Ph. D. in Computer and Information Sciences in May 2010 with a GPA of 3.92. My Master's project was the “Brain Image Data Mining System”. My dissertation, Mining Complex High-Order Datasets, in which I extend classification, clustering, compression, feature extraction, and wavelet analysis to high-order tensor datasets and use these techniques to discover interesting things about the brain, may be downloaded from this site.
Though I have prioritized my education (and prioritize Education in general; significantly improving it is a life goal and the focus of my present full-time startup activity), my professional credentials are likewise well-established. I've worked as a Senior Software Engineer at Google from September 2010 to September 2012, primarily on their development infrastructure tools (for instance, build and test tools of such scale that they make anything available to the industry look downright silly by comparison). Prior to that I was the Chief Software Developer at Wixity and prior to that I was a Data Scientist at Media6Degrees (utilizing machine learning techniques for user targeting within the advertising sector). That was my first full-time non-academic job, though I spent a year teaching both undergraduate and graduate algorithms and programming as an Adjunct Professor at Monmouth University while I was in graduate school at Temple. I've also done quite a bit of freelance work, mostly web and software development, for various individuals and small organizations (for example, RDA International, The Art of Play, and Schneiderman and Associates). I also did a few things while I was in high school and college, prior to seriously launching a full-time career. Specifically, I've worked as a supply systems analyst for the United States Army at Ft. Monmouth, as both a tutor (Sep. 2004 - May 2006) and researcher (Sep. 2003 - May 2005) at Monmouth University, as a researcher (at first voluntarily, then as a research assistant) and system administrator at Temple University's Data Engineering Laboratory (Aug. 2006 - Present), and as the Lead Web Developer and System Administrator of Kaller Historical Documents (May 2001 - Feb. 2003).
I have business administration experience, having founded two companies, but I am more inclined to use business as a means to solve society's problems and create change rather than to start a business for the sake of starting a business (though I suppose the freedom would be nice...). This at times impairs and at other times enhances my success.
I know Java, C++, JSP, Visual Basic, Perl, Matlab, Prolog, GOLOG, C#, (X)HTML, CSS, Javascript, (My)SQL, RSS, XML, Flash, AJAX, and shell scripting. I've worked with all versions of Windows since 3.1 and was a Windows Vista and Windows 7 Beta Tester (I found a bug that crashes Windows Vista's calculator of all things, but it's fixed in Windows 7), but I really like Linux, which I used to sysadmin at DEnLab and still administer on my own server (in fact, I've set up the server you're reading this on from scratch). I'm particularly experienced with the Gentoo distribution, which I also use at home (and on this server; the versionless property and timely updates fit a server environment perfectly). I know Mac OS X, NetBSD, and DOS as well.
I've recently become involved in circuitry, having built a solar powered GPS, an ambient orb-like device (but better!), an automatic plant watering device, a voltmeter, a touchless thermometer, and a glowing umbrella. For now this is just a hobby, but I will eventually commercialize my devices.
Here is where I get to brag about myself :). The previous section was my history. This is what the history suggests:
I believe that my philosophy, my insistence upon freedom and autonomy, and the mere fact that I care (in a very fiery, passionate way that is impossible to convey) plays a large part in my success. Here are some of my abilities:
I can learn new programming languages very rapidly, often in a span of a week or less. I am quite creative in both the analytical and artistic senses, likely a result of a very powerful intuition, which guides my overall cognition in a universal and sometimes nonlinear manner that is not bound to any particular field. Intuition and ideas lie at the heart of everything I've done. Because I possess such a broad knowledge-base, I am adept at fusing concepts from multiple fields to derive new compound ideas (similar to the process of chemical synthesis). This is totally learnable and I am trying to teach everyone how to do it through my “Project Polymath” initiative. My mathematical intuition is also superb: I've taught students in advanced mathematical courses that I've never even taken and performed novel research in subjects I've never formally studied. I work problems out subconsciously; there's a good chance that by the time I set pen to paper, I've already solved the entire problem. This means I may take some time to think before I write anything. Though I have a firm grounding in reality, I'm also quite a visionary - I have the power to both see and do, as some of my more auspicious ideas will attest.
Education is among my greatest passions. I study it holistically, but I really make it my business to teach. I've tutored people at all levels, from giving instructions in Ohm's Law to my 7 year-old gifted cousin to tutoring graduate students in mathematics and computer science in courses that I had never even taken, such as topology. Only a few years after taking a course in data structures and algorithms at Monmouth University I came back as an adjunct professor to teach it at the graduate level. Knowledge is a wonderful thing, and I pride myself in being able to convey it well. I'm particularly good with the gifted, but I've also tutored people who literally couldn't add two negative numbers without a calculator at the beginning and had them doing calculus by the end of the semester (this did take many regular meetings and a good deal of motivation on the students' parts, however). One of these students won an award for best improvement in the EOF program (right before Monmouth got rid of it, interestingly), having ultimately attained a B+ in her calculus class, up from an F when she first came for tutoring. This isn't even so much an innate ability as a realization that intuition, rather than logic, is the root of understanding. Present a concept intuitively and almost anyone can grasp it. Never start with the formalism, always the intuition, because once the intuition is in place, the formalism suddenly fits very easily into the puzzle and you see exactly why things are the way they are.
Finally, I can lead, although I would honestly prefer to delegate this to someone else most of the time. I've assembled communities ranging from hundreds to thousands around common ideas. The same intuition that allows me to mentally complete problems before setting pen to paper allows me to create sweeping strategic visions that cater to any set of available resources and waste as little as possible. This ability is further augmented by my study of algorithms, for algorithms are simply generalized problem-solving strategies guided by the goal of achieving optimal use of available resources. Though a thinker at heart, I also possess an internal warmth and moral character that recognizes and affirms mutual respect and humanity - an additional dimension complementing the exigencies of abstract strategy and algorithmic thought.
If you haven't guessed by now, I'm an internal perfectionist and an ambitious (perhaps hopeless) idealist with a very strong sense of self and a very well defined code of morality.
Not actively at the moment, though I am still open to extraordinary opportunities. I left Google, the “#1 place to work” and the pinnacle of every geek's dream - where I was doing exceptionally well and pulling in promotions and a crazy high salary - to work on my own startups, which gives you an idea of just how strongly I'm driven to make an impact. Appeals to my purposes in education or medicine are most likely to succeed, as are positions where I possess some level of decision making to go with the ground-level work. I really want to make the world a better place using all of my unique talents, which are unfortunately overshadowed in the professional world by my particular skill at software development, and which tend to be sidetracked towards others' “purposes of the moment” or “views of where I fit”.
I should mention before going further that I'm not currently interested in relocating to California or Washington. Other relocations are possible on a case-by-case basis. I am particularly interested in the rocky mountain region at the moment, but that's really just because I like the outdoors.
There are a few things which will catch my attention. No company in existence will have all of these at once, of course:
That depends. Please email me information on the research problem you're investigating as well as why you're interested in that particular problem. If I feel that our interests and personalities align, I'll be happy to work with you.
Note: I am not particularly interested in publishing for its own sake. When I publish something of my own accord, it is because I've discovered something worth telling others about - and I only intend to say it to the world once. Do not expect the prospect of publishing a paper alone to excite me; it is what the paper says that counts.
I've worked with many different languages over the many years I've been programming, but my favorites would have to be Perl, C++, and Matlab, in that order. In general, I prefer flexible languages that allow succinct expression of complex high-level ideas (and Perl takes this to an extreme). The language should also stay out of the way, so to speak - that is, it shouldn't make things any harder than they need to be. All other things being equal, I prefer dynamically typed languages to statically typed languages, since they let you do this sort of thing:
print join(', ', map { $_ ** 2 + 4 * $_ + 5 } (0..100)) . "\n";
Rather than much clunkier sorts of things you need to do in statically-typed languages:
//Computes the function f(x) = x^2 + 4x + 5 over the domain [0, 100].
const unsigned int max_x = 100;
for (int x = 0; x <= max_x; x++) {
cout << pow((double) x, 2.0) + 4 * x + 5;
if (x < max_x)
cout << ", ";
}
cout << endl;
I don't like languages that prohibit techniques on the basis that most people don't use them well (Java...). The reason for this is simple: different programmers think differently. For example, I find pointers and recursion intuitive, despite the fact that these are apparently considered poorly understood by most programmers - and I don't see why I shouldn't be able to use them. I find concurrency a pain in the neck, but I don't go around saying languages shouldn't support it. I also don't like languages that attempt to adhere too closely to a single paradigm, because people start to get funny ideas about what does and doesn't fit the paradigm and end up doing things like prohibiting default arguments (C#), which not only makes programmers' lives harder, but becomes an interoperability nightmare (ever try calling some of the Windows APIs directly in C# using DllImport? It's not pleasant; they have many default arguments with complex structures that you now need to create and pass).
In short, I want my programming language to stay out of my way and let me express what I'm trying to express as eloquently as possible. Perl does that, even if it's incomprehensible :)
I prefer to code bottom-up, but I'm equally comfortable coding top-down. I usually end up approaching the decision on a case-by-case basis. I tend to plan nontrivial projects on UML before starting to code to ensure that I'm not missing anything. I comment my code liberally and I always use intuitive variable and function names (even in the above example, “x” has a meaning as the primary variable in a mathematical function f(x). If the problem were less abstract, I'd use something like stock_index as a variable name instead). I generally avoid notational conventions that obfuscate variable names, as they produce less readable code by obscuring the function that a variable serves, which, to me, is more important information than the variable's type or scope.
Yes, if you ask. I'll teach anything I know, not just development. I had to learn it on my own, but that doesn't mean you have to as well.
I don't consider myself a polymath yet, but I do hope to be worthy of the title one day. At the moment, I am but a philomath.
My thought processes most closely echo those of Henri Poincaré - like Poincaré, intuition rather than logic is my primary foundation of understanding. The universality of both my approach and Poincaré's is likely a direct result of this, and in fact, I strongly believe that anyone who is able to think in this way can learn nearly anything because intuition is intrinsically universal.
Anyway, I believe that I have demonstrated through my actions that the pursuit of breadth does not entail a sacrifice of depth. Quite the contrary - the perspective that a multidisciplinary approach brings can enhance proficiency in almost any field of study. For example, I've used examples from photography to promote philosophical relativism (there is no one true photo of a tree; change the exposure and you get a different photo of the same object. Digitally manipulate the photo and it's still recognizable as the same tree, but it no longer appears the same way. The line is drawn in our perception, but our perception does not alter the fact that the object in question is still a tree, or might appear that way to others). I could not have derived this without studying both photography and philosophy. My philosophy in general also makes use of several linear algebraic principles, including ranks, bases, kernels, the rank-nullity theorem, spans, and images. Finally, I'm also doing some research that may link the fields of sociology and oncology: for all the laws governing city growth, and the lack thereof governing tumor growth, cities and tumors exhibit quantifiably common growth and texture patterns, and it is thus possible to use social theories in cancer research (and vice versa)! Most think these fields are wildly disparate, but they share a thread of commonality.
Quite simply, no specialist could think of that. Specialists simply lack the required interdisciplinary background to make the connection. And even if an ambitious bimath were to notice the pattern and make the connection, he could not quantify his findings without a background in digital image processing.
Despite this, the sad trend in our society is towards hyperspecialization. Even worse, most specialists tend to converge on whatever fields are “hot” at the time. Such things are invariably social constructs. In other words, the vast majority of potential fields of study are completely neglected because most people are focusing on a few “nifty” subfields (or those that are simply well-funded). Society is starting to acknowledge that interdisciplinary work is a good thing, but it proposes to perform it by assembling teams of specialists, none of whom have the background to completely understand what they're doing. Not only is there no synergy in such an arrangement, but the communication problems inherent in large team projects make this a very questionable practice to begin with.
In my opinion, this needs to change, and the sooner the better. It's a better idea to broadly educate the individuals, especially because there is no consequent sacrifice of depth (I did it; so can many others). Thus I have made it one of my life's goals to see the implementation of Project Polymath, a plan for a new type of university with a heavily interdisciplinary curriculum. The ultimate goal of this extremely ambitious vision is nothing short of a second Renaissance.
My work sort of is my hobby. I like creating things - music, circuits, art, poetry, literature, websites, programs, ideas - it doesn't really matter what. I always need to be busy doing something, to the extent that my teachers thought I had ADHD as a child (when in reality, I just fidgeted a lot because I was tremendously bored in school). I do have a few non-work hobbies: chess, reading, cooking, video games, volleyball, long walks, and browsing Wikipedia are some. Exciting, huh? :)
Trust me; I'm almost never bored when I'm allowed to manage my own time. There's always something exciting to do!
I have a female orange tabby cat named Snickers (my brother named her). She was born on April 1, 1998. She has found all sorts of creative ways into tricking the family to give her more food than she should have and has grown overweight (although despite her girth, she is apparently not clinically obese). Despite her age and weight, she is still very energetic and playful. She seems to like listening to music, and often curls up near the piano when I play.
I'm very much a “cat person”. I can't see myself owning a dog - they're too loud and want too much attention. A binturong or a llama, sure. But probably not a dog.
If you'd like to get in touch with me, you can email me at michael@barnathan.name.