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