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

<channel>
	<title>Artful Execution: The Websuasion Ethos</title>
	<atom:link href="http://jryanwilliams.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jryanwilliams.com</link>
	<description>J. Ryan Williams examines artfully executed web business.</description>
	<lastBuildDate>Sat, 07 Jan 2012 21:18:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Wrapping Rails: A Work In Progress</title>
		<link>http://jryanwilliams.com/2012/01/wrapping-rails-a-work-in-progress/</link>
		<comments>http://jryanwilliams.com/2012/01/wrapping-rails-a-work-in-progress/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 19:28:25 +0000</pubDate>
		<dc:creator>websuasion_ryan</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[cucumber]]></category>
		<category><![CDATA[decorators]]></category>
		<category><![CDATA[domain driven design]]></category>
		<category><![CDATA[presenters]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://jryanwilliams.com/?p=171</guid>
		<description><![CDATA[This article collects my reading and thoughts over the last couple of weeks regarding my personally evolving approach to Rails development. The goal is a separation of concerns which are agnostic of the framework and data structure; a view-layer-agnostic API for the domain with no required knowledge of internals; and a method for unit testing each layer without the framework (for speed and simplicity).]]></description>
			<content:encoded><![CDATA[<a href="http://jryanwilliams.com/2012/01/wrapping-rails-a-work-in-progress/" title="Wrapping Rails: A Work In Progress"><img src="http://jryanwilliams.com/wp-content/uploads/2012/01/Ruby_on_Rails-logo-150x150.png" alt="" class="feed-image" /></a><p><em>[This post is long and meandering... apologies. But such is the state of my mind and reason for posting it. I'm trying to work out some alternative approaches with Rails, so these are <strong>not</strong> intended to be how-to examples... more background on our evolving process and links to the influences whence they come. All this related junk is spinning 'round in my head, and if I don't get it down in a readable and refutable format, I won't be accomplishing much in the sleep department for several days.]</em></p>
<h2>The Code Smells</h2>
<p>As we work on a few new Rails 3.1 projects, I keep rubbing up against things that just feel a tad&#8230; <em>off</em> to me. Some of them are things I&#8217;m just now realizing have made life less fun. Others have always bugged me, like messy, untestable business logic in the views  (any conditionals, loop logic or awareness of model internals&#8230; form helpers, for instance).</p>
<p>In the second version of Capocus!, Norbert and I came up with a PagePiece concept where all that logic would take place in objects between the controller and view layer of Rails. It wasn&#8217;t very refined, and I don&#8217;t think we were even aware of Martin Fowler&#8217;s <a href="http://martinfowler.com/eaaDev/ModelViewPresenter.html">Model-View-Presenter pattern</a> at the time (or at least I wasn&#8217;t). But <tt>PagePiece</tt> was roughly a Presenter concept except it wasn&#8217;t bound to a domain model.  Basically, our idea was just smart helper objects that delivered partial views based on logic internal to the inheriting PagePiece class.</p>
<pre class="brush: ruby; title: ; notranslate">
module PagePiece
  def self.included(base)
    base.delegate :current_user, :logged_in?, :has_permission?, :to=&gt;;'(controller or nil)'
    base.send :include, InstanceMethods
  end

  module InstanceMethods
    def initialize(details={})
    @page = details[:page]
    @controller = details[:controller]
  end

  def page
    @page
  end

  def controller
    @controller
  end

  # then some methods which checked authorization privileges
  end
end
</pre>
<pre class="brush: ruby; title: ; notranslate">
# app/pieces/admin_menu_bar.rb
class AdminMenuBar
include PagePiece
  def render_options
    can_edit? ? {:partial =&gt;; 'layouts/admin'} : {:nothing =&gt;; true}
  end
end
</pre>
<p>That&#8217;s a really simple example, but of course the logic could get as rich as you like&#8230; switching to different partials for different user roles, perhaps. Whatever you like. What was cool about it was you could do this in the view:</p>
<pre class="brush: ruby; title: ; notranslate">
# some haml template

= display AdminMenuBar
</pre>
<p>So, our application template would look something like this:</p>
<pre class="brush: ruby; title: ; notranslate">
# app/layouts/application.html.haml
!!! 5
%html
  %head
    %title = display Title
    = stylesheet_link_tag &quot;application&quot;
    = javascript_include_tag &quot;application&quot;
  %body
    = display AdminMenuBar
    = display Messages
    = yield
    = display Footer
</pre>
<p>Which was nice. No logic. Brevity. Clarity. But we still had some logic residing in the partials called by <tt>PagePiece</tt> objects for things like loops and form helpers. So that was a bit irksome. And things could get messy in that app/pieces directory if you weren&#8217;t careful, since the objects didn&#8217;t track cleanly to the MVC dealio&#8230; sorta like the JavaScript directory before Assets Pipeline came along.</p>
<p>So, now we have <a href="https://github.com/defunkt/mustache">Mustache</a>, which I&#8217;ve yet to implement, but I really really like. It solves the remaining logic concerns for us (with a little additional help regarding forms with some <a href="https://gist.github.com/954994">approach like this</a>, or better yet, <a href="http://pivotallabs.com/users/jdean/blog/articles/1706-form-backing-objects-for-fun-and-profit%29">this</a>). So that takes care of the logic in view templates, at least. And we get some nice, reusable templates for JavaScript actions to boot. Plus, I still get to use my beloved HAML. I hate writing HTML&#8230; so, sue me.</p>
<h2>Your Dill, Vinegar and Cucumber In My Pickle</h2>
<p>But there are still a couple of irksome things. It&#8217;s an old argument, but Rails MVC works great&#8230; until it doesn&#8217;t. Development is <strong>fast</strong>&#8230; until it isn&#8217;t. Once you have a complicated domain entity that doesn&#8217;t track cleanly to the ORM approach of ActiveRecord, things get a bit cloudy in your &#8220;model&#8221;. And in this house, we&#8217;re mostly using NoSQL these days anyway (Mongoid currently) so ActiveRecord isn&#8217;t something we have to deal with or care about (for better or worse). And that has brought out the code smells for me. What I&#8217;m realizing is I need <em>clarification of duty wrappers</em>.</p>
<p>There seems to be a lot of benefits to wrapping. Corey Haines did a <a href="http://confreaks.net/videos/641-gogaruco2011-fast-rails-tests">wonderful talk on speeding up Rspec unit tests</a> by simply staying in Ruby and ignoring Rails&#8230; as mother nature intended. So, he&#8217;s basically creating delegate classes, a concept I recently started wrapping my head around as I learn Objective-C for our iOS app development. <a href="http://blog.firsthand.ca">Nicholas Henry</a> is blogging pretty extensively about very similar wrappers for domain logic and has put a lot of good thought into it in my opinion (more on that in a bit). Details aside, he seems to be heading toward creating services, which is something Pat Maddox gets into in his talk on <a href="http://patmaddox.com/blog/domain-driven-rails-video-online.html">constraint-driven changes to Rails development approach</a>. And <a href="https://twitter.com/adomokos">Attila Domoko</a> is kind enough to provide <a href="http://www.adomokos.com/2011/09/get-out-of-my-controller-and-from.html">his wrapper approach</a>.</p>
<p>Then there is the whole conversation going on now about framework decoupled (if not agnostic) development spurred by Uncle Bob Martin&#8217;s short video on <a href="http://cleancoder.posterous.com/framework-prudence">framework prudence</a>. The argument <em>against</em> that idea, expressed by a commenter, being you should either trust your framework or build your own. I don&#8217;t buy it. I love Ruby and Rails. But, I have some <strong>seriously coupled</strong> Rails 1.2.3 apps still running that I&#8217;d love to get into Rails 3 (SAME FRAMEWORK, RIGHT??!) and can&#8217;t upgrade without considerable redesign (starting over would be faster!). That&#8217;s my fault. I didn&#8217;t insulate my app from the framework. It has nothing to do with trust. <strong>Things change.</strong> We find better ways of working. So, I&#8217;d rather make my life easier in the long run&#8230; even if that means a few extra steps and <em>potential</em> &#8220;over-engineering&#8221; for me now (I&#8217;m good at over-engineering&#8230; or bad <em>about</em> it. Not a poster-child for pragmatism in that department. But I am getting counseling and we&#8217;re hoping for the best). And anyway, the extra steps to insulate my app will quickly add up to a cost of null (if not turn into a big asset) once I have faster running test and a more agile codebase. Especially once the process is down, I&#8217;ve meta-programed away duplication and built whatever generators I need. See, I&#8217;m doing a damn good job of selling this to myself.</p>
<p>So, let me define what I want&#8230;</p>
<h2>I Wanna Be Free</h2>
<p>From a broad perspective, these are the goals:</p>
<ul>
<li><strong>Insulation</strong> &#8211; Separation of Concerns which are agnostic of the framework and data structure</li>
<li><strong>Domain Clarity</strong> &#8211; A clear, view-layer-agnostic API for the domain with no required knowledge of internals.</li>
<li><strong>Reasonable Test Coverage</strong> &#8211; Full stack Cucumber acceptance test of the domain, but fast, pure Ruby Rspecs to drive development.</li>
</ul>
<h2>The Stepping Stones</h2>
<p>So, here&#8217;s the development cycle I&#8217;m moving toward (based largely off pains discovered by NOT doing it this way)</p>
<ol>
<li>Start with <a href="http://benmabey.com/2008/05/19/imperative-vs-declarative-scenarios-in-user-stories.html">declarative</a> Cucumber scenarios to help discover the domain (focusing on API concerns, not view or business logic!)</li>
<li>Quickly jump into Rspec to test-drive behavior behind the API, handle failures and deal with edge cases</li>
<li>Once the API is stable, refine the view templates (if you need http) and format JSON, XML, RSS, PDF, etc. output as needed.</li>
<li>Extract all framework or database specific code into isolation wrappers, point the tests at them, get the tests <strong>fast</strong> (no Rails)</li>
<li>Repeat for all domain concerns</li>
</ol>
<h2>Peeling The Onion</h2>
<p>Cool. Process is down. Now what am I dealing with? I have a gut feeling for how my concerns are separated to achieve both the goals and process I desire, but I can&#8217;t be sure until it&#8217;s put into practice. I reserve the right to change my mind (and you are welcome to set me straight if I&#8217;m talking crazy here), but it falls <em>something</em> like this:</p>
<h3>The Data Model</h3>
<p>So, the Rails Model? Not really a model, is it? I mean, it <em>can</em> be&#8230; if you want to be bound to both the framework (or its current version) and the database you chose at the project start. I have a feeling Rails will change, and I&#8217;m almost certain that I&#8217;m <em>uncertain</em> MongoDB will be my preference for this or every other app down the road (and hell, I may well want to use multiple databases for different purposes).</p>
<p>So, I&#8217;ll instead call this layer the<strong> data model</strong>. That means, only framework and database specific things go in here. It should not contain any model behavior which isn&#8217;t for some reason necessary for the framework or database. So, probably to be kept rather lean. After all, it&#8217;s the part I&#8217;m going to have to change down the road if I migrate frameworks, databases or even the mapper. I want the least work there possible. Some will be unavoidable as different databases use different find and relational strategies (those nasty custom SQL queries, yep&#8230; they go here), but the goal is to extract any of that beyond model specific scopes to a mixin&#8230; most mappers cover this pretty well as is.</p>
<h3>The Domain Model</h3>
<p>This is the juicy bit. Fat model, sure&#8230; but only for the stuff it needs to know about. NO VIEW RELATED LOGIC. The view has nothing to do with the domain entity. NO KNOWLEDGE OF OTHER ENTITIES. <tt>Person</tt> does not need to have inherent knowledge of <tt>AccountBalance</tt>. And there shouldn&#8217;t have to be a direct correlation between the <strong>domain model</strong> and a <em>single</em> data model.</p>
<p>For example, we&#8217;ve learned over the years that <tt>Users</tt> and <tt>People</tt> are very different things. The <tt>User</tt> model is about access (authentication and authorization) and that&#8217;s it. A <tt>Person</tt> is just that&#8230; it describes what a <em>person</em> is within that domain. You may have people in the domain who have no access to the domain (buyer contacts, perhaps). So, it&#8217;s silly to deal with access conditions when you don&#8217;t need them and it&#8217;s equally silly to treat <em>users</em> as some different kind of person. So, we delegate or use whatever method we desire in our <em>data models</em> to unify <tt>User</tt> and <tt>Person</tt> when we need both. But Rails&#8217; MVC makes this sorta cloudy from a domain perspective. The domain model should only care about <strong>me</strong> (<em>THE</em> <tt>User</tt>) and <strong>people</strong> (all other people I am not). So, My domain model&#8217;s API should structure things likewise. And that will include a bunch of different <em>Value Objects</em> (as <a href="https://github.com/iain">Iain Hecker</a> described a year or so back in <a href="http://iain.nl/domain-driven-design-building-blocks-in-ruby">his article on Domain Driven Building Blocks</a>), which are things like <tt>Address</tt>, <tt>PhoneNumber</tt> and of course <tt>AntidisestablishmentarianismStance</tt>. I suppose <tt>User</tt> is actually a Value Object of <tt>Person</tt> which deals with access&#8230; but I digress. Again.</p>
<p>Point is, how I organize data behind the scenes has zero value for the domain. It wants what it wants&#8230; it&#8217;s like the heart that way. *swoon*</p>
<h3>Services</h3>
<p>There&#8217;s been lots of talk in the last year or so about the concept of <strong>services</strong>. Their purpose, to my mind, is to deal with any task that is beyond the scope of a single domain model or involves procedures the domain model shouldn&#8217;t care about. Some examples might be <tt>RegistrationMailService</tt>, <tt>PayrollService</tt>, <tt>MessageNotificationService</tt>, etc. where the service may be interacting with a single domain model, several domain models or none. They are really models on the same level as an entity &#8212; at least, looking outside-in they should be &#8212; with their own API that can be called by a controller. Making these type of procedures stand-alone makes a lot of sense. It simplifies my domain models, it decouples domain models which otherwise might have had to interact within the &#8220;fat&#8221; model and it makes isolated testing of the service easy.</p>
<p>As I mentioned above, Nicholas Henry has talked of <a href="http://blog.firsthand.ca/2011/12/your-rails-application-is-missing.html">his approach to domain modeling which he splits into <em>Facade</em> and <em>Use Case</em></a>, which I rather like. Facade would be what I&#8217;m calling &#8220;Domain Model&#8221; and Use Case what I call &#8220;Service&#8221;&#8230; I like my terminology better. Seems more explicit and easier to follow&#8230; but a horse is a horse, of course.</p>
<p><em>Note: Likewise, some have used the &#8220;Presenter&#8221; term in this realm too&#8230; which is equally confusing to me as the name implies &#8212; though does not mean &#8212; a view context the domain/service layer should not have. More on that below.</em></p>
<h3>The Controller</h3>
<p>So this is the Sergeant Schultz of our onion&#8230; &#8220;I hear nothing, I see nothing, I know nothing!&#8221;. Okay, it knows how to route and what domain model method to call. Maybe that was a bad analogy. Regardless, It&#8217;s just a dumb traffic cop (no offense to smart traffic cops). This has become the Rails Way&#153 more or less, and Corey Haines has talked on numerous occasions about <a href="http://www.adomokos.com/2011/04/running-rails-rspec-tests-without-rails.html?showComment=1302880085636#c8190505485489994604">his rule that controllers cannot interact with ActiveRecord</a>. Totally agree. So, somewhat conveniently, we can just call to our new domain model layer.</p>
<h3>The View Template</h3>
<p>I&#8217;m going to skip over a layer and jump to the end for a second: The View Template. As I discussed waaaaaay up at the top of this opus of mind-spew, view <em>templates</em> should be <em>dumb dumb dumb</em>. No logic. It spits out either formatted json or html (or rss, xml, etc.). And preferably with the same template for all (which, again, I hope to find <a href="http://mustache.github.com/mustache.5.html">Mustache</a> an aid in this effort). What&#8217;s important is that, just as I want the domain model framework and database agnostic, I want the view UI agnostic. iOS, Android or other mobile device app hitting an API? Web browser hitting http? ExtJS, jQuery or whatever other layer you want to build a http web/mobile GUI with? A reader client pulling an RSS feed? Great. All the same to me. Heck, Gem up several UI approaches and give developers options.</p>
<p>Note, above I said view <em>templates</em> should be dumb. I&#8217;m not saying the view <strong>object</strong> should be dumb. While I know Rails technically has a view object, its kind of a view object by convention. We have little control over it and end up mixing logic in the view <em>templates</em> in favor of a little convenience. And that&#8217;s fine&#8230; until it&#8217;s not. I want to be able to quickly unit test view logic and make sweeping UI changes without having to worry about the logic therein AND without needing to know anything about the application internals. So&#8230; not having a view controller of that nature, I suppose we need one.</p>
<h3>The View Object(s)</h3>
<p>As I alluded at the onset with our old <tt>PagePiece</tt> thingy, there needs to be something that deals with <em>view logic</em> that is itself a testable object. People are using Decorators and View Presenters for this purpose. There seems to be a real lack of agreement on what one or the other is. But here is how I&#8217;m currently thinking of them (you may disagree):</p>
<ol>
<li><strong>Decorators</strong> remove view formatting from the <em>domain model</em> or <em>service</em></li>
<li><strong>View Presenters</strong> control the presentation of elements on your page for any given context</li>
</ol>
<p>They are very different things. And then we may even have a <em>third</em> category of view object: <strong>View Resources</strong>. I know&#8230; freakin&#8217; onions and their layers! I&#8217;ll explain&#8230;</p>
<h4>Decorator Usage</h4>
<p>As I understand the <em>decorator</em> concept, the idea is to take any view related methods out of the model&#8230; like time formatting, &#8220;fullname&#8221; methods which combine several fields, etc. Excellent&#8230; that stuff always bugged me sitting in the model. <a href="https://github.com/jcasimir/draper">Draper</a> is a pretty cool looking gem which uses the decorator approach. I&#8217;m not sure it will work with my abstracted domain models, but I&#8217;m going to give it a shot.</p>
<h4>View Presenter Usage</h4>
<p>The view presenters, how define them, are very much like our old <tt>PagePiece</tt> concept above. Given a context (my role, the current url&#8217;s section or subsection, my preference settings, etc.) should I show this bit, that bit, or no bit? </p>
<h4>View Resource Usage</h4>
<p>I don&#8217;t like Rails helper methods. I rarely use them&#8230; and feel dirty when I do. Just seems like &#8212; Ruby being an object oriented language &#8212; we should be working with smarty-pants objects. So View Resources are the smarty-pants alternative to Helpers. Really, you could consider Decorators and Presenters as I define them as View Resources as well, but I separate them into their own categories due to their specific behaviors. View Resources is essentially a catch-all.</p>
<p>This is where things like Form Backing Objects fit to me (see <a href="http://pivotallabs.com/users/jdean/blog/articles/1706-form-backing-objects-for-fun-and-profit%29">Jeff Dean&#8217;s article on form backers</a>). Jeff suggests these fit in the <em>other</em> (non view) <em>Presenter</em>. Which, may make sense in their apps, but for me that would mean it is a service, which it clearly is not. Services are revealed through the domain. The user is blissfully unaware of any behind-the-scenes nonsense that makes a form work, as they should be.</p>
<p>It&#8217;s possible that View Resources could be mixins for Decorators or Presenters. I&#8217;m not sure how I&#8217;ll approach that yet. But in the Form Backing Object instance, it makes sense that the basic behavior could be extracted to a mixin and then the specifics of the form supplied by the domain model&#8217;s decorator, since that is a view relationship directly tied to the domain model.</p>
<h2>Structure</h2>
<p>Nobody likes a bunch of junk randomly stuck in lib/ worse than I. So we need to pull this all into conventional app sub-directories. We&#8217;ll leave the rails default be, of course. No need to reinvent the wagon wheel:</p>
<pre class="brush: ruby; title: ; notranslate">
app/assets
app/controllers
app/helpers #bleh
app/models #remember, these are my framework specific data models
app/views #should be templates, but whatevs
</pre>
<p>and now my additions:</p>
<pre class="brush: ruby; title: ; notranslate">
app/domains
app/services
app/decorators # likely mapping conventionally to domain models and services
app/presenters # mapping conventions the same as controller-to-view
app/resources #our various view object mixins and whatnot
</pre>
<p>Excellent. I think that will work.</p>
<h2>Conclusion</h2>
<p>You made it this far. Dang. Thanks for indulging me. I&#8217;m certainly interested in any feedback you may have (aghast, snickering or otherwise). This is a work in progress (alpha thoughts, you might say), and I&#8217;m sure I&#8217;ll look back in a few months and groan at the moronicality. But I&#8217;ll certainly try to share my experience putting this all together and my thoughts overall as they shift. </p>
]]></content:encoded>
			<wfw:commentRss>http://jryanwilliams.com/2012/01/wrapping-rails-a-work-in-progress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The seeds of an ethos&#8230;</title>
		<link>http://jryanwilliams.com/2010/10/the-seeds-of-an-ethos/</link>
		<comments>http://jryanwilliams.com/2010/10/the-seeds-of-an-ethos/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 22:12:16 +0000</pubDate>
		<dc:creator>websuasion_ryan</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Ethos]]></category>

		<guid isPermaLink="false">http://jryanwilliams.com/?p=157</guid>
		<description><![CDATA[Before I dive into the myriad of topics and applications of The Websuasion Ethos, I should probably explain its origins. This post explains where many of our concepts first originated and why our belief system is the basis for everything we do.]]></description>
			<content:encoded><![CDATA[<a href="http://jryanwilliams.com/2010/10/the-seeds-of-an-ethos/" title="The seeds of an ethos..."><img src="http://jryanwilliams.com/wp-content/uploads/2010/10/aristotle-150x150.png" alt="" class="feed-image" /></a><p>When Norbert and I started Websuasion in 2007, we already had in mind several core principles which we agreed would be the foundation of our company. In fact, we spent months throughout 2006 (hours per day) loosely defining, debating and working over what would ultimately become our <em>ethos</em>. It was to be a constant reference point of guidance; a rallying cry; a belief system. But we also understood this ethos needed to be abstract enough to be flexible. Things change &#8212; as I&#8217;ve learned, often drastically and without warning &#8212; and if your system breaks in the process, it&#8217;s of little value to you.</p>
<p>Norbert came from the very earliest days of Mindspring, and like many people who experienced that work environment, he was profoundly influenced by the company&#8217;s <a href="http://en.wikipedia.org/wiki/MindSpring#Core_Values_.26_Beliefs">&#8220;Core Values and Beliefs&#8221;</a>. He and I were also both from the post-punk underground cultural movement from which sprung the <a href="http://en.wikipedia.org/wiki/Do_it_yourself">DIY</a> (Do It Yourself) movement in music, art and technology. This mindset &#8212; that with enough information, dedication, practice and patience you could accomplish anything &#8212; is largely what attracted us to the internet in the earliest days of the web. Then, as we delved into the Ruby programming community, the concepts of <a href="http://agilemanifesto.org">Agile</a> development made as much of an impact on our business process as it did on our programming.</p>
<p>This trinity of influence was the basis for the Websuasion Ethos. Our beliefs would guide our interactions with one another, with colleagues, with employees, with clients and with our day to day work. Early in 2007, we tried to boil our concepts down to a neat and concise list &#8212; similar to the &#8220;Core Values and Beliefs&#8221; &#8212; and found it far too unwieldy. We then developed it into a short book, but found we were constantly editing, rewriting and fiddling with an ever-expanding conceptual beast. So, a blog seemed the perfect place to define and expand upon our ideas over time.</p>
<h2>Why should you care?</h2>
<p>The Websuasion Ethos was never intended to be specific only to our organization. We wanted our company to serve as its example, but more importantly, we wanted to share our ideas openly with the larger business community. We wanted to use our beliefs as a measuring stick to gauge the work we did for our clientele. But, we also intended &#8212; somewhat audaciously &#8212; to expect our clients to make the effort to understand and operate in the spirit of these concepts. We simply felt that our core beliefs would translate to better business and greater success for all who took the time to contemplate their purpose.</p>
<p>I am now charged with bringing our ethos to light as best I can. These concepts have grown in my mind to be more important than ourselves&#8230; more important than our company. I realize now that the ideological seeds Norbert and I planted together in 2006 have helped me to weather tough times and provided me clearer vision for the future of this company. I&#8217;ve seen clients (often initially skeptical) find their own success though many of these principles. Going forward with this blog, I hope you find value in these concepts. As we wade though together topic by topic, I welcome your comments, debate, suggestions, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://jryanwilliams.com/2010/10/the-seeds-of-an-ethos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Twitter policy: blocking irrelevant data-points</title>
		<link>http://jryanwilliams.com/2010/09/blocking-irrelevant-twitter-follow/</link>
		<comments>http://jryanwilliams.com/2010/09/blocking-irrelevant-twitter-follow/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 23:47:39 +0000</pubDate>
		<dc:creator>websuasion_ryan</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Community Building]]></category>
		<category><![CDATA[Microblogging]]></category>
		<category><![CDATA[Relevance]]></category>
		<category><![CDATA[Social Networks]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://jryanwilliams.com/?p=94</guid>
		<description><![CDATA[I've taken to mass blocking Twitter followers I deem to be irrelevant. Here I explain why and what I see as the gains of such a policy.]]></description>
			<content:encoded><![CDATA[<a href="http://jryanwilliams.com/2010/09/blocking-irrelevant-twitter-follow/" title="New Twitter policy: blocking irrelevant data-points"><img src="http://jryanwilliams.com/wp-content/uploads/2010/10/twitter_256-150x150.png" alt="" class="feed-image" /></a><p>Slowly, over the last few weeks, I&#8217;ve been cleaning out my Twitter &#8220;Followers&#8221;. Yes, follow<strong>ers</strong>&#8230; by simply blocking them. I&#8217;m not doing this lightly. I realize that on the surface, this flies in the face of the open, embracing love-in that social media is purported by so many to be. And it also dramatically drives down that superficial impression that I&#8217;m a highly respected professional in my field who has six digits of data points hanging on my every word. I mean, anyone with thousands of followers must have incredible &#8220;thought leader&#8221; foo, right?</p>
<p>I manage several personal Twitter accounts. Some are very active, other infrequently tended (like @websuasion_ryan of late) and still others laying in wait for back-burnered project momentum to kick back in as time allows. When looking at my most active profiles, one thing is incredibly clear: those accounts are managed with unwavering scrutiny. I&#8217;m only following people who I actually know, who I respect, who inform my decisions, who are emotionally or intellectually like-minded and who challenge me to think. In short, I follow <strong>real people</strong> who add value to my day. And likewise, now I intend to manage my followers with the same scrutiny. You need to be following for legitimate reasons.</p>
<p>Discerning valid followers means actually reviewing the profile, posts and links of every single twitter account that follows me. It&#8217;s tedious work. It&#8217;s draining. It has occasionally made me incredibly sad. Incredibly frustrated. It has occasionally raised questions regarding the true nature and value of social networking. I&#8217;ve wondered if all Twits are just that&#8230; self-serving, robotic, press-release-link spewing cogs foolishly chasing the veneer of relevance and wasting everyone&#8217;s time in the process. What do you get when 100,000 deaf marketing gurus, life-coaches, automated bloggers and countless other self-proclaimed niche experts all follow one another? Noise. You get mind-numbing noise&#8230; consisting mostly of Mashable retweets.</p>
<p>Thankfully, that&#8217;s just the chaff. And there&#8217;s a lot of chaff. A painful lot. But once the noisemakers are blocked into submission, I&#8217;m finding that I have a very clean and amazing resource of my own design. A resource that I actually <em>enjoy</em> logging into.</p>
<p>Maybe you are wondering &#8220;Why bother blocking your followers, though. They don&#8217;t show up in your feed unless you follow back. Can&#8217;t you just ignore who you want to ignore?&#8221; True. And like many others, I&#8217;ve done that for a long time. Now, I&#8217;ve decided that&#8217;s a half-assed approach. Here&#8217;s why:</p>
<p><strong><em>I doubt your commitment to Sparkle Motion</em></strong>: I want to know how many <em>relevant</em> followers I have. If I&#8217;m building a community, I need to be able to gauge my performance with that community. Are my thoughts, opinions, articles, retweets, replies, jokes or personal anecdotes adding value to <em>their</em> day? It&#8217;s a tricky thing to measure even with the cleanest of follower lists, but it&#8217;s absolutely impossible to measure when you can&#8217;t trust the numbers. If 80% of my followers obviously are not listening or interacting, then how do I get at the legitimate measure? This alone has me convinced that the social marketing metrics used by most companies are useless.</p>
<p><strong><em>The forest of junk timber is obscuring my precious hardwoods</em></strong>: Glance over a few thousand followers. Go ahead, I&#8217;ll wait. *makes a sandwich* *builds a home addition* Okay, you back? I&#8217;m guessing you found some followers are easy to eliminate&#8230; obvious spammers, dead accounts, misguided corporate branding efforts, etc. But some are really tough decisions. Some people are really bad about providing a clear bio. But once you dig in a bit, they share some really interesting perspectives. I missed some really great people over the last couple of years because their needle of a profile didn&#8217;t pop out of the haystack. Having a smaller base makes it easier to find the gems.</p>
<p><em><strong>Approachability and celebrity are mutually exclusive</strong></em>: Who am I going to do business with: a socialite who <em>seems</em> to be a the toast of the internet and dispenses how-to generalities; or an accessible everyman who displays expertise in their field and can make the things I need happen? Maybe corporations focus the internet-famous. Most small businesses want the job done well, on time and on budget. They don&#8217;t care how many Tweetups someone is speaking at. Chasing the numbers is just bad business for most working professionals. Building a tight core of strong relationships is what&#8217;s important. Our relationship to colleagues, peers and clients is everything. And in my experience, accessibility is the first step to building those relationships.</p>
<p>The downside of all of this is potentially limiting that accessibility inadvertently to someone who does care and <em>is</em> relevant. Unfortunately, blocking is the only real option Twitter provides to manage followers. So, if you&#8217;ve found yourself wrongly blocked by me, I apologize. Please feel free to reply to me. I&#8217;ll pick it up in my Tweetdeck search, remove the block and consider following back.</p>
]]></content:encoded>
			<wfw:commentRss>http://jryanwilliams.com/2010/09/blocking-irrelevant-twitter-follow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Social Hiatus Explained</title>
		<link>http://jryanwilliams.com/2010/02/social-hiatus-explained/</link>
		<comments>http://jryanwilliams.com/2010/02/social-hiatus-explained/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 16:45:58 +0000</pubDate>
		<dc:creator>websuasion_ryan</dc:creator>
				<category><![CDATA[Articles]]></category>

		<guid isPermaLink="false">http://jryanwilliams.com/?p=72</guid>
		<description><![CDATA[I&#8217;ve been away from blogging, social media and the like with respect to Websuasion for a while now. I feel a bit awkward coming back to it without explaining what caused the hiatus, what we&#8217;ve been doing since and where things are heading now. On Memorial Day of 2009, my long-time friend and business partner, [...]]]></description>
			<content:encoded><![CDATA[<a href="http://jryanwilliams.com/2010/02/social-hiatus-explained/" title="Social Hiatus Explained"><img src="http://jryanwilliams.com/wp-content/uploads/2010/02/norbert-150x150.jpg" alt="" class="feed-image" /></a><p>I&#8217;ve been away from blogging, social media and the like with respect to Websuasion for a while now. I feel a bit awkward coming back to it without explaining what caused the hiatus, what we&#8217;ve been doing since and where things are heading now.</p>
<p>On Memorial Day of 2009, my long-time friend and business partner, Norbert Taylor, passed away.<span id="more-72"></span> I won&#8217;t go into detail, but it was a terrible shock to his family, friends and colleagues. For me personally, it was devastating. Though we were separated by the over 700 miles between Atlanta and Chicago, we spent large portions of every day working together on our business. It was the most perfect intellectual working relationship I&#8217;ve ever experienced &#8212; a true partnership. We were so much alike, we could finish one another&#8217;s sentences. And yet, our strengths stood in sharp, complementary contrast. We shared a clear vision of what we wanted to accomplish, and I was honored to work with him. Most importantly, he was my closest friend.</p>
<p>We started Websuasion, in part, because of our mutual love (as both web developers and users) for the internet. We were mesmerized by the opportunities web technology can offer when done well. But, we were often frustrated by the vast chasms separating technical expertise, effective marketing and successful business models. The best practitioners of each seemed to be unaware of one another or unable to communicate their knowledge and experience outside their own community.</p>
<p>We noticed that great business models were often hampered by poor choice of technology. We saw exciting technical innovation failing to communicate their opportunities to businesses and going unrecognized. And, we saw an ocean of old-guard marketers assuming the traditional approaches would work in the internet medium while failing to understand how technology could be used to more appropriately and efficiently connect with users. In short, we felt there wasn&#8217;t anyone out there translating between these factions, and&#8230; well, <em>teaching</em>.</p>
<p>So, Websuasion grew into two areas of focus. Internally, we would develop our own <em>web application platform</em> on which we could build quality sites and web services for our clients quickly and cost-effectively. Externally, we would do our best to impart why businesses should care about <em>good web development practices</em>; teach web marketing and PR departments how to better utilize the tools available to <em>engage their customers</em>; help commercial, nonprofit and government organizations to understand what constitutes a <em>strong technical and customer strategy</em>; explain the necessary roles and appropriate expectations business should have when <em>hiring a web team</em>; demonstrate how best to ensure their technical plan falls into place <em>on time and on budget</em>; and finally, stress the importance of <em>continuously measuring their success</em>.</p>
<h2>Capocus</h2>
<p>We&#8217;ve spent several years developing our own <em>web application platform</em>, called Capocus. We&#8217;ve launched several large-scale websites with it and learned a lot about flexible application design, usability and the basic functionality needed for most successful web implementations. Our previous versions have been proprietary releases, but it was always our intention to release Capocus as open source software. Before his death, Norbert spent the last several months completely re-designing our software armed with all that we&#8217;d learned. Since his death, I&#8217;ve picked up and moved that work forward with the help of our friends and fellow IBG cooperative members at <a href="http://12ftguru.com">Twelve Foot Guru</a>. There is still a lot to be done, but we hope to unveil a beta release of Capocus 3.0 by summer.</p>
<h2>Podcast</h2>
<p>Just before Norbert&#8217;s death, he and I recorded several episodes of a podcast aimed at doing some of the teaching work we felt was needed. They were never released for obvious reasons. But now, I want to rectify that. I&#8217;ll be posting up the first couple of episodes next week. They are a bit dated, but the information is still relevant. And I just really think they should see the light of day.</p>
<h2>Moving Forward</h2>
<p>Moving Websuasion forward over the last few months has been daunting. As I told a friend recently, &#8220;It&#8217;s much more difficult to rebuild a company than it is to build one.&#8221; Our development and client work has continued, but I needed time to rediscover the heart of Websuasion&#8217;s message. That&#8217;s becoming clearer each day, and I hope that I can use this spot on the web to provide a narrative of experiences and ideas which you might find helpful. You can aid me in that goal by offering topic suggestions (click the tab to the left) and sharing your comments on <a href="http://twitter.com/websuasion_ryan">Twitter</a>, <a href="http://www.facebook.com/j.ryan.williams">Facebook</a>, <a href="http://www.linkedin.com/in/websuasionatl">LinkedIn</a> and below. I look forward to the ongoing conversation, and thank you for reading!</p>
]]></content:encoded>
			<wfw:commentRss>http://jryanwilliams.com/2010/02/social-hiatus-explained/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPad ShmiPad?</title>
		<link>http://jryanwilliams.com/2010/02/ipad-immersive-tactile-usability/</link>
		<comments>http://jryanwilliams.com/2010/02/ipad-immersive-tactile-usability/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 01:08:30 +0000</pubDate>
		<dc:creator>websuasion_ryan</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Interface Design]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://jryanwilliams.com/?p=53</guid>
		<description><![CDATA[Is the iPad worth all the fuss? I think probably it is. It won&#8217;t be perfect out of the gate, but from my perspective, there is a need for a such a device&#8230; something to stand between SmartPhone and Power Computing. Especially if it can simultaneously provide two things particularly well with which those other [...]]]></description>
			<content:encoded><![CDATA[<a href="http://jryanwilliams.com/2010/02/ipad-immersive-tactile-usability/" title="iPad ShmiPad?"><img src="http://jryanwilliams.com/wp-content/uploads/2010/02/iPad-150x150.png" alt="" class="feed-image" /></a><p>Is the iPad worth all the fuss? I think probably it is. It won&#8217;t be perfect out of the gate, but from my perspective, there is a need for a such a device&#8230; something to stand between <em>SmartPhone</em> and <em>Power Computing</em>. Especially if it can simultaneously provide two things particularly well with which those other two computing categories have difficulty: immersive experience and tactile usability.</p>
<p>And, of course, Apple has done it twice before.<span id="more-53"></span></p>
<h2>The iPod</h2>
<p>Granted, the iPod did not change my life. It did, however, put a large swath of my beloved music collection on my hip. That, in turn, frequently brightened my day, my car ride, my yardwork, etc. It can be argued that any mp3 player would have done the same. But, being a Mac user, the choice was mainly convenience and brand trust. And as I became a fan of podcasts, the iTunes store subscriptions became a further convenience. iPod designs have come a long way in a short time, and Apple has quickly learned from their mistakes. And all that led to a real revolution.</p>
<h2>The iPhone</h2>
<p>I resisted the iPhone until the 3G model appeared. Before that, I had a Blackberry, which I was loathed to use. I checked email only when stuck without a better option. The usability was horrendous. The support (particularly on Mac) was even worse. I finally relented &#8212; paying both the high iPhone price tag and the significant monthly plan upgrade. And, to my surprise, it actually <em>did</em> change the way I work and live. Significantly.</p>
<p>Now, so much of my life is tied to the iPhone. It&#8217;s my alarm clock throughout the day. It&#8217;s replaced my iPod as default mobile music player except on the longest of trips. I capture song ideas, ramble voice memos to myself or record on-the-spot audio for use in podcasts&#8230; all with <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=289584303&amp;mt=8">4Tracks Lite</a>. I plan my tasks with <a href="http://culturedcode.com/things/">Things</a>; track my mileage with <a href="http://milebug.com/">MileBug Lite</a>; and I even spec website implementations and software development with <a href="http://pivotallabs.com/users/dan/blog/articles/1112-mobitracker-new-iphone-app-for-pivotal-tracker">MobiTracker</a> as ideas strike me on the go.  And of course, I can check my email, Twitter, LinkedIn, Facebook and all that other social and networking stuff. The iPhone is even a decent stand-in for an eBook and PDF reader with the <a href="http://www.lexcycle.com/">Stanza</a> and <a href="http://www.m.amazon.com/gp/feature.html?ie=UTF8&amp;docId=1000301301">Kindle</a> apps.</p>
<p>The iPhone can pull a surprising amount of weight. But there are times when it begins to push its limits. I currently much prefer to deal with social networking and email correspondence on the laptop/desktop. The keyboard and screen real estate is just so much more efficient and practical. And while I hate (and I mean hate) reading eBooks on the laptop, the iPhone&#8217;s screen real estate is somewhat limiting here as well &#8212; as is its battery life.</p>
<p>The obvious limitations of the iPhone, because of its size, has lead Apple to the next stage.</p>
<h2>The iPad</h2>
<p>There is a ceiling of usability that the iPhone hits. And that&#8217;s where I see the iPad making a big difference in my life. Not just for reading electronic publications, but for reading blogs, interacting with communities and simply <strong>enjoying</strong> the web and multimedia. As a web developer, internet activity can be a big distraction to productivity. So I&#8217;d love nothing more than for my laptop/desktop time to be productive work time; my iPad time to be networking, social and leisure time; and my iPhone to fill in the gaps with the utilitarian, on-the-go applications it preforms so well. For me, I think it may be a contextual trifecta of computing&#8230; the best tool for each job.</p>
<p>I originally underestimated the power of the iPhone because I didn&#8217;t immediately recognize the power of the Apple App Store and 3rd party development. The variety and prevalence of the App Store is what ultimately sets that device apart from all other SmartPhones (time will tell if Android can do something similar). But, iPad detractors should be careful not to miss this point: allowing immediate access for the iPad to most of the iPhone applications &#8212; and then making the SDK easily modifiable for developers to take full advantage of the iPad interface with their existing apps &#8212; is, frankly, a masterstroke by Apple. And by doing so, they bolster not only iPad adoption, but continued development for the iPhone as well. Complain all you want about the iPad&#8217;s lack of e-ink technology&#8230; few will care. Apple aren&#8217;t trying to simply be a Kindle/Sony/B&amp;N eReader competitor. They are trying to introduce an evolution in interface. While I don&#8217;t think it will change everything, I think time will show that there is a place for such a tablet.</p>
<p>There is a point between serious power-computing needs (programming, audio and video production, graphic processing, word processing, configurability, serious gaming, etc.) and the swiss army knife of simple mobile device applications. There are untapped benefits provided by a large, intimate, tactile application interface. Demos like the iWork preview for iPad gave us an indication of where this might go, but it&#8217;s only the tip of the iceberg. Imagine being able to comfortably sit anywhere and manage any number of interface-intensive applications by simply running multiple fingers across a touch screen. A good half of the applications I currently use on the iPhone and laptop will, I imagine, be far more convenient and usable on the iPad equivalents &#8212; especially when developers begin designing those applications specifically for the interface. Things, iCal, MobiTracker, etc. all can be made far more productive; movies, TV shows and screencasts can be much more intimate; social conversation can be much more engaging and fluid; interaction with music, photographs and art can be more immersive.</p>
<p>I&#8217;m excited to see what happens. And if I find the time, I may try my hand at an app or two myself. <img src='http://jryanwilliams.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://jryanwilliams.com/2010/02/ipad-immersive-tactile-usability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blogs killed the engagement star</title>
		<link>http://jryanwilliams.com/2009/07/blogs-killed-the-engagement-star/</link>
		<comments>http://jryanwilliams.com/2009/07/blogs-killed-the-engagement-star/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 17:48:58 +0000</pubDate>
		<dc:creator>websuasion_ryan</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Community Building]]></category>
		<category><![CDATA[Microblogging]]></category>

		<guid isPermaLink="false">http://blog.jryanwilliams.com/?p=32</guid>
		<description><![CDATA[From the perspective of relationship building, we can learn a lot from the community email lists and usenet groups of the early 90's. Blogs have undone a lot of what was great about that interaction. And now, micro-blogging has the potential to get back to some of that greatness... when you approach it with the right mindset.]]></description>
			<content:encoded><![CDATA[<a href="http://jryanwilliams.com/2009/07/blogs-killed-the-engagement-star/" title="Blogs killed the engagement star"><img src="http://jryanwilliams.com/wp-content/uploads/2009/07/blogcloud-150x150.png" alt="" class="feed-image" /></a><p><em>(lame song reference attempt&#8230; sure)</em></p>
<p>My involvement with &#8220;social media&#8221; really started in 1992. At that time, the internet was really all about the <a href="http://en.wikipedia.org/wiki/Usenet">usenet</a> and community email lists. They were incredibly noisy, geeky and (at times) downright confrontational. But boy were they <em>engaging</em>! You were thrown directly in the pit with all the lions. If you held your own and gained their respect, you really got to learn a lot about each individual. Friendships and (yes) business relationships I made back in those days still persist to this day. And that longevity is something I directly attribute to the in-depth debates, conversations and running jokes we all shared.</p>
<p>Then came the great blog migration.</p>
<p>My exodus from the usenet/email communities to blogging happened in 2001. I went willingly&#8230; looking for a way to reduce the signal to noise ratio in my life. Blogging allowed me to spout off whatever was on my mind in detail without (too much) concern over impacting the bandwidth, topic restrictions or guidelines of any particular community. RSS feeds and community filters allowed me to control what I read. It was great. I had so much more free time to, you know, work.</p>
<p>But looking back, I now realize that I lost the depth of individual engagement I had previously. Sure, friends and colleagues would comment. And I would read their posts and comment. That&#8217;s all great, but that method of communication is rather truncated and static. It&#8217;s primarily one way. It&#8217;s yelling into a crowd and hearing a few shouts back.</p>
<p>Blogs are <strong>not</strong> engaging. I don&#8217;t care who tells you otherwise. They can be compelling, moving, informative&#8230; all good and important stuff. They tell your story and share your mindset in detail, which is fantastic. But they are not, on their own, going to help you build relationships with individuals. Best you can hope for is some useful feedback and some trackbacks from other bloggers. Most of the time, a post&#8217;s author only has an exchange with the first few people who bother to comment (if at all). <span id="more-32"></span></p>
<p>From the perspective of building relationships, <em>blogging was 3 steps back</em>.</p>
<p>Micro-blogging is potentially 2 steps forward and 1 step back.</p>
<p><strong>The 2 forward:</strong> We now have this wonderful real-time, worldwide conversation stream. We have the ability to connect with people and entities who would never have dabbled in the older discussion formats. We can seek them out. Easily. We have every opportunity to engage.</p>
<p><strong>The 1 back:</strong> Now we are down to 140 characters of space for building relationships. That&#8217;s a real challenge. It can be done over time though. I&#8217;m not faulting the networks, and there are certainly <a href="http://twitter.com/jayrosen_nyu/">people out there</a> who <a href="http://www.briansolis.com/2008/03/new-ebook-customer-service-art-of/">get it</a>. In combination with blogging, micro-blogging can go a long way to filling that relationship-building void.</p>
<p>The issue is that business is new and pretty baffled by this engagement concept. They, by and large, were not involved in the old usenet days and don&#8217;t realize how that level of interaction could be relevant to what they are trying to achieve. They&#8217;ve only just started wrapping their heads around blogs&#8230; under the assumption they are press release repositories. So, it&#8217;s no wonder that most twitter and facebook page feeds by business are a constant refrain of &#8220;here&#8217;s our link&#8230; hey, here&#8217;s our link&#8230; oh yeah, you seen our link?&#8221;.</p>
<p>The challenge is to ensure you aren&#8217;t taking that backwards step. Simply, that means you need to talk <strong>with</strong> the community you build. Not <em>at</em>. Get to know them. Let them get to know you. You may be surprised just how many opportunities arise due to your participation. It takes a greater effort, interesting ideas and (*gasp*) personality. But using the traditional mass-marketing models on-line is a mistake. Garbage in. Garbage out. Or, to quote McCartney: &#8220;and in the end, the love you take is equal to the love you make&#8221;. <img src='http://jryanwilliams.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.freedigitalphotos.net/images/view_photog.php?photogid=404">Image: Simon Howden / FreeDigitalPhotos.net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jryanwilliams.com/2009/07/blogs-killed-the-engagement-star/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Context and Schedule Buckets</title>
		<link>http://jryanwilliams.com/2009/05/context-and-schedule-buckets/</link>
		<comments>http://jryanwilliams.com/2009/05/context-and-schedule-buckets/#comments</comments>
		<pubDate>Sat, 09 May 2009 00:10:41 +0000</pubDate>
		<dc:creator>websuasion_ryan</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Context]]></category>
		<category><![CDATA[Getting Things Done]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Scheduling]]></category>

		<guid isPermaLink="false">http://blog.jryanwilliams.com/?p=28</guid>
		<description><![CDATA[When you plan with too much detail, you are constantly having to rearrange your schedule. Something unanticipated always materializes requiring your immediate attention, and it can turn your week into an ongoing process of rescheduling. So, until recently, I hardly ever used calendar software like iCal. I'd toss meetings and deadlines on it. I'd reference it every few days to roughly scope out my week, but that's it.]]></description>
			<content:encoded><![CDATA[<a href="http://jryanwilliams.com/2009/05/context-and-schedule-buckets/" title="Context and Schedule Buckets"><img src="http://jryanwilliams.com/wp-content/uploads/2009/05/ical-150x150.png" alt="" class="feed-image" /></a><p>For a long time I&#8217;ve concluded that you should never schedule actions more than a day or two ahead of time. A few days at the most. There are exceptions to this of course&#8230; meetings, vacations, hard deadlines, etc. But still, those things are rarely specific enough to be actions in of themselves. Typically they are larger projects, sub-projects or events. I&#8217;ll even go so far as saying that an action should never even grace your calendar. There&#8217;s nothing more annoying to me than a long to-do list cluttering up a perfectly good calendar.</p>
<p>When you plan with too much detail, you are constantly having to rearrange your schedule. Something unanticipated always materializes requiring your immediate attention, and it can turn your week into an ongoing process of rescheduling. So, until recently, I hardly ever used calendar software like iCal. I&#8217;d toss meetings and deadlines on it. I&#8217;d reference it every few days to roughly scope out my week, but that&#8217;s it.</p>
<p>Like many self-employed folks, I have a very wide range of activities that I do. And working from home over the years, my days have tended to be rather unstructured with regard to what I do when. I&#8217;ve worked loosely by priority, which has worked out okay of course&#8230; my responsibilities get completed more or less on time. But I&#8217;ve noticed that such lack of structure can make me feel like my head is spinning by mid-day. What&#8217;s next? It&#8217;s all so freeform&#8230; I never really know. Just grab the next action and run. That lack of structure tends to zap my energy a bit sometimes, causing me to have to regroup for a while before switching gears and deciding what my next task should be.</p>
<p>My business partner and I often chat about approaches to productivity, because we both actually enjoy that kind of stuff. We&#8217;re weird. A few weeks back, we were discussing the use of <em>context</em> in our organizational systems, and he pointed me to a <a href="http://jryanwilliams.com//www.43folders.com/2006/07/31/simplify-contexts">43Folders post</a> that I&#8217;d missed which addressed simplifying context.</p>
<p>I agree with Merlin Mann that contexts should be simple. I myself have been guilty of setting logical yet unhelpful contexts like @email and @calls. However, there was still something about Mann&#8217;s idea of context being strictly <em>&#8220;what tools, resources, opportunities, and limitations are unique to this situation&#8221;</em> that didn&#8217;t sit right with me. Defining context in such a way does not help me mentally structure my day. In fact, for me, simply knowing I&#8217;ll be at my laptop and online doesn&#8217;t help me much at all because 90% of the time that is the case.</p>
<p>Then, I was pointed to a particularly interesting comment on the article (emphasis mine):</p>
<blockquote><p>I&#8217;m a writer working at home, so @computer, @phone, @home never really worked for me. Instead, <strong>I&#8217;ve matched my contexts to the way I structure my workday</strong>. The morning, from 8am &#8211; noon is for writing and editing. The afternoon, from 1 &#8211; 5 is for research, reading, email, website maintenance, etc. The evening is for entertainment and housework.</p></blockquote>
<p>As simple as that is, it was pretty eye opening for me and illuminated some of the issues I was running into with both scheduling and context. My day was one big tornado of random high priority tasks which I had selected from my system. There was no dire problem with my daily actions list, but something was missing in-between. I needed to break my time into more manageable contextual chunks.</p>
<p><strong>Schedule Buckets</strong><br />
Lately, I&#8217;m framing my day into what I call <em>schedule buckets</em>. I&#8217;ve gone into iCal and sectioned my day into several of these rather generic daily reoccurring blocks of time. Two things are outlined by these blocks&#8230; the locale and the general task type. For instance, I might have:</p>
<p>Home:Exercise 5AM-6AM<br />
Home:Reading 7AM-8:00AM<br />
Office:Writing 9AM-11AM<br />
Studio:Production 11AM-1PM<br />
Office:Development 1:30PM-5PM<br />
Home:Flextime 6PM-9PM (this for odds and ends)</p>
<p>These buckets cover the broad activities which I feel I should be doing on a regular basis. Something like &#8220;Writing&#8221; may cross over all client projects, personal projects, internal documentation, etc. And it may encompass writing articles, lyrics, storyboarding a videocast or outlining talking points for a podcast. The specifics don&#8217;t matter. I just know I have 2 hours set aside for writing, and today I can use that time to do {fill in the blank}. And the location is set, so I know that the tools to preform the task will be available to me when that is relevant.</p>
<p>These buckets are all flexible of course. I can skip, extend or reduce any of the buckets as needed when my day changes. If a major project is due tomorrow which involves ruby coding, the day may become one big &#8220;Development&#8221; bucket. But at least the following day I can be directed back to focus again on all my other activities.</p>
<p>When something does change, I don&#8217;t have to shift dozens of granular tasks around over the next several days. I can, in fact, wait until just before a schedule bucket starts to choose the tasks to fill that bucket. Which is a wonderfully powerful compromise between my desire not to granularly over-schedule and my need for a more structured day.</p>
<p>Other benefits I&#8217;m seeing is how much easier it is to initially process actions in my system. I just figure out which bucket an action fits into and roughly how long it will take to do. I&#8217;m also finding projects progress more consistently and incrementally. Where before I might get lost in a single activity for a few days and come out of that feeling I needed to play catchup on the other activities, now I feel I&#8217;m covering everything pretty well day to day. I&#8217;m also less likely to overbook my schedule by taking on too much at once because I see my time in smaller, more limited chunks. That is maybe the biggest hidden benefit.</p>
]]></content:encoded>
			<wfw:commentRss>http://jryanwilliams.com/2009/05/context-and-schedule-buckets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Action Sequence and Daily Planning</title>
		<link>http://jryanwilliams.com/2009/05/action-sequence-and-daily-planning/</link>
		<comments>http://jryanwilliams.com/2009/05/action-sequence-and-daily-planning/#comments</comments>
		<pubDate>Fri, 08 May 2009 00:12:42 +0000</pubDate>
		<dc:creator>websuasion_ryan</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Getting Things Done]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://blog.jryanwilliams.com/?p=26</guid>
		<description><![CDATA[Finding the right tools to manage your system is tough. Especially if you are a relentless long-term planner with a lot of wacky, grand ideas. For a couple of years I've used a simple, physical notecard system to collect all my actions. It seemed to work the best for me for a long time, but as projects increased in size and I got more into applying context to my day, the physical system became cumbersome and inefficient. I needed something digital, searchable, and clean.]]></description>
			<content:encoded><![CDATA[<a href="http://jryanwilliams.com/2009/05/action-sequence-and-daily-planning/" title="Action Sequence and Daily Planning"><img src="http://jryanwilliams.com/wp-content/uploads/2009/05/things-150x150.png" alt="" class="feed-image" /></a><p>[note: this is an older post from a previous blog which I've decided to migrate over to here. I have since this time fallen in love with <a href="http://culturedcode.com/things/">Things</a> for OSX. Nothing compares to it.]</p>
<p>I&#8217;m a productivity nut by necessity. I have a lot of widely varying projects and activities, and if they are not carefully managed, life becomes about reacting to problems rather taking actions toward progress. A few years ago I dug into the &#8220;Getting Things Done&#8221; system and, like many others, found it to be a major positive change. Now, I don&#8217;t follow or agree with every aspect of GTD to the letter, but I do feel the basic principle and the general psychology behind it is solid. The idea of getting everything out of your head and into a system you trust in effort to relieve stress and overload is fairly profound in my opinion.</p>
<p>The problem is, finding the right tools to manage your system is tough. Especially if you are a relentless long-term planner with a lot of wacky, grand ideas. For a couple of years I&#8217;ve used a simple, physical notecard system to collect all my actions. It seemed to work the best for me for a long time, but as projects increased in size and I got more into applying context to my day, the physical system became cumbersome and inefficient. I needed something digital, searchable, and clean.</p>
<p>Applications like that weren&#8217;t really available until quite recently. Now there seems to be a glut of GTD focused applications out there. And a lot of them are pretty good. I&#8217;ve been using a free one called <a href="http://www.thinkingrock.com.au/">ThinkingRock</a>, and they get a lot of things right.</p>
<p>First, let me define the various modes of a good system as I see it:</p>
<p><strong>Collection</strong> &#8211; essentially brainstorming and getting any thought you have out of your head and into the system. You should never expect yourself to remember something any more than a couple of minutes in my opinion. Think of it, dump it out.</p>
<p><strong>Processing</strong> &#8211; This is where you look at the pile of thoughts and ideas and decide where they go, if they are indeed actionable, steps you might have forgotten, the overall sequence of actions (we&#8217;ll get to that in a bit), the context of an action, time it will take to do, priority, etc. Really, you are just making sense out of the mess and the result is a huge amount of data amounting to your next several days, weeks, months and even years of activity and pipe-dreams.</p>
<p><strong>Planning</strong> &#8211; This is where reality sets in. You know you have a finite amount of time in your day. You pick from the huge library of actions in your system resulting in a short list of things you can focus on for the day (in my opnion, this should be a daily thing at least).</p>
<p><strong>Doing</strong> &#8211; Well, just that. Knocking out the actions one at a time. And while your system may not actually <strong>do</strong> this for you, it should help to focus you on those tasks.</p>
<p>The collection aspects of ThinkingRock are quite good. Maybe a little more cumbersome than necessary, but still, their approach is good. And frankly, several applications seem to get this more or less right. And for the most part, processing is good as well.</p>
<p>But, like every other GTD app I&#8217;ve tried, ThinkingRock gets two major things flat out wrong. There is an important oversight in processing and there is no assistance in planning and doing.</p>
<p>What my dream system would have, and I&#8217;ve yet to see, is self-aware sequencing of action and daily planning mode.</p>
<p><strong>Self-Aware Sequencing</strong> &#8211; What I mean by this, simply, is that typically there is a sequence of actions that must happen for a project to be complete. Doing <em>x</em> allows you to do <em>y</em> which allows you to do <em>z</em>. Now, most systems will let you position the order of actions in a list to approximate sequence, but this is problematic. The whole point to me of the &#8220;processing&#8221; mode is to figure out which individual actions need to be done and in what order they fall to complete the project. So, why be forced to take that sequencing into consideration (part of the &#8220;processing&#8221; mode) when you are in the &#8220;doing&#8221; mode? I just want to know what the &#8220;next action&#8221; is for completing that project. And when I complete that, I should be shown the next action after that. I care not to know what is five steps down the line. If anything, that just stresses me out. Especially when looking across 10 different projects. That means, consciously or subconsciously, you are being forced to acknowledge potentially 50-100 actions that are in your view! Which brings me to&#8230;</p>
<p><strong>Daily Planning Mode</strong> &#8211; As I said, just show me what&#8217;s next for each project. If I have 10 projects (or even 2 main projects each with 2 sub-projects), that means I&#8217;ll be looking at only  10 potential actions. If  I only have time for 5, I should be able to hide the others for that day. Because, other than when you are in the processing mode (or perhaps a periodic review of your entire system) you shouldn&#8217;t have to see things that you can&#8217;t do yet. Some people may consider those actions &#8220;deferred&#8221;, but I&#8217;ll get into why I think <strong>deferred actions are a bad idea</strong> in a future post.</p>
<p>And both these features play heavily into the &#8220;doing&#8221; mode. Only showing you a short list of easily accomplished things can really help motivate you to knock them out quickly. Showing you more than that (and especially a LOT more than that) can make you feel like Sisyphus eternally rolling a boulder up a hill only to have it roll back to its original position. You never feel a sense of completion.</p>
<p>And one last item for the tool wishlist. Do all this in a web app, not a <em>only</em> local app. I want to access my system from any computer anywhere I go. Or even from my phone. Extra points certainly if you can have a local client for when you are off-line, but having this all on the web so you can keep synced is essential.</p>
<p>All that said, <a href="http://www.thinkingrock.com.au/">ThinkingRock</a> is worth your attention, and I only use them as an example because that&#8217;s the system I&#8217;m currently using. And like I said, everyone else gets those points wrong as well. Let me know if you&#8217;ve found a tool that does them.</p>
]]></content:encoded>
			<wfw:commentRss>http://jryanwilliams.com/2009/05/action-sequence-and-daily-planning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Starting the conversation&#8230;</title>
		<link>http://jryanwilliams.com/2009/05/starting-the-conversation/</link>
		<comments>http://jryanwilliams.com/2009/05/starting-the-conversation/#comments</comments>
		<pubDate>Fri, 01 May 2009 22:25:29 +0000</pubDate>
		<dc:creator>websuasion_ryan</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Social Networks]]></category>

		<guid isPermaLink="false">http://blog.jryanwilliams.com/?p=4</guid>
		<description><![CDATA[The internet, and particularly social media, is quite awesome at this relationship building. And it's my job to show you just how amazing it can be, how you should approach it and why this is all so important. So that's what I'll hopefully be doing.]]></description>
			<content:encoded><![CDATA[<a href="http://jryanwilliams.com/2009/05/starting-the-conversation/" title="Starting the conversation..."><img src="http://jryanwilliams.com/wp-content/uploads/2009/05/ryan_websuasion-squarebig-150x150.jpg" alt="" class="feed-image" /></a><p>Call me Ryan. Sure, it&#8217;s not as snappy as &#8220;Ishmael&#8221;, but a good enough start to this spot of the web. Before getting to any real morsels of content, I figured I should give myself an informal introduction and explain what this blog will be about.</p>
<p>I am a co-founder of Websuasion, LLC, an Atlanta &amp; Chicago based web development and web marketing firm. Beyond the general day to day activities required to properly run a small business, my primary focus is as Director of Customer Engagement Strategies. That dips heavily into pretty much everything a business does from the online strategies we develop for each client, to the technologies used in their business online and off, to brand/reputation management, consistency of message, presence building, etc. Anything that ultimately connects businesses with their customers, well, it&#8217;s something I obsess over.</p>
<p>But, despite the myriad of technical things we do for clients, we view the web (and internet in general) as being about one thing&#8230; <strong>communication</strong>.</p>
<p>That&#8217;s an important point. It might seem obvious. But if it were, then most sites wouldn&#8217;t be sitting around on the web like outdated billboards would they? And they wouldn&#8217;t <em>broadcast at an audience</em>. They would instead have <em>conversations with their customers</em>.</p>
<p>And why is this important? Because, frankly, you should be using all means necessary to build real <strong>relationships</strong> with your customers, colleagues, partner businesses and peers.</p>
<p>The internet, and particularly social media, is quite powerful at this kind of relationship building. And it&#8217;s my job to show you just how amazing it can be, how you should approach it and how you can measure it to clearly understand your ROI. So that&#8217;s what I&#8217;ll hopefully be doing with the help of my business partner <a href="http://www.linkedin.com/in/norberttaylor">Norbert Taylor</a>.</p>
<p>In the next week we will be launching <a href="http://websuasion.com/podcast">Presence: The Websuasion Podcast</a>, and our first episode will begin to discuss using social media to improve your business. We&#8217;ll also be posting some articles to our Websuasion blog, which I will excerpt here. But I also plan to share my miscellaneous thoughts on social marketing, web design, productivity and all kinds of fun stuff. So please add me to your RSS feed if you are into that kind of thing. Also, be sure to connect with me on <a href="http://www.linkedin.com/in/websuasionatl">LinkedIn</a>, <a href="http://twitter.com/websuasion_ryan">Twitter</a>, <a href="http://www.facebook.com/profile.php?id=1016836883&amp;v=info">Facebook</a>, <a href="http://friendfeed.com/websuasionryan">FriendFeed</a>, <a href="http://www.myspace.com/websuasion">MySpace</a>, <a href="http://delicious.com/websuasion_ryan">Delicious</a>, <a href="http://tumblr.jryanwilliams.com">Tumblr</a> and all those networky type places.</p>
<p>In addition, I&#8217;ll be doing some seminars, speaking engagements, panel discussions, webinars and the like. I&#8217;ll post any events here. If you are part of a business association or meetup group and would like to chat about <span>&#8220;the value of web presence&#8221; and &#8220;improving customer engagement&#8221; in the Greater Atlanta area, give me a shout (ryan.williams[at]websuasion[dot]com). It&#8217;s quite affordable (read: generally free)&#8230; it&#8217;s the conversation that &#8216;s important to us.<br />
.<br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://jryanwilliams.com/2009/05/starting-the-conversation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

