<?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>Michael Wales &#187; Web Standards</title>
	<atom:link href="http://www.michaelwales.com/category/web-standards/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.michaelwales.com</link>
	<description>Senior Developer Michael Wales, featuring articles on web development (PHP, Python and Ruby), industry highlights and open source software releases.</description>
	<lastBuildDate>Tue, 22 Mar 2011 04:04:33 +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>5 Steps to Becoming a Web Development All-Star</title>
		<link>http://www.michaelwales.com/2011/03/5-steps-to-becoming-a-web-development-all-star/</link>
		<comments>http://www.michaelwales.com/2011/03/5-steps-to-becoming-a-web-development-all-star/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 04:04:10 +0000</pubDate>
		<dc:creator>Michael Wales</dc:creator>
				<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://www.michaelwales.com/?p=258</guid>
		<description><![CDATA[I&#8217;ve enjoyed great success as a web developer &#8211; from my early days in 1999 building websites for clients via RentACoder.com, through my tenure as the CodeIgniter Community Chieftain, to where I am today (the Lead Developer for a team responsible for multi-million dollar contracts with various DoD intelligence communities) &#8211; it&#8217;s been a wild [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve enjoyed great success as a web developer &#8211; from my early days in 1999 building websites for clients via <a href="http://www.rentacoder.com/" title="RentACoder">RentACoder.com</a>, through my tenure as the <a href="http://www.codeigniter.com/" title="CodeIgniter">CodeIgniter</a> Community Chieftain, to where I am today (the Lead Developer for a team responsible for multi-million dollar contracts with various DoD intelligence communities) &#8211; it&#8217;s been a wild ride. I&#8217;d like to share, what I believe, got me to this point. This absolutely is not within chronological order, maybe a loose &#8220;level of importance&#8221; order.</p>
<p>All of these points will be written from my own personal perspective, starting with PHP and progressing on &#8211; regardless of your current language of choice, I&#8217;m sure you can take something away from this.</p>
<h3>1. Learn Another Language</h3>
<p>For me, it was <a href="http://www.python.org/" title="Python">Python</a> &#8211; I had system administration duties where it just resolved to be the right language for the job. Nonetheless, I think it&#8217;s important for developers to learn another language; and if you have the freedom to break away from the web: do so! I&#8217;m not just saying play around with another language or complete a project or two in it &#8211; <em>fucking learn that shit</em>. You don&#8217;t want to be a one trick pony and every new language, that you truly grasp, and learn, will open your eyes to new concepts. It&#8217;s at this point you&#8217;ll realize being a developer isn&#8217;t so much about language as it is about concepts; languages are just syntax.</p>
<h3>2. Dabble</h3>
<p>Not to discount the aforementioned point, but you need to dabble too. Read a <a href="http://www.rubyonrails.org/" title="Ruby on Rails">Ruby on Rails</a> book and complete a project, complete a quick demo in <a href="http://unity3d.com/" title="Unity3D">Unity3D</a> &#8211; it doesn&#8217;t matter. The more you dabble, the more you will learn. I had studied normalized databases for years &#8211; I knew the definition; but in practice, it wasn&#8217;t until playing with Rails did I actually have the skillset to put it into practice. I knew JavaScript&#8217;s capabilities, but it was until dabbling in <a href="http://jquery.com/" title="jQuery">jQuery</a>, <a href="http://www.prototypejs.org/" title="PrototypeJS">Prototype</a> and <a href="http://www.sencha.com/products/extjs/" title="ExtJS">ExtJS</a> that I truly <em>understood</em> the language. <strong>You will learn new things</strong> with every language/framework you dabble in &#8211; whether it&#8217;s web-related or not.</p>
<h3>3. Pick a Niche</h3>
<p>For me, it was <a href="http://www.codeigniter.com/" title="CodeIgniter">CodeIgniter</a>. I busted my balls to become the name within the CodeIgniter community &#8211; I&#8217;m not so egotistical that I will sit here and tell you people equate CodeIgniter with my name, but I will tell you that was my goal. I wanted people to think &#8220;Michael Wales&#8221; before they thought &#8220;CodeIgniter freelancer&#8221; and I set out to accomplish that goal. I can name at least 10 people off the top of my head that know CodeIgniter better than I, but when it came to marketing, value for your money and niche-knowledge &#8211; as a total package &#8211; I was a pretty solid contender. Learn your niche inside and out, get out there, make yourself known by responding to questions and releasing great products; and if you are freelancing, <strong>charge for it</strong>! You will gain much more notoriety (as long as you can back it up) charging $75/hr than you will $20/hr; and ultimately, dominating a niche will progress your name further. When you are fulfilled within this niche, then move on.</p>
<h3>4. Get Out There</h3>
<p>If you don&#8217;t have a blog, get one. If you don&#8217;t have a <a href="http://www.twitter.com/" title="Twitter">Twitter</a> account, get one. If you don&#8217;t have a <a href="http://www.forrst.com/" title="Forrst">Forrst</a> account, start proving yourself and get an invitation from those of us that do. You need to get your name out there and you need to firmly stand behind everything you say. It&#8217;s okay to be wrong, but admit it and be cordial &#8211; thanking those around you for their help. There will always be someone smarter than you, but you will always be smarter than someone else; it&#8217;s your job to learn from the former and educate the latter. Your name is your brand and it is just as important to you as the name &#8220;Tylenol&#8221; is to Johnson &#038; Johnson.</p>
<h3>5. Never Give Up</h3>
<p>Want to know a secret? My first business success, WoWCensus, parsed gigabytes of World of Warcraft logs by exploding on new line characters, then exploding on commas, then substringing on this, then that, then this, then that. It&#8217;s a wonder if worked at all (it damn sure didn&#8217;t work efficiently)! Nonetheless, I knew I wanted to parse in-game demographic data across all servers and I didn&#8217;t give a damn whether anyone said it was possible/feasible or not. Sure, technical limitations can hardly be overlooked; but when it comes to the limitations you put on yourself &#8211; <strong>fuck that shit</strong>. You are a programmer &#8211; you are analytical by nature; break the larger problem down into smaller tasks, ask your friends (see #4), drink a case of beer and think outside the box. Whatever it is you need to do, never, ever doubt yourself.</p>
<h3>Bonus: Embrace Web Standards</h3>
<p>Their coming (HTML5/CSS3/etc), whether you like it or not &#8211; and by implementing gracefully degrading solutions now you make yourself look awesome months down the road &#8211; with no future effort! Embrace them now, be on the fore-front of technology. I&#8217;ve made it second nature to support graceful degradation and web standards, I feel dirty and as if I have sinned otherwise. Ultimately, it has made me a better developer &#8211; I have a much firmer understanding of the HTTP protocol, a greater understanding of alternative Internet-technologies (screen-readers, for instance) and government-mandated handicapp-accessible compliance is an afterthought for me. I don&#8217;t need to worry about whether my application is compliant, or study miniscule edge-cases, I know for a fact it is because I inherently designed it that way.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.michaelwales.com/2011/03/5-steps-to-becoming-a-web-development-all-star/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tiara: HTML5 Game Engine</title>
		<link>http://www.michaelwales.com/2011/01/tiara-html5-game-engine/</link>
		<comments>http://www.michaelwales.com/2011/01/tiara-html5-game-engine/#comments</comments>
		<pubDate>Sat, 22 Jan 2011 13:06:08 +0000</pubDate>
		<dc:creator>Michael Wales</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://www.michaelwales.com/?p=234</guid>
		<description><![CDATA[Update 3: The demo page has been updated to feature an index of currently completed demos. After a long day of working on image/sprite support I took a break from engine development and built up a quick demo, Example 3, that features some actual gameplay elements! Update 2: Redditor gramathy just informed me it&#8217;s also [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.michaelwales.com/wp-content/uploads/2011/01/HTML5_Logo_128.png" alt="HTML5" title="HTML5" width="128" height="128" class="alignright" /><strong>Update 3:</strong> The <a href="http://www.michaelwales.com/tiarajs/" title="TiaraJS">demo page</a> has been updated to feature an index of currently completed demos. After a long day of working on image/sprite support I took a break from engine development and built up a quick demo, <a href="http://www.michaelwales.com/tiarajs/example3/index.html" title="TiaraJS: Example 3">Example 3</a>, that features some actual gameplay elements!</p>
<p><strong>Update 2:</strong> Redditor <a href="http://www.reddit.com/user/gramathy" title="Reddit:gramathy">gramathy</a> just informed me it&#8217;s also working in Safari, if those of you in that world are willing to run a quick test for me. <a href="http://twitter.com/erikbrannstrom" title="Twitter: erikbrannstrom">@erikbrannstrom</a> told me it&#8217;s also working in Firefox 4 Beta.</p>
<p><strong>Update:</strong> If you run Google Chrome, I have a demo running publicly <a href="http://michaelwales.com/tiarajs" title="Tiara: Example 2">right here</a> &#8211; if you could reply with your FPS count (lower-left) and system info you feel is relevant, it would be much appreciated. </p>
<p>Gaming has always been a passion of mine and as any of my friends can tell you, I&#8217;m constantly coming up with ideas for new games. Unfortunately, my expertise in this little programming world has been primarily delegated to the world of web development. Thankfully, with HTML5 on the horizon, I can finally combine these two passions of mine into one package of pure awesome and peak out my nerdometer to its maximum.</p>
<p>I&#8217;ve spent the last 6 hours working on a JavaScript game engine, using HTML&#8217;s new <code>canvas</code> element, that is based off of the extremely fun and easy to use <a href="http://www.love2d.org/" title="Love2d">Love2d</a> game engine for Lua. Now, there is a bare minimum of functionality here thus far but I&#8217;m having a lot of fun working on this and I think it&#8217;s a great foundation to continue working off of. I shared a few quick screenshots on <a href="http://www.forrst.com/" title="Forrst">Forrst</a>, of my <a href="http://forr.st/~RSS" title="Forrst: Tiara HTML5 Game Engine">first</a> and <a href="http://forr.st/~RSu" title="Forrst: Tiara HTML5 Game Engine (Example 2)">second</a> example demos &#8211; complete with code and performance summaries; but, I also wanted to record a quick demo so everyone could see this bad boy in action.</p>
<p>The video below (<a href="http://www.youtube.com/watch?v=vd6zT_yEWnM" title="Tiara: HTML5 Game Engine">HD available</a> on YouTube) sits just under 10 minutes and will introduce you to the engine, I discuss what my goals are in basing the API off of Love2d&#8217;s API and I actually rebuild my second example demo and bounce a square around the screen! Check it out and let me know what you think in the comments!</p>
<p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/vd6zT_yEWnM?rel=0&amp;hd=1" frameborder="0" allowFullScreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.michaelwales.com/2011/01/tiara-html5-game-engine/feed/</wfw:commentRss>
		<slash:comments>63</slash:comments>
		</item>
		<item>
		<title>The Development Interview</title>
		<link>http://www.michaelwales.com/2010/11/the-development-interview/</link>
		<comments>http://www.michaelwales.com/2010/11/the-development-interview/#comments</comments>
		<pubDate>Sun, 28 Nov 2010 03:57:13 +0000</pubDate>
		<dc:creator>Michael Wales</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://www.michaelwales.com/?p=194</guid>
		<description><![CDATA[As the Senior Software Engineer on my project, I spend quite a bit of time with the Project Manager reviewing resumes and interviewing applicants. Typically, if a resume is remotely interesting we&#8217;ll conduct a phone interview; and if that phone interview goes well we&#8217;ll send the applicant a Developer&#8217;s Assessment targetted at the Jr/mid-level criteria. [...]]]></description>
			<content:encoded><![CDATA[<p>As the Senior Software Engineer on my project, I spend quite a bit of time with the Project Manager reviewing resumes and interviewing applicants. Typically, if a resume is remotely interesting we&#8217;ll conduct a phone interview; and if that phone interview goes well we&#8217;ll send the applicant a <em>Developer&#8217;s Assessment</em> targetted at the Jr/mid-level criteria. The interview, plus their responses to this assessment, determine whether we continue the interview process and present that individual an offer.</p>
<p>During the interview process I ask a series of questions, but in reality there are only 3 questions I actually care about (the rest is just filler):</p>
<ul>
<li>What made you decide on this career path? Why are you a software engineer?</li>
<li>Every developer has worked on a project that challenged them but in the end amounted in a truly viable and useful product, what was that project for you? What&#8217;s the project, either personal or professional, that is worthy of bragging about?</li>
<li>What are you working on in your spare time? After you clock out and you go home, are you working on a &#8220;pet project&#8221;? Tell me about it.</li>
</ul>
<p>You see, we&#8217;re a small team &#8211; we need passionate people that occupy the &#8220;jack-of-all-trades&#8221; space. We want excellent developers, don&#8217;t get me wrong, but if you can dabble in the client (JavaScript) and design (CSS/xHTML) you are going to shine during our interview process (as opposed to someone with purely server-side experience).</p>
<p>I thought it would be fun to discuss my main interview questions as well as provide the <a href="https://docs.google.com/document/d/1v1pt2CvTzI6jpaWd6xIgHJQsvlnSd2twui_vwrNkdjM/edit?hl=en" title="Jr/Mid-level Software Engineer Developer's Assessment">developer&#8217;s assessment</a> that is sent to all potential hires. Check it out, feel free to post your answers, and let me know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.michaelwales.com/2010/11/the-development-interview/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Delegating OpenID to Your Google Account</title>
		<link>http://www.michaelwales.com/2010/02/delegating-openid-to-your-google-account/</link>
		<comments>http://www.michaelwales.com/2010/02/delegating-openid-to-your-google-account/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 13:57:04 +0000</pubDate>
		<dc:creator>Michael Wales</dc:creator>
				<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[OpenID]]></category>

		<guid isPermaLink="false">http://www.michaelwales.com/?p=96</guid>
		<description><![CDATA[Earlier this morning I made a complaint on Twitter concerning how OpenID URLs are typically long and hard to remember &#8211; I was specifically referring to Google&#8217;s OpenID URLs. Sure, there are other providers available, and to be perfectly honest I have accounts with some of the more popular (WordPress, Yahoo, etc.), but my Google [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.michaelwales.com/wp-content/uploads/2010/02/openid-please.png" alt="OpenID" title="OpenID" width="250" height="250" class="alignright" />Earlier this morning I made a <a href="http://twitter.com/walesmd/status/9676277160" title="Twitter: Michael Wales">complaint on Twitter</a> concerning how OpenID URLs are typically long and hard to remember &#8211; I was specifically referring to Google&#8217;s OpenID URLs. Sure, there are other providers available, and to be perfectly honest I have accounts with some of the more popular (WordPress, Yahoo, etc.), but my Google account is the one provider that gets used on a daily basis.</p>
<p><a href="http://twitter.com/cdharrison/status/9676339232" title="Twitter: Chris Harrison">Chris Harrison brought me back on track</a> telling me I should just use my own domain as my OpenID provider. Honestly, this required more effort than I wanted to exert but I started looking around for simpler solutions. As it turns out, there are two meta tags you can add to the header of your site (<code>openid.server</code> and <code>openid.delegate</code>) that will essentially &#8220;forward&#8221; any OpenID requests to your OpenID provider. This would allow me to make a quick change on my domain, not worry about maintaining the software that actually serves as the provider, yet still reap all the benefits.</p>
<p>Unfortunately, Google doesn&#8217;t support the <code>openid.delegate</code> meta tag&#8230;</p>
<p>Fortunately, one of Google&#8217;s very own <a href="http://code.google.com/p/google-app-engine-samples/" title="Google App Engine Demos">App Engine demos</a> does serve as an OpenID provider and allows you to delegate to their server. App Engine also allows developers to easily include authentication in their application by simply using the user&#8217;s Google Account &#8211; which is exactly what this demo application does. The end result: I authenticate with my Google Account to this App Engine demo and it serves up OpenID authentication on my domain&#8217;s behalf.</p>
<p>Check out the <a href="http://openid-provider.appspot.com/" title="Google App Engine: OpenID Provider">OpenID Provider demo</a> and login to your account. After you&#8217;ve logged in the application will tell you what your OpenID URL is, which you could use on sites like <a href="http://www.stackoverflow.com/" title="StackOverflow">StackOverflow</a> to authenticate. If, on the other hand, you want to use your own domain as your OpenID URL, take this information, edit the HTML meta tags below, and toss them into the header of your very own website:</p>
<script type="text/javascript" src="http://gist.github.com/315719.js"></script><noscript><p style="background-color:#ECEFF6;border:1px solid #D4DAE8;padding:5px;text-align:center;">Code snippets use JavaScript, please <a href="http://www.michaelwales.com/2010/02/delegating-openid-to-your-google-account/">view this post</a> at MichaelWales.com or enable JavaScript in your browser.</p></noscript>
<p><strong>Edit:</strong> As <a href="http://ericharrison.info/" title="Eric Harrison">Eric Harrison</a> and <a href="http://notsorelevant.com/" title="Carsten Pötter">Carsten Pötter</a> mention within the comments, Google now supports OpenID on your individual profile pages. Check out <a href="http://www.abstractioneer.org/2009/12/openid-delegation-for-googles-op.html" title="John Panzer: OpenID Delegation for Google">John Panzer&#8217;s</a> tutorial.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.michaelwales.com/2010/02/delegating-openid-to-your-google-account/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  www.michaelwales.com/category/web-standards/feed/ ) in 0.26709 seconds, on Feb 4th, 2012 at 2:01 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 4th, 2012 at 3:01 am UTC -->
