Monday, May 5, 2014

Must....Reach...uTOOLity Belt....

Every handyman needs his tools. And as a computer scientist, consider me to be a software handyman. So how are tools useful to me as a computer scientist? Well besides helping me program and communicate with other developers. Here are some of the tools I've picked up this semester, and what I've used them for:

Programming
  • BlueJ - Very straightforward editor for Java programs. It doesn't have as much functionality as IDEs I've used for other languages, so I will be looking for another IDE soon.
  • Notepad++ - Surprisingly enough, I use this for my C programming. It even has a language option that does syntax highlighting based on the specified language.
  • Cygwin - Program that allows you to compile and run your C code.
 Documentation
  • Microsoft Office - For all your documentation needs, whether that be Word for word processing, or PowerPoint for presentations
  • Adobe Photoshop - Used primarily for designing posters for presentations
  • InDesign - Used to make QR Codes
  • EasyBacklog - Good for Agile development process, can use this website to create user stories and product/sprint backlogs.
Sharing & Communication
  • Google Drive - Can create and store documents online. Google Drive also supports shared editing, so many users can work on a document at the same time. This is my "goto" for all document editing from now on.
  • Dropbox - Provides cloud storage of files. You can use Dropbox to share files across people and/or computers. I personally use this application to synchronize my important files across all my devices.
One way tools are changing is that they are becoming more web-based. With the improvements in internet speeds over the last decade, there has been an increased emphasis on cloud technology. Using web-based tools removes the need to have to download a tool in order to use it, removes having to install updates for that same tool, and allows for instant data sharing across devices and users that utilize that data.

Sources:
. (n.d.). . Retrieved May 6, 2014, from http://us.123rf.com/400wm/400/400/violin/violin1103/violin110300083/9061049-computer-keyboard-with-tools-key--technology-background.jpg

Unity, I choose you!

Unity is a video game development engine that is quite popular among young and indie developers. Unity supports both 2D and 3D game development, and has already been proven to work for games in industry. Although Unity can only be used for Windows and Max OS X, it can create games for every platform, including those pertaining to major consoles, cell phones, computer operating systems, and web browsers.

Like the majority of game engines, Unity uses object-oriented design, where their objects are referred to as "assets", and can each have underlying scripts to control their behavior, either written in C# or Javascript. The engine already contains predefined objects that are common in every game, such as camera, light, and sound objects that would have the expected data fields and methods.

Unity's user interface with it's various functions. Here the programmer can see the current scene they are working with as well as manipulate the assets in that scene.
The other point of mention is the strong community that Unity has behind it. The forums are packed with active users old and new, working together to help each other. Video tutorials are readily available throughout the web. There is also an asset store where programmers can go to purchase user generated content that can be imported and used in Unity. This makes for a self sufficient community!

If you are looking into getting into game development, and know some programming basics, definitely look into Unity for all of your needs!

Beta Testing and Why it Never Ends


So what is beta testing? Why is that term popping up everywhere?

Beta testing pertains to a testing period when software is near it's final version. It's intended to catch minor issues or bugs that have gone unnoticed. Beta testing typically involves a small group of would-be customers that test at their locations. What this provides a testing experience that can't be as easily replicated by it's developers. A few examples include:
  • being able to compare user experiences for users using a variety of platforms, as opposed to the one platform of the developer and the virtual environments used to simulate other platforms
  • comparing the performance of two users connecting across the country as opposed to two users who share an office
  • volume testing, seeing if the servers can handle large scale activity
Beta testing has become a popular buzz word in this generation and the reason for that is simple: everyone is participating in it at some level. Technology today is constantly connected to the internet, making software updates quick, easy, and in many cases too subtle to even notice. Released software is never really in a finalized version, only a stable one. And with user feedback being made so easily available, end users are testing your product for you every time they use it.

Whether it's an app on your phone, a new PC game that was recently released, or your favorite web browser, by the end of the month there will be a released update to download and install, likely based on collected user feedback. You might as well find a shirt like the one below in your size, because like it or not, you are part of the beta testing collective.

;
Sources:
. (n.d.). . Retrieved May 5, 2014, from http://www.jkkennedytv.com/wp-content/uploads/the-momsalon-beta-test.png

. (n.d.). . Retrieved May 5, 2014, from http://shelbot.com/wp-content/uploads/2012/01/available-beta-testing.jpg

User acceptance testing. (2014, March 5). Wikipedia. Retrieved May 5, 2014, from http://en.wikipedia.org/wiki/User_acceptance_testing


Tuesday, April 15, 2014

Usability Testing and You

Usability testing is a popular method of testing that is used commonly throughout the software industry. It's obvious that functionality is the highest priority when it comes to software development, but I've always felt that usability is a close second, especially in this current technological market. A consumer nowadays has plenty of options when it comes to new hardware/software, which always meets the functional requirements, so at the end of the day, their purchase will be based on usability. Usability testing is very informal and it's loose structure allows for a small audience to freely discover what it is about your software that they love...and hate.

Usability testing is definitely something you should consider if you are programming, but there are a few different kinds of test methods. If you have the time and the resources, you should consider doing them all:

Hallway Testing
Hallway Testing is what it sounds like, you go into the hallway, grab the nearest person that's not a part of your project team, and get them to test your software. If allows you to get some fresh eyes on a project. Sometimes a usability issue can remain in software for years, and not get addressed because end users get so used to it, they don't even notice the problem anymore. Hallway testers help solve that problem.

Remote Testing
This type of testing, in which you invite end users from around the world to test your software from their own computers. You can collect a lot of data about actions this way (clicks, response times, performance against system specifications), but you won't be able to get the more subtler data, such as a user's facial expressions or physical reactions while using your software, which can tell you a lot about usability.

Expert Testing
Who knows better than the experts on how your software will feel to the target audience? Experts come in with a lot of knowledge about workflows, so they don't need any introduction or explanation on how your software is supposed to work. The problem with experts is they also come in with a pre-configured bias, which can result in unhelpful feedback. If you are trying something new or groundbreaking, like a major UI overhaul, you may want to take the conservative mindset of the expert reviewer with a grain of salt.

To learn more about usability testing in general, or to learn more about testing considerations, check out this insightful article.

Sources:
http://www.webdesignerdepot.com/2013/06/how-to-approach-usability-testing/
http://miagido.org/blog/wp-content/uploads/2013/05/TESTING-75.jpg

Wednesday, March 26, 2014

Tech Blogs!

Blogs are an incredibly useful tool for getting access to information in this generation. That is because they serve as a hub for updates regarding any topic. This is even more true for tech blogs, considering how rapidly technology changes. One such blog I'd like to point out is gigaom.com, a pretty reliable webpage for all news technical. 
 
An important thing for technical blogs to have is scope, and Gigaom has a broad one for technology. They cover both hardware and software, and how they relate to everyday uses, such as apps, computers phones. energy, costs, social networking, and even the industry itself. Another good aspect of this blog is its simplicity and straightfowardness. All the articles are written in a way that's easy to understand, even for those who don't have the expertise in that area. There also is a bit of wit in the blog posts as well, but not the amount that would make you feel like you're reading an OpEd.

Let me know in the comments how Gigaom compares to your favorite tech blog!

Source: gigaom.com

Tuesday, March 18, 2014

QR Codes, making pictures worth more than 1000 words.

QR codes are an increasingly interesting topic, mostly because the concept of them is so broad that they span our entire technological generation. A QR code is a machine-readable image, typically a square inch in size, whose pattern serves as a unique identifier for its purpose. Not only does the pattern identify the data type of the content (ex: website URL, YouTube video, telephone number, Skype contact) but it also identifies what the actual data is. What that means is websites like Wikipedia can have a QR code that links a user to any one of their web pages, based on the pattern of the QR code itself. It functions as a bar code for much of the technology that our lives already integrate with on a daily basis.

New app store app download? Educational YouTube video? Old love letter from an ex? The possibilities are seemingly endless with QR codes. Taken from: http://www.askingsmarterquestions.com/ 


What QR codes have most to offer is applicability and ease of use. Airports in the U.S. are equipped to scan QR codes that contain a passengers unique boarding pass information, and can scan them from a user's mobile device and making the process completely paperless. A QR code can contain a Google Maps location, allowing you scan it and have it populate your GPS, without having to manually enter that information. A networking programmer can have a QR code readily available, so that when it's scanned can jump an employer right to their shared Dropbox account, allowing full access to their portfolio. QR codes can be used very creatively and already being implemented worldwide.

For a reliable website that can help you generate your own QR code, go to http://www.qrstuff.com/.

Source:
http://en.wikipedia.org/wiki/QR_code


Monday, March 10, 2014

SHA-3, a sequel in the story of hash algorithms

This week I want to talk about Secure Hash Algorithm 3 (SHA-3), previously known as Keccak, as a hash function chosen as the successor to SHA-2. Cryptographic has functions are most commonly used for digital signing and authentication, more specifically, password management. The idea behind these functions is that they work like a "super" data scrambler, a good hash of a user's password can be easily generated, but it's infeasible to reverse engineer. For example, websites with login accounts will store the hashed version of a user's password as opposed to plain text. When that user would log into the system, they would compare the hashes of the already stored and just entered passwords to authenticate that user, instead of comparing the passwords themselves.

Example of how a small change in text can result in a completely different hash. Taken from: http://en.wikipedia.org/wiki/Cryptographic_hash_function

SHA-2 is currently the most commonly used hashing algorithm, but concerns about it's feasibility were raised in 2007. There was a competition held to find the next gen algorithm, and in 2012 it was the Keccak algorithm that won. The most interesting aspect of the SHA-3 solution is that it works in a completely different way then SHA-2, so even if SHA-2 was "cracked", it wouldn't get anyone any closer to cracking SHA-3. Since SHA-2 is still reliable, it's unlikely that systems already using it will jump to implement
SHA-3, but that's actually a good thing. Since there are two reliable hash functions now, malicious users trying to brute force their way into user accounts are first going have to figure out what hashing algorithm is being used.

NIST Tech Beat. (October 2, 2012). NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition. Retrieved March 10, 2014, from http://www.nist.gov/itl/csd/sha-100212.cfm.