I have been an avid chess player for over twenty years. Although I no longer have time for tournaments, I still enjoy playing online and with friends. I have studied every phase of the game quite extensively: opening theory, middle game tactics and strategy, and end game technique. I have also taught many kids, my own and many of my friends' kids, and have developed a friendly, non-intimidating style that works well with many kids. Finally, I have a chess library of several dozens of books, videos, and software, all of which I would be happy to bring to tutorials. Chess is a great game and I enjoy introducing kids to its intricacies.
I have an undergraduate degree in architectural and civil engineering from University of Texas at Austin. I have a master's degree in transportation engineering from University of California at Berkeley. I have been a practicing engineer for over 20 years.
I routinely employ many programming paradigms, software development management and quality assurance/control techniques, including object-oriented programming, agile programming, unit testing, requirements specification, re-factoring, and configuration management. I am proficient in more than five programming languages, so I have extensive experience in putting programming theory into practice. I have lead three major production-quality software projects through design, development, testing, and maintenance. I have worked in and managed software development projects with up to seven programmers and testers.
I can program in more than five computer languages, including Java, C++, Python, awk, Objective C, and various shell languages. I have developed dozens of production quality software programs ranging from hundreds of lines of code to several thousand lines of code. I routinely write new programs for approximately 60% of my professional work. I write iPhone apps in my own free time.
I can program in more than five computer languages, including Java, C++, Python, awk, Objective C, and various shell languages. I understand, and routinely employ, many standard algorithms and data structures, from the everyday to the esoteric. For example, I have used recursion, binary sorting, bloom filters, hash tables, object-oriented programming, functional programming, genetic algorithms, and many other techniques.
In addition to theory, I have a wealth of practical experience, having developed dozens of production quality software programs ranging from hundreds of lines of code to several thousand lines of code. I routinely write new programs for approximately 60% of my professional work. And if that wasn't enough, I write iPhone apps in my free time.
I have been using DOS since before Windows and continued to use DOS through the Command Prompt application present in every version of Windows to date. I routinely write batch scripts to automate various maintenance on my machines at work and launch other programs when specific environment variables need to be set prior to their launch (as is typical with distributed batch jobs on massively parallel/grid computers).
One of my primary jobs at the MITRE Corporation (my day job) is economic cost–benefit analysis. As such, I have studied and practiced many concepts from microeconomics for years. Also, I have taught many people—both students and professionals—the theory and proper application of microeconomics.
I have been using linux (and Cygwin) for about six years. While I have not mastered every nuance of Linux, I am quite proficient at command line utilities, piping results into other utilities, re-directing output, etc. I also routinely write bash scripts to automate various maintenance tasks on my machines at work and to launch other programs when specific environment variables need to be set prior to their launch (as is typical with distributed batch jobs on massively parallel/grid computers). Again, I am not anywhere close to a Linux administrator, but I know Linux better than probably 70% of my fellow employees—an impressive number in a building full of science and engineering geeks.
I have been using Macs since their purchase of NeXT and subsequent introduction of OS X. I have also been developing OS X applications for almost seven years. As a result, I not only know how to use Mac's slick user interface, but I also know what's going on under the hood. So, whether you are new to Macs and OS X, or just want to take your knowledge to the next level, I have the knowledge and experience to help you get there.
I use Microsoft Outlook everyday at work. Beyond the standard email and calendar functionality, I use rules to help manage the large amount of email traffic in my account. I also use forms, embedded objects, enterprise vault, and many other less familiar features of Outlook.
I have been using computers since the days of Apple IIe and 8086 machines. I quite familiar with computers in general when Windows made its debut, so I was able to look under the hood to see how Windows interacted with the underlying DOS operating system.
Of course, Windows has changed a lot over the years, but a lot of the core configuration and settings infrastructure is still the same (environment variables, .ini files, etc.), so I am still considered a Windows hacker in my circle of highly skilled science and engineering geeks. I have also made it a point to learn all the new features and interaction paradigms with each new version of Windows, up to and including Windows 8.
I have been an avid photographer for over twenty years. Having cut my teeth shooting on film, I learned how to frame shots and set exposure levels without the assumption of "fixing it in post." Having said that, I have embraced the latest technologies, using Photoshop, GIMP, and other photo editing tools. I have experience teaching photography basics to kids and adults and have developed a step-by-step, incremental approach to learning photography.
I was an active member of Toastmasters way back when I began my career and the public speaking skills I picked up there have made me stand out among my peers (engineers and scientists). Consequently, I have been the public face on many projects over the years and won several research grants due in no small part to my accessible presentations of highly technical material.
Additionally, I began performing stand-up comedy throughout the DC metro area and have performed a handful of times in New York City, Boston and Baltimore. I am still no Louis CK, but standing in front of a crowd of strangers several times a week has become very comfortable for me and, more importantly, has allowed me to learn how to modify my presentation style to fit whatever audience is before me.
I have been an active Python developer for over six years. I have migrated to Python 3.x, but I can still work with old 2.7 code. I would say I'm one of the most advanced Python programmers in my office—a building full of science and engineering geeks. I use all of the major Python libraries including logging, configuration file parsing, multi-threading & multi-processing, as well as many advanced libraries for SQL integration, networking, XML/KML/HTML/etc. file parsing, and others.
I don't think this is terribly important, but want to mention it just for completeness: I have yet to take full advantage of Python's dynamic language features, but I have dabbled in them and can follow along when I need to look under the hood of some of the built-in libraries. I would call mine passive knowledge of these features rather than active knowledge. But, as I said, these features are probably not necessary for the vast majority of problems.
I am an active developer for Apple's OS X (a certified Single Unix System, Version 3 by The Open Group), which typically requires using both graphical tools (such as Xcode) and command-line tools. Of course, typical users of OS X don't need to know much, if anything, about UNIX, but as a developer, I must work with OS X as UNIX in order to understand what my programs are doing under the hood. Additionally, I have been using Linux and Cygwin (both considered clones of Unix from a user's perspective) at work for about six years.
While I have not mastered every nuance of Unix and related systems, I am quite proficient at command line utilities, piping results into other utilities, re-directing output, etc. I also routinely write bash scripts to automate various maintenance tasks on my machines at home and at work and to launch other programs when specific environment variables need to be set prior to their launch (as is typical with distributed batch jobs on massively parallel/grid computers). Again, while I am definitely not a Unix administrator, I know these systems better than probably 70% of my fellow employees — an impressive number in a building full of science and engineering geeks.