Tuesday, January 31, 2012

Project Review 2

This project review is of Nathan Rackley's CCG board game proposal, if you would like to see what i thought of it, check it

Project Review 1

Project review 1 is up :D it is of Jan Monterrubio's MOBS game if you would like to see what i though, check it
 

Sunday, January 29, 2012

Thoughts about Extreme programming

When we were given the assigned reading last week, concerning a programming practice called agile programming, it piqued my interest in a subset of agile programming called extreme programming. While I have heard this term before from my classmates and particularly @Joe Collard, who is an avid proponent of this methodology, I never really did any research on it myself, so today I decided to devote a little bit of time to figuring out how this methodology works. The first thing that initially came to my mind about Extreme programming was this image of programmers skydiving with laptops in hand, compiling and writing code in EXTREME conditions, or perhaps a programmer ice climbing to some remote location and living with inuits in EXTREME conditions and programming their lives away. But, that is not the case, though a bit of me wishes it was. though the downside of that is that 1. it doesn't make much sense... and 2 because then there would be a show about it on the discovery channel that would be super unrealistic and absurd... both negatives. But what I found is that extreme programming is a methodology centered around 5 basic principles: communication, simplicity, feedback, respect, and courage. Under these principles, ideally, the programming cycle is supposed to be more streamlined and is supposed to be more adapt to change because everyone in the development loop is in constant communication with each other and the program is developed in such a way that features are created, tested and added to the final project, essentially at the request of the customer. this is supposed to create a development environment where everyone is working on a singular thing instead of worrying about all the features that they need to implement. This along with a few other practices are supposed to give a very dynamic client based environment that fosters productivity and agile development. The downside to this, I think, is always relying on the customer and having them be such a big part in the development process. The worry that I have with this comes from experience with customers who have a vague idea of what they want but don't are so wishy-washy that they can never make up their mind and end up changing their wants so many times that you never really have a finished product. So, what I think it boils down to is 1. knowing your client, and 2. having some concrete program requirements that don't change that way you actually have a solid goal to work towards as opposed to some "pie in the sky" that is forever unattainable. 

Saturday, January 28, 2012

Concept Proposal. Like a Boss

Here is my concept proposal for CS460 I ended up shaving it down a little bit, decided that it was a bit wordy so instead of being 15 pages its just 14 so yeah :) lemme know what you think :) 

Thursday, January 26, 2012

Thoughts on agile software development

This week we were given an assignment in class to read the wikipedia article concerning "agile software development". This methodology was "patented" or concretely nailed down in February of 2001 by 17 software developers who met do create what is known as the "Manifesto for agile software development", in which they nailed down the requirements that they deemed necessary for a development cycle to be deemed "agile". Here is an excerpt from the manifesto "We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value Individuals and interactions over processes and tools. Working software over comprehensive documentation. Customer collaboration over contract negotiation. Responding to change over following a plan. That is, while there is value in the items on the right, we value the items on the left more." While this methodology sounds good in theory, I feel that it provides some potential problems when we start analyzing it more critically. Particularly, I feel that their stance on "working software over comprehensive documentation", while it sounds good in theory, I feel that when you take the stance that you don't "need" to have everything documented in its entirety as long as it works, you set up a situation in which you have a high probability of beginning the process of digging your own grave. What I mean is that when you forgo good documentation practices and opt for more coding, what ends up happening is that when someone else needs to use something that you wrote, they will have no idea what is going on and the time that they have to spend figuring out your code may very well end up taking more time than if you had just documented correctly in the first place. Therefore, I believe that this method, while it is good in moderation, I believe that you need to take a more moderate approach to software development that way your code ends up coming out with less bugs and more documentation, that way you have the framework for future development.  

Tuesday, January 24, 2012

improved Timeline

I think this one is more feasible and better documented, I made it using OpenProj
Click here to see it :)

Monday, January 23, 2012

Proposal Timeline

This is the tentative timeline for my project proposal. Keep in mind this proposal is subject to MUCH change and will be updated as the semester progresses.

Proposal #2 Dynamic Drag and Drop Website builder

Forward: this, as opposed to the project below will probably be the one that I will go forward with. In light of the discussion today in class (1/23/2011) I thought this project would be something I could really put myself into and I could take the torch and run with this project. 

Proposal: Dynamic Drag and Drop Website Builder

There are many websites that provide the ability for a customer to create their own webpages using templates or even basic drag and drop utilities, but none that are cohesive to the idea of moving away from building a webpage into the idea of building a website. Also, from the research I have done on website creation tools; there aren't any that directly give the user their final product (EG the code that was generated). They allow the user to create a website, but what ends up happening is you don't get to apply that code to your own URL, you need to use something like username.lifeyo.com or another example is that they do let you have your own URL, but you are forced to host with the company that made the website, like webstarts.com or some other such corporation. That is where this project comes in, this program will not only allow you to physically own the website that you create, but it will also focus on the ability to make a coherent website, not just a webpage.

The question that you may now be asking yourself is "what is the difference between making a webpage and a website?" To that I say it is one of many things. First off it is all about cohesion. What that means is that if you go at website creation on a page-by-page basis what you will end up with is something that feels mismatched and disconnected. When you look at professional websites, what you see is that there is a constant theme and flow throughout the site, and you can tell that the developers made the site in such a way that they anticipated the way you would navigate the site and therefore tailored their site to that sort of traversal. The way this will be implemented is by giving infrastructure to this program that allows you to first create a theme that will be carried throughout the website (this will generally contain the navigational menu, background, and footer of the webpage). From there you begin customizing the site and adding content, this is the second step in adding cohesion to the website development process. Here we will give the user the ability to, for example, add a link to the site, that points them from the homepage to the blog page, once that link is placed and pointing to the desired location, the user can click on that link and go directly to that page and begin developing there. This way what happens is that the person making the site has the ability to create the website in a way that the user would navigate the site.
           
          The implementation would be a web based interface and would be written using Perl( possibly also PHP) Javascript, CSS, html5 and possibly a touch of Flash.  This tool will be marketed to the individual who is looking for an easy way to create a personal webpage for uploading photos, or blogs, and it will also be marketed toward startup business owners who don’t have the revenue to pay a lot of money for a professional website, but are just trying to get their name out there. For them, this tool will be an invaluable asset to the success of their startup company, and for the individual it will allow for them to express themselves in a way they never thought possible. We will make this environment possible by hiring website consultants that will be available to give suggestions and help to people who are looking for advice on their current designs or are looking to get to know how to use the tools better. This service will be a paid for service, where users will pay a low hourly fee for help designing their website, this help will be conducted either over a chat client or over a “share your screen” environment like gotomeeting or skype. We will also implement Google adsense ads on the website that will bring in revenue, as well as the option to put ads on their personal sites that they would get a portion of the revenue from if their site begins to generate revenue. Our crack development team who, along with the support/advice team, will be paid by the revenue from help sessions and from ads we place on the site. 

Friday, January 20, 2012

Proposal CS 460: KGB world

    Many people have played the game KGB, where you have two teams competing against each other in a kind of capture the flag setting where you have groups of people in cars and a singular group of people who are on foot and are trying to make it from point A to point B in a given geographical area while the people who are in cars attempt to catch the people who are on foot. Once caught the person is now enlisted on the other team’s side. My idea would be to bring the excitement of this kind of game play into the realm of mobile gaming, specifically the android platform, and using the power of Google Maps, we would create an application that placed the character in a Google Street View perspective and depending on what team you were on you would be either attempting to intersect paths with another player to capture them or you would be trying to stay away from other people and get to the finish location. There will also be various modes of game play as well as power ups that will be available to the player that will add to the excitement of the game. The proposed game modes will be: Standard KGB mode, Capture the flag, and Frenzy versions of both game modes that will include power ups that will modify the game play by adding a speed boost to the game or offering immunity to the player for a given amount of time. Combined with the standard game play opportunities, this will allow the game to have an infinite level of replay ability that will keep people coming back for more fun!

     This product would be marketed towards the casual gamer who has already played all the gimmick-y games that the app store has to offer and are looking for something that really engages them in an online experience with other players. Support for this project will come from the community as this game will be released open source and free of charge in the marketplace to foster a more community oriented approach to the continued development process and will allow people to feel more involved and engaged by being able to provide enhancements to the game as they become necessary.

     The specific goal of this project is to develop something that isn’t currently available anywhere, either on the android market or even in the realm of gaming in general. Currently on the android marketplace, there isn't a game that places players directly in the real world in this kind of competitive environment. Which is why this game will revolutionize mobile gaming and take it to the next level. This along with a strong community support aspect that will provide periodic updates and feature modifications/additions, this game and the way in which it engages players will become the new standard of mobile development. 

Thursday, January 19, 2012

SoftwareEngineeringDDA

Software engineering, as stated in class by Professor Ackley is something that is done by people. The wikipedia article found herestates that more concretely that software engineering, " is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches". With this concrete definition in mind, anyone with some sort of knowledge concerning the field of Computer Science will be able to see some very interesting advantages and disadvantages that are present in this definition. First off, using this definition of software engineering we can see that it provides a framework and a sort of guideline that someone venturing into software should follow. We can see that it sets up a situation in which the developer of an application is able to have certain things that he or she can quantifiably strive for during the creation of their program. All of which, if implemented correctly will result in a product that is not only stable but also has the potential to be modified, expanded and enhanced later on down the road. The draw back to this definition is that it has the potential to become somewhat overwhelming when looked at closely and the magnitude of this undertaking becomes clear. This may lead the developer to stray away from more elegant programming practices and neglect to follow this definition at all. Therefore, it is important for the individual embarking on the quest that is software engineering to be determined, motivated and focused on the end goal and make sure that the application holds up to the standards outlined in the definition of software engineering.