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.

Friday, September 20, 2013

LinkedIn and Branding: A practical Social Media site for branding yourself!



Social media, websites used by large groups to share information, greatly influence modern society by providing people with a means of connecting over similar topics.  While many social media websites are commonly portrayed as a purely social experience LinkedIn, a website meant to network people between businesses and peers is widely considered a legitimate tool for the business world. LinkedIn accounts act as an online resume allowing users to network with potential employers and promote themselves essentially broadcasting their own brand.  An added bones to LinkedIn is the ability to brand oneself in a professional manner by being able to post skills, education, prior jobs and achievements all easily viewable in an universal format.  This allows companies to quickly query information on applicants, also allowing companies to search for users who might not have even applied.  
In order to properly use LinkedIn one must brand themselves properly, even when one least expects it they may be getting researched by companies.  The ability for a company to research potential employees incognito is a powerful tool that can harm one if they do not properly brand who they are.  However it can also be a great tool for both users trying to be hired as well as companies looking for a particular skill.
LinkedIn shows the power that social media can provide a specific function such as networking.  With the proper branding of oneself LinkedIn can open many doors through the networks gained through peers, followed and even anonymous companies.  Unlike many of LinkedIn’s predecessors in the world of social media, LinkedIn prevails in one aspect, it is highly professional and practical.

Friday, September 13, 2013

QR codes: Connecting the Universe one phone at a time.



Since the creation of bar codes, technology has grown with the idea of storing data in a small easily accessed picture, or bar. Due to the bar codes ability to store numbers which could represent product information, they quickly became a standard for businesses to easily maintain their products.  Bar codes while great, have limitations due to the ability to only hold 20 digits worth of data. The idea behind bar codes stemmed a new idea first implemented in Japan to create a code which could hold more data.  The result, QR codes which have the ability to “hold thousands of alphanumeric characters of information” redefining the use of barcode technology and making navigation of the web trivial.

The ease of creating and deploying QR codes, along with the availability of QR readers has made them an ideal method for connecting people across the internet.  From instantly liking someone’s Facebook to searching for someone’s blog, QR codes make navigating technology effortless and quick.  QR codes are also great for branding a business which is why in my previous blog I have a whole section on QR codes in regards to how they can effectively connect a business with a product to a consumer instantly.  The ability to pull out a phone and scan a poster and directly connect to a website cuts out all the cumbersome processes such as typing a URL in a phone or worse writing it down on paper for later.  At their best QR codes take all the effort and guesswork out of connecting users on the internet, leaving more time to enjoy the internet while being no more than a quick scan away from connecting to the rest of the world.

Friday, September 6, 2013

Social Networking Security or Lack of When Promoting Your Brand

The influence social networking has in today's world is so significant that companies all over the world are looking for effective ways to utilize its potential. The best way for a company to maximize the return of social networking websites such as Facebook is to make sure they get their brand to the potential customers in order to promote their products.  Tools such as QR's which are "two-dimensional bar codes that contain any alphanumeric text and often feature URLs that direct users to sites"("7 things you should know about.... QR Codes" educause.edu)  make it significantly easier for businesses to quickly link potential clients with their product with the simple click of a phone camera.  New features on social media websites (such as Facebook) have made it easier than ever for companies to not only advertise their brand but get results in real time. Websites such as http://www.google.com/alerts supply live data for companies to track trends, which in turn allows them to properly research and develop new ways to accurately gauge their product's appeal.  It is truly amazing the amount of data returned and the turnaround time available now, and it is crucial for companies to fully learn and integrate these tools into their business.




While it is clear that the use of social media is a great tool that continues to grow and provide support for businesses, there are some risks involved.  Any company that immerses itself into this high tech world has to be prepared to take security precautions to protect its own reputation. The growth in the integration of social media and corporations requires that " IT professionals to consider employees and customers as part of the broad security team." ( Patrick Budmar http://goo.gl/1oRDZv).  Companies must be aware of their image on media sites as well as the sensitive information being shared by their employees on their own social websites.  The dangers of an employee damaging a company's reputation with a negative comment, or worse, revealing proprietary company data, is a grave concern.  Thus new strategies to ensure security must be adopted by a company to truly make use of the great cloud in the sky which is social media.

Friday, August 30, 2013

Hello World and Welcome


Hello World !

Welcome to my blog CS100W Fall 2013.  I hope that this blog will be a success and that my posts will be informative as well as interesting at the same time.  While I am not much of a writer I am a programmer who does enjoy bragging about new things I have learned all the time both correctly and probably incorrectly.  While a majority of my programming expertise comes from my own research much of it comes from others arguing with my peers and colleagues over better ways to implement, design and maintain code. That said I would like to think of this blog as a giant program which I will be maintaining with help of others commenting my new blogs in order to properly function.

Having started to program during the Summer of 2011 I have had a lot to learn in a short period of time. Through hard work in school and countless hours of research in my spare time I have become an efficient programmer. My expertise exists only in my ability to adapt to programming challenges.  While I am not super proficient in any certain language I have a good solid understanding of programming practices allowing me to solve complex problems while writing code.  There really is not anything I don't find exciting about computer science. From innovative ideas such as abstracting complex concepts into simple objects, to the efficient complex implementations resulting in fast and useful programs computer science continues to amaze and will probably always amaze me as long as there are people adding to it.  With the knowledge I have gained from school as well as the experience from interning I believe
I am ready  and eagerly await new challenges in my programming career such as working with a group to fulfill the needs of a client while at the same time making me a better programmer.