<?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>Peter Wooley, Web Development</title>
	<atom:link href="http://peterwooley.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://peterwooley.com</link>
	<description></description>
	<lastBuildDate>Wed, 22 Jul 2009 04:36:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Newspeak Won&#039;t Reinvent the Web</title>
		<link>http://peterwooley.com/2009/07/newspeak-wont-reinvent-the-web/</link>
		<comments>http://peterwooley.com/2009/07/newspeak-wont-reinvent-the-web/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 04:36:40 +0000</pubDate>
		<dc:creator>Peter Wooley</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Theory]]></category>

		<guid isPermaLink="false">http://blog.peterwooley.com/?p=466</guid>
		<description><![CDATA[What George Orwell may not have realized when creating 1984&#8242;s Newspeak was that a language that could shrink rather than grow might actually be a good idea. For the past two years, Gilad Bracha and a few other folks have been working on a new programming language, called Newspeak, that might actually be able to [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>What George Orwell may not have realized when creating <a href="http://en.wikipedia.org/wiki/Newspeak">1984&#8242;s Newspeak</a> was that a language that could shrink rather than grow might actually be a <em>good</em> idea. For the past two years, <a href="http://bracha.org/">Gilad Bracha</a> and a few other folks have been working on a new programming language, <a href="http://newspeaklanguage.org/">called Newspeak</a>, that might actually be able to start off with a mind-bendingly huge feature set, but do it all with just a few brilliant concepts and stay remarkably small in the process.</p>
<p>Josh, a co-worker of mine and a <a href="http://www.slideshare.net/al3x/why-scala-presentation">Serial Language Enthusiast</a>, let me know about this new development. Part <a href="http://en.wikipedia.org/wiki/Smalltalk">Smalltalk</a>, a splash of <a title="http://www.daimi.au.dk/~beta/" href="http://www.daimi.au.dk/%7Ebeta/">Beta</a>, a helping of <a title="http://research.sun.com/self/language.html" href="http://research.sun.com/self/language.html">Self</a>, and a sprinkling of Pixie Dust makes this language one to take a look at. In <a href="http://www.se-radio.net/podcast/2009-07/episode-140-newspeak-and-pluggable-types-gilad-bracha">Episode 140 of Software Engineering Radio</a>, Gilad explained the concepts of the language. Three things jumped out at me:</p>
<ol>
<li><strong>Class hierarchies</strong>, as in Classes within classes within classes. Classes, Modules, Namespaces, and Mixins are all handled with the same construct. Top-level classes are Namespaces and you can have multiple instances of these as Modules—giving you side-by-side deployments—and Mixins come by default as all parent classes are dynamically set at runtime.</li>
<li><strong>Dynamic Typing</strong> is used, which I love, but they&#8217;re working on implementing Pluggable Types, an <em>optional</em> typing system that will allow custom type grammars. Though, keeping a dynamic runtime, the types will only be checked at compile time, which is basically the opposite of ActionScript 3 running without strict mode.</li>
<li><strong>Network Aware</strong>. The language <em>knows</em> the Internet, <a href="http://newspeaklanguage.org/">as indicated on the Newspeak homepage</a>:<br />
<blockquote><p>&#8230;we believe in a notion of service oriented computing that allows for off-line operation and leverages the inherent advantages of client devices, while utilizing the strengths of the network.</p></blockquote>
</li>
</ol>
<p>For someone working on the web, this is exciting stuff. Going beyond simply being aware of the network, Newspeak will not only sync with data from the cloud, but with the <em>entire application</em>—running application code client-side. It&#8217;ll be like updating the latest version of <a href="http://tweetdeck.com/">TweetDeck</a> through <a href="http://www.adobe.com/products/air/">AIR</a>&#8216;s update system, but only the modified application objects and data will be sent over the wire. Now this next part is purely conjecture, but as multicore processing will be a focus of Newspeak, an implementation of Erlang-style actors may not be out of the question, and hot-swappable code could make the entire update process as smooth as butter.</p>
<h3>What I have to disagree with</h3>
<p>From <a href="http://www.se-radio.net/podcast/2009-07/episode-140-newspeak-and-pluggable-types-gilad-bracha">Episode 140 of Software Engineering Radio</a> (starting at 2:06), Gilad says,</p>
<blockquote><p>The real goal of Newspeak is to create a really nice environment where you can program for the  web without worrying about the web, without dealing with all the mechanics of different languages: CSS, HTML, DOM, Database back-end, whatever. In general, to create a language—not just to run in a web browser—but a language for a network world.</p></blockquote>
<p><strong>Hold it right there!</strong> Newspeak sounds like a great idea, but I&#8217;m not convinced it will allow people to &#8220;program for the web without worrying about the web.&#8221; If anything, this sounds like ASP.NET and its automagic markup, styles, and scripts that makes kittens cry. While the day may come when HTML will be treated as the <a href="http://softwaredevscott.spaces.live.com/Blog/cns!1A9E939F7373F3B7!429.entry">Assembly language of the Web</a>, we are far from it. With so many browsers, so many brand new ideas, and so much further to go in nearly every aspect, from content, accessibility, features, and speed, we&#8217;ll be lucky if we get there by 2030, when IE finally implements the <a href="http://www.w3.org/TR/2009/WD-css3-layout-20090402/">CSS3 Template Layout Module</a>.</p>
<p>By then, I will most likely be the <a href="http://www.dvorak.org/blog/">old, cantankerous coot</a> that still remembers the days when developers knew why you <a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_5.html">put the <code>&lt;script /&gt;</code> at the bottom</a> and how to <a href="http://www.cssplay.co.uk/menus/final_drop.html">style a <code>&lt;ul /&gt;</code> to make drop-down navigation</a> without JavaScript. But, with HTML5 still on its way and CSS3 being slowly implemented module-after-module, I doubt I&#8217;ll have to be very cantankerous anytime soon. Until then, I&#8217;ll be playing with a new language and seeing what this Internet fad can really do—even if it isn&#8217;t reinvented by Newspeak.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://peterwooley.com/2009/07/newspeak-wont-reinvent-the-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yes, I am staying at McAfee</title>
		<link>http://peterwooley.com/2009/07/yes-i-am-staying-at-mcafee/</link>
		<comments>http://peterwooley.com/2009/07/yes-i-am-staying-at-mcafee/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 02:45:54 +0000</pubDate>
		<dc:creator>Peter Wooley</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Theory]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[aipd]]></category>
		<category><![CDATA[mcafee]]></category>
		<category><![CDATA[tylersticka]]></category>
		<category><![CDATA[usdigital]]></category>
		<category><![CDATA[we]]></category>

		<guid isPermaLink="false">http://blog.peterwooley.com/?p=454</guid>
		<description><![CDATA[As you have no doubt heard, Tyler Sticka has announced that he will be leaving McAfee. Many of you know that Tyler and I attended the Art Institute of Portland together and, since then, we formed the first Interaction Design team at US Digital (along with Erik Jung), taught at the Art Institute of Portland, [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>As you have no doubt heard, Tyler Sticka has announced that <a href="http://tylersticka.com/2009/07/im-joining-waggener-edstroms-studio-d/">he will be leaving McAfee</a>. Many of you know that Tyler and I attended the <a href="http://www.artinstitutes.edu/portland/">Art Institute of Portland</a> together and, since then, we formed the first Interaction Design team at <a href="usdigital.com/">US Digital</a> (along with <a href="http://jungcompany.com">Erik Jung</a>), taught at the Art Institute of Portland, and were working closely  on Enterprise software at McAfee.</p>
<p>Designing and developing with Tyler is an exhilarating experience. He&#8217;s quick, thoughtful, and engaging—and I know he&#8217;ll continue to go further as he takes his next step.</p>
<p>With our history, I imagine some might think I&#8217;ll be leaving to join Tyler in the near future. I want to say that, while working with Tyler is a ton of fun, I have no plans to leave McAfee. My current role has been, and is, an exciting challenge. With just over a month and a half under my belt, I&#8217;m enjoying both the people and code I get to develop with. The five day work weeks have been a little tough to get used to, along with <a href="http://www.editgrid.com/user/peterwooley/commute">the commute</a>, but free soda and fast-paced, testable, continuously-integrated web development is <em>awesome</em>.</p>
<p>While we may not be working under the same roof, do not fret; professionally <span title="Z2FidHJp">we are <em>not</em> done</span>.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://peterwooley.com/2009/07/yes-i-am-staying-at-mcafee/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lessons from WoW</title>
		<link>http://peterwooley.com/2009/06/lessons-from-wow/</link>
		<comments>http://peterwooley.com/2009/06/lessons-from-wow/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 03:20:31 +0000</pubDate>
		<dc:creator>Peter Wooley</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Theory]]></category>

		<guid isPermaLink="false">http://blog.peterwooley.com/?p=446</guid>
		<description><![CDATA[Recently at the Art Institute of Portland, I gave a presentation to my Advanced Scripting class on lessons web app developers can take from World of Warcraft. While playing one night, I stopped and pondered all of the things that just work. I began to consider why WoW was so wildly successful and thought about [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Recently at the <a href="http://www.artinstitutes.edu/portland/">Art Institute of Portland</a>, I gave a presentation to my Advanced Scripting class on lessons web app developers can take from <a href="http://worldofwarcraft.com">World of Warcraft</a>. While playing one night, I stopped and pondered all of the things that <em>just work</em>. I began to consider <em>why</em> WoW was so wildly successful and thought about what I could take from my experience as a player and apply to web development. The presentation is hosted below, which will be most easily understood if coupled with the notes following.</p>
<div style="width:425px;text-align:left" id="__ss_1665126"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=lessonsfromwow-090630215053-phpapp01&#038;stripped_title=lessons-from-wow" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=lessonsfromwow-090630215053-phpapp01&#038;stripped_title=lessons-from-wow" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<h3>What&#8217;s the big deal?</h3>
<ul>
<li>World of Warcraft (or <dfn title="World of Warcraft">WoW</dfn>) <a href="http://www.blizzard.com/us/press/081121.html">reached 11.5 Million active subscriptions</a> before Christmas of 2008.</li>
<li>The graphics engine was originally <a href="http://www.gamespot.com/pc/rpg/worldofwarcraft/news.html?sid=2810134">built sometime during or before 2001</a>, making it around 8 years old.</li>
<li><a href="http://www.gamecyte.com/nielsen-ratings-show-wow-ps2-still-on-top-us-gamers-play-more-original-xbox-than-ps3">Nielsen reported</a> that during 2008, WoW players played an average of 671 minutes (or 11 hours) per week.</li>
<li><a href="http://www.worldofwarcraft.com/toplist/index.html?en,questcomplete">In the past week</a>, the quest titled <a href="http://www.wowhead.com/?quest=13627">Jack Me Some Lumber</a> was completed over 680,000 times.</li>
</ul>
<h3>World of Warcrafting Web Applications</h3>
<ul>
<li>The basics of a Web Application and WoW are similar:
<ul>
<li>Each attempts to create an Internet-based experience where users are given functionality they would not have in an offline or computerless world,</li>
<li>Each is served from servers that can crash, software that has bugs, and tubes that can get clogged,</li>
<li>And each has the imperative of creating an experience worth their users time and, potentially, money.</li>
</ul>
</li>
<li>As WoW is one of my main non-web hobbies, I want to justify why I spend my time (Over 75 days, logged in) and money ($727.48).</li>
<li>As I started to pay attention, the plethora of applicable lessons became obvious.</li>
</ul>
<h3>Take the time</h3>
<ul>
<li>Blizzard <a href="http://www.gamespot.com/pc/rpg/worldofwarcraft/news.html?sid=2810134">first announced development</a> of WoW in 2001, and released in November of 2004. Basically, three years.</li>
<li>Development was well under way by 2001, so it is not unreasonable to assume at least a year of work had gone into it by then. Essentially, 4 years, if not 5.</li>
<li><strong>Lesson</strong>: Spending the time to do it right, even when <a href="http://en.wikipedia.org/wiki/EverQuest_II">others</a> <a href="http://en.wikipedia.org/wiki/Dark_Age_of_Camelot">beat</a> <a href="http://en.wikipedia.org/wiki/Star_Wars_Galaxies">you</a> <a href="http://en.wikipedia.org/wiki/Ragnarok_Online">to</a> <a href="http://en.wikipedia.org/wiki/Lineage_II">the</a> <a href="http://en.wikipedia.org/wiki/Final_Fantasy_XI">punch</a>, works quite well. (Save for Windows Vista.)</li>
</ul>
<h3>Use <a href="http://en.wikipedia.org/wiki/Iterative_design">iterative design</a></h3>
<ul>
<li>In the nearly 4½ years since WoW&#8217;s release, it has released two expansion packs and <a href="http://www.worldofwarcraft.com/patchnotes/">18 substanial content patches</a>.</li>
<li>Each update has brought with it brand new content: locations, dungeons, enemies, gear, pets, and more.</li>
<li>In the same way, gameplay has evolved immensely. The <a href="http://www.worldofwarcraft.com/info/basics/talents.html">Talent system</a>, which &#8220;can make your character a specialist in one of their available class roles, change their entire playstyle, and offer countless combinations for you to experiment with&#8221;, has been modified several times.</li>
<li>During the beta, the entire system was ditched until a better one could be created.</li>
<li>And all of this came with no apology. The developers of WoW changed the game in a way they felt was positive and defended it <em>vehemently</em>.</li>
<li><strong>Lesson</strong>: Change your app to make it better, and defend your decisions.</li>
</ul>
<h4>But!</h4>
<h3>Listen to your users</h3>
<ul>
<li>Whether you&#8217;re just starting development or making your 7th version: involve your users.</li>
<li>For every content patch in WoW, Public Test Realms are used to test out new game mechanics and features. <em>And people are excited to help</em>. The testers copy their character or use a pre-made one and play, knowing full well their progress will be wiped out by the time the patch goes live. But, it&#8217;s new and cool and fun—and they feel privileged to get involved before other people.</li>
<li>During the development of Wrath of the Lich King, I got a picked randomly for a spot in the Beta. I loved it, I even bragged to my friends.</li>
<li>I spent an entire evening running around the new continent, Northrend. Barely anyone else was there; it felt like I was the very first person to see it. <em>It was awesome</em>.</li>
<li>Once I had run around, I tried playing the first Heroic player class: the Death Knight.</li>
<li>Lo and behold, they had implemented a feedback system. Everything quest you were given in the game could be rated for ease-of-use, obviousness, and even fun. With that data, they modified quest explanations, changed quest rewards, updated the map, and made their application better.</li>
<li><strong>Lesson</strong>: Change your app, but base your decisions on real feedback.</li>
</ul>
<h3>Offer something addictive</h3>
<ul>
<li>In my freshman and sophomore year of high school, I played Diablo II 6 &#8211; 8 hours per day. I had a good handle on my classes, so no one really noticed. And I was &#8220;working on my computer&#8221;, so my parents were cool with it. What I was discovering is the power of flow and addiction.</li>
<li>As Diablo II is a Blizzard title, I couldn&#8217;t wait to see what they would come up with in the <dfn title="Massively-Muttiplayer Online">MMO space.</dfn></li>
<li>Strangely, where Diablo II used the chance of finding better and better items to hook me, World of Warcraft used social networking.</li>
<li>Don&#8217;t get me wrong, I loved leveling, doing quests, and getting better and better gear; but World of Warcraft actually slows you down, in those areas. Leveling takes longer than in Diablo II, there is no <em>true</em> power leveling, quests can be very, very long, and new items are more based on hard work than chance.</li>
<li>What was encouraged, was connections with other people.</li>
<li>It starts off slowly. Some hard quests suggest grouping with other people. A chat pane is always available, where people discuss everything going on (for good or ill). People can create guilds where groups of people can wear a tabard and have chat channel just for them. Dungeons (or instances) provide great rewards, if you can get 5, 10, 25, or 40 people to complete it together. And you can always talk directly to someone, no matter where in the World (of Warcraft) they are.</li>
<li>The best part: WoW makes shy geeks, like me, cooperate with other players in ways they wouldn&#8217;t do in the real world.</li>
<li><strong>Lesson</strong>: Create something unexpectedly addictive, and introduce it slowly.</li>
</ul>
<h3>Customize, Embrace &amp; Extend</h3>
<ul>
<li>Customization of the game experience is <em>essential</em> in WoW.</li>
<li>On <a href="http://www.curse.com/">curse.com</a>, there are 3,993 addons to install, ecah modifying the user experience in their own way.</li>
<li>Personally, I use 25 addons. One of which allows me to easily coordinate specific spells with other Paladins. Another makes the chat interface a little more usable with a timestamp, clickable links and color-coding. And another still throws everything that&#8217;s happening to me and everything I&#8217;m doing to others all around my character—so I try to comprehend it.</li>
<li>In a recent patch, Blizzard introduced a new Calendar feature. Unfortunately, there were several addons that already served this function. Being rather bold, the WoW Calendar implemented several features the others couldn&#8217;t offer, such as always up-to-date holiday schedules, a tie-in to their external <a href="http://wowarmory.com">wowarmory.com</a>, and a more unified look and feel.</li>
<li>They saw a feature the community had made, and improved upon it. This ruffled feathers with the developers of the other Calendar addons, but they can continue to develop their addons and make them better—possibly pushing Blizzard to implement more functionality in their own feature.</li>
<li><strong>Lesson</strong>: Give your community tools to customize their experience, but don&#8217;t be afraid to work with them to better the core experience.</li>
</ul>
<h3>Make it less expensive</h3>
<ul>
<li>World of Warcraft started at $50.00 for the original game. Over time, it dropped to $40, then $30. When The Burning Crusade was released, the original game could be found for $20.</li>
<li>If you pay month-to-month, WoW costs 14.99 per month. If you pay every three months, it&#8217;s $13.99/month, and every six months is $12.99/month.</li>
<li>If you buy WoW with both expansions today, it would cost roughly $80 ($39.99 + $39.99) for the first free month. If you bought the games when they were new, you may have paid as much as $220 ($79.99 + $69.99 + $69.99). Same games, 64% cheaper.</li>
<li>Usable business models on the web are few and far between, but maybe consistent price drops on web apps over time could be the next big thing?</li>
<li><strong>Lesson</strong>: If you&#8217;re charging for your app, make it cheaper over time.</li>
</ul>
<h3>Make it pretty</h3>
<ul>
<li>WoW is beautiful.</li>
<li>It&#8217;s cartoony, colorful, and adorable.</li>
<li>It uses a graphics engine that is pushing a decade old, but still pulls off some amazing scenes.</li>
<li>Whatever you do, make your app a joy to use.</li>
<li>Pay attention to how many clicks a user must make.</li>
<li>Use <a href="http://www.alistapart.com/articles/indefenseofeyecandy">eye candy</a>.</li>
<li>We all know that craigslist works well, but looks awful. It can still <a href="http://www.cameronmoll.com/archives/000837.html">work well and look good</a>.</li>
<li><strong>Lesson</strong>: Even with web limitations, make your app gorgeous.</li>
</ul>
<p>I&#8217;m always interested to hear feedback. Let me know if you agree or disagree with anything I put forward here, or share lessons you&#8217;ve found in WoW.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://peterwooley.com/2009/06/lessons-from-wow/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>I&#039;m joining McAfee!</title>
		<link>http://peterwooley.com/2009/05/im-joining-mcafee/</link>
		<comments>http://peterwooley.com/2009/05/im-joining-mcafee/#comments</comments>
		<pubDate>Wed, 13 May 2009 06:47:21 +0000</pubDate>
		<dc:creator>Peter Wooley</dc:creator>
				<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://blog.peterwooley.com/?p=437</guid>
		<description><![CDATA[I’m excited to announce that I’ve accepted a UI Development position at McAfee. This June 1st, I&#8217;ll join an amazing group of people developing the best software in the industry. In addition, I&#8217;ll be working with an old friend who recently made a similar transition. With this great opportunity, I must bid farewell to the [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p><img title="supermcafee" src="http://peterwooley.com/wp-content/uploads/2009/05/supermcafee.jpg" alt="supermcafee" width="450" height="338" /></p>
<p>I’m excited to announce that I’ve accepted a UI Development position at <a href="http://www.mcafee.com">McAfee</a>.</p>
<p>This June 1st, I&#8217;ll join an amazing group of people developing the best software in the industry. In addition, I&#8217;ll be working with an <a href="http://tylersticka.com">old friend</a> who <a href="http://tylersticka.com/2009/02/im-joining-mcafee/">recently made a similar transition</a>.</p>
<p>With this great opportunity, I must bid farewell to the wonderful people of <a href="http://usdigital.com">US Digital</a>. The experience and guidance I&#8217;ve received over the past two years will be indispensable as I move forward. I will forever remember the dynamic and collaborative team, along with the many challenges overcome, problems solved, and triumphs shared.</p>
<p>(Apologies to <a href="http://tylersticka.com/2009/02/im-joining-mcafee/">Tyler Sticka</a> for the image and, subsequently, <a href="http://peterwooley.com/wp-content/uploads/2009/05/superman-ross016.jpg">Alex Ross</a> for the illustration.)</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://peterwooley.com/2009/05/im-joining-mcafee/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Developing with a Brand New Canvas</title>
		<link>http://peterwooley.com/2009/04/developing-with-a-brand-new-canvas/</link>
		<comments>http://peterwooley.com/2009/04/developing-with-a-brand-new-canvas/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 06:15:34 +0000</pubDate>
		<dc:creator>Peter Wooley</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Theory]]></category>

		<guid isPermaLink="false">http://blog.peterwooley.com/?p=428</guid>
		<description><![CDATA[&#8220;I can&#8217;t generate 1000 images—it&#8217;s not practical, I can&#8217;t use a server-side script—there&#8217;s the sandbox and it&#8217;s lame, but there has to be some way to just use JavaScript to generate pixel data,&#8221; I thought. Since releasing Gmail FavIcon Alerts version 2.5, I&#8217;ve spent a ton of time trying to figure out how to make [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>&#8220;I can&#8217;t generate 1000 images—it&#8217;s not practical, I can&#8217;t use a server-side script—there&#8217;s the sandbox and it&#8217;s lame, but there has to be some way to just use JavaScript to generate pixel data,&#8221; I thought.</p>
<p>Since releasing <a href="http://userscripts.org/scripts/show/24430">Gmail FavIcon Alerts</a> version 2.5, I&#8217;ve spent a<em> ton</em> of time trying to figure out how to make it better. Thankfully, users were more than <a href="http://userscripts.org/topics/22053">happy to help</a>. After talking with some friends, I realized that the key feature missing from all of the favicon <a href="http://userscripts.org/scripts/show/39432">message</a> <a href="https://addons.mozilla.org/en-US/firefox/addon/10420">count</a> <a href="https://addons.mozilla.org/en-US/firefox/addon/8121">scripts</a> was dynamic unread message count—being able to know exactly how many messages you had by looking at your favicon. But, how could this be done? Embedding the images as base64 is how most of the scripts work, but base64 is lengthy, and storing 1000 iterations to give exact unread message counts up to 999 would be ridiculous in both size and scope.</p>
<p>Thankfully, while teaching the WDIM355 Client-Side Scripting class at the Art Institute of Portland, the students showed quite an interest in the <a href="http://en.wikipedia.org/wiki/Canvas_(HTML_element)">Canvas tag</a>. After playing with it for a bit, they detailed how they were using it. The methods currently available consist of things like fillRect(), strokeRect(), and drawImage(). It felt like Flash, but lower-level, <em>geekier</em> even.</p>
<p>It suddenly made sense: draw the unread count over the icon using the canvas tag! Starting on a Friday evening, I began. First, I drew a red square in the middle of  a 16&#215;16 pixel Canvas, and it worked! I started drawing shapes, patterns and anything I could to test the speed and capabilities. I couldn&#8217;t have been happier. Then I hit a snag: images.</p>
<p>Working with images is never the best experience, but drawing them with the Canvas tag, it turns out, is just plain awful. Because speed is important, the script really needed to keep the images embedded. Base64 is great for that, but I discovered a little issue with the drawImage() function of the canvas: you have to supply it with a standard Image object or <a href="https://developer.mozilla.org/en/HTML/Element/img">HTMLImageElement</a>. This didn&#8217;t seem like a problem, until I started setting the Image.src to a Data URI. For some reason, I couldn&#8217;t get the images to load and I kept getting the <a href="http://stackoverflow.com/questions/358538/getimagedata-in-firefox-3-causing-nserrordomsecurityerr">NS_ERROR_DOM_SECURITY_ERR</a> error. After quite a bit of searching, I discovered that, for security reasons, Image objects <a href="http://ajaxian.com/archives/detect-if-the-browser-supports-apng">can&#8217;t have their src attribute set to a Data URI</a>!</p>
<p>After nearly giving up, I took a break with my wife, and at some point during the break, I came up with a crazy idea: use fillRect() and a 16&#215;16 array to draw the image, pixel-by-pixel. Crazy, you say? Loco, indeed. I spent the next hour writing the loop and adding each individual hex value into an array. I argued that writing a script to do it would have taken longer—I was wrong. After a bit of <a href="http://twitter.com/peterwooley/statuses/1369711010">number confusion on my part</a>, I got it working and it was beautiful. Literally, pixel-for-pixel, it matched. I had to take a minute to enjoy the hack that sat before me.</p>
<p><img class="alignright size-full wp-image-430" title="Dynamically-generated unread favicon" src="http://peterwooley.com/wp-content/uploads/2009/04/unread.jpg" alt="Dynamically-generated unread favicon" width="108" height="24" />The last step was to add the numbers, which turned out to be the easiest part. I created a pixel map of <a href="http://tylersticka.com">Tyler&#8217;s</a> pixel numbers, did some math and drew the background. Even though it took a bit more tweaking, I basically came out with the finished product!</p>
<p>It took plenty of hours, involved several people I&#8217;m grateful to, and was some of the most fun I&#8217;ve had hacking since I first picked up <a href="http://userscripts.org/scripts/show/24430">the script</a>! And now, the script has now been featured on <a href="http://lifehacker.com/5203982/gmail-favicon-alerts-adds-exact-unread-message-counts">Lifehacker </a>twice, for <a href="http://lifehacker.com/5156337/show-message-counts-chat-alerts-in-your-gmail-favicon">2.5</a> and now <a href="http://lifehacker.com/5203982/gmail-favicon-alerts-adds-exact-unread-message-counts">3.0</a>! And it just past 8,000 installs!</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://peterwooley.com/2009/04/developing-with-a-brand-new-canvas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Honesty in Song</title>
		<link>http://peterwooley.com/2009/02/honesty-in-song/</link>
		<comments>http://peterwooley.com/2009/02/honesty-in-song/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 07:36:25 +0000</pubDate>
		<dc:creator>Peter Wooley</dc:creator>
				<category><![CDATA[Music]]></category>
		<category><![CDATA[alt]]></category>

		<guid isPermaLink="false">http://blog.peterwooley.com/?p=208</guid>
		<description><![CDATA[I had a conversation with Tyler at US Digital many Thursdays ago about what makes music &#8220;good&#8221;, in objective terms. Anyone who has spent more than a half hour with Tyler will know how he feels about music. I&#8217;ve known him a bit longer, and have had several conversations about music, but never one that [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>I had a conversation with <a href="http://tylersticka.com">Tyler</a> at US Digital many Thursdays ago about what makes music &#8220;good&#8221;, in objective terms. Anyone who has spent more than a half hour with Tyler will know how he feels about music. I&#8217;ve known him a bit longer, and have had several conversations about music, but never one that got so rudimentary. He said, and I have to agree, that good music is honest.</p>
<p>While listening to a story about the movie Juno on NPR, I heard both the director and screenwriter agree that honesty is what makes a movie great, so it seems only natural that music works similarly. Of course, how does someone judge the <em>honesty</em> of a track, an album, an artist?</p>
<p>The whole discussion arose over my general dislike of <a href="http://en.wikipedia.org/wiki/Bj%C3%B6rk">Björk</a>, an artist praised in many geek circles for her electronic stylings and eccentric nature. She tends to use excessive amounts of dissonance between her vocals and instrumentals, and it drives me out of my mind. The music often feels uncomfortable throughout entire tracks, which pulls me out of the <em>music</em> and causes me to focus on the vocals and instruments. Bringing this up with Tyler, he expressed that he&#8217;d rather hear a track full of dissonance than perfect harmony, if it track felt more honest.</p>
<p>This point has been rolling around in my head for over a year and here&#8217;s what I&#8217;ve come up with: I&#8217;m terrible at judging the honesty of a song. While I&#8217;m not &#8220;into&#8221; pop, my default reaction is<em> not</em> repulsion to today&#8217;s Top 40. I can&#8217;t listen to an entire track, but it doesn&#8217;t upset me deep within my soul. Upon further inspection, I&#8217;m nearly always turned off by the cookie-cutter nature of the instrumentals and terrible lyrics.</p>
<p>On the flip side, discordant music cannot stay within my earshot for very long. I <em>need</em> to stop the terrible sounds that assail my mind. Thankfully, mostly because of Tyler, I&#8217;ve given some of these sounds another try and grown to love them—<a href="http://en.wikipedia.org/wiki/My_Bloody_Valentine_(band)">My Bloody Valentine</a> being an exquisite example.</p>
<p>In essence, pleasing sounds make me happy, but once I can find the heart of the music—it&#8217;s honesty, I suppose—I can make a lasting decision about the music I listen to. That means I love Radiohead, The Submarines, and Howard Shore, but I still can&#8217;t stand to listen to Björk.</p>
<p>I&#8217;m now more curious than ever to hear how everyone else finds &#8220;good&#8221; music.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://peterwooley.com/2009/02/honesty-in-song/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Terrified of writing.</title>
		<link>http://peterwooley.com/2008/10/terrified-of-writing/</link>
		<comments>http://peterwooley.com/2008/10/terrified-of-writing/#comments</comments>
		<pubDate>Sun, 12 Oct 2008 07:46:40 +0000</pubDate>
		<dc:creator>Peter Wooley</dc:creator>
				<category><![CDATA[Theory]]></category>

		<guid isPermaLink="false">http://blog.peterwooley.com/?p=214</guid>
		<description><![CDATA[Earlier this evening, I tweeted: &#8220;At intermission of Oliver [the Play]! It kind of makes me want to try some acting again, or at least working in fiction.&#8221; Following this, @kmcdade suggested I join NaNoWriMo—National Novel Writing Month.  Considering it sounded like something I&#8217;d want to be a part of and it had a sign-up [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Earlier this evening, I <a href="http://twitter.com/peterwooley/statuses/956126860">tweeted</a>:</p>
<blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"><p>&#8220;At intermission of Oliver [the Play]! It kind of makes me want to try some acting again, or at least working in fiction.&#8221;</p></blockquote>
<p>Following this, @<a href="http://twitter.com/kmcdade">kmcdade</a> suggested I join <a href="http://www.nanowrimo.org">NaNoWriMo</a>—National Novel Writing Month.  Considering it sounded like something I&#8217;d want to be a part of and it had a sign-up form, I went ahead and dove in. Little did I know, this is the real deal.  The idea is that you write a novel—a whole—novel in the month of November. It&#8217;s a brilliant idea. It&#8217;s a terrifying idea. As I dove deeper into the site, finding the Vancouver, WA region forums and reading all about it, I realized just how inadequate I would feel trying to do this. People have done this many years in a row, they already have their plots decided on and are attempting to figure out how to add more drama. Here I am, pushed to do a little writing because of an Oliver Twist performance and an itch I&#8217;ve never scratched.</p>
<p>I backed away from the forums, decided against joining the region group (then they&#8217;d know I was there, right?), and ran to the seclusion of my blog. If I did do it, without joining a group or comparing myself to other people, I wonder what I would write about? I use to have this recurring dream about the death of a man&#8217;s fiance and his dealing with her death. It ended with a rather epic scene on a hotel rooftop, in the rain, where the man discovers the guy that killed her. I used to think about a story that took place in near isolation. The protaganist walked around and dealt with keeping his surroundings healthy, while he thought back on how things were. I had fun trying to craft ways that for him to be isolated, the space station was the most fun. An abandoned town was terrifyingly nice, as well. I had a romance or two, this before I found romance myself. I tried fan fiction for Starcaft, Diablo, and Warcraft, but those never worked out.Oh yeah, I had written down the opening for a story several times! It starts with the narrator recalling. The scene opens up on a happy little suburb, with the yonger-self narrator watering the flowers outside of his house. Out of nowhere, he&#8217;s abducted by three men. I can still remember how it played out in my mind. The problem with that story is that it never had a plot, only an introduction. I do wonder what happened to that guy, though. Obviously, he&#8217;s alive. Maybe I will try this writing thing out.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://peterwooley.com/2008/10/terrified-of-writing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Speaking about the perfect Web stack.</title>
		<link>http://peterwooley.com/2008/03/speaking-about-the-perfect-web-stack/</link>
		<comments>http://peterwooley.com/2008/03/speaking-about-the-perfect-web-stack/#comments</comments>
		<pubDate>Sat, 08 Mar 2008 03:48:41 +0000</pubDate>
		<dc:creator>Peter Wooley</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[lamp]]></category>

		<guid isPermaLink="false">http://blog.peterwooley.com/?p=211</guid>
		<description><![CDATA[After watching Tyler give his This is Not a Graphic Design presentation (which I wrote about), I got to thinking about the horror that is presenting. I worry a fair amount. I can totally believe that Laurence Olivier would throw up before each performance. However, I really do love presenting. I suppose I am teaching [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>After watching Tyler give his This is Not  a Graphic Design presentation (which <a href="http://peterwooley.com/archives/like-obama-for-web-design">I wrote about</a>), I got to thinking about the horror that is presenting. I worry a fair amount. I can totally believe that Laurence Olivier would throw up before each performance. However, I really do love presenting. I suppose I <em>am</em> teaching a class at the Art Institute and I <em>have </em>and <em>do</em> present and show-off my portfolio to clients and on-lookers whenever someone will look. Granted, what excites me enough to share and teach is oft more technical than most, but they&#8217;re things <em>I</em> would have enjoyed hearing (then I could have learned them earlier!) and I think others would too.<br />
With that solidly in my mind, I began to think about what gets me up the morning, why I love going into work at US Digital, and how others might benefit from it. Since Wednesday night, I&#8217;ve been rolling the idea of talking about the <abbr title="Linux, Apache, MySQL, PHP">LAMP</abbr> stack. Granted, at work we&#8217;re not using all the correct applications (our <em>M</em> is <em>MS</em>SQL not <em>My</em>SQL), but I&#8217;ve worked with  true LAMP, <abbr title="Windows, Apache, MySQL, PHP">WAMP</abbr>, and several other <em>unmentionable</em> stacks, and there&#8217;s a small project that I&#8217;ll be dedicating some time to that will be using it to LAMP to its fullest.</p>
<p>Obviously, the LAMP stack is nothing new to many developers, but I do believe people miss the benefits and power of Linux and especially Apache. Along those lines, I&#8217;d want to expand the talk to not only LAMP, but building the perfect workflow: from using Subversion (or other SCM software) to VNC to Mantis Bug Tracking to PEAR to PECL and all of the things that I believe make the perfect Web stack.</p>
<p>What do you think? Would you care to listen to how to build the perfect Web stack from the ground up? If so, let me know in the comments!</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://peterwooley.com/2008/03/speaking-about-the-perfect-web-stack/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Like Obama for Web Design</title>
		<link>http://peterwooley.com/2008/03/like-obama-for-web-design/</link>
		<comments>http://peterwooley.com/2008/03/like-obama-for-web-design/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 07:00:28 +0000</pubDate>
		<dc:creator>Peter Wooley</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dev.peterwooley.com/?p=5</guid>
		<description><![CDATA[This evening, I had the pleasure of hearing friend and colleague Tyler Sticka speak at DevGroup NW, a Portland-based Adobe User Group that, among other things, sponsors the Portland Web Visions conference. Tyler&#8217;s presentation, aptly titled This is Not a Graphic Design, focused on the Web as a media revolution—not simply an extension of Graphic [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>This evening, I had the pleasure of hearing friend and colleague <a href="http://tylersticka.com/">Tyler Sticka</a> speak at <a href="http://www.devgroupnw.org/">DevGroup NW</a>, a Portland-based Adobe User Group that, among other things, sponsors the Portland <a href="http://webvisionsevent.com/">Web Visions</a> conference. Tyler&#8217;s presentation, aptly titled <a href="http://www.tylersticka.com/2008/02/27/this-is-not-a-graphic-design/">This is Not a Graphic Design</a>, focused on the Web as a media revolution—not simply an extension of Graphic Design into a distributed model, but a much larger and more universal medium than has come before.</p>
<p>The crowd was larger than I had expected and many were genuinely intrigued by this separation of the Web into its own realm. A couple sitting in front of me passed a notebook back and forth, jotting down endless references: &#8220;<a href="http://w3.org/">Accessibility!</a>&#8220;,  &#8220;<a href="http://www.mikeindustries.com/sifr">SIFR</a>&#8220;, and even &#8220;<a href="http://lcdsoundsystem.com/">LCD Soundsystem</a>&#8220;. Other notepads were a-flurry, and several eyes were literally glued (well, enough that my staring at them had no effect on their attention).</p>
<p>As the presentation delved deeper, starting from the beginnings of photography, through radio and television, and a host of other revolutions, Tyler was truly enjoying the experience, as were we the listeners. Around the half-way point, we were stopped to participate in a Shooter (as in gun) Drill, where we locked the doors, and sat quietly, making sure no one could hear us from beyond the room; this while the projected slide sat lit against the screen, featuring a screaming woman pulling her hair out over her Web browser options, which stood ominously above her. As the lights sprung to life, so did Tyler, with a joke and continuation into, what I&#8217;ve dubbed, the Why-Having-Multiple-Browsers-Doesn&#8217;t-Suck section.</p>
<p>Following the hour long presentation, I was surprised to see the questions people were posing. Living in the world of passionate Web developers as I do, I often forget that Web Standards, accessibility, layout, and typography are still rather new concepts. Many solid, helpful questions were asked and answered: &#8220;How does SIFR fit into Web Standards?&#8221;, because it uses unobtrusive JavaScript and Flash; &#8220;What&#8217;s this MovableType?&#8221;, simply a Content Management system, along with WordPress (good) and Joomla (bad); &#8220;I love accessibility, can Flash be accessible?&#8221;, lean on Flash when it solves a problem Flash should solve, lean on HTML/CSS/JavaScript otherwise.</p>
<p>I took only one note through the entire event (not to say I didn&#8217;t learn anything, I just forgot I had my notepad): <strong>He&#8217;s like Obama for the Web</strong>. While he may not be campaigning for President of the World Wide Web Consortium, he is certainly proclaiming change—a change towards Standards, a change to how Typography is handled on the Web, and change for the overall good of the Web. Which, most certainly, is not a graphic design.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://peterwooley.com/2008/03/like-obama-for-web-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A World of Warcraft Journal</title>
		<link>http://peterwooley.com/2008/02/a-world-of-warcraft-journal/</link>
		<comments>http://peterwooley.com/2008/02/a-world-of-warcraft-journal/#comments</comments>
		<pubDate>Mon, 11 Feb 2008 07:19:42 +0000</pubDate>
		<dc:creator>Peter Wooley</dc:creator>
				<category><![CDATA[Gaming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[apis]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wow]]></category>

		<guid isPermaLink="false">http://blog.peterwooley.com/?p=209</guid>
		<description><![CDATA[A couple of years ago, before I knew PHP or any back-end language, I really wanted to keep a World of Warcraft Journalâ€”a pictoral journey through my travels in Azeroth. Knowing my way around XHTML and CSS, I designed a page, marked it up and started cataloging the beauty of WoW. As the images started [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>A couple of years ago, before I knew PHP or any back-end language, I really wanted to keep a World of Warcraft Journalâ€”a pictoral journey through my travels in Azeroth. Knowing my way around XHTML and CSS, I designed a page, marked it up and started cataloging the beauty of WoW. As the images started to add up, I realized I had no paging system and no way to update the site without modifying the mark-up. After around 30 pictures, it was too much to handle, and I let it go.</p>
<p>Well, I&#8217;ve decided to give it another go; this time, with a little more knowledge under my belt. I haven&#8217;t been playing very much WoW, so the first thing to do was to start again. I gave myself a few hours this weekend and actually attempted get some questing done. It was an exhilarating experience. The next thing to do was to design a system for uploading images, text, quotes, conversations, and a few other things, with a nice design, RSS, and easy management. Knowing I couldn&#8217;t do that, and based on my fascination with mini-blogging, I decided to scratch and itch and give <a href="http://tumblr.com">Tumblr</a> a go.</p>
<p>It was worth it. Tumblr allows for stupid-simple management of mini-blogging, and it even makes it look good. It has image, audio, and video upload support, and has a <a href="http://www.tumblr.com/api">beautiful API</a>. I was even able to connect it up to a custom URL with a simple A-record in my DNS.</p>
<p>And, voila!, Peter&#8217;s WoW Journal is re-born: <a href="http://wow.peterwooley.com">http://wow.peterwooley.com</a></p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://peterwooley.com/2008/02/a-world-of-warcraft-journal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 1.236 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-09-02 13:36:07 -->
