Friday, November 1, 2013

Data Structures

Can you imagine what would happen to our bedroom if we do not have closest or storage? Our cloths would be all over our bedroom. Speaking from an experience, finding important things in an unorganized room will be a great challenge, and one would be spending their valuable time on something useless. Similar logic applies to programming. Data structures in programming work as a closet or storage to store and retrieve data efficiently.

Why should you care about Data Structures?

Now, you might be wondering “why should you care about data structures?” Answer to this question might be different depending on your interests. If you are not planning to learn programming, then you may never have to learn various data structures. However, if you want to be an excellent programmer or pursue a career in Computer Science (because you are awesome!), then you must have to learn different data structures.
Examples of different data structures
Importance of Data Structures
Data structures’ most important features are efficiently storing, searching, retrieving and traversing the data. Attributes of data structures make them very useful and an essential tool in programming. According to one my Computer Science professor, “data structures serves as a heart of every application.” For instance, if you are building GUI applications and following MVC patterns, then you need to figure out which data structure will you use for your model. In addition, almost all algorithms rely on the correct choice of data structures to get the best running time. For instance, if you run some specific algorithm and change the underlying data structure of the algorithm, then you may find that algorithms running time drastically increases. Lastly, use of data structures in programming make codes very readable. 

Two kinds of Data Structures
How to learn Data Structures?

Since data structures are very essential tools for programming, most of the well-known companies tend to ask interview questions based on data structures. Often interviewee tends to stumble upon those questions, and loses their dream jobs. So, what is the best practice to learn data structures? According to Robert Love, Software Engineer and interviewer at Google, one should visualize the data structures. He recommends “Intuitively understand what the data structure looks like, what it feels like to use it, and how it is structured both in the abstract and physically in your computer’s memory.” Another important thing to focus on while studying data structures is to understand when to use that particular data structure. The reason behind that is every data structures is designed to achieve certain things efficiently, but that same data structure would be very inefficient at achieving other tasks. For instance, arrays, the most basic data structure, are good for retrieving data at given location (it takes O(1)), but arrays running time drastically increases for removing data from the middle of the array.

I hope you enjoyed my post about data structures and learned something new from this post. I am looking forward to hear your suggestions in comments.

References:




http://s.radar.oreilly.com/wp-files/5/2013/03/redis-data-structures.png



Thursday, October 24, 2013

Hacking: Prevention or a Theft?

Do you lock your home before going to sleep? Do you lock your car when you are going for shopping? I am sure your answer to both questions is yes. But, why do we protect our property? Well, the answer to that is very simple and obvious. We do not want anyone to steal our property nor do we want strangers to use our property. Now, let us consider our digital property. Do you use online banking? Do you check your emails regularly? Do you use social networking websites? In the 21st century, I assume the answers to these questions are yes. Now, what if I tell you that someone can steal all of your personal information from your digital world? Yes, you heard it right. If you are not protecting your digital property, some hackers can steal your digital information. So, in this blog post I would like to talk about what is hacking and how hacking is related to us. 


What is hacking?

Hacking has many different interpretations. Many professionals use “hacking” to mean clever programming. For instance, one my professor uses “hacking” to simply mean computer programming. However, there is another interpretation of hacking that is often used by our media and our society. According to that interpretation, hacking is an act of breaking or stealing. In this context, hacking means “gain unauthorized access to computer data: to use a computer or other technological device or system in order to gain unauthorized access to data held by another person or organization” (1).  


Relationship between users and hackers

Now, you might be wondering what hacking has to do with you. Let me explain that by giving you a realistic example. Imagine that you are browsing on the internet. You might be checking emails, and you happen to get an email with an attached file. If the attached file is corrupted (meaning it contains Trojan horse), then malicious users can get access to your personal data. Perhaps, malicious users can control your device and possibly ruin your device by deleting important files. This is just a one simple scenario, hacking is usually more harmful than the situation mentioned above. Hackers can have power of controlling our our credit cards, to controlling our car breaks. In other words, anything that uses software can be hacked and controlled by malicious users. Read further to know more about what hackers can possibly do. 

Who are hackers?

There are various kinds of hackers in our society. Some of them hack for good causes whereas others hack for unethical reasons. First, I will like to talk about unethical hackers. Unethical hackers are those who hack to steal or gain access to unauthorized software or networks. Their main purpose of hacking is to gain benefits for themselves. On the other hand, there are other kinds of hackers who hack for good causes. For example, big corporations and governments hire hackers for security reasons. Corporations would like to check their cyber security, and ask hackers to break into their system or find a loophole into the software. Lastly, there are hackers who hack for fun or to challenge their skills. Hackers of this type take hacking as a challenge.

I hope you enjoyed my blog post about hacking, and learned something new. I will be looking forward to your replies in the comments.

References:








Saturday, October 12, 2013

Open Source

Most of you may already know about open source software. Your understanding about open source software might be limited to the fact that open source software is “free software”. However, there are lot more interesting things about open source software that makes them unique. What makes open source software unique is the fact that they come with source codes. I know what most of you might be thinking, you might be thinking that “I am not a programmer, so how source codes are benefiting me or my business?” Well, let me explain how open source codes will help everyone. Since source codes of open source software are available to the general public for use or modification, if some developer finds a bug in the current version of the software and he or she decides to fix that bug and redistributes the software, everyone will get a fixed version of software. This innovative ideology of open source software makes them very convenient and successful. 


Why choose Open Source Software over Commercial Software?

As a user, you might be wondering which software (Open source software or commercial software) would be better to use for either your personal use or business use. Let us investigate which development methodology is better. 

Security: When it comes to installing or using software, we have to consider security of the software. Security of the open source software is better than commercial software because in open source software development, source codes are available to the general public, and as soon as someone finds a bug, they will either fix the bug or notify developers to fix bugs. On the other hand, commercial software has closed or hidden source codes, so when someone finds a bug, they have no access to the source code to fix the problem. (Well, what you have to do in that case? Wait for their new bug free updates!) The developer team of the commercial software is limited whereas open source software has a wide range of developers. 



Customizing Software: Open source software gives us a freedom of customizing software based on our taste. So, if you would like to add something to the current software, or if you would like to change something about the software, you have freedom of achieving that task. (I am assuming you know some programming in this case.) On the other hand, commercial software does not give us freedom of customizing software. In commercial software, we have to use what they gave us in that package. What is the solution if you would like to change something about the commercial software? According to commercial software approach, we have to buy new software or some other software to achieve that task. 

Cost: No matter who you are, you would like to save money and get better product. One of the primary advantages of open source software is the cost. Most of the open source software comes at little or no cost. Yes, you heard it right, they come for free! Now, let's consider commercial software. Commercial software is expensive and you have to keep on updating them once their license expires. 

I hope you enjoyed my blog post and learned something new about open source software. I will be looking forward to your replies in comments.


Reference: 

http://blog.hathix.com/wp-content/uploads/2013/09/may-the-source-be-with-you_Open-source.jpg

http://opensource.com/resources/what-open-source

http://milindpadalkar.files.wordpress.com/2011/05/open_source_part_ii.jpg

Friday, October 4, 2013

Agile Methodology: a successful way to develop software


Have you ever had an experience of ordering something and waiting for a long to find out the deliverable is completely opposite of what you expected? Well, this is a very common problem in most of the businesses. The traditional software development procedure is very similar to the scenario mentioned above. In a traditional software development, interaction between clients and developers are very minimal such that both of them do not interact with each other until the final product is ready. Now, can you imagine what this would be like? Yes, you guessed correctly, it would be a complete chaos if developers did not meet a client’s request properly. So, you might be wondering what we can do to improve this methodology. The answer is very simple, use new and effective methodology called Agile. 
Comparison of traditional development vs. agile development

What is Agile?
Agile is a plan driven software development methodology where active participation of client is very essential. Agile approach makes software development iterative by breaking huge project into small phases. During each phase, certain requirements are planned, implemented, and tested. After each phase, a development team delivers something to their clients. This approach really helps both software developers and clients.  Developers benefit from agile methodology because the work is divided into separate phases and that helps developers focus on smaller aspects of the project instead of tackling whole project at once. Agile approach benefits clients as well because at the end of each phase they get deliverable which gives client a clear understanding about the development. After the deliverable, clients can ask developers to make some changes to their development. 


Benefits of using agile methodology
·         Customers are happy with the final product because they are constantly involved during the development process.
·          Development time decreases because dividing work in each phase keeps the development process on time.
·         Easy to make changes in current development.
·         Improves clients’ business because agile methodology allows clients to pick and choose what they want in their software.
·         Improves software quality. 

Since agile methodology seems to work very effectively, many software companies are now using agile methodology to develop their software. An interesting thing about agile methodology is that agile is easy to learn. One can understand agile in less than nine minutes by watching this video

I hope you enjoyed reading about agile methodologies, and hope you use this approach when you develop software for your clients. I will be looking forward to your replies and views on agile methodologies.

References:



Friday, September 20, 2013

LinkedIn and Branding: An Effective way of Branding Yourself


Today, we all try to sell our skills to get the job that we all dream about every day. Okay, may be not every day, but the point is we tend to look for opportunities to expand our career to get that dream job. Before we discuss effective ways of branding our skills, let us consider what exactly are we selling? If you are in the Computer Science field, you are not only selling your programming skills, or software development skills, but you are also selling countless hours you have spent on successfully honing those skills. We have developed our skills over a period of time, and as we head out in the “real world”, we have to effectively sell our skills to tell the employers who we actually are, and to achieve what we really deserve.



How to Brand Yourself?

Now that we understand the importance of our skills and what we are selling, let us look at some of the effective ways to brand ourselves. When it comes to branding ourselves, networking is the most essential tool. It is important to maintain our network because there are great amounts of chances that you will get your dream job via networking. In most of the cases, how it works is if some member from your network has a job opening, you will be the first one to be informed, or you will be recommended by that member (And that recommendation usually does the magic!). So, how do you get yourself into a network? There are many possible networking sites that enable you to join the network. Personally, I like LinkedIn because it is the most “professional networking” site available.


What is LinkedIn?

LinkedIn is a professional networking site that has nearly 238 million users, and 3million business pages (1). Ever since LinkedIn’s launch in 2003, LinkedIn is helping their users to network professionally with others. LinkedIn allows its users to find their classmates, colleagues, alumni, and clients who are connected with each other professionally. LinkedIn also has very similar feature as Facebook of liking posts, joining groups, and sharing interesting posts.


LinkedIn for Networking

LinkedIn allows you to “connect” with your friends, colleagues, and clients who share similar skills or know you professionally. What is interesting about LinkedIn is their “Second-degree connections” and “Third-degree connection”. These two features are one of the most important things about LinkedIn networking. Additional connections work as if you have a friend in your “connection”, then you can have an access to their connections (known as “second-degree” connection), and you also have an access to connection of “second-degree’s” connection (known as “third-degree” connection). For example, if you have around “800 direct connections (then it) will give you an overall network up to approximately 10 million individuals” (2). This means that connecting to just 800 individuals will give an access to countless individuals; thus giving you a great opportunity to enhance your career. Another important feature of LinkedIn includes "following" specific companies that users like. For example, if I like Google, I can follow Google, and I will be able to see every updates they make on their official page. Following companies you like is important because they might update “job openings” via their LinkedIn page. Third important tool to consider when expanding your network via LinkedIn is joining groups. For instance, I am associated with Computer Science group of San Jose State University, where group members’ posts about upcoming events that are related to Computer Science, or job opportunities. Lastly, LinkedIn will automatically posts some interesting job opportunities on your home page based on your interests, skills, and other information that you have provided on your profile.



Overall, LinkedIn is an effective way of networking with millions of members. LinkedIn is an endless network which enables you to expand your professional career. I hope you enjoyed reading about LinkedIn and branding. I will be looking forward to your replies, and suggestions to improve my blog posts. Thank you for your time!


Reference:



Thursday, September 12, 2013

QR Codes: Importance and Security of QR Codes
This QR code is for my Blog
Have you ever seen a box-looking barcode and wonder what it is? They are QR codes, or Quick Response codes. QR codes were developed by a Japanese company to keep track of their inventories. Today, QR codes are becoming very popular in the United States, Europe, and many other countries. QR codes can be found everywhere around us. Newspapers, magazines, fliers, business cards, and T-shirts (Yes! On T-shirts) often contain QR codes. But, what are we supposed to do with these QR codes? We are supposed to scan them with our smart phones, or tablets to gain more information about the product, receive instant coupons, know more about upcoming events, or get contact information of someone. So, how do we get a QR code scanner? Anyone can simply download free apps available on the App store or Google Play to scan QR codes. (Yes, it’s that simple!)

Why QR codes over 1-D barcodes?



It is important to differentiate between QR codes and 1-D barcodes to understand the importance and advantages of QR codes. First, QR codes can be scanned from a 360° angle, whereas 1-D barcodes can only be scanned from horizontal sides. Second important difference is the amount of data each barcode can hold. As Sankara Narayanan, an information security researcher, points out in his article, “Bar codes are linear one-dimensional codes and can only hold up to 20 numerical digits, whereas QR codes are two-dimensional (2D) matrix barcodes that can hold 7,089 numeric characters and 4, 296 alphanumeric characters, and 1, 817 kanji characters of information.” The ability of QR codes to hold more data is what makes them very useful, and with this advantage business owners can put more information about their products, or include URL of their websites to inform consumers about the current sales. Lastly, QR codes take less space compare to 1-D barcodes. So, QR codes can be helpful in saving printing costs for small businesses and large corporations.

QR codes for promoting Company’s Brand


QR codes can be very useful for business owners to promote their brands. Since they are very easy to generate, business owners should generate a code for their business use. For businesses, QR codes can provide contact information, current sales information, give customers Wi-Fi access (great for cafe, and restaurants), options of getting instant coupons, and provide more information about products. Businesses should consider using QR codes because a recent study shows there are more customers who are keen to use QR codes and shop through QR codes because it saves them a hassle of waiting in long lines. The numbers of users who are shopping through QR codes are steadily increasing and it would be very smart tactics for business owners to advertise their brand via QR codes.


 Security of QR codes  
                  
Although QR codes have significant advantages, we should always consider security of QR codes. It is essential for users to understand security of QR codes because often QR codes are connected with shortened URL. It is very hard to decide whether shortened URL will take one to safe site, or unsecure site. If the site is not legitimate, then it can download malware in to your device, or the URL will lead you to the website which is controlled by hackers. In these cases, users might lose their personal information stored on their smart phones, such as bank account information, personal photos, and much more. More information on QR code security is discussed in this article. A solution to this problem can be solved by choosing a correct QR code scanner app. Some of the free available QR code scanner apps let you preview the webpage that the QR code will take you on. This is very useful because it enables users to reject the request if they find out that QR code they are using is broken.


I will be looking forward to hear back from you. Please leave your comments below to give me feedback, and inform me about my blog post. 

Friday, September 6, 2013

Social Networking and Security or Lack of When Promoting Your Brand

In the 21st century, social networking sites have become very popular. They also became very important part of our daily lives. We utilize many social networking sites to stay connected, convey our regards, wish each other for their birthdays, and to associate ourselves with certain groups. But, why social networking sites are very important tool for businesses? Many companies see this new innovation as a great way to expand their businesses. For instance, companies like Microsoft, Cisco, Star Bucks, Target, and many others use their Facebook pages to inform their audience about their new innovations, current sales, and offer discounts. These companies use social networking sites as a tool to get immediate feedback from their customers, and improve their products based on their customers’ feedback. Social networking sites have helped many businesses to expand their businesses via connecting to their customers directly. 
This image of Windows's Facebook Page illustrates their current sales, and links to directly shop from their Facebook page.  Source
Things to consider when promoting a company's Brand  Source

Important things to consider when promoting a company’s Brand: 
Since social networking is important for expanding businesses, there are few vital things to take into consideration when promoting brands on social networking sites. First, business owners should target specific audience. They should choose their audience based on age groups, demographics and locations. For example, if someone is selling video games, their best audience would be kids and adults, but not senior citizens. To get better understanding of the importance of audience profile, this will be a very useful source. Second, it is important for business owners to know what consumers are talking about their brand because their vital feedback can help in improving products. Consumers’ feedback determines fate of product because consumers are more likely to market products to their friends and relatives by spreading the words. So, it is essential to figure out what consumers are talking about owners brand on the web. This source will enable individual to find out what consumers are talking about them. Another important thing to consider is to active participation of consumers in conversations. Simply actively updating the company’s Facebook page and encouraging consumers to comment on recent statuses can achieve this task.  
Security of Social Networking sites: 
It is crucial to manage security of owner’s social networking sites because some hackers would be able to hack into owner’s account and get access to all-important documents, users’ data, and private information of business. This would damage owner’s reputation, it would break consumer’s trust in owner’s business, and owners and users both will have to jeopardize their personal information. Since many companies are using direct buy options from their Facebook page, many consumers will have to risk their bank account information in case if someone is able to get access to the owner’s social networking sites. But what can business owners do to protect themselves from web threats? There are many careful steps that business owners’ can take to save themselves from becoming victim of hackers. First, owners should strengthen their administrative account. One simple way of doing this is by assigning at least two administrators (admin) for a business page. Additionally, admins should regularly review admins’ activity, and delete things that seem to be threat. For instance, some users might put their advertisements which have a risk of containing malware. They should use one-time password feature to receive temporary password every time to strengthen their business account. More information on one-time password can be found here. Another important feature to utilize on social networking sites is, deleting unnecessary comments. In Facebook, owner has an option of keeping posted comments on their page or deleting them, if comments seem to damage the owners’ reputation. This feature is important to use because there will be certain occasions where someone will try to spam business page or write inappropriate comments.