CMSC 498B: Developing User Interfaces - Spring 2002

Tools

Emacs

Why Emacs? 
It is an expert-user interface.
It requires significant training.
For experts, it is faster and more flexible than any other editor anywhere.
Don't underestimate the importance of editing speed in creativity, productivity and quality.
If you don't touch-type - learn now!   Your life will be better for it.
Get it at http://www.gnu.org/software/emacs/emacs.html

Some important things you can do with it

  • Everything available by keyboard
  • Can move cursor without moving hands off home position
  • Built in help: tutorial (ctrl-h t), search (ctrl-h a), describe key (ctrl-h k)
  • Use of alt key for meta
  • ctrl-x ctrl-f to open a new file
  • ctrl-x ctrl-b to see list of buffers
  • ctrl-x b to switch to another buffer by name
  • meta-x 'other-window' to switch to other buffer (I map it to meta-o)
  • meta-x 'dired' to view and interact with file system. I generally access this by ctrl-x ctrl-f and open a directory. Especially useful on windows to see file extension, and get past other Explorer obfuscations.  Press ? within dired to learn more about it.
  • Use command name completion within meta-x by pressing spacebar
  • meta-x 'shell' to run an interactive shell within emacs.  I almost never use a shell outside of emacs for anything.  The ability to get infinite history, undo, and copy/paste with other buffers is incredibly powerful
  • Use filename completion within the shell by pressing tab
  • meta-x 'comint-previous-matching-input-from-input' is a very powerful mechanism for retrieving previous commands within the shell. I map it to meta-p. Then use it by typing the first few letters of a previously used command in the shell, and then typing meta-p cycles through the previous commands that start with that sequence of letters
  • Entirely customizable and extensible with elisp..

Use of TAGS:

  • tag a bunch of files related to a project with the command line 'etags <filenames>'
  • Within emacs, start using a tag table with meta-x 'visit-tags-table'
  • Search for item within table with meta-x 'tags-search' (I map it to meta-t)
  • Search for next item in tag table with meta-x 'tags-loop-continue'  (I map it to meta-,)
  • meta-x 'tags-query-replace' to do query replace all files in tag table

When editing code:

  • tab indents the current line nicely
  • meta-x 'c-indent-exp' indents the region enclosed by matching braces starting at the open brace the cursor is. I map this to meta-ctrl-q

Customizing emacs:

  • Put in your .emacs file some simple commands to remap keys of the form: (global-set-key "\M-o" 'other-window)
  • You can base yours on my .emacs file

Java

Documentation

API docs available

Don't ignore the guide docs and the demos that come with JDK

And Sun's online tutorials

Eclipse

A freely available IDE - good interface with support for external JVM's, but no GUI builder

Also many others available

Style Guidelines

Coding standards significantly increase readability of code by other people.

Sun's guidelines

The one's I'm most concerned about are:

  • Consistent indenting (4 spaces)
  • Clear understandable modularization
  • Data hiding
  • Use of beans to provide access to data
  • Naming conventions - lower case variables and methods, capitalized class names
  • Always use braces for code blocks (if, for, while, etc.)

C#

Visual Studio.NET

The 10,000 lb gorilla.  Expensive, but powerful and widely used

Documentation

MSDN - http://www.msdn.microsoft.com

Visual Studio.NET documentation

QuickStart demos that come with Visual Studio.NET

http://www.gotdotnet.com

Style Guidelines

Microsoft's guidelines

Similar to Java, except that methods are capitalized to distinguish them from properties.