Sunday, October 27, 2013

Hacking: Who are hackers?

When we hear the word ‘hacker’, what is the first thing that comes to our mind? They are bad people! We think that hackers are the ones who attack computers and steal information and so on. To some extent it is true, there are such people. But they make a very small portion of all the hackers. There are hackers with good intentions called ethical hackers. They find out issues with the software and let the software owner know the problem before an unethical hacker exploits it.

Hackers are the ones who look at computers very differently than the rest of others. It is their thinking ability and vision that leads to real invention. In fact, companies like Google, Microsoft and Facebook gives bounties in tens of thousands of dollars for ethical hackers who find critical vulnerabilities.

Many security and network protocols maintain open standards, so that researchers and other ethical hackers can find out any problems with the protocol. The prime example here can be public key encryption protocol. This protocol is security critical and is used to to protect our banking, business and e-commerce data. The underlying algorithm is public, but is still hard to crack as it requires immense computational power. Till date, people have not found any backdoor to this security protocol and millions are being spent to make sure none such exist, or if they exist the good guys find them first.

Well, there are malicious hackers too. For example, the computer virus CryptoLocker, recently in news which encrypts all the data in the computer and will give you the decryption key only if you pay some money.

In reality, most hackers want to learn the complexity of the computer world and solve real complex problems. Hope such hackers gain numbers.

Sources:
http://www.forbes.com/sites/jameslyne/2013/10/22/computer-virus-spreading-that-means-you-never-get-to-see-your-files-again/

Sunday, October 13, 2013

Open Source: Vim

We are extremely familiar with the popular Windows editor, Notepad. Similarly, Vi is a popular choice as an editor in Linux/Unix world. Vi is a basic text editor with powerful and non-fancy features. "Vim" is an acronym for "Vi IMproved". Vim has yet more features than Vi, including mouse support, graphical versions, visual mode, many new editing commands. Vim has become one of the most commonly used text editors by programmers; I am one of them too! It was written by Bram Moolenaar and was made publicly available in 1991. Vim is free and open source software.

There is a built-in tutorial for beginners in Vim, which can be accessed by vimtutor command. A user manual too is available and it has the help feature that will walk us through the commands.  Vim basically has two modes edit mode and command mode. Vim has a vast array of commands and features.
Anyone can customize Vim, right from user interface and macros to user defined functions. Any functionality can be added or extended using vimscript, Vim‘s internal scripting language. It also supports other scripting languages like Perl, Python, Ruby, Lua, Tcl and Racket.

Vim has definitely improved a lot over Vi. Vim is compatible with Vi, however it is not 100%. Few enhancements of Vim include auto-completion, comparison between files and revision control of files, Yes! I have tried these file operations. It has a rich plugin support. Various compression formats like gzip, bzip2, zip and tar format are supported. It also supports remote editing over network protocols like HTTP and SSH, session state preservation, split (horizontal and vertical) and tabbed window support. It provides multi-language support (Unicode), visual mode and many more.

Lastly, few of the platforms that Vim is supported on include UNIX, Linux, BSD, Mac OS, IBM OS-2, Microsoft Windows versions, etc. One thing you should really appreciate about Vim is that, apart from providing rich and powerful features it also encourages users to consider donating to children in Uganda, as it is released under the charityware clause.

Source:

Sunday, October 6, 2013

Agile: Various Methodologies for Software Development

There are various agile methodologies for software development. Most of them share the same philosophy, characteristics and practices. But, each one is different from an implementation point of view. Here are few claims of the main methodology which I find interesting.

Scrum - Here, Product Owner works closely with the team to figure out and slice the system functionality that forms the “Product Backlog”. Features, bug fixes, non-functional requirements and so on dwell in the Product Backlog. Each slice is a customer deliverable. Slices are prioritized as “potentially shippable increments” of software. Cross-functional teams estimate and sign-up to deliver a slice, which can be divided into tasks, in each sprint. The sprint length can be defined by the team. So, next sprint will have the next set of prioritized tasks and hence, it will continue.

Feature Driven Development - FDD is again a model-driven, short-iteration process. The features are small and useful. It follows eight practices for the feature delivery. Unlike other agile methodologies, FDD has short specific phases of work for each feature which include Domain Walkthrough, Design, Design review, Code, Code review and Promote to Build.

These were few processes of the main methodology, but, there are many more like Lean and Kanban, Extreme Programming, Crystal, and Dynamic Systems Development Method and so on. Usually, any team does not follow strict rules of agile development; there is always some amount of flexibility induced. This will help the team to perform effectively and have the deliverable ready even before the customer can know it.

Sources: