Version Control

Version Control is a practice that is not just used in software development but other domains like engineering and general documentation. Let us have a brief look at what it is all about.

When a single person is working on software, the version control may not seem to be of much use at the cursory glance. But if the software is intended to do anything more than a singular task, it would be prudent to use a version control system - it makes it easier for software development. (Note that I would use the word ’software’ or ‘code’ but it would apply to any work). If a group of people are working on the same project, then version control system is certainly necessary.

There are many version control software out there - but you can apply the system just by following a certain set of processes. A version control system should do the following.

  1. Maintain the revisions of a particular unit of code
  2. Enable to go back to a particular revision
  3. Enable branching and merging of code

The last one becomes important when a group of people work on a project.

A version control system lets you save the state of a code at all stages. Most systems employ the use of version numbers to maintain different states. This is sometimes visible to the user of the end product - the numbers like 1.0, 2.5, or multiple set of numbers get attached to the software.

Many times when you are working on a piece of code, and apply changes to it - there might be instances when things do not work as they should. That is the point, where the version control system becomes useful. You would be able to go back to the state of the code, just before you made those changes. You can either review that code to apply the change to the faulty version, or if not many versions were created after that version; you can start of from that point.

In cases of large projects, a group of people work on a software. Most of the times they would need to work on the same file or set of file. When such is the case, the particular person, takes out a branch from the main set of files, and works on it. The main version of code is usually called the ‘head’. Once the development to that branch is complete, it is merged back into the main set of files. If changes have been done to different part of the same code file by two people, the code is reviewed and merged appropriately.
Read the rest of this entry »

Floppy Disk, CD, DVD, Blu-Ray, HD-DVD and Terabyte Disks - Data Storage For Consumers

I have not used Floppy Disks a lot - but I have had my share as I started of my experience with computers in CLIs. Over the years, the scope of data storage from a consumer perspective has grown in scale - from floppy disks to TeraDisks. Not long back, Vinyas had written about Blu Ray disks, and now Sourjya writes about TeraDisks in the near future.

Let us look at how the storage was used by people, how they are used presently, and what would the TeraDisk mean in that perspective.Data Storage Evolution

Floppy Disks

Floppy DiskThere were two types of floppy disks. The partially flexible 5.2″ floppy disks that could store 1.2 MB of data. And then, there was the 3.2″ floppy disk that could store 1.4 MB which came in a sturdy plastic casing. This was quite enough during those times (back in late 90s) when the OS could be booted out of a floppy disk. It was quite sufficeint for the restricted consumer market. At most, it was used for storing RTF (Rich Text Formatted) documents, and spread sheets. The more common use was to store documents in vanilla ASCII format. The The Adventures of Sherlock Holmes by Sir Arthur Conan Doyle amounts to just around 576 kB and contains 12 novels. This is not the usual size of the documents that people would work with. It would range around 1 kB to 10 kB. That meant, one could store around 100 documents in a single floppy disk.
Read the rest of this entry »

Computer - Hardware And Software Roundup

Today, I will just recap on the various topics we covered with respect to computer hardware and software in the past several weeks.

Journey Of Code - The world-view of the hardware and software realm, and how they are interconnected.

Data Structures - One of the basic abstract construct that is used for software applications.

It was fun writing these basic informative posts.  I might go about doing the same, some time in the future.  For now though, expect normal critique hinted info articles.

If you wish to see some set of articles on a topic with in the realm of Splat, please do comment.

Bounty For Open Source

I stumbled across this topic, when I was researching the topic of Photoshop Vs GIMP.

Open Source software, be it operating systems like Linux, CMS like Drupal or graphic editors like GIMP, has most of the times been the poorer cousins of their commercial counterparts when it comes to features. Of course, there are cases where the Open Source alternative is way better than commercial ones (web servers for example), but they usually happen to be exceptions and special cases.

Open Source software is usually developed by volunteers - driven either for the purpose of giving to the community or scratching an itch. The Open Source software may be said to lack the coherence in developing a solution. It is this situation that marks the cue for entry of bounty.

Wanted Poster

Bounty, in the traditional sense, is something that are usually put on the heads of criminals. Bounty hunters chase them up, catch them, and they are rewarded the amount. A similar case happens in the world of Open Source and it is not that dramatic as things happening around Neo in Matrix.
Read the rest of this entry »

Data Structure - Tree

This time, we will look at yet another data structure - tree. The structure of the tree is quite different from the linked list. Going into details of tree data structure makes it look much lesser like a list and more like - well - a tree.

But it must be noted that the ‘linked’ can still remain in a description. The tree data structure is a set of linked nodes. They are linked in a specific manner. The fundamental nodes have following elements.

  • Data element
  • One or more reference elements

Tree - Data Structure

The tree structure has a root node, which contains data and contains references to child nodes. The child nodes, recursively will have data elements and reference to more nodes. This continues down to different branches, and ends when the entire bottom most nodes have their reference nodes empty. The child nodes are also called as leaf nodes.
Read the rest of this entry »

Data Structure - Stack

We have been looking into data structures in this series. First we looked at linked list, and then a specialization of it - the queue. The linked list can also be specialized to form a structure, that is called Stack.

Data Structure - Stack

The stack behaves - well, just like a stack of boxes. If queue were a first-in-first-out setup, then stacks have a ‘first in, last out’ or the FILO configuration. Nodes that are added in the beginning would be removed at the end after all other nodes that were added after it are removed.

As with the queue, these two operations are made to operate on the list in a certain way for it to be a stack.

  • Push - or add node
  • Pop - or retrieve node

When a node is added, it is added at the ‘top’ of the list. Also, when a node is poped, it is done so from the top. (In the context of stack, ‘top’ and ‘bottom’ are used instead of start and end of a list).

We can state the operations performed for pushing and popping a node in pseudo code.
Read the rest of this entry »