Friday, October 25, 2013

Hacked...For You!

Hackers..I find these people really really cool. Man they can do all sorts of stuff which otherwise are not permitted. Well, the definition for hacking says. "Hacking is the practice of modifying the features of a system, in order to accomplish a goal outside of the creator's original purpose." The person who is constantly engaging in hacking activities is called a 'Hacker'. It wouldn't come as a surprise to you that there are indeed 2 types of hackers.
  • White hat hackers (good ones)
  • Black hat hackers (bad ones, also known crackers)hacker

While white hat hacking is a hobby for some, others provide their services for a fee. Thus, a white hat hacker may work as a consultant or be a permanent employee on a company's payroll. A good many white hat hackers are former black hat hackers.
You must have heard of this hack when the new iOS 7 was released with the finger-printing technology. A small group of people actually hacked this feature in a couple of days, all this while being in a hotel room (Being hotel room is strange but the fact is that they were indeed there in a room in Miami )
FBI is always on the look-out for such cyber-criminals and the current list for the most-wanted can be seen here.

To combat attacks from such hackers, there are multiple organizations that organize mock-up days, competitions to expose zero-day vulnerabilities. One such incident happened recently when the White hat hackers exposed flaws of the US Stock market.

To market their product really well, companies also organize such zero-day competitions and offer huge cash prize to people who expose vulnerabilities in their product.One done by Google can be found here, another competition which is the most well-renowned (like Angel Hackathon) is Pwn2Own, offering prizes from $10,000 - $100,000.

I personally feel is that security experts are really the game changers in any product. No matter how awesome your product is, if it can be easily bypassed then it can severely affect the product.

Stay tuned for some more technical stuff!


Sunday, October 13, 2013

OpenSource: Who invented this Nobel idea ?

     I wouldn't have come across "Open-source" hadn't I been studying Computer Science or for that sake technology. My experience with Open-Source came when I was first introduced to Linux Operating system. Well, I was flabbergasted by this totally and astonished to know that there were so many people who were contributing so much to open source software. 

    So, to know about it I decided to write something about it. It all started in the 1980s when Richard Stallman, created the Free Software foundation to support his idea (that code should be made available for the software you use or pay for). According to Stallman, rejecting proprietary software and promoting free software should be the ultimate goal. He thought this would promote rather than hinder the progression of technology. (and I must agree, he was totally right then..)




 
    With this began the era of free software which became to be known as Open Source Foundation. And if you go by the numbers today, mostly all of the software which are used in the industry are open-source. The perfect example of this would be Android itself, which is being used of millions of people today. As a matter of fact, all server used in data centers use some distribution of Linux which is suited for their application. Being a software engineer myself, we often use Open-source products over proprietary ones.
 
    Open-source does have many advantages which are not available in proprietary software. The users of Open-Source software are free to modify the software as per ones choice and requirements. There is a open community for every software being developed under this license where you can suggest changes/bugs and even modify them. The whole idea behind using an open-source software is flexibility and great technical support for the product. 

    One would think who gets the time to do anything for free for people. Well, the contributors of such software applications want to contribute to this enormous community because, it may have helped them at some point and that they want to give some back to them/they believe in the same ideology like Stallman (if not for them, I definitely feel so..). Stallman believed, "proprietary software is wasteful duplication of system programming, and that can be used instead into advancing the state of the art" . 

    The importance of open-source software and its reach can be felt, when we see executives from companies like Microsoft, one of the pioneers of proprietary software business quoting in 2001, "open-source is an intellectual property destroyer. I can't imagine something that could be worse than this for the soft-ware business and the intellectual-property business." And later making official open-source presence on the Internet. The list of all open-source software by Microsoft can be found here. (the list is hugeeeee)

    Finally, I would conclude with a quote from one of our professors in San Jose State, Joel West, "While social change may occur as an unintended by-product of technological change, advocates of new technologies often have promoted them as instruments of positive social change." This explains much of the philosophy that free source movement is alive. To know about various open-source licenses, you might want to visit this link, and to know what are the different software available check this out.

Stay tuned! 

Friday, October 11, 2013

Agile Methodology: For nOObies

     Project management is a very important facet in any software development. We have many different approaches to achieve the desired results in SD. Since I was myself a novice in understanding this terminology I thought I would delve deeper into it and make some sense out of it. And hence, this blog-post

So why do we need a Software development framework ?
Wouldn't you like your things to be kept in a systematic way yet organized way ? Likewise, in software development right, from SDLC, the idea is "to pursue software development information systems in a very deliberate, structural and methodical way, requiring each stage of the life cycle right from the inception of the idea to the delivery of the final system, to be carried out sequentially and rigidly".
Well, comparing it at an individual level with maintaining stuffs (being organized, clean..Blah blah...Don't we hear this so much from our seniors) it does make sense right ? 

What is it?
Software development as a  framework, is used to structure, plan and control the process of developing an information-system this includes the pre-definition of specific artifact and deliverable that are created and completed by a project team to develop or maintain an application. Several approaches typically used by people for software development today are viz., 
  • Waterfall model
    Agile development
  • Spiral model 
  • Incremental 
  • Prototyping 
  • Rapid Application development (RAD)
Don't you think if the objective of all of them is to achieve the same result, then why the hell on earth do we need so many models (Grrrr...) Don't worry :) you will soon realize that like I did.
Since, it is not necessary that all the projects have similar requirements, likewise different framework also have their own strengths and weaknesses. Let's put it this way, for different project requirements we have different frameworks.

   To give a brief summary of the past, Software development in the 1990s was shaped by 2 major influences: internally, object-oriented programming replaced procedural-programming as favored by some experts; externally, the rise of the internet and the dot-com boom emphasized speed-t-market and company-growth as competitive factors. Rapidly changing requirements demanded shorter life-cycle , and were often incompatible with traditional methods of software development.
Didn't I assure, that you will soon realize the need for different software development frameworks!

What is Agile ?
Agile is a group of software development methods used based on iterative & incremental development. This methodology provides opportunities to assess the direction of a project throughout the development life-cycle. This is achieved through regular cadences of work, known as sprints or iterations, at the end of which teams must present a potentially shippable product increment. By focusing on the repetition of abbreviated work cycles as well as the functional product they yield, agile methodology is described as “iterative” and “incremental.” In waterfall, development teams only have one chance to get each aspect of a project right. In an agile paradigm, every aspect of development — requirements, design, etc. — is continually revisited throughout the life-cycle. When a team stops and re-evaluates the direction of a project every two weeks, there's always time to steer it in another direction.

The results of this “inspect-and-adapt” approach to development greatly reduce both development costs and time to market. Because teams can develop software at the same time they're gathering requirements, the phenomenon known as “analysis paralysis” is less likely to impede a team from making progress. And because a team's work cycle is limited to two weeks, it gives stakeholders recurring opportunities to calibrate releases for success in the real world. Agile development methodology helps companies build the right product. Instead of committing to market a piece of software that hasn't even been written yet, agile empowers teams to continuously re-plan their release to optimize its value throughout development, allowing them to be as competitive as possible in the marketplace. Development using an agile methodology preserves a product's critical market relevance and ensures a team's work doesn't wind up on a shelf, never released.

Well that's about it from Agile methodology. But you also must have heard a lot about Scrum. 

Like in SDLC we have many different methods. Likewise, for Agile we have many different methods:
  • Scrum
  • Extreme Programming 
  • Adaptive software development (ASD) 
  • Dynamic system development method (DSDM)

What is Scrum ?
Scrum is the most popular way of introducing Agility due to its simplicity and flexibility. Because of this popularity, many organizations claim to be “doing Scrum”, but aren't doing anything close to scrum's actual reference. Scrum emphasizes empirical feedback, team self-management, and striving to build properly tested product increments within short iterations. Doing Scrum as it's actually defined usually comes into conflict with existing habits at established non-Agile organizations.

Scrum has only three roles: Product Owner, Team, and Scrum Master. These are described in detail by the scrum training series. The responsibilities of the traditional project manager role are split up among these three Scrum roles. Scrum has five meetings: Backlog Grooming (aka Backlog Refinement)Sprint Planning, Daily Scrum (aka 15-minute standup), the Sprint review Meeting, and the Sprint Retrospective Meeting

To know more about scum many books and classes are available from a variety of competing sources of varying accuracy and quality. One place to start would be the Scrum Training Series, which uses an entertaining approach to cover the most popular way of introducing Agile to teams. You can also download the 6-page illustrated Scrum Reference Card.

I hope after reading my blog you never make a (what's that huh ? expression) , hearing/talking about Scum or Agile to anyone. 

Stay tuned for more!