Sunday, October 27, 2013

Hacking: How a misunderstood word becomes its own field.

Of all the words computers have popularized, none has been as misinterpreted as the word Hacking.  What started out as a slang used by programmers at colleges, "hacking" was nothing more than programmer jargon for having fun.  Today, thanks in large to Hollywood and the news media, hacking's connotation has become that of cracking, which is using a computer to gain access to something illegally.  What started as a harmless word, hacking now represents a malicious area of computer science. 

I find hacking to be a fascinating subject in the field.  Some of the biggest hacks in history have been great lessons for up and coming programmers.  After all a hack is nothing more than one person exposing a weakness in another program causing it to misbehave.  Because of researching hacking on my own time, I have learned how to make my programs secure so to not be vulnerable to common attacks.  Attacks such as Smashing The Stack, which is common in C programs when the original coder is careless with how they read in input.  The best solution to someone messing with your programs stack is to use safe functions or data structures that prevent the stack from being misused.  Not all hacking is considered bad, White hacking, is done in a manner of sport to find the weakness but rather than exploit them, warn the programmers of these flaws. 
Hacking today though is most commonly thought as of a completely negative aspect.  

 Organizations such as Anonymous which use hacking as their main tool have gained large media attention.  Anonymous have hacked into many websites using the hacking methods to not only take information but also to disable operations of websites. 

Not all hackers are evil, not all hackers are crackers.

Sunday, October 13, 2013

Open Source: Free to Share, Free to learn, Free to operate.



One of the coolest things I discovered my freshman year in college was a new operating system for my computer, Linux.  Having grown up a Windows user I was only ever exposed to the dogma of proprietary software.  In my complete ignorance I believed that all software was owned by the companies such as Microsoft, Apple, and  Adobe.  In my search for programs I looked to these mentioned names paying ridiculous amounts of money to use their products.  This all changed thanks to a certain Penguin.
 
Running a Linux system for the first time left me in quite a state of shock.  All the software for it was free to use developed and supported by the community!  Problems in  this free software were constantly being looked after online, and the source code was available for anyone who wanted to add to it.  I started learning about Open Source and the projects such as GNU which stress free code. GNU in particular makes it a binding contract with users allowing them to use their software for free as long as the software stays that way.

Today, after seeing my fair share of code I now understand the importance of Open Source.  It pushes proprietary software to stay fresh or be replaced.  There are some disadvantages to Open Source though.  A program is only as good as it is maintained.  Where companies will maintain their legacy software, when an open source project loses the support of the community it can become useless.  An example of this is libraries for programming languages.  If the languages keeps updating but a library does not stay maintained, the library become obsolete and no longer functions properly with respect to the new language. 

In the end, I believe Open Source software is pivotal to the success of computer science going forward.  Open Source programs have been instrumental in my education as well as many others. Offering everything from languages like Java, to free operating systems such as Linux, Open Source ideas have changed the way programs and knowledge is shared.

  As an end note, as important and cool as I think Open Source projects are I still believe that companies should charge for programs on the basis that I want to code for a living and I hope to get paid for doing it!

Friday, October 4, 2013

AGILE: Making an effective use of your time

Today at work we had story time.  My first thought was to bring a blanket in case nap time was to follow, however the stories we told were not of fantasy nor adventure, but stories of use cases. Stories of what one developer needs to do his job, as well as stories of what the customer expects from the product.  Theses stories were the first step in developing a better product using AGILE.  AGILE  a development process for project management, has become increasingly more popular in companies due to its communicative efforts between developers and owners throughout the development of a product.  Through the processes involved in AGILE such as Sprints, Scrums and story time, project owners are able to communicate with the developers every step of the way.

The body behind AGILE is the backlog where stories are kept, these stories as explained before are user/ developer requests.  Tasks are then assigned to each story in a manner so that they can be accomplished in a set amount of time called a Sprint.  Daily standup meetings referred to as Scrums are also crucial in AGILE development.  These meetings give us a chance to ask the owner/client what is most important for that day as well as give some updates.  Also if anything is causing problems and blocking our progress, the scrum allows us to communicate this and brainstorm with the whole group for a solution.  By constantly querying the product with vague use cases versus specific, it gives flexibility to the designers while still meeting the desired result on a schedule. All in all, AGILE constructs a solid plan to make an effective use of developers time.