“I wish tying my shoes was easy, like reading!” --Age 4 (ish).
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. I'm currently a Ph. D. candidate in the Computer and Information Sciences department at Temple University, anticipating graduation shortly.
I was born on October 9, 1984 (three weeks premature and with severe atrial tachycardia, which I outgrew) 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 lived in an apartment in Philadelphia during the 2006-2007 academic year, though I was only there half of the time, in my own personal winter. I didn't like living in constant fear of being shot, so when my coursework ended, I chose to move back and commute as-required instead. Being a computer scientist, I can conduct the majority of my work remotely anyway.
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. 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 research, programming, web development, and system administration, all of which I have pursued since childhood. 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.
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 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 anticipate earning my Ph. D. by 25 as well. 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 8, 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.
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 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 the Ft. Monmouth LRC LEO 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. I am currently a Ph. D. Candidate, University Fellow, Dean's Scholar, and member of the CIS Faculty Selection Committee at Temple. I perform biomedical and data mining research at the Data Engineering Laboratory, where I'm also the system administrator after being rapidly recognized by the outgoing administrator for Linux competence. Most of my work is in computer-aided diagnosis, particularly of biomedical images of the breast and brain. My dissertation is on creating new algorithms for streaming and sparse tensor analysis and applying these to medical diagnosis, particularly in brain images. I'm also independently doing some theoretical research in manifold learning and doing all sorts of wacky things to PCA.
In English, I am working on getting computers to automatically read your medical scans for you. I am working on a separate project to create a system that can diagnose early Parkinson's Disease in MRIs, among some other machine learning projects which I'm not yet ready to reveal.
I earned my Master of Science in Computer and Information Sciences (as a Ph. D. student) at Temple in August 2007 (exactly one year and three days from the date I enrolled) with a GPA of 3.89. My Master's project was the “Brain Image Data Mining System”. My final GPA for the Ph. D. program is about 3.92.
I am approaching completion of my Ph. D. program at Temple, and have both obtained ABD status and finished my dissertation. Why I'm still there in this state is a long story.
Though I have prioritized education, I do have some work experience, primarily in the educational, government, and small-business sectors. I'm currently employed to utilize machine learning techniques for user targeting within the advertising sector; 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). Specifically, I've worked as a supply systems analyst for the CECOM LRC LEO directorate of 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 also taught CS503, Data Structures and Algorithms in Java, at Monmouth University during the Fall 2008 and Spring 2009 semesters as an Adjunct Professor.
I have business administration experience, having founded two companies, the latter of which is quite visionary and is thriving nicely.
I know C++, Java, Visual Basic, Perl, Matlab, Prolog, GOLOG, C#, (X)HTML, CSS, Javascript, (My)SQL, RSS, XML, Flash, AJAX, and some 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 sysadmin at DEnLab. I'm particularly experienced with the Gentoo and Fedora distributions, which I also use at home. I know Mac OS X, NetBSD, and DOS as well.
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). 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. My verbal ability is often overlooked, but is also quite effective, and plays no small part in my ability to convey the ideas I arrive at. 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.
I can see, I can do, and I can also 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 (this ability is a particular talent of mine; I've yet to meet someone who shares it). I've even taught a graduate course in data structures and algorithms as an adjunct professor at Monmouth University. 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 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 at the moment, unfortunately.
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.
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. Especially annoying is Java's insistence that every checked exception that a line of code could ever throw must be caught - an insistence that in no small part made Java notorious for poor file I/O capabilities (prior to the introduction of the Scanner class in Java 1.5, anyway). 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 all 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.
For a very long time, people called me arrogant despite my having a complete lack of awareness of this aspect of my bearing and, later, a deliberate effort not to appear so. Lots of the arrogant people I ran into were harsh, biting, and demeaning to others, while I preferred to avoid drawing attention to myself and wanted nothing more than the reciprocation of warmth, dignity, and respect which I was so quick to give to others for the sheer potential inherent in them as human beings - but never received in return. I was hard-pressed to figure out what others could possibly see in me that resembled those I thought were truly arrogant, and I took a great deal of affront at being compared to those people.
But yes, I spent a good deal of my late teenage years introspecting and by now I am quite aware of this “aura” that I give off, almost certainly born of a superlative degree of self-confidence (it's actually just the knowledge that I am using the aforementioned potential inherent in all of us to a very great degree). There's also something I've come to refer to as the Bloodguard effect (after the eponymous characters of Stephen Donaldson's “Chronicles of Thomas Covenant”): I apply such rigid standards to myself that others cannot help but feel that I apply the same standards to them and find them wanting for the mere fact that they are human and make mistakes. Thus, even my personal moral code can intimidate, and some have outright demanded that I drop it, even though I would never make a similar demand of them.
That I am also human and make plenty of my own mistakes seldom occurs to them. :)
I no longer view arrogance as a shameful trait; I actually consider arrogance necessary for a healthy society. I'm not sure I use the same definition of arrogance that others do anymore, however. Consider:
Thus, perhaps you could say that I am arrogant but do not possess hubris, if we use Aristotle's definition of the word: hubris requires demeaning others. Aristotle defined arrogance as a profound virtue, but hubris as a vice. It should be noted that hubris is actually a result of low self-confidence (whether one is willing to admit it to oneself or not) - one improves one's own self-image by casting others down. A high level of self-confidence - what most people label arrogance all on its own - is actually protective against this sort of behavior. Regardless of the common attitude, history is not made by the humble.
My work sort of is my hobby. I like creating things - music, 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.