Sunday, October 27, 2013

Hacking: The Right Word for SJSU CS?


Any CS major at SJSU will be spending time in MacQuarrie Hall.  A sign caught my eye the first time I set foot on the second floor: “Silicon Valley’s Hacker-Hatchery.”  “Wait, Hacker? Isn’t that a bad thing?”

What the word “hacker” meant to me was pretty close to webster’s definition: “a person who illegally gains access to and sometimes tampers with information in a computer system.”  This is the definition Hollywood prefers.

It turns out the word is much more complicated than that.  There are various classifications of “hackers.”  The stereotypical, criminal, basement-dwelling, hacker who is stealing your credit card informations is a “black hat” hacker.  But there are also “white hat” hackers.  These are people who breach security for good reasons, mainly to try breach before a black hat hacker does, so the vulnerability can be fixed.

The sign at MQH is referring to the word as the programming community (and especially GNU developers) see it: “The use of “hacker” to mean “security breaker” is a confusion on the part of the mass media. We hackers refuse to recognize that meaning, and continue using the word to mean someone who loves to program, someone who enjoys playful cleverness, or the combination of the two.” (About the GNU Project, Richard Stallman)


In the end, I think “hacker” is a great term for what we’re all striving to become in the SJSU CS program.  Unfortunately, it’s easy to be misinformed on the meaning of it, and likely that many people are put off by it because of what they’ve learned from mass media.  Maybe eventually “cracker” will catch on in the mainstream, so that “hacker”’s negative connotation can be completely abolished.



Fun side note: check out this site http://hackertyper.com/ (try spamming capslock and alt)

Sunday, October 13, 2013

Open Source: Collective Effort Leads to Quality

I was fourteen.  I gave in.  I finally downloaded the first episode of that ridiculously popular anime show (Naruto).  Excited to see what all the hype my friends were giving it was about, I double clicked the file.  “QuickTime cannot open files of the type ‘.mov’”.  *Sigh* google-ti
me: “.mov with QuickTime.”  I fiddled with plugins for a while, sifting through over-priced legit ones, and sketchy free ones.  Eventually, I was able to watch the show that I would end up spending an amount of time on that I don’t like to admit.

A year later, a forum recommended VLC media player.  This was my first experience with open source software.  It had me thinking, “How could this possibly be free?”  Everything just worked.  To this day it is some of my favorite software I’ve ever used.

Once someone explained to me what open source was, it all made sense.  Katherine Noyes puts it simply in her article, 10 Reasons Open Source Is Good for Business.  She says, “Which is more likely to be better: a software package created by a handful of developers, or a software package created by thousands of developers?”  With open source, many of the developers are also the users.  They have incentive to make the software great, and not just for profit.


Open source is the way of the future in terms of quality and cost.  It’s a true example of “The Wisdom of the Crowds.”  I can’t wait to contribute to open source projects as I progress as a programmer.

Sunday, October 6, 2013

AGILE: Keeping a Team Productive

“Agile” software development is a group of methodologies that are meant to keep a project running smoothly.  These methodologies include “test driven development”, “extreme programming”, and the “scrum.”

Surveys (such as this one from Shine Technologies) have shown that agile works in “increasing productivity, quality, and business satisfaction,” while lowering cost.  In fact, nearly half of respondents stated that costs were reduced or significantly reduced by agile processes.  A whopping 93% stated that productivity was better or significantly better.

The same survey showed that by far the most used of the Agile processes is “extreme programming”.  Surely, this technique is one of the most important of Agile’s methods.

Extreme programming is a style of development that encourages frequent releases, with a short development cycle for each one (as described by this article).  This means that instead of the entire project being done with all of its feature some time in the (not-so-near) future, the team can release working versions of the most important features right away.  Then they can build upon what they have each cycle (adding features, improving functionality, etc), until the customer is completely satisfied.  The article says, “Extreme Programming emphasizes teamwork. Managers, customers, and developers are all equal partners in a collaborative team. Extreme Programming implements a simple, yet effective environment enabling teams to become highly productive.”


My experience with agile so far has been a positive one, and I’m excited to learn about the other methodologies throughout my programming career.