Thursday, April 21, 2016

Final Answer

Hi All,
This was officially the last week of my internship, and it was an amazing journey. And I landed a job with a software company too, which could be really useful down the road and separate me from other peers with no job experience.
I'd also like to give a final answer to my research question as my last blog.
I concluded that just from a beginner perspective, both Java and Python had so many more resources, in turn making it much easier to not only learn, but understand the underlying concepts as well. With C#, even though I have been using it for three months now, I can not still confidently say "I am adept at writing C#". Java could have easily fixed some of the major problems I dealt with with C#/selenium testing. There were a lot of pros to using C# though, like the .NET framework compatible with C# easing some of my methods' code. But in the end, I think if I had used Java, I could have finished and successfully ran my tests much faster than I would have right now! Unfortnately, I had to use C# for the company though!
Lastly, here is a link to my final presentation, which I will be presenting in a few weeks!
https://docs.google.com/presentation/d/1XrZJZl6q29y1R75v4KI2jcBJ-6SGAbSq5pqIzWM-zLw/edit?usp=sharing

Saturday, April 9, 2016

Game Design

I started doing some research comparing c#, c++, Java, and Python. One huge, huge negative of C# is that it only works on a Windows application. All other languages work across any platform. This is probably the main that it is not as popular as the others, and also why there are far less resources online dedicated to teaching C# as opposed to c++ and the other ones.
One thing I have really noticed a I begin creating my game though, I can write the code for the game, following along with tutorials (and I could do it myself now at this point), but I still don't know what I am actually doing. When I try to find what the method or framework means, it redirects me to a different link, and that same process goes on till I give up. This week, I started learning Python just for fun, and one main difference I can tell is that I actually know the concepts behind what I am coding, and it makes it much easier to learn and grasp.
Follow along as I continue making my game!

Friday, April 1, 2016

Game Design

So I started my game (kind of). I figured that after learning the methods I needed to for automated testing using c#, and through all the random Youtube videos and forums online, I had a sufficient enough knowledge to create a basic game. Turned out I was wrong, I had no clue where to even start. So, this week (and weekend maybe), I will try to begin learning all the different methods and packages I need to create a basic game. My goal is to get one done by the end of the week (just a poker or blackjack game with user vs cpu). Then, I will have a couple more weeks to not only explore the pros and cons, but also move on to try to create a more advanced game with visual aspects incorporated such as a picture-card matching game.
I will give another update in just a few days on creating the poker/blackjack game, so stay with me on my exciting journey through the world of code!

Friday, March 25, 2016

Using C#

So my initial question for my senior research was whether I thought C# as a good language to write script for beginner game design, along with my internship. I have not started the game quite yet, but I can successfully say using Java would have made this a much easier process (at the internship). Unfortunately, I am unable to do that because the rest of their software is already in the C# language, and Loop Logic preferred uniformity. Note that in no way am I blaming the company, just pointing out a few flaws in the C# language.
Here is the man problem I have run into with C# that Java could have fixed:
when uploading a file to the browser (i.e attaching a word document to your email), C# has two ways of doing so, and only one way works all the time. Unfortunately, that one way requires the utilization of an external application, making the process much more arduous. On Java, there are two easy ways to do it that work all the time: a built in "SendKeys" method, and a package one can easily download specifically created to upload a document!
There have been a few other bugs along the way that have made me think that Java would be better as well.
I will start designing my game, so my next post will be about the pros and cons of C# in game design.

Friday, March 18, 2016

Same Old Thing

Hey guys,
So this week, I have just been doing more of the same thing: automated testing. Today, I'll talk about what I've been doing wrong.
He thought me an important lesson though. Whenever running any type of simulation test through any language or platform, always keep the test small. My one successful test, unfortunately, was around sixty lines of code; a test done properly should have no more than twenty for running simulations. What I did was create one large chunk of code that was able to run every single task he had asked me to check. What I should have done was many more classes, and each class would have a different, smaller task. For example, one method could be just creating a presentation (one of the user simulations I have to run), and the next method could edit it. That way, I can also add code to assure it does the correct action, and no small errors are occurring. This is where I made my second error. After every line of code that simulates a user action, the next line of code should be an assertion making sure that the "click" making sure what was supposed to happen actually happened.
So, those were my two main errors so far, but other than that, it has been smooth sailing!
Next week, I'll start making my game and talk about that. 

Monday, March 14, 2016

Space Camp

So for the last twelve days, I was lucky enough to be selected to a Space Camp through my Dad's work (Honeywell), and it was an absolutely amazing (you could say it was out of this world) experience-- so much that I have to talk about it a little before I talk about my senior research project again.
So to begin with, it was really cool meeting people from all around the world-- literally-- and learning to communicate and creating friendships with those who do not even speak English! They had activities through the day that actually helped build leadership skills, and we were put in teams to do various activities like building a heat shield. We were given mesh, some wire, and aluminum foil, and asked to build a shield simulating that of re-entry of a shuttle into the atmosphere--actually the hardest part of the process. Another cool challenge was rocket building-- we were given some plastic, hot glue, an engine, a parachute, and the rocket head (preassembled) and asked to build a rocket that goes as far as possible while also deploying the parachute. I found that having a center of mass a few inches below the center of pressure was the optimal design, and my team's rocket travelled 2500 feet, the furthest out of all the teams!
We were also given the opportunity to look at all kinds of amazing Navy and Air force planes, including the F22 Raptor! Furthermore, there were tons of simulations, and we got to do a simulation of flying a fighter jet that pilots actually use for their first stage of training! There was another one that simulating feeling 4x gravitational force of that felt on earth, that was definitely interesting!
At the end of the week, there were a few awards, and I was nominated for leader of my team among all 380 attendees!!
Coming back down to earth, and my internship this week, will be a little dull and disappointing, but be sure to check in in a few days for my next srp (senior research project) post!

Saturday, February 27, 2016

Job Offer!!

Hey guys! So like I said last week, this internship can be really useful for my future. Turns out,  they like what Ive been doing so far and I already got a job offer from him! It was really informal, and I am not really sure how much I would get paid,  but it is a great start in just a matter of three weeks!
So this week was largely an unsuccessful week, unfortunately.  One of they key components of their software is recordings and narrations, which use Adobe Flash Player. The problem with this is, the code I write has no way of detecting the buttons on the flash player like it would on a regular website like Google or Amazon. So, I tried a unique approach that I was hoping would work: there is a method which moves the mouse to a certain place on the screen (meant for hover drop down menus), and then I could make the code "click" the button from there. But unfortunately,  it was unable to detect an element there, so it returned an error message; but I will keep on probing for a solution. To put this in perspective, even my coworkers at Looplogic had no clue how to go about this, so this task could be consuming my time for a couple more weeks! On top of this, uploading the document using my code has also been very challenging, as launching Chrome through the code has a reported bug that has not been fixed.
Keep following next week to see how I solve these daunting tasks ahead!

Friday, February 19, 2016

Week 2

So after working at Loop Logic for a couple weeks now, I have realized it is much easier to sit down for 7-8 a day and just try to figure out the problems with each test. I found that when I come in the next day, I lose my train of thought.
So far, I have just been learning C# as I test, and through Youtube videos I have actually become pretty proficient in a matter of a couple weeks! By writing these tests across various websites (I have done some for Amazon and Google), I have been able to become adept in writing this code. My job is to simulate every possible user action, and then give them my scripts for future use and integration into their software. I was able to successfully finish my first one, but it started getting more complicated test by test. The problem I am encountering right now is that I have to simulate user actions on Adobe Flash Player. Selenium Webdriver, the software I write my tests with, is not able to detect any buttons when a video of flash player pops up, which is where I have reached a big barricade. But I might be able to sidestep this issue, as I am currently learning how to navigate the mouse automatically with my tests.
As a sidenote, when I was bored at the office a few days ago, I made a test that actually writes out replies on Facebook based on the message!
Stay tuned on my journey, as hopefully I can solve this next week!


Tuesday, February 16, 2016

Real World Applications

Just a quick side note.. I was talking to a family friend about my internship this week and little did I know that the exact coding I am using (known as selenium webdriver) is actually very very useful in every field, from medicine to engineering. The code simulates user actions on a browser such as Cbrome for different purposes, usually just to make sure everything runs as planned.
So to establish some ethos, this family friend has a Masters degree in sociology but has studied all over the world and after making enough money he decided to start a software company that he hopes can revolutionize the home-nursing industry. As a employer, he told me that good scripters get paid up to $50/hr to write Selenium webdriver code (if it was a full time job that would be approximately 140k/yr!)!
Now thats some added motivation to get this down pat!

Friday, February 12, 2016

The Logic Behind Loop Logic

So let me get into what Loop Logic actually does. Basically, they have these marketing and business clients who buy their software, and it gives them a platform -- like Google Drive is for example-- to make presentations to show to clients. So why Loop Logic, as opposed to just use Google Drive? They have a many features that come in handy to those in the marketing industry, like it allows the people making the presentation to view who watched their presentations, when, or which parts even. A few more added features are presentations with polls and voice narration. I am still learning the capabilities of their software as well, so I will keep updating as I learn more!

First Week!

So I'm not going to lie, I thought that not only would I not be able to catch on since I just started learning C#, but I thought that working 5-7 hours a day doing the same thing would get monotonous and boring. But my experience this week shook all those negative perceptions away. I was able to completely script my first working test this week!
The capabilities of software and technology today are just mind boggling. My first test-- a very small part of it at least-- involved the computer automatically signing in to Google and typing my password automatically; it just amazed me! On top of that, this technology, allows software startups with so little resources-- not just this one, there are thousands-- to rapidly evolve and sustain success in the long run, and it is mainly due to the capability of the software in today's day and age. Another thing I realized is computer science is very, very easy to learn. And not just C#, this extends to Python, Java, and C+, and probably most of the languages being utilized the most. I found this out because on my quest to learn C#, I found other tutorials; A majority of these taught the entire language within a day or two of learning. The best part is, that simply learning a language that is actually used by software companies, like C# which is used for basically all Windows applications, you can actually secure a job, even without a degree!
Another cool part of the job is the 'aha moment'. I was working on that test three days-- thirteen hours-- in a row trying to figure out that one test, and it was definitely frustrating seeing the error message again and again and again. But after I finally figured out the last error, I had the aha moment; seeing the test run successfully, and the green check mark by the project in the run manager, really gave me a sense of relief and joy.

Thursday, January 21, 2016

Senior Project Introductory Post

I am a senior attending BASIS Scottsdale, and for our third trimester, we will be doing a senior research project.
Before I begin, here is a link to my proposal outlining what I'm doing, why I'm doing it, and how I'm doing it.




As a beginner in computer language, who has just learned Java (but honestly forgot it since it's been over three years!), for my senior research project, I will test whether I believe C# will be a good language to start with. I will be interning at a software startup called LoopLogic, where I will be using C# on Visual Studio. At my internship, I will be doing automated tests and integrating that into their software (with success hopefully!), But as I learn C#, I will also be making beginner games on the side. I will start with simple ones, like poker and blackjack. This is because one of the problems with learning C# is the visual aspect can be very difficult to learn. The games will just output simple numbers and give the user options to"check" or "fold" or "raise" or "hit". From there, if there is enough time -- we only have ten weeks-- I will try to make more difficult games using graphics, such as a card matching game with pictures.
As my proposal said, I am a car lover. I have been working on them since I was just six or seven years old, and to this day, working on cars remains much more than a hobby to me: I hope to become a mechanical engineer in the auto industry. 
Although I was pretty good under the hood, whether it was the tedious process of adding a supercharger, or simply just tightening the suspension, the ECU (engine control unit) was one part that always stumped me, and the programming in the small square chip that could actually save somebody's life just amazed me. So while learning Java for Computer Science was fun, learning programming that I am actually able to apply to the 'real world' and help a company's software run more smoothly will be far more rewarding, and a step towards my career goal of becoming a mechanical engineer. 
I will start working at my internship on February 1st. Much of my project's outcome will be revealed within the next few weeks, as I have to learn C# before I start at my internship, where I'll be thrown right into the mix. Here is the link to my internship site, a software company called Loop Logic: