Tuesday, October 29, 2013

Data Structures: How it Works

data structure
Think about some of the furniture that we have in our living premises. The cabinets in the kitchen store cups and plates, the closet in our rooms stores clothing, and the garage, if you have one, stores vehicles. We put the objects we have into those different compartments because it is easy for us to organize and access them to get what we need. Like a computer, there ways to store and access data that allow us to do what we need to do. These storage are called data structures, which is a way of storing and organizing data in a computer so that it can be used efficiently.

Each data structure helps the programmer handle large amounts of data and structure them in a manageable way. Common uses of data structures, for example, are searching and sorting. Searching allows us to find the data we need in a structure and sorting allows us to organize the data. Having data structures can sometimes allows us to do less work. Some data structures include arrays, linked lists, and binary trees. They all have their own advantages and disadvantages: arrays are good for searching, but not adding data, linked lists are good for adding, but not searching data, and binary trees are good for both searching and adding data.

data memory
Basically, each data structures have their own sets of operations that are performed to access and change data. It is important to have knowledge of different data structures so we know which will be the most advantageous in our programs. Like our household furniture, it would be inconvenient to put our clothing inside kitchen cabinets and plates inside closets.

Tuesday, October 22, 2013

Hacking: Thank Goodness for Rebels

black hat vs white hat
In life, there are always good and bad people. In a classroom, there are always those that follow all the rules and those that rebel and break the rules. Like the shoulder angels and devils, you know, where the angel tells you to do the right thing and the devil tells you to do the wrong thing, you can't have one without the other. In other words, you can't have good without bad; you can't have good hackers without the bad hackers. It is because of the good hackers that there are bad hackers and the other way around.

A hacker is defined as "a person who illegally gains access to and sometimes tampers with information in a computer system." We usually think of hackers as bad, but there are situations when hackers do bad for the greater good. You can compare it to Batman, where he does wrong things because good behavior and following the law isn't enough to accomplish what needs to be done.

People think of hacking as breaking into computers and stealing data and files. While there are hackers that do such things, known as the "Black Hats," there are other hackers that, for example, hack into sites in order to help improve them, known as the "White Hats." Hackers are talented coders, since they are able to do either good or bad to different sites and systems.

Without hackers, we wouldn't have some of the things we use almost everyday today. The desire to explore systems and see how they work made many hackers knowledgeable. Open-sourced programs wouldn't have much improvement without hackers. Steven Jobs built Apple. Mark Zuckerberg founded Facebook. Linus Torvalds created Linux.

Though it is important to not forget about the black hat hackers, if one can stand out and do something that benefits others as a white hat, then they are also hackers. Hacking, like Batman, whether it is good or bad, is up to you to decide.

Tuesday, October 8, 2013

Open Source: Free is Good

open source
There are a lot of things that require money. If we wanted to make something, then we would have to buy the necessary tools. As a college student, I have to save as much money as possible whenever I can so I don't have a lot of debt. The average college student uses the computer almost everyday. They also have to use programs that cost a lot of money such as Microsoft Office and Adobe Photoshop. There are also alternatives to these program that are not just free, but you can also learn from it, alter it, and share it such as LibreOffice and GNU Image Manipulation Program. These types of programs are called "open source" programs.

Open source, by definition, is "a development model promotes universal access via free license to a product's design or blueprint, and universal redistribution of that design or blueprint, including subsequent improvements to it by anyone." It's basically a computer program that has its source code available to the general public that is useable and modifiable.

examples of open/closed source
It's good to have these open source programs because, of course, it's free, and also because many other programmers can modify the code and send it to the creator, which drastically improves the program. It is the same as volunteering to do good in some way to benefit the community.

You don't have to be a programmer to be able to use these open source programs. The more people that use these programs, the better because it allows the developers to know that people actually use the program, other programmers will try to improve it, and it allows others with money issues to do their work.

Open source programs sound too good to be true. Don't worry. It's true.

Wednesday, October 2, 2013

Agile: A Different Way to Manage Teams and Projects

leader and team membersIn some time in our lives, whether at school or at work, we have had to work with more than one person. In general groups like these, there are usually different types of people: the bossy one, the obedient one, and the lazy one. Having a group in the first place is a good place to start, but what everyone does is usually hard to figure out. Without a good plan and leadership, then the bossy one might get too bossy, the obedient one wouldn't know what exactly to do, and the lazy one wouldn't actually do some work. There are methods that are great for managing teams and projects. The broad
term for the many different methods available is agile.

You might have heard of different agile methods such as Unified Process, Scrum, and Dynamic Systems Development Method. Back in the day, people got tired of the failing traditional method of managing development projects, so some of those people got together and came up with four important values, known as the agile manifesto:

manifesto definition1) Individuals and interactions over processes and tools
2) Working software over comprehensive documentation
3) Customer collaboration over contract negotiation
4) Responding to change over following a plan

As they said, in short, "While there is value on the right side, we just value the left side more."

Some of the common key principles of agile include teams have the power to make decisions, requirements change but the time is fixed, and collaboration between the manufacturer and team members is important.

The business world changes as well as the technology. Agile methods tell us to make use of what is available to us, use your time wisely, and start adjusting to the modern world, not the stone age.