<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom">
  <title type="text" xml:lang="en">Ryan Bright</title>
  
  <link type="text" href="http://ryanbright.me" rel="alternate" />
  <updated>2013-05-08T02:07:33-04:00</updated>
  <id>http://ryanbright.me</id>
  <author>
    <name>Ryan Bright</name>
  </author>
  <rights>Copyright (c) 2013 Ryan Bright</rights>
  
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/rbright/JspY" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="rbright/jspy" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
    <title>How I Use Asana</title>
    <link href="http://ryanbright.me/2013/03/11/how-i-use-asana" />
    <updated>2013-03-11T01:00:00-04:00</updated>
    <id>http://ryanbright.me/2013/03/11/how-i-use-asana</id>
    <summary type="html">&lt;p&gt;I&amp;#39;ve used many todo lists and project management applications throughout the
years, but a clear winner has emerged for organizing all the lists in my life.
From designing software at &lt;a href="http://www.getharvest.com/" title="Harvest"&gt;Harvest&lt;/a&gt; to managing my grocery list, &lt;a href="http://www.asana.com/" title="Asana"&gt;Asana&lt;/a&gt;
provides a perfect blend of ease, flexibility, and mobility for &amp;quot;life
management&amp;quot;. I&amp;#39;d like to share some of the ways I use Asana in my life and
hopefully inspire some ways that you can use it in yours.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h4&gt;For Harvest&lt;/h4&gt;

&lt;p&gt;At Harvest, we develop an internal tool called &lt;a href="http://www.getharvest.com/blog/2012/10/behind-the-scenes-with-harvest-kaizen/" title="Behind the Scences with Harvest: Kaizen"&gt;Kaizen&lt;/a&gt; for project
management. While Kaizen fulfills the team&amp;#39;s requirements and allows more
customization than off-the-shelf solutions, it falls short in a few areas that
are important in my workflow.&lt;/p&gt;

&lt;p&gt;Rather than manually copying information from Kaizen to Asana, I use &lt;a href="http://zpr.io/mXm" title="Zapier"&gt;Zapier&lt;/a&gt;
to automatically create Asana tasks from Kaizen emails. Whenever I&amp;#39;m assigned
to a new task in Kaizen, Zapier fetches the subject and body of the email and
uses them to construct a new task in Asana. An added bonus is that
a notification email contains a link to the original ticket, so it&amp;#39;s easy to
reference discussions and close tickets once they&amp;#39;re done.&lt;/p&gt;

&lt;figure&gt;
  &lt;a href="http://zpr.io/mXm" title="Kaizen to Asana"&gt;&lt;img src="/img/2013/03/asana/zapier.png" alt="Kaizen to Asana" class="aligncenter" /&gt;&lt;/a&gt;
  &lt;p&gt;Tasks can be automatically created with Zapier.&lt;/p&gt;
&lt;/figure&gt;

&lt;p&gt;While I use Asana &lt;em&gt;for&lt;/em&gt; Harvest, I also use it &lt;em&gt;with&lt;/em&gt; Harvest. Last year,
I helped develop the &lt;a href="http://www.getharvest.com/platform" title="Harvest Platform"&gt;Harvest Platform&lt;/a&gt; - a JavaScript platform that allows
third-party developers to quickly add time tracking functionality to their
applications by leveraging Harvest.&lt;/p&gt;

&lt;p&gt;To illustrate the capability of the platform, we developed a Chrome extension
for use with Basecamp and Trello. The extension works well, but it depends on
the layout of the target application to properly augment timers onto the
interface. Thus, our ultimate goal is to make it easy for developers to
integrate timers directly into their applications. Native integration leads to
a more seamless, customizable experience within each application without us
having to curate a lot of different profiles.&lt;/p&gt;

&lt;p&gt;That said, Asana is an integral part of my workflow that has not yet taken the
plunge. So, I may have customized my extension.&lt;/p&gt;

&lt;figure&gt;
  &lt;img src="/img/2013/03/asana/track_time.png" alt="Track Time" class="aligncenter" /&gt;
  &lt;p&gt;Time can be tracked for any task.&lt;/p&gt;
&lt;/figure&gt;

&lt;p&gt;This addition allows all &amp;quot;metawork&amp;quot; to be done without leaving Asana. I ♥ that.&lt;/p&gt;

&lt;h4&gt;For Coursework&lt;/h4&gt;

&lt;p&gt;Alongside my work at Harvest, I&amp;#39;m taking courses through &lt;a href="https://www.coursera.org/" title="Coursera"&gt;Coursera&lt;/a&gt; and
&lt;a href="https://generalassemb.ly/" title="General Assembly"&gt;General Assembly&lt;/a&gt; to refresh knowledge of old material and build knowledge
of topics that interest me. To stay on top of lectures, quizzes, and homework
assignments, I leverage a handful of features from Asana.&lt;/p&gt;

&lt;figure&gt;
  &lt;img src="/img/2013/03/asana/coursework.png" alt="Coursework Filters" class="aligncenter" /&gt;
  &lt;p&gt;Coursework can be filtered to only show homework assignments.&lt;/p&gt;
&lt;/figure&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Projects&lt;/strong&gt;. Each course has its own project, so I can filter tasks for
a particular course.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tags&lt;/strong&gt;. Tasks represent lectures or homework, so using those tags lets me
show homework for all courses. I can also add an additional filter to show
homework for a single course.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Due Dates&lt;/strong&gt;. Homework has a hard deadline. Lectures should be watched
before the following week&amp;#39;s set is released.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Subtasks.&lt;/strong&gt; Many assignments are comprised of multiple tasks. To avoid
cluttering my workspace, these can be represented as subtasks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Priority Headings&lt;/strong&gt;. To balance my workload, I loosely organize upcoming
tasks by day.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;For Side Projects&lt;/h4&gt;

&lt;p&gt;Occasionally, I work on side projects with friends. Asana makes it easy to
invite a user to a project as a guest instead of granting access to the entire
workspace. This lets me keep my side projects in a single workspace without
having to grant my friends access to all of my personal projects.&lt;/p&gt;

&lt;p&gt;Each task or subtask can be assigned to a single team member. This encourages
teams to break tasks into chunks small enough for a single person and also
makes it easy to visualize who is doing what.&lt;/p&gt;

&lt;figure&gt;
  &lt;img src="/img/2013/03/asana/team.png" alt="Teams" class="aligncenter" /&gt;
  &lt;p&gt;Sometimes, side projects get abandoned.&lt;/p&gt;
&lt;/figure&gt;

&lt;h4&gt;For Every Day&lt;/h4&gt;

&lt;p&gt;Asana has many powerful features for project management, but it&amp;#39;s also great
for organizing everyday tasks. Have errands to run? Calls to make? A grocery
list? Throw it all in a workspace or project instead of using a separate
application. The Asana &lt;a href="https://itunes.apple.com/us/app/asana-mobile/id489969512?mt=8" title="Asana Mobile for iPhone"&gt;iPhone&lt;/a&gt; and &lt;a href="https://play.google.com/store/apps/details?id=com.asana.app" title="Asana Mobile for Android"&gt;Android&lt;/a&gt; applications make it trivial
to access lists on the go. If you&amp;#39;re really crazy, you might even leverage
Asana Mobile&amp;#39;s fast updating to divide and conquer your grocery list with
another user. I may or may not be guilty of this.&lt;/p&gt;

&lt;figure&gt;
  &lt;img src="/img/2013/03/asana/personal.png" alt="Teams" class="aligncenter" /&gt;
  &lt;p&gt;Asana can be used like any other todo list.&lt;/p&gt;
&lt;/figure&gt;

&lt;h4&gt;Creating New Tasks&lt;/h4&gt;

&lt;p&gt;The Asana UI is fluid for entering and viewing tasks, but I don&amp;#39;t always want
to do a full context switch from my work to create new tasks. As a former
&lt;a href="http://www.rememberthemilk.com/" title="Remember the Milk"&gt;Remember the Milk&lt;/a&gt; user, I miss the powerful input syntax that allowed me to
describe a task&amp;#39;s characteristics with a simple string of text. So, I made
a &lt;a href="https://github.com/rbright/smart_asana" title="Smart Asana"&gt;tool&lt;/a&gt; to mimic it. It&amp;#39;s rough around the edges but really gets the job
done when paired with &lt;a href="http://www.alfredapp.com/" title="Alfred"&gt;Alfred&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;Moving Forward&lt;/h4&gt;

&lt;p&gt;The team at Asana has created a versatile product that continues to evolve in
new and exciting ways. I was an early adopter, switched to something else, and
came back to a more polished application just six months later. If you haven&amp;#39;t
already, check out the &lt;a href="http://asana.com/guide/" title="Asana Guide"&gt;Asana Guide&lt;/a&gt; to learn about many other features that
I didn&amp;#39;t discuss.&lt;/p&gt;

&lt;p&gt;My favorite feature of Asana is its flexibility. It provides lightweight
constructs that can be oriented in ways that fit nicely into many workflows.&lt;/p&gt;

&lt;p&gt;Do you use Asana? How are you using it?&lt;/p&gt;
</summary>
  </entry>
  
  <entry>
    <title>Trimming Distractions with Zapier</title>
    <link href="http://ryanbright.me/2013/03/08/trimming-distractions-with-zapier" />
    <updated>2013-03-08T00:00:00-05:00</updated>
    <id>http://ryanbright.me/2013/03/08/trimming-distractions-with-zapier</id>
    <summary type="html">&lt;p&gt;I&amp;#39;m always looking for ways to streamline my workflow, reduce clutter, and
eliminate distractions. I&amp;#39;ve been effective in this quest throughout recent
years, but I find myself paying more attention to email than is
preferable. There are plenty of messages that can wait until the end
of the day. However, others demand a more immediate response. Perhaps there&amp;#39;s
a pull request that needs my review or a new issue that&amp;#39;s been assigned to me
in Kaizen or Zendesk.  Many of these can also wait, but wouldn&amp;#39;t it be great to
address them without introducing the unnecessary distractions that accompany
the routine checking of email?&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Enter &lt;a href="http://zpr.io/mXm"&gt;Zapier&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://zpr.io/mXm" title="GitHub to Asana"&gt;&lt;img src="/img/2013/03/zapier_github_asana.png" alt="GitHub to Asana" class="aligncenter" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Zapier allows me to seamlessly integrate the services I use in ways that make
sense within my workflow. Specifically, it responds to events in one service by
triggering actions in another.&lt;/p&gt;

&lt;p&gt;Here are a few events that concern me day-to-day that commonly lead to checking
email more frequently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Someone mentions me in a GitHub Issue or Pull Request&lt;/li&gt;
&lt;li&gt;Someone makes a comment in a Kaizen thread to which I&amp;#39;m subscribed&lt;/li&gt;
&lt;li&gt;Someone assigns me to a Zendesk ticket&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Rather than requiring me to check email, I&amp;#39;d like to be notified of these
events in one or more of the following ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send me a HipChat notification&lt;/li&gt;
&lt;li&gt;Send me a message on Google Talk&lt;/li&gt;
&lt;li&gt;Add a new task to my Asana inbox&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With these simple sets of events and responses, it becomes more feasible to
check email just one or two times per day while still staying on top of
everything important. It also allows me to be more mindful of priorities and
effectively separate various concerns throughout my day.&lt;/p&gt;
</summary>
  </entry>
  
  <entry>
    <title>Prioritized Reading with Leaf</title>
    <link href="http://ryanbright.me/2013/03/07/prioritized-reading-with-leaf" />
    <updated>2013-03-07T00:00:00-05:00</updated>
    <id>http://ryanbright.me/2013/03/07/prioritized-reading-with-leaf</id>
    <summary type="html">&lt;p&gt;Throughout the past year, I&amp;#39;ve consistently found myself falling behind on
current news. I &lt;em&gt;still&lt;/em&gt; blame Google for &lt;a href="http://www.cmswire.com/cms/social-media/google-killing-postrankcom-and-postrank-analytics-on-1-may-015365.php" title="Google Killing PostRank.com and PostRank Analytics on 1 May"&gt;killing PostRank&lt;/a&gt; and making it
more of a pain to sift through my 100+ feeds in Google Reader, but I haven&amp;#39;t
lost hope just yet. I&amp;#39;ve tried &lt;a href="http://www.feedafever.com/" title="Fever"&gt;Fever&lt;/a&gt; as an alternative, but it just didn&amp;#39;t
meet my needs.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;&lt;a href="http://www.rockysandstudio.com/apps/leaf" title="Leaf"&gt;&lt;img src="/img/2013/03/leaf.png" alt="GitHub to Asana" class="alignright" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yesterday, I came across &lt;a href="http://www.rockysandstudio.com/apps/leaf" title="Leaf"&gt;Leaf&lt;/a&gt; and have been quite pleased. While it doesn&amp;#39;t
provide automated post ranking and filtering like PostRank did, it allows me to
use the Google Reader feeds I already have instead of creating a separate
collection. The kicker is that I&amp;#39;m able to hide feeds that can wait until the
weekend and only show the most important feeds &lt;em&gt;right now&lt;/em&gt;. I&amp;#39;m currently using
it to stay in the loop with Harvest blogs, Ruby and Rails upgrades, developer
blogs for products with which I integrate, and a handful of other sites.&lt;/p&gt;

&lt;p&gt;I still miss PostRank, but this seems to be the next best thing to keep me
abreast of the latest and greatest without wasting a lot of time.&lt;/p&gt;

&lt;p&gt;How do you stay informed while remaining productive?&lt;/p&gt;
</summary>
  </entry>
  
  <entry>
    <title>Four Weeks at Harvest</title>
    <link href="http://ryanbright.me/2012/04/22/four-weeks-at-harvest" />
    <updated>2012-04-22T01:00:00-04:00</updated>
    <id>http://ryanbright.me/2012/04/22/four-weeks-at-harvest</id>
    <summary type="html">&lt;p&gt;&lt;a href="http://www.getharvest.com/" title="Harvest"&gt;&lt;img src="/img/2012/04/harvest.png" alt="Harvest" class="alignright" /&gt;&lt;/a&gt;
It&amp;#39;s hard to believe that I&amp;#39;ve been at &lt;a href="http://www.getharvest.com/" title="Harvest"&gt;Harvest&lt;/a&gt; for a month, but time
flies when life is good. Looking back on my first four weeks has
provided me with some insights about why my experience has been so
enjoyable. I want to share a few of them as a pat on the back to my
teammates and also as inspiration for other companies. Happy employees
are productive employees!&lt;/p&gt;

&lt;!--more--&gt;

&lt;h4&gt;Communication&lt;/h4&gt;

&lt;p&gt;Your first day at a new job can be intimidating, and working on a remote
team adds an extra twist. As you plod across your apartment toward the
&amp;quot;office&amp;quot;, a flurry of questions invades your mind.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;quot;How do I talk to the team if it&amp;#39;s 1,000 miles away?&amp;quot;&lt;/p&gt;

&lt;p&gt;&amp;quot;How do I figure out what to do?&amp;quot;&lt;/p&gt;

&lt;p&gt;&amp;quot;Is my hygiene going downhill?&amp;quot;&lt;/p&gt;

&lt;p&gt;&amp;quot;Oh god, why did I think working remotely was a good idea!?&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Good communication can make most of these fears obsolete, and it can
even encourage you to bathe daily! Harvest cares about communication,
and that helped ease into my first day.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;We use &lt;a href="http://coopapp.com/" title="Co-op"&gt;Co-op&lt;/a&gt; for keeping in touch.&lt;/strong&gt; Co-op enables meaningful
communication with teammates, but it also provides the team with
a place for informal discussion. On any given day, our Co-op stream
is chock full of amusing links and animated GIFs. It&amp;#39;s where we go to
unwind.&lt;/p&gt;

&lt;p&gt;In addition to being Twitter for business, Co-op also prevents
 me from interrupting my coworkers. Whenever you track time in
 Harvest, Co-op broadcasts the activity to let everyone know what
 you&amp;#39;re doing without anyone having to ask.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;We use &lt;a href="https://www.hipchat.com/" title="Hipchat"&gt;HipChat&lt;/a&gt; for chatting.&lt;/strong&gt; Co-op serves its purpose
wonderfully, but we also need a place for focused discussion. HipChat
is great for 1-on-1 chats, and it also lets us create rooms for each
project to avoid interrupting the rest of the team. If others wants
to join a conversation late, HipChat saves the chat history for each
room.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;We use &lt;a href="http://www.skype.com/" title="Skype"&gt;Skype&lt;/a&gt; for video conferencing and pair programming.&lt;/strong&gt;
Since much of the Harvest team works remotely, we need a way to
discuss concepts without a lot of typing. Skype lets us quickly
discuss ongoing projects, and it also helps supplement the loss of face
time. The Screen Sharing feature also lets us collaborate on
troublesome code without wasting a lot of time.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;Getting Things Done&lt;/h4&gt;

&lt;p&gt;That&amp;#39;s why we&amp;#39;re here, right? While individuals are responsible for
their own productivity, Harvest has taken some steps to help.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;We mentor our newcomers.&lt;/strong&gt; Rather than being cast into a sea of 
code without a map, I had a great mentor to help me learn the
ropes and great documentation to help me get to work. Not only did
this reduce my &amp;quot;new job&amp;quot; anxiety, it also reduced the time it took
for me to become productive.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;We work together.&lt;/strong&gt; I work with some very talented people, but we
don&amp;#39;t think in terms of rockstars and ninjas. There&amp;#39;s too much work
for one person to manage alone, and that means it&amp;#39;s beneficial
to make each person as productive as possible. Everyone is very
helpful, and that made life as the new guy much easier.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;We use &lt;a href="http://github.com/" title="GitHub"&gt;GitHub&lt;/a&gt; like GitHub uses GitHub.&lt;/strong&gt; Have you ever sat through
a code review meeting while some guy defends his code like
a politician on trial? It&amp;#39;s extremely unproductive, and the work
usually doesn&amp;#39;t receive a fair review.&lt;/p&gt;

&lt;p&gt;Each time a Harvest developer wants to make a change, he or she creates
 a new branch with Git and submits a pull request on GitHub when
 it&amp;#39;s ready to go. This allows the change to receive thoughtful
 review in a manner that doesn&amp;#39;t waste anyone&amp;#39;s time.&lt;/p&gt;

&lt;p&gt;It&amp;#39;s probably not intentional, but we also have some other
 similiarities with &lt;a href="http://zachholman.com/posts/how-github-works/" title="How GitHub Works"&gt;how GitHub works&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;We aren&amp;#39;t agile.&lt;/strong&gt; At least not in the traditional sense. We don&amp;#39;t
have SCRUM planning. We don&amp;#39;t vote on story points. We don&amp;#39;t track
velocity. Instead, we plan our work one week at a time and use
&lt;a href="https://idonethis.com/" title="iDoneThis"&gt;iDoneThis&lt;/a&gt; to review our progress every Friday. To keep track of
work that needs to be done, we built a simple project management
system. Oh yeah, and we also use this time-tracking product called
&lt;a href="http://www.getharvest.com/" title="Harvest"&gt;Harvest&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;Expression&lt;/h4&gt;

&lt;p&gt;Companies are made of people, and Harvest goes to great lengths to give
itself a pulse.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;We have an amazing support team.&lt;/strong&gt; Seriously, these guys are
awesome. They really know our products, and they work to ensure that
every customer has a great experience when an issue arises.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;We have many blogs.&lt;/strong&gt; Each blog shows a different side of
Harvest. The &lt;a href="http://www.getharvest.com/blog/" title="The Harvest Blog"&gt;Harvest Blog&lt;/a&gt; is where we share information about
products, productivity tips, and other things useful to our customers.
&lt;a href="http://techtime.getharvest.com/" title="Tech Time"&gt;Tech Time&lt;/a&gt; is a new blog for our developer following, and we also
use it to share nerdier things internally. The &lt;a href="http://harvest.tumblr.com/" title="Harvest Watercooler"&gt;Harvest Watercooler&lt;/a&gt; is
an informal blog where you&amp;#39;ll find stuff about the team itself. We
like to share our ideas.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;Life&lt;/h4&gt;

&lt;p&gt;Again, companies are made of people. People have thoughts and feelings.
They also have lives outside of work that can directly influence their
lives at work, so there&amp;#39;s value in encouraging improvement in both
worlds.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;We have goals.&lt;/strong&gt; Not only do we have a vision for our products; we
have a vision for our people. Every few months, we come up with a set
of goals for each individual to accomplish. While many are related to
improving our products, many are self-improvement goals. For example,
three of my goals are to run more, write more, and read more things
that don&amp;#39;t involve technology. In a few months, I&amp;#39;ll review my
progress and figure out where I can improve.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;We have fun.&lt;/strong&gt; Along with our fun discussions and animated GIFs,
the NYC team has group lunches, Friday basketball games, and is
currently undefeated in a dodgeball league of other tech companies.
We&amp;#39;re looking at you, 10gen and Etsy. I was fortunate enough to spend
a few days in New York and experience all of these things.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The first month was a good one, and I&amp;#39;m looking forward to what lies
ahead. Every first experience should be as enjoyable as mine has been,
and I hope others will find inspiration in the philosophy Harvest has
taken on enabling its people to do great work.&lt;/p&gt;
</summary>
  </entry>
  
  <entry>
    <title>Eliminating Distractions and Getting Stuff Done</title>
    <link href="http://ryanbright.me/2012/03/18/eliminating-distractions-and-getting-stuff-done" />
    <updated>2012-03-18T09:12:19-04:00</updated>
    <id>http://ryanbright.me/2012/03/18/eliminating-distractions-and-getting-stuff-done</id>
    <summary type="html">&lt;p&gt;The iPad 3 is here! If you were lucky enough to snag one of these cool,
new gadgets last week, you&amp;#39;re now viewing your email, news, ebooks, and
videos on a high-resolution retina display. Consumption never looked so
good!&lt;/p&gt;

&lt;p&gt;But there&amp;#39;s one feature Tim Cook didn&amp;#39;t share during the keynote. Yes,
that&amp;#39;s right. You&amp;#39;ve just adopted a shiny, new form of distraction.
Congratulations!&lt;/p&gt;

&lt;p&gt;Full disclosure: I own a MacBook Pro, iPad 2, and iPhone 4S. I&amp;#39;m among
you.&lt;/p&gt;

&lt;p&gt;Thursday&amp;#39;s release served as a gentle reminder that it is far too easy
to connect to the outside world these days. I won&amp;#39;t argue against the
usefulness of mobile devices, but I will share a few tips that have
worked well when trying to clear my mental runways of debris.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h4&gt;Information Addiction&lt;/h4&gt;

&lt;p&gt;As mentioned, it&amp;#39;s just too easy to access information these days. Anyone else
miss the &lt;a href="http://en.wikipedia.org/wiki/Dewey_Decimal_Classification" title="Dewey Decimal Classification"&gt;Dewey Decimal System&lt;/a&gt;? No? Okay, here are a few information dieting
tips.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Schedule times for checking email.&lt;/strong&gt; You&amp;#39;ve seen this one before, and
that&amp;#39;s because it works. When you&amp;#39;ve designated times for checking email,
it&amp;#39;s not as important that you know what&amp;#39;s in your inbox. Scheduling also
lets you address more volume without the overhead of switching back-and-forth
between work and email.&lt;/p&gt;

&lt;p&gt;If you find that you truly need to communicate with someone more frequently,
email probably isn&amp;#39;t the best medium for that communication.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Disable notifications and schedule a single time for social media.&lt;/strong&gt; Unless
you&amp;#39;re in social media marketing, you probably spend too much time using
social media. Rather than giving it up completely, just set aside a time for
it after work. Oh, and be sure to disable all email and mobile notifications.
You don&amp;#39;t need to know about Sally&amp;#39;s friend request until later.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Read articles once per day.&lt;/strong&gt; I love to read, but reading articles
typically doesn&amp;#39;t help me with what I&amp;#39;m working on right now. To solve this,
I schedule time after work to filter through my feeds in &lt;a href="http://reader.google.com/" title="Google Reader"&gt;Google Reader&lt;/a&gt;
and read a few that catch my attention. I also allocate more time on Sundays
for reading the articles that I didn&amp;#39;t get to during the week. This gives me
just enough time to lose interest in things that I shouldn&amp;#39;t have wanted to
read in the first place.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Consume and produce on different devices.&lt;/strong&gt; This won&amp;#39;t work if you only
have one device, but I&amp;#39;ve found it to be very effective in my own workflow.
When I&amp;#39;m using my MacBook, I&amp;#39;m producing. When I&amp;#39;m using my iPad, I&amp;#39;m
consuming. By separating concerns for each of my devices, my mind knows what
it should be doing when using each of them.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Organization and Planning&lt;/h4&gt;

&lt;p&gt;Yes, even organization can be distracting. If you embrace any of the
productivity pr0n that has come out of the previous decade, you might have a
tendency to spend too much time planning. Rather than feeding you a spoonful of
GTD, here are a few ways I combat the desire to structure my life when I&amp;#39;m
trying to get stuff done.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Have a todo list with an adequate level of specificity.&lt;/strong&gt; If you have a
line item that reads &amp;quot;build the iOS application&amp;quot;, you&amp;#39;re basically a pilot
trying to fly from New York to Los Angeles without any directions. Break down
your tasks until you&amp;#39;re comfortable tackling each one individually.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Add new items quickly and review them later.&lt;/strong&gt; It&amp;#39;s inevitable that you&amp;#39;ll
think of something else you need to do during the day, but that doesn&amp;#39;t mean
it should distract you from what you&amp;#39;re doing right now. I&amp;#39;m in a constant
tug-of-war between workflow and distracting ideas, so I built a
&lt;a href="https://github.com/rbright/smart_asana" title="Smart Asana"&gt;small tool&lt;/a&gt; that I use with &lt;a href="http://www.alfredapp.com" title="Alfred App"&gt;Alfred&lt;/a&gt; to capture those ideas for
reviewing later in the day. Note: this tool will only work if you use
&lt;a href="http://www.asana.com" title="Asana - Task Management for Teams"&gt;Asana&lt;/a&gt;, but you can probably find or make something similar for whatever
you use to manage your list.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Review todos nightly.&lt;/strong&gt; Since I hopefully got something done during the
day, I need to reflect it in my todo list. I&amp;#39;ve also got some junk that
accumulated from adding new tasks with Alfred, and I need to prioritize those
tasks for completion. I save this for the end of my day to make it easier to
transition into tomorrow with a good idea of what needs to get done.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Mobile Devices&lt;/h4&gt;

&lt;p&gt;There should be a modern version of &amp;quot;Paddidle&amp;quot; where the objective is to yell a
word each time you see someone texting and driving. The world has become
obsessed with the freedom of mobility, and it&amp;#39;s often to the detriment of
productivity. Here are a few ways to be truly free.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Disable notifications.&lt;/strong&gt; If you don&amp;#39;t need to know it immediately, turn it
off. If you&amp;#39;re debating whether you need to know it immediately, turn if off.
If you truly think you need to know it immediately, there&amp;#39;s still a good
chance you should turn it off.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Move distracting applications from the home screen.&lt;/strong&gt; If you don&amp;#39;t need to
know it immediately, it shouldn&amp;#39;t be in your face immediately.&lt;/p&gt;

&lt;p&gt;Here&amp;#39;s a screenshot of my iPhone home screen:&lt;/p&gt;

&lt;figure&gt;
  &lt;img src="/img/2012/03/home_screen.png" alt="iPhone home screen" class="aligncenter" /&gt;
  &lt;p&gt;No email, Facebook, or Twitter&lt;/p&gt;
&lt;/figure&gt;

&lt;p&gt;These applications are the bare essentials for daily use of my phone. They&amp;#39;re
the applications I almost always want to use when I&amp;#39;m opening my phone, and
they don&amp;#39;t feed me unnecessary distractions. If I want to check email during
a scheduled time, it&amp;#39;s just one swipe away. By the way, check out
&lt;a href="http://vimeo.com/38446345" title="Sparrow for iPhone"&gt;Sparrow for iPhone&lt;/a&gt; if you&amp;#39;re looking for an awesome iOS mail application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stow your phone when you&amp;#39;re working.&lt;/strong&gt; If your job involves a lot of
communication, this probably doesn&amp;#39;t apply to you. However, my work as a
software developer rarely relies on my phone use, so I tuck my iPhone away
except for select times during the day when I want to respond to text
messages and phone calls.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;The Trusty Desktop&lt;/h4&gt;

&lt;p&gt;Most of us still do the bulk of our work at a desktop or laptop computer, and
these feature just as many distractions as any of our other devices. Here are a
few things I do to ensure focus when I&amp;#39;m working.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Be selective about notifications.&lt;/strong&gt; Note the absence of the word &amp;quot;disable&amp;quot;.
There are a handful of times when you really want to be notified about an
event. For instance, I always append a call to &lt;a href="http://growl.info/extras.php#growlnotify" title="growl-notify"&gt;growlnotify&lt;/a&gt; to
long-running scripts so that I can see when they complete without constantly
referencing my terminal window. However, I disable notifications for email,
instant messages, and anything else that doesn&amp;#39;t benefit my workflow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use away messages to communicate.&lt;/strong&gt; If I&amp;#39;m working, I use an away message
to let other parties know that I&amp;#39;ll respond within the next 30 minutes. This
allots me enough time to &lt;a href="http://www.pomodorotechnique.com/" title="Pomodoro Technique"&gt;complete a Pomodoro&lt;/a&gt; while also communicating my
availability to the outside world.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Clear the desktop and dock.&lt;/strong&gt; I prefer an icon-free desktop with very few
icons in my dock. To be precise, Finder and Google Chrome are the only two
icons in my dock, and I only keep them around so that my girlfriend isn&amp;#39;t
totally confused when she uses my laptop. In my experience, products like
&lt;a href="http://www.alfredapp.com" title="Alfred App"&gt;Alfred&lt;/a&gt;, &lt;a href="http://qsapp.com/" title="Quicksilver"&gt;Quicksilver&lt;/a&gt;, and &lt;a href="http://www.launchy.net/" title="Launchy"&gt;Launchy&lt;/a&gt; allow faster access to
applications and files without having to hunt around for them on the desktop
or dock.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are just a few of the methods I use to make myself more productive each
day. I hope that you&amp;#39;re able to apply some of them in your own pursuit of
clarity and productivity. Remember: follow them incrementally and with
patience. It takes time to develop new habits.&lt;/p&gt;

&lt;p&gt;What do you do to make yourself more productive?&lt;/p&gt;
</summary>
  </entry>
  
  <entry>
    <title>Self-Awareness through Measurement</title>
    <link href="http://ryanbright.me/2011/07/07/self-awareness-through-measurement" />
    <updated>2011-07-07T12:49:27-04:00</updated>
    <id>http://ryanbright.me/2011/07/07/self-awareness-through-measurement</id>
    <summary type="html">&lt;p&gt;Over the past few days, I&amp;#39;ve developed an addiction with the &lt;a href="http://quantifiedself.com/"&gt;self-tracking
movement&lt;/a&gt; and have begun brainstorming various metrics that I&amp;#39;d like to start
monitoring at a more granular level. These brainstorm sessions have generated
an exceptionally long list, so I&amp;#39;m limiting myself for now until I&amp;#39;m able to
optimize my methods.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Since analysis is only as effective as the tools that are used to perform it,
I&amp;#39;ve spent some time researching some good ones for the job(s) at hand. Here&amp;#39;s
what I&amp;#39;ve come up with so far:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://dailyburn.com/"&gt;DailyBurn&lt;/a&gt; provides a great set of tools for planning and tracking your
workouts, meals, and overall health. I&amp;#39;ve added all of my favorite exercises
to reflect my typical workout routines so that I can easily log my progress
after I leave the gym each day. I&amp;#39;ve also been logging every serving of food
that I eat to help me conquer the dreadful eating habits that I picked up
during college. As an added bonus, DailyBurn sends me periodic emails to let
me know which nutrients are lacking in my diet along with a long list of
foods I can eat to supplement those nutrients. I highly recommend this one
for anyone that wants to get into shape.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://mdlabs.se/sleepcycle/"&gt;Sleep Cycle&lt;/a&gt; is an innovative alarm clock that uses the iPhone&amp;#39;s
accelerometer to determine what phase of sleep you&amp;#39;re in throughout the
night and wake you up when you&amp;#39;re going to be least groggy. I&amp;#39;ve been able
to crudely estimate the number of hours I&amp;#39;m in bed each night (not many),
but this tool allows me to measure the quality of sleep that I&amp;#39;m getting so
that I fully understand the reasoning behind my morning coffee rush. This
one&amp;#39;s probably going to be difficult unless you&amp;#39;re sleeping solo or in a
King-sized bed, so it may not be for everyone.&lt;/p&gt;

&lt;p&gt;&lt;figure&gt;
   &lt;img src="/img/2011/07/sleepgraph.png" alt="Wakoopa" class="aligncenter" /&gt;
   &lt;p&gt;Sleep graph from July 5-6&lt;/p&gt;
 &lt;/figure&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://social.wakoopa.com/"&gt;Wakoopa&lt;/a&gt; provides insights into how you spend your time on your computer.
It runs silently in the background of Mac OS X, Linux, and Windows and
tracks the amount of time you actively use the various applications on your
machine. At the end of each day, the website generates a usage report that
allows you to visualize which categories you spend the most time on
throughout the day. While I&amp;#39;ve become quite aware of my habits since I
started using Wakoopa in 2007, it&amp;#39;s always helpful to know that I could
spend a little less time using &lt;a href="http://adium.im/"&gt;Adium&lt;/a&gt;. :)&lt;/p&gt;

&lt;p&gt;&lt;figure&gt;
   &lt;img src="/img/2011/07/appusage.png" alt="Application usage" class="aligncenter" /&gt;
   &lt;p&gt;Usage breakdown for the week of June 20&lt;/p&gt;
 &lt;/figure&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Using pen and paper allows me to make quick notes about my workflow (and
lack thereof) when I&amp;#39;m at the office. Each time I get distracted by
&lt;a href="http://plus.google.com/"&gt;wonderful web goodies&lt;/a&gt;, I note the times that I lost and regained focus.
Each time someone wanders into my cubicle to ask me a question, I note their
times of arrival and departure. Hour long meetings? Noted. At the end of
each day, I enter all of these times into Google Calendar so I can visualize
my work day and better estimate my level of productivity. Today, I was only
shooting 51.08% and really fell off the wagon after lunch. I&amp;#39;m hoping that
continued analysis can help me determine my prime productivity hours
throughout the day and also allow me to accurately measure and increase my
capacity for &lt;a href="http://en.wikipedia.org/wiki/Scrum_(development)"&gt;SCRUM&lt;/a&gt; planning.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These tools work great on their own, but I&amp;#39;m currently working on a more
centralized solution that will leverage the APIs of each service to display the
information that I&amp;#39;m most interested in. Additionally, I plan to build a few
simple tools to assist me in recording and displaying various metrics that are
more difficult to automate.&lt;/p&gt;

&lt;p&gt;Next up on my self-tracking list:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How strong is the correlation between my mood, diet, exercise, and sleep
quality?&lt;/li&gt;
&lt;li&gt;How do my blood pressure and heart rate change as my diet changes?&lt;/li&gt;
&lt;li&gt;How does listening to music affect my overall productivity at work?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stay tuned!&lt;/p&gt;
</summary>
  </entry>
  
  <entry>
    <title>Blogging with Jekyll and Git</title>
    <link href="http://ryanbright.me/2011/06/26/blogging-with-jekyll-and-git" />
    <updated>2011-06-26T11:09:04-04:00</updated>
    <id>http://ryanbright.me/2011/06/26/blogging-with-jekyll-and-git</id>
    <summary type="html">&lt;p&gt;&lt;a href="http://jekyllrb.com/" title="Jekyll"&gt;&lt;img src="/img/2011/06/jekyll.png" alt="Jekyll" class="alignleft" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In recent years, social media like &lt;a href="http://www.twitter.com/" title="Twitter"&gt;Twitter&lt;/a&gt; and &lt;a href="http://www.facebook.com/" title="Facebook"&gt;Facebook&lt;/a&gt; have allowed me
to communicate my ideas in small, palatable bites of information. This format
was revolutionary (no pun intended) for the conflicts in &lt;a href="http://mashable.com/2011/02/01/egypt-twitter-infographic/" title="How Egyptians Used Twitter During the January Crisis"&gt;Egypt&lt;/a&gt; and
&lt;a href="http://www.time.com/time/world/article/0,8599,1905125,00.html" title="Iran Protests: Twitter, the Medium of the Movement"&gt;Iran&lt;/a&gt;, and it&amp;#39;s allowed me to bitch about traffic and my university with
stunning efficiency. Though, there are still times when I&amp;#39;d like to convey a
longer or more complex message to the handful of people that might stumble upon
my web presence. While &lt;a href="http://www.tumblr.com/" title="Tumblr"&gt;Tumblr&lt;/a&gt; has served as a happy medium for some, I
don&amp;#39;t feel that we&amp;#39;ve fully eluded the need for traditional, robust blogging
platforms like WordPress and TypePad.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;But I don&amp;#39;t want to use WordPress. I may dabble in the art of spewing my
thoughts and opinions on the Internet, but let&amp;#39;s face it -- I&amp;#39;m a programmer.
For me to write paragraphs of content that may never be read by another human
being, my platform needs to be covered in peanut butter to hide the fact that
I&amp;#39;m generating content written in human-readable language. Enter &lt;a href="http://www.github.com/mojombo/jekyll" title="Jekyll"&gt;Jekyll&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Jekyll is a static site generator that allows me to build my blog using the
tools that are already a part of my daily workflow -- &lt;a href="http://code.google.com/p/macvim/" title="MacVim"&gt;MacVim&lt;/a&gt;, &lt;a href="http://git-scm.com/" title="Git"&gt;Git&lt;/a&gt;, and
&lt;a href="http://www.ruby-lang.org/en/" title="Git"&gt;Ruby&lt;/a&gt;. All markup, styling, and extensions are written using my own tools,
so I can be sure that the only &lt;a href="http://www.asp.net/" title="Microsoft ASP.NET"&gt;spaghetti code&lt;/a&gt; being generated on my pages
will be something that I have written myself. Additionally, I&amp;#39;m able to manage
the content on my blog by tossing it all into a Git repository that can be
pushed to my server. There&amp;#39;s nothing quite like &amp;quot;git reset --hard&amp;quot; to crumple a
sheet of digital paper, eh?&lt;/p&gt;

&lt;p&gt;Many people have written about how to migrate &lt;a href="http://vitobotta.com/how-to-migrate-from-wordpress-to-jekyll/#converting-to-markdown"&gt;from WordPress to Jekyll&lt;/a&gt;, so
I won&amp;#39;t bother trying to oust these great tutorials. However, if you&amp;#39;d like to
integrate Git into your Jekyll workflow, I&amp;#39;ve provided a simple shell script to
help you get started. The script is executed each time a push is made to the
remote repository.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; I&amp;#39;m assuming that you&amp;#39;ve installed the Jekyll gem on your server
along with all of its dependencies. Additionally, you might want to &lt;a href="http://progit.org/book/ch4-8.html" title="Gitolite"&gt;setup
Gitolite&lt;/a&gt; to simplify management of your repositories.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="bash"&gt;  &lt;span class="c"&gt;#!/bin/sh&lt;/span&gt;
  &lt;span class="c"&gt;# File: $HOME/repositories/ryanbright.me.git/hooks/post-receive&lt;/span&gt;
  &lt;span class="nv"&gt;GIT_REPO&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;/repositories/ryanbright.me.git
  &lt;span class="nv"&gt;TMP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/ryanbright.me
  &lt;span class="nv"&gt;PUBLIC_HTML&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/srv/www/ryanbright.me/public_html

  rbenv rehash
  rm -Rf &lt;span class="nv"&gt;$TMP&lt;/span&gt;
  git clone &lt;span class="nv"&gt;$GIT_REPO&lt;/span&gt; &lt;span class="nv"&gt;$TMP&lt;/span&gt;
  &lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="nv"&gt;$TMP&lt;/span&gt;
  bundle install
  jekyll --no-auto &lt;span class="nv"&gt;$TMP&lt;/span&gt; &lt;span class="nv"&gt;$PUBLIC_HTML&lt;/span&gt;
  chmod -R 755 &lt;span class="nv"&gt;$PUBLIC_HTML&lt;/span&gt;/*
  &lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="nv"&gt;$PUBLIC_HTML&lt;/span&gt;
  rm -Rf &lt;span class="nv"&gt;$TMP&lt;/span&gt;

  &lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I&amp;#39;m looking forward to digging more into Jekyll throughout the coming weeks,
but I&amp;#39;m happy to have my blog up and running for now -- WordPress free. If
you&amp;#39;re in the market for a lightweight, customizable blogging system, give
Jekyll a try!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; I changed the post-receive script to use rbenv.&lt;/p&gt;
</summary>
  </entry>
  
  <entry>
    <title>Algorithms Revisited: Fibonacci Sequence</title>
    <link href="http://ryanbright.me/2010/08/15/algorithms-revisited-fibonacci-sequence" />
    <updated>2010-08-15T21:58:13-04:00</updated>
    <id>http://ryanbright.me/2010/08/15/algorithms-revisited-fibonacci-sequence</id>
    <summary type="html">&lt;p&gt;With another school semester on the horizon, I&amp;#39;ve been reviewing old course
material to refresh my memory. Since a lot of this material is useful when
devising algorithms, I&amp;#39;m going to spend the next few weeks revisiting some of
the more interesting concepts. First up is the &lt;a href="http://en.wikipedia.org/wiki/Fibonacci_number" title="Fibonacci numbers"&gt;Fibonacci sequence&lt;/a&gt;. This is
the sequence F(n) = F(n-2) + F(n-1) where F(0) = 0 and F(1) = 1.&lt;/p&gt;

&lt;p&gt;If we wish to determine a given Fibonacci number n, there are several
approaches we can take. The approaches I&amp;#39;ll cover here involve recursion,
iteration, Binet&amp;#39;s formula, and matrix form. Each of the following examples
assumes that the algorithm is handling a positive integer, and all were
validated with Ruby 1.8.7.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h4&gt;Recursion&lt;/h4&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="ruby"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;F&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;].&lt;/span&gt;&lt;span class="n"&gt;include?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;F&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;F&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This naive solution uses &lt;a href="http://en.wikipedia.org/wiki/Recursion" title="Recursion"&gt;recursion&lt;/a&gt; to calculate the value of a Fibonacci
number and runs in &lt;a href="http://en.wikipedia.org/wiki/Time%20complexity#Exponential_time" title="Exponential time"&gt;exponential time&lt;/a&gt;. While the solution is viable for small
values of n, the algorithm&amp;#39;s lack of memory will cause the execution to take
significantly longer for larger values.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Find the fifth Fibonacci number.&lt;/p&gt;

&lt;p&gt;&lt;img src="/img/2010/08/fib_naive.png" alt="Fibonacci (Naive)" title="Fibonacci (Naive)"&gt;&lt;/p&gt;

&lt;p&gt;As you can see, there is a lot of redundancy in this algorithm because we do
not store each Fibonacci number as it is calculated. This deficiency can be
alleviated by using an &lt;a href="http://en.wikipedia.org/wiki/Iteration" title="Iteration"&gt;iterative approach&lt;/a&gt; to hold the value of each
Fibonacci number as long as it is needed by a subsequent calculation.&lt;/p&gt;

&lt;h4&gt;Iteration&lt;/h4&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="ruby"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;F&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;].&lt;/span&gt;&lt;span class="n"&gt;include?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;times&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;As mentioned before, this approach will only store a Fibonacci number for as
long as it is required by a subsequent calculation. Since a Fibonacci number is
the sum of the two Fibonacci numbers before it, these are the only two values
that we need to remember. Using this approach allows us to efficiently
determine a Fibonacci number in &lt;a href="http://en.wikipedia.org/wiki/Time%20complexity#Linear_time" title="Linear time"&gt;linear time&lt;/a&gt; while optimizing memory usage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Find the fifth Fibonacci number.&lt;/p&gt;

&lt;p&gt;&lt;img src="/img/2010/08/fib_memo.png" alt="Fibonacci (Memoization)" title="Fibonacci (Memoization)"&gt;&lt;/p&gt;

&lt;h4&gt;Binet&amp;#39;s Formula&lt;/h4&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="ruby"&gt;&lt;span class="no"&gt;PHI&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="no"&gt;Math&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;F&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="no"&gt;PHI&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="no"&gt;PHI&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="no"&gt;Math&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_i&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Depending on the desired accuracy level, a Fibonacci number can be approximated
in &lt;a href="http://en.wikipedia.org/wiki/Time%20complexity#Constant_time"&gt;constant time&lt;/a&gt; using &lt;a href="http://en.wikipedia.org/wiki/Fibonacci_number#Relation_to_the_golden_ratio"&gt;Binet&amp;#39;s formula&lt;/a&gt;. The formula provides exact
values of F(n) for &amp;quot;reasonable&amp;quot; values of n, but the tests I conducted using my
Ruby scripts for Binet&amp;#39;s formula and iteration show a deviation at n = 72.
Since a linear algorithm executing to n = 72 in linear time will execute in
approximately the same time as an algorithm in constant time on modern
hardware, there&amp;#39;s little benefit to using Binet&amp;#39;s formula for solving this
problem.&lt;/p&gt;

&lt;h4&gt;Matrix&lt;/h4&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="ruby"&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;matrix&amp;#39;&lt;/span&gt;

&lt;span class="n"&gt;M&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Matrix&lt;/span&gt;&lt;span class="o"&gt;[[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;]]&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;F&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;].&lt;/span&gt;&lt;span class="n"&gt;include?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;lower_right&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;M&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;lower_right&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;matrix&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;matrix&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;matrix&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;row_size&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;matrix&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;column_size&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; After reading a few of the &lt;a href="http://www.reddit.com/r/programming/comments/d1kxc/algorithms_revisited_fibonacci_sequence"&gt;comments on Reddit&lt;/a&gt;, I decided to add
the matrix form solution to the list of approaches for this problem. The
&lt;a href="http://en.wikipedia.org/wiki/Fibonacci%20number#Matrix_form"&gt;Wikipedia article&lt;/a&gt; contains a better explanation of the theory than I could
ever provide, so I&amp;#39;ll just explain how the above algorithm works.&lt;/p&gt;

&lt;p&gt;This algorithm will execute in linear time, providing us with an efficient and
accurate method for calculating Fibonacci numbers.&lt;/p&gt;

&lt;p&gt;I hope my tutorial for finding any number of the Fibonacci sequence has been
helpful! I&amp;#39;m looking forward to diving into more topics in the coming weeks, so
stay tuned for more algorithmic goodness!&lt;/p&gt;
</summary>
  </entry>
  
  <entry>
    <title>Buildycrunken #1: Hocus Focus</title>
    <link href="http://ryanbright.me/2009/11/05/buildycrunken-1-hocus-focus" />
    <updated>2009-11-05T16:54:21-05:00</updated>
    <id>http://ryanbright.me/2009/11/05/buildycrunken-1-hocus-focus</id>
    <summary type="html">&lt;p&gt;&lt;a href="http://www.collexion.net/" title="Collexion"&gt;&lt;img src="/img/2009/11/collexion.png" alt="Collexion" class="alignleft" /&gt;&lt;/a&gt;
Just as Newton and Leibniz contributed separately to the development of
differential and integral calculus, the brilliant minds at &lt;a href="http://www.collexion.net/" title="Collexion"&gt;Collexion&lt;/a&gt;
began planning their first &lt;a href="http://workatjelly.com/" title="Jelly"&gt;Jelly&lt;/a&gt; not long before I expressed the
need for one in my recent article. Buildycrunken will cater to software
developers, writers, artists, students, and anyone else that desires to
spend his or her late nights surrounded by creative, entertaining
individuals. The first event will start at 9:00pm on November 6 and last
until 9:00am the following morning, posing a challenge to those
passionate about their work to gauge the limits of that passion with
sleep deprivation and unhealthy quantities of caffeine. For those
interested in attending, the madness will begin at &lt;a href="http://www.thirdstreetstuff.com/" title="Third Street Stuff"&gt;Third Street
Stuff&lt;/a&gt; at 9:00pm on November 6. I hope to see you there!&lt;/p&gt;
</summary>
  </entry>
  
  <entry>
    <title>I'd Like Some Jelly with my Coworking</title>
    <link href="http://ryanbright.me/2009/10/30/id-like-some-jelly-with-my-coworking" />
    <updated>2009-10-30T22:51:57-04:00</updated>
    <id>http://ryanbright.me/2009/10/30/id-like-some-jelly-with-my-coworking</id>
    <summary type="html">&lt;p&gt;&lt;a href="http://www.workatjelly.com/" title="Jelly"&gt;&lt;img src="/img/2009/10/jelly.png" alt="Jelly" class="alignleft" /&gt;&lt;/a&gt;
Since I started working at &lt;a href="http://www.awesomeinc.org/" title="Awesome Inc."&gt;Awesome Inc.&lt;/a&gt; in June, I&amp;#39;ve fallen in love with
the concept of creative individuals coming together within a single &lt;a href="http://en.wikipedia.org/wiki/Coworking" title="Coworking"&gt;coworking
space&lt;/a&gt; to share ideas and collaborate on projects. Our particular environment
contains a coworking space, art studio, engineering workshop, and &lt;a href="http://www.premieredancelex.com/" title="Premiere Dance of Lexington"&gt;dance
studio&lt;/a&gt;, and each component provides a unique contribution to the space&amp;#39;s
creative vibe. However, this style of workspace has its pitfalls, as many
creative, independent professionals are reluctant to invest the money required
to experience working in such an environment. While not founded for this
particular purpose, &lt;a href="http://workatjelly.com/" title="Jelly"&gt;Jelly&lt;/a&gt; provides an intermediate solution to those
professionals wishing to transcend the boundaries of home offices and coffee
shops without shelling out the fee associated with most coworking environments.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;What is Jelly?&lt;/p&gt;

&lt;p&gt;From the &lt;a href="http://workatjelly.com/" title="Jelly"&gt;Jelly website&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Jelly is a casual working event. It&amp;#39;s taken place in over a hundred cities
where people have come together (in a person&amp;#39;s home, a coffee shop, or an
office) to work for the day. We provide chairs and sofas, wireless internet,
and interesting people to talk to, collaborate with, and bounce ideas off of.&lt;/p&gt;

&lt;p&gt;You bring a laptop (or whatever you need to get your work done) and a
friendly disposition.&lt;/p&gt;

&lt;p&gt;We see a lot of designers, developers, and internet types, but we&amp;#39;ve also had
musicians, cooks, sound designers, tea sommeliers, product designers,
photographers, writers, and more.&lt;/p&gt;

&lt;p&gt;Some of us are entrepreneurs or freelancers. Others work in an office most of
the time, but work at Jelly for fresh ideas and a change of pace.&lt;/p&gt;

&lt;p&gt;No matter what you do or what you create, you&amp;#39;re welcome to come to Jelly and
share your talent and learn from others.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Companies such as Amazon, Hewlett-Packard, Lexmark, and IBM have had
longstanding presences in Lexington, and the city also has the students and
faculty of the University of Kentucky at its disposal. However, a majority of
the city&amp;#39;s innovators are sprinkled among these institutions with few
opportunities to collaborate and share ideas. Coworking spaces like &lt;a href="http://www.awesomeinc.org/" title="Awesome Inc."&gt;Awesome
Inc.&lt;/a&gt; and &lt;a href="http://collexion.net/" title="Collexion"&gt;Collexion&lt;/a&gt; provide outlets for their target audiences, but what
about individuals in other niches or those that don&amp;#39;t want to pay? Coffee shops
and libraries are open environments, but this openness permits saturation by
those that have no interest in collaborating.&lt;/p&gt;

&lt;p&gt;Hosting a biweekly Jelly would be a unique method for facilitating a more
cohesive Lexington while also bringing individuals together for at least one
common purpose - collaboration. Such an effort has the potential to lead to
even greater innovations for our community, and it could be an initial step
toward the greater unification of our city&amp;#39;s most brilliant minds.&lt;/p&gt;

&lt;p&gt;For more thoughts on the pursuit of office avoidance, &lt;a href="http://www.geekpreneur.com/" title="Geekpreneur"&gt;Geekpreneur&lt;/a&gt; has an
interesting article discussing &lt;a href="http://www.geekpreneur.com/alternatives-to-cafes-and-co-working" title="Alternatives to cafes and coworking"&gt;alternatives to cafes and coworking&lt;/a&gt;.&lt;/p&gt;
</summary>
  </entry>
  
  <entry>
    <title>5 Resources for Refining Your Programming Skills</title>
    <link href="http://ryanbright.me/2009/10/29/5-resources-for-refining-your-programming-skills" />
    <updated>2009-10-29T10:19:36-04:00</updated>
    <id>http://ryanbright.me/2009/10/29/5-resources-for-refining-your-programming-skills</id>
    <summary type="html">&lt;p&gt;As a software developer, I often find that it’s easy to become immersed in my
current projects without ever stopping to sharpen the tools in my developer
toolbox. Learning to approach problems through a variety of methods is a
valuable skill in developing elegant, efficient solutions. I’ve compiled a
short list of websites featuring problem sets, competitions, and unique
solution requirements to act as a resource for those programmers looking to get
a little more out of their code. I hope it’s useful!&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;&lt;strong&gt;1. &lt;a href="http://www.codechef.com/" title="Code Chef"&gt;Code Chef&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CodeChef holds monthly competitions in both India and the United States, and
each consists of 6-8 problems of varying difficulty levels. These contests
encourage participants to write elegant code by placing restrictions on the
execution time and source code file size for each problem. Due to the
restriction on execution time, most participants use compiled languages for
their solutions. However, solutions from a wide range of languages are
accepted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Languages:&lt;/strong&gt; Many&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. &lt;a href="http://codegolf.com/" title="Code Golf"&gt;Code Golf&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Code Golf offers a unique approach to solving puzzles, as its objective is to
generate solutions in the least number of keystrokes. This criteria challenges
programmers to develop  efficient solutions and requires that they develop both
their problem-solving abilities and programming knowledge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Languages:&lt;/strong&gt; Python, Perl, PHP, Ruby&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. &lt;a href="http://www.facebook.com/careers/puzzles.php" title="Facebook Engineering Puzzles"&gt;Facebook Engineering Puzzles&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The crew at Facebook has quite a few interesting puzzles to help satisfy your
appetite. In fact, they&amp;#39;ve cleverly labeled the difficulties as hors d&amp;#39;oeuvre,
snack, meal, and buffet to suppress your hunger as you develop your solutions.
There&amp;#39;s also a Facebook application that allows you to show off your progress
on your profile!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Languages:&lt;/strong&gt; C/C++, Java, Python, Perl, PHP, Ruby, Haskell, Erlang, OCaml&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. &lt;a href="http://projecteuler.net/" title="Project Euler"&gt;Project Euler&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Project Euler presents a series of mathematical and computer programming
puzzles with varying difficulty levels. To allow more developers to
participate, the problems are designed in a &amp;quot;chain&amp;quot; style so that easier
puzzles will introduce concepts that are useful in harder ones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Languages:&lt;/strong&gt; Any&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. &lt;a href="http://uva.onlinejudge.org/" title="UVa Online Judge"&gt;UVa Online Judge&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The UVa Online Judge website features a robust set of problems along with
periodic contests to gauge the skill level of participants.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Languages:&lt;/strong&gt; Varies by Contest&lt;/p&gt;
</summary>
  </entry>
  
  <entry>
    <title>The Fun Theory</title>
    <link href="http://ryanbright.me/2009/10/23/the-fun-theory" />
    <updated>2009-10-23T23:55:12-04:00</updated>
    <id>http://ryanbright.me/2009/10/23/the-fun-theory</id>
    <summary type="html">&lt;p&gt;The innovative engineers of Volkswagen recently launched a project designed to
tackle societal issues by developing entertaining products that alter human
behavior. &lt;a href="http://thefuntheory.com/" title="The Fun Theory"&gt;The Fun Theory&lt;/a&gt; has already developed approaches for countering
the issues of &lt;a href="http://thefuntheory.com/piano-staircase" title="Piano Staircase"&gt;obesity&lt;/a&gt;, &lt;a href="http://thefuntheory.com/worlds-deepest-bin" title="World&amp;#39;s Deepest Bin"&gt;waste disposal&lt;/a&gt;, and &lt;a href="http://thefuntheory.com/bottle-bank-arcade-machine" title="Bottle Bank Arcade Machine"&gt;glass recycling&lt;/a&gt;, and I&amp;#39;m
eagerly anticipating their next product release. Furthermore, I&amp;#39;d love to see
some similar projects pop up here in Lexington!&lt;/p&gt;
</summary>
  </entry>
  
  <entry>
    <title>TechStars 2009 Recap</title>
    <link href="http://ryanbright.me/2009/08/16/techstars-2009-recap" />
    <updated>2009-08-16T22:01:00-04:00</updated>
    <id>http://ryanbright.me/2009/08/16/techstars-2009-recap</id>
    <summary type="html">&lt;p&gt;&lt;a href="http://www.techstars.org/" title="TechStars" target="_blank"&gt;&lt;img src="/img/2009/08/techstars.png" alt="TechStars" class="alignleft" /&gt;&lt;/a&gt;
As fate would have it, I&amp;#39;ve found myself without quality air conditioning on a
day when such an amenity is quite necessary. Gazing around the &lt;a href="http://www.commongroundsoflexington.com/" title="Common Grounds Coffee House"&gt;coffee house&lt;/a&gt;
currently sheltering me from heat-induced migraines and an endless battle with
perspiration, I&amp;#39;ve become quite fascinated with each of the faces illuminated
by laptop screens and smart phones. Essentially the entire customer base is
bridged to the outside world by a technological medium, and each of us is
vigorously using our respective bridge for some unique (or &lt;a href="http://twitter.com/" title="Twitter"&gt;not so unique&lt;/a&gt;)
purpose. While some may consider this accessibility a plague to humanity, those
of us that cradle our electronic devices like newborn children have learned to
appreciate the possibilities presented by the rapid advancements in technology
seen through recent years. In order to keep the innovation flowing, it&amp;#39;s
imperative that brilliant, new ideas be nurtured and given the opportunity to
flourish. Last week, the &lt;a href="http://www.awesomeinc.org/" title="Awesome Inc."&gt;Awesome Inc.&lt;/a&gt; team traveled to Boulder, Colorado to
learn more about an organization that is doing just that.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;From the &lt;a href="http://www.techstars.org/" title="Tech Stars"&gt;TechStars website&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TechStars is a mentorship-driven seed stage investment fund. Each year we run
a summer-long program in Boulder, Colorado and Cambridge, Massachusetts.
We’re very selective - each year hundreds of companies apply to the program
and we only take about ten per city. These companies get up to $18,000 in
seed funding, a summer of intensive top-notch mentorship, and the chance to
pitch to angel investors and venture capitalists at the end of the summer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In summary, TechStars accepts twenty companies out of roughly five-hundred
applicants and provides those companies with &lt;a href="http://en.wikipedia.org/wiki/Seed_money" title="Seed money"&gt;seed funding&lt;/a&gt; and mentorship
during a three-month summer bootcamp. After an intensive preparation, each
company pitches its idea to investors and &lt;a href="http://en.wikipedia.org/wiki/Venture_capital" title="Venture capital"&gt;venture capitalists&lt;/a&gt; in an attempt
to raise the funding necessary to make its aspirations a reality. In past
years, the organization has aided projects like &lt;a href="http://intensedebate.com/" title="Intense Debate"&gt;IntenseDebate&lt;/a&gt;,
&lt;a href="http://socialthing.com/" title="Social thing"&gt;Socialthing!&lt;/a&gt;, &lt;a href="http://brightkite.com/" title="Bright kite"&gt;Brightkite&lt;/a&gt;, and &lt;a href="http://www.dailyburn.com/" title="Daily burn"&gt;Gyminee&lt;/a&gt; obtain the knowledge and
resources necessary to take their projects to the level that they are at today.
We had the pleasure of sitting through this year&amp;#39;s pitch day to see some of the
up-and-coming projects designed to take the world by storm. Here is the list of
companies that presented.&lt;/p&gt;

&lt;p&gt;Out of those ideas presented, my favorites were &lt;a href="http://www.nextbigsound.com/" title="Next Big Sound"&gt;Next Big Sound&lt;/a&gt;, &lt;a href="http://www.takecomics.com/" title="Take Comics"&gt;Take
Comics&lt;/a&gt;, &lt;a href="http://www.spryplanner.com/" title="Spry Planner"&gt;Spry&lt;/a&gt;, and &lt;a href="http://www.reteltechnologies.com/" title="ReTel Technologies"&gt;ReTel&lt;/a&gt;, but I find each of the ten to be highly
useful to its targeted audience. I hope to see each of these projects thrive
within the next few years and pave the way for future innovations. Keep doing
what you&amp;#39;re doing, TechStars! The world needs &lt;a href="http://ycombinator.com/" title="YCombinator"&gt;more organizations like you&lt;/a&gt;!&lt;/p&gt;
</summary>
  </entry>
  
</feed>
