A terse primer on using UNIX/LINUX. (postscript, or pdf) Summary of some special HTML Characters
Despite the bad review it gets on Amazon.com,
I thought Managing Projects with make
was a good addition to my library. Yes, you might be able to get all this info from the
man page, but I liked reading the book better. A couple of chapters, and you will find
make is a rather powerful and helpful utility. I got
Learning the vi Editor a while back, but
have not used it very much. This is probably due mostly to my laziness rather than any
problems with the book itself. Maybe one of these days I'll rediscover it...
And just to prove that I don't read Oreilly books exclusively, if you are interested in
learning about TCP/IP programming in C, check out Internetworking with TCP/IP (vol
3) by Douglas Comer and David Stevens. These guys have a really good introduction
to this topic from a coding point of view, and I learned a little something from their
programming style.
Operating Systems
Web Browsing / Editing
I've been an Apple user from the very beginning, so it was a no-brainer for me
to use Safari when I hooked up with MacOS X. One of the nicest things about
Safari is that, with a .Mac account, I could have all my bookmarks synced
over different machines. The posting of iCal files was also super handy. But
.Mac is ∼$100 per year... Well, the iCal business is solved by running a
WebDAV server, but what about the bookmarks? Enter Firefox. This is a really
great browser, with all sorts of customizable themes and pluggins/extensions.
And one of the extensions is the Foxmarks bookmark synchronizer! You plug
this into Firefox, and set up a free account on their server, and voila! The
really slick thing about this is that Firefox is a cross-platform browser. So
if I do a little browsing directly from my LINUX server, I still have all my
bookmarks. Firefox definitely gets my vote.
I haven't had much experience with this thing yet, but I've been experimenting
with it, and it seems pretty cool. This program is put out by the World Wide
Web Consortium, so you know it's W3C compliant. This means it will render pages
accurately. But it's also an editor with a fairly straight-forward interface.
It's a WYSIWYG editor, so you don't have to know a bunch of HTML/CSS/XML, and you don't
have to use vi (though this latter point is sort of a downer for me...).
And possibly the best feature: it's free! Give this a shot if you are looking
for a web authoring tool. I think you'll be very happy.
Office / Productivity Software
I drop this in just to remind folks that one need not sell one's soul to the
evil Microsoft empire to use standard productivity software. A while back, Sun
began dropping their “Star Office” suite into RedHat distributions.
Yeah, it was ok, and even kind of cool in that one didn't have to use Word or
Excel. But it was immature. Well, here comes the most recent open source version:
OpenOffice.org.
I've been using it mostly for it's spreadsheeting (my text processing is still
firmly rooted in TeX and LaTeX), and it works like a charm. I run it on MacOSX,
and it seems to run under the X11 package. But that's easy these days on Mac.
Just double click the UserX11.pkg on your startup disk and it's done!
Openoffice.org is smooth, complete,
cross-platform, and free. Check it out. Try it out. Use it. And just
say “No” over-priced, monopolistic, vulnerable, and generally
second-rate Microsoft products.
Sunbird is the other piece to extricating one's self from .Mac. This is a stand-alone
calendar program (by the Mozilla folks again) that read and writes the standard .ics
calendar files that iCal generates. The really nice thing about Sunbird is that you
can store your calendar files on a remote server and allow others to access and
alter them. Well, this is bad if you let nasty people access them, but in terms of
coordinating schedules and such, it's excellent. Since the calendar files can be
placed on a remote machine, you don't ever need to worry about syncing issues. Of
course, if you don't have access to the internet, then there's a problem...
Sunbird is still in its infancy - it's only at version 0.3 as of this writing.
But I've found it to be relatively robust. Try it out!
Programming Web Resources
Programming Books
I've found a number of books very helpful. Learning Perl, is an excellent introduction to PERL. I was able to get useful
programs up and running within 24 hours of reading the first chapter or two. For an intro
into C++, try C++: The Core Language.
This book assumes you know C, and introduces C++ in terms of what C programmers already
know and use. It is the only book I have found so far that could explain object oriented
programming to me in comprehensible terms. The only problem with the book is that it
doesn't include discussions of the C++ standard library.
Practical C++ Programming does have
a discussion of the libraries, as well as some more details on other aspects, but I find
the programming style in this book rather horrid.
Plotting/Analysis Packages at a Glance
Gnuplot
(no relation to the GNU Project): I haven't used this package for quite some
time, but as memory serves, it is a fairly easy to use plotting package. Its
major weakness is that seems a little too unsophisticated. I've had trouble
making presentation quality plots with it. But, as a generic work-horse for
throwing up points and things, it does fine.
Super Mongo (SM): This
package is my tool of choice for making all kinds of plots. The program is a
bit harder to use than Gnuplot, but the results are much more to my liking.
It is highly customizable, and supports macros (which really makes life
easier). You can also compile SM commands into C programs very easily, which
makes it very nice for graphical display of data. The catch is that SM is
not freeware. You need to purchase the source code for a small fee.
ROOT (User's Guide): This is the
C++ response to PAW. Also released by CERN, this package is an
“object-oriented” version of the analysis routines in PAW. This
makes the syntax much easier to remember/use for C/C++ folks.
However, be warned that ROOT does not conform to the OOP practice of
encapsulation. This is especially dangerous when you compile ROOT functions
into your own C++ code. In fact, the package looks and feels like a
fortran program that has been pushed through a fortran→C++
converted (rumor has it, this is, in part, true). If you are familiar with
PAW, and you know some C++, ROOT should be fairly straight forward.
However its documentation does tend to suffer from the same problems as PAW's.
Analysis
Email
Secure Shell (SSH)
I'm a little surprised at the number of people I know who still use unencrypted
login protocols such as telnet and ftp. But I suspect much of
the reason is that folks don't want the hassle of switching. In fact, I find SSH
to be a much more convenient way to connect to machines because it can be set up
to work without a password (to be more exact, it can be set up so that you don't
have to type your password in more than once per session). I currently use
OpenSSH, and found this guide to
OpenSSH
Public Key Authentication Setup to be a relatively straight-forward way to
bypass all that password typing. There is a competing
commercial version of SSH that I used
to use because it was free for academics (and everyone else in my department
used it). But I currently like OpenSSH
better. There are SSH clients available for those of you not on LINUX/UNIX
machines. For Windows,
PuTTY
works fine. And for Macs, well, they now have a UNIX underbody! So all the
nifty LINUX/UNIX ssh features are already packaged under OSX.
Other links