Saturday, May 5, 2012

Final Post

Well, the semester is now drawing to a close, and as the saying goes, all good things must pass in time. Looking back upon the semester, I feel that I grew significantly over the course of the past semester and I am really glad to have had the experiences I had. I learned how to work work with a new language and how to work with members of a group for a long period of time. I have never had to work with a group for more than a month, and this semester, learning how to comunicate effectively and how to grow individually and as a member of a group. Looking back, professor Ackley had asked us in class what we would tell "beginning of the semester us" if we had a time machine. And at this point I would definitely tell myself: Sucks to be you. Because it was rough, taking CS460, CS444, CS375 and CS362 was pretty killer and while I learned a lot, I cant say that I would want to do it again. So Thus concludes this chapter in my life, not only for the semester, but for my undergraduate career. So I bid farewell to all of you who have followed the ups and downs of this project.
If you feel like messing with our creation go to : dndwebsitecreator.com

Peace!

Thursday, May 3, 2012

Its the final countdown!!!!

Sorry, that song is going to be stuck in your head now for the rest of the week, at least it has a good guitar rift! Anyways though, We are nearing the end, essentially the project is "done" or more like, as done as it can be at this point. Tomorrow we have due our 1 page paper that we will give to our judges to be able to remember our project by and have something to be graded on.  With that being said, I will be posting that here later today. On that note, As I look back on the semester, I really wish that we could have had more time to show off our project and all its functionality, because I feel like there is a lot of functionality an nuances that we had to work on and get the kinks out of to be able to make the project usable by a normal user. That being said, it feels like we will give our presentation and then that's it... nothing afterwards, granted I know Ackley will be going through our code after it is all said and done and looking at our code and grading us based on what is there, but the fact that we dont get to show it to people is kinda sad, but such is life. Beyond that though I really feel that I learned a lot this semester. I gained a lot of experience working with group members, who going into this project I would have never picked to work on a project of such magnitude with and also, how to be able to effectively communicate with people who are completely different from me and program completely differently from me. With all that said, I am very very glad this semester is drawing to an end.

Thanks!

Sunday, April 29, 2012

Future additions

Well, as the semester draws to a close and our team puts in the "finishing" touches to the project, I feel that it is time to reflect on what we set out to do as a group and evaluate progress therein and also to ask what feature we would have liked to implement most if we had more time. First off I will address the things that we accomplished this semester. At the beginning of the semester we set out to create a website that would be easy for the average new web-user to create a website and publish it to their own pre hosted website. I believe that this was an ambitious goal, but, more or less, we have accomplished it. If given more time I would have liked to clean up the user interface significantly, and I think I would have liked to take the UI, completely throw it away and start over from scratch. The reason for this is because after doing a level of end user testing, I have found that people have a hard time navigating the menu. So it would have been cool to bring in outside users into the development process to make the user experience as fluid as possible. But, again, I believe that over all, we accomplished the goal we set out to do.
     On that note though, if we were able to have more time to ad another one feature, I would have liked to add functionality for users to be able to specify the z indexing level of individual elements. The reason this would be most helpful to users with an above average level of web knowledge, but would also allow users another level of functionality that we do not currently support. Another thing that I think would have added another level of believability to this project and would have given people more faith in this project.

Sunday, April 22, 2012

Nearing the end

Well, as it has been said before, the end is neigh and we are approaching the end of this journey in software engineering, this past week we had our final one on one group meeting with professor Ackley and it actually went really well, while we had some hic-cups during the presentation with things like icons not loading and such, it really went well, and he was happy with where we stood at that point in time and the direction we are going with the rest of the project. So our goal for this week was to be ready to give a 7 minute presentation about the state of our project next week and show off how far we have come to the rest of the class, and also to make some tutorial videos showing how to use our product and what all is available to people. So, John Schulz has been hard at work getting tutorials up and getting that done, which has been a huge help. I have personally been adding the final touch, the so called cherry on top to our program which is the ability to load prebuilt templates and themes to the project. Initially we were going to go with only the ability to load in a "template" that allows users to just have a sort of overarching color and menu theme that they could customize, but didn't really make a website for them. But now we have implemented Themes as well. The difference between a theme and a template is that a template only changes the "template" tab in the editor, where as if you choose to use a prebuilt theme then that modifies your entire project and essentially gives you a completely built project that all you have to do is add in content for and you're done. So those are nearing completion and now all we need to do is have our meeting to discuss the flow of the presentation and we will be all set :) from there it is all about marketing and continued bug fixes, but i feel that we are in a good place overall and that it will all work out :).

Thursday, April 5, 2012

Current Status and moving forward

Believe it or not, our last client meeting with professor Ackley actually went well, I was partially shocked. Most of the reason I was shocked was because only 10 minutes before our program was not rendering output or zipping the files we created, BUT we were able to track down the bug, fix it and then have a successful meeting. Now as for what is next: Nail down what "marketing" means. I hadnt really thought about what doing marketing really means, so after thinking about it some, what I believe this means is getting real clients actually using our program, this is scary because of how many bugs we are still experiencing with our program, not to mention we dont have a server yet set up to run our program on and store the database, so this week/ weekend is going to be dedicated to getting this box set up and ready to go with people being able to login remotely and work on the project as well as be able to test the current status of specific pieces of functionality we need. While this makes me nervous, I guess all we can do is see how it goes and hope I am able to set it up. I will be updating this post as progress/ problems arise. Currently, the server is "created" but I need to configure the router and download some additional software to be able to get it working.

[EDIT]

I actually had the server that we were going to use, removed from my possession, pseudo forcefully, therefore, we may revert to using a site like hostgator.com. Again, will post updates as we decide things.

Monday, March 26, 2012

User Experience

Forward:
This document is designed to outline why, when a user comes to our website, he/ she will want to stay on this site and create a website.

The hook:
When an individual first navigates to our website, either first from a google search or a link from another website, we know that they will be looking for a way to create a custom website. Once the user is on the page, we are now marketing toward individuals who are web-savvy, but do not have the skill-set/time to develop their own website. Now that we have limited down our client base who will be using our product, we now must look at what will incline people to stay on this page.

When the user begins to look at our front page, they will see a page that is well designed using web 2.0 styles and includes testimonials by other users who have used our site and created websites that are out in the world, living and active. They will be able to click links to see the other user’s websites and have the ability to examine websites that were made by our developers.
Also, in addition to this, we will have a button  directly on the front page ( separate from the link in the menu) that will direct them to creating a new user. This will be placed near the bottom of the front page and will act as a sort of “big red button” that after they are drawn into the website by the testimonials and other features of our site, they will be inclined to create a new user. This will draw the new users in and make them want to create an account with our website and get started creating their own website!
In conclusion, with the plethora of features that our website offers people, and the different testimonials and example websites that we display to the user, users will have no choice but to use our product and create their own website.

The User story:

    Once the user has created an account and logged in for the first time, they will be greeted by familiar tools that they will have seen in other editors similar to ours, on the left they will see the primary toolbar and on the right they will the properties editor that gives them full customization over each element that they place in their webpage. And in the middle of the screen they will see their main workspace where they will add all their content into their website.

Most likely, the user will start by hovering over the different tools that to see what each of their functions do. Once they have a grasp on what each element does they will begin the 5 step journey to website creation:

First: They will decide what the theme of their website is going to be, what color scheme will be used, who the target audience is, and so on.

Second: They will map out the pages to be used for this site: Ex. Home, Contact, Blog, Photos, etc.

Third: They will create the master template. This is important because the feel that is created here will translate to all the other pages. It is important for them to add the menu bar here and any Text that you want to translate onto every other page, common places for this kind of text are in the footer and header.

Fourth: They will begin adding content and customizing the individual pages. In this step you will be adding images, text, forms, and other miscellany that will be constrained only to individual pages.

Fifth: Publishing their page! They will take the code that was generated and add into the public_html folder that is provided to you by your web-hosting company and Voila! They will have created their website in 5 simple steps.

Saturday, March 24, 2012

Canvas Serialization: status: failed

Today after approximately 4 hours of work, I discovered something quite unfortunate. We are unable to serialize Canvases...It took a long time just to figure out how to serialize something using GWT (to do this I had to create a spike for serialization) once I was able to serialize a string, I took to the task of serializing a SmartGWT canvas, this yielded the following result:












Previously, it was my understanding that Ian had already confirmed that serialization of a canvas object was possible, but when I tested his code, I found that what was actually happening was that nothing was being serialized, but instead he was getting java.io* errors, the reason being that you are unable to serialize things client side like he was trying, therefore he never ran into this beautiful error. I believe the reason this went unnoticed was due to the fact that his error gets thrown, and you get output of it, but it gets silently ignored and does not crash the web app. But, once serialization was implemented server side correctly, I found out that it is impossible to serialize a canvas.

      In light of this discovery, I feel that we as a group need to go back to the drawing board concerning how to save our projects. I believe that the only way that we will be able to save projects though will be through a technique of back parsing, where we take our parsed html ( because it can be read in as a string)  and we will serialize that and save it to the server. When the client wants to load their project, we will grab the html, and parse it back into Canvases. How this will work? I have no idea. But here's hoping for the best.......



[EDIT]
I attempted to force a smartGWT canvas to be serializable using this class:

public class CanvasSerializable extends Canvas implements IsSerializable, Serializable {
private static final long serialVersionUID = 5670628250770755450L;
}


but that only gave me a more different error:


Thursday, March 22, 2012

Mid-Semester Revised Timeline

Here is a link to the revised timeline. What this timeline displays is what we will be accomplishing in the coming weeks and the dates by which they will be completed.

Check it out :)

https://docs.google.com/document/d/1naMabB96ZYYCj7rPVTiSfn_q6kR3QVJMfAn8K-D1PI4/edit

Tutorial/FAQ for our site


Welcome to WebCreate.com. Thank you for trying our product, and we hope that you are finding everything you need to make your website your own. In the event that you are new to website creation and how to use tools like these, hopefully this tutorial will be everything you need to get started creating your own website.


Step 1. Create a new project.

This phase is crucial because it is here that you begin your quest for ultimate website
creation. When you first log in you will be prompted to either choose an existing project or start a new project.

Step 2. A new beginning

When you first bring up the editor you will notice a few things at a glance. To your left you
will see the main toolbar for your project. Here all your editing tools are conveniently located for easy access and instant creation. We will break down each of these tools individually later in the tutorial.
As we continue on, in the middle of the page you will see your site creation canvas. This is where you will be placing all the elements that will eventually populate your website. You will notice three tabs at the top of the screen. The first is the master template tab. This tab like all others contains a header, body, and footer, but what is different about this one is that when edited, you will notice that the styles objects and items that you add into this pane will populate across all other created panes. This is important because it is here that you set up your main style the site. But the caveat is that this page will not overwrite any other changes made to subsequently created pages, and the styles added here may only be edited from this page.
Next you will see the the index tab, this is a re-nameable tab is the homepage for
your website, this will be the first thing that customers and visitors will see when navigating to your website, so it is crucial to make this page pop out and make people want to come back here.

Continuing on, we see the New Tab option, here once clicked you will be prompted to enter a page name, this name translates to the name of the page within your site you will be navigating to.
Looking towards the middle of the screen you will see that the pane is divided up into three sections, these sections are denoted as the header the body, and the footer, each of these sections bounds whatever elements that are added into them to that individual pane. thereby splitting your page up into three separate parts, each of these panes can be re sized and modified to fit your individual needs
Finally, on the right side of the page, you will see the properties panel, this panel allows you to modify any of the objects that you have placed into your website, from color to opacity, to positioning, this is the one-stop-shop for all your modification needs.

Step 3. A list of commands

As you begin to use this tool, you may or may not know about all the different options for editing objects within your development environment. Here you will learn all about how modify the objects that you have placed into each canvas.

Top Tab Set( the tabs that denote the various pages in your website)
Master template tab
click: selects tab
Created tab
click: selects tab
right-click: edits tab name
hover, click the x, allows for tab to be deleted( Cannot be undone)
add tab:
click: creates a new tab

Text Editor
click: selects editor, once selected you can move and re-size the editor
right click: edits text

Divs
click: selects div, once selected you can move and re-size the div

Images
click: selects image, once selected you can move and re-size the image

Menu Bar
click:selects the menu bar, once selected you can move the bar
(currently sub menu’s are not supported by this tool)

Forms (advanced tool)
once you bring down the list of items to be added to the form, you drag from the
menu, into the list of form elements to add an element to the form. Once this is
done you will be prompted to give a title to the form item.
the major thing about this tool is that we DO NOT provide the PHP/Perl code to take the information added into these forms and place it anywhere, we leave that up to the discretion of the user to hire someone to write this code for them.

Step 4. Putting it all together

Now that you have information on all the pieces of the puzzle required for ultimate website creation prowess, the next step is to take all the information here and apply it to creating your first website. We suggest that you begin your journey by taking the following steps:

First: Decide what the “theme” of your website is going to be, what color scheme are you
going to use, what is your target audience, and so on.  

Second: Map out all the pages you are going to require for this site: Ex. Home, Contact, Blog, Photos, etc.

Third: Create your master template. This is important because the feel that you create here will translate to all of your other pages. It is important to add the menu bar here and any Text that you want to translate onto every other page, common places for this kind of text are in the footer and header.

Fourth: Begin adding content and customizing the individual pages. In this step you will be adding images, text, forms, and other miscellany that will be constrained only to individual pages.

Fifth: Publish your page! Take the code that was generated and add into the public_html folder that is provided to you by your web-hosting company and Voila! You have created your very own website in just 5 simple steps.  

It's been a while

So,
     As you might have noticed, it's been a while since I have posted on here, the reason being that over spring break I was more fixated with adding content to the program than posting here. Though it probably would have been good if I had been posting here all week about my accomplishments because as it stands, I will be forced not to be sketchy and post multpile times for different additions/ work done but instead make one post detailing what I accomplished over break.

First things first, I wrote the main webpage!!! whoooo... it is pretty cool actually, I wrote the whole thing in GWT and the way it works is you have css styles you can write and set those in as styles to a GWT canvas, once that is done everything inside that canvas adheres to those styles. nifty right? from there I just went to town making things as pretty as possible, One of my biggest trials was trying to get rounded borders working. This is trivial using CSS3, but thinking that IE does not yet support this, I tried my hardest ( to no avail) to stay away from using these styles. So I actually wrote some classes in Java ( that will probably be thrown away) that draw shapes with rounded borders. But when i figured out that the CSS styles work, I eventually just used those.

      Moving on from there I wrote the menu picker and the corresponding Navigational menu styles to go with each menu. Essentially this functionality allows users to add Navigational menus to their website that will be used to jump from one page to another. I was working on a way to allow users to set the styles of the menu by themselves, but in the end what I decided was that the users who would employ this kind of feature arent the users I am marketing to. Therefore I opted for a set menu picker that sets the styles for you and all you need to do is choose a color scheme.

    From there I wrote ( what I though Professor Ackley wanted) the FAQ section. This outlines how to use each one of the tools that the user has access to, and how to use them, as well as a 5 step process to making their own webpage. I will be posting this document here shortly.

     After all this was doen, I turned my attention to taking the features that I had previously written ( form creation, text editor and menu picker, and making them all MVC'd so that they could be undone and work well with Theo's selection Marquee stuff.


    After that, I worked on fixing bugs and other such funzies. And that pretty much sums up all of my spring break.

    Peace.

Thursday, March 8, 2012

Progress and plans

Well, the program is progressing well today I created the actual web-interface that people will see when they go to our site, if you wanna see a screenshot of it, here it is :)












Its a little sketch, but its a start, and it has been interesting learning to make actual webpages in GWT. I never thought I would be writing Java that compiles down to JavaScript and then renders HTML along with it. It's odd, but I like it. One of the things That I have found most interesting is that, like in my previous post, I found that GWT doesn't do multiple pages, it does single pages with canvas' that are drawn and destroyed based on what you want to display. This makes everything interesting because essentially it is more like an "application" than a webpage. But again, I like it. My group members are all really shaping up as well, Ian is doing a lot of great work on compiling GWT canvas' into individual HTML pages, Theo has been doing a fantastic job making sure that we dont have spaghetti code, but that our code is coherent and working all MVC style (for those of you who dont know MVC stands for Model, View, Controller. It is a programming concept that is meant to make sure that each piece of code has one thing that it does, and that everything is where it is supposed to be. For more information, visit wikipedia mvc) John is doing his best, and is currently working on adding more functionality to the currently created tools. Alex continues to do more to the server to make it more robust and make it more what we need. So this spring break will hopefully provide ample time for coding and making this the best project it can be.

here's hoping.

Thursday, March 1, 2012

Entry Points and GWT

Well, As is the case with any programming assignment, you always run into fun problems that weren't foreseen at the get-go, my newest learning/development issue concerns GWT's methodology of having one Webpage essentially and then having one entry point that "opens each webpage individually" within the same page. This makes me nervous... 1. because it was unexpected, and 2. because I don't really get how to do this yet... but here goes nothing, I will update this post as necessary as I figure this stuff out. If there is anyone reading this who has some good information on how to do it, feel free to share!

Thanks!

Wednesday, February 29, 2012

TextEditor and ClickHandlers

Today was able to completely implement the text editor!!!! woooottt! I was a little stoked. Mostly because its the first component that we won't need to go back and add functionality to, which is very exciting. I also updated the menu, before it was created using LinkItems, now it is populated with Buttons! Buttons I tell you! not the biggest change, but it does lend its self to looking much more professional. Next step for me is the integration process. As it stands now, while all the components display themselves in one window, the problem is that they are, to some extent disconnected from each other. So, I will need to get them all to talk to each other and be able to place things on different windows and so on and so forth.

     On a different note though, I had a grand ol' time tonight working with smartGwt's event handlers. They are a lovely thing prone to all kinds of nonsense. Tonight what I found out is that you can't have multiple kinds of click handlers in one class. You might be asking yourself, isn't there just one kind of click handler? nope. not in smartGWT. here we have lots of click handlers. and what I found is that if you want to be able to use multiple kinds of click handlers. You can import the main kind like this :
Import ..form.fields.events.ClickEvent;
Import .. form.fields.events.ClickHandler;

But you'd also like to use one of these: 

widgets.events.ClickEvent;
widgets.events.ClickHandler; 
You can't do it. 
Eclipse gets grumpy at you and so the solution is to do something horrendously gross like this:
blah.addClickHandler(new com.smartgwt.client.widgets.events.ClickHandler() { @Override public void onClick(com.smartgwt.client.widgets.events.ClickEvent event) { }  
});
Isn't that wonderful?
welcome to the world I am living in. 

Anyways I am off. Too many things to do.. not enough time. 
Peace. 

Tuesday, February 28, 2012

Tools and exciting things

Well, recently Ian has decided that he doesn't actually want to do UI so he has moved to doing parsing stuff so with him no longer working on UI it is just me making tools that will go into the final project. That being said, I looked over the work that was done on menu creation, came to the conclusion that it was unusable with what we need to do. So, I wrote a menu creator, It is almost done, and its pretty exciting actually! the way it works is that it creates a tabbed pane viewer, this is exciting and then (the part I am working on currently) is being able to right click each individual tab which will allow you to add sub menus that drop down off each main menu item. I think this will be pretty easy and that we will be able to show professor Ackley tomorrow during our client meeting. In other news, I am still worried about all that needs to get done, but I have (so far) written: a Form Creator, a Style Creator, a Menu Creator, most of the properties panel( the rest of the work to be done there is going to be completed by John Schulz because he was really struggling with the server stuff so I took him off that and I am trying to work with him to find out what he can do.) He is supposed to have it at full functionality by tomorrow. If he is unable to do that though I will take it over.

    So, now what it is all about is taking these pieces and adding them into the framework that Theo made, and getting things going.


Still very worried.

Wednesday, February 22, 2012

Thoughts on first Client and Team Meeting.

Going in to this meeting, I kinda knew that it wasnt going to go so well... My thought process was: "Brace yourselves, a grilling is coming" and I knew also that our group wasnt going to be prepared for what came next. What was a bummer though was that it seemed that everything went wrong at the wrong time. For example, Theo's Eclipse just died.... wouldnt start nothing, John didnt want to show his spike, Ian was reluctant to pull out his computer even though he could tell that it was what Ackley wanted, and Alex just had a spike showing some copy-pasted GWT code... my form example went well enough, but it wasnt much... Definitely not enough to make it worth Ackley's time. Luckily, once Ian did get his computer out, he was able to show both his spike and Theo's. Still though, we arent where we need to be, so hopefully we will have nightly updates where we all get on skype and talk about what we did that day, so that we have some accountability to the group. hopefully do some screen sharing and really checking out what each group member has gotten done that day. We will see how that goes. I am getting more and more nervous as time goes on. Hopefully though, this weekend we will get some peer programming going and be able to flesh out what each person will be comtributing to the final project with and we will also be having discussions about what each member will be showing Ackley at our weekly blog.

Here's hoping...


Thursday, February 16, 2012

First Spike

In the spirit of beginning the process of being prepared for the proposal our group needs to be able to present, I have created a very initial first spike using gwt-dnd which I found after some digging around. While as @Joe Collard stated in his latest blog, He was able to get drag and drop working without this tool, this tool does give us a lot of underlying functionality that will be quite invaluable in the quest to getting this project up and running. Though something that we need to take into consideration is that we will need an apache 2 license to be able to actually put this code out into the world, but when reading over the specification for getting an apache license it doesn't seem to bad :) So, here's hoping that tomorrow's presentation goes well. It will be be and Theodore Schnepper doing the main part of the presentation, because our other team members either dont feel comfortable presenting infront of the class, or more likely they aren't feeling the time crunch that Theo and I are feeling.

Wednesday, February 15, 2012

First Meeting

Less than success.... A lot of confusion about what exactly the project entails and how we will be going about this project. This combined with the fact that we were down one member ( who didn't show up *cough* Alexandre Rogozine *cough* ) But, main take aways from today are that we need to, as a group become much more familiar with GWT if we are going to be using it. It seems that it will provide some amazing functionality, but as far as using GWT to do JavaScript drag and drop, I am unsure. There also seems to be a disconnect with the ideas I have in my head and what the group's idea of this project is. Therefore I am going to try Theo's idea of taking from other web developers idea's and bring a big white board and sticky notes to our next meeting that way we can all have a very physical tangible way of seeing how the website will operate and how the user will interact with it, without having to do any real coding. As for Friday's presentation, Theo and I will be doing that presentation as well. Hopefully our main talking points will concern the tools we will be using, info on specifics of the project as they stand now, and where we stand on future work. This (ideally) should take up the whole time we are given. So I guess we will see how it goes... I am feeling nervous at best.

Tuesday, February 14, 2012

Agenda For Wednesday

I know its a bit of a silly post, but incase anybody cares, here is what our group will be talking about during our scheduled group time on Wednesday Februrary 15th


Agenda:

Discuss current Timeline 

Changes that need to be made:


Discuss strengths and weaknesses of each group member and what skills they bring to the table: 

Discuss SVN set up and have a basic discussion on GWT

Discuss presentation that will be on Friday

Begin discussion on how to divide up workload (subject to change) 





Sunday, February 12, 2012

Project Update

In relation to my project proposal I was able to track down some info on basic drag-and-drop implementation using javascript and HTML. There are some awesome tools that give you a good amount of tools that will be useful if my project is chosen. Here is the link: redips.net
If anyone is planning on being a part of this project please view the the information on this site and get acquainted with the basics of drag and drop. it will be very helpful :D

Thanks!

Friday, February 3, 2012

Three Words

This assignment was given by Dave Ackley, the assignment is to provide 3 words that describe our "ideal" team.

Timely, focused, cohesive.

Wednesday, February 1, 2012

Proposal Review Charis Cowdrey

Here is the review I did on Charis Cowdrey's project for CS 460.
check it.

A Few thoughts on Software Craftsmanship

According to manifesto.softwarecraftsmanship.com,
software craftsmanship is all about not only creating good software that runs well but creating software that is "well crafted" and increases in value as the software gets better and better, and software that is backed by a community of professionals who work hand in hand with their customers to create "productive partnerships". While this all sounds good, on a side note, I think this group should work a little harder at practicing what they preach. Because, As you can see when you go to their main website, it is currently ( as of 11:29am 2/1/12) down. Which I think doesn't really bode well for their cause if you ask me. But, continuing on, like I said before, I think that what they are trying to do is very admirable, the idea of not viewing creating software as something that can be approached from a lackadaisical standpoint is something that I think should be thought of whenever someone is approaching programming. This is important because a lot of the time what happens is that people go into programming not really thinking of the future of their project and where it might be used and under what circumstances it might be implemented. What this leads to is hack-ish code that may work for one instance of what someone is working on but then a few years down the road when this piece of code is still running out somewhere and a new programmer comes along and needs to modify this process and everything crashes because the code wasn't dynamic enough to allow for change and modification, things go awry. This is something that is always pounded into hour heads in the CS department at UNM. We are constantly encouraged to be future minded whenever we are programming because you never know if something you write is going to end up being used in some larger project where it is essential that this code work the way it is supposed to. So, I definitely agree with their ideals and motives behind what they are trying to do. My only real beef with their work ( aside from their website being down) is that it feels somewhat aliening in a certain sense. What I mean by this is that it seems that this group is trying to bring together an "elite" group of programmers and a community of only the best of the best, and this seems to me, to alienate those who really just want to learn and become better programmers, while I'm sure that they don't intend for this to happen, it seems like it is very possible that people could feel this way. So, my suggestion would be that they include in their manifesto something about helping bring other programmers up to this level so that the overall productive capacity of the world's programmers could be increased.

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.