<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/atom10full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xml:lang="en" xml:base="http://donttrustthisguy.com/wp-atom.php">
	<title type="text">DontTrustThisGuy.com</title>
	<subtitle type="text">Why not take my word for it?</subtitle>

	<updated>2008-10-19T17:38:36Z</updated>
	<generator uri="http://wordpress.org/" version="2.6.1">WordPress</generator>

	<link rel="alternate" type="text/html" href="http://donttrustthisguy.com" />
	<id>http://donttrustthisguy.com/feed/atom/</id>
	

			<link rel="self" href="http://feeds.feedburner.com/Donttrustthisguycom" type="application/atom+xml" /><entry>
		<author>
			<name>Jim Jeffers</name>
						<uri>http://www.donttrustthisguy.com/blog</uri>
					</author>
		<title type="html"><![CDATA[Tips for the Aspiring Web Consultant]]></title>
		<link rel="alternate" type="text/html" href="http://donttrustthisguy.com/2008/10/19/tips-for-the-aspiring-web-consultant/" />
		<id>http://donttrustthisguy.com/?p=179</id>
		<updated>2008-10-19T17:38:36Z</updated>
		<published>2008-10-19T17:19:37Z</published>
		<category scheme="http://donttrustthisguy.com" term="philosophy" /><category scheme="http://donttrustthisguy.com" term="business" /><category scheme="http://donttrustthisguy.com" term="consulting" /><category scheme="http://donttrustthisguy.com" term="tactics" />		<summary type="html"><![CDATA[Last week I left my post at Integrum in favor of solely focusing on my own business, Sumo Creations.  I&#8217;ve been running Sumo outside of school and fulltime work for the past three years and this is a very exciting time for me.  Since starting my company, I&#8217;ve learned a lot of lessons [...]]]></summary>
		<content type="html" xml:base="http://donttrustthisguy.com/2008/10/19/tips-for-the-aspiring-web-consultant/"><![CDATA[<p>Last week I left my post at <a href="http://integrumtech.com">Integrum</a> in favor of solely focusing on my own business, <a href="http://sumocreations.com">Sumo Creations</a>.  I&#8217;ve been running Sumo outside of school and fulltime work for the past three years and this is a very exciting time for me.  Since starting my company, I&#8217;ve learned a lot of lessons on working productively for my clients and consistently developing positive relationships with them. Here are some of the lessons I learned.</p>
<p><span id="more-179"></span></p>
<h3>Don&#8217;t Fire Clients Because They Don&#8217;t Get It</h3>
<p>People in this business love to say &#8220;these guys don&#8217;t get it.&#8221; What exactly is it they don&#8217;t get? The problem is we don&#8217;t get it. Our job is to educate and advise our clients on what we do and what needs to be done. Accusing the client of &#8220;not getting it&#8221; is a cop out for not doing our job.</p>
<p>If you ever find your self murmuring that line be sure to get off your high horse and come down to earth. As consultants our job is not to render a particular service. Our job is to achieve the goals of our client through our expertise.  The services we render to do it are just a means to an end. Always focus on your client&#8217;s goal and work with them never against them.</p>
<h3>Don&#8217;t Be a Servant</h3>
<p>You always know you&#8217;re in a backwards position as a consultant when the client is telling you how to do your job.  If this happens it&#8217;s because you let it happen. Not everyone really likes taking control of something. We become knowledge experts and then just want to perform. That will work if you want to be a worker bee but not as a consultant. If you want to be an order-taker go corporate and specialize; consulting is probably not for you. If you plan on working as a consultant take your client&#8217;s goal and own it.  Our job is to make things happen not to be micromanaged and react to client directions. Listen to your client&#8217;s needs, understand their objectives, develop a plan, advise them consistently, and most importantly take control of the situation. Think of your role as a translator, converting client needs to action items.</p>
<h3>Deliver Solid Gold</h3>
<p>If you remember one lesson remember this one. In software they have a term called &#8216;gold-plating&#8217; and it means your putting to much effort into something frivolous. It goes like this: &#8220;client doesn&#8217;t care if the module is perfect they just want the module.&#8221; That may be so and it&#8217;s better to have that mind set then to deliver nothing.  But that is not what this point is about. We are only as good as the standards we hold ourselves up to and if you want to be successful your goal is to be the best. If you don&#8217;t mind working harder than the other guy you can go far as a web consultant. Here&#8217;s a recipe for making gold:</p>
<ul>
<li>Identify two or three of the most critical parts of your project</li>
<li>Dedicate additional time here - don&#8217;t rush to get it done focus on getting it right.</li>
<li>Test it. Test it with actual users. This doesn&#8217;t have to be formal but do get feedback.</li>
<li>Think critically and revise.</li>
</ul>
<p>Normally when I say critical points I mean the core functionality of the application you are building. It&#8217;s easy to say we don&#8217;t have time or can&#8217;t do it. Saying no is easy.  But if you&#8217;re going to focus on quality go the extra mile where it counts.  We can say no to making the entire project perfect but it&#8217;s important that we get a few things right.</p>
<p>In the development world we&#8217;re rewarded for results and unfortunately the metric we tend to use is functionality/time. But it&#8217;s really the quality of the functionality that we need to look at.  A product with three well thought out features is more effective than a mash-up of a hundred half baked ideas. Get real, focus on what matters, and most importantly don&#8217;t cut corners. Be sure the client is on board - if they aren&#8217;t don&#8217;t fire them, educate them.</p>
<h3>Communicate Constantly</h3>
<p>The most important thing you can do for your clients is keep them in the loop.  If you have a knack for falling off the face of the Earth you probably shouldn&#8217;t work as an independent consultant.  Whether you are meeting your deadlines or not, always communicate in between them.  Why is it so important?  As a freelance consultant keeping your work progress transparent is your primary form of customer service.</p>
<p>If you aren&#8217;t communicating with your client on a regular basis chances are you might be making a lot of assumptions about the work you&#8217;re performing.  This can manifest itself as a big death spiral for a freelance consultant. If the client doesn&#8217;t see what you&#8217;re working on until the point of delivery chances are there will be a lot of communication breakdown.  More importantly, a lot of conflicts with payment / revisions and other hassles that you really don&#8217;t want to get into.  Always post updates to your clients even if minor so the client can see progress. Communication breakdown, not time, is your number one enemy.</p>
<h3>Treat Every Client Individually</h3>
<p>Despite what you might see on agency websites.  There is no golden bullet for a fixed process to follow for every client and project.  Every project will be unique and you need to adapt to the context of the situation. If a client is not respondent via phone switch to email or vice versa. If a client can&#8217;t make an in person meeting resort to a conference call.  Be flexible with your time and required medium.</p>
<p>I&#8217;ll give you an example, one of my clients does not appreciate basecamp.  I use basecamp to manage all of my projects.  So when a client communicates with me outside of basecamp I&#8217;ll simply post the transcripts and files from our outside conversation to basecamp for my own reference. I&#8217;m not going to try to make them use basecamp by enforcing artificial requirements for the basis of our communication. It&#8217;s my job to make this work and adjust to their communication style.</p>
<p>Whatever comes at you - make things work with what you have. Hours spent on trying to educate and conform your client around your process is time wasted.  We&#8217;re hired to work on our projects not our processes.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://donttrustthisguy.com/2008/10/19/tips-for-the-aspiring-web-consultant/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://donttrustthisguy.com/2008/10/19/tips-for-the-aspiring-web-consultant/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	</entry>
		<entry>
		<author>
			<name>Jim Jeffers</name>
						<uri>http://www.donttrustthisguy.com/blog</uri>
					</author>
		<title type="html"><![CDATA[Is History Really Siding With Obama or is it McCain? Read this Before You Vote!]]></title>
		<link rel="alternate" type="text/html" href="http://donttrustthisguy.com/2008/09/13/150/" />
		<id>http://donttrustthisguy.com/2008/09/13/150/</id>
		<updated>2008-09-13T20:48:02Z</updated>
		<published>2008-09-13T14:44:33Z</published>
		<category scheme="http://donttrustthisguy.com" term="politricks" /><category scheme="http://donttrustthisguy.com" term="economics" /><category scheme="http://donttrustthisguy.com" term="election" /><category scheme="http://donttrustthisguy.com" term="gdp" /><category scheme="http://donttrustthisguy.com" term="mccain" /><category scheme="http://donttrustthisguy.com" term="obama" /><category scheme="http://donttrustthisguy.com" term="research" />		<summary type="html"><![CDATA[This article is in response to &#8220;Comparison of Democratic and Republican Economies&#8221; which was written in response to &#8220;Is History Siding With Obama’s Economic Plan?&#8221; from the New York Times.  My friend Brandon did some excellent research and made excellent points explaining the changes in our GDP.  But my source didn&#8217;t confirm some [...]]]></summary>
		<content type="html" xml:base="http://donttrustthisguy.com/2008/09/13/150/"><![CDATA[<p>This article is in response to &#8220;<a href="http://branjen.wordpress.com/2008/09/13/comparison-of-democratic-and-repulican-economies/">Comparison of Democratic and Republican Economies</a>&#8221; which was written in response to &#8220;<a href="http://www.nytimes.com/2008/08/31/business/31view.html?_r=1&#038;scp=1&#038;sq=history%20siding%20with%20obama&#038;st=cse&#038;oref=slogin">Is History Siding With Obama’s Economic Plan?</a>&#8221; from the New York Times.  My friend Brandon did some excellent research and made excellent points explaining the changes in our GDP.  But my source didn&#8217;t confirm some of the numbers he chose to provide (the source of their data was not listed). Also, only growth from specific years during presidential terms was mentioned as opposed to showing all of the data.</p>
<p><span id="more-150"></span></p>
<p>I looked into the history of our GDP from 1977 to 2007 and got my statistics from the <a href="http://www.bea.gov">Bureau of Economic Analysis from the US Department of Commerce</a>.  The numbers I found there did not match up with the numbers referenced from the article which leads me to assume there is some misinterpretation or misunderstanding of the numbers so please forgive me (and correct me) if I&#8217;m not interpreting them correctly.</p>
<h3>The Three Tables I Cited are as Follows:</h3>
<ul>
<li><a href="http://www.bea.gov/national/nipaweb/TableView.asp?SelectedTable=1&#038;ViewSeries=NO&#038;Java=no&#038;Request3Place=N&#038;3Place=N&#038;FromView=YES&#038;Freq=Year&#038;FirstYear=1977&#038;LastYear=2008&#038;3Place=N&#038;Update=Update&#038;JavaBox=no#Mid">Table 1.1.1. Percent Change From Preceding Period in Real Gross Domestic Product</a></li>
<li><a href="http://www.bea.gov/national/nipaweb/TableView.asp?SelectedTable=5&#038;ViewSeries=NO&#038;Java=no&#038;Request3Place=N&#038;3Place=N&#038;FromView=YES&#038;Freq=Year&#038;FirstYear=1977&#038;LastYear=2008&#038;3Place=N&#038;Update=Update&#038;JavaBox=no#Mid">Table 1.1.5. Gross Domestic Product</a></li>
<li><a href="http://www.bea.gov/national/nipaweb/TableView.asp?SelectedTable=84&#038;ViewSeries=NO&#038;Java=no&#038;Request3Place=N&#038;3Place=N&#038;FromView=YES&#038;Freq=Year&#038;FirstYear=1977&#038;LastYear=2008&#038;3Place=N&#038;Update=Update&#038;JavaBox=no#Mid">Table 3.1. Government Current Receipts and Expenditures</a></li>
</ul>
<h3>Average Growth in GDP During Each Presidential Term</h3>
<p>What I found was that there was not a large difference between the average annual GDP growth rate amongst presidents during their terms:</p>
<p><img src="http://donttrustthisguy.com/wp-content/uploads/2008/09/average_gdp.png" /></p>
<ul>
<li><strong>Carter (77-80):</strong> 3.3% average annual growth</li>
<li><strong>Reagan (81-88):</strong> 3.425% average annual growth</li>
<li><strong>Bush (89-92):</strong> 2.125% average annual growth</li>
<li><strong>Clinton (93-00):</strong> 3.725% average annual growth</li>
<li><strong>Bush (01-07):</strong> 2.3% average annual growth</li>
</ul>
<p>Additionally, over the last 30 years there have been only three incidents where there was a period of negative growth in GDP:</p>
<ul>
<li><strong>Carter in 1980:</strong> -0.2%</li>
<li><strong>Reagan in 1982:</strong> -1.2%</li>
<li><strong>Bush in 1991:</strong> -0.2%</li>
</ul>
<p>You can see in the graph below, the growth of our GDP for every year over the past 30 years.  You can also see the percentage of change over the prior period for each year in the second graph:</p>
<p><img src="http://donttrustthisguy.com/wp-content/uploads/2008/09/real_gdp.png" /></p>
<h3>External Factors Positively or Negatively Impacting the US Economy</h3>
<p>Brandon&#8217;s article does a great job citing references to external factors that excuse dips in growth in the early 90&#8217;s as well as excess growth during Clinton&#8217;s presidency (<a href="http://branjen.wordpress.com/2008/09/13/comparison-of-democratic-and-repulican-economies/">I highly encourage that you read through the article to understand</a>).  But it did not cite the external factor outside of policy makers control which lead to the 1980 recession.  That of course was the 1970&#8217;s energy crisis and more specifically the <a href="http://en.wikipedia.org/wiki/1979_energy_crisis">energy crisis of 1979.</a></p>
<h3>Carter Did Not Inherit a Good Economy</h3>
</p>
<p><em>&#8220;In 1973, during the Nixon Administration, the Organization of Petroleum Exporting Countries (OPEC) agreed to reduce supplies of oil available to the world market. This sparked an oil crisis and forced oil prices to rise sharply, spurring price inflation throughout the economy, and slowing growth. Significant government borrowing helped keep interest rates high relative to inflation.&#8221;<br />
(<a href="http://en.wikipedia.org/wiki/Jimmy_carter#Energy_crisis">Energy Crisis</a>)</em></p>
<p><em>&#8220;The 1970s are described as a period of stagflation, as well as higher interest rates. Price inflation (a rise in the general level of prices) creates uncertainty in budgeting and planning and makes labor strikes for pay raises more likely.&#8221;<br />
(<a href="http://en.wikipedia.org/wiki/Jimmy_carter#Economy:_stagflation_and_the_appointment_of_Volcker">Stagflation And the Appointment of Volcker</a>)</em></p>
<p><em>&#8220;Led by Volcker, the Federal Reserve raised the discount rate from 10 percent when Volcker assumed the chairmanship in August 1979 to 12 percent within two months.[38] The prime rate hit 21.5 percent in December 1980, the highest rate in U.S. history under any President.[39] Investments in fixed income (both bonds and pensions being paid to retired people) were becoming less valuable. The high interest rates would lead to a sharp recession in the early 1980s.[40]&#8220;<br />
(<a href="http://en.wikipedia.org/wiki/Jimmy_carter#Economy:_stagflation_and_the_appointment_of_Volcker">Stagflation And the Appointment of Volcker</a>)</em></p>
<p>The resulting exchange in world events and policies set forth for conservation by the Carter administration led to:</p>
<p><em>&#8220;After 1980, oil prices began a six-year decline that culminated with a 46 percent price drop in 1986. This was due to reduced demand and over-production, and caused OPEC to lose its unity. Oil exporters such as Mexico, Nigeria, and Venezuela expanded. The US and Europe got more oil from Prudhoe Bay and the North Sea.&#8221;<br />
(<a href="http://en.wikipedia.org/wiki/1979_energy_crisis">1979 Energy Crisis</a>)</em></p>
<p>This reduced our energy prices greatly which most likely had a very positive effect on GDP during Reagan&#8217;s term.</p>
<p>Overall, I believe that GDP is more or less a reflection of exchanges in world events and key monetary policies that are controlled by external organizations such as the federal reserve.  The presidential tax policy certainly does have an effect as well but it is most likely to a lesser extent.</p>
<h3>The Actual Cost of The Tax Cuts</h3>
<p>Here is where the real discrepancy is.  The expenditures to receipts ratio.  Over the past 30 years our country has been in red ink each year with the exception of three years during Clinton&#8217;s second term.  If you look at the graph of total receipts to expenditures you can clearly see that there is a large spending discrepancy during periods of Republican tax policy.  Especially during Reagan and even more so during George H.W.  See the graphs below:</p>
<p><img src="http://donttrustthisguy.com/wp-content/uploads/2008/09/us_reciepts_expenditures.png" /></p>
<p><img src="http://donttrustthisguy.com/wp-content/uploads/2008/09/net_borrowing_or_lending.png" /></p>
<p>The consequences of the Bush tax cut can be seen here.  The policies set in place over the last 7 years have passed off massive amounts of debt to my generation.  This is the greatest hypocrisy of the neo-conservative movement.  They run on a platform of fiscal responsibility and limited government but you don&#8217;t see that here. Whether or not there is a democratic or republican president or controlled congress our government&#8217;s overall expenditures consistently rise.</p>
<p>In my opinion, the Bush tax cuts are fiscally irresponsible and John McCain&#8217;s notion to keep them in effect is reason enough not to vote for him. You can really see the difference when we break down the net lending or borrowing down by each president.  Or rather the amount of debt incurred by each of the past five presidents as not a single one has racked up more debt during his term:</p>
<p><img src="http://donttrustthisguy.com/wp-content/uploads/2008/09/net_borrowing_for_president.png" /></p>
<p>The numbers break down as such when written out:</p>
<ul>
<li><strong>Carter (77-80):</strong> -169.5 (billions of dollars) (-42.375 per year)</li>
<li><strong>Reagan (81-88):</strong> -1443.9 (billions of dollars) (-180.5 per year)</li>
<li><strong>Bush (89-92):</strong> -1083 (billions of dollars) (-270.8 per year)</li>
<li><strong>Clinton (93-00):</strong> -773.9 (billions of dollars) (-96.7375 per year)</li>
<li><strong>Bush (01-07):</strong> -2573.6 (billions of dollars) (-367.65 per year)</li>
</ul>
<p>It&#8217;s clear that each republican administration has significantly over spent in comparison to their democratic colleagues.  That is not fiscally responsible.  It&#8217;s reckless.  I&#8217;m not opposed to the concept of limited government.  But you have to cut spending before you cut taxes.  Unless you can first balance the books you can&#8217;t cut the taxes.  This just kicks the can along to the next generation.  Mainly mine.</p>
<p>All in all, the ideal candidate doesn&#8217;t exist in my opinion.  We are at a point where we need to take both parties ideas - raise taxes and cut spending.  But the numbers show - during the period of democratic leadership GDP growed at the same pace or better than when their republican colleagues held office. During these times, the government also did a much better job at managing the  federal budget.</p>
<h3>Income Inequality is a Serious Problem</h3>
<p>One last thing I would point out is that Brandon&#8217;s article distorts income equality by making a comparison to the communist form of socialism in the past Soviet Union.  This is more so a comparison of communism to democracy than a depiction of the economic results of socialistic policies.  If you look at the country with the one of the <a href="http://en.wikipedia.org/wiki/List_of_countries_by_income_equality">best ratings on the GINI coefficient</a>, Sweden, you learn a lot. The people in this country and others like it such as Denmark and Switzerland experience a higher quality of life on average.  Also, their GDP continues to grow despite high taxes.  <a href="http://en.wikipedia.org/wiki/Sweden#Economy">Sweden&#8217;s taxes are nearly twice that of the United States at 51.5% of GDP</a> yet their growth in GDP has faired <a href="http://en.wikipedia.org/wiki/Image:Sw_real_gdp_growth.svg">much better than our own over the past 5 years</a>. This year <a href="http://images.businessweek.com/ss/08/06/0611_mercer/source/21.htm">Mercer rated Stockholm #20 on their best places to live list</a>.  Higher than any city in the United States.  Clearly we have something to learn from governments other than our own.</p>
<p><em>* <a href="http://digg.com/2008_us_elections/BEFORE_YOU_VOTE_Republican_Vs_Democratic_Economic_Policy">Feel free to digg this article if you appreciated the content.</a></em></p>
]]></content>
		<link rel="replies" type="text/html" href="http://donttrustthisguy.com/2008/09/13/150/#comments" thr:count="10" />
		<link rel="replies" type="application/atom+xml" href="http://donttrustthisguy.com/2008/09/13/150/feed/atom/" thr:count="10" />
		<thr:total>10</thr:total>
	</entry>
		<entry>
		<author>
			<name>Jim Jeffers</name>
						<uri>http://www.donttrustthisguy.com/blog</uri>
					</author>
		<title type="html"><![CDATA[Easy Flash Debugging on OSX.]]></title>
		<link rel="alternate" type="text/html" href="http://donttrustthisguy.com/2008/08/22/easy-flash-debugging-on-osx/" />
		<id>http://donttrustthisguy.com/2008/08/23/easy-flash-debugging-on-osx/</id>
		<updated>2008-08-23T17:40:59Z</updated>
		<published>2008-08-23T03:31:44Z</published>
		<category scheme="http://donttrustthisguy.com" term="code" /><category scheme="http://donttrustthisguy.com" term="actionscript" /><category scheme="http://donttrustthisguy.com" term="programming" /><category scheme="http://donttrustthisguy.com" term="techniques" /><category scheme="http://donttrustthisguy.com" term="tips" />		<summary type="html"><![CDATA[I recently took on some contract development for another AS3 project and because I wasn&#8217;t particularly happy with the way I debugged my flash work in the past I decided to come up with a better solution.  Not many traditional flash coders realize that they can view the output from their trace statements on [...]]]></summary>
		<content type="html" xml:base="http://donttrustthisguy.com/2008/08/22/easy-flash-debugging-on-osx/"><![CDATA[<p>I recently took on some contract development for another AS3 project and because I wasn&#8217;t particularly happy with the way I debugged my flash work in the past I decided to come up with a better solution.  Not many traditional flash coders realize that they can view the output from their trace statements on a live compiled SWF.  The way you do that is fairly straightforward.
</p>
<p><span id="more-143"></span></p>
<ul>
<li><a href="http://www.adobe.com/support/flashplayer/downloads.html">Download the Flash Player Debugger version.</a></li>
<li>Create an alias in your profile to tail the flashlog.</li>
</ul>
<h3>Creating an Alias Command</h3>
<p>Once you install the debug player, any movie you open in your browser will output it&#8217;s trace commands to a flashlog.txt file.  This is normally located in the Library directory for your user.  So we&#8217;re going to make an alias to open it quickly in terminal.  If you&#8217;re not familiar with <a href="http://en.wikipedia.org/wiki/Alias_(Unix_shell)">alias commands</a> think of them as shortcuts in terminal.</p>
<p>Let&#8217;s get straight to the meat of it.  First we have to find our flashlog.  By default the flashlog is stored here:<br />
<code>/Users/<strong>[your system username]</strong>/Library/Preferences/Macromedia/Flash Player/Logs/flashlog.txt&#8217;</code></p>
<p>If for whatever reason you aren&#8217;t getting a flashlog you may need to look into taking some <a href="http://blog.flexexamples.com/2007/08/26/debugging-flex-applications-with-mmcfg-and-flashlogtxt/">simple modifications to your mm.cfg file</a>.&#8217; Otherwise you should be ready to make your alias command.</p>
<p>We want to put our alias command in our shell profile so that the shortcut will be available for us automatically when we open up terminal.  To do this launch a new terminal window and type:<br /><code>nano ~/.bash_profile</code></p>
<p>Nano works like a regular text editor, so simply paste the alias command below any existing statements in the document, be sure to replace <strong>your system username</strong> with your actual user name:<br />
<code>alias fl='tail -F /Users/<strong>[your system username]</strong>/Library/Preferences/Macromedia/Flash\ Player/Logs/flashlog.txt&#8217;</code></p>
<p>Now that you&#8217;ve done that hit <strong>ctrl-o</strong> to save the changes you&#8217;ve just made to the file and <strong>ctrl-x</strong> to exit nano. Now close the terminal window and open a new terminal.  Type &#8216;fl&#8217; and press enter.  You can now see the live output as any instance of the player writes output to the flashlog. If you want to stop viewing output just hit ctrl-c while you&#8217;re in the terminal window to close the stream.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://donttrustthisguy.com/2008/08/22/easy-flash-debugging-on-osx/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://donttrustthisguy.com/2008/08/22/easy-flash-debugging-on-osx/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	</entry>
		<entry>
		<author>
			<name>Jim Jeffers</name>
						<uri>http://www.donttrustthisguy.com/blog</uri>
					</author>
		<title type="html"><![CDATA[I&#8217;m Working on a Product.]]></title>
		<link rel="alternate" type="text/html" href="http://donttrustthisguy.com/2008/06/25/im-working-on-a-product/" />
		<id>http://donttrustthisguy.com/2008/06/26/im-working-on-a-product/</id>
		<updated>2008-06-26T07:05:48Z</updated>
		<published>2008-06-26T00:04:07Z</published>
		<category scheme="http://donttrustthisguy.com" term="code" /><category scheme="http://donttrustthisguy.com" term="business" /><category scheme="http://donttrustthisguy.com" term="programming" /><category scheme="http://donttrustthisguy.com" term="thoughts" />		<summary type="html"><![CDATA[Earlier this month I started working on a product.  It&#8217;s nothing new.  It&#8217;s pretty basic.  It&#8217;s going to be really cheap.  But I think it will be pretty cool.  I&#8217;ll post screencasts once I finish more of the javascript.  Until then, announcing this is just a tease and motivating [...]]]></summary>
		<content type="html" xml:base="http://donttrustthisguy.com/2008/06/25/im-working-on-a-product/"><![CDATA[<p>Earlier this month I started working on a product.  It&#8217;s nothing new.  It&#8217;s pretty basic.  It&#8217;s going to be really cheap.  But I think it will be pretty cool.  I&#8217;ll post screencasts once I finish more of the javascript.  Until then, announcing this is just a tease and motivating factor.  I&#8217;ve said it; now I need to go forward and finish the first version.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://donttrustthisguy.com/2008/06/25/im-working-on-a-product/#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://donttrustthisguy.com/2008/06/25/im-working-on-a-product/feed/atom/" thr:count="5" />
		<thr:total>5</thr:total>
	</entry>
		<entry>
		<author>
			<name>Jim Jeffers</name>
						<uri>http://www.donttrustthisguy.com/blog</uri>
					</author>
		<title type="html"><![CDATA[What&#8217;s On Your Mind These Days?]]></title>
		<link rel="alternate" type="text/html" href="http://donttrustthisguy.com/2008/06/17/whats-on-you-mind-these-days/" />
		<id>http://donttrustthisguy.com/2008/06/17/whats-on-you-mind-these-days/</id>
		<updated>2008-06-24T04:56:57Z</updated>
		<published>2008-06-17T07:06:51Z</published>
		<category scheme="http://donttrustthisguy.com" term="philosophy" /><category scheme="http://donttrustthisguy.com" term="concerns" /><category scheme="http://donttrustthisguy.com" term="life" /><category scheme="http://donttrustthisguy.com" term="thoughts" />		<summary type="html"><![CDATA[Lately, I&#8217;ve been reading a lot about peak oil, our place in the world economy, and the harmful industrialization of our everyday food. Simply put, I haven&#8217;t been writing as a result of the information overload that I&#8217;m enjoying at the moment.

Joy might seem like a strange way to describe the topics I just bantered [...]]]></summary>
		<content type="html" xml:base="http://donttrustthisguy.com/2008/06/17/whats-on-you-mind-these-days/"><![CDATA[<p>Lately, I&#8217;ve been reading a lot about <a title="The Crude Awakening" href="http://www.oilcrashmovie.com/">peak oil</a>, <a title="The Future of American Power" href="http://www.foreignaffairs.org/20080501facomment87303/fareed-zakaria/the-future-of-american-power.html">our place in the world economy</a>, and the <a href="http://www.michaelpollan.com/omnivore.php">harmful industrialization of our everyday food</a>. Simply put, I haven&#8217;t been writing as a result of the information overload that I&#8217;m enjoying at the moment.</p>
<p><span id="more-141"></span></p>
<p>Joy might seem like a strange way to describe the topics I just bantered off but it&#8217;s true.  Reading about these seemingly distant and to some even unimportant things have really better helped me gain a greater understanding of the world I live in. We take for granted everything that happens around us, rather than complain upon hard times I&#8217;d rather understand what has lead to or is currently causing such events to unfold. No the topics are not joyful - peak oil can be a very depressing topic - but the sense of empowerment you get from taking the time to learn the how, and why is. Now I don&#8217;t feel quite as helpless in this world as I did before.</p>
<p>It&#8217;s easy for all of us to player the role of the ignorant citizen or shrugging things off as either inapplicable to us or unstoppable by us.  But I feel quite the contrary, if we take the time to educate ourselves on these things happening now we can make change that is not political but behavior. We can learn and change what we do ourselves instead of simply standing around and feeling helpless. So with that rant, I&#8217;m asking you, what topics in this world are concerning you most?  I&#8217;m interested in listening.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://donttrustthisguy.com/2008/06/17/whats-on-you-mind-these-days/#comments" thr:count="8" />
		<link rel="replies" type="application/atom+xml" href="http://donttrustthisguy.com/2008/06/17/whats-on-you-mind-these-days/feed/atom/" thr:count="8" />
		<thr:total>8</thr:total>
	</entry>
		<entry>
		<author>
			<name>Jim Jeffers</name>
						<uri>http://www.donttrustthisguy.com/blog</uri>
					</author>
		<title type="html"><![CDATA[Using Presenters in Rails]]></title>
		<link rel="alternate" type="text/html" href="http://donttrustthisguy.com/2008/05/29/using-presenters-in-rails-3/" />
		<id>http://donttrustthisguy.com/2008/05/29/using-presenters-in-rails-3/</id>
		<updated>2008-05-29T18:31:00Z</updated>
		<published>2008-05-29T18:31:00Z</published>
		<category scheme="http://donttrustthisguy.com" term="code" /><category scheme="http://donttrustthisguy.com" term="presenters" /><category scheme="http://donttrustthisguy.com" term="rails" /><category scheme="http://donttrustthisguy.com" term="refactoring" /><category scheme="http://donttrustthisguy.com" term="ruby" />		<summary type="html"><![CDATA[Sitting thrugh my first tutorials session at RailsConf we&#8217;ve come across an interesting discussion about the philosophy of using the &#8216;Presenter Pattern&#8217; to refactor code in your applications controller.

What the presenter initially did was build out a traditional presenter class to extend the model and provide two methods to find possible status and priority objects [...]]]></summary>
		<content type="html" xml:base="http://donttrustthisguy.com/2008/05/29/using-presenters-in-rails-3/"><![CDATA[<p>Sitting thrugh my first tutorials session at RailsConf we&#8217;ve come across an interesting discussion about the philosophy of using the <a href="http://blog.jayfields.com/2007/03/rails-presenter-pattern.html">&#8216;Presenter Pattern&#8217;</a> to refactor code in your applications controller.</p>
<p><span id="more-140"></span></p>
<p>What the presenter initially did was build out a traditional presenter class to extend the model and provide two methods to find possible status and priority objects from the database.  This requires the author to delegate class methods from the model that the Presenter class could use.  It also requires us to wrap any instance variable of the child object in the presenter class before we pass it to the view.</p>
<pre name="code" class="ruby">
class StoryPresenter

  def initialize(story)
    @story = story
  end

  delegate  :id, :class, :errors, :to_param, :new_record?,
            :to => :@story

  def possible_statuses
    @statuses = Status.find(:all).map{ |s| [s.name, s.id] }.unshift []
  end

  def possible_priorities
    @priorities = Priority.find(:all).map{ |e| [e.name, e.id] }.unshift []
  end

  def method_missing(name, *args)
    @story.send name, *args
  end

end
</pre>
<p>And then the implementation in the controller looks something like this:</p>
<pre name="code" class="ruby">
def create
  story = @project.stories.build(params[:story])
  respond_to do |format|
    format.js do
      @story = StoryPresenter.new story
      render :action => "stories/new" unless story.save
    end
  end
end
</pre>
<p>A member in the audience suggested that instead of treating the presenter as a traditional presenter object we simply write it as a module.  Then we no longer would have to delegate the methods from the model and instead of wrapping any instance variable of the child class we could just extend it.  The argument for this is clear.  It&#8217;s less code, and it&#8217;s more flexible.</p>
<pre name="code" class="ruby">
module StoryPresenter

  def possible_statuses
    @statuses = Status.find(:all).map{ |s| [s.name, s.id] }.unshift []
  end

  def possible_priorities
    @priorities = Priority.find(:all).map{ |e| [e.name, e.id] }.unshift []
  end

end
</pre>
<p>And then the implementation in the controller looks something like this:</p>
<pre name="code" class="ruby">
def create
  @story = @project.stories.build(params[:story])
  respond_to do |format|
    format.js do
      @story.extend StoryPresenter
      render :action => "stories/new" unless @story.save
    end
  end
end
</pre>
<p>However, the arguments against using a presenter as a mixin are more philosophical.  If we&#8217;re using the presenter pattern we should encapsulate only what we need the view to use explicitly to prevent logic leaking into the view or the controller by other authors.  By treating the Presenter object as a class and explicitly delegating the model methods we do just that.  To utilize further methods of the model we would need to return to the presenter object and extend it there as opposed to just sliding extraneous logic into our controller or view.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://donttrustthisguy.com/2008/05/29/using-presenters-in-rails-3/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://donttrustthisguy.com/2008/05/29/using-presenters-in-rails-3/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	</entry>
		<entry>
		<author>
			<name>Jim Jeffers</name>
						<uri>http://www.donttrustthisguy.com/blog</uri>
					</author>
		<title type="html"><![CDATA[Blogging is not Technology.]]></title>
		<link rel="alternate" type="text/html" href="http://donttrustthisguy.com/2008/05/11/blogging-is-not-technology/" />
		<id>http://donttrustthisguy.com/2008/05/11/blogging-is-not-technology/</id>
		<updated>2008-05-12T06:47:52Z</updated>
		<published>2008-05-12T06:45:57Z</published>
		<category scheme="http://donttrustthisguy.com" term="code" /><category scheme="http://donttrustthisguy.com" term="html" /><category scheme="http://donttrustthisguy.com" term="philosophy" /><category scheme="http://donttrustthisguy.com" term="semantics" /><category scheme="http://donttrustthisguy.com" term="tutorial" />		<summary type="html"><![CDATA[Last week I was invited to speak at a local NetSquared meeting out in Tempe.  Presenting on the topic of blogging forced me to take a step back to look at what I&#8217;ve been doing over the past seven years.  I realized all of the technological connotations associated to blogging are irrelevant.  [...]]]></summary>
		<content type="html" xml:base="http://donttrustthisguy.com/2008/05/11/blogging-is-not-technology/"><![CDATA[<p>Last week I was invited to speak at a local <a href="http://netsquared.meetup.com/12/">NetSquared meeting</a> out in Tempe.  Presenting on the topic of blogging forced me to take a step back to look at what I&#8217;ve been doing over the past seven years.  I realized all of the technological connotations associated to blogging are irrelevant.  Blogging is not about the web, rss feeds, or technology.  That is just a means to an end.  Blogging is about people, it&#8217;s about voices, blogging is all about you. Blogging is a medium for distributing both fact and opinion.  It&#8217;s about discussion and connecting people in a relevant context.  The technology just helps run the show.</p>
<p><span id="more-137"></span></p>
<p>In my presentation I briefly explained the concept of syndication via RSS and Atom - then touched on a high level overview of what a CMS system is used for.  This was mainly to acknowledge the fact that not that many people are keen on the how or why of RSS.  After demystifying the essential technologies involved, I focused on what blogging is really about.  You can check out my slides below or <a href="http://donttrustthisguy.com/slides/jjeffers-050708-blogging.html">view it in fullscreen</a>.</p>
<p><object width='590' height='450'><param name='movie' value='/slides/slide_viewer.swf?slideshow=/slides/blogging_presentation.swf'><embed src='/slides/slide_viewer.swf?slideshow=/slides/blogging_presentation.swf' width='590' height='450'></embed></param></object></p>
<ul>
<li>Disclaimer: You can click through them to proceed, but you can&#8217;t step back. This is due to a shortcoming in Keynote&#8217;s export to flash functionality. I wrote a viewer tool to load the .swf file created by keynote to preload it, but I could not interact with the movie itself as it&#8217;s an older format of SWF.</li>
</ul>
]]></content>
		<link rel="replies" type="text/html" href="http://donttrustthisguy.com/2008/05/11/blogging-is-not-technology/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://donttrustthisguy.com/2008/05/11/blogging-is-not-technology/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	</entry>
		<entry>
		<author>
			<name>Jim Jeffers</name>
						<uri>http://www.donttrustthisguy.com/blog</uri>
					</author>
		<title type="html"><![CDATA[Less Markup Is Better Markup.]]></title>
		<link rel="alternate" type="text/html" href="http://donttrustthisguy.com/2008/04/12/less-markup-is-better-markup/" />
		<id>http://donttrustthisguy.com/2008/04/13/less-markup-is-better-markup/</id>
		<updated>2008-04-13T20:40:58Z</updated>
		<published>2008-04-13T06:30:57Z</published>
		<category scheme="http://donttrustthisguy.com" term="code" /><category scheme="http://donttrustthisguy.com" term="html" /><category scheme="http://donttrustthisguy.com" term="philosophy" /><category scheme="http://donttrustthisguy.com" term="semantics" /><category scheme="http://donttrustthisguy.com" term="tutorial" />		<summary type="html"><![CDATA[There is a lot of ambiguity when it comes to writing semantic markup in HTML: to what extent should we markup data?  How semantically detailed do we need to be?  While there is no specific rule of thumb, I will say that the less the better.  When writing markup, be as clean [...]]]></summary>
		<content type="html" xml:base="http://donttrustthisguy.com/2008/04/12/less-markup-is-better-markup/"><![CDATA[<p>There is a lot of ambiguity when it comes to writing semantic markup in HTML: to what extent should we markup data?  How semantically detailed do we need to be?  While there is no specific rule of thumb, I will say that the less the better.  When writing markup, be as clean as possible without losing meaning.  Much like how <a href="http://www.amazon.com/Elements-Style-William-Strunk/dp/0205313426/ref=pd_bbs_2?ie=UTF8&#038;s=books&#038;qid=1208116574&#038;sr=8-2">The Elements of Style</a> emphasizes brevity in writing - a sentence should use as few words as possible without losing it&#8217;s meaning - an html document should use as little markup as possible without breaking the context of it&#8217;s content.</p>
<p><span id="more-136"></span></p>
<h3>Use the Minimum Necessary to Communicate Meaning</h3>
<p>Unfortunately, life is not so simple for the HTML author.  Technology binds us to complications that create an environment that is less precise, less absolute, than merely writing a sentence.  But if you can put the pressures we face from design implementation and browser support aside to focus on the basic semantic meaning; you will find that the aforementioned complexity is quite easy to deal with by incorporating small tweaks to your HTML.  Here are two primary points in regards to the over complexity of HTML when thinking in terms of <a href="http://donttrustthisguy.com/2008/04/04/write-html-that-means-something/">implementation as opposed to meaning</a>.</p>
<ul>
<li>Writing HTML based purely on semantic meaning results in much clearer and flexible HTML that is easier to style and maintain.</li>
<li>Complications during implementation are best tackled by adding superfluous markup to correct a problem as it arises rather than preemptively.</li>
</ul>
<h3>Only Add Superfluous Markup After Challenges Arise</h3>
<p>Here is an example.  Let&#8217;s say we have a body of content containing two unsorted lists with four items a piece.  Now let&#8217;s say we want the unsorted lists in this body of content be styled differently from the general rules we have already applied.  If we wanted the absolute most flexibility, we could have preemptively given each list item (&lt;li&gt;) it&#8217;s own class.  That would be a total of eight elements with additional markup.  We could reduce this to only two elements by simply applying a class to the unsorted lists (&lt;ul&gt;) and leaving the list items bare.  Or, provided the body of content is encapsulated in it&#8217;s own HTML element to semantically describe the associations between the content elements, we could give the containing object a class or ID.  Let&#8217;s say this body of content is the secondary content on the page.  We could give the encapsulating div a class, <strong>thus reducing the amount of marked up elements from eight to one.</strong></p>
<h3>Only Use Containing Elements to Construct Associations</h3>
<p>It&#8217;s far to easy and common to find html documents that have nearly every individual element wrapped in it&#8217;s own division (&lt;div&gt;) but this is a terrible breakdown in semantics.  These excessive containers create meaningless layers of information that add no semantic value to the document.  Elements certainly need to be packaged into other containing elements but only when they need to be associated to each other.</p>
<ul>
<li>There should never be a time when a lone element is enclosed in it&#8217;s own containing element.</li>
<li>If an element is alone in a container - it should be strong enough to stand on it&#8217;s own and the containing element should be eliminated.</li>
</ul>
<p>Take this blog as an example.  This post contains many headings, paragraphs, and unsorted lists.  It makes sense to enclose the content of this entry into it&#8217;s own division to symbolize that all of these various elements are part of a larger body of content.  A single heading, paragraph, or bullet point in this post could not stand on it&#8217;s own to communicate the message of this article.  Think about that when trying to make sense of when you should or should not apply a containing element.  In other words, when writing a long novel you would not put every single sentence on it&#8217;s own page.  Wrapping every single paragraph, image, and list of  your content into a &lt;div&gt; is not so different.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://donttrustthisguy.com/2008/04/12/less-markup-is-better-markup/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://donttrustthisguy.com/2008/04/12/less-markup-is-better-markup/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	</entry>
		<entry>
		<author>
			<name>Jim Jeffers</name>
						<uri>http://www.donttrustthisguy.com/blog</uri>
					</author>
		<title type="html"><![CDATA[Letting The Page &#8216;Breath&#8217;.]]></title>
		<link rel="alternate" type="text/html" href="http://donttrustthisguy.com/2008/04/12/letting-the-page-breath/" />
		<id>http://donttrustthisguy.com/2008/04/12/letting-the-page-breath/</id>
		<updated>2008-04-13T01:33:05Z</updated>
		<published>2008-04-13T01:06:38Z</published>
		<category scheme="http://donttrustthisguy.com" term="design" /><category scheme="http://donttrustthisguy.com" term="tutorial" /><category scheme="http://donttrustthisguy.com" term="typography" />		<summary type="html"><![CDATA[I&#8217;m continuing my way through Robert Bringhurst&#8217;s book and at a slow pace.  The Elements of Typographic Style is so rich with information that I can only read it in spurts of a few pages and often have to re-read to let the full lesson sink in.  Lately, I&#8217;ve become very intrigued by [...]]]></summary>
		<content type="html" xml:base="http://donttrustthisguy.com/2008/04/12/letting-the-page-breath/"><![CDATA[<p>I&#8217;m continuing my way through <a href="http://www.amazon.com/Elements-Typographic-Style-Robert-Bringhurst/dp/0881791326">Robert Bringhurst&#8217;s</a> book and at a slow pace.  The Elements of Typographic Style is so rich with information that I can only read it in spurts of a few pages and often have to re-read to let the full lesson sink in.  Lately, I&#8217;ve become very intrigued by how he describes rhythm in the text layout and the concept of how a page must &#8216;breath&#8217;.</p>
<p><span id="more-135"></span></p>
<p>When speaking of rhythm - Bringhurst is referring to the horizontal spacing between characters and the vertical spacing of lines of text.  &#8216;Breathing&#8217; is how much words the page will carry. This controlled by the rhythm. When we layout text and information, we face the challenge of applying content to the constraint of our space. So the more words we put into a given page, the less it can breath.  For the reader&#8217;s sake it&#8217;s important that the text can breath.  If it can&#8217;t the text becomes unappealing and difficult to read.</p>
<p>Robert, explains various strategies for allowing a page to breath and still carry more text.  For instance, longer line lengths require greater leading.  If we shorten the line length by dividing the page into columns we can reduce the amount of leading on the page and still allow the document to breath.  By reducing the leading we can fit more lines into a given page and thus allow it to carry more text if necessary.</p>
<p>What&#8217;s interesting about the entire concept of breathing is that it seems very print orientated.  How does this apply to the web where our designs are often modified by the reader.  If the reader resizes their window the entire body could potentially change depending on how we designed our site to accommodate variations in screen-size.  At the same time if we use a fixed width design such as this site - we can find that we suddenly are no longer utilizing enough of the page and allowing the page to breath far too much.  And then of course, the user can adjust the font-size which totally changes the amount of words we carry on each line as the character size changes but the line-length doesn&#8217;t.</p>
<p>It seems like a new set of typographic rules needs to be written for the web where the constraints aren&#8217;t so absolute.  But who will do it?</p>
]]></content>
		<link rel="replies" type="text/html" href="http://donttrustthisguy.com/2008/04/12/letting-the-page-breath/#comments" thr:count="3" />
		<link rel="replies" type="application/atom+xml" href="http://donttrustthisguy.com/2008/04/12/letting-the-page-breath/feed/atom/" thr:count="3" />
		<thr:total>3</thr:total>
	</entry>
		<entry>
		<author>
			<name>Jim Jeffers</name>
						<uri>http://www.donttrustthisguy.com/blog</uri>
					</author>
		<title type="html"><![CDATA[It&#8217;s CSS Naked Day!]]></title>
		<link rel="alternate" type="text/html" href="http://donttrustthisguy.com/2008/04/09/its-css-naked-day/" />
		<id>http://donttrustthisguy.com/2008/04/09/its-css-naked-day/</id>
		<updated>2008-04-09T17:21:02Z</updated>
		<published>2008-04-09T17:21:02Z</published>
		<category scheme="http://donttrustthisguy.com" term="design" /><category scheme="http://donttrustthisguy.com" term="tutorial" /><category scheme="http://donttrustthisguy.com" term="typography" />		<summary type="html"><![CDATA[Today&#8217;s the big day! I&#8217;ve turned off my style sheets in honor of CSS naked day!  Aside from the sIFR, which I&#8217;m not going to disable for this, you are seeing the pure semantic HTML markup of this site.  This ties into a series of posts I started earlier this week on semantic [...]]]></summary>
		<content type="html" xml:base="http://donttrustthisguy.com/2008/04/09/its-css-naked-day/"><![CDATA[<p>Today&#8217;s the big day! I&#8217;ve turned off my style sheets in honor of <a href="http://naked.dustindiaz.com/">CSS naked day</a>!  Aside from the sIFR, which I&#8217;m not going to disable for this, you are seeing the pure semantic HTML markup of this site.  This ties into a series of posts <a href="http://donttrustthisguy.com/2008/04/04/write-html-that-means-something/">I started earlier this week on semantic HTML</a>.  More to come soon</p>
]]></content>
		<link rel="replies" type="text/html" href="http://donttrustthisguy.com/2008/04/09/its-css-naked-day/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://donttrustthisguy.com/2008/04/09/its-css-naked-day/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	</entry>
	</feed>
