Friday, February 7, 2014

Team Members

The three words I would use to describe the perfect teammate would be Reliable, Motivated, and Independent. Someone who can consistently contribute to the project but is driven enough to work on their own just as effectively as during group meetings. Words that I considered but didn't make the cut were Charismatic, Diligent, and Creative. It's important to be able to effectively communicate with teammates, and creative input is always a welcome addition to any problem.

Tuesday, January 28, 2014

Development Timeline

Week 1: Team Orientation and UML

The development team will spend the first week getting used to the development tools necessary for the project, including the Android SDK. We will then draft a UML diagram for our prototype.

Week 2-3: Basic Networking Prototype

We will develop and test the network aspect of the app by creating a rudimentary IRC client app. We will also prototype Facebook integration.

Week 4: Prototype Review


We will revisit our UML diagram with the knowledge we gained from the prototype and make any necessary adjustments.

Week 5-11: Development

Actual development of the app.

Week 12: Feature Freeze and Delivery

The feature freeze date will be the end of week 11. Any last minute debugging will happen here, but nothing new will be added. The project will be ready to deliver at the end of week 12.

Monday, January 27, 2014

Concept Paragraph: Boredom Calls

    There are many social networking apps designed to keep in touch with longtime friends and acquaintences, but none that offer a way to socialize and meet with new people on short notice. Our team will create a location based socializing app for Android that allows people to find others with similar interests in their area and chat with them. This will give users an easy way to make new friends, find things to do, and find other people who enjoy the same things that they do. Nearly anyone can benefit from easier ways to (socially) network and make new connections, especially when moving to a new area, checking out a new attraction in town, or starting a new hobby. We will use Facebook integration to make a basic user profile (picture and name) and chat itself will be built on top of IRC, which means development will be entirely clientside. To clarify, this app is not an IRC client- it will only use IRC as a means of sending text data from one location to another. Within chat, users can use hashtags to find topics they're interested in and maintain a list of hashtag "subscriptions" to keep up to date with activities related to their interests. Finding something to do on short notice doesn't have to be difficult; it can be as simple as "Anyone want to grab a #beer?"

Thursday, January 23, 2014

Wikipedia's Article on Software Engineering


    I thought this was a well composed Wikipedia article that gave a brief but sufficient introduction to the field of software engineering. In particular, I enjoyed the comparison to other engineering disciplines; software doesn't have an easy metric to gauge how productive its development was, or what it actually does. The article states:

    "... measurements available for software like e.g. Lines of Code, Function points or Complexity Measures only capture the amount of software created. They do not describe what the software actually does. This is like describing and measuring a complicated piece of machinery in kilograms only."

    I disagree with Dijkstra's criticism of software engineering; he dismisses it as a field of study focused around "How to program if you cannot." Is that not the purpose of formal education and standards? I see nothing wrong with formalizing a set of tools and methods that optimize the development of software. After all, optimization itself is a large part of programming. Not necessarily optimization for speed or performance; many programming problems can be simplified to "With these limited building blocks, what is the most effective way to construct a solution to this problem?" It is this kind of optimization problem that I think is central to computer science as a whole, and studying software engineering is a way to avoid reinventing the wheel when you come across a roadblock that other people have solved many times before you.