slash n: technical session 8 - making time - minute by minute - janmejay singh

Post on 05-Dec-2014

487 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Making Timeminute by minute

Janmejay Singh

● Automation

● Env/Platform/Tools

● Customization and Tweaking

● Choice of Hardware

● Routine and Discipline

Automation

tests let you go faster

you can drive fast, because you have brakes

write tests and do "CI"

● easy maintenance and evolution

● "CI" helps keep tests fresh and project

healthy

● manual testing: last resort

"personal builds"

● CI build is a sacred cow

● essence: "personal build"s allow multi-tasking

● PB: a not-so-sacred cow, so no one messes with the sacred cow

"git HEAD..<ref>"

● git push -f personal HEAD:master

● personal-git@ci4:repos/pricing-xyzabc-jj

Env/Platform/Tool

heterogeneous dev-env

● may catch issues early: like incompatibility or

behavioural differences

● team members use tool-set and env they are

most productive with

● smart editors(Emacs or Vim) outshine IDEs for

all but java, try em!

debugging session in emacs

context switching for devs

● get "git"

● branches: multiple streams

● "branched development" + "personal build"

● stash: urgent fixes over half written patches

● bisect: spot behavioural changes with ease

● if easy, avoid context switching

learn!

● gdb (and cousins)

● shell scripting and tools like awk, sed etc

● intricate details of your deployment env

● performance analysis/monitoring tools

● all IDE, Editor and Shell shortcuts

● ... anything else you use everyday

embrace env-management tools

● especially for teams working on multiple

projects

● "rvm" and "gems", "virtualenv" and "pip",

"slots" and "portage", "gcc -Wl,-rpath", and

should all else fail, the mother of them all:

"chroot"

● if you are really hardcore: use VMs

make a sane dev-env

● tip of the iceberg: debug and nail issues that

only you seem to have

● have scripts to take care of repetitive tasks on

your box (aliases, functions, executables etc)

● smart shell: radiate information you need on

prompt, keep it non resource hungry

use what you understand well

● generally any flavour of "Unix" is dev friendly

● if you know "Windows" really deeply you may

well be more productive with it

● general notion of a user-friendly env is a

misnomer, it is a function of user's

understanding

Customization and Tweaking

maximize screen-space

● cut clutter and peg to highest resolution

● tiling window managers are brilliant with

screen utilization

● hide visible controls that you rarely use

● don't fall for eye candy (compiz / plasma /

clutter / unitiy never help you with work)

tiling window manager and other tweaks in action

master the keyboard

● touch-typing: prevents injuries and makes

you faster

● configure frequently used shortcuts close to

the home-row

● use terminal multiplexer: utilizes screen real-

estate well + allows swift navigation

my extreme customizations

● cpu freq tuning (max, min, threshold, or just

manual flip)

● gc tuning IntelliJ for 1 big and 2 small

codebases

● page-cache and swappiness tuning

● cpu/io scheduler

● noatime

● ...

Choice of Hardware

well, choose wisely

● solid-state over magnetic disks

● try multi-monitor setup

● use larger, hi-res panels

● watch out for physical injuries: keyboard,

docking-station, monitor alignment

Routine and Discipline

core working hours

● no meetings time

● close twitter and facebook

● close mail client

● ideal, but difficult to do as a team

● easy to do at individual level

● can be task driven

Keep exploring, may the source be with you!

top related