slash n: technical session 8 - making time - minute by minute - janmejay singh
Post on 05-Dec-2014
487 Views
Preview:
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