<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Absolute BS</title>
	<atom:link href="http://blog.briansamson.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.briansamson.com</link>
	<description>thoughts from brian samson</description>
	<lastBuildDate>Sat, 30 Jul 2011 13:06:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.briansamson.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Absolute BS</title>
		<link>http://blog.briansamson.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.briansamson.com/osd.xml" title="Absolute BS" />
	<atom:link rel='hub' href='http://blog.briansamson.com/?pushpress=hub'/>
		<item>
		<title>Phonegap 1.0.0 Released: Update your plugins</title>
		<link>http://blog.briansamson.com/2011/07/30/phonegap-1-0-0-released-update-your-plugins/</link>
		<comments>http://blog.briansamson.com/2011/07/30/phonegap-1-0-0-released-update-your-plugins/#comments</comments>
		<pubDate>Sat, 30 Jul 2011 13:06:03 +0000</pubDate>
		<dc:creator>Brian Samson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.briansamson.com/?p=375</guid>
		<description><![CDATA[Phonegap 1.0.0 was released today. It&#8217;s a good update with a lot of improvements, and it&#8217;s finally out of prerelease stage. However, I had some problems with the ChildBrowser plugin not being recognized on iOS. I kept getting this error message, even though I had ChildBrowserCommand defined in PhoneGap.plist: ERROR: Plugin 'ChildBrowserCommand' not found, or [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=375&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.phonegap.com">Phonegap</a> 1.0.0 was released today.  It&#8217;s a good update with a lot of improvements, and it&#8217;s finally out of prerelease stage.  </p>
<p>However, I had some problems with the <a href="https://github.com/phonegap/phonegap-plugins">ChildBrowser plugin</a> not being recognized on iOS. I kept getting this error message, even though I had ChildBrowserCommand defined in PhoneGap.plist:</p>
<pre>
ERROR: Plugin 'ChildBrowserCommand' not found, or is not a PGPlugin. Check your plugin mapping in PhoneGap.plist.
</pre>
<p>After looking at it for quite a while, I found the problem in PhoneGapDelegate.m </p>
<p><code><br />
// first, we try to find the pluginName in the pluginsMap<br />
// (acts as a whitelist as well) if it does not exist, we return nil<br />
// NOTE: plugin names are matched as lowercase to avoid problems - however, a<br />
// possible issue is there can be duplicates possible if you had:<br />
// "com.phonegap.Foo" and "com.phonegap.foo" - only the lower-cased entry will match<br />
NSString* className = [self.pluginsMap objectForKey:[pluginName lowercaseString]];<br />
</code></p>
<p>Phonegap now requires the plugin identifiers in PhoneGap.plist to be in lowercase, so instead of<br />
&#8220;ChildBrowserCommand&#8221; as the key, you need to change that to &#8220;childbrowsercommand&#8221; and it will start working again.  Also make sure your plugin is up to date as they&#8217;ve made some changes in the last week or two.  </p>
<p>I hope this helps anybody who ran into this message, and it was pretty frustrating for me on a Friday afternoon.  </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briansamson.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briansamson.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/briansamson.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/briansamson.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/briansamson.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/briansamson.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/briansamson.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/briansamson.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/briansamson.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/briansamson.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/briansamson.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/briansamson.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/briansamson.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/briansamson.wordpress.com/375/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=375&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.briansamson.com/2011/07/30/phonegap-1-0-0-released-update-your-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f61b3f3da4952aa9abae4f16e83b02c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">samsonasu</media:title>
		</media:content>
	</item>
		<item>
		<title>Mobile Webapp Development in Chrome</title>
		<link>http://blog.briansamson.com/2011/07/11/mobile-webapp-development-in-chrome/</link>
		<comments>http://blog.briansamson.com/2011/07/11/mobile-webapp-development-in-chrome/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 21:41:33 +0000</pubDate>
		<dc:creator>Brian Samson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.briansamson.com/?p=360</guid>
		<description><![CDATA[View this post without wordpress.com restrictions What do Safari, Chrome, iPhone, and Android all have in common? They use Webkit as their html rendering engine. This has a bunch of nice side effects for mobile developers, the nicest of which is you can do at least 80% of your mobile web development on the desktop [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=360&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://briansamson.com/iphoneize.html">View this post without wordpress.com restrictions</a></p>
<p>What do Safari, Chrome, iPhone, and Android all have in common? They use Webkit as their html rendering engine. This has a bunch of nice side effects for mobile developers, the nicest of which is you can do at least 80% of your mobile web development on the desktop if you use Chrome or Safari.  Since I&#8217;m on linux, I use Chrome, and it&#8217;s awesome that all the mobile libraries (like <a href="http://www.sencha.com/products/touch/">Sencha Touch</a>, <a href="http://jqtouch.com/">jqTouch</a>, etc).</p>
<p>I wrote a <a href="http://briansamson.com/touch-resume/">proof of concept Sencha Touch app</a> that works almost exactly the same in Chrome as it does on my Nexus 1.  However one of the things that bugs me is that the browsers don&#8217;t honor the META viewport directives, and I seem to always get weird scrollbars showing up and ruining everything.  so I wrote a little scriptlet that will pop up a window with the current page in 320&#215;480 and without scrollbars.</p>
<p>Usually to install a bookmarklet, you just drag a link from a page to your bookmark bar, but wordpress.com doesn&#8217;t allow me to put javascript on a page (or iframes). So you can either view this post<a href="http://briansamson.com/iphoneize.html"> as it was meant to be viewed</a> or you can manually add a bookmark with the following javascript as its destination:</p>
<p><pre class="brush: plain;">
javascript:var w=window.open(location.href,null,'toolbar=0,status=0,location=0,menubar=0,width=320,height=480,scrollbars=0');w.onload=function(){w.document.body.style['overflow-x']='hidden';w.document.body.style['overflow-y']='hidden';};
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briansamson.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briansamson.wordpress.com/360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/briansamson.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/briansamson.wordpress.com/360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/briansamson.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/briansamson.wordpress.com/360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/briansamson.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/briansamson.wordpress.com/360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/briansamson.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/briansamson.wordpress.com/360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/briansamson.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/briansamson.wordpress.com/360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/briansamson.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/briansamson.wordpress.com/360/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=360&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.briansamson.com/2011/07/11/mobile-webapp-development-in-chrome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f61b3f3da4952aa9abae4f16e83b02c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">samsonasu</media:title>
		</media:content>
	</item>
		<item>
		<title>Why Higher Rates are Better (for everyone)</title>
		<link>http://blog.briansamson.com/2011/07/06/why-higher-rates-are-better-for-everyone/</link>
		<comments>http://blog.briansamson.com/2011/07/06/why-higher-rates-are-better-for-everyone/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 23:30:51 +0000</pubDate>
		<dc:creator>Brian Samson</dc:creator>
				<category><![CDATA[Sofware Engineering]]></category>

		<guid isPermaLink="false">http://blog.briansamson.com/?p=343</guid>
		<description><![CDATA[As owner of an independent software firm , I apply for a lot of  contract jobs.  I probably talk to 20 potential clients for every one that I actually and up billing.  Many of these potential clients don&#8217;t even let me write up an estimate because they get scared away by my &#8220;high&#8221; hourly rate. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=343&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As owner of an independent software firm , I apply for a lot of  contract jobs.  I probably talk to 20 potential clients for every one that I actually and up billing.  Many of these potential clients don&#8217;t even let me write up an estimate because they get scared away by my &#8220;high&#8221; hourly rate.</p>
<p>Now whether or not my rate is actually that &#8220;high&#8221; (it&#8217;s not), I do know for a fact that there are literally thousands of other programmers who charge much much less.  Just go take a look at vworker or craigslist and you&#8217;ll see tons of offers for programming gigs that pay as low as $15/hour.</p>
<p>Or look at my inbox last week: &#8220;I have talked with a couple other developers and they have been around $40/hour.  Just wondering why you are so much more?&#8221;</p>
<p>Or at this post I saw on HN from a guy who is <a href="http://www.sofamoolah.com/blogging/work-online-my-insight-into-setting-an-hourly-rate/">very excited about some very low rates</a>.</p>
<p>Here&#8217;s a reddit thread recommending <a href="http://www.reddit.com/r/Design/comments/hega8/setting_a_rate_for_freelance_work/">anywhere from $15-$100</a></p>
<p>And <a href="http://www.reddit.com/r/geek/comments/g53yn/whats_the_going_rate_for_freelance_programming/">another one</a> in which the first post kindof has the right idea, and is the first big reason you should charge (or pay) a higher software consulting rate:</p>
<p><span class="Apple-style-span" style="font-size:20px;font-weight:bold;">If you price yourself like garbage you will be treated like garbage. </span></p>
<p>As the saying goes, time is money, but many businesses seem to forget this, and your rate is a good way to remind them.</p>
<p>A previous client of mine, during my first week of work, told me I should let them know when would be a good time for my &#8220;mandatory, 2-day on-site HR training.&#8221;  I told them I would be available whenever they liked, but that I would bill that time at my full rate.  It turns out that training wasn&#8217;t nearly as mandatory as the HR department initially thought.</p>
<p>But aren&#8217;t I just throwing away money? <strong>No.</strong>  I&#8217;m in the business of writing software, not the business of wasting people&#8217;s money.  I want to write great software and a higher rate allows me to concentrate on what I do best, since it isn&#8217;t worth it for a client to waste my time.  Those 2 days I didn&#8217;t spend in pointless meetings were instead 2 good productive days of coding.</p>
<p>As a client as well, I highly doubt you are in the business of purchasing garbage.  You would certainly be skeptical of a 60-80% discount on a new company car, so why aren&#8217;t you skeptical of bargain-bin software?</p>
<h2><strong>It just isn&#8217;t worth it</strong></h2>
<p>Freelance development is a much different beast from a working a 9-5.  If you are working for $40/hour, the absolute most you can make in a year, if you bill 40 hours per week (which you won&#8217;t), is around $83k before taxes. (<a href="http://swz.salary.com/SalaryWizard/Software-Engineer-III-Salary-Details-Phoenix-AZ.aspx">about the median for an experienced softare engineer in phoenix</a>) And what about all the non-billable time you spend finding clients, invoicing, meeting, planning, etc.</p>
<p>If you want to work 50-60 hours per week for $83k a year, I think you&#8217;re better off in a office where you get free equipment, vacation time, health insurance and retirement benefits on top of your salary for only 40 hours of work.  Which reminds me:</p>
<h2><strong>Full Time != 40 hours</strong></h2>
<p><strong></strong>At least in my variety of contact work, I bill incredibly tight.  I stop the clock for bathroom breaks, on the job training, phone calls, etc.  I bill actual time I work on actual code for an actual client.</p>
<p>I&#8217;ve worked a lot of &#8220;9-5&#8243; jobs where the software guys show up at 9:30, take an hour lunch, watch a bunch of youtube, leave early on Friday<em>,</em> and call that 40 hours.  On my own, not only do I still watch youtube, read blogs and hang out in IRC, but I have meetings, lunches, accounting, and other unbillable &#8220;work.&#8221; A 25-billable-hour week is good for me, and I&#8217;ve never actually billed more than 40.</p>
<p>And yet I produce as much if not more than many people who claim to do 40.  If you are paying a &#8220;cheap&#8221; software developer for 40 hours per week, I&#8217;m almost certain he isn&#8217;t actually doing 40 hours of work.  What if I produce the same amount of code in the same amount of calendar time (1 week) for the same total price, but I only bill you 20 hours for it? Is my rate really double, or am I just being more honest with how I spend my time?</p>
<h2><strong>You get what you pay for</strong></h2>
<p>There is a great post on Jeff Atwood&#8217;s blog from a few years ago that described the <a href="http://www.codinghorror.com/blog/2004/09/skill-disparities-in-programming.html">disparity in the skill level of programmers</a>. This post is probably more true today than when he wrote it in 2004.  Programming in general has been getting much more accessible because of noob-friendly frameworks, screencasts, books, and the open source community.  That doesn&#8217;t mean it&#8217;s gotten any easier.</p>
<p>Sure you can <a href="http://weblog.rubyonrails.org/2008/11/27/new-15-minute-blog-video-on-rails-2-2">create a weblog in 15 minutes</a> but what happens when something breaks and there&#8217;s no 15 minute screencast to help you fix it?  What happens is you end up spending 10 times as long fixing it as someone who charges only 3 times as much per hour.  Or maybe you don&#8217;t pay the &#8220;higher cost&#8221; contractor anything at all:</p>
<h2><strong>Warranty your code </strong></h2>
<p>All code contains bugs, but well designed, DRY code will contain fewer bugs than a $15/hour copy-paste job, and the bugs it does contain will be easier to fix.  You might even consider warrantying your code.  Your clients expect your code to work, but none of them will <em>ever</em> agree to pay for testing.  You can wrap cost of testing into your rate and you end up delivering a higher-quality product.</p>
<p>Nobody likes being nickel-and-dimed, especially when the client has to pay for your mistakes.  Occasionally I&#8217;ll bill for a really complex, time-consuming bugfix(never without warning), but your clients will love seeing &#8220;Fixed rendering issues in IE &#8211; 1 hour &#8211; $0.00&#8243; on their invoice.</p>
<h2><strong>Preventing feature-creep</strong></h2>
<p>Feature creep is the bane of software projects.  It&#8217;s a major cause of going over budget (both in time and money) and very often leads to bloated, bug-filled software.  It is also the reason you should never, ever do a &#8220;fixed-bid&#8221; project, which is basically equivalent to charing $0/hour.   If the client can buy features for pennies, he will, and more features are not always better.</p>
<p>As a freelancer, shouldn&#8217;t I want more work?  Shouldn&#8217;t I encourage more features? <strong>No.</strong>  I should write an entire post on this topic, but a big reason I went into business for myself was to have more creative control over what I write.  Good software is important to me, and clients are notorious for not knowing what good software looks like.  I&#8217;d rather have a website I&#8217;m proud to show off than one I&#8217;m embarrassed of that made me a few extra dollars. A higher rate can disincentivize the hasty addition of features, and ensure that both sides of the project are thinking about how to get the most value out of everyone&#8217;s time (and money).</p>
<h2><strong>Programming != IT</strong></h2>
<p>I know there is a lot of buzz about so-called &#8220;<a href="http://en.wikipedia.org/wiki/DevOps">devops</a>&#8221; positions, but that&#8217;s <a href="http://en.wikipedia.org/wiki/Core_competency">not what I do</a>.</p>
<p>Your client needs a new webserver configured? They can get an entire <em>month</em> of high-quality, dedicated service from a managed hosting provider for the same amount they would have to pay me to reinstall ubuntu and run &#8216;apt-get upgrade&#8221;.  Or you can make an extra $40 staring at the console window of the cheapest linode server for half an afternoon.  It&#8217;s up to you.</p>
<p>And when the server goes down in the middle of the night, if you ding them $25 for a 3am phone call, I guarantee you&#8217;ll receive that call.  If it costs them $200 then maybe they just call the nice people at <a href="http://www.rackspace.com">rackspace</a> instead.</p>
<h2><strong>Hourly rates don&#8217;t even matter</strong></h2>
<p>As a client, you absolutely need to get an estimate from your freelancers before you can judge.  This sounds obvious, but a lot of people apparently get sticker shock when they hear 3-digit hourly rates.  But if the &#8220;expensive&#8221; programmer and the &#8220;cheap&#8221; rogrammer both quote you $5000 for the project, I would bet the former has a better chance of finishing on time and on budget than the latter.</p>
<p>This is probably the most important point here.  Having a higher hourly rates doesn&#8217;t even mean you make more money, or that you would be more expensive for any particular project.  Your rate really just signals  how good your work is, how high the client&#8217;s expectations should be, and how you expect to be treated.</p>
<p>If the client is worried about cost, there are ways to negotiate that don&#8217;t involve changing your rate.  Higher-value code, limited scope, better responsiveness, creative control, and a slew of other factors are all more important than what rate you charge.</p>
<p>Of course this post assumes you&#8217;re good at what you do.  If you&#8217;re happy copy-pasting vb.net code from google into a vworker job, by all means continue charging $10/hour.  But if you are a great software developer with a good reputation and happy former clients, do yourself a favor and raise the rate.  You will feel more valued, and that feeling will manifest in the your work.  You will get to do more of what you like, less of what you don&#8217;t, and that will let you provide much more value for you clients.</p>
<p>And if you are looking for great software developers, concentrate on the big picture, not on the big (hourly) figure.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briansamson.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briansamson.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/briansamson.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/briansamson.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/briansamson.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/briansamson.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/briansamson.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/briansamson.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/briansamson.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/briansamson.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/briansamson.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/briansamson.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/briansamson.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/briansamson.wordpress.com/343/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=343&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.briansamson.com/2011/07/06/why-higher-rates-are-better-for-everyone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f61b3f3da4952aa9abae4f16e83b02c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">samsonasu</media:title>
		</media:content>
	</item>
		<item>
		<title>Has it been a year already?</title>
		<link>http://blog.briansamson.com/2011/06/24/has-it-been-a-year-already/</link>
		<comments>http://blog.briansamson.com/2011/06/24/has-it-been-a-year-already/#comments</comments>
		<pubDate>Sat, 25 Jun 2011 01:04:17 +0000</pubDate>
		<dc:creator>Brian Samson</dc:creator>
				<category><![CDATA[Sofware Engineering]]></category>

		<guid isPermaLink="false">http://briansamson.wordpress.com/?p=5</guid>
		<description><![CDATA[It looks like it&#8217;s been over a year since I blogged. That&#8217;s probably because I&#8217;ve been absurdly busy starting my own company! I plan on updating this site more frequently from now on, and I&#8217;m going to start with a shameless plug.  Although business is good at the moment, I&#8217;m always looking for new clients. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=5&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It looks like it&#8217;s been over a year since I blogged. That&#8217;s probably because I&#8217;ve been absurdly busy starting my own company!<a href="http://briansamson.files.wordpress.com/2010/06/briansamson-logo.png"><img class="aligncenter size-medium wp-image-337" title="briansamson-logo" src="http://briansamson.files.wordpress.com/2010/06/briansamson-logo.png?w=300&#038;h=100" alt="Brian Samson Software Consulting" width="300" height="100" /></a></p>
<p>I plan on updating this site more frequently from now on, and I&#8217;m going to start with a shameless plug.  Although business is good at the moment, I&#8217;m always looking for new clients.  If you or anyone you know needs some outstanding software written, whether it be Ruby on Rails, Android, Java, or even *shudder* PHP, shoot me an e-mail.  Anything (at) briansamson.com will get delivered.</p>
<p>Also you can take a look at my <a href="http://briansamson.com/r">online résumé</a> which I recently updated to have a mobile version if you visit on your phone.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briansamson.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briansamson.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/briansamson.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/briansamson.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/briansamson.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/briansamson.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/briansamson.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/briansamson.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/briansamson.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/briansamson.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/briansamson.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/briansamson.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/briansamson.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/briansamson.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=5&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.briansamson.com/2011/06/24/has-it-been-a-year-already/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f61b3f3da4952aa9abae4f16e83b02c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">samsonasu</media:title>
		</media:content>

		<media:content url="http://briansamson.files.wordpress.com/2010/06/briansamson-logo.png?w=300" medium="image">
			<media:title type="html">briansamson-logo</media:title>
		</media:content>
	</item>
		<item>
		<title>The iPhone is not Facebook</title>
		<link>http://blog.briansamson.com/2010/05/28/the-iphone-is-not-facebook/</link>
		<comments>http://blog.briansamson.com/2010/05/28/the-iphone-is-not-facebook/#comments</comments>
		<pubDate>Fri, 28 May 2010 15:00:02 +0000</pubDate>
		<dc:creator>Brian Samson</dc:creator>
				<category><![CDATA[Don't do that]]></category>

		<guid isPermaLink="false">http://briansamson.com/b/2010/the-iphone-is-not-facebook/</guid>
		<description><![CDATA[The iPhone is a great, magical, revolutionary device. I owned first-gen one for 2 years and loved everything about it (except AT&#38;T). I think it&#8217;s great how many apps are out, and how much emphasis the platform has put on software development in general. Without the iPhone I&#8217;m sure my Nexus One wouldn&#8217;t even exist. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=97&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.apple.com/iphone/">iPhone</a> is a great, magical, revolutionary device.  I owned first-gen one for 2 years and loved everything about it (except AT&amp;T).  I think it&#8217;s great how many apps are out, and how much emphasis the platform has put on software development in general.  Without the iPhone I&#8217;m sure my <a href="http://www.google.com/phone">Nexus One</a> wouldn&#8217;t even exist.</p>
<p>However.</p>
<p>Shaq released an iPhone app today: <a href="http://itunes.apple.com/us/app/the-shaq-app/id373333065?mt=8">The Shaq App</a>.  The entire point, as far as I can tell, is to watch <a href="http://twitter.com/the_real_shaq">shaq&#8217;s twitter feed</a>.  There are about a thousand ways you could have done that already, the easiest of which is going to his twitter page.  There is no reason for this.</p>
<p>But Shaq is rich.  And social.  If he wants to pay somebody to write The Shaq App, that&#8217;s fine by me.  What spurred this post was a spam I got from contacts.com with this in it:</p>
<p><a class="postImage imagelink" href="http://briansamson.files.wordpress.com/2010/05/captura-de-pantalla-2010-05-27-a-las-25436-pm.png" title="contacts.com spam"><img src="http://briansamson.files.wordpress.com/2010/05/captura-de-pantalla-2010-05-27-a-las-25436-pm.png?w=590" alt="contacts.com spam" /></a></p>
<p><i>&#8220;Our new LensGauge™ iPhone App makes it easy. It prompts you when to change your contact lenses. It maintains all pertinent information about your contacts. And it makes re-ordering a snap.&#8221;</i></p>
<p>This <a href="http://itunes.apple.com/us/app/lensgauge/id362333046?mt=8">LensGauge &#8482;</a> app is so dumb it is hard for me to properly articulate it.  It is dumber than the fart app(s).  It is dumber than the &#8220;I am Rich&#8221; app.  It is maybe even dumber than The Shaq App.  From the reviews on that page, it sounds like it doesn&#8217;t even work (how that is possible is beyond me).</p>
<p>This isn&#8217;t new.  Lots of companies seem to be <a href="http://itunes.apple.com/us/app/magic-coke-bottle-by-the-coca/id302392499?mt=8">&#8220;promoting their brand&#8221;</a> through <a href="http://itunes.apple.com/us/app/gap-stylemixer/id326347260?mt=8">&#8220;new business channels&#8221;</a> by <a href="http://itunes.apple.com/us/app/burger-king-now-phone-ordering/id314411398?mt=8">&#8220;having a presense&#8221;</a> on a <a href="http://itunes.apple.com/us/app/wienerschnitzel/id329127456?mt=8">&#8220;social platform.&#8221;</a></p>
<p>So listen up, all you pillars of industry.  You probably don&#8217;t need an iPhone app.  If your best idea for an iPhone app can be used at most once a year, you definitely don&#8217;t need one.  If it doesn&#8217;t do more than your website, just make your website work on mobile devices.  If you just yearn for virtual friends to &#8220;like&#8221; you, go get a facebook page or open a twitter account.  If all you desire is to be &#8220;social,&#8221; you should probably quit your job, because you are terrible at it.</p>
<p>The iPhone isn&#8217;t Facebook, although with 100,000 apps its starting to get pretty close.</p>
<hr />
<b>New from BrianSamson.com!</b> Really like this blog post?  Take it with you!  With the new BrianSamson.com iPhone app, it&#8217;s like having Brian Samson in your pocket at all times! You can re-read all your favorite posts, and be the first of your friends to know when there is a new post!  Download the <a href="http://briansamson.com/cup-of-lol.gif">BrianSamson.com iPhone app today!</a> <i>(Coming soon to Android and iPad)</i></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briansamson.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briansamson.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/briansamson.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/briansamson.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/briansamson.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/briansamson.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/briansamson.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/briansamson.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/briansamson.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/briansamson.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/briansamson.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/briansamson.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/briansamson.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/briansamson.wordpress.com/97/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=97&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.briansamson.com/2010/05/28/the-iphone-is-not-facebook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f61b3f3da4952aa9abae4f16e83b02c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">samsonasu</media:title>
		</media:content>

		<media:content url="http://briansamson.files.wordpress.com/2010/05/captura-de-pantalla-2010-05-27-a-las-25436-pm.png" medium="image">
			<media:title type="html">contacts.com spam</media:title>
		</media:content>
	</item>
		<item>
		<title>The worst comment I&#8217;ve ever written</title>
		<link>http://blog.briansamson.com/2010/05/21/the-worst-comment-ive-ever-written/</link>
		<comments>http://blog.briansamson.com/2010/05/21/the-worst-comment-ive-ever-written/#comments</comments>
		<pubDate>Fri, 21 May 2010 18:20:43 +0000</pubDate>
		<dc:creator>Brian Samson</dc:creator>
				<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://briansamson.com/b/2010/the-worst-comment-ive-ever-written/</guid>
		<description><![CDATA[I&#8217;m sitting here trying to debug a very complex piece of &#8220;meta&#8221; code. This code generates web forms that have fields that automatically show/hide based on the selections in other fields. It&#8217;s usually very nice to work in, and it makes creating dynamic forms easy, but it is insanely complex under the hood. I finally [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=95&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m sitting here trying to debug a very complex piece of &#8220;meta&#8221; code.  This code generates web forms that have fields that automatically show/hide based on the selections in other fields.  It&#8217;s usually very nice to work in, and it makes creating dynamic forms easy, but it is insanely complex under the hood. I finally find the source of the bug is a hip, railsey, ruby one-liner.  It&#8217;s not to hard to figure out what that line does (adds some kind of prefix to each key).  However I have no idea why it would do that.  Luckily when I wrote this code I knew this was confusing, so I included a comment:</p>
<p><pre class="brush: ruby;">
if (@if)
#in case this is being rendered in a subsection, the key
@if.each {|andor, array| array.each {|h| h[:key] = field_name_prefix + h[:key] }}
end
</pre></p>
<p>Except I forgot to finish it.  The key&#8230;.  the key&#8230;.. WHAT ABOUT THE KEY YOU IDIOT??  This is the worst comment I&#8217;ve ever written.  It is worse than no comment. No comment wouldn&#8217;t have got my hopes up&#8230;.and then crushed them.  Why isn&#8217;t it lunch time yet?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briansamson.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briansamson.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/briansamson.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/briansamson.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/briansamson.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/briansamson.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/briansamson.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/briansamson.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/briansamson.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/briansamson.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/briansamson.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/briansamson.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/briansamson.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/briansamson.wordpress.com/95/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=95&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.briansamson.com/2010/05/21/the-worst-comment-ive-ever-written/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f61b3f3da4952aa9abae4f16e83b02c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">samsonasu</media:title>
		</media:content>
	</item>
		<item>
		<title>Kiln&#8217;s kilnauth.py crashes under python 2.4</title>
		<link>http://blog.briansamson.com/2010/04/12/kilns-kilnauthpy-crashes-under-python-24/</link>
		<comments>http://blog.briansamson.com/2010/04/12/kilns-kilnauthpy-crashes-under-python-24/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 23:50:52 +0000</pubDate>
		<dc:creator>Brian Samson</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://briansamson.com/b/2010/kilns-kilnauthpy-crashes-under-python-24/</guid>
		<description><![CDATA[We recently switched to using Mercurial hosted at Joel Spolsky&#8217;s Kiln. So far I love it. I think distributed source control is the way of the future and I&#8217;m all for it. Anyway, Kiln provides a number of useful Mercurial plugins, one of which is called &#8216;kilnauth&#8217; and helps by caching your http authentication cookies [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=94&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We recently switched to using <a href="http://mercurial.selenic.com/">Mercurial</a> hosted at Joel Spolsky&#8217;s <a href="http://www.kilnhg.com">Kiln</a>.  So far I love it.  I think distributed source control is the way of the future and I&#8217;m all for it.</p>
<p>Anyway, Kiln provides a number of useful Mercurial plugins, one of which is called &#8216;kilnauth&#8217; and helps by caching your http authentication cookies so you don&#8217;t have to enter your password a bunch of times.  I was setting this up on our linux box, which only has python 2.4, and kilnauth was causing a crash when it tried to do an md5 hash.  The fix is pretty easy.  Near the top where they import the md5 library, change this line:<br />
<pre class="brush: python;">
try:
    from hashlib import md5
except:
    # Python 2.4
    import md5
</pre><br />
To this:<br />
<pre class="brush: python;">
try:
    from hashlib import md5
except:
    # Python 2.4
    from md5 import md5
</pre><br />
That&#8217;s it.  Simple little typo that they probably just didn&#8217;t test.</p>
<p>And on the subject of passwords, if you are bothered that capistrano outputs your inline http authentication passwords to the console, you can install this gem I wrote, <a href="http://rubygems.org/gems/cap_password_filter">cap_password_filter</a>, to fix that.</p>
<p><span id="more-94"></span><br />
To help out with searching, I&#8217;m including the full stack trace of the error:</p>
<pre>** unknown exception encountered, details follow
** report bug details to http://mercurial.selenic.com/bts/
** or mercurial@selenic.com
** Mercurial Distributed SCM (version 1.5)
** Extensions loaded: kilnauth
Traceback (most recent call last):
  File "/usr/bin/hg", line 27, in ?
    mercurial.dispatch.run()
  File "/usr/lib/python2.4/site-packages/mercurial/dispatch.py", line 16, in run
    sys.exit(dispatch(sys.argv[1:]))
  File "/usr/lib/python2.4/site-packages/mercurial/dispatch.py", line 30, in dispatch
    return _runcatch(u, args)
  File "/usr/lib/python2.4/site-packages/mercurial/dispatch.py", line 47, in _runcatch
    return _dispatch(ui, args)
  File "/usr/lib/python2.4/site-packages/mercurial/dispatch.py", line 466, in _dispatch
    return runcommand(lui, repo, cmd, fullargs, ui, options, d)
  File "/usr/lib/python2.4/site-packages/mercurial/dispatch.py", line 336, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/lib/python2.4/site-packages/mercurial/dispatch.py", line 517, in _runcommand
    return checkargs()
  File "/usr/lib/python2.4/site-packages/mercurial/dispatch.py", line 471, in checkargs
    return cmdfunc()
  File "/usr/lib/python2.4/site-packages/mercurial/dispatch.py", line 465, in
    d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
  File "/usr/lib/python2.4/site-packages/mercurial/util.py", line 401, in check
    return func(*args, **kwargs)
  File "/usr/lib/python2.4/site-packages/mercurial/commands.py", line 677, in clone
    branch=opts.get('branch'))
  File "/usr/lib/python2.4/site-packages/mercurial/hg.py", line 209, in clone
    src_repo = repository(ui, source)
  File "/usr/lib/python2.4/site-packages/mercurial/hg.py", line 82, in repository
    repo = _lookup(path).instance(ui, path, create)
  File "/usr/lib/python2.4/site-packages/mercurial/httprepo.py", line 271, in instance
    inst.between([(nullid, nullid)])
  File "/usr/lib/python2.4/site-packages/mercurial/httprepo.py", line 190, in between
    d = self.do_read("between", pairs=n)
  File "/usr/lib/python2.4/site-packages/mercurial/httprepo.py", line 134, in do_read
    fp = self.do_cmd(cmd, **args)
  File "/usr/lib/python2.4/site-packages/mercurial/httprepo.py", line 85, in do_cmd
    resp = self.urlopener.open(req)
  File "/home/xxx/kilnauth.py", line 145, in open
    cj = get_cookiejar(ui)
  File "/home/xxx/kilnauth.py", line 66, in get_cookiejar
    cookie_path = os.path.join(cookie_path, md5(current_user).hexdigest())
  File "/usr/lib/python2.4/site-packages/mercurial/demandimport.py", line 71, in __call__
    raise TypeError("%s object is not callable" % repr(self))</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briansamson.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briansamson.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/briansamson.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/briansamson.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/briansamson.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/briansamson.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/briansamson.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/briansamson.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/briansamson.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/briansamson.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/briansamson.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/briansamson.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/briansamson.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/briansamson.wordpress.com/94/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=94&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.briansamson.com/2010/04/12/kilns-kilnauthpy-crashes-under-python-24/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f61b3f3da4952aa9abae4f16e83b02c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">samsonasu</media:title>
		</media:content>
	</item>
		<item>
		<title>Word count in your Browser</title>
		<link>http://blog.briansamson.com/2009/11/30/word-count-in-your-browser/</link>
		<comments>http://blog.briansamson.com/2009/11/30/word-count-in-your-browser/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 18:20:15 +0000</pubDate>
		<dc:creator>Brian Samson</dc:creator>
				<category><![CDATA[Sofware Engineering]]></category>

		<guid isPermaLink="false">http://briansamson.com/b/2009/word-count-in-your-browser/</guid>
		<description><![CDATA[My wife is taking an online class that has a requirement that she make some number of forum posts on their blackboard. This is not uncommon for online classes to encourage participation. The ridiculous part is that she is required, at the end of her post, she needs to include the number of words she [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=88&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My wife is taking an online class that has a requirement that she make some number of forum posts on their blackboard.  This is not uncommon for online classes to encourage participation.  The ridiculous part is that she is required, at the end of her post, she needs to include the number of words she wrote so that the instructor knows the post is long enough.  So she ends up launching Word and writing her post over there so she can use the word counter over there to make sure she gets all her words.  So I thought I&#8217;d be nice and write a little bookmarklet that does this for her:</p>
<p>&lt;a href=&#039;javascript:var briansamson_com_wordcount=function(){var tas=document.getElementsByTagName(&quot;TEXTAREA&quot;),wc=&quot;&quot;,regex=/[a-z0-9]b/igm,match,s=document.getSelection(),c=0;for (var i=0; iWord Count</a></p>
<p>Drag this link up to your bookmarks bar and click on it and it will tell you the number of words you&#8217;ve typed into all of the text areas on the page.  It reports the count back using the internal name of the field, but that will usually be enough to figure out which field you&#8217;re typing in.  It also counts the number of words you have selected in the web page, just because its easy to do.  I hope this helps somebody else out there meet arbitrary post length guidelines.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briansamson.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briansamson.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/briansamson.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/briansamson.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/briansamson.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/briansamson.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/briansamson.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/briansamson.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/briansamson.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/briansamson.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/briansamson.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/briansamson.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/briansamson.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/briansamson.wordpress.com/88/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=88&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.briansamson.com/2009/11/30/word-count-in-your-browser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f61b3f3da4952aa9abae4f16e83b02c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">samsonasu</media:title>
		</media:content>
	</item>
		<item>
		<title>Internationalization is Hard</title>
		<link>http://blog.briansamson.com/2009/10/23/internationalization-is-hard/</link>
		<comments>http://blog.briansamson.com/2009/10/23/internationalization-is-hard/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 22:38:34 +0000</pubDate>
		<dc:creator>Brian Samson</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Sofware Engineering]]></category>

		<guid isPermaLink="false">http://briansamson.com/b/2009/internationalization-is-hard/</guid>
		<description><![CDATA[Either that or programmers are lazy. I&#8217;ve been working on an App at work that requires internationaliztion, and until you get used to doing it, its very easy to let strings just leak through. I just installed Google Chrome, and right there on the first prefs page is a whole slew of I18n bugs: They [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=87&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Either that or programmers are lazy.  I&#8217;ve been working on an App at work that requires internationaliztion, and until you get used to doing it, its very easy to let strings just leak through.  I just installed Google Chrome, and right there on the first prefs page is a whole slew of I18n bugs: <img class="postImage" src="http://briansamson.files.wordpress.com/2009/10/chrome-es1.png?w=590" alt="Chrome-es" /></p>
<p>They missed a translation and another couple don&#8217;t fit in the space and just run off the page into oblivion.  These bugs are annoying to fix, but at least they are easy to find:  Just change the locale on your computer while you develop.  Only one person on the team really needs to do this.</p>
<p>I have my computer&#8217;s language set to spanish, so I notice these problems right away while testing, which is certainly something you should do for at least a round of QA before you ship, but preferably while you develop.  You can make it fun if you write a <a href="http://www.talklikeapirateday.com/translate/index.php">pirate locale</a> or something, but you should absolutely be running your app in a language other than english before you can even come close to calling it finished.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briansamson.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briansamson.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/briansamson.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/briansamson.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/briansamson.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/briansamson.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/briansamson.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/briansamson.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/briansamson.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/briansamson.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/briansamson.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/briansamson.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/briansamson.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/briansamson.wordpress.com/87/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=87&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.briansamson.com/2009/10/23/internationalization-is-hard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f61b3f3da4952aa9abae4f16e83b02c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">samsonasu</media:title>
		</media:content>

		<media:content url="http://briansamson.files.wordpress.com/2009/10/chrome-es1.png" medium="image">
			<media:title type="html">Chrome-es</media:title>
		</media:content>
	</item>
		<item>
		<title>Yahoo learns nothing, enforces &#8220;security questions&#8221;</title>
		<link>http://blog.briansamson.com/2009/10/01/yahoo-learns-nothing-enforces-security-questions/</link>
		<comments>http://blog.briansamson.com/2009/10/01/yahoo-learns-nothing-enforces-security-questions/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 20:36:14 +0000</pubDate>
		<dc:creator>Brian Samson</dc:creator>
				<category><![CDATA[Don't do that]]></category>

		<guid isPermaLink="false">http://briansamson.com/b/2009/yahoo-learns-nothing-enforces-security-questions/</guid>
		<description><![CDATA[I play fantasy football on yahoo. For the last few weeks they&#8217;ve been hassling me to enter &#8220;security questions&#8221; so I could reset my password if I forgot it. I already have an alternate e-mail address registered with them in case I forget the same password I&#8217;ve been using for 5 years, so I&#8217;ve been [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=84&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I play fantasy football on yahoo.  For the last few weeks they&#8217;ve been hassling me to enter &#8220;security questions&#8221; so I could reset my password if I forgot it.  I already have an alternate e-mail address registered with them in case I forget the same password I&#8217;ve been using for 5 years, so I&#8217;ve been clicking &#8220;Later.&#8221;  Until today, when I went to adjust my team and saw this: <br />
<a class="imagelink" href="http://briansamson.files.wordpress.com/2009/10/imagen-6.png" title="Yahoo security questions"><img class="postImage" src="http://briansamson.files.wordpress.com/2009/10/imagen-6.png?w=590" alt="Yahoo security questions" /></a></p>
<p>This is infuriating to me, especially considering how badly yahoo got burned in the media after that UTenn student <a href="http://www.wired.com/threatlevel/2008/09/palin-e-mail-ha/">&#8220;hacked&#8221; Sarah Palin&#8217;s e-mail address</a>.  I really wish that people would stop doing this, or at least make it not mandatory.  Even Time Magazine had an article about <a href="http://www.time.com/time/business/article/0,8599,1843984,00.html">how stupid these questions are.</a></p>
<p>So please, internet, I&#8217;m begging you to stop doing this.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/briansamson.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/briansamson.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/briansamson.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/briansamson.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/briansamson.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/briansamson.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/briansamson.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/briansamson.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/briansamson.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/briansamson.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/briansamson.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/briansamson.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/briansamson.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/briansamson.wordpress.com/84/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.briansamson.com&amp;blog=12485831&amp;post=84&amp;subd=briansamson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.briansamson.com/2009/10/01/yahoo-learns-nothing-enforces-security-questions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0f61b3f3da4952aa9abae4f16e83b02c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">samsonasu</media:title>
		</media:content>

		<media:content url="http://briansamson.files.wordpress.com/2009/10/imagen-6.png" medium="image">
			<media:title type="html">Yahoo security questions</media:title>
		</media:content>
	</item>
	</channel>
</rss>
