<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jamie&#039;s Blog &#187; project management</title>
	<atom:link href="http://www.angelforge.org/wordpress/tags/project-management/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.angelforge.org/wordpress</link>
	<description>My life is words.</description>
	<lastBuildDate>Sat, 28 Jan 2012 04:35:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Philly Give Camp 2010: Part 5</title>
		<link>http://www.angelforge.org/wordpress/events/philly-give-camp-2010-part-5/</link>
		<comments>http://www.angelforge.org/wordpress/events/philly-give-camp-2010-part-5/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 10:00:13 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[events]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[camp]]></category>
		<category><![CDATA[erb]]></category>
		<category><![CDATA[haml]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[MECA]]></category>
		<category><![CDATA[PAAL]]></category>
		<category><![CDATA[Philly Give Camp]]></category>
		<category><![CDATA[Philly Give Camp 2010]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.angelforge.org/wordpress/?p=2695</guid>
		<description><![CDATA[The Builder To keep the teams working as separately as possible with the least interference, we decided that the PAAL Builder, the tool used to build student schedules and lessons, would be completely HTML and Javascript. That means that there would be no server-side code, no ERB or HAML template files, and no Rails special [...]]]></description>
			<content:encoded><![CDATA[<h2>The Builder</h2>
<p>To keep the teams working as separately as possible with the least interference, we decided that the PAAL Builder, the tool used to build student schedules and lessons, would be completely HTML and Javascript. That means that there would be no server-side code, no ERB or HAML template files, and no Rails special sauce. This allowed the designers to work without developer support, and allowed developers who did not know Ruby or Rails to work solely on Javascript code. The Builder would interact with the API via ajax calls with JSON responses. A simple format for the response envelope was designed:</p>
<pre class="brush: jscript; title: ; notranslate">

{
version: 0.1,
error: '',

data: {
  task: {
    id: 1,
    name: 'Brush Teeth'
  }
}
}
</pre>
<p>This is an example response upon the creation of a task with the name &#8220;Brush Teeth.&#8221; On each request, the error property would be checked to make sure that it was blank. The version property would also allow changing the API in the future without breaking the application.</p>
<p>In the previous post I discussed the problems of having a simple API. One common scenario is to create a task and link it with a parent task. This would happen if you wanted to create a task like &#8220;Brush Teeth&#8221; and steps underneath it like &#8220;get toothpaste,&#8221; &#8220;get toothbrush&#8221;, &#8220;brush front teeth.&#8221; Here is the code necessary to do that (I am just posting the necessary jQuery calls rather than the wrapper functions I wound up writing):</p>
<pre class="brush: jscript; title: ; notranslate">
// create the task via a POST
$.post(
  '/tasks',
  taskData,
  function(envelope, textStatus, request) {
    if ( envelope.error != '' ) {
      // error
    }
    else {
      // on success, tie the newly created task
      // to a parent task
      function callbackSuccess(newTask, envelope) {
        $.post(
          '/task_parents',
          {
            task_parent: {
              task_id: newTask.id,
              task_parent_id: some_parent_id
            }
          },
          function(innerEnvelope, textStatus, request) {
            if ( innerEnvelope.error != '' ) {
              // error
            }
            else {
              // success!
            }
          },
          'json'
        );
      }

      callbackSuccess(envelope.data.task, envelope);

    }
  },
  'json'
);
</pre>
<p>Wrapper functions make this simpler to understand, but the fact that it requires two posts troubled me. Still, I avoided adding a new method to the API to do this all in one step.</p>
<p>When we were working on the project, the designers and another developer worked mostly on basic UI. I then worked on &#8220;installing the plumbing&#8221; as I put it, making all the API calls and using the live data. A lot of this plumbing went into the product after Give Camp. One aspect of the project I found hard after Give Camp was figuring out how a feature or UI element would work. Often, I&#8217;d be hooking up the plumbing, but be unsure of whether they wanted a stand-up shower or a bathtub. Both would get the job done, but I wasn&#8217;t sure what they had in mind, and it wasn&#8217;t clear from the design.</p>
<p>Part of this was due to the fact that I didn&#8217;t have the most recent design. We switched versioning systems two times during the course of Give Camp, and repository locations 3-4 times. Part of this was due to lack of notes or obvious visual stimuli. In general, after Give Camp was over, it was hard to coordinate with each other.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.angelforge.org/wordpress/events/philly-give-camp-2010-part-5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Philly Give Camp 2010: Part 2</title>
		<link>http://www.angelforge.org/wordpress/events/philly-give-camp-2010-part-2/</link>
		<comments>http://www.angelforge.org/wordpress/events/philly-give-camp-2010-part-2/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 10:00:58 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[events]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[autism]]></category>
		<category><![CDATA[camp]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[MECA]]></category>
		<category><![CDATA[PAAL]]></category>
		<category><![CDATA[Philly Give Camp]]></category>
		<category><![CDATA[Philly Give Camp 2010]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[unconference]]></category>

		<guid isPermaLink="false">http://www.angelforge.org/wordpress/?p=2681</guid>
		<description><![CDATA[Dani led us into a different conference room from the main room that most of the other conference attendees stayed in the entire weekend. We met MECA members Gloria, Kaori, and Avi who teach autistic individuals how to function independently. They discussed some of their current work and successes, including the Preparing Adolescents for Adult [...]]]></description>
			<content:encoded><![CDATA[<p>Dani led us into a different conference room from the main room that most of the other conference attendees stayed in the entire weekend. We met <a href="http://mecaautism.org/">MECA</a> members Gloria, Kaori, and Avi who teach autistic individuals how to function independently.  They discussed some of their current work and successes, including the Preparing Adolescents for Adult Life (PAAL) program. </p>
<p>There a number of programs that are used to make an individual&#8217;s life easier. One, used by an individual with speech impairment, is a Powerpoint presentation featuring images of common items. Clicking on an image plays a sound file that represents the image. In this way, the individual can communicate with others. </p>
<p>Another program is a sort of flash-card program. This program helps guide a student through daily tasks by breaking the tasks into granular steps. The program also provides a choice option that prompts the user to choose among a set number of options. Although the user program is fairly effective, the authoring application for these files is cumbersome to use. Two drawbacks of this program exist: </p>
<ol>
<li>There is no monitoring component built in. Monitoring of students is done on paper.</li>
<li>There is no schedule component to the application, which would provide the students a task list of activities for the day</li>
</ol>
<p>MECA wanted a program that not only was easy to use for students, but also a program easy to use for instructors to author lessons. Additionally, a program that incorporated a task-list and monitoring component would be especially helpful.</p>
<p>While the staff explained some of the requirements, we were joined by other team members: Brian, Erik, Sebastian, and then Joe. There was another person who came to help during the night but he didn&#8217;t come on subsequent days. Much of that first Friday evening was spent just gathering requirements and attempting to fully understand the problem. </p>
<p>When we finally thought we had enough to start, it was around eight or nine at night.  In the interest of time, we decided we would not work on a monitoring component. We decided to break the remaining problem into three components:</p>
<ul>
<li>A REST API written using Rails</li>
<li>A HTML/Ajax builder web application</li>
<li>An iPhone user application</li>
</ul>
<p>The next post will discuss the reason for this split.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.angelforge.org/wordpress/events/philly-give-camp-2010-part-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Six-sigma Greenbelt</title>
		<link>http://www.angelforge.org/wordpress/mba/six-sigma-greenbelt/</link>
		<comments>http://www.angelforge.org/wordpress/mba/six-sigma-greenbelt/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 00:57:11 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[mba]]></category>
		<category><![CDATA[green belt]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[six sigma]]></category>

		<guid isPermaLink="false">http://www.angelforge.org/wordpress/?p=2271</guid>
		<description><![CDATA[I received a six-sigma greenbelt via a project management class this summer. Among other things, we had to develop control charts for various processes and learn about how to diagnose processes that were out of control.]]></description>
			<content:encoded><![CDATA[<p>I received a six-sigma greenbelt via a project management class this summer. Among other things, we had to develop control charts for various processes and learn about how to diagnose processes that were out of control. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.angelforge.org/wordpress/mba/six-sigma-greenbelt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scope Creep</title>
		<link>http://www.angelforge.org/wordpress/gtd/scope-creep/</link>
		<comments>http://www.angelforge.org/wordpress/gtd/scope-creep/#comments</comments>
		<pubDate>Fri, 06 Mar 2009 23:50:10 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[GTD]]></category>
		<category><![CDATA[creep]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[software design]]></category>

		<guid isPermaLink="false">http://www.angelforge.org/wordpress/?p=793</guid>
		<description><![CDATA[At work, I am fighting intense scope creep on nearly all fronts! It is tough to decide when to say no, especially when you have been encouraged to focus more on customer satisfaction than strict procedure. I have been known to fall into similar patterns in personal projects. They tend to get bloated in totally [...]]]></description>
			<content:encoded><![CDATA[<p>At work, I am fighting intense scope creep on nearly all fronts! It is tough to decide when to say no, especially when you have been encouraged to focus more on customer satisfaction than strict procedure.</p>
<p>I have been known to fall into similar patterns in personal projects. They tend to get bloated in totally unnecessary places while key features remain unimplemented. I blame the curse of a modern attention-span!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.angelforge.org/wordpress/gtd/scope-creep/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

