Whether it is developing software that billions of customers use, or it is building software that generates millions of dollars in revenue, I love solving problems that are seemingly unsolvable and have a significant impact across various disciplines. I like to think of life as a non-deterministic finite state machine, and that each state transition provides an opportunity to learn, innovate, and make a difference.
In my free time, I experiment with technologies, provide technical consultation, and serve as a technical reviewer for computer science conferences and journals. When I am not working, I am usually found in the outdoors either biking or exploring the nature on trails with my dog.
Software systems research, architecture, design, development, debugging, and maintenance; large-scale software systems; programming languages; compilers; runtime systems; computer architecture; data structures; algorithms; concurrency and parallelism; multi/many core architectures; parallel and distributed systems; cloud computing; compute, storage, and network virtualization; high-performance data storage; database design; networking; computer security; stream computing; and statistical analysis.
Leadership and project management
Product strategy; planning and execution of technical roadmaps including gathering requirements, managing project priorities, release schedules, and deliverables through the entire project lifecycle. Instituting best practices for software product development and Agile management techniques and tools to improve engineering productivity, and software quality. Performing project analysis, risk assessment, and proposing mitigation strategies.