GotchaCode

Modern Development Workflow For A Team

Development is a complex process and it becomes more complex when many people are pushing code on a same codebase.


  • Ideally a development workflow should be asynchronous, so that one does his work and fixes the issues assigned to him and doesn't get stalled by his team member's progress. 
  • In order to implement this, put up you more competent programmers to pair for a dependent modules such that that doesn't get stuck if one of the two programmer lag. 
  • If two developers are working for different modules in a project, working on a DVCS such as Git is a great boon. Also, Github gives a great workflow with Issues and Pull Request. Issues and milestones are a great way to schedule you development such that there is no mistake in planning. You get set tag on the issues so that developer will know what is the high priority task, and plan accordingly. 
  • Make sure your team members are competent if not experts with Git, it really helps if everyone uses git wisely. Private repos are handy as well when you are working on commercial stuff.
  • Using git-flow is a good choice. It truly brings sanity into the development workflow using Github and git. 
  • Realtime chatting via Skype is also a good choice, developers could ask stuff from each other without breaking other's flow. 
  • Also, make sure you people plan and discuss with each other before a days work and review at the end of day. One things is for sure, following this process will have you a more effective team.
Thats's it folks. If you like the post follow me on twitter : @vinitcool76


Guide To Start With Application Development.

In my opinion the best way to learn a language is to develop applications in it once you are comfortable with the syntax.
It is a great learning process and teaches much more than what reading a book will teach you. Development is itself a very vast process, let me detail  a very specific part of development. Web Based Application Development
Since it is a web based application, obviously you will have two parts, client side and server side.
For Client Side Applications: You can start with development of Chrome Extensions or Firefox Extensions. Alternatively, you can develop some Facebook or twitter Application. It will give you a great exposure to REST, plus you will get to work in the latest technologies as well.
For Server Side Applications:
Try and develop an restful API system, such as some API for a facebook Application where the Server crunches your data and you have some meaningful information in your application. It might sound easy but its actually a quite tough thing to accomplish. Still it is a great learning experience. You might want to refer some good books in this process.

Well, the point is you might not become a star developer of a sudden, but it will be one of the most rewarding experience in your software development process. Learning by doing, rather learning by failing in a very good process.

So take a crazy idea and Start hacking!



± May The Force Be With You! 

How To Setup A Mac for Web Development.

Macs are beautiful machine. Luckily, I own a Macbook Pro that has 8GB ram and 256GB SSD. I am a Web Developer by profession so here are some tips that you could use to setup your mac.


  • Install Xcode: Install Xcode, preferably the full version, if you might like to develop for iOS or iPad. It is a free download from App Store.
  • Install Homebrew: This is a must and it is really satisfies the need to package manager in OSX.
  • Install dotfiles: Please use dotfiles, there are many good ones already shared on Github. You can use any one of them from here. Install Dotfiles
  • Install z, oh-my-zsh: Oh my zsh is one of the best and feature rich shell, do use it with combination of z. Z is a directory jumping tool and it is really handy. Install Z
  • Install and configure a text editor: Install Sublime Text2, Vim or Emacs as your text editor. They are most extensible and powerful editors and you can configure them to satisfy all your needs. Make sure you invest sometime configuring it to your taste and needs. It will be intensely productive and satisfying experience.
  • Install Node and NPM: If you are web developer , you must have dealt with JavaScript. You must install both of them. Not only it extends the package manager needs, it is basis of other good package managers for web.
  • Install Component, Yeoman, Bower and Grunt. These are some indispensable tools that are very important for any web / web app developer.
  • Install Chrome Canary: If you want to get the best Developer tools available , install chrome canary. It is the latest and provide great support for various things such as sass, compass etc inbuilt.
  • Install Google drive and dropbox: Please keep your important stuff in cloud so that you may never loose your data again. Also, you can backup your code in Github.
  • Install SizeUP: It is one of most productive software on mac and provides such great arrangement of Windows that you will be amazed. Either buy it or install the trial version. Install Sizeup
  • Install Git and create a account on Github, if you haven't already. There is such a vibrant community on Github, mostly great web developers that if you are not updated with it.You will loose great deal of useful information.
  • Automate most of the grunt jobs you do daily. Use build tools such as Make, Cake, Jake etc. Also, learn little bit of shell scripting. It really helps in long run.
  • Install Python and the module install tools such a pip and easy_install. It is really a must.
  • Install Ruby and ROR. They have pretty good community. Just a basis google search will get you going about the install and use process.
  • Install VirtualBox, it is an invaluable thing if you have to use another OS such as Windows or Ubuntu.
I guess these are pretty exhaustive list of TODOS if you using mac for web/web-app development. I will keep updating the post if i remember any more important thing. The baseline is that macs are great piece of hardware and a pretty decent OS, so invest sometime in setting it up. It will save you tons of time and frustation. Have a good weekend, Enjoy!

Configure Sublime Text2 for JavaScript Development.

I recently started using Sublime Text2 full time at work after being a vim user for more than 4 years. Vim is really good but it takes sometime to configure it properly. Well this is not a Vim vs ST2 debate. It is more of a vim user shifting to ST2 Tip.

The first thing that you should do is to install package control, it provide really good 3rd party plugins. You can check out the link how to install it. Install Package Control



Once done with that open package manager and install these useful plugins

  • JSHint.
  • JSLint.
  • DocBlockr.
  • AngularJS.
  • Mocha & Mocha snippet 
  • NodeJS.
  • Live Reload.
  • AMD Module Editor
  • Backbone.js
  • Pretty JSON
  • Require Node.js Module Helper

Among, these plugins mocha is the test runner and mocha snippets provides you will snippets to write the tests very fast. Also, there is good plugin for vim mode in Sublime Text2, you can use that if you don't want to waste the muscle memory. I highly recommend the real time linting with JSHint. It will make you so much more productive and improve your code as well. It acts as the first unit test against the code you just wrote. 

One more important thing, you could set the indentation with tab width equals to 2 spaces. It is a very sane default while writing JavaScript code.

What really struck me was that Sublime Text enabled me to do almost everything i did with Vim without going into the pain of configuration. Also, the learning curve is not at all steep so i could get productive real fast.
2013 Wishes: Sublime Text Terminal

2013 Wishes: Sublime Text Terminal

How do you debug javascript using the chrome debugger

Which mocha plugin are you referring to, the runner? or the snippet package? I'm assuming you mean the runner, but I wasn't sure at first...and in the interest of clarity for others who may also have this question, perhaps you could clarify? My experience with the rest of the plugins was smooth, however.