PipelineJekyll2014-04-16T08:45:08-04:00http://pipeline.brilliantfantastic.com/Jamie Wrighthttp://pipeline.brilliantfantastic.com/jamie@brilliantfantastic.comhttp://pipeline.brilliantfantastic.com/articles/week-22014-04-14T00:00:00-04:002014-04-14T00:00:00-04:00Jamie Wrighthttp://pipeline.brilliantfantastic.comjamie@brilliantfantastic.com<h2 id="week-2">Week 2</h2>
<p>Uncle Sam stole last week. I will send them a bill.</p>
<p>I worked on tweaking the design a little for the week view so that it is tolerable to deal with. I created a header that contains the basic navigation layout with a fake avatar (thanks <a href="http://www.placecage.com/">PlaceCage</a>).</p>
<p>Here are some of the libraries I introduced this week:</p>
<ul>
<li><a href="http://bourbon.io">Bourbon</a> - Contains common Sass mixins like border-radius, font-face, etc. so you don’t have to use vendor prefixes.</li>
<li><a href="http://neat.bourbon.io">Neat</a> - Grid framework built on Bourbon.</li>
<li><a href="http://bitters.bourbon.io">Bitters</a> - Default styles built on Bourbon.</li>
</ul>
<p>All of these libraries were installed using <a href="http://bower.io">Bower</a>. Here is the snippet added to the <code>bower.json</code> file:</p>
<pre><code class="language-js">"neat": "~1.5.1",
"bitters": "~0.9.3"
</code></pre>
<p>The header was generated using the navigation header from <a href="http://refills.bourbon.io/">Refills</a>. Refills are reusable components built on top of, you guessed it, Bourbon.</p>
<p>Here is the progression of the interface over the last week. It is definately not where I want it but it is at least tolerable to look at. (You can click on the image to see the full size)</p>
<ol>
<li>
<p>The beginning. No styles applied whatsoever.
<a href="/images/UI-step1.png"><img src="/images/UI-step1.png" alt="the start" title="The start" /></a></p>
</li>
<li>
<p>Added Bourbon Neat grid and placed main content in a container which effectively centered the content and expanded the inputs to the full content width.
<a href="/images/UI-step2.png"><img src="/images/UI-step2.png" alt="step 2" title="Step 2" /></a></p>
</li>
<li>
<p>Started on the header and placed a logo area floating left and an avatar area floating right.
<a href="/images/UI-step3.png"><img src="/images/UI-step3.png" alt="step 3" title="Step 3" /></a></p>
</li>
<li>
<p>Brought in a <a href="https://typekit.com/fonts/adage-script">font from Typekit</a> and a <a href="http://subtlepatterns.com/whitey/">background from SubtlePatterns</a> just to add a little bit of style. Styled the text inputs to play around with.
<a href="/images/UI-step4.png"><img src="/images/UI-step4.png" alt="step 4" title="Step 4" /></a></p>
</li>
<li>
<p>The end result after a little tweaking.
<a href="/images/UI-step5.png"><img src="/images/UI-step5.png" alt="the end" title="The end" /></a></p>
</li>
</ol>
<h2 id="projections-for-the-upcoming-week">Projections for the upcoming week</h2>
<p>I am severely falling behind. I wanted to be finished with the web app in April so I can work on the iPhone application in May. I need to catch up in the next few weeks.</p>
<p>This next week I am going to work on <a href="https://github.com/brilliantfantastic/pipeline/issues/10">creating a project</a> and <a href="https://github.com/brilliantfantastic/pipeline/issues/1">retrieving the projects from Freshbooks</a>. I need to work on <a href="https://github.com/brilliantfantastic/pipeline/issues/12">assigning a project to a week</a> and if I have time, I will work on <a href="https://github.com/brilliantfantastic/pipeline/issues/9">assigning an estimate to a project</a>. I need to catch up.</p>
<p><em>Last week’s projection</em>: 15 hours</p>
<p><em>Last week’s actual</em>: 10 hours <img class="emoji" title=":disappointed:" alt=":disappointed:" src="https://assets.github.com/images/icons/emoji/disappointed.png" height="20" width="20" align="absmiddle" /></p>
<p><em>This week’s projection</em>: 25 hours</p>
<p><a href="http://pipeline.brilliantfantastic.com/articles/week-2/">Week 2</a> was originally published by Jamie Wright at <a href="http://pipeline.brilliantfantastic.com">Pipeline</a> on April 14, 2014.</p>http://pipeline.brilliantfantastic.com/articles/week-12014-04-07T00:00:00-04:002014-04-07T00:00:00-04:00Jamie Wrighthttp://pipeline.brilliantfantastic.comjamie@brilliantfantastic.com<h2 id="week-1">Week 1</h2>
<p>Week 1 was a cluster fuck.</p>
<p>I was able to complete one simple feature (<a href="https://github.com/brilliantfantastic/pipeline/issues/13">13</a>). </p>
<p>The code that ensures at least three projects are available for someone to enter their projects is contained within the <code>WeekController</code>. </p>
<pre><code class="language-coffeescript"># app/controllers/week.coffee
WeekController = Ember.ObjectController.extend
projects: (->
projects = @get('model.projects')
numberOfProjects = 3 - projects.get('length') # ensure at least 3 projects are displayed
if numberOfProjects > 0
period = @get('model')
[1..numberOfProjects].forEach => projects.pushObject(@store.createRecord('project', {period: period}))
projects
).property('model.projects')
</code></pre>
<p>I originally placed it in the model but it does not make sense to have 3 empty projects attached to the
model at all times so I moved it to the controller.</p>
<p>Here is a unit test to ensure that there are three projects that a user should start out with:</p>
<pre><code class="language-coffeescript">`import { test, moduleFor } from 'ember-qunit'`
`import WeekController from 'appkit/controllers/week'`
moduleFor 'controller:week', "Unit - WeekController",
setup: ->
store = { createRecord: -> {} }
@subject().set 'store', store
model = { projects: Ember.A() }
@subject().set 'model', model
test "projects initialize to 3 instances", ->
projects = @subject().get('projects')
equal projects.get('length'), 3
</code></pre>
<p>Pull request: <a href="https://github.com/brilliantfantastic/pipeline/pull/14">https://github.com/brilliantfantastic/pipeline/pull/14</a></p>
<h2 id="projections-for-the-upcoming-week">Projections for the upcoming week</h2>
<p>Welp. It’s tax time. This means that I will have even less time to work on Pipeline as I had hoped. I need to get
my accountant some tax information that he has been asking me for for weeks now.</p>
<p>This brings me to my next point.</p>
<p>If you have a desire to build product as I do, do not start off by making consulting a stepping stone. There is so many
time constraints when you are building a business that get in the way of building your product. You have to find customers,
do speaking engagements, file taxes, find employees or sub-contractors, review contracts, etc., etc.</p>
<p>It is a better stepping stone in my opinion to find a great job at a great company. Work with talented people. Surround yourself
with other developers, designers, and creatives. It will inspire your product and you have people to bounce ideas off of.</p>
<p>This week I am going to work on the design. I feel like I have gotten far enough that I need to add some polish to the main week page so I stay motivated to work on it. It is always best for motivation to be starring at some pretty.</p>
<p><em>Last week’s projection</em>: 25 hours</p>
<p><em>Last week’s actual</em>: 12 hours <img class="emoji" title=":disappointed:" alt=":disappointed:" src="https://assets.github.com/images/icons/emoji/disappointed.png" height="20" width="20" align="absmiddle" /></p>
<p><em>This week’s projection</em>: 15 hours</p>
<p><a href="http://pipeline.brilliantfantastic.com/articles/week-1/">Week 1</a> was originally published by Jamie Wright at <a href="http://pipeline.brilliantfantastic.com">Pipeline</a> on April 07, 2014.</p>http://pipeline.brilliantfantastic.com/articles/in-the-beginning-post2014-03-31T00:00:00-04:002014-03-31T00:00:00-04:00Jamie Wrighthttp://pipeline.brilliantfantastic.comjamie@brilliantfantastic.com<blockquote>
<p>Between the day your child is born, and the time he or she turns 18, you get 940 Saturdays. That’s It.</p>
</blockquote>
<p>Time is a very sacred resource that every human on the planet has a limit of. You cannot buy more time no matter how rich you are. You do not get a redo on what you have spent your time on, no matter how smart you are. </p>
<p>I want to always ensure that I am spending my time here on the most important stuff to me. I want to ensure that I can utilize my time in such a way that I can take advantage of the time I have with my family.
Time has always been the thing that I want to optimize. It’s the only resource we can’t renew.</p>
<p>I do not always spend my time wisely. I wanted to build a system that would help me do that, guide me along the way, and tell me how I did so I can improve.</p>
<h2 id="the-idea">The Idea</h2>
<p>The idea behind Pipeline is simple. Plan your week by assigning buckets of hours to certain projects that are important to you. Each day you can then let Pipeline know how many hours you have spent on each project.
Pipeline will collect those hours and guide you throughout the week. It will say things like <code>Great job on Project X!</code> and <code>You should probably get started on Project Y.</code>. This will help guide you through your week and
at the end of the week, you will get a report of how you did so you can help plan the next week. If you already track your time using <a href="http://freshbooks.com">Freshbooks</a> or <a href="http://getharvest.com">Harvest</a> then the
tracking part should come for free. I plan on adding more 3rd party time trackers as time goes on.</p>
<h2 id="why-this-project">Why this project?</h2>
<p>I have spent a lot of my time during the last few years working on side projects that I have abandoned. Projects that I lost interest on or I was too late with. I have even recently abondoned a project about 2 weeks ago before I started Pipeline. </p>
<p>I have had the idea for Pipeline a few years ago but I never knew if it would work for me. To be honest, I still don’t. I did however run an experiment for a couple of weeks by mimicing Pipeline on pen and paper and it was
extremely helpful. I was more focused and I eliminated the stuff that did not help me reach my end goals. So I am going forward with it.</p>
<p><a href="http://amirrajan.net">Amir Rajan</a> has been a big influence on me sharing my experiences. Reading about <a href="http://amirrajan.net/a-dark-room/">his Dark Room experience</a> really influenced this.
I am sharing my experiences in this blog along the way for a few reasons.</p>
<ol>
<li>To help me be accountable and stay on track</li>
<li>To share my source code with anyone that is interested. That may be clients, customers, or other developers.</li>
<li>To hopefully generate buzz and awareness for the project before it gets released.</li>
</ol>
<h2 id="when">When</h2>
<p>My goal is to launch a web application and an iPhone application by May 2014. I am dedicating at least 25 hours per week to this project. It will be tough. I plan on doing all the design and development of both of the applications. I will
only release quality stuff. </p>
<p>The application will be a SaSS application that I will charge for at the end. I plan on keeping the code open source. People will be able to clone and run their own Pipeline instances on their own if they wish.
I will accept pull requests if the feature is aligned with the overall goals for pipeline.</p>
<p>I hope you follow along on my journey. If you would rather get notifications of new posts you can subscribe to the <a href="/feed.xml">RSS feed</a> or <a href="/about/#newsletter">sign up for the newsletter</a>. Newsletter subscribers will get a few extra bonuses such as early invites,
discounts when Pipeline is launched, revenue stats, and influence with some of the design and development of the application.</p>
<p>Wish me luck.</p>
<p><a href="http://pipeline.brilliantfantastic.com/articles/in-the-beginning-post/">In the Beginning...</a> was originally published by Jamie Wright at <a href="http://pipeline.brilliantfantastic.com">Pipeline</a> on March 31, 2014.</p>