Sunday, May 6, 2012

Power Tools

Sticking to a theme with my first post, today's notes will continue to improve the Windows operating system, with power tools.  Code Complete, a highly recommended book in the field of computer science and software development compares software development (software engineering) to construction. The analogy work extremely well because it is a concept that any one can relate to. Expanding on this analogy is where I have constructed the name for this blog.

Through out my child hood my grandfather taught me the importance of having 'good tools', in particular how useful a pocket knife is. He focused on teaching me about a pocket knifes not because it is useful for cutting thing but it is also doubles as others tools, like a lever, or a wedge. In his teaching I learned many thing about the care and maintenance of my tools but most importantly I learned to spot the versatility and potential that my tools posses.

While the pocket knife it is a versatile tool, what makes it a 'power tool' is that it is portable. Portability in the software development world is a trait that makes you agile. Agile is something that I am a strong proponent of because I have not only seen its successes but I have lived them in both the software development world but in my personal life as well.

Tools that have the ability to be versatile or agile as well as portable are by my definition 'power tools'.
This means that if you get comfortable with using them you can easily switch to a different system with the same tools and feel at home.

The best part about power tools are that they are simple. The usefulness of a pocket Knife is that is preforms one basic function and preforms it well, which allows it to be used in a variety of scenarios. Like the pocket knife each of these power tools exhibits this same principle.
Do one thing and do it well. 

The Python Interpreter

Python Interpreter is the text processor for the Python interpreted programming language. This tool is a programming language. The highlight to this tool is that it can let you write whole applications or scripts that will complete tasks for you with minimal effort. This is a clean and elegant language that is written to operate very close to the operating system, because of this you can script you tasks so that you never have to repeat them as well as port them over to different operating systems, with minimal to no effort.

While I speak of pythons systems level programming highlights, python is not just for systems operations. It is after all a general purpose programming language with the capability of writing full scale applications. As a clean and elegant language it makes the code easy to read, write and use as documentation for all of your complex processes.

To me having an easy to read language make all the difference when documenting complex processes. In stead of having to have complex or verbose documentation one can use the script or application as documentation for the task it completes.

The interactive interpreter also allows for novice or expert programmers to work in a trial environment as they write there script or application, letting them line (task) by line (task) instead of function by function. This is the beauty of a fully interpretable language.

IPython the Improved Python Interpreter

The improved python interpreter. While the stock python interpreter is powerful and a great tool on its own the improved interpreter helps a developer working in the interpreter see the full scope of python operations.

This interpreter also operates as a text based shell, allowing you to use failure operating system commands like dir, ls, cd, cp, etc in line with python operations. The input and output designators also help document your path as your complete a task. This improved editor is my personal preferred operating environment when dealing with the python interpreter. 

The GNU Tools for Windows

If python is the hammer in your software tool belt, then the GNU tools are a work bench full of ratchets, sockets, screw drivers, and wrenches. This is not one tool but a whole tool chest, full of powerful and potentially dangerous tools.  These will tools will add to your shell customizations to improve the way your work.

Notes:
Be sure to follow all install instructions with this tool, read the README.txt. it has extra instructions on how to install the full tool suite. 

Be sure to add the proper bin directory to your path allow you to use all of these tools.

The Text Editor, Vim

The power tool of power tools, is 'The' Vim text editor.  This is the power sander, jack hammer, and power drill all wrapped up into one super tool. While one might think that a text editor is just something to edit your files, to a developer your text editor is your super tool.

This text editor is a line operated, regular expression editor. This means that you can quickly edit a whole line with a regular expression or a whole group of lines.  This makes this editor perfect for not only developing software but for refactoring it to work how ever you see fit.

For your first tutorial on how vim work, I recommend running the vimtutor.  Vimtutor is an vim text file that is opened with vim that as you read it it walks you through how to use the Vim editor, to its full potential.

Notes:
Be sure to check out the plugins for vim. These improve the improved text editor to be truly amazing.
With these power tools in your tool box your effectiveness can be greatly improved to be truly limitless. 

No comments:

Post a Comment

Its the little things (like opening a web browser)

Sometimes as your developing a solution/script for a problem your faced with interesting challenges where the dumbest workaround (opening a ...