Useful for your labwork
Material you might like to refer to when doing your labwork.
- Tutorial on C Programming
These slides give a tutorial of C programming techniques that you will need in labs.
- Beej's Guide to Network Programming
If you don't want to buy Unix Network Programming, then this will be a very good read. It's nowhere as informative as UNP, but it is a very good starting point for knowing the basic networking system calls.
cscope is a source code browsing/searching (and more) tool, that we find particularly useful when trying to find something under /usr/include/
- Some Emacs Tips
This page gives some Emacs-related tips that shall make you more productive or just increases your comfort when programming in Emacs.
Operating System/Environment design
- The Unix Haters Handbook
Although Unix has a lot to offer, it also has a lot of mis-design and cruft embodied into it. It is very enlightening to see the sort of rather cool stuff that came before it, especially as some of it is re-introduced in more mainstream systems.
- The Art of Unix Programming
Serves as a good counterpoint to The Unix Haters Handbook. Gives a lot of philosophy useful for Unix programmers.
- UNIX Standards
- IEEE Std 1003 (“POSIX.1”)
- POSIX — Wikipedia, the free encyclopedia
- The Single UNIX® Specification, Version 2
- Single UNIX Specification — Wikipedia, the free encyclopedia
These standards aim to provide a mostly uniform API across the various Unix operating systems. It covers kernel APIs for dealing with issues such as networking, threading, scheduling, I/O, filesystems, security and IPC; user and administrator commands such as ls(1), ps(1), ifconfig(8) and the scripting environment that it is used in. Even MS Windows can support POSIX interfaces through various emulation layers. The Wikipedia page on the Single UNIX Specification gives a useful overview of the history.
- Requests For Comments (RFCs)
- Microsoft Solutions Developer Network (MSDN) Library
Useful historical documents
- On Holy Wars and a Plea for Peace
A very well known document explaining the whole byte-order (and bit-order) issue.
Interesting IPv6 articles
- A Tale of Two Protocols: IPv4, IPv6, MTUs and Fragmentation
This is a long, but useful, illustration of how bad filtering practices, which breakes Path MTU discovery, affects the ability to connect to numerous websites. The problem is more pronounced with IPv6 because tunnels are used extensively in the current IPv6 landscape, so the effective MTU decreases, and IPv6 doesn't allow fragmentation.
It has plenty of examples showing how the problem was diagnosed.