Question and Answer Session with the Author

September 23rd, 2006

1. How did you learn programming? Were any schools of any use? Or maybe you didn’t even bother with any schools?

I am self-taught, and did not attend any courses at college/university or certification/training seminars.

2. What do you think is the most important skill every programmer should have?

Effective design techniques. The key mark of a good design technique is that it can be re-used as a problem solving technique equally as well.

3. Do you think mathematics and/or physics are an important skill for a programmer? Why?

Mathematics is definitely a valuable skill set for a programmer. Everything with computers is number-based. One could go on and on for a long time with examples, but they are generally self-evident.

An understanding of physics is equality important for some types of programming (image analysis, game development, etc), although not generally required for some fields of development.

The importance of other studies should not be ignored either. For example, an aptitude for genetics could be a help with various forms of programming in the fields of artificial and adaptive intelligence. Equally, an understanding of natural biology and the evolution and adaptation of species could prove invaluable to a programmer who wishes to create long-term technology solutions which will adapt and change over time.

4. What do you think will be the next big thing in computer programming? X-oriented programming, y language, quantum computers, what?

I think low-cost/personal clusters will be at the forefront soon.

5. If you had three months to learn one relatively new technology, which one would You choose?

C - It’s not new by any means, but it is the only major language I don’t know very well.

6. What do you think makes some programmers 10 or 100 times more productive than others?

Productivity is contextual. Some programmers have minds which lend themselves to what I call ‘production code’, that is, the ability to produce mass amounts of functional code consistantly over time. Other programmers do better when they multitask, making smaller steps on many projects. A third group of programmers is suited for working on large/complex issues which have not been attempted before. It really depends how the programmer’s mind is wired. There are even some programmers who can switch gears and be in any of the three modes as needed.

7. What are your favorite tools (operating system, programming/scripting language, text editor, version control system, shell, database engine, other tools you can’t live without) and why do you like them more than others?

OS: GNU/Linux (currently Fedora Core 5), but I have also built my own custom distro which I base my internet application servers on.
Language: PHP for web and shell scripting; Gambas for GUI work; Pike/Python for various tasks.
Editor: Eclipse for projects; UltraEdit (running under WINE) for single file/basic editing. VI for fast work.
RCS: Subversion
Shell: BASH
DB: MySQL for web-based or heavy searching systems; PostgreSQL for heavy transaction load projects;
Browser: Swiftfox, which is Firefox, compiled for specific architectures.
Graphics: the GIMP and Inkscape.
Docs: DocuWiki for online documentation / project notes. Easy to generate flat documentation packages in TXT and (x)HTML.
Bugs: Flyspray for bug/task tracking. Possible to generate change logs and collate with subversion change logs.
Publishing: Scribus for layout work; Open Office for general documents.

8. What is your favorite book related to computer programming?

Spidering Hacks (published by O’Reilly) — I wrote a few pages of it. :-) I don’t use books for programming/computer work very often, so I don’t really have a favorite.

9. What is Your favorite book NOT related to computer programming?

How about a series? The Posleen War series by John Ringo.

10. What are your favorite music bands/performers/compositors?

Richie Valens, Buddy Holly (I grew up in Holly’s hometown), Deep Purple, Depeche Mode, Roxette, Ace of Base, U2, Van Halen, Berlin, Madonna, others. I also like folk music from various regions of the world, particularly Celtic, Eastern Indian, and Arabic.