I'm a software engineer from Los Angeles with an interest in a wide spectrum of computer science and software development. Lately this includes general algorithms and problem solving techniques, data structures, distributed systems, system design, web development, and systems programming.
You can find my contact information at the bottom of this page.
I try to be a pragmatic and well-rounded developer. I love to learn different technologies out of a genuine interest in gaining different perspectives, both to help me keep an open mind and to be mindful of the variety of different approaches that can be taken to solve a problem.
While I do take pride in my work, I don't waste time with being prideful. Instead I always defer to experience, but I ensure that I achieve a proper understanding instead of cargo culting.
For these reasons, I'm not really strongly opinionated about any one technology. Instead, I try to understand and appreciate the different benefits that each may provide.
I was pretty much computer illiterate before the age of 12. All of my life I had largely avoided computers, aside from specific instances in school when we were given time to work with them. This was a result of being warned and scolded lest I break them.
However, by the age of 11 I was at a point in school where computers were a necessity. Without a computer, I had to go to the library to type up school assignments, which wasn't always possible on the more frequent short-notice assignments. I had to write my assignments in perfect, inked cursive, being forced to appease draconian requirements which demanded no mistakes at all—no white-out allowed.
As the only student in the class without a computer capable of producing neatly computer-printed assignments, I was inconveniencing the teacher. So while other students could lazily type up assignments in a matter of minutes, I had to meticulously obsess over my writing.
This led to late nights, many rewrites, and stress—since I always cared for doing things right in school. I was tired of it, and somewhat embarrassed for not being “with the times.”
One of the times I was out on a construction job with my dad I noticed a computer ad magazine during lunch. Having nothing else to distract me, I began to read through it and—over the next few days on the job—naturally began to draw connections between prices and components. This gave me an idea of which parts were critical to a working computer and which weren't, which were the best parts for the money, and which places had them the cheapest. This was important considering we previously didn't have one due to how expensive they were.
Armed with this information, I made a deal with my dad which consisted of me keeping my grades up in school and helping him out at work for a few months so that I may earn the money needed for a cheap, custom built computer.
Eventually I did get my computer, but I began to lose interest, thinking there wasn't much else to learn about them as I knew them at the time.
I was rarely allowed to use our free AOL dial-up Internet connection, since it prevented phone calls from going through. On one of those rare opportunities I noticed an article on how to get started with “modding”—whatever that was—the game that I loved to play offline: Star Wars: Jedi Outcast. The example was to write a mod to slow down the speed at which rockets from a rocket launcher traveled at. They used words I had never heard before such as Visual Studio, compiler, C++, source code, and so on.
I distinctly remember a part of the article that talked about editing some line in some “source code” that apparently had the literal effect of slowing down the rocket! Kids often wondered how games were made, and this article was nonchalantly talking about modifying a game I loved. This blew my mind. This was around the time that the Matrix sequels were in theatres, and so out of ignorance I naturally imagined that this article was explaining how to get into something similar to the Matrix of the game. I felt a deep urge to understand all of it.