I am a Systems Architect with over 25 years experience as a team leader as well as an individual contributor. I am presently seeking a permanent, hands-on technical leadership position in software development or systems operations. I am also open to select consulting opportunities.
My primary interest is in creating highly scalable, distributed, service-oriented applications utilizing around open tools and open standards. My current work involves developing applications to manage multi-Terabyte data sets using the Hadoop map-reduce framework and emerging NoSQL-style database technologies, including HBase, Hive, and Amazon SimpleDB.
My background, which encompasses both software development and systems operations, gives me unusual insight as to what is required to create systems that are scalable, reliable, and easy to administer. I bring a wealth of experience to any project as to what works in the real world and what doesn't, giving me the ability to lead a project away from common traps and pitfalls.
I'm a firm believer in the Unix philosophy -- as eloquently expressed by Eric S. Raymond in The Art of Unix Programming -- of building systems using simple, modular components that interface with one another cleanly. In keeping with this philosophy, I prefer using development methodologies based on rapid prototyping and small incremental improvements.
I have a passion for teaching and mentoring, and have taught classes in academic and corporate settings on topics including as Hadoop, Perl, SQL, the LAMP stack, Shell Scripting, and many others.
I believe strongly in using the best tool for the job. While my experience has led me to favor certain tools over others, I don't let that prevent me from using something else if it is clearly superior for a given task. I have consiously cultivated a platform- and vendor-agnostic mindset.
For most tasks, my language of choice is Perl. Having used it for nearly 15 years, I have found that Perl hits the 'sweet spot' of power, performance, and productivity. While Perl has a (mostly) undeserved reputation for being cryptic and unmaintainable, my experience has shown that this problem can be avoided through strong technical leadership that enforces adherence to coding standards, conducts regular code reviews, and mandates the use of source code analysis tools.
However, Perl's waning popularity and poor support in bleeding edge tools - especially those that run in the JVM - necessitates a different tool chain. Ruby and Python offer similar language features that can extend native Java classes and produce executable .class and .jar files.
I don't have a single preference for relational databases, and have used ever major RDBMS platform on the market (and quite a few minor ones). My extensive experience as a database administrator has given me an excellent understanding of the strengths and weaknesses of most of the open source and commercial databases on the market, both relational and non-relational. I draw on this knowledge to chose the product best suited for the task at hand.