My programming toolkit
My programming toolkit consists of:
- Touch Typing
- Editing: vi (according to me, Emacs is lame)
- Document Creation: Latex
- Programming: Lisp, C, Assembly, HTML, CSS, Javascript,detective
- Shell Scripting
- Mastering the usage of *nix desktop (Mac OS X) and server (Linux Ubuntu LTS)
- Compilers Internals design (Lisp only, optionally C)
- Algorithms, Data Structures
- Digital Electronics
- Fundamentals of Networking, OS and Math for CS
Anything other than above is forced upon me by circumstances. For example, when I had to work in Java, I created a setup centered around vi and ant/maven. When I had no access to vi, I used Eclipse IDE with vi plugin.
With this toolkit, I am confident enough that I can tackle any kind of project. The most important thing is to do it. Whatever be the resources I use for learning, if I am not doing, not producing; its a waste. So when I learnt vi, I went and used it in my workplace.
In my honest opinion, to adopt such a counter culture toolkit requires willingness to put in the effort, hours of hard work to learn the tools, and energy to crush consequential resistance. But then I realized that most of all it needs courage on my part (other than minimum latent ability). So whenever in a quandry, I just measure myself on the courage scale and I get a pretty good guess as to how far can I go.