I started programming at the age of 15(few months after my family bought a computer :)) when I stumbled upon a book about web-development. The idea of easily creating and sharing information all over the world fascinated me, so I immediately created a couple of websites and shared them for fun. Later, I tried to make some money, so I dived into internet marketing, SEO etc… and I was relatively successful,creating and managing over 10 websites on a dedicated server generating around 5000 users/day at peek time. Along the way, I’ve created a couple of softwares to promote websites, scrape data, post content, break captchas etc…
I’ve dealt with multi-threading, socket programming, text categorization, declarative configuration before joining a computer science college, thanks to the .NET framework and Google search.

While I enjoyed the usability aspect of the C# ecosystem. Things were a black box. I wanted to dig more under the hood and have more control over the environment I’m working on, so I switched completely to Linux and tried to learn as much as possible about kernels and compilers during my college years. I’ve struggled a lot but the overall experience was amazing.

After graduating, I’ve become interested in software engineering and programmer’s happiness. I’m glad that I have developed a couple of ideas in my first job(apart from my main tasks) that become later frameworks/libraries used across most company projects. The two major ones are implementing a DSL for specifying data views(data to be displayed in grids/charts etc…) and RESTfully query these views(specifying dimensions levels and filters). The second project is a test framework (on top of Mocha) to easily(decalratively) test and benchmark web-services. Currently, I work full time (with the help of many folks) on these tools(sadly, they are not open-source).

I consider myself as a language-agnostic programmer. Mostly working with Javascript, but familiar with a couple of languages, paradigms and architectural patterns. And most importantly eager to learn.