<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-1871913243451330146</atom:id><lastBuildDate>Thu, 16 Feb 2012 07:56:59 +0000</lastBuildDate><category>scm</category><category>marketing</category><category>web applications</category><category>bug tracking</category><category>tools</category><category>freelance</category><category>unix</category><category>spreadsheets</category><title>Bug Tracking</title><description>Simple Bug Tracking with TrackJumper</description><link>http://blog.trackjumper.com/</link><managingEditor>noreply@blogger.com (Damon)</managingEditor><generator>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TrackJumper" /><feedburner:info uri="trackjumper" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1871913243451330146.post-6184843137266223040</guid><pubDate>Fri, 21 Jan 2011 19:24:00 +0000</pubDate><atom:updated>2011-07-29T07:50:38.779-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">scm</category><category domain="http://www.blogger.com/atom/ns#">tools</category><category domain="http://www.blogger.com/atom/ns#">bug tracking</category><title>Bug Tracking Work Flow with Git</title><description>&lt;div&gt;
At TrackJumper, one of our goals is to create bug tracking software that allows teams to work the way they want to while providing the structure that helps keep them organized. It's not always an easy task. The more helpful and specific we get with the features we add, the more TrackJumper becomes "opinionated".&lt;/div&gt;
&lt;div&gt;
That's why our "priority" field is really a generic "status" field that you can change to suit your needs. It's why we don't encourage any preconceived notions about how you split your project up - we just give you "buckets". You can assign your buckets to users, releases, types of bugs, or anything else you come up with. We use Git, so we create a bucket for each Git branch.&lt;/div&gt;
&lt;div&gt;
It's simple, but effective. We create a git branch to try out some UI experiments, implement a new feature, or fix a complex bug. As soon as we create that branch in git, we create a corresponding bucket in TrackJumper. When the bucket is empty, we can be pretty sure it's about time to merge it back into the master branch. We then merge, delete the old branch (if appropriate) and it's bucket (if appropriate).&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
We'd love to hear how you prefer to organize your bugs. Email us at&amp;nbsp;&lt;a href="mailto:info@trackjumper.com"&gt;info@trackjumper.com&lt;/a&gt;&amp;nbsp;&amp;nbsp;or leave a comment below.&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1871913243451330146-6184843137266223040?l=blog.trackjumper.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/TrackJumper/~3/koPjTxjIHU4/bug-tracking-work-flow-with-git.html</link><author>noreply@blogger.com (Damon)</author><thr:total>0</thr:total><feedburner:origLink>http://blog.trackjumper.com/2011/01/bug-tracking-work-flow-with-git.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1871913243451330146.post-6692051649409062454</guid><pubDate>Tue, 12 Oct 2010 15:35:00 +0000</pubDate><atom:updated>2010-10-12T11:16:36.360-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">tools</category><category domain="http://www.blogger.com/atom/ns#">marketing</category><title>In Defense of Chargify</title><description>&lt;a href="http://chargify.com/"&gt;Chargify&lt;/a&gt;, the company who makes a clean and powerful API to help companies with their billing, has just upped their prices - a lot. Gone is the free plan, and in its place a $99/month option. (Also available to small existing customers is a $39/month plan).&lt;br /&gt;
&lt;br /&gt;
When we built &lt;a href="http://trackjumper.com/"&gt;TrackJumper&lt;/a&gt;, we looked at Chargify. We even implemented it into an early version of the product. In the end, we decided not to use it because Braintree's API got us the basics for free. Not going with Chargify slowed us down, and limits our ability to rapidly change our billing system. But that's a trade-off we were comfortable with, and it's been working for us.&lt;br /&gt;
&lt;br /&gt;
The &lt;a href="http://news.ycombinator.com/item?id=1780348"&gt;reactions to the price increase&lt;/a&gt; on &lt;a href="http://news.ycombinator.com/item?id=1781156"&gt;Hacker News&lt;/a&gt;, for example, are pretty much universally negative. Some going as far as to accuse Chargify's leadership of strong arming their customers or just generally not doing "the right thing".&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
But lets look at this in what I think is a more reasonable light:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Chargify was underpriced.&lt;/b&gt;&lt;br /&gt;
Chargify has a great product. The intricacies of billing schemes are not trivial to implement and I don't think it's unreasonable to say that using Chargify can save companies thousands of dollars in development cost at a point where cash is likely to be in short supply.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Chargify offers great service.&lt;/b&gt;&lt;br /&gt;
Customer service is not free - and you want good customer service for your billing system. Chargify was/is offering outstanding customer service. I know this because I had some questions about their Braintree integration. I opened a ticket and the next thing I knew, I received a phone call from their CEO, Lance Walley. We couldn't fix the problem (that Chargify doesn't yet support Braintree's V2 API), but he sure as heck tried to find a solution.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Chargify has been very transparent.&lt;/b&gt;&lt;br /&gt;
Lance &lt;a href="http://twitter.com/lancewalley"&gt;routinely tweets&lt;/a&gt; about how many customers Chargify has and what their business is up to. He's all over the customer support tickets. As I said before, he will call you and tell you all about what they're doing if you make the slightest effort to contact them. This leads to the crux of my argument:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;You must do your own due&amp;nbsp;diligence.&lt;/b&gt;&lt;br /&gt;
Spending even a little time investigating Chargify would have told you that they are not making tons of money yet. That their product is free for almost all of their users. That they haven't raised significant amounts of money (at least not publicly). Is it surprising that a new CEO would come in and increase prices in this situation? Of course not. And if you'd checked, it think it's pretty likely that they'd have told you as much. I know I was told exactly that.&lt;br /&gt;
&lt;br /&gt;
If this price increase was a surprise, you weren't paying attention. If your business depends on&amp;nbsp;Chargify, and you can't afford a price increase, shame on you for not doing your homework.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;On the other hand...&lt;/b&gt;&lt;br /&gt;
I'm not going to let them off scott free. Going from zero to $99 per month is a pretty drastic step -&amp;nbsp;especially&amp;nbsp;for businesses who aren't yet profitable. They could probably have done a better job at actively communicating their plans (rather than just telling those those who asked). This transition will cause a lot of cost and problems for their existing customers. Chargify owes it to them to help smooth that transition.&lt;br /&gt;
&lt;br /&gt;
And the list of benefits they touted as they announced the price increase was weak -very, very weak. I'd have preferred that they said, "Hey, we're undercharging for our fantastic product, and we need to focus on our core business, so we're raising prices".&lt;br /&gt;
&lt;br /&gt;
Bottom line - don't overlook Chargify because of a poorly handled transition. There is a bigger picture - look at all of it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1871913243451330146-6692051649409062454?l=blog.trackjumper.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/TrackJumper/~3/AfXpTIDqysQ/in-defense-of-chargify.html</link><author>noreply@blogger.com (Damon)</author><thr:total>10</thr:total><feedburner:origLink>http://blog.trackjumper.com/2010/10/in-defense-of-chargify.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1871913243451330146.post-4724747325468706041</guid><pubDate>Thu, 07 Oct 2010 16:48:00 +0000</pubDate><atom:updated>2010-10-07T09:48:48.413-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">scm</category><category domain="http://www.blogger.com/atom/ns#">tools</category><category domain="http://www.blogger.com/atom/ns#">unix</category><title>Show the Current Git Branch in Your Unix Prompt</title><description>I picked this tip up from &lt;a href="http://twitter.com/xshay"&gt;Xavier Shay&lt;/a&gt; (who happens to be a phenomenal instructor on all things &lt;a href="http://www.dbisyourfriend.com/"&gt;database related&lt;/a&gt;). It's a simple function that will save you the hassle of continually typing "git status" to see what branch you're on. I've added a slight modification to keep it quiet when not in a git repo.&lt;br /&gt;
&lt;br /&gt;
Add this code to your .bash_login (or whichever config file it is that you use):&lt;br /&gt;
&lt;style&gt;
pre.textmate-source {
 margin: 0;
 padding: 3px;
 font-family: Monaco, monospace;
 font-size: 11px;
 line-height: 1.3em;
 word-wrap: break-word;
 white-space: pre;
 white-space: pre-wrap;
 white-space: -moz-pre-wrap;
 white-space: -o-pre-wrap;
}

pre.textmate-source.damon_rails {
 color: #FFFFFF;
 background-color: #070913;
}

pre.textmate-source .linenum {
 width: 75px;
 padding: 0.1em 1em 0.2em 0;
 color: #888;
 background-color: #eee;
}
pre.textmate-source.damon_rails span {
   padding-top: 0.2em;
   padding-bottom: 0.1em;
}
pre.textmate-source.damon_rails ::selection {
 background-color: #404040;
}
/* Comment */
pre.textmate-source.damon_rails .comment {
 color: #AEAEAE;
 font-style: italic;
}

/* Constant */
pre.textmate-source.damon_rails .constant {
 color: #EEF13F;
}

/* Entity */
pre.textmate-source.damon_rails .entity {
 color: #FF5A00;
}

/* Keyword */
pre.textmate-source.damon_rails .keyword {
 color: #FFAF19;
}

/* Storage */
pre.textmate-source.damon_rails .storage {
 color: #CA4EED;
}

/* String */
pre.textmate-source.damon_rails .string, pre.textmate-source.damon_rails .meta_verbatim {
 color: #70DA1B;
}

/* Support */
pre.textmate-source.damon_rails .support {
 color: #709BDB;
}

/* Variable */
pre.textmate-source.damon_rails .variable {
 color: #FFFFFF;
}

/* Superclass */
pre.textmate-source.damon_rails .entity_other_inherited-class {
 color: #C73600;
}

/* meta.tag */
pre.textmate-source.damon_rails .meta_tag, pre.textmate-source.damon_rails .meta_tag .entity {
 color: #9AA28B;
}
 
&lt;/style&gt;&lt;br /&gt;
&lt;pre class="textmate-source damon_rails"&gt;&lt;span class="source source_shell"&gt;&lt;span class="meta meta_function meta_function_shell"&gt;&lt;span class="storage storage_type storage_type_function storage_type_function_shell"&gt;function&lt;/span&gt; &lt;span class="entity entity_name entity_name_function entity_name_function_shell"&gt;parse_git_dirty&lt;/span&gt; &lt;span class="meta meta_scope meta_scope_group meta_scope_group_shell"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_group punctuation_definition_group_shell"&gt;{&lt;/span&gt;
  git diff --quiet  &lt;span class="keyword keyword_operator keyword_operator_redirect keyword_operator_redirect_shell"&gt;2&amp;gt;&lt;/span&gt; /dev/null &lt;span class="keyword keyword_operator keyword_operator_pipe keyword_operator_pipe_shell"&gt;||&lt;/span&gt; &lt;span class="support support_function support_function_builtin support_function_builtin_shell"&gt;echo&lt;/span&gt; &lt;span class="string string_quoted string_quoted_double string_quoted_double_shell"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_shell"&gt;"&lt;/span&gt; *&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_shell"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="punctuation punctuation_definition punctuation_definition_group punctuation_definition_group_shell"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="meta meta_function meta_function_shell"&gt;&lt;span class="storage storage_type storage_type_function storage_type_function_shell"&gt;function&lt;/span&gt; &lt;span class="entity entity_name entity_name_function entity_name_function_shell"&gt;parse_git_branch&lt;/span&gt; &lt;span class="meta meta_scope meta_scope_group meta_scope_group_shell"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_group punctuation_definition_group_shell"&gt;{&lt;/span&gt;
  git branch --no-color &lt;span class="keyword keyword_operator keyword_operator_redirect keyword_operator_redirect_shell"&gt;2&amp;gt;&lt;/span&gt; /dev/null &lt;span class="keyword keyword_operator keyword_operator_pipe keyword_operator_pipe_shell"&gt;|&lt;/span&gt; sed -e &lt;span class="string string_quoted string_quoted_single string_quoted_single_shell"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_shell"&gt;'&lt;/span&gt;/^[^*]/d&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_shell"&gt;'&lt;/span&gt;&lt;/span&gt; -e &lt;span class="string string_quoted string_quoted_double string_quoted_double_shell"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_shell"&gt;"&lt;/span&gt;s/* \(.*\)/(\1&lt;span class="string string_interpolated string_interpolated_dollar string_interpolated_dollar_shell"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_shell"&gt;$(&lt;/span&gt;parse_git_dirty&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_shell"&gt;)&lt;/span&gt;&lt;/span&gt;)/&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_shell"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="punctuation punctuation_definition punctuation_definition_group punctuation_definition_group_shell"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;

&lt;span class="storage storage_modifier storage_modifier_shell"&gt;export&lt;/span&gt; PS1=&lt;span class="string string_quoted string_quoted_single string_quoted_single_shell"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_shell"&gt;'&lt;/span&gt;\[\033[33;40m\]\@ \u@\h: \w$(parse_git_branch)&amp;gt;\[\033[0m\]&lt;span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_shell"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
Then restart your terminal and you'll see the name of your curent git branch in parentheses after the path. It even adds a * to show that you're in a "dirty" state.&lt;br /&gt;
&lt;br /&gt;
This&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="textmate-source damon_rails"&gt;01:27 PM damoncali@macbookpro: ~/apps/ninthyard&amp;gt;&lt;/pre&gt;&lt;br /&gt;
becomes&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="textmate-source damon_rails"&gt;01:27 PM damoncali@macbookpro: ~/apps/ninthyard(master)&amp;gt;&lt;/pre&gt;&lt;br /&gt;
or this, if you're in a dirty state&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="textmate-source damon_rails"&gt;01:27 PM damoncali@macbookpro: ~/apps/ninthyard(master *)&amp;gt;&lt;/pre&gt;&lt;br /&gt;
Sometimes it's the little things that make your day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1871913243451330146-4724747325468706041?l=blog.trackjumper.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/TrackJumper/~3/Z6Oix03blBk/show-current-git-branch-in-your-unix.html</link><author>noreply@blogger.com (Damon)</author><thr:total>0</thr:total><feedburner:origLink>http://blog.trackjumper.com/2010/10/show-current-git-branch-in-your-unix.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1871913243451330146.post-4606132110783985518</guid><pubDate>Wed, 06 Oct 2010 15:14:00 +0000</pubDate><atom:updated>2010-10-06T08:14:20.194-07:00</atom:updated><title>Using TextMate Syntax Highlighting in your Blogger Blog</title><description>When writing about code in your Blogger blog, it's helpful to be able to highlight the syntax to keep things readable. Doing this in CSS is a chore, but luckly, &lt;a href="http://macromates.com/"&gt;TextMate&lt;/a&gt; will do it for you.&lt;br /&gt;
&lt;br /&gt;
Turning&lt;br /&gt;
&lt;br /&gt;
@ideas = Idea.think_something&lt;br /&gt;
@ideas.each do |idea|&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;idea.build&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;idea.try&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if idea.good?&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;idea.keep&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;idea.trash&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
into&lt;br /&gt;
&lt;style type="text/css"&gt;
/* Stylesheet generated from TextMate theme
 *
 * Damon Rails
 * 
 *
 */

/* Mostly to improve view within the TextMate HTML viewer */

pre.textmate-source {
 margin: 0;
 padding: 3px;
 font-family: Monaco, monospace;
 font-size: 11px;
 line-height: 1.3em;
 word-wrap: break-word;
 white-space: pre;
 white-space: pre-wrap;
 white-space: -moz-pre-wrap;
 white-space: -o-pre-wrap;
}

pre.textmate-source.damon_rails {
 color: #FFFFFF;
 background-color: #070913;
}

pre.textmate-source .linenum {
 width: 75px;
 padding: 0.1em 1em 0.2em 0;
 color: #888;
 background-color: #eee;
}
pre.textmate-source.damon_rails span {
   padding-top: 0.2em;
   padding-bottom: 0.1em;
}
pre.textmate-source.damon_rails ::selection {
 background-color: #404040;
}
/* Comment */
pre.textmate-source.damon_rails .comment {
 color: #AEAEAE;
 font-style: italic;
}

/* Constant */
pre.textmate-source.damon_rails .constant {
 color: #EEF13F;
}

/* Entity */
pre.textmate-source.damon_rails .entity {
 color: #FF5A00;
}

/* Keyword */
pre.textmate-source.damon_rails .keyword {
 color: #FFAF19;
}

/* Storage */
pre.textmate-source.damon_rails .storage {
 color: #CA4EED;
}

/* String */
pre.textmate-source.damon_rails .string, pre.textmate-source.damon_rails .meta_verbatim {
 color: #70DA1B;
}

/* Support */
pre.textmate-source.damon_rails .support {
 color: #709BDB;
}

/* Variable */
pre.textmate-source.damon_rails .variable {
 color: #FFFFFF;
}

/* Superclass */
pre.textmate-source.damon_rails .entity_other_inherited-class {
 color: #C73600;
}

/* meta.tag */
pre.textmate-source.damon_rails .meta_tag, pre.textmate-source.damon_rails .meta_tag .entity {
 color: #9AA28B;
}



 
&lt;/style&gt;&lt;br /&gt;
&lt;pre class="textmate-source damon_rails"&gt;&lt;span class="source source_ruby"&gt;&lt;span class="variable variable_other variable_other_readwrite variable_other_readwrite_instance variable_other_readwrite_instance_ruby"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_ruby"&gt;@&lt;/span&gt;ideas&lt;/span&gt; &lt;span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_ruby"&gt;=&lt;/span&gt; &lt;span class="support support_class support_class_ruby"&gt;Idea&lt;/span&gt;&lt;span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby"&gt;.&lt;/span&gt;think_something

&lt;span class="variable variable_other variable_other_readwrite variable_other_readwrite_instance variable_other_readwrite_instance_ruby"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_ruby"&gt;@&lt;/span&gt;ideas&lt;/span&gt;&lt;span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby"&gt;.&lt;/span&gt;each &lt;span class="keyword keyword_control keyword_control_start-block keyword_control_start-block_ruby"&gt;do &lt;/span&gt;&lt;span class="punctuation punctuation_separator punctuation_separator_variable punctuation_separator_variable_ruby"&gt;|&lt;/span&gt;&lt;span class="variable variable_other variable_other_block variable_other_block_ruby"&gt;idea&lt;/span&gt;&lt;span class="punctuation punctuation_separator punctuation_separator_variable punctuation_separator_variable_ruby"&gt;|&lt;/span&gt;
  idea&lt;span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby"&gt;.&lt;/span&gt;build
  idea&lt;span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby"&gt;.&lt;/span&gt;try
  &lt;span class="keyword keyword_control keyword_control_ruby"&gt;if&lt;/span&gt; idea&lt;span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby"&gt;.&lt;/span&gt;good?
    idea&lt;span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby"&gt;.&lt;/span&gt;keep
  &lt;span class="keyword keyword_control keyword_control_ruby"&gt;else&lt;/span&gt;
    idea&lt;span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby"&gt;.&lt;/span&gt;trash
  &lt;span class="keyword keyword_control keyword_control_ruby"&gt;end&lt;/span&gt;
&lt;span class="keyword keyword_control keyword_control_ruby"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
makes things a little more readable, right?&lt;br /&gt;
&lt;br /&gt;
Here's how to do it. Open a new TextMate file and cut/paste/input the code you want to be in your blog. Make sure you've selected the TextMate theme and syntax highlighting options you want to use. Also make sure you haven't selected any of the text in your file.&lt;br /&gt;
&lt;br /&gt;
Go to&amp;nbsp;&lt;b&gt;Bundles &amp;gt; TextMate &amp;gt; Create HTML From Document&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Instantly, TextMate will create a new HTML file, but with automatically generated CSS that matches your TextMate theme. Just cut and paste the entire style tag and its contents and the contents of the body tag (but not the body tags themselves) into your blog post. You'll need to do this with your Blogger editor set to "Edit HTML".&lt;br /&gt;
&lt;br /&gt;
If you'll be writing about code a lot, you might want to cut and paste your TextMate CSS into your Blogger template. Just put tack it onto the existing CSS in your template (go to the "Edit HTML" page on the "Design" tab). That way, you don't need to copy the CSS every time you have some code in your blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1871913243451330146-4606132110783985518?l=blog.trackjumper.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/TrackJumper/~3/6Tybnl1mpCY/using-textmate-syntax-highlighting-in.html</link><author>noreply@blogger.com (Damon)</author><thr:total>0</thr:total><feedburner:origLink>http://blog.trackjumper.com/2010/10/using-textmate-syntax-highlighting-in.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1871913243451330146.post-2081236736359185812</guid><pubDate>Tue, 05 Oct 2010 15:53:00 +0000</pubDate><atom:updated>2010-10-05T08:55:50.287-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">tools</category><category domain="http://www.blogger.com/atom/ns#">web applications</category><title>Track the Source of  Goal Completions with Google Analytics</title><description>&lt;div&gt;It's perhaps the most basic of questions for a internet based business:&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;i&gt;Where are my customers coming from?&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;So it's a little odd that you can't tell this in Google Analytics without a little (and I mean little) work. Most everyone knows about goals in Google Analytics. You set them up, and a little script to your "goal page" and then every time someone hits that page, Google Analytics records a Goal. For example, you may have a "thank you" page that shows up after someone signs up for your web app. That's your goal page. There are a few more custom options, but that's really the meat of it.&lt;/div&gt;&lt;div&gt;But how do you tell where the users who hit your goal page came from? Thankfully, it's pretty easy.&lt;/div&gt;&lt;div&gt;Once you have a goal set up, click the "Custom Reporting" link in the sidebar:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_z_DT3mV0EmQ/TKtGZu5z1VI/AAAAAAAAAHc/l9ddBKFvH08/s1600/custom_reporting.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_z_DT3mV0EmQ/TKtGZu5z1VI/AAAAAAAAAHc/l9ddBKFvH08/s1600/custom_reporting.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Then click the "manage custom reports" link, which will take you to a list of your reports (you have none). Click the link in the top right corner labeled "+ Create New Custom Report".&lt;/div&gt;&lt;div&gt;Now you're on the report creation page, which uses a nice drag and drop interface to make reports.&amp;nbsp;&lt;/div&gt;&lt;div&gt;First, find the blue "metric" called "Goal 1 Completions" (or the metric for whichever goal you want to track). Drag it from the &amp;nbsp;sidebar over to the first dashed blue box on the report.&lt;/div&gt;&lt;div&gt;Next, find the green "dimension" labeled "Source"and drag it into the first dashed green box on the report.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_z_DT3mV0EmQ/TKtJSkIriCI/AAAAAAAAAHg/L0TVAf_mrvE/s1600/report.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="330" src="http://2.bp.blogspot.com/_z_DT3mV0EmQ/TKtJSkIriCI/AAAAAAAAAHg/L0TVAf_mrvE/s400/report.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Edit the name of the report (there's a link next to the title), and you're done!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1871913243451330146-2081236736359185812?l=blog.trackjumper.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/TrackJumper/~3/1Q8JvwWWt8w/track-source-of-goal-completions-with.html</link><author>noreply@blogger.com (Damon)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_z_DT3mV0EmQ/TKtGZu5z1VI/AAAAAAAAAHc/l9ddBKFvH08/s72-c/custom_reporting.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.trackjumper.com/2010/10/track-source-of-goal-completions-with.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1871913243451330146.post-1732563918074117789</guid><pubDate>Thu, 19 Aug 2010 13:44:00 +0000</pubDate><atom:updated>2010-08-19T06:44:02.053-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">marketing</category><category domain="http://www.blogger.com/atom/ns#">web applications</category><title>The First 1,000 Visitors: Part 1 - Web Application Directories</title><description>Many &lt;a href="http://trackjumper.com/"&gt;TrackJumper&lt;/a&gt; customers are building web applications for one reason or another. Most are businesses, and some of those are run by developers who are scraping the bottom of the bootstrapping barrel trying to get their efforts off the ground.&lt;br /&gt;
&lt;br /&gt;
TrackJumper was born the same way - and we'd like to give back to the web community in the form of knowledge. The first 1,000 visitors can tell you a lot about your web application - your conversion rates, your bounce rates, where you get traffic, and what sorts of visitors are apt to find your offering interesting.&lt;br /&gt;
&lt;br /&gt;
This post is the first in a series in which we'll expose some details about how TrackJumper got it's first 1,000 visitors. We hope you find it helpful.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;App Directory Submissions&lt;/b&gt;&lt;br /&gt;
It's an oldie but a goodie - there are plenty of people on the web who aggregate information about web applications and publish that info for the world to see. These range, of course, from outright spam to legitimate publications with millions of readers.&lt;br /&gt;
&lt;br /&gt;
The best part about these sites is that they're free. The worst part is that submitting your app can take a bit of time, and you may or may not get any traffic out of it. Some of these sites use do-follow links (!), some use nofollows, and some use oddball javascripty redirect schemes - presumably to mess with Google and/or for internal stats tracking.&lt;br /&gt;
&lt;br /&gt;
To ease this burden, here are the application directory sites that sent us at least a small amount of traffic.&lt;br /&gt;
&lt;div style="margin: auto; width: 500px;"&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://feedmyapp.com/" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_z_DT3mV0EmQ/TGxYqCaDzqI/AAAAAAAAAGw/1t_NP2xg56o/s1600/Screen+shot+2010-08-18+at+5.01.57+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;The clear winner, Feedmyapp, sent us a&amp;nbsp;significant&amp;nbsp;number of engaged users. In fact, one of our first customers came from this traffic. On top of that, their listing gets a nice do-follow link. Can't complain about that.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://killerstartups.com/" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_z_DT3mV0EmQ/TGxZFfqCK5I/AAAAAAAAAG0/D0sk35MVS8A/s1600/Screen+shot+2010-08-18+at+4.59.02+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;KillerStartups also sent a substantial slug of traffic. On the plus side, they wrote up an original (although slightly forced) piece of content about our app. The links are nofollow, so that's a downer.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://saasdir.com/" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_z_DT3mV0EmQ/TGxZaI-Do7I/AAAAAAAAAG4/R5qny4-QLvE/s1600/Screen+shot+2010-08-18+at+5.06.06+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;This site is well put together, and seems to have an enterprise focus. Unfortunately, it's a pain to search, so I'm amazed that it sent any traffic at all. But it did. The link you get out of it redirects to another site first, and that's about all I cared to investigate. I assume it's worthless for SEO.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://listio.com/" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_z_DT3mV0EmQ/TGxZtFb3Y2I/AAAAAAAAAG8/MMvWvMuPumc/s1600/Listio+logo.png" /&gt;&lt;/a&gt;&lt;/div&gt;This is a nice directory of "Web 2.0" apps, and is actually useful for finding apps. Although the traffic it sent was minimal, I'd keep an eye on this one just because it's clearly useful to actual people. Unfortunately, you get no link juice from listio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://appuseful.com/" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_z_DT3mV0EmQ/TGxaDlWgHQI/AAAAAAAAAHA/xYBsy9jKf5s/s1600/Screen+shot+2010-08-18+at+5.09.05+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;AppUseful is another web app directory - similar to, but less polished than listio. We didn't get much traffic, but we did get a do-follow link.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_z_DT3mV0EmQ/TGxaNXzZGsI/AAAAAAAAAHE/ZgsqW49mMuo/s1600/Screen+shot+2010-08-18+at+4.59.46+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_z_DT3mV0EmQ/TGxaNXzZGsI/AAAAAAAAAHE/ZgsqW49mMuo/s1600/Screen+shot+2010-08-18+at+4.59.46+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;Billed as the "Business Software App Store", which I wish were true. Unfortunately, GetApp provides a weak user experience, no do-follow, and not much traffic.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_z_DT3mV0EmQ/TGxaVMpjCyI/AAAAAAAAAHI/gRhfcHaXtvY/s1600/Screen+shot+2010-08-18+at+5.00.16+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_z_DT3mV0EmQ/TGxaVMpjCyI/AAAAAAAAAHI/gRhfcHaXtvY/s1600/Screen+shot+2010-08-18+at+5.00.16+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;NetWebApp is your bread and butter web app directory. Nothing fancy, and is easily searchable. Maybe they could use a little more fancy, though, because they didn't send much traffic. Got a good do-follow link out of it, though.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_z_DT3mV0EmQ/TGxabRGAZTI/AAAAAAAAAHM/H6CLNgEzgco/s1600/Screen+shot+2010-08-18+at+5.00.28+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="60" src="http://3.bp.blogspot.com/_z_DT3mV0EmQ/TGxabRGAZTI/AAAAAAAAAHM/H6CLNgEzgco/s320/Screen+shot+2010-08-18+at+5.00.28+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;WebBasedSoftware&lt;br /&gt;
It's not hard to see why this one sent almost no traffic. Their listings are just one line text descriptions next to a text link (which is a redirect, of course). Needs a little more effort.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The Numbers&lt;/b&gt;&lt;br /&gt;
Each of these sites sent the majority of their traffic immediately after we submitted our app. All had trailed off to pretty much nothing after a few weeks. What resulted is summarized below:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_z_DT3mV0EmQ/TGxbuGogG9I/AAAAAAAAAHQ/ab9yVehK8HA/s1600/Screen+shot+2010-08-18+at+5.15.49+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="157" src="http://4.bp.blogspot.com/_z_DT3mV0EmQ/TGxbuGogG9I/AAAAAAAAAHQ/ab9yVehK8HA/s400/Screen+shot+2010-08-18+at+5.15.49+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;384 visitors down, 616 to go.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Takeaways&lt;/b&gt;&lt;br /&gt;
Submitting to these directories will bring you a good bit of interested traffic, and some will give you a nice do-follow link. All are free. At the very least, submit to &lt;a href="http://feedmyapp.com/"&gt;Feedmmyapp&lt;/a&gt; and &lt;a href="http://killerstartups.com/"&gt;KillerStartups&lt;/a&gt;. They drove a about 300 quality visitors between the two fo them. There is a rapidly diminishing return with these sorts of sites, however, so I wouldn't spend too much time on them.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Did we miss any? What other good free traffic drivers are out there?&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1871913243451330146-1732563918074117789?l=blog.trackjumper.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/TrackJumper/~3/pqUmXG37ZRo/first-1000-visitors-part-1-web.html</link><author>noreply@blogger.com (Damon)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_z_DT3mV0EmQ/TGxYqCaDzqI/AAAAAAAAAGw/1t_NP2xg56o/s72-c/Screen+shot+2010-08-18+at+5.01.57+PM.png" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://blog.trackjumper.com/2010/08/first-1000-visitors-part-1-web.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1871913243451330146.post-3428702725218734247</guid><pubDate>Fri, 25 Jun 2010 18:37:00 +0000</pubDate><atom:updated>2010-06-25T11:37:13.352-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">freelance</category><category domain="http://www.blogger.com/atom/ns#">bug tracking</category><title>Freelancers Need Different Bug Tracking Tools</title><description>What's the biggest difference between working as a freelance web developer and working for say, a startup? Both environments tend to involve small teams. Both are very much product oriented. Both are at the mercy of their customers. &amp;nbsp;So although the businesses are quite similar in many ways, there is one difference - in a freelance operation, the customer is involved in building the product - literally.&lt;br /&gt;
&lt;br /&gt;
There's a bid difference between taking a bunch of feedback from &lt;a href="https://uservoice.com/"&gt;UserVoice&lt;/a&gt; or &lt;a href="http://getsatisfaction.com/"&gt;GetSatisfaction&lt;/a&gt; and having a client tell you exactly where to put that button. The average startup (if there is such a thing) is generally fueled by people who live and breathe technology. Even the marketing guys live in their computers and know the difference between CSS, HTML, and Ruby. As a result, startups can tolerate some complexity in their bug tracking process (although we would suggest that they do not have to!).&lt;br /&gt;
&lt;br /&gt;
That is not necessarily the situation for the freelancer. Have you ever tried to get a client to use Rally? Of course not - it's just not going to happen so you'd be a fool to try. But what are the alternatives? Email is usually what wins. And email, we all know, is where bugs go to die. But we dont' think it has to be this way. There is a way to keep freelancers and their clients working happily and efficiently. There are just some specific requirements.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Simple:&lt;/b&gt; This is crucial. A good freelance bug tracking tool should not require training or knowledge of agile processes. It should be intuitive and obvious. "Just give me a place to type the problem in". If it's more complicated than email, guess where the bugs will wind up: in your email.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Separate Projects:&lt;/b&gt; Freelancers have lots of projects for lots of clients. They should remain&amp;nbsp;thoroughly&amp;nbsp;separated for obvious reasons. Nobody wants to see other people's bugs mixed in with their own.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Multi-User:&lt;/b&gt; Along with those projects come clients. A bug tracker is no good to a freelancer if adding additional user accounts is cost prohibitive. Many bug trackers ramp up their price tag as you add even a few users.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;SAAS:&lt;/b&gt; A freelancer's time is his or her currency. Every minute you spend working on something else is cutting into your hourly rate, which means you make less money and enjoy less of your time off. If you can find a simple one (good luck!), you can set up and maintain your own open source bug tracking app - you have the skills. But this is a false economy. What do you charge per hour? How much time do you spend on it? What about hosting costs. In the end, there's a reason that there is a a healthy market for bug and issue trackers. They make good financial sense.&lt;br /&gt;
&lt;br /&gt;
Freelancers, don't give up on keeping your projects' bugs organized. It &lt;i&gt;can&lt;/i&gt; be done. You just need the right tools. We like to think we've made a good one. &lt;a href="http://trackjumper.com/pricing"&gt;Try it for free to find out for yourself.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1871913243451330146-3428702725218734247?l=blog.trackjumper.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/TrackJumper/~3/SxjsVnr3Sy0/freelancers-need-different-bug-tracking.html</link><author>noreply@blogger.com (Damon)</author><thr:total>0</thr:total><feedburner:origLink>http://blog.trackjumper.com/2010/06/freelancers-need-different-bug-tracking.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1871913243451330146.post-642098224736773710</guid><pubDate>Wed, 23 Jun 2010 16:24:00 +0000</pubDate><atom:updated>2010-06-23T09:24:01.845-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">spreadsheets</category><category domain="http://www.blogger.com/atom/ns#">bug tracking</category><title>Simple Bug Tracking with Google Docs</title><description>It may seem strange for the maker of a commercial bug tracking tool to be advocating the use of Google Docs for a simple bug tracking solution, but that's what I'm going to do in this post. Don't get me wrong - I don't really believe that Google Docs is the best way to track issues in the long run, but there is a substantial amount of learning that can be gleaned when you start out with the simple spreadsheet.&lt;br /&gt;
&lt;br /&gt;
Bug tracking, first and foremost, is about communication and your team's process. Even if you don't adhere to a structured methodology, you still follow &lt;i&gt;some sort&lt;/i&gt; of process. Your process may be "Work on whatever you feel like working on." You might have standup meetings each morning. You might even (gasp) be following an old-school waterfall process.&lt;br /&gt;
&lt;br /&gt;
But whatever the case, you and your team do have a flow to the way you do things. Don't interrupt that flow without a good reason. If it's working, keep doing it.&lt;br /&gt;
&lt;br /&gt;
So when you start out a new project with a new group of people, you'll need to find that flow. It is not the time to enforce rules, but to figure out what works. Every team and project is different. What worked well on the last client project may not work as well on your new internal project. This is true for pretty much everything - including bug tracking.&lt;br /&gt;
&lt;br /&gt;
In the early days, the flexibility of a spreadsheet can be very helpful in finding your team's bug tracking groove. We like Goolge Docs because they're easily sharable and easy to work with, but any multiuser (online) spreadsheet will do the trick.&lt;br /&gt;
&lt;br /&gt;
Start off with a single page with a sinlge column titled "Bugs". If you're used to monstrous bug trackers, you might be surprised how far this can get you.&lt;br /&gt;
&lt;br /&gt;
Pretty soon, you'll want to add more columns. Dates, status, priority. Go ahead add them.&lt;br /&gt;
&lt;br /&gt;
Eventually, you may find you want to group tickets together. Tabs are great for this. Cut and paste is your friend.&lt;br /&gt;
&lt;br /&gt;
Charts? Try a few.&lt;br /&gt;
&lt;br /&gt;
After a week or two, take a break. Stop and evaluate how your team is functioning with your spreadsheet. Some things will be well used and working smoothy. Others, not so much. Is that column for severity really helping? What about those charts you added? Do they give you actionable information or just look pretty? Are you breaking out your tasks in a logical way? Most importantly, does everyone know what they're supposed to be working on? Are your milestones being held, or are they just a date field that gets changed when you run out of time?&lt;br /&gt;
&lt;br /&gt;
At this point, you have some good insight into your team. It's time to break away from the spreadsheet and get something a little more robust. Alas, the flexibility of the spreadsheet is it's downfall. They're also fragile, and every team I've ever been on eventually moved away from them for that reason. They get cluttered and messed up over time.&lt;br /&gt;
&lt;br /&gt;
But since you started with the humble spreadsheet, you now know exactly what to look for when you go shopping for a bug tracker. You know what you need to make the software work for your team, not the other way around.&lt;br /&gt;
&lt;br /&gt;
Incidentally, this is exactly how TrackJumper was developed. We started out with a Google Spreadsheet to track bugs. Once we figured out the best process for managing manage bugs in real life, we turned it into an app. We built in just enough&amp;nbsp;flexibility&amp;nbsp;to cover our experiences without introducing an&amp;nbsp;unnecessary&amp;nbsp;level of complexity. We're pretty proud of the end result, and hope you'll like it too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1871913243451330146-642098224736773710?l=blog.trackjumper.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/TrackJumper/~3/2jd1N6GsN9U/simple-bug-tracking-with-google-docs.html</link><author>noreply@blogger.com (Damon)</author><thr:total>0</thr:total><feedburner:origLink>http://blog.trackjumper.com/2010/06/simple-bug-tracking-with-google-docs.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1871913243451330146.post-1772361495038119434</guid><pubDate>Thu, 20 May 2010 02:40:00 +0000</pubDate><atom:updated>2010-05-19T19:40:25.688-07:00</atom:updated><title>Severity or Priority: Stop Making Work For Yourself</title><description>One of the primary motivations that lead to the creation of TrackJumper (which is set to launch in a closed beta as soon as next week) was a simple idea that would guide all of our decisions:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;i&gt;If we ask a user to do something, he or she should get a payback in time, money,&amp;nbsp;quality&amp;nbsp;or satisfaction.&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
It's stupidly simple, yet it's frighteningly easy it is to find examples of bug trackers that create work for their users &lt;i&gt;without generating additional benefit&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Some of this stuff is entrenched in the history of the software industry. Take for example the concept of rating a bug with a priority and a severity. I don't know where the concept came from, but I imagine someone somewhere created a ticket that was very low in priority but very high in severity:&lt;br /&gt;
&lt;blockquote&gt;&lt;i&gt;John:&lt;/i&gt; Why is this bug rated as very-low priority? It totally crashes the system.&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;Alex:&lt;/i&gt; Because only 1 in 10,000 users will ever see it.&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;John:&lt;/i&gt; But it CRASHES THE SYSTEM. Are you telling me that's low priority?&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;Alex:&lt;/i&gt; Look, I get that it's serious, but we use priority to help us, well, prioritize what to do next. This one doesn't impact enough people to rise to the top of the list.&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;John:&lt;/i&gt; So, you're telling me that one user that has his entire installation blow up on him would call this a "very low priority". Think of the customers - it's not all about you and your code!&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;Alex:&lt;/i&gt; **groan** Ok, how about this. Lets create another column in the spreadsheet called "Severity". We'll give this one a "very high" severity but a "very low" priority. How's that sound?&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;John:&lt;/i&gt; As long as you get some urgency on this I don't care what you call it. Just don't tell me that something that fails catastrophically is not&amp;nbsp;important.&lt;/blockquote&gt;And the Severity Column is born. It comes from a good place - caring about your customers is good! The trouble is that severity is a totally useless concept. Some might call it a &lt;a href="http://www.kalzumeus.com/2010/02/09/dashboard-design-for-metrics-savvy-software-companies/"&gt;vanity stat&lt;/a&gt;. Something that makes you feel like you're getting good, actionable information, but in reality is just sucking time and energy out of your work day.&lt;br /&gt;
&lt;br /&gt;
Does knowing a bug is severe help you decide which one to work on? Yes, but there is more to the story. In the case of John and Alex, Alex correctly understood that even severe bugs that have little impact on the business are low priority. In other words, the severity is baked into the priority. Highlighting it separately does nothing but create confusion, duplicate data, and take extra time to manage.&lt;br /&gt;
&lt;br /&gt;
And that is why TrackJumper tickets don't have a severity field.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1871913243451330146-1772361495038119434?l=blog.trackjumper.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/TrackJumper/~3/_m83uflmvbI/severity-or-priority-stop-making-work.html</link><author>noreply@blogger.com (Damon)</author><thr:total>0</thr:total><feedburner:origLink>http://blog.trackjumper.com/2010/05/severity-or-priority-stop-making-work.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1871913243451330146.post-5003184989734573980</guid><pubDate>Fri, 30 Apr 2010 14:33:00 +0000</pubDate><atom:updated>2010-04-30T07:33:44.524-07:00</atom:updated><title>Hello, World!</title><description>Welcome to Jumping Tracks, the TrackJumper blog. If you're here to read about the ins and outs of software development, you're in the right place.&lt;br /&gt;
&lt;br /&gt;
TrackJumper is a soon to be launched bug and issue tracker designed specifically to meet the needs of small, cross-functional teams working in fast-paced, agile environments.&lt;br /&gt;
&lt;br /&gt;
The desire to build TrackJumper came from experience. Many, many times we've worked on small software development teams. Startups, side projects, client work. In every case, issues piled up - things that we needed to prioritize and remember, but not necessarily something that had to be done right away.&lt;br /&gt;
&lt;br /&gt;
In nearly every case, we tried to use some sort of software to keep on top of things. Our experience goes something like this:&lt;br /&gt;
&lt;br /&gt;
The first stop is Excel. But Excel seems to get worse with each new release, especially on a Mac, and keeping a spreadsheet synced between multiple users is a nightmare. There's too much manual data manipulation. In short, Excel was a total failure. Nobody used it. Surely, Google Docs is the answer?&lt;br /&gt;
&lt;br /&gt;
Nope. Google Docs &lt;i&gt;is&lt;/i&gt; better for this sort of thing. At least everyone was using the same document. But we found that the flexibility of the spreadsheet was counterproductive. Each developer tended to "customize" The Spreadsheet with their own notation, formats, and the like. Eventually, it gets chaotic. And you still have the problem of manually manipulating lots of data if you want to gain any insight from it.&lt;br /&gt;
&lt;br /&gt;
No wonder they make specialized bug tracking software. We tried lots of them. I don't know why, but in every case, it seems like we ran into the same problem: complexity. It's like a bunch of developers got together and said, "Since the business guys aren't going to be using this, lets go nuts."&lt;br /&gt;
&lt;br /&gt;
Well, in our&amp;nbsp;experience, the business guys &lt;i&gt;do&lt;/i&gt; use it. Agile is the way to go, and if you're doing Agile right, that means keeping your eye on the customer at all times. That, of course, means you want a good business guy around. And you want him working with you, not against you.&lt;br /&gt;
&lt;br /&gt;
But blaming the business guy for not using the complex bug tracker is a cop out. Because developers don't use them either. There is just too much friction in these complex products. You wind up doing extra work to keep your bug tracker happy. Insane.&lt;br /&gt;
&lt;br /&gt;
So the failure of the specialize bug trackers was rooted in their full-featured greatness. At the first hint of a bloated interface, everyone, business guy and geek a like, does what comes naturally. They put bugs in email. And email, we all know, is where bugs, features, and customer inquiries go to die. (Don't get me started on Yammer - we tried that too. Great for some things, not for this.)&lt;br /&gt;
&lt;br /&gt;
And what about feature requests, support problems, or other non-technical tasks? Are they not as important to fix as the&amp;nbsp;technical&amp;nbsp;nuts and bolts? We believe that anything that gets in the way of a user accomplishing their goal is a problem. It might be a bug, some missing documentation, a bad marketing angle, or poorly thought out pricing. Why should bugs be singled out for special tracking?&lt;br /&gt;
&lt;br /&gt;
So there we were, amazed that of all the bug trackers we could find, not one of them met our needs, which we'll summarize here:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Flexibility: Bugs and issues have some specific traits, but if you&amp;nbsp;over-specify&amp;nbsp;them, you wind up with confusion when the problem at hand doesn't' quite match up with what the software expects.&lt;/li&gt;
&lt;li&gt;Simplicity: If everyone on your team doesn't use your issue tracker, it's worthless. It must be extremely friendly, because &lt;i&gt;not&lt;/i&gt; using it is so darn easy. You don't work at IBM, where you can force a monstrous system on everyone. (Thank goodness.)&lt;/li&gt;
&lt;li&gt;Cross-functional: Issues aren't just bugs. It's time that the marketing guys got in on the game and tracked their customer development progress with the same discipline that developers have used for years. Agile development requires that everyone be on the same boat, rowing in the same direction.&lt;/li&gt;
&lt;li&gt;Optimized for Small Teams: We don't work at IBM or Microsoft. We never have and don't want to. TrackJumper probably does not meet their needs, and we're happy with that. TrackJumper is a tool for small teams working quickly. That focus is critical to keeping the tool streamlined. You can't be everything to everyone.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
So stay tuned as we finish up the public release. Along the way, we'll post our thoughts on the world of software in general.&lt;br /&gt;
&lt;br /&gt;
And for you early adopters out there, please email us at &lt;a href="mailto:info@trackjumper.com"&gt;info@trackjumper.com&lt;/a&gt;. I'm pretty sure we can get you a free trial in exchange for some feedback.&lt;br /&gt;
&lt;br /&gt;
Onward!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1871913243451330146-5003184989734573980?l=blog.trackjumper.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/TrackJumper/~3/6y9Sym3cjf8/hello-world.html</link><author>noreply@blogger.com (Damon)</author><thr:total>0</thr:total><feedburner:origLink>http://blog.trackjumper.com/2010/04/hello-world.html</feedburner:origLink></item></channel></rss>

