Emacs is a highly customizable and powerful text editor. I use emacs to write both source codes and papers. You can get the latest emacs version from its official bazaar repository:

bzr branch http://bzr.savannah.gnu.org/r/emacs

Well, unlike vi, emacs is nuts if you do not make any configuration!
I am now using the following packages:

AUCTEX is an extensible package for writing and formatting TeX files. Emacs with AUCTEX is the best LaTeX editor I have ever seen.
CEDET is a Collection of Emacs Development Environment Tools written with the end goal of creating an advanced development environment in Emacs.
ECB stands for "Emacs Code Browser". It displays a number of informational windows that allow for easy source code navigation and overview.

LaTeX is a professional typesetting system, widely used in IEEE and ACM communities. I use latex to write research papers and also use the Beamer package to make presentation slides.

ns2 is the network simulator. ns2 combines both C++ codes and OTCL to ensure efficient networking simulations. I'd like to recommend a good ns2 learning guide:

http://hpds.ee.ncku.edu.tw/~smallko/ns2/ns2.htm

ns3 is the next generation of the network simulator and written by C++, supporting Python binding. But the number of network models in ns3 is much less than that in ns2. So now I still stick to ns2.

Madwifi is a legacy linux driver for atheros WiFi chipsets. It enables flexible configuration for atheros chipsets and makes the parameter manipulation in IEEE 802.11 feasible. Though Ath5k is the latest driver for Linux 2.6.25+, it is far from mature. So let's play with Madwifi.

Linux kernel networking programming is also involved in my classes and research projects. I highly recommend the book "Understanding Linux Network Internals" and Dr. Injong Rhee's class, CSC/ECE573 - Internet Protocol at NC State University.