Other useful tools. Eugeniy E. Mikhailov. Lecture 11. The College of William & Mary. Eugeniy Mikhailov (W&M) Practical Computing Lecture 11 1 / 9

Similar documents
The tools used in the development of Life Is Strange

CptS 360 (System Programming) Unit 3: Development Tools

Introduc+on. General Information. General Information. General Information. General Information. General Information

Intro to Linux & Command Line

What is git? Distributed Version Control System (VCS); Created by Linus Torvalds, to help with Linux development;

Computers and programming languages introduction

2/9/2013 LAB OUTLINE INTRODUCTION TO VCS WHY VERSION CONTROL SYSTEM(VCS)? II SENG 371 SOFTWARE EVOLUTION VERSION CONTROL SYSTEMS

Unix Basics. Benjamin S. Skrainka University College London. July 17, 2010

Decentralized Version Control Systems

How To Use The UNIX-LINUX Vi Text Editor: Tips, Tricks, And Techniques (And Tutorials Too!) By Larry L. Smith READ ONLINE

Common Git Commands. Git Crash Course. Teon Banek April 7, Teon Banek (TakeLab) Common Git Commands TakeLab 1 / 18

9 and 11-Jan CSCI 4152/6509 Natural Language Processing Lab 1: FCS Computing Environment, SVN Tutorial. FCS Computing Environment, SVN Tutorial

Panel discussion on Legacy codes in astrophysics

Unix. Examples: OS X and Ubuntu

Exercise sheet 1 To be corrected in tutorials in the week from 23/10/2017 to 27/10/2017

Linux Fundamentals (L-120)

Merge Conflicts p. 92 More GitHub Workflows: Forking and Pull Requests p. 97 Using Git to Make Life Easier: Working with Past Commits p.

CPSC 491. Lecture 19 & 20: Source Code Version Control. VCS = Version Control Software SCM = Source Code Management

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

Introduction to version control. David Rey DREAM

CS2900 Introductory Programming with Python and C++ Kevin Squire LtCol Joel Young Fall 2007

CSC209. Software Tools and Systems Programming.

Python Scripting for Computational Science

CALIFORNIA STATE UNIVERSITY CHANNEL ISLANDS COURSE MODIFICATION PROPOSAL

Systems Programming Advanced Software Development

Prefix COMP Course# 421 Title Unix for Programmers Units (3) 3 hours lecture per week 3 hours lecture per week

CS 261 Recitation 1 Compiling C on UNIX

Sorting. Bubble sort method. Bubble sort properties. Quick sort method. Notes. Eugeniy E. Mikhailov. Lecture 27. Notes. Notes

CNT 5605, Fall 2009: Introduction

The Environment Model. Nate Foster Spring 2018

Review of Fundamentals. Todd Kelley CST8207 Todd Kelley 1

DM841 Discrete Optimization. Working Environment. Marco Chiarandini. Department of Mathematics & Computer Science University of Southern Denmark


Python Scripting for Computational Science

Git Tutorial. Version: 0.2. Anders Nilsson April 1, 2014

Programming in Python

Section 2: Developer tools and you. Alex Mariakakis (staff-wide)

Short Introduction to ESS

Learn Use Linux Made Easy Home Office On The Go

Lecture 1. A. Sahu and S. V. Rao. Indian Institute of Technology Guwahati

Linux Systems Administration Getting Started with Linux

CS 460 Linux Tutorial

Revision Control. An Introduction Using Git 1/15

CS 102 Lecture 1. Syllabus, history, intro

Getting started with GitHub

EECS 470 Lab 5. Linux Shell Scripting. Friday, 1 st February, 2018

CSC209. Software Tools and Systems Programming.

CSE 351. Introduction & Course Tools

CS197U: A Hands on Introduction to Unix

Intro to Git. Getting started with Version Control. Murray Anderegg February 9, 2018

LINUX FUNDAMENTALS (5 Day)

Installing Applications in FreeBSD. wengyc

Exercises: Instructions and Advice

The Environment Model

Version control CSE 403

Kernel maintainership: an oral tradition

Intro ikiwiki etckeeper vcsh git-annex bup Zsh mr Outro. Gitify your life. web, blog, configs, data, and backups

Introduction to Python

Version control CSE 403

Introduction to Linux Environment. Yun-Wen Chen

27-Sep CSCI 2132 Software Development Lab 4: Exploring bash and C Compilation. Faculty of Computer Science, Dalhousie University

Introduction to ROOT. M. Eads PHYS 474/790B. Friday, January 17, 14

Exercise 1: Basic Tools

Programming Concepts. Perl. Adapted from Practical Unix and Programming Hunter College

February 2 nd Jean Parpaillon

NAVIGATING UNIX. Other useful commands, with more extensive documentation, are

Distributed Version Control

Boolean algebra, conditional statements, loops.

Introduction to Scientific Computing

Mastering Linux. Paul S. Wang. CRC Press. Taylor & Francis Group. Taylor & Francis Croup an informa business. A CHAPMAN St HALL BOOK

CNT 4603, Spring 2009: Introduction

The Joy of Software Development

1 Installation (briefly)

LATEX, BibTEX, and Friends. Robert Buels. Outline. What is LATEX. Using BibTEX LYX the graphical LATEX Managing your BibTEX references Further reading

How To Install Latex Mac Os X Lion On Pc Step By Step

M E R C U R I A L (The Source Control Management)

Grep and Shell Programming

CSE 391 Lecture 9. Version control with Git

Prerequisites: Students should be comfortable with computers. No familiarity with Linux or other Unix operating systems is required.

Revision Control. Software Engineering SS 2007

Chapter 3. Revision Control

Lab 1 Introduction to UNIX and C

RH033 Red Hat Linux Essentials

Introduction to the shell Part II

Version Control. Version Control

Zend Studio has the reputation of being one of the most mature and powerful

Project 1. Fast correction

Introduction to Version Control

The student will have the essential skills needed to be proficient at the Unix or Linux command line.

CS 246 Winter Tutorial 1

COS 333: Advanced Programming Techniques

CS197U: A Hands on Introduction to Unix

Home Page. Title Page. Contents. Page 1 of 17. Version Control. Go Back. Ken Bloom. Full Screen. Linux User Group of Davis March 1, Close.

Computational Physics Compiling a C++ program

Version Control: Gitting Started

Week - 01 Lecture - 04 Downloading and installing Python

Agenda. Several projects are using GIT Developer(s) Junio Hamano, Linus Torvalds. Qt Stable release (January 31, 2011)

Script for Interview about LATEX and Friends

Vi & Shell Scripting

Intel Manycore Testing Lab (MTL) - Linux Getting Started Guide

Transcription:

Other useful tools Eugeniy E. Mikhailov The College of William & Mary Lecture 11 Eugeniy Mikhailov (W&M) Practical Computing Lecture 11 1 / 9

Specialization is... A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Lazarus Long, Time Enough For Love by Robert A. Heinlein Eugeniy Mikhailov (W&M) Practical Computing Lecture 11 2 / 9

Specialization is... A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects. Lazarus Long, Time Enough For Love by Robert A. Heinlein Eugeniy Mikhailov (W&M) Practical Computing Lecture 11 2 / 9

Scientists computer related toolbox Programming languages Matlab/Octave - computational prototyping and post processing C/C++/Fortran - fast number crunching sed, grep, perl, awk - data parsing bash, zsh, tclsh - shells for program start up and interfacing tcl/tk - gui, program interfacing, bindings to compiled functions Other languages of choice: Python, Java,... Remote computers access ssh, putty - secure terminals, scp (and other analogs) - secure copy screen - ability to deattach and reattach programs output Eugeniy Mikhailov (W&M) Practical Computing Lecture 11 3 / 9

Scientist computer related toolbox (continued) Operational Systems Unix, Linux - stable and easy to use Macs - flashy, but has Unix inside (if you know how to get there) Windows - usually has drivers for the scientific hardware Data acquisition Matlab LabWindows - C/C++ like language LabView - easy things are easy, hard are almost impossible I personally avoid it at all cost home made interfaces - whatever you do, make your data human readable (ideally, it should be in plain text) Eugeniy Mikhailov (W&M) Practical Computing Lecture 11 4 / 9

Scientist computer related toolbox (continued) make - automatic dependencies resolver Data synchronization between computers rsync - only modifications are copied unison - easy to use wrapper for above Data backups and archiving. Yes, they are not the same. ideal backup/archive should put important data to at least 3 locations separated by more than 50 km rdiff-backup - archiving wrapper for rsync Report preparation vim (Vi improved), emacs - editors latex and friends - publication quality output pandoc, txt2tags - convert simple text format to tex, html, txt, pdf and so on beamer (latex) - presentations some people use PowerPoint, but only because it did not yet fail them during an important presentation. Version control software cvs, svn, git, darcs, bazaar, subversion Eugeniy Mikhailov (W&M) Practical Computing Lecture 11 5 / 9

General guidelines Whatever you use, read the manual! If you cannot access computer remotely, do not use it. Do you really want to run home if you forget a file? Be a human and, thus, lazy. If you did something more than twice, write a script for it. Whatever you do, stay away from point and click interfaces. they are easy to start using, but hard to expand and automate If you can type commands, so can the other program. Here comes the requirement for the human readable data streams and command interfaces. Do not rerun all computations, save the intermediate results. You do not want to restart a month long computation because of a power glitch. Split your work: gather data, process/analyze it. Analyze your data with scripts. If you find an error in the method, you just fix the script and let a computer reanalyze the data. Eugeniy Mikhailov (W&M) Practical Computing Lecture 11 6 / 9

Free software Avoid use of software which is not used by its developers. Whenever you can, use free (see The Free Software Definition) software It is usually free of charge as well. Developers are usually more responsive to your bug reports. In the worst case scenario, you can fix it yourself and nobody will put you in jail for doing it. I personally use Linux as a free operational system which has more than 43,000 software packages available (at least if you use Debian) Octave as an open software substitution for Matlab they are not 100% interchangeable but close enough gnuplot for publication quality plots preparation Eugeniy Mikhailov (W&M) Practical Computing Lecture 11 7 / 9

Version control software - git git - Designed by Linus Torvalds and community to have an archive of your work easily recover mistakes annotate changes synchronize with remote repositories share your work and patches with others (web, emails, etc) see who did what keep your own forks of projects keep decision about including other people contribution to yourself While it was designed mainly by programmers for programmers, it can be used for many other things (especially, if your files are in the simple text format). Eugeniy Mikhailov (W&M) Practical Computing Lecture 11 8 / 9

Final remarks The most important part of the computer is the one placed between a screen and a chair. Computers and programs are just tools. They are useless by themselves. Computers do not do what you want but what you asked for. Programming is easy, but debugging is hard. If you do not know what to do, you won t be able to ask computer to do it. ALWAYS think about test cases. Things to avoid Never call the result of computer simulation/modeling a result of an experiment. Experimental physicists will be very upset. Never blindly trust the result of modeling or a program output. Don t ever base your decision solely on a numerical simulation, i.e., do not let the computer make your decisions for you. Always have an override switch. Be lazy, but in a good way. Eugeniy Mikhailov (W&M) Practical Computing Lecture 11 9 / 9