About Me

In a nutshell, I am a computer geek. From childhood I have been tinkering with electronics and computers. I started programming at the age of 9, like many beginning with the BASIC programming language. I have been a professional software developer since 2004 with the emphasis of my work in the area of autonomous robotics (i.e. robots that can operate on their own) and programming language implementation. When I'm not geeking out, I enjoy playing tennis, working out, DJing, and reading/learning about everything and anything!

Computer Scientist

I really really really love computer science and hold both a BS in Computer Science and MS in Computer Science & Engineering from Penn State University. There is nothing more profound, mind-blowing, and powerful to me than the concept of computation. My particular research interests and specialities are in autonomous robotics, artificial intelligence, and programming languages. I believe what makes me strong as a software engineer is my emphasis on computer science fundamentals and applying theory to real-life problems. I feel it is difficult to be a good software engineer without being a good computer scientist and vice-versa. My computer science foundation allows me to be a "jack of all trades" as a software engineer -- robotics, 3D graphics, programming language/compiler implementation, scientific computing, distributed computing, games, mobile apps, databases -- I seldom feel something is not within my grasp. I could not do these things without having a formal computer science background. What I think is most important is that even being out of school, I maintain a curious spirit -- always trying to learn more about my field simply because I love it. I hope one day to return to grad school to complete a doctorate in computer science - just for fun!

Software Engineer, Roboticist, and Entrepreneur

From 2004 until December 2011, I worked as a software engineer at Penn State's Applied Research Laboratory (ARL) - a defense research institution. The majority of my tenure there involved working on autonomous robots used primarily in military applications. Most of the robots I worked on were autonomous underwater vehicles (AUVs) but I have also worked on ground and aerial vehicles as well. My primary emphasis was on writing the software that drives the autonomy of those vehicles (i.e. I created the brains of the robots). In addition, I had to write the drivers for the various sensors, support tools like visual displays, simulators, and anything else we needed. I was often the lead software developer/project manage for our various contracts. I also participated in numerous fielded sea tests for running experiments of prototypes. My last 1.5 years at ARL were focused less on robotics and more on operations research - a field of study focused on solving difficult decision-making problems which were usually computationally-intensive and required a good understanding of computation theory, data structures, and algorithms. Working in operations research, we would solve difficult logistics and tactical strategy problems using mathematical models for military warfare applications (e.g. what are the most optimal ways [mathematically] for a submarine to engage a potential threat?)

After leaving my position at Penn State, I moved out to the San Francisco Bay Area to found a consumer robotics venture with an old college friend we codenamed Emoto Robotics. At Emoto, we created robots that have personality, human-awareness, intelligence, and were seemingly-sentient. My belief is that the reason consumer robots have not gone beyond the Roomba is that robots are still not relatable -- they seem like machines rather than living beings. The main product of Emoto was a software stack that gives robots these characteristics along with a prototype that runs said software. Robots that run the Emoto software stack become autonomous beings with state-of-the-art facial tracking (i.e. they know who you are and can follow you), speech recognition, a sophisticated emotions and relationship model, and other anthropomorphically desired behaviors.

Even though we had created a working prototype, as a hardware startup in Silicon Valley we had difficulty raising funding. There were a few reasons for this, but in the end we had to go back to the drawing board to rethink our business strategy, spend time improving the robot technology, determining market opprortunities across various verticals, finding avenues for market validation, and going to market through other means such as crowdsourcing and DIY manufacturing. Alas, my entrepreneurial ambitions had to be put on hold.

Unfortunately after about 9 months, I had to go back to working a normal job as I ran low on funds. However, my cofounder and I still tinker with robots in our spare hours and still ponder ways to bring robots to the masses. Having to get a job again turned out to be a most fortunate event where I had the amazing experience of being a software engineer at Willow Garage - the creator of the Robot Operating System (ROS) open source robotics stack and PR2 robotic platform. At Willow Garage, I designed, developed, maintained and improved ROS packages as well as worked on next generation consumer robotics platforms. It was a huge honor for me to work with some of the best researchers and engineers in the world in the field of robotics.

Alas Willow Garage went out of business when its founder decided to defund it and shut it down in August 2013. Since then I have returned to entrepreneurship and continue my work on creating social robots. I also continue to do software development consulting work on the side.

Teaching

During my last semester at Penn State, I taught introductory programming to absolute novice, non-technical undergraduate majors. I was the sole teacher for a class of 156 students while also performing my duties at ARL. As a student myself at one point, I was disappointed with the state of computer science education in the U.S. and the way programming and computer science were taught at major universities and wanted to try to make a difference. I designed my own course with all materials focused around making computation fun, interesting, and accessible. I started by writing the textbook for the class in the form of a wiki which was and still is freely available to all my students and anybody who wants it in the world. I believe education should be as low-cost as possible, open source, and accessible to anybody who wants to put in the effort. I built the course around the idea of practicality, doing things like making games and controlling robots. I spent a lot of time writing software libraries for my students so that they could do fun and interesting things. I basically did not sleep for five months, but the students enjoyed it so much and the majority were so grateful that it was all worth it -- I even ended up with a few students switching their majors to computer science! What else could a teacher ask for?