Building and maintaining programs

  1. What version control system do you use?
  2. What coverage tool do you use?
  3. What build system do you use?
  4. What documentation system do you use?
  5. What bug tracking system do you use?
  6. How is branching implemented in a version control system?
  7. Are deltas in the branching for a revision tree stored out forwards
    or backwards? What are the benefits of each approach?
  8. What are the advantages and disadvantages of a version control system that locks files?

The Shell

There are scores, if not hundreds of books on the UNIX shell and related tools.
We have enjoyed LINUX 101 Hacks by Natarajan. It introduces
these tools through useful hacks, such as the use of find
to find all files that have not been modified in the past 100 days
and are larger than 100~megabytes in size, sorting the password file on the third field, etc.

  1. Write a regular expression for identifying social security numbers in a file.
  2. Write a command that prints out lines in a text file which contain the
    strings foo and bar in any order.
  3. Write a command which replaces every occurrence of a foo followed by a bar (with
    possibly some other characters in between) by widget.
  4. Given a text file with two columns of integers, i.e., two integers encoded in ASCII per line, write a filter which sorts lines in the file by the second integer.
  5. How would you take two documents in PDF and create a new document which consists of the pages of the two original documents interleaved in order?
  6. How would you write a program which checks every hour if a network connection is up?
  7. How would you write a program which checks the price of a Nikon D5300 DLSR each day on