Programming

Lex and Yacc

Lex and yacc (now flex and bison) can be used to write a lexer and parser for such things as configuration files, trees in newick format, and so on. A basic tutorial is available here. There are also detailed manuals for flex and bison.

Autotools

This is a suite of gnu tools for creating portable source code distributions. A great tutorial can be found here. The definitive “goat” book on autotools and libtools can be found online here.

getopt

This is a gnu standard library that is incredibly useful for parsing command line options. It is best used with the gcc/c++ compiler. A brief description is found here.

Git

Git (git) is a great tool for maintaining prior versions of your source code (or manuscripts) in an organized hierarchy. A free book on git is here. A quick reference is here. Open source projects can be hosted for free on github and private repositories for academic research (with some limitations) can be hosted on bitbucket. I use both. Projects on github can have web pages (gitpages) hosted as well. This website is hosted on github

LaTeX

This program (derived from Don Knuth’s TeX program) is ideal for writing manuscripts that use a lot of equations. I wrote my PhD in LaTeX and so have most of my graduate students. A tutorial, list of symbols, etc, can be found here.

Getting that ugly DOS ^M newline character out of your text files

I collaborate with quite a few people who use Windows and seem to be unaware that their Windows text editor is littering our shared text files with ^M DOS style carriage returns. Here is a useful emacs command to strip all the ^M characters out replacing them with a unix newline:

M-x replace-string RET C-q C-m RET C-q C-j RET

Javascript Resources

React stuff React is an open source project that has developed a pretty nice language extension to Javascript. The basic idea is to have components that include both logic and presentation (rather than having logic in a javascript file, presentation in an html file, and styles in a css file). A simplified language for writing React called JSX can be used to write the code which is then transpiled into javascript using Babel. Straight javascript and JSX can be mixed together in a source file as needed. Pretty cool. React can also use a component based approach to styling that is described in detail at styled-components.com. I have been experimenting with React and will collect some useful sites together here eventually.

Proggy fonts

These are my favorite terminal fonts. Available here.

Bioinformatics

NGS data file formats

The FASTQ format appears to be emerging as a standard for next-generation sequencing data (particularly Illumina GAII reads). The Wikipedia description of the format is here.

NCI wiki

This wiki explains barcoding scheme and other features of cancer genome databases such as GCAT.