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

<channel>
	<title>DGrigg Development Inc</title>
	<atom:link href="http://dgrigg.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://dgrigg.com</link>
	<description>DGrigg Development Inc.</description>
	<lastBuildDate>Thu, 10 May 2012 15:24:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Dynamic Pinterest button</title>
		<link>http://dgrigg.com/blog/2012/04/04/dynamic-pinterest-button/</link>
		<comments>http://dgrigg.com/blog/2012/04/04/dynamic-pinterest-button/#comments</comments>
		<pubDate>Wed, 04 Apr 2012 20:18:50 +0000</pubDate>
		<dc:creator>Derrick</dc:creator>
				<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://dgrigg.com/?p=942</guid>
		<description><![CDATA[Pinterest is the hot new social networking kid on the block and of course they have some goodies you can sprinkle on your website to make it easy to share and link your content with their service. One thing you can&#8217;t do easily with their Pin button is dynamically update it to reflect changes to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.pinterest.com">Pinterest</a> is the hot new social networking kid on the block and of course they have some <a href="http://pinterest.com/about/goodies/">goodies</a> you can sprinkle on your website to make it easy to share and link your content with their service. One thing you can&#8217;t do easily with their Pin button is dynamically update it to reflect changes to content on your page (ie loading in new content via ajax). A perfect example would be an image slider where as you slide across a list of images you want the user to be able to &#8216;pin&#8217; the currently highlighted image.</p>
<p>When you use the Pinterest button you go to their <a href="http://pinterest.com/about/goodies/">goodies page</a> and drop in something like this on your page.</p>
<code><pre>
&lt;a href="http://pinterest.com/pin/create/button/?url=http%3A%2F%2Fwww.dgrigg.com&#038;media=http%3A%2F%2Fwww.dgrigg.com%2Fimages%2Fprofile.jpg&#038;description=DGrigg.com%20specializes%20in%20the%20development%20of%20interactive%20websites%20and%20web%20based%20applications.%20I%20believe%20it's%20not%20what%20you%20know%2C%20it's%20how%20fast%20can%20you%20learn%20it.%20Working%20closely%20with%20my%20clients%20demanding%20projects%20get%20done%20on%20time%20and%20on%20budget." class="pin-it-button" count-layout="horizontal"&gt;&lt;img border="0" src="//assets.pinterest.com/images/PinExt.png" title="Pin It" /&gt;&lt;/a&gt;


&lt;script type="text/javascript" src="//assets.pinterest.com/js/pinit.js"&gt;&lt;/script&gt;
</pre></code>
<p>To get a basic Pinterest button like this <a href="http://pinterest.com/pin/create/button/?url=http%3A%2F%2Fwww.dgrigg.com&#038;media=http%3A%2F%2Fwww.dgrigg.com%2Fimages%2Fprofile.jpg&#038;description=DGrigg.com%20specializes%20in%20the%20development%20of%20interactive%20websites%20and%20web%20based%20applications.%20I%20believe%20it's%20not%20what%20you%20know%2C%20it's%20how%20fast%20can%20you%20learn%20it.%20Working%20closely%20with%20my%20clients%20demanding%20projects%20get%20done%20on%20time%20and%20on%20budget." class="pin-it-button" count-layout="horizontal"><img border="0" src="//assets.pinterest.com/images/PinExt.png" title="Pin It" /></a></p>
<script type="text/javascript" src="//assets.pinterest.com/js/pinit.js"></script>
<p>And it gets replaced by an IFRAME to handle all the Pinterest pining. The problem is the javascript file only runs when it is first loaded into the page and there is no built in way to refresh the IFRAME to handle content changes on the page. What you need is dynamic Pinterest button. Thankfully with a little javascript that is exactly what you can have.</p>
<code><pre>
refreshPinterestButton = function (url, media, description) {
    var js, href, html, pinJs;
    url = escape(url);
    media = escape(media);
    description = escape(description);
    href = 'http://pinterest.com/pin/create/button/?url=' + url + '&#038;media=' + media + '&#038;description=' + description;
    html = '&lt;a href="' + href + '" class="pin-it-button" count-layout="horizontal"&gt;&lt;img border="0" src="http://assets.pinterest.com/images/PinExt.png" title="Pin It" /&gt;&lt;/a&gt;';
    $('div.pin-it').html(html);

    //remove and add pinterest js
    pinJs = $('script[src*="assets.pinterest.com/js/pinit.js"]');
    pinJs.remove();
    js = document.createElement('script');
    js.src = pinJs.attr('src');
    js.type = 'text/javascript';
    document.body.appendChild(js);
}
</pre></code>
<p>Essentially what you do is wrap the <code>a</code> tag that Pinterest gives you in a <code>div</code> with a class of &#8216;pint-it&#8217;.</p>
<code><pre>
&lt;div class="pin-it"&gt;&lt;a href="http://pinterest.com/pin/create/button/?url=http%3A%2F%2Fwww.dgrigg.com&#038;media=http%3A%2F%2Fwww.dgrigg.com%2Fimages%2Fprofile.jpg&#038;description=DGrigg.com%20specializes%20in%20the%20development%20of%20interactive%20websites%20and%20web%20based%20applications.%20I%20believe%20it's%20not%20what%20you%20know%2C%20it's%20how%20fast%20can%20you%20learn%20it.%20Working%20closely%20with%20my%20clients%20demanding%20projects%20get%20done%20on%20time%20and%20on%20budget." class="pin-it-button" count-layout="horizontal"&gt;&lt;img border="0" src="//assets.pinterest.com/images/PinExt.png" title="Pin It" /&gt;&lt;/a&gt;&lt;/div&gt;
</pre></code>
<p>Whenever you want to refresh the Pinterest button, call the javascript function and it creates a new Pinterest button link, replaces the iframe in the div with the new link and then reloads the pinit.js file to get the iframe recreated. Enjoy.</p>
<p>Edit: updated code to include pinJs variable that was left out, thanks Chad for the catch.</p>
<p><b>For those of you looking for specific steps on how to implement this.</b></p>
<h3>Step 1</h3>
<p>Place a Pinterest button on your web page wrapped in a div that has the class <code>pin-it</code>.</p>
<code><pre>
&lt;div class="pin-it"&gt;&lt;a href="http://pinterest.com/pin/create/button/?url=http%3A%2F%2Fwww.dgrigg.com&#038;media=http%3A%2F%2Fwww.dgrigg.com%2Fimages%2Fprofile.jpg&#038;description=DGrigg.com%20specializes%20in%20the%20development%20of%20interactive%20websites%20and%20web%20based%20applications.%20I%20believe%20it's%20not%20what%20you%20know%2C%20it's%20how%20fast%20can%20you%20learn%20it.%20Working%20closely%20with%20my%20clients%20demanding%20projects%20get%20done%20on%20time%20and%20on%20budget." class="pin-it-button" count-layout="horizontal"&gt;&lt;img border="0" src="//assets.pinterest.com/images/PinExt.png" title="Pin It" /&gt;&lt;/a&gt;&lt;/div&gt;
</pre></code>
<h3>Step 2</h3>
<p>Include the Pinterest hosted javascript file somewhere on your page, preferably near the closing body tag.</p>
<code><pre>
&lt;script type="text/javascript" src="//assets.pinterest.com/js/pinit.js"&gt;&lt;/script&gt;
</pre></code>
<h3>Step 3</h3>
<p>Include this javascript somewhere in your page and call it when ever you want to refresh the Pinterest button to point a some new content. </p>
<code><pre>
refreshPinterestButton = function (url, media, description) {
    var js, href, html, pinJs;
    url = escape(url);
    media = escape(media);
    description = escape(description);
    href = 'http://pinterest.com/pin/create/button/?url=' + url + '&#038;media=' + media + '&#038;description=' + description;
    html = '&lt;a href="' + href + '" class="pin-it-button" count-layout="horizontal"&gt;&lt;img border="0" src="http://assets.pinterest.com/images/PinExt.png" title="Pin It" /&gt;&lt;/a&gt;';
    $('div.pin-it').html(html);

    //remove and add pinterest js
    pinJs = $('script[src*="assets.pinterest.com/js/pinit.js"]');
    pinJs.remove();
    js = document.createElement('script');
    js.src = pinJs.attr('src');
    js.type = 'text/javascript';
    document.body.appendChild(js);
}
</pre></code>
<p>Any div with the class <code>pin-it</code> will get replaced with a new Pinterest button that will link to the new values passed to the <code>refreshPinterestButton</code> function. You could tweak the refresh function so select only a specific div if you need.</p>]]></content:encoded>
			<wfw:commentRss>http://dgrigg.com/blog/2012/04/04/dynamic-pinterest-button/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Facebook Crossdomain.xml list</title>
		<link>http://dgrigg.com/blog/2012/04/04/facebook-crossdomain-xml-list/</link>
		<comments>http://dgrigg.com/blog/2012/04/04/facebook-crossdomain-xml-list/#comments</comments>
		<pubDate>Wed, 04 Apr 2012 19:40:25 +0000</pubDate>
		<dc:creator>Derrick</dc:creator>
				<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://dgrigg.com/?p=939</guid>
		<description><![CDATA[If you are using Flash AS3 with Facebook Connect (aka Open Graph) chances are you have run into crossdomain issues when using profile and album images. Following is a list of all the crossdomain.xml files you will need to load in your swf to get around the security warnings. Security.loadPolicyFile("http://graph.facebook.com/crossdomain.xml"); Security.loadPolicyFile("https://graph.facebook.com/crossdomain.xml"); Security.loadPolicyFile("http://profile.ak.fbcdn.net/crossdomain.xml"); Security.loadPolicyFile("https://profile.ak.fbcdn.net/crossdomain.xml"); Security.loadPolicyFile('http://profile.cc.fbcdn.net/crossdomain.xml'); Security.loadPolicyFile('https://profile.cc.fbcdn.net/crossdomain.xml'); [...]]]></description>
			<content:encoded><![CDATA[<p>If you are using Flash AS3 with Facebook Connect (aka Open Graph) chances are you have run into crossdomain issues when using profile and album images. Following is a list of all the crossdomain.xml files you will need to load in your swf to get around the security warnings.</p>
<code><pre>
Security.loadPolicyFile("http://graph.facebook.com/crossdomain.xml");
Security.loadPolicyFile("https://graph.facebook.com/crossdomain.xml");
Security.loadPolicyFile("http://profile.ak.fbcdn.net/crossdomain.xml");
Security.loadPolicyFile("https://profile.ak.fbcdn.net/crossdomain.xml");
Security.loadPolicyFile('http://profile.cc.fbcdn.net/crossdomain.xml');
Security.loadPolicyFile('https://profile.cc.fbcdn.net/crossdomain.xml');
Security.loadPolicyFile('http://fbcdn-profile-a.akamaihd.net/crossdomain.xml');
Security.loadPolicyFile('https://fbcdn-profile-a.akamaihd.net/crossdomain.xml');
Security.loadPolicyFile('http://fbcdn-sphotos-a.akamaihd.net/crossdomain.xml');
Security.loadPolicyFile('https://fbcdn-sphotos-a.akamaihd.net/crossdomain.xml');
Security.allowDomain("*");
Security.allowInsecureDomain("*");
</code></pre>
<p>Good luck and enjoy</p>]]></content:encoded>
			<wfw:commentRss>http://dgrigg.com/blog/2012/04/04/facebook-crossdomain-xml-list/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTML5 Mobile Web Site Development Resources</title>
		<link>http://dgrigg.com/blog/2012/02/09/html5-mobile-web-site-development-resources/</link>
		<comments>http://dgrigg.com/blog/2012/02/09/html5-mobile-web-site-development-resources/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 14:16:08 +0000</pubDate>
		<dc:creator>Derrick</dc:creator>
				<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://dgrigg.com/?p=933</guid>
		<description><![CDATA[Like most developers I&#8217;m constantly reading and learning to keep up with the latest trends and technology. A lot of my energy over the past 12-18 months has been on HTML5 and more recently HTML5 mobile websites and apps. There is a ton of great information available on the web but unfortunately there is also [...]]]></description>
			<content:encoded><![CDATA[<p>Like most developers I&#8217;m constantly reading and learning to keep up with the latest trends and technology. A lot of my energy over the past 12-18 months has been on HTML5 and more recently HTML5 mobile websites and apps. There is a ton of great information available on the web but unfortunately there is also a lot of not so great, and sometimes misleading, info. As a quick resource list for myself and also as a curated list for other web developers making the dive into HTML5 and mobile websites following are some useful and hopefully helpful links.</p>

<h4>Mobile HTML5 App Development</h4>
<ul>
<li><a href="http://mobiledesign.org/">Mobile Design and Development</a> &#8211; Practical Concepts and Techniques for Creating Mobile Sites and Web App</li>
<li><a href="http://pinchzoom.com/posts/anatomy-of-a-html5-mobile-app/anatomy-of-a-html5-mobile-app">Anatomy of an HTML5 Mobile App</a> &#8211; thinking through mobile HTML5 development strategy</li>
<li><a href="http://jquerymobile.com/">JQuery Mobile</a> &#8211; touch-optimized web framework for smartphones &amp; tablets</li>
<li><a href="http://html5boilerplate.com/mobile">Mobile Boilerplate</a> &#8211; a best practice baseline for your mobile web app.</li>
</ul>
<h4>Responsive Web Design</h4>
<ul>
<li><a href="http://www.alistapart.com/articles/responsive-web-design/">Responsive Web Design</a> &#8211; build once, display everywhere</li>
<li><a href="http://www.benjaminkeen.com/misc/bricss/">Responsive Design Test Bookmarklet</a> &#8211; simulate various screen sizes</li>
</ul>
<h4>Offline HTML5 development</h4>
<ul>
<li><a href="http://html5doctor.com/go-offline-with-application-cache/">Go offline with application cache</a> &#8211; excellent article on using offline caching</li>
<li><a href="http://blogs.adobe.com/cantrell/archives/2011/11/building-an-offline-mobile-web-application.html">Building an Offline Mobile Web Application</a> &#8211; how to build offline mobiles apps using HTML5</li>
</ul>
<h4>General HTML5 Info</h4>
<ul>
<li><a href="http://diveintohtml5.info/index.html">Dive Into Html5</a> &#8211; great introductory ebook on HTML5</li>
<li><a href="http://html5doctor.com/">HTML5 Doctor</a> &#8211; handy HTML5 reference site</li>
<li><a href="http://caniuse.com/">Can I Use?</a> &#8211; Compatibility tables for support of HTML5, CSS3, SVG and more in desktop and mobile browsers.</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://dgrigg.com/blog/2012/02/09/html5-mobile-web-site-development-resources/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Why sharks drown and developers become obsolete</title>
		<link>http://dgrigg.com/blog/2011/07/08/why-sharks-drown-and-developers-become-obsolete/</link>
		<comments>http://dgrigg.com/blog/2011/07/08/why-sharks-drown-and-developers-become-obsolete/#comments</comments>
		<pubDate>Fri, 08 Jul 2011 19:50:29 +0000</pubDate>
		<dc:creator>Derrick</dc:creator>
				<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://dgrigg.com/?p=849</guid>
		<description><![CDATA[I still remember as boy hearing that sharks never fully sleep like humans, if they stopped swimming they could drown. They need water constantly flowing through their gills to breath. The idea of a shark never sleeping and drowning sounded ridiculous. How could a living thing never stop moving? Unfortunately the same fate awaits developers [...]]]></description>
			<content:encoded><![CDATA[<p>I still remember as boy hearing that sharks never fully sleep like humans, if they stopped swimming they could drown. They need water constantly flowing through their gills to breath. The idea of a shark never sleeping and drowning sounded ridiculous. How could a living thing never stop moving? </p>
<p>Unfortunately the same fate awaits developers who stopping moving forward and progressing. In many careers you can hit a plateau and decide to stay there (see <a href="http://cupe.ca/">public employee</a>). Developers, at least the ones who want to stay employed, do not have that option. Technology changes too fast. Stand still for more than a little while and you become obsolete, dead to the technology sector. It takes a little progress just to stay in the same place, it takes dedication, effort and hard work to stay alive for a prolonged period. Having spent the better part of 15 years in the technology/internet industry I know this is a fact.</p>
<p>So how does a developer keep up, stay relevant and not suffer the fate that so many others have? It&#8217;s simple, keep moving forward. If technology is constantly moving forward and you stop moving, it&#8217;s not long before you are left behind. So how does a developer move forward? Again it&#8217;s simple. Keep learning.</p>
<h3>Read anything</h3>
<p>Blogs, documentation, how to&#8217;s, wikis, it doesn&#8217;t matter. You most likely won&#8217;t remember a lot of what you read, but nuggets will stay lodged in your brain and you will be exposed to ideas and concepts you might not otherwise have come across. Reading is much better than watching a video or listening to someone explain something, it takes more effort and work on your part and that effort results in better memory retention (not water retention).</p>
<h3>Write something</h3>
<p>The inverse of reading is writing. Write about what you read, what you work on, how you solved a problem, how you stumbled across something ground breaking (that ten other people already discovered). Writing makes you think through things and consider how other people will digest what you write. It makes you, or at least it should, double and triple check that something works the way you write it should, especially if it&#8217;s your own code. Writing about something helps you to gain a better grasp on the topic, and a better understanding of how much effort other writers put into their work.</p>
<h3>Know enough not everything</h3>
<p>You&#8217;ve probably heard the phrase, &#8220;jack of all trades, master of none&#8221;. In many walks of life this a bad thing, for internet developers it&#8217;s a necessary evil. You can&#8217;t be a one trick pony. Most development work involves a technology stack, not &#8220;a&#8221; technology. Even within a team environment where there are specialists for certain streams of development, most members have/need some knowledge of the other streams.</p><p>Have a core set of technologies you master and then surround those with a complementary set of skills and technologies that you&#8217;re good at. For most work, &#8220;good&#8221; is good enough. As technology changes and evolves some of the core stuff may fade away and some of complementary skills may need to become core skills. The key is being able to identify when it needs to happen. For Flash developers it was early 2010 when HTML5 jumped into the spotlight. The one trick ponies freaked out, cried the sky is falling and prepared for the worst. The savvy developers read up, experimented, honed their skills and now have more to offer their clients and employers.</p>
<h3>Take on projects you can&#8217;t do today</h3>
<p>What? It sounds like a recipe for disaster but it is actually a recipe for success and growth. If you know you can learn quickly, challenge yourself by committing to projects that will force you to learn. Having a fire under you is a great motivator to figure something out and make sure it works. It also promotes ulcers if you can&#8217;t handle stress. Doing sample projects is great to get your feet wet but a real live project with deadlines and deliverables is where the real learning will happen. Why do you think militaries have live ammo training?</p>
<h3>Failure is not an option</h3>
<p>Actually it is but who wants to be a failure? No one. Don&#8217;t let failure scare you, learn from it. Go into a project planning to hit it out of the park, but don&#8217;t cry when you strike out, make adjustments for the next time you are up to bat. Own up to your failures. You broke the build, screwed up the server, accidentally deleted the backup. Stuff happens, own it, learn from it and move on. If everyone succeeded at everything they did the first time life would suck. Accepting failure and expecting failure are two very different things. Understand the difference and steer clear of the latter. Part of the learning process involves failure so get used to it.</p>
<h3>Keep swimming</h3>
<p>So there you have it, one key to not becoming a dead shark and four keys to not becoming an obsolete developer: keep moving, read, write, stretch and fail.</p>
<p><small>Apologies for the heavy reliance on cliches and metaphors.</small></p>

]]></content:encoded>
			<wfw:commentRss>http://dgrigg.com/blog/2011/07/08/why-sharks-drown-and-developers-become-obsolete/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Been busy &#8230; making breakfast</title>
		<link>http://dgrigg.com/blog/2011/04/15/been-busy-making-breakfast/</link>
		<comments>http://dgrigg.com/blog/2011/04/15/been-busy-making-breakfast/#comments</comments>
		<pubDate>Fri, 15 Apr 2011 20:41:47 +0000</pubDate>
		<dc:creator>Derrick</dc:creator>
				<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://dgrigg.com/?p=833</guid>
		<description><![CDATA[It&#8217;s been a few months since I last had a blog post which is really not like me. Unfortunately, or fortunately depending on how you look at it, I have been head down on a few big projects, the most exciting of which was helping the team at Welikesmall to rebuild and launch the new [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a few months since I last had a blog post which is really not like me. Unfortunately, or fortunately depending on how you look at it, I have been head down on a few big projects, the most exciting of which was helping the team at <a href="http://welikesmall.com/">Welikesmall</a> to rebuild and launch the new <a href="http://www.dennys.com">Dennys.com</a> website. </p>
<a href="http://www.dennys.com"><img src="http://www.dgrigg.com/images/dennys.jpg"/></a>
<p>It&#8217;s a pretty big departure from their previous site and after visiting it I&#8217;m sure you&#8217;ll agree it&#8217;s not your average restaurant site. The site uses some pretty advanced javascript and css tricks and runs on a .Net backend with a custom CMS (which is where my skills were used). It had been a few years since I last used Asp .Net and at first I was quite hesitant to jump back into it, awful memories of VBScript web forms were still lingering my head. Fortunately we were able to use Asp.Net4 with MVC3 which is a thing of beauty compared to .Net2.</p>
<p>Hopefully in the near future I&#8217;ll be blogging a little more about using Asp.Net4 and MVC to build out web apps and websites. After many projects using PHP it was a refreshing change to trying something different. Visual Studio made development a lot less frustrating and it has some really nice features to speed up and aid development.</p>
<p>I guess I need to update my <a href="/about">about page</a> to include .Net, the learning never stops, but neither does the fun.</p>
]]></content:encoded>
			<wfw:commentRss>http://dgrigg.com/blog/2011/04/15/been-busy-making-breakfast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2010 wrap up and 2011 gear up</title>
		<link>http://dgrigg.com/blog/2010/12/31/2010-wrap-up-and-2011-gear-up/</link>
		<comments>http://dgrigg.com/blog/2010/12/31/2010-wrap-up-and-2011-gear-up/#comments</comments>
		<pubDate>Fri, 31 Dec 2010 20:51:52 +0000</pubDate>
		<dc:creator>Derrick</dc:creator>
				<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://dgrigg.com/?p=814</guid>
		<description><![CDATA[I don&#8217;t typically write a post to review the past year or glance into the year ahead but I have decided to this year for a few reasons. First, by all accounts this was my most successful year as business owner and independent contractor. It is always a good thing to reflect on what you [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t typically write a post to review the past year or glance into the year ahead but I have decided to this year for a few reasons. First, by all accounts this was my most successful year as business owner and independent contractor. It is always a good thing to reflect on what you did so you can hopefully repeat it. Second, some recent posts by <a href="http://blog.benstucki.net/?p=66">Ben Stucki</a> and <a href="http://insideria.com/2010/12/if-you-can-make-it-here.html">Jesse Freeman</a> helped to solidify some thoughts that have bouncing around in my skull. And third, a recent Twitter thread about which technology Flash/Flex developers should be considering moving forward. I won&#8217;t cover all the details about what I did or what I plan to do, but I will offer up a few nuggets and some food for thought as we head into 2011.</p>
<h3>Sweet success and a little history</h3>
<p>This past year was my fifth year as a full time independent contractor/consultant and my tenth as a business owner. In 2000 I started a basic sole proprietorship for web development. The first five years were spent as a sometime full time employee, sometime contract employee, never quite fully engaging in complete self employment. Five years ago I made the jump into full time self employment and have not looked back. For each of the past five years revenues have increased by at least 25% from 120k in the first year. These number are pretty much on par with what Jesse outlines in his post and Ben has seen in his first year of business. I worked with a number of companies on a wide variety of projects, everything from HTML/Javascript websites to mobile Flex applications and a web based Flex application for managing PBX based phone systems to mentoring a 60 something retiree who wanted to get back into development. The first few years of contracting were almost 100% Flash and Flex, the last few years have seen that number to drop, now it is probably around 60%.</p>
<p>The most vivid moment for me in 2010 was Apple&#8217;s decision to not support Flash on their &#8216;i&#8217; devices. The Flash haters showed up in full force and too many Flash devs started crying about the sky falling. My bread and butter is Flex and Flash development so it was a kick in the teeth to hear about Apple&#8217;s plans, however I&#8217;m not a one trick pony so I tried to find the opportunity in what was likely a shift in the web development landscape. First and foremost I am a web developer, client and server side. I&#8217;m not language dogmatic, for me it&#8217;s always about keeping it simple and using the right tool for the right job. Sometimes that is Flash, sometimes it&#8217;s HTML and JQuery, I can roll with PHP, Coldfusion, ASP or something new if the need arises. In the years ahead it will more likely than not be HTML5, I&#8217;m fine with that. </p>
<p>The other standout thing from 2010 for me was reading <a href="http://www.amazon.com/Rework-Jason-Fried/dp/0307463745/ref=sr_1_1?s=books&#038;ie=UTF8&#038;qid=1293827233&#038;sr=1-1">Rework</a>. It was a great read on business ideas and concepts and really made me think about how I operate my business and how I could do things differently.</p>
<h3>Seeing the glass half full</h3>
<p>The reality is web development work is not going away anytime soon. There is still a ton of lucrative work out there you just need to look for it and be willing to get outside of your comfort zone. For me it&#8217;s not about what you know, it&#8217;s about what you can learn and how fast. As a developer when you stop learning you are dead. If a fish doesn&#8217;t swin, it can&#8217;t breath, it dies. It can NEVER stop swimming. A developer should NEVER stop learning. I can not stress that enough. Being able to learn and learn quickly has likely been the single largest key to my success. Don&#8217;t run away from the unknown, charge at it head on and crush it.</p>
<p>The way I see it Flash and Flex developers are actually sitting in a pretty good position. If you have matured with Actionscript from AS1 up to AS3 you should be able to easily jump into Javascript (and JQuery) without difficulty. Mobile will offer a lot of opportunity for you to create Flash and Flex apps to deploy across a multitude of devices and again, a solid grasp on AS3 should allow you to easily tackle Java or Objective C. I think the reason so many Flash people got up in arms over Apple&#8217;s decision was their fear of the unknown. What would the web look like without Flash and what would they do for work? The reality is Flash is not going away anytime some and if anything it was a good wake up call to add something new to their developer tool set.</p>
<h3>2011, 365 days, 8760 hours</h3>
<p>For me 2011 will be starting off with an eclectic bang. I have projects lined up into March (which is always a nice feeling): a website, a mobile site, some Flash work and some maintenance on a Flex app. I have also grabbed some good reading material to start off the new year with (never stop learning) <a href="http://www.amazon.com/Android-Developers-Cookbook-Building-Applications/dp/0321741234/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1293826329&#038;sr=8-1"><img src="http://ecx.images-amazon.com/images/I/51vKTAuLDrL._SL500_AA300_.jpg"/></a> <a href="http://www.amazon.com/Introducing-HTML5-Voices-That-Matter/dp/0321687299/ref=sr_1_1?ie=UTF8&#038;qid=1293826384&#038;sr=8-1"><img src="http://ecx.images-amazon.com/images/I/31eSqTFIaFL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg"/></a>.</p>
<p>My goals for 2011 are simply stated: increase business by another 25%, roll out a <a href="http://en.wikipedia.org/wiki/Software_as_a_service">SaaS</a> idea I have been working on and start contracting out some of the work I take on. One thing I have learned in five years of business, time is finite. You can work all you want as hard as you want but at the end of the day, a single person only has &#8216;x&#8217; hours to work. As a one man shop, time is the single biggest limiting factor in how far I can take my business. For me to grow any further I need more time. I need to get other people&#8217;s time to work for me since I have maxed out my time and I need to find a way to generate revenue that is not tied directly to billable hours. That is nothing new, any business owner quickly realizes this, however as an independent contractor, I have long fought the need or desire to add more manpower, instead I choose to maximize my time. It took me a few years to feel like I had reached that point, and I purposely pushed past it, in order to make sure adding more manpower was absolutely the right thing to do.</p>
<p>There is a lot more I wanted to say in this post but I think instead I will wait and flesh out the ideas more for some future posts. Here&#8217;s to a great 2011.</p>]]></content:encoded>
			<wfw:commentRss>http://dgrigg.com/blog/2010/12/31/2010-wrap-up-and-2011-gear-up/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>I don&#8217;t want to be your rockstar developer or your ninja</title>
		<link>http://dgrigg.com/blog/2010/12/21/i-dont-want-to-be-your-rockstar-developer-or-your-ninja/</link>
		<comments>http://dgrigg.com/blog/2010/12/21/i-dont-want-to-be-your-rockstar-developer-or-your-ninja/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 21:15:19 +0000</pubDate>
		<dc:creator>Derrick</dc:creator>
				<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://dgrigg.com/?p=782</guid>
		<description><![CDATA[It&#8217;s become a common phrase in developer job posts and interviews, &#8220;rockstar&#8221;. Are you a rockstar developer? Do you want to be the next rockstar developer? What do you need to do to become a rockstar developer? I have no idea how or why developers ever got labeled with &#8220;rockstar&#8221;, but personally it&#8217;s a label [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s become a common phrase in developer job posts and interviews, &#8220;rockstar&#8221;. Are you a rockstar developer? Do you want to be the next rockstar developer? What do you need to do to become a rockstar developer? I have no idea how or why developers ever got labeled with &#8220;rockstar&#8221;, but personally it&#8217;s a label I never want and something that when asked for I take as a negative (a recent phone interview led to this post). To me it says the person asking does not understand their target audience &#8230; developers. Have you ever seen a posting for a rockstar lawyer, doctor or teacher? Not likely, it sounds ridiculous. So why do people seek out rockstar developers?</p>

<p>To me a rock star infers celebrity, partying, passion, an entourage, creativity, self promotion, late night benders, and self destructive behaviour. A few of those traits are certainly things that you would want any employee or contractor to have, passion and creativity to be specific, the rest you could do without. Rockstar does communicate being at the top, but does it mean the best? Are Morzart or Beethoven considered rockstars? Does a rockstar really make the best music or do they simply garner the most hype and attention? If you are hiring a person to develop mission critical software or a flagship website for your company do you really want someone with the traits or behaviour of a rockstar? No? Then stop asking for it.</p>

<p>First and foremost I&#8217;m a professional web developer. I take great pride in my work, my education and the effort I put into whatever I set my mind to. It&#8217;s my business, my livelihood and my passion. To me it&#8217;s a slight to be asked if I&#8217;m a rockstar developer. Why not ask if I&#8217;m a code monkey while you are at it?</p>

<p>Quit seeking rockstars (and ninjas, which is even more absurd). Look for professional, pragmatic and passionate developers.</p>]]></content:encoded>
			<wfw:commentRss>http://dgrigg.com/blog/2010/12/21/i-dont-want-to-be-your-rockstar-developer-or-your-ninja/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Flex for Android Presentation Slides and Code</title>
		<link>http://dgrigg.com/blog/2010/10/22/flex-for-android-presentation-slides-and-code/</link>
		<comments>http://dgrigg.com/blog/2010/10/22/flex-for-android-presentation-slides-and-code/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 08:20:09 +0000</pubDate>
		<dc:creator>Derrick</dc:creator>
		
		<guid isPermaLink="false">http://159</guid>
		<description><![CDATA[<p>
	As promised here are my slides and links to sample code from my Flex for Android presentation at the <a href="http://torontoflex.org/">Toronto Flex User Group</a> meeting. Had a great time presenting for the first time in a long time, will certainly be offering to do it again.</p>
<p>
	You can find all the source code for the samples and build script on <a href="http://github.com/dgrigg/FlexAndroidDemos">github</a>.</p>
]]></description>
			<content:encoded><![CDATA[<p>
	As promised here are my slides and links to sample code from my Flex for Android presentation at the <a href="http://torontoflex.org/">Toronto Flex User Group</a> meeting. Had a great time presenting for the first time in a long time, will certainly be offering to do it again.</p>
<div id="__ss_5530106" style="width: 425px;">
	<strong style="display: block; margin: 12px 0pt 4px;"><a href="http://www.slideshare.net/derrickgrigg/developing-flex-apps-for-android" title="Developing flex apps for android">Developing flex apps for android</a></strong><object height="355" id="__sse5530106" width="425"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=developingflexappsforandroid-101022091127-phpapp01&amp;stripped_title=developing-flex-apps-for-android&amp;userName=derrickgrigg" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><embed allowfullscreen="true" allowscriptaccess="always" height="355" name="__sse5530106" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=developingflexappsforandroid-101022091127-phpapp01&amp;stripped_title=developing-flex-apps-for-android&amp;userName=derrickgrigg" type="application/x-shockwave-flash" width="425"></embed></object></div>
<p>
	You can find all the source code for the samples and build script on <a href="http://github.com/dgrigg/FlexAndroidDemos">github</a>.</p>
<p>
	Here are the links mentioned at the end of the presentation.</p>
<ul>
	<li>
		<a href="http://opensource.adobe.com/wiki/display/flexsdk/Hero">http://opensource.adobe.com/wiki/display/flexsdk/Hero</a></li>
	<li>
		<a href="http://opensource.adobe.com/wiki/display/flexsdk/Mobile+Application">http://opensource.adobe.com/wiki/display/flexsdk/Mobile+Application</a></li>
	<li>
		<a href="http://labs.adobe.com/technologies/air2/android/">http://labs.adobe.com/technologies/air2/android/</a></li>
	<li>
		<a href="http://www.openscreenproject.org/">http://www.openscreenproject.org/</a></li>
	<li>
		<a href="http://developer.android.com/sdk/index.html">http://developer.android.com/sdk/index.html</a></li>
	<li>
		<a href="http://developer.android.com/guide/practices/ui_guidelines/index.html">http://developer.android.com/guide/practices/ui_guidelines/index.html</a></li>
	<li>
		<a href="http://www.teehanlax.com/blog/2010/02/01/ipad-gui-psd/">http://www.teehanlax.com/blog/2010/02/01/ipad-gui-psd/</a></li>
	<li>
		<a href="http://www.teehanlax.com/blog/2009/06/18/iphone-gui-psd-30/">http://www.teehanlax.com/blog/2009/06/18/iphone-gui-psd-30/</a></li>
</ul>
<p>
	For those of you who were present, 10 out of 11 demos worked perfect, number 11 died when I tried to run the debugging. I forgot to add the &#39;android.permission.INTERNET&#39; to the application descriptor, my bad. You can find it in the source code.</p>
]]></content:encoded>
			<wfw:commentRss>http://dgrigg.com/blog/2010/10/22/flex-for-android-presentation-slides-and-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex for Android Presentation</title>
		<link>http://dgrigg.com/blog/2010/10/21/flex-for-android-presentation/</link>
		<comments>http://dgrigg.com/blog/2010/10/21/flex-for-android-presentation/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 08:14:48 +0000</pubDate>
		<dc:creator>Derrick</dc:creator>
		
		<guid isPermaLink="false">http://158</guid>
		<description><![CDATA[<p>
	I am getting ready to do a presentation today for the <a href="http://torontoflex.org/torontoflex/index.html">Toronto Flex User Group</a> on using Adobe Flex and AIR to create Android applications. Developing Flex apps for Android is an exciting new frontier for Flex developers. Adobe is working to release a new version of the Flex framework, named <a href="http://labs.adobe.com/technologies/flex/mobile/">Hero</a>, that will be optimized for mobile devices, but this doesn&#39;t mean that the current framework can&#39;t be used to develop Flex applications for the Android platform.</p>
]]></description>
			<content:encoded><![CDATA[<p>
	<img alt="Flex Andoird Applications" src="http://www.dgrigg.com/images/android-flex-logo.jpg" style="width: 184px; height: 217px; float: right; margin: 10px;" />I am getting ready to do a presentation today for the <a href="http://torontoflex.org/torontoflex/index.html">Toronto Flex User Group</a> on using Adobe Flex and AIR to create Android applications. Developing Flex apps for Android is an exciting new frontier for Flex developers. Adobe is working to release a new version of the Flex framework, named <a href="http://labs.adobe.com/technologies/flex/mobile/">Hero</a>, that will be optimized for mobile devices, but this doesn&#39;t mean that the current framework can&#39;t be used to develop Flex applications for the Android platform.</p>
<p>
	My presentation will cover:</p>
<ul>
	<li>
		size considerations</li>
	<li>
		user interactions</li>
	<li>
		device capabilities and how to access them</li>
	<li>
		optimization</li>
	<li>
		demos</li>
	<li>
		using the Android SDK tools</li>
</ul>
<p>
	Check back soon for the presentation slide deck and demo sample code.</p>
]]></content:encoded>
			<wfw:commentRss>http://dgrigg.com/blog/2010/10/21/flex-for-android-presentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom Flex List and DropDownList for Android</title>
		<link>http://dgrigg.com/blog/2010/09/29/custom-flex-list-and-droplist-for-android/</link>
		<comments>http://dgrigg.com/blog/2010/09/29/custom-flex-list-and-droplist-for-android/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 15:05:10 +0000</pubDate>
		<dc:creator>Derrick</dc:creator>
		
		<guid isPermaLink="false">http://157</guid>
		<description><![CDATA[<p>
	For those of you who have had a chance to create Flex applications for Android, you have quickly discovered how useless the standard Spark components are. Too small and no true touch support (aside from clicking). This is the first in what I hope will be many demos of reworked Spark components. My goal is to make them work much better on mobile and touch sensitive devices. Watch the video and then grab the code from <a href="http://github.com/dgrigg/FlexAndroidDemos/">GitHub</a>.</p>
]]></description>
			<content:encoded><![CDATA[<p>
	For those of you who have had a chance to create Flex applications for Android, you have quickly discovered how useless the standard Spark components are. Too small and no true touch support (aside from clicking). This is the first in what I hope will be many demos of reworked Spark components. My goal is to make them work much better on mobile and touch sensitive devices.</p>
<p>
	The first two components I have reworked are the List and DropDownList, both are virtually unusable in the standard format on touch devices.</p>
<p>
	<iframe frameborder="0" height="300" src="http://player.vimeo.com/video/15405972" width="400"></iframe></p>
<p>
	The standard List component is not swipeable so the first goal was to add the ability to swipe up/down to scroll the list. Creating a custom scroller class made that possible. The next step was reworking the list to prevent selections on mouse down events. What you don&#39;t want is a list item to be selected every time you touch the list to swipe it. This was a little more involved and required some hacks to get at private methods and properties of the List and BaseList classes.</p>
<p>
	Creating a replacement for the DropDownList was a small leap after getting the swipe list working. It&#39;s essentially a text input and button that you can assign a dataprovider to. When you click the button, a modal window is opened with the swipe list. Select an item, click OK and you&#39;re done.</p>
<p>
	You can get the source code on <a href="http://github.com/dgrigg/FlexAndroidDemos/">GitHub</a>, enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://dgrigg.com/blog/2010/09/29/custom-flex-list-and-droplist-for-android/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

