Click here to Skip to main content
15,881,882 members
Articles / All Topics
Article

A Coder Interview With Ariya Hidayat

Rate me:
Please Sign up or sign in to vote.
4.97/5 (9 votes)
13 Jun 2013CPOL5 min read 16.4K   4   4
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."

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.

Right now I’m working for Sencha, a company focusing on web frameworks and tools. My recent responsibility is to architect and build the hybrid web runtime to allow our tools (written in HTML, JavaScript, CSS) run as desktop apps and enjoy native desktop integrations.

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.

Lately, I also encourage the development of various JavaScript tools, from code coverage to complexity analysis, primarily based on my work on Esprima. The state of language tooling for JavaScript is far from perfect and we need to fix this.

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.

What new tools, languages or frameworks interest you?

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.

How has the developer community influenced your coding?

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.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer CodeProject Solutions
Canada Canada
The CodeProject team have been writing software, building communities, and hosting CodeProject.com for over 20 years. We are passionate about helping developers share knowledge, learn new skills, and connect. We believe everyone can code, and every contribution, no matter how small, helps.

The CodeProject team is currently focussing on CodeProject.AI Server, a stand-alone, self-hosted server that provides AI inferencing services on any platform for any language. Learn AI by jumping in the deep end with us: codeproject.com/AI.
This is a Organisation

4 members

Comments and Discussions

 
GeneralMy vote of 5 Pin
J. Wijaya14-Jun-13 0:30
J. Wijaya14-Jun-13 0:30 
very inspirational..
GeneralMy vote of 5 Pin
Abhishek Nandy13-Jun-13 22:37
professionalAbhishek Nandy13-Jun-13 22:37 
GeneralMy vote of 3 Pin
VICK13-Jun-13 22:14
professional VICK13-Jun-13 22:14 
QuestionInteresting to read Pin
VICK13-Jun-13 22:14
professional VICK13-Jun-13 22:14 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.