Welcome to our continuing series of Code Project interviews in which we talk to developers about their backgrounds, projects, interests and pet peeves. In this installment we talk to Ariya Hidayat, developer, tech blogger, and “software provocateur”.
Who are you?
My name is Ariya Hidayat. I live in Mountain View, California. It’s quite at the heart of Silicon Valley — many famous tech companies are just around here, notably Mozilla, LinkedIn, Quora, and of course Google.
These days, I’d like to call myself “software provocateur.” I leave the rest to your imagination :)
What do you do?
Beside my day job above, I also play a lot with web technologies on my own spare time. For quite some time, I’ve been mostly doing C and C++, particularly when I was involved with KDE, Qt, and WebKit.
Some years ago I decided to understand front-end web development. I quickly realized that this space is still in its infancy and it needs a lot of tooling and other improvement here and there.
Something that I’ve been trying to push is applying craftsmanship to web development. This is why I set to start (and still maintain) the PhantomJS project, the headless WebKit for web page automation. It complements the well-established TDD approach. Having PhantomJS as the first layer of defense in the development workflow proves to be quite effective. PhantomJS is used by many high-profile web-related projects, from Bootstrap to YUI3, and it’s been downloaded more than 500K times. With its Travis CI integration, PhantomJS runs thousands of tests (of various projects) every month.
There is a summary of other projects I’ve worked on over on my blog.
What is your development environment?
I don’t have any specific setup for my development. Currently I’m constantly switching between MacBook Air and Chromebook Pixel. When I’m doing native C/C++ development, I often rely on mainstream IDEs such as Visual Studio and Xcode. On the other hand, Vim is something I must have in every system, very handy for quick editing or even serious text processing.
My favorite new toy is Scala. I also hope that someday I’ll get the chance to play with JRuby, particularly to learn about its tricks on getting the amazing performance.
What is your coding pet peeve?
“Boolean Trap” (I didn’t coin the term, though). Googling for this term will lead you to a blog post I’ve written about this subject. I spend every possible opportunity to explain the trap and to ensure that people are not falling into it. My biggest proud moment was when John Carmack tweeted about it. :)
How did you get started programming?
Ironically, I was more a hardware guy in the beginning. When I was in primary school, I had fun with things like Darlington pair and De Morgan’s laws. Eventually, as I slowly moved from casual digital microelectronics to microcontrollers, some sort of programming was needed and that was the moment where I decided to teach myself a few languages, from BASIC, Turbo Pascal, and also weird stuff like Fortran (didn’t use much of it, but it was valuable).
I didn’t actually own a computer until I almost finished high school (in hindsight, that was quite a wise decision — my grades would have been very embarrassing had I spent less time on school). The first machine I had was a rudimentary, no-brand PC/AT clone. Our electrical installation in the house was so bad such that to avoid a power trip, I needed to switch off our (black-and-white) television every time I wanted to boot my machine!
I can’t recall my true first programming language. All I remembered is that I switched constantly between BASIC (simple enough for a prototype), Turbo Pascal (modular and fast compile), and Turbo C/C++ (low-level hardware interaction). BASIC left quite a good impression on me. I even completed a simple BASIC interpreter during one boring summer break. Reading the Dragon Book was enlightening, mainly because I studied physics and engineering, not computer science.
I’m quite active on various typical programmer’s “social channels”: GitHub, Twitter and Google+. However, I don’t have time anymore to stay on IRC.
The FOSS community played an important role in my early entry to the software industry. It’s simply fantastic to ramp up your skills by learning from others. The passion for sharing is something that I like the most. It is a testament to the power of collaboration.
On a side note, some communities are plagued with bike shedding and passive-aggressiveness. While engineers are not well known for their social skills (after all, we deal primarily with machines!), in some cases, the lack of diplomacy can drive you crazy. Fortunately, if you play your cards nicely, it’s possible to use those moments to forge your character. In a few years, people will forget the nitty-gritty technical matter they’ve discussed with you. They will, however, still remember how those interaction were carried out.
What advice would you offer to an up-and-coming programmer?
I recently wrote a blog post about this, Impact Factor. The short version: don’t always chase your personal trophy. Be a multiplier and make an impact on others.