Sunday, January 14, 2018

SE 591, Week 1

Looking Back

Over the past week, I have accomplished the following tasks
  • Prepared project plan for Q2
  • Prepared individual plan for Q2
  • Designed "look and feel" for website
  • Migrated Azure subscription to Microsoft Imagine; added code review policy to repo
  • Updated DB structure for anticipated user stories for Q2
  • Contributed to list of gaps from Q1

Challenges

As was expected with anything Azure-related, it took some trial and error getting the entire system migrated off the Pay-As-You-Go to the Imagine subscription, but we eventually got it set up.

We did decide to require code reviews on every push, and in doing so, we also now have a CI/CD environment set up.

Preparing a detailed project plan required quite a bit of work. Thinking about every story, every dependency, priorities, etc. isn't necessarily difficult, but it does take a lot of time.

Metrics

While the items accomplished this week were "chores" and therefore didn't receive values in our tracker, I estimate my contributions this week to be approximately 15 points, so this establishes my baseline for this quarter.

Tuesday, October 31, 2017

Artistic Collaboration, Week 7

Looking Back

This week, I accomplished the following items:
  • Completed Mock UI for three primary use-cases
  • Spent time learning asp.net
  • Built a procedure to test if a username is unique
  • Built the presentation for the demo
  • Added 7 stories to the backlog

Challenges

This week, I found out that Microsoft really doesn't play well with Mac. There is no SQL Server Management Studio for Mac. I tried SQLPro, but it wasn't free. I decided in the moment I was going to just work out of a VirtualBox rather than waste time continuing to beat my head against a wall, but when I went to install VisualStudio onto the VM I already had created, I hadn't set aside enough space for it, so I scrapped it and came back to Mac. I finally found the windows/frames I was looking for previously in VisualStudio. They're called "pads." I also found a good (free) DB software, "DBeaver."

The other issue was connecting the CD pipeline to my Azure account, but that was incredibly quick to resolve.

Learning

The most difficult tasks I had this week were the Microsoft/Mac issues. When I had given up and then decided to come back to working outside of the context of a VM, I continued thinking to myself, "I can't be the first person to deal with this." That helped me find the information I needed to resolve multiple issues including generating stored procedures within DBeaver. 

Looking Ahead

Our team goal for the sprint ahead is to get the initial functionality to generate an event. My personal goal is to get CI/CD working correctly on my account, which could take some time to understand. This will, however, help when I go to build applications on my own in the future.

Metrics

Based on the previously established metrics, here is the value of my accomplishments:
  • Accomplished: 4 stories and a spike valued at 7 points
  • Stories added to the backlog: 8

Tuesday, October 24, 2017

Artistic Collaboration, Week 6

Looking Back

I didn't get a post made about my work last week, so this will cover the past two weeks (most of the work being done this week). During this time, I accomplished the following items:
  • Draft ERD (with W)
  • Migrated from W's Azure account to my own
  • Set up a Google Drive with team documents
  • Populated the backlog with user stories for the initial three epics
  • Wrote a blog about the long-term vision for the project
  • Found images to use as the avatars in our initial project

Challenges

We were slowed down as a team this week trying to transition from W's Azure account to my own. When M transferred to the new version control, there was a permissions piece somewhere that we couldn't seem to find. Eventually, we finally got it connected, and everything else went well.

Learning

This week, after conversations with the team, I finally feel like I'm finally getting a grasp on the entire web development stack, and I'm going to be able to fully participate in the development on this project (as well as future enhancement even post-class).

Looking Ahead

Over the upcoming week, I plan to accomplish the following items:
  • Complete a mock UI that covers the first 3 use-cases (finally)
  • Spend a good deal of time learning asp.net
  • Build the functionality to test a username to determine if it is unique
  • Build the functionality to validate a password
  • Build the framework for the demo

Metrics

Based on the previously established metrics, here is the value of my accomplishments:
  • Accomplished: 5 stories and a spike valued at 8 points
  • Stories added to the backlog: 6

Monday, October 23, 2017

Artistic Collaboration, The Vision

The Original Idea

I am an artist. Specifically, I create photographs. Sometimes I play in front of the camera, and sometimes I play behind. Portrait photography almost always requires at least one other person, and in my community, I spend a lot of time organizing and attending events through Meetup.com. While I love the idea of their platform, I feel it's missing something for the types of events I want to plan. One of the problems we face when we plan events is that there are almost always a larger number of photographers than models. Meetup only allows us to specify how many individuals are attending an event, not break it down into types of attendees. My idea is to build an event platform where I can specify attendance numbers by category of attendee. For example, I want to host a photo shoot and invite 20 photographers and 10 models.

MVP

Based upon this, idea we are developing our MVP to support the following use cases:

  • As an artist, I can create a profile in the system
  • As an organizer, I can create an event with specified participant maximums
  • As a collaborator, I can (view and) respond to events with open slots
The above use cases have generated user stories such as:

  • As an artist, I want to register in the system with my email address so that I can log in again at a later time
  • As an artist, I want to have an initial profile created with default information so that I can get started without detailed information
  • As an artist, I want to update profile details so that I may connect with my target audience
  • As an artist, I want my password verified so that I may maintain control of my personality
  • As an artist, I want to select a unique username so that I may share my specific profile with other artists while protecting my email address
  • As an artist, I want to select one or more roles so that I may respond to events
  • As an organizer, I want to create an event so that I may invite collaborators
  • As an organizer, I want to limit participants by type so that I may provide a positive experience through balanced representation
  • As an organizer, I want to have a wait list managed for my events so that I may have backup attendees if RSVPs change
  • As a collaborator, I want to respond to an event invitation so that I may maintain details
  • As a collaborator, I want to be added to a wait list so that if someone drops out I may join an event
  • As a collaborator, I want to remove my RSVP so that someone else may attend 

Roles

I envision this becoming an expansive tool covering collaboration among the following individuals (and more):
  • Photography collaboration
    • Photographers
    • Models
    • Hair stylists
    • Makeup artists
    • Body painters
  • Musical collaboration
    • Singers
    • DJs
    • Instrumentalists
    • Sound engineers
    • Songwriters
  • Stage production
    • Actors
    • Directors
    • Script writers
    • Costume designers
    • Set designers

Additional Features

Looking ahead at the bigger picture, some additional features include:
  • As an artist, I can establish collaborative connections with individual users
    • I envision this similar to Tinder's swipe functionality, where you are presented with a user (within some filter criteria), and if you want to collaborate you can swipe right to connect or swipe left to discard
  • As a collaborator, I can communicate with my connections
    • This would be a simple in-app chat functionality between anyone who has already established a connection
  • As a venue coordinator, I can list recurring events for my venue
    • This would allow groups to see venues where they might be able to perform
  • As an artist, I can form "groups" with other collaborators (bands, stage productions, etc.)
    • This would allow these groups to apply to perform at venue events
  • As a promoter, I can list upcoming performances
    • This can also link to external ticket vendors such as eventbrite and ticketmaster
  • As an artist, I can solicit support for one-time projects; as a patron, I can support one-time projects
    • This could add kickstarter-like functionality into the app
  • As an artist, I can solicit recurring support for projects; as a patron, I can submit recurring support for projects
    • This could add patreon-like functionality into the app
The long-term vision for this project becomes larger and larger every time I think about it, which I find really exciting! I would love to hear your thoughts!

Tuesday, October 10, 2017

Artistic Collaboration, Week 4

After several weeks of pitching and discussing possible projects, we finally were divided into teams this week and began forming the initial framework for our project.

Team Decisions

  • The team decided we would work in the context of weekly sprints, since there is an expectation of a potentially deliverable application every week. 
  • I checked with the team to see if there were any desired deviations from the original project pitch. The team decided to stick with my original vision, and I will be acting as the product owner for this course.
  • We have committed to updating Slack Wednesdays and Fridays. We will also be using Google Hangouts for our Monday night meetings.
  • We will be working with the Microsoft stack, developing with Azure, ASP.net, SQL server.
  • We will be using BitBucket as our version control system.

Looking Back

Over the past week, I accomplished the following items:
  • Initiated Slack channel for team collaboration
  • Initiated project on pivotaltracker.com to maintain team backlog
  • Identified MVP with three primary use-cases (to be developed in this order):
    • As an artist, I can create a profile in the system.
    • As an organizer, I can create an event with specified participant maximums.
    • As a collaborator, I can (view and) respond to events with open slots.
  • Populated backlog with epics for setup and use cases (profile, event, rsvp)
  • Began populating backlog with user stories for setup and profile epics - this will be an ongoing task
  • Began working on a mock UI - did not complete

Challenges

I did not face many challenges in week 4 other than a lack of time spent on the project. I took this into consideration, and have begun clearing items off my calendar and replacing them with dedicated project time.

Looking Ahead

Over the upcoming week, I plan to accomplish the following items:
  • Flesh out the big vision of the application
  • Complete a mock UI that covers the first 3 use-cases
  • Draft ERD for the project
  • Set up a Google Drive folder to share documents
  • Review Slack channel discussion and summarize findings - upload to shared drive
  • Continue adding stories to backlog

Metrics

With this week involving mostly set-up and vision, there isn't much to measure that would have a lot of continuity in future sprints. I think the following would be appropriate ways to measure the sprint:
  • Accomplished: 1 story valued at 0 points
  • Stories added to the backlog: 7

Wednesday, May 14, 2014

Dive Portal Mockup

This week, I have sketched out a basic mockup for the interaction between pages on the Dive Portal website. The green lines show the "clickable" items, as well as the paths those items should take.






Sunday, April 27, 2014

Activity Diagram

After meeting with Tom of Dive Oahu, he explained that the current system he uses for logging dives is through DiveBoard.com. Some of the perks of the system include the ability to download single or groups of dive records, both as a virtual log and in a printable manner. Tom expressed the desire, however, to be able to share these logs with buddies, as well as upload photos, which can also be tagged and shared. By having the logs stored virtually and accessible by online friends, the job of the dive coordinator/organizer is also made simpler by allowing them to quickly search for credentials online, in addition to compiling all the data necessary for submitting records to certification companies.

In looking at the flow of data through the proposed Dive Portal system, the following activity diagram shows the way users will be working in the system, as well as giving a timeline to demonstrate how this activity is different prior to a dive and following a dive.


Use Case Diagrams

In considering how one interacts with the proposed Dive Portal, several interactions have been proposed.

Feature: Plan a Dive
As a dive coordinator
So that I can invite members to dive
I want to add a future trip to Dive Portal

Feature: Log Dive
As a diver
So that I can keep track of my records
I want to upload my dive data to Dive Portal

Feature: Make Friends
As a diver
So that I can share dive data
I want to connect with friends on Dive Portal

These interactions can be seen more clearly in the following diagram:


Thursday, April 24, 2014

Math Investigation

The Problem

How many people are in on the lanai? 
Suppose everyone shook everyone else’s hand exactly once.  How many handshakes would that be?
Suppose there were 120 people on the lanai. How many handshakes would that be?

The Solution

In solving this problem, I began first by drawing a few pictures. I represented each individual by a dot, and each handshake by a line. These drawings for 1-5 individuals are as follows:




I then turned these into a chart, showing the number of individuals and the number of handshakes:

Number of Individuals Number of Handshakes
10
21
33
46
510


I then noticed a pattern I had seen before...if you take the difference between the number of handshakes from one row to the next, that difference is equal to the number of individuals in the first of these two rows. Allow me to clarify. Consider rows 3 and 4, with 3 and 4 individuals. When you take the difference between the number of handshakes associated with each row, that difference is 3, which is the number of individuals in the first of these rows. Similarly, if you add the number of individuals in the second of these rows, 4, to the number of handshakes in that row, 6, the sum is the number of handshakes in the subsequent row. This leads to a recursive formula, where H is the number of handshakes, and n is the number of individuals:

Hn = Hn-1 + n-1

This can also be written in summation notation as follows:


A recursive formula is great if you already know the number of handshakes for the previous row, but suppose you want to quickly determine the number of handshakes for 120 people. Maybe there is quicker way to determine this.

Consider if there are 4 individuals in the group: A, B, C, and D. Another chart could be made to show the handshakes as follows:

AB     AC     AD
BC     BD
CD

If you take this triangle of handshakes and duplicate it, placing the duplicate next to the original triangle, the resulting shape is a rectangle with n rows and n-1 columns:

AB     AC     AD
BC     BD      **
CD      **       **
 **       **       **

This demonstrates a way to turn the recursive equation into an explicit equation. Multiply the number of rows (n) by the number of columns (n-1) and divide in half:

H = n * (n-1) / 2

If you apply this equation to the original question of 120 people, the answer is:

H = 120 * 119 / 2 = 7,140

If 120 people each shook every other person's hand, there would be a total of 7,140 handshakes! 

Tuesday, February 25, 2014

Requirements Strategery and Interview Propositionating

In order to build a plan for execution of an online dive community, it is crucial to find out the needs of the stakeholders within the community. This means working with divers, dive companies, and boat captains to find out the best way to connect the members of each group to one another. There will, of course, be conflicting priorities, as well as desired functionality that is outside the scope of this class. However the goal will be to find a way to mutually benefit all involved parties.

The first category of stakeholders to engage is divers themselves. They are the majority population of the social network, thus their needs will be our top priority. Divers will be asked to complete an online survey with the following introductory information and questions:

Thank you for taking the time to complete this brief survey. We are working to build an online community for divers, and we would like to find out how we can best connect you to the community. By answering the following 10 questions, you can help guide our implementation process!
  1. Are you currently active in social media such as Facebook, Twitter, etc.? (Yes/No)
  2. Do you use any online diving resources? (Yes/No)
  3. If so, please list your top 3 (_________________)
  4. Do you regularly keep your dive log? (Yes/No)
  5. Do you prefer to buy or rent gear? (Buy/Rent)
  6. When traveling, how important is it to dive? (1: not at all important, 2: not very important, 3: somewhat important, 4: very important)
  7. Which of the following features of a dive community would interest you? (Select all that apply)
    • Logging dives
    • Connecting with local divers/clubs
    • Forums
    • Buying new gear
    • Buying used gear
    • Reading gear reviews
    • Booking charters
    • Booking classes
    • Checking dive conditions
    • Finding dive coordinates
    • Sharing photos
    • Logging certifications
    • Emergency contact information
    • On-call dive support (gear rentals, tank fills, instruction, charters, etc.)
    • Insurance
  8. Of the choices you selected, which 3 are the most important? (Select up to 3)
  9. If a new social network were built that smoothly integrated these items you've selected, do you see yourself taking part in the community? (Yes/No)
  10. If you would like to receive updates on implementation, please provide your email address (survey results will otherwise be kept anonymous): ________________
Thanks again for your participation!
For those divers who do submit their email address for updates, an initial thank you note will be emailed, followed by a monthly newsletter as implementation proceeds.

The next stakeholder to guide the development process is the dive company. For the purposes of this project, we will focus on an established dive club in the local area, as well as several instructors. Individuals will be asked to participate in a brief initial interview, and those interested in continuing will be invited to additional scrums throughout the development process. The initial interview will be conducted face-to-face at a mutually agreed-upon location. The following questions will comprise the bulk of the initial face-to-face interview:
  1. What is your current process for booking dive trips/classes locally?
  2. When you first dive with a new friend/student, how do you ensure they are ready for the level of diving/instruction you are pursuing?
  3. What sort of emergency information do you currently keep for those diving with you?
  4. Upon completion of the dive, what sort of records do you keep? What information goes into those records?
  5. Is there any information you share with divers after a dive? (photos, dive log, etc.)
  6. Do you have any sort of long-term follow-up with divers? What does that involve?
  7. What is the number-one way in which technology could enhance your participation in the dive community?
The goal of this information-gathering session is to find out any current breakdowns in the process, as well as the information needed to facilitate a simpler process. After the initial interview, a thank-you email will be sent to those opting to not continue working throughout the project. Upon project completion, a hand-written note will be sent to the individuals who stayed active with developers through the semester as well as a possible invitation to attend an underwater launch party and become founding members of the community.

Finally, integration of a dive network would not be complete without including boat captains in the community. The interview process would be similar to that of the dive companies and instructors, but the questions will focus more on the needs of captains:
  1. What is your current process for booking dive trips?
  2. Do you have a way to advertise last-minute space available on your boat?
  3. What is your current process for determining your dive location?
  4. When you book dives, are you responsible for ensuring the appropriate expertise/certification of your divers, or does that responsibility fall solely on the companies who book through you?
  5. Do you have a list of instructors you work with, or is that also the responsibility of the dive shop?
  6. What is your process for ensuring all divers are accounted for after a dive?
  7. If a diver turns up missing, what is your emergency action plan?
  8. What is the number-one way in which technology could enhance your participation in the dive community?
The follow-up for boat captains will also follow the the same plan as the dive clubs/instructors, employing post-interview thank-you e-mails for single engagement individuals and more engaging interaction with long-term collaborators.

Thursday, February 20, 2014

Do Not Hesitate to Contact

In conducting a search to find an appropriate project, it is necessary to initiate contact with potential clients. For many introverted or socially awkward programmers, this first attempt at making contact may prove quite daunting. Here is a recommend outline for that initial outreach:

Introduction
Always begin contact with a polite introduction. I usually try to keep it short and sweet, while simultaneously packing in a good amount of information about myself.
"Aloha! I'm Allison, a senior at Hawaii Pacific University, pursuing a double major in Math Education and Computer Science."
Reason
Although it is common in many cultures to spend a great deal of time socializing prior to getting down to the nitty-gritty of business, Americans tend to prefer direct, concise communication. When I give my reason for initiating contact, I try to keep it to one or two sentences. It is important to be both clear and complete in these phrases.
"In my software engineering course this semester, I have been asked to reach out to the community and work with a local non-profit. I was wondering if your organization has any technological needs that might be fulfilled by software development."
Connection
Once you have stated your reason for contacting your target organization, I recommend giving available times as well as contact information, allowing effortless scheduling of your first meeting.
"I would love to speak with you regarding any ideas you might have. I am available Tuesday and Thursday after 1 PM, and can be reached most quickly via cell: ###-###-####.
Closing
Again, the closing should be polite and succinct.
"Thank you for your consideration, and I look forward to meeting with you!
-Allison 
 

Saturday, February 15, 2014

Stakeholders: Military Processing

As stated in a previous post, the military could use a lot of help when it comes to management of paperwork. For those not familiar with some of the problems, posts by classmates Eric Gagnon and Thomas Wassum introduce some other issues aside from those I have experienced. Here are some of the potential stakeholders for a streamlined, virtual paperwork processing program:
  • The military member
While it seems rather vague, the military member referred to here is the one who is being in- or out-processed. Often, once a member arrives at a new duty location, they find out they missed some step of the intricate process, and they have to call back to their previous unit to request support from one of the offices. This would ensure that once a member departed, the paperwork needed was already complete.

  • The mission
Every military member is part of a mission, whether it is directly fighting an enemy, or otherwise supporting those who do. The amount of time spent managing all the paperwork takes an exorbitant amount of time away from the mission. This is the case both for the member being processed as well as the office doing the processing. Streamlining this will give time back to the areas where human decision-making and action is necessary for mission completion.

  • Support services
For those offices where members are supporting our front-line warriors, having the correct information is absolutely critical to getting the job done. If the right information doesn't get to the right office, sometimes it means people don't get where they need to be, and other times it means people don't get paid. Information is an incredibly valuable resource, and expediting correct information will prove to be priceless to our military!
Initially, this program would probably be best built as simply an SMTP-style sending of information. Further development would include integration with the numerous programs already in-use, such as the Defense Travel System, LeaveWeb, myPay, etc.

Stakeholders: Divers' Social Network

As mentioned in a previous post, one of my visions is to create an all-in-one access point for divers. After attending Startup Weekend Honolulu, I had the opportunity to refine the idea with the help of some business mentors. First, we discussed the potential stakeholders and came up with the following:

  • Divers
It is not a hard stretch to imagine divers benefitting from software tailored specifically for them. But what are some of their benefits? As mentioned in the post last week, having a virtual record of dives allows for permanence of one's record. As tourists travel the globe, they are able to have this online way of presenting their certificates and logs to companies where they want to rent equipment. Additionally, they are able to check out dive information for "hot spots" when they travel. 

  • Dive companies
Having a social network of divers is a fantastic way for dive companies to have access to the particular market to which they are catering. Not only does this benefit their advertising, but it also allows them to have hands-free booking of charters and classes, saving time and ensuring integrity of records as they are stored online.

  • Boat captains
When boat captains are making the decisions about where to take their customers for the day, having an all-in-one access point for wave height and dive coordinate information allows for simpler decision-making. This information can also be instantly transmitted to the customers. Furthermore, when the captain launches, the stored dive coordinates can be uploaded into the integrated GPS system, reducing the amount of on-board technology required.
The MVP for such a system could take one of two routes. It could either be a social network developed for the dive community, or it could be an online booking system developed for dive companies. Ultimately, the two aspects will be part of a singular, seamlessly integrated system. Additional functionality includes some of the following components:

  • GPS integration (as mentioned above for boat captains)
  • Dive log management/storage
  • Dive certification management/storage
  • Retail store
  • Events (for local clubs; separate from paid events sponsored by companies)
  • Forums
    • Q&A
    • Community Highlights
    • Gear sales/swaps




Stakeholders: Assignment Tracker

The following information is in reference to a previous post about a software idea for those in the education system. The idea centers around developing a system that may be accessed by smartphone users in the K-12 school system, with stakeholders as follows:

  • Teachers:
Teachers would have the capability to post assignment details and due dates, as well as student grades. This would benefit teachers as they would have a way to ensure communication with parents regarding children's assignments. It would be unreasonable to ask a teacher to call each parent every night to let them know what was expected of the student. This system, however, would facilitate that communication.

  • Parents: 
By having an easily accessible location to find out student assignments, parents can help ensure their children complete required tasks on time. Additionally, as teachers are able to post grades, parents receive communication regarding their child's performance in school at an earlier date than following traditional methods of waiting for report cards and parent/teacher conferences.

  • Students:
One of the essential components of raising a child is training them to become more responsible for themselves. This software allows a parent to slowly let go of the reins, as the parent encourages their child to independently make sure they have completed all assignments. It also provides a transition, as students who are used to using software to manage task completion will find it simpler to use similar software on the job. Numerous companies employ digital methods of time and project management, and this facilitates an early introduction to those processes.
I originally felt this should be an app designed for mobile users, as the number of smartphones in the home, especially in impoverished neighborhoods, outweighs the number of computers. However, upon further consideration, I feel this software would better service the public as a web app, which can be accessed by consumers of all styles of digital media, computers and phones alike.

Additionally, while the MVP contains only the essentials listed above, and may even be boiled down to an even smaller set of essential components, the following is a list of other potential add-ons and upgrades to be considered in the future:

  • Integrated calendar with other dates, such as extra-curricular activities practice/games/tournaments as well as school appointments such as parent/teacher conferences
  • Alert system in case of emergencies at school
  • Alert system in case of child absence
  • Integrated discussion boards for students
  • Integrated assignment submission
  • Integrated activities and assignments



Wednesday, February 5, 2014

Under Da Sea

Problem Description
While the dive community around Oahu is thriving, it is rather difficult to get off-shore coordinates for dive sites. One must currently scour multiple websites, which do not agree with each other regarding the correct coordinates for the wrecks. Additionally, one must visit another site to find whether wave conditions are favorable for diving. Finally, dive logs are still generally kept in paper books that are subject to the water that may splash or drip onto them from dive gear.

System Capabilities
An all-in-one information site for local divers would be an incredible asset to the community. A diver could look up wave heights, then link to dives available in the favorable parts of the island, both shore and boat dives, with coordinates for launch points and mooring lines. Once the dive is completed, the dive can be logged digitally, providing a permanent record, stored in the cloud. Dive shops could log into the system to certify training dives virtually once away from the water.

Business Benefits
Simplifying all these resources into one single-access point would facilitate simpler decision-making prior to diving. Additionally, verified coordinates would allow individuals to know they were going to the right location. The less stress an individual experiences in diving, the likelier they are to have a safe dive. Also, the permanence afforded by a digital dive record ensure data is not lost, thus allowing an individual to prove their capabilities when applying for advanced certifications.

"There's nothing wrong with enjoying looking at the surface of the ocean itself, except that when you finally see what goes on underwater, you realize that you've been missing the whole point of the ocean. Staying on the surface all the time is like going to the circus and staring at the outside of the tent." -Dave Barry


Tuesday, February 4, 2014

My Dog Ate My Homework

Problem Description
While this sounds like a horrible excuse to most, I was actually chased home by an ill-behaved dog as a child, and in the tizzy dropped my homework. Why I was carrying it in my hand rather than zipped in my backpack, I'll never know. Unlike my timid former self, most kids don't lose their homework to a dog, yet there are undoubtedly a number of situations in which children forget, or misplace, or even  ignore their homework. This problem is confounded by the lack of communication from teachers to parents regarding daily assignments. We have entrusted our youngest children with the responsibility of their own education, a trust situation most children are not prepared to handle.

System Capabilities
The proposed system would be similar to the current "Blackboard" system employed by many educational institutions, but would instead be a mobile application. While many lower income families don't have computers in the home, they do often have smart phones through which they could access the system, a feature not well facilitated by Blackboard. In its most basic form, the system would feature a bulletin board where the instructors would post daily assignments for each class. Additional functionality would include the ability to post documents, and even in-app problem sets or assignments. Finally, the capability to post grades through the app, visible only to the student and their parents, would round out this piece of software.

Business Benefits
The benefits of this begin with increased communication, which leads to greater assignment completion. In addition, readily available feedback regarding grades enables parental intervention and correction to occur earlier in the school year rather than waiting for conferences or report cards, all of which can lead to a better education for our youth.

Hurry Up and Wait

Problem Description
One of the most well-known phrases to any military member is "Hurry up and wait." This phrase references the incredible inefficiency often experienced by military members, particularly when in- and out-processing a unit. Part of this inefficiency is due to policies of certain offices regarding business hours as well as insufficient priority placed on customer service. But this also is due in-part to antiquated business practices based on paper copies and in-person appointments. As early as 1994, the phrase "Paperless Air Force" began gaining momentum as the rest of the world was recognizing the importance of going green. Unfortunately, this phrase has been more slogan, less action. 

System Capabilities
I propose development of a system that automates many of the processes involved in entering and exiting one's assigned duty location. Instead of printing out an individual's orders, then having that individual walk around from office to office, providing this date here and that bit of information there, the tasks could be automated. The office issuing these orders could "press a magic button," which would send the required information to the appropriate offices for processing. And instead of those offices having to download this information, the same system could "automagically" populate the correct fields into their respective systems. 

Business Benefits
The benefits of this functionality come in two types. First, the amount of paper wasted as each military member prints multiple copies of his/her orders every time he/she travels would combine to save money (paper, ink) as well as reduce waste. Secondly, the more efficient system would not only save wasted hours as individuals no longer spend time walking to various appointments, but would also save hours for the individuals processing the paperwork, thus greatly reducing the customer service personnel requirement. 

Tuesday, January 28, 2014

Average, Normal, Ordinary, Everyday...Regular Expressions

This week I began a new Software Engineering class in which I am learning Ruby on Rails. I started watching the introductory tutorials on the new language, and I immediately discovered a shortcoming in my education-to-date. I realized I know next to nothing about regular expressions. I was unable to decipher which of the characters I was seeing belonged to these regular expressions, and which were syntactical requirements of Ruby. If anyone else is experiencing similar difficulties, I hope to help your understanding by providing a quick introduction here as well as some resources for further study. Because my background is in Java, I will start there, then transition into Ruby formatting. So without further adieu...

What is a Regular Expression?
This is a way of matching patterns within sequences of characters. For example, I could search a string such as "How much wood could a woodchuck chuck?" for the string "wood." I could do several things...I could find out if the pattern existed at all, I could count the number of occurrences within the string, I could perform the search based on capital letters or lowercase letters, or even a combination. It is even possible to "find and replace" matching patterns.

Why Regular Expressions?
It is simple to consider potential uses of "find and replace" functionality, from simple misspellings of a single word to intricate changes in long documents, such as new contact information for Congress members after post-election. Even more simply, we might just want to search a small amount of input for a particular set of characters. If we were to write basic "beginner" Java code to search the above input string for "wood," it would involve nested loops and if-else statements and storing and backtracking and...well, suffice it to say regular expressions not only condense the amount of code, but also are simpler to understand as they are a higher level way of scripting, thus closer to the way we think.

Java: regex
In Java, the java.util.regex and java.util.matcher packages contain the classes needed to utilize this functionality. To implement you would first build the pattern you want to match, then the test string, and finally the test statement:
Pattern pattern = Pattern.compile("\\d{5}");
Matcher m = pattern.matcher("90210");
boolean bool = m.matches(); 
This defines our pattern as five digits (0-9). Then, builds the test string (90210), and finally tests to see if the test string matches the pattern. This is the equivalent of testing a field to see if it could potentially be a zip code.

Ruby: Regexp
In Ruby, the regular expression looks very similar. Instead of being enclosed in quotation marks, it is enclosed in two forward slashes:
/\d{5}/
Additionally, instead of calling .matcher, you simply call .match.  I'm beginning to like the simplicity already!

I Want to Know More
As I mentioned, these are just the basics. There are much more intricate uses of regular expressions. For more on either language, here are some resources:

Javadoc Tutorial on Regular Expressions
Java Regex Tutorial by vogella.com
Ruby-doc on Regexp

If you have any corrections, suggestions, or questions, please feel free to share your wisdom in the comments!

Sunday, December 15, 2013

It's Finally Final!

After a fantastic semester of playing with Stencyl, gaming.js, and Unity, I have finally put together a basic pinball game. It isn't perfect...the game never actually ends, and the physics have some more tweaking, but...it plays. There have been a lot of changes since the last prototype. In addition to basic bumpers, I have added triangle bumpers, a plunger simulator, drop targets, and lanes for the ball. Also, the game now keeps score, and it counts down your remaining balls. I have learned so much this semester, but as you can see, I have only touched on the basics of writing this game. The world of battles and levels and wormholes I envisioned isn't quite here, but now that I have the foundation, I can continue building upon this fantasy world of which I dream.

In the following video, I discuss my vision and strategy as I build the game, and there is a brief clip at the end of the game in action:


If you would like to try the game for yourself, please feel free to play it online.

I hope you enjoy, and Happy Holidays!!

Thursday, December 12, 2013

Pinball Masters, Prototype #4

I have finally gotten my flippers working in Unity! It took a while, and after trying "Lerp"ing and "Slerp"ing (and maybe even a little twerking!?), I found a YouTube video from PushyPixels that simply utilized "rotateAround".  Since I am working in JavaScript, variable declaration was done a little differently, but nothing too difficult to figure out. The next issue I had was that they were using the mouse as a controller, and I wanted to use "D" for the left flipper and "K" for the right flipper, so I gave the object tags, and paired them with the GetKeyUp and GetKeyDown events. Finally, I stopped watching at the point in the video where they were still struggling with trying to get the left flipper to move correctly. I simply utilized their script, changing the positive/negative values on "maxAngle" throughout the code for the left flipper, and it worked swimmingly.

So here it is, prototype number four

And if you would like to check out the video by PushyPixels, you can find it here.