Useful tools
- Actions:
- Page
- Discussion
- View source
- History
From CSGSA
Contents |
Taking notes
- Xournal
- a Linux tool to take notes
- It is possible to open a pdf file directoly in Xournal and highlight /annotate/ draw on the pdf directly and save the result as a pdf document.
- http://xournal.sourceforge.net/
- recommended by Fabian Wauthier
- Rusty Sears wrote a patch that allows gnome to thumbnail .xoj files.
- Evernote
- Allows capturing various types of notes : e.g. text, images containing scanned notes etc.
- Makes the notes searchable
- Firefox and iphone plugin: http://evernote.com/about/what_is_en/
- The main page : http://evernote.com/
M$ War3z
Never pay for windows again!! And it's legal!! For high quality academic 1icenced softwrae, send your ssn, dob and mother's maiden name to widow-queen-of-the-csgsa@cs.berkeley.edu Act now, and for a small fee, we can offer you a lucrative position earning $1000's per week. Just invest a few hours a day working from home, or place of business.
Seriously, unless you want Vista Ultimate edition, you probably already have a site license for the Microsoft software you're looking for.
- MSDNAA
- MSDN Academic Alliance. Free access to Microsoft development tools + Windows. See below for MS Office.
- Sign up for MSDNAA, wait 24 hours for the confirmation email, and start downloading the software you're looking for.
- Be sure to read the MSDNAA licensing agreements, there are some strings attached to this software.
- As an MSDNAA member, the EECS department also gets MSDN CDs mailed to it on a regular basis. You can check them out from the helpdesk.
- Obtaining Office without visiting the helpdesk or connecting your computer to the EECS domain.
- Log into hermes.eecs.berkeley.edu with mstsc.exe under Windows, or rdesktop or tsclient under Linux.
- Before logging in, click options->local resources and configure it to make C: available to your remote desktop session. (Or you can use putty's sftp implementation)
- If your EECS LDAP (email) username is 'user' and password is 'pass', type 'EECS\user' and 'pass' into the authentication dialog.
- In the hermes session, click start, then type \\winsww\sww\public\office\ into the run dialog.
- Copy the desired office installation material to the local hard disk of your windows box
- look under 'computer' in hermes' start menu for your local drive C:
- or use putty
- Log into hermes.eecs.berkeley.edu with mstsc.exe under Windows, or rdesktop or tsclient under Linux.
Backup
- Rsync
- Common usage: rsync -a -essh src dest.
- Updates only the modified files.
- Combine with cron on unix to schedule automatic backups.
- Rsync webpage http://www.samba.org/rsync/
- Tutorial on how to setup rsync with ssh and cron to do automatic backups: http://troy.jdmz.net/rsync/index.html
- recommended by Fabian Wauthier
- Common usage: rsync -a -essh src dest.
- Unison
- Is another tool for backup that has mac/linux/windows versions.
- Most useful to bring two copies of data up to date.
- Unison webpage www.cis.upenn.edu/~bcpierce/unison
- recommended by Erik Sudderth
Remote connections
- Screen
- screen is a linux tool to maintain an active shell (screen) on a machine to which you are remotely connected, inspite of disconnections. The shell remains active on the remote computer and can be "retattached" subsquently
- basic commands:
- screen -S my_screen creates a screen session with name my_screen
- screen -dr my_screen reattaches the screen my_screen (in fact makes sure it is properly detached and then reattaches it)
- Once inside of a sreen
- Ctrl-A C creates a new page
- Ctrl-A P flips to the previous page
- Ctrl-A N flips to the next page
- Ctrl-A D detaches you
- Ctrl-A [ lets you scroll up in the history of a page
- There is a way to exchange a screen session between two people. How to do that?
- Alternative "do the right thing" mode (from Rusty Sears)
- Ctrl-A is 'home' in bash + emacs, so it's a terrible default
- I like one session per computer so I don't have to worry about creating them or attaching
- I want to leave existing screen clients connected when I connect to a session.
- I fix these three annoyances with: "alias screen='screen -e^Vv -x -R'" in my .bashrc. That way I always run 'screen' without arguments, and ctrl-V replaces ctrl-A above (very few command line apps use ^V...)
- Screen webpage http://www.gnu.org/software/screen/
- recommended by Guillaume Obozinski
- nohup
- poor-man's screen. Allows you to run a command line program, then logout without worrying that linux will send a SIGHUP or SIGPIPE (or whatever...) to your job, causing it to terminate.
- produces a file called nohup.out, that contains the output of your job.
Version control systems
- CVS
- Tracks changes made to a file and allows easy access to older versions and managing multiple edits to a file.
- CVS webpage http://www.nongnu.org/cvs/
- recommended by Sriram Sankararaman
- RCS
- Great for keeping versions of files that are being managed by unison. CVS used to be a bunch of scripts on top of RCS. 'man co' and 'man ci' for more info.
- Recommended by Rusty Sears
- SVN
- Like CVS, but with some arbitrary UI decisions reversed. Also, commit is an atomic operation (unlike CVS), and SVN is better at coping with disconnected operation, at the expense of using 2X as much disk space per client.
- Probably a good default version control system for publishing software from a small group of people.
- Recommended by Rusty Sears
- Git
- Named after Linus Torvalds
- It can be useful to think of each checked out git source tree as its own CVS repository. 'git pull' will merge in changes from other git trees. This lets multiple people collaborate without setting up a centralized git server, and is also good for backups and forking.
- Is a content addressable filesystem; ie, everything is named after a hash of its contents, including commits, diffs and files. This allows it to operate correctly in the absence of monotonically increasing version numbers.
- git can run over ssh, http, or its own server protocol. A typical setup has one git 'server' (really just a unix directory) per user. Users pull changes from each other's repositories. This makes it impossible for one user to accidentally corrupt or commit garbage into another user's repository, and gives you free backup (assuming each user has their own hard drive...)
- Recommended by Rusty Sears
- Michael Armbrust (in the RadLab) is a huge git dork. Talk to him for help with git.
- emacs
- Unified interface to most version control systems.
- Convenient when you want to check in one file at a time.
- M-x vc-diff diff buffer.
- C-x v v do the next logical thing to the file (update, commit, etc...).
- Recommended by Rusty Sears
Programming Language Tools
C (Linux/Unix tools)
- Valgrind dynamic analysis tool for C
- Runs normal C programs in a virtual machine that checks for common programming errors
- I can't remember how I managed to develop C code without this tool!
- checks a particular execution of a program without inspecting source code.
- memcheck (default analysis) features:
- Lists stack traces of malloc()'s that were not free()'ed.
- Finds buffer overflows, and lists allocation point + line that overflowed the buffer.
- Warns if uninitialized data is passed to the kernel or used in a conditional statement.
- helgrind is a valgrind thread analyzer that I'm not very familiar with
- other analysis modules are available
- you can write your own valgrind plugins to instrument / check your programs.
- Plugins can dynamically transform machine code, and instrument memory accesses, system calls, etc.
- Recommended by Rusty Sears
- Runs normal C programs in a virtual machine that checks for common programming errors
- CIL C Intermediate Language
- Allows you to write OCAML programs that will perform source to source translations on C programs. This can be used to implement static + dynamic analyses, to optimize C programs, or even to generate C code.
- CIL's API makes heavy use of OCAML's type system. This allows the OCAML compiler to statically check the type safety and completeness of CIL transformations.
- Newer versions of gcc have some similar mechanisms, but I'm not familiar with them. There are also similar tools for Java, and probably other languages.
- Written at Berkeley.
- Recommended by Rusty Sears
- gcc -pedantic -Wall -O3
- Otherwise, gcc ignores all sorts of obvious mistakes in your code. (Note that -O3 enables more warnings...)
- -Wall does not enable all warnings, and the warnings enabled by -pedantic aren't pedantic. Go figure.
- (You probably also want '-std=gnu99', or else it'll default to c89, which is painful)
- Recommended by Rusty Sears
- LCOV HTML Code coverage report generator
- Uses output of gprof, the gcc profiler (also recommended)
- Sample output: http://ltp.sourceforge.net/coverage/lcov/output/index.html
- Recommended by Rusty Sears
- Profilers
- gprof Single program profiler (part of gcc)
- oprofile System wide profiler for linux; can show where the kernel is burning cycles
- powertop Why is your linux laptop so hot?
- iotop Why is your linux hard drive light blinking?
- gkrellm Multiple monitors for linux system activity. Monitor CPU, RAM, network, swap, temperatures, fans, etc with just a little bit of screen space. The hdplop plugin provides a nice visualization of disk activity
- cmake
- Easier to use than automake, and faster builds.
- However, end-user configuration of compiler options is kind of a pain.
- Compatible w/ Linux, MacOS X and Windows.
- Includes CTest, a nice make framework for invoking unit tests.
- Recommended by Rusty Sears
- C libraries
- libredblack A red black tree for C
- pthread_rwlock_init() isn't documented in linux's manpages, but appears to be supported. (Suggested by Rusty Sears, but I've never actually used it; remove this disclaimer if you have good luck with it. ;)
Task management
- Rememberthemilk
- Connects email, calendars, IM, maps etc. to manage your tasks efficiently.
- Gmail plugin: http://www.rememberthemilk.com/
- iPhone all: http://www.rememberthemilk.com/services/iphone/
- Web page: http://www.rememberthemilk.com/
Writing papers/theses/posters
- Ldiff
- Is a python script to create .tex (and .dvi) files that highlight the differences between two .tex documents.
- Usage: ldiff.py oldfile.tex newfile.tex
- Output: newfile-diff.dvi which contains the differences between oldfile and newfile.
- Webpage: http://www.cs.bgu.ac.il/~dekelts/ldiff/
- Is a python script to create .tex (and .dvi) files that highlight the differences between two .tex documents.
- thesis-in-a-box
- Produces a dissertation formatted with eecs@berkeley requirements.
- Written by Mark Paskin [1]
- Template for posters
- Create a poster from a latex file (requires pdflatex) [2].
- Requires other style files as well depending on your configuration.
- Suggested by Kurt Miller
- gnumeric
- Linux-only(?)
- Spreadsheet that produces high-quality PDF / EPS graphs
- It gets the bounding boxes right and produces non-corrupt output
- It isn't gnuplot.
- Cutting and pasting graphs (usually) leads to consistent pdf/eps figures, so if your paper has more than one similar graph, you can get the font sizes, and axes to match.
- 'gnumeric output-of-my-experiment.csv' does the right thing without asking stupid questions.
- right-click-graph -> save as image will give you your PDF.
- Recommended by Rusty Sears
- inkscape
- Vector graphics program. Uses SVG as native format (web browsers support .svg images)
- Before saving or exporting to PDF / EPS, select the entire image, click file->'document properties'->page->'fit page to selection'. Now it will produce files with correct bounding boxes, suitable for use in [pdf]latex.
- Call inkscape with the '--export-eps=FILENAME' or '--export-pdf=FILENAME' options from your latex makefile, and never bother exporting your figures to eps/pdf again!
- Recommended by Rusty Sears
Citation management
- Citeulike
- Maintains a central collection of citations that can be exported to bibtex/endnote.
- A browser plugin extracts the citation entry from standard journal websites and adds the citations to the collection.
- Citeulike FAQ http://www.citeulike.org/faq/all.adp
- Citeulike login page http://www.citeulike.org/
- recommended by Sriram Sankararaman
- Jabref
- Downloadable citation manager.
- Downloads citations from online databases which can then be searched.
- Also allows the citations to be linked with pdfs and other types of files.
- Web page http://jabref.sourceforge.net/
- Zotero
- Firefox plugin that pulls reference info from sites like google scholar, springer, etc., and creates a citation database
- Ability to "attach" pdf files to every citation
- I have been using this for one day and I'm pretty impressed with it so far. I haven't tried citeulike yet, which seems to be more popular. Jake 07:13, 12 January 2009 (UTC)
Experiments management
- figems
- figems is a experiment management system based on Java/Javascript developed by Percy Liang to run experiments and display/organize the results using a web interface. Available at http://www.cs.berkeley.edu/~pliang/software
- flamebox
- Runs nightly regression tests, and displays results in nice html summary. Like tinderbox, but with a simple / sane perl implementation, so you can easily modify it for your needs. Available at http://flamebox.sourceforge.net/
- Recommended by Rusty Sears
Format conversion
- pstoedit
- allows to convert .eps to other format (see below)
- convert
- converts figure formats under linux
- A webpage on convert http://linux.about.com/od/commands/l/blcmdl1_convert.htm
- Another good webpage?
- Windows format conversion tools
- wmf2eps
- is a wmf to eps converter, which allows you to directly paste a figure built in powerpoint and turns it into a .eps figure
- Webpage http://www.wmf2eps.de.vu/
- pstoedit
- exists as a windows plugin for Gsview and as a linux tool as well
- is the reverse of the previous one. The gsview plugin allows you to export an eps figure opened in gsview in wmf format.
- Convenient to add eps figures to powerpoint slides and to modify legends of a figure, adding arrows, editing the legend etc
- 'Pstoeditwebpage http://www.pstoedit.net/pstoedit/
- wmf2eps
PDF related tools
- pdf995
- is a windows tool
- Is pdf printer : Allows you to print pdfs from every application
- Wepage http://www.pdf995.com/
- List of other pdfrelated software http://en.wikipedia.org/wiki/List_of_PDF_software
- cups-pdf
- Install this ubuntu package to get a virtual printer that produces pdfs. Share it over the network if you'd like.
- pdffonts
- Unix/cygwin tool.
- Always run this against your PDFs before submitting a paper for review/camera ready. All the fonts it lists should be type 1 or true type, and they should all be embedded. Otherwise, other people will have trouble viewing / printing your PDF.
Virtualization
- VirtualBox
- Stable, open source, easy to use and 'apt-get upgrade' does the right thing.
- No more editing VMWare kernel modules so you can run Windows under Linux.
- Snapshot handling was kind of wonky the last time I checked.
