Imagine what a harmonious world it could be if every single person, both young and old shared a little of what he is good at doing. -- Quincy Jones

My preferences

I use Windows for most of my work related stuff! I use Ubuntu linux and a macbook for most of my personal stuff.

These are the software tools/packages (emphasized ones more frequently than alternatives) that I use most frequently:

  1. vim/gvim and emacs.
  2. R my R related notes, NumPy/SciPy, J, Julia, and Factor.
  3. NetLogo, and GAMA.
  4. Python, OCaml, Haskell, Scala, Lua, CLisp, ruby, Clojure, and sometimes Perl.
  5. PostgreSQL+PostGIS, SQLite, Duckdb, Spark-SQL.
  6. ENVI, ERDAS Imagine, MultiSpec, Maptitude, QGIS, and ArcGIS/ArcGIS Pro.
  7. JabRef, and EndNote Zotero (for bibliography management).
  8. Markdown (pandoc), LaTeX (MikTeX), and MS Office whenever I cannot get away with it!
  9. Git.
  10. Paint.NET, Inkscape.

NOTE: I'm willing to answer questions about any of these tools (provided I know the answer)!

General guidelines

  1. All dates/times should be in ISO-8601 format. I.e., dates should be represented as YYYY.MM.DD, YYYYMMDD, or YYYY/MM/DD and time should be represented as HHMMSS or HH:MM:SS.
  2. If there is a possibility of confusion of timezone, the time should be, preferably, in UTC timezone or include the local time zone offset. See the explanation on the ISO page.
  3. Filenames should comprise of alphanumeric characters and underscores. Try to avoid special characters, spaces, and punctuation as a part of filename.
  4. Filenames should contain enough context information that is independent of folder structure.
  1. Use version control software!
  2. Comment your code.
  3. Pick any coding guideline that you like and stick with it. Be consistent.
  4. Learn to use a plain text editor efficiently.
  5. Learn grep/awk/sed!
  6. Use make/ant or create batch scripts.
  1. All tables should have PRIMARY KEY.
  2. Create a schema, named as the username used to login, after a createdb. Command (assuming username is 'vijay'): CREATE SCHEMA vijay; This makes porting data (during update/migration) much easier.
  3. Default DateStyle is set to ISO, MDY. Change it to ISO, YMD. Command: SET DateStyle = 'ISO, YMD';
  4. Always store timestamp with time zone (or timestamptz). This internally stores timestamp in UTC which gets displayed based on current session timezone setting!
  5. PostgreSQL allows DDL in BEGIN-COMMIT/ROLLBACK transaction blocks. ALWAYS USE TRANSACTIONS!
  6. Use AS when defining column/table aliases even though it is optional. This simplifies writing queries.
  7. Try to save the schema/table creation commands in a separate SQL script. This will be useful in the future when you need to create the tables without the data. Also, you can version control this script!
  8. Set the configuration variables plpgsql.extra_warnings and plgpgsql.extra_errors to 'all'. Command: SET plpgsql.extra_warnings TO 'all'; SET plpgsql.extra_errors TO 'all';
  1. If you are joining features to an external Excel (xls[x]/csv) file ensure that there is no space in the column titles! Especially at the end of column titles!
  2. Always make changes in an edit session! This is the closest thing to transactions(in database parlance).

Solutions to some pesky computer issues

LaTeX: Symbols not available!

I tried to use rhd and Diamond symbols for a LaTeX document and kept on getting the error: LaTeX Error: Command \rhd not provided in base LaTeX2e. This is because we need an extra package. Put \usepackage{latexsym} to get many more symbols in LaTeX. I found this solution here. Apparently there are many packages that provide all kind of symbols for use in LaTeX. See the comprehensive listing here.

MS Word: Cannot figure out what's causing this issue?

Use MS word in draft/outline view. Set the "Style area pane width..." to some practical value and solve many annoying problems. Shauna Kelly's page at http://www.shaunakelly.com/ under the "Making the most of Word in your business" title lists solutions and best practices for common MS Word issues!


Some useful resources