GotchaCode

Github Watch: Languages

Github is easily the world's largest repository for projects with almost all major companies as well as Startups  use them to deploy their code or contribute to Open Source. 

This is a small infographic of Top 10 Languages that are used to create projects at Github.
 I will try to analyze what we can deduce from this data. 
JavaScript, Ruby and Python take first three places. It was quite obvious because Developers are more focused to develop stuff for web and these languages provide everything you need to create a great looking website or App that can scale. Node , Rails and Django are the most famous projects that are trending nowadays.
One shocker is Shell Beating Java and PHP, well all we can make out from this data is that most of people or a huge percentage using Github are *nix users (either OS X or Linux ) . One factor can also be that people might not want to Open Source there java projects or PHP ones.Its a highly competitive market and sure we can't blame them. 

Next up we have C, C++ , Perl and Objective-C. It was obvious because C and C++ are tougher to learn compared to languages such as python, Ruby or JavaScript.Objective-C in the list shows that iOS developers are also contributing to Open Source projects at Github.

This data might not be accurate to the developers language choice and Projects, but surely gives us a view of what current trend is.

Stay Focused and Keep Shipping.

It is a famous quote from an artwork at Mark Zuckerberg's workplace. Well this post has nothing to do with Facebook or Mark Zuckerberg.
Rather this article will give you some cool hacks/tips on how you can optimize or build your development setup.

The important factors hardware, software, Language and services are mentioned here:

  • Hardware: Choose a hardware that gives you least trouble to setup, if possible always have a secondary screen while using  a netbook/laptop. More screen real estate is always handy. Use SSD in place of normal SATA hard drive. You will be amazed by how much faster your system will behave.Don't compromise on RAM, the more the memory the better it is. Another important thing is that Never mix your development machine with your desktop machine. You will have less distraction and much better result.I would suggest building your own machine as it will give your more freedom and will save your precious money that you can invest in other gears. If you are inclined to develop on Linux shy away from nvidia graphics. ATI gives fewer problems.A Noise cancelling headphone and a ergonomic keyboard are also a valuable addition.
  • Software: If you want a fairly current and stable development environment I would suggest you use something like Ubuntu or Debian as your development OS. They are pretty mainstream, have the largest repository in planet, anything that will be introduced to Linux will reach your pretty soon. Also the biggest benefit is that you won't have to waste countless hours to configure it. Fedora/Arch/Gentoo is good to learn Linux but they take pretty huge amount of time to configure. And if u are a developer who is past that stage probably you won't like to get in that mess. Some may argue about an OS X as a choice of development platform. I would not hesitate to say that it can be an excellent choice given the hardware and operating system is of world class. Also if you developing apps for iOS or OS X you should stick to Apple Ecosystem. The only thing that can bug you is that you can get every development environment free in Ubuntu/Debian for which you might need to loose some money to buy stuff from App Store.One more important thing is that you should invest sometime to learn some very important utilities on a UNIX platform like basic shell scripting, some command line and get acquainted with  Vim/Emacs and tmux or screen. Once you master these things it will give a a huge advantage and you will be able to do more efficient development.
  • Language : Its purely  a matter of choice but having a scripting language such as perl, ruby or python and a low level language such as C will give u a great deal of advantage.Also if you are a web-based guy do learn ruby, JavaScript, CSS.Plus some server side knowledge will always be useful to you.
  • Services: Always try to follow and use mainstream and proven services such that you will have greater acceptance.eg: Github. Also blog about your work and subscribe to a mailing list. It will always keep you informed and current.
In the end, you should always prefer a test driven, well documented clean code such that it will be easier to integrate or spawn newer functionality in your product.

Hack Of The Week: Octogit

Every weekend I will be showcasing some awesome projects that will be termed as Hack of the Week.
This week "Hack of the Week " is Octogit. Its a Python project that gives a command line interface to connect to Github and it lets you hack on your project without opening the Github web interface.

Octogit in Action
Its an incredibly useful tool in your arsenal, why? Because all you need to do now is to login using your Github username and password and then you can create your Repository, Sort our issues, Open them, Close them. Does everything you always wanted to do without leaving your faithful terminal. While it might now appeal to Windows Developers as much but for OS X and Linux/BSD users it is a boon if you are using Github to deploy your code.


What it does very well: Gives a damn easy way to work with our favorite  Github in command line mode.

What it could also have: It would be pretty awesome if it could somehow allow to post Gist ( a popular Github pastebin service) along with other features it have. Though it is possible to achieve it using some Vim and Emacs plugins.

You can connect with the Hacker here: Mahdi yusuf

Installing it is simple:
Just type in your terminal:  pip install octogit.





Should be octogit, not Octopress, which is a different project altogether.

Why Vim?

Vim as a Developer IDE

Every developer has a favorite text editor that he uses for his daily development work. If you are a OS X or Linux User, this should be your case for sure. Dotfiles or Vim config files are something every developer cherishes and flaunts as it is a result of hours of practice and years of compilations. Here are my Vim config files and plugins.I will be posting screenshots of these plugins and link to download them easily.

But first of all why Vim ? Why not something else?


  • There is only one valid competitor of Vim , Emacs still why you should consider using vim. The answer is simplicity, elegance and the efficiency you achieve using vim is unparalleled. Vim had always had a big user community and after decades of development and bug fixes this software is near perfection. 
  • There are a lot useful plugins readily available and constantly new and innovative plugins that integrates you with latest services like Twitter, Github are present and much more are shipped on a daily basis.
  • It works really well as your experience grows and almost every time you type in some code or text your finger would automatically search the same functionality everywhere else.It becomes so effective.
  • Whether you are developer on OS X or Linux, it doesn't matter at all. Where ever u go, with your same .vimrc and .vim/ files you will feel right at home. Unlike Emacs you don't need a learn LISP to master Emacs. Emacs are nice but they require much more effort then vim and considering the result is almost the same why not better use Vim.
Here are some of plugins showcased via screenshots just to give u a feel of vim.

There are plenty of useful plugins, in the first you can see the nerdtree( it provides an easy interface to switch between files u are working on. Next you can see proper syntax highlighting with  language support. In the last one you can see that you can publish your code to web Github Gist just by using a simple Gist Command. Sounds fancy right. Well I assure you the learning curve is steep only for a while , once you are past that stage you will be fast and efficient as hell. 

I am posting the link of the vim dotfiles, you can easily clone them using git or download as .zip  or .tar.gz compressed files. All u need to do is unpack the file and copy the contents in your home directory. Once done you are good to go.