<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6556575758010903163</id><updated>2012-01-11T22:48:43.099-07:00</updated><category term='hobbies'/><category term='cancer'/><category term='#coldfusion'/><category term='postgresql'/><category term='cfdebug'/><category term='bug'/><category term='cfproperty'/><category term='ash'/><category term='server transfer eligibility'/><category term='mage'/><category term='chipotle'/><category term='remote proxy'/><category term='comic'/><category term='getter'/><category term='elsiane'/><category term='analytics'/><category term='empty cache'/><category term='coldfusion world of warcraft wow realm status git api'/><category term='query'/><category term='cftrace'/><category term='chrome'/><category term='rush'/><category term='obscure'/><category term='coldfusion coldbox coldfire firebug debug debugging aop interceptor coldspring advisor'/><category term='firefox'/><category term='stevie ray vaughn'/><category term='base64'/><category term='southpaw'/><category term='css'/><category term='rss'/><category term='cfhttp'/><category term='family'/><category term='concert'/><category term='rematch'/><category term='xml'/><category term='easter egg'/><category term='delerium'/><category term='threads'/><category term='hunter'/><category term='lastmodified'/><category term='descendants of draenor'/><category term='qdoba'/><category term='customer service'/><category term='wotlk'/><category term='spore'/><category term='improvements'/><category term='pet peeve'/><category term='webservice'/><category term='glowsticking'/><category term='warhammer'/><category term='commons net'/><category term='no-xml'/><category term='cfftp'/><category term='denver'/><category term='world of warcraft'/><category term='cfdump'/><category term='bruce campbell'/><category term='death knight'/><category term='ie7'/><category term='regular expressions'/><category term='megadeth'/><category term='trainer'/><category term='guild recruitment'/><category term='m.u.l.e.'/><category term='google'/><category term='ruby'/><category term='cfthread'/><category term='implicit circuit'/><category term='object-oriented'/><category term='ion drum rocker'/><category term='cymbals'/><category term='coldfusion'/><category term='cache'/><category term='Illudium'/><category term='stratholme'/><category term='video dating'/><category term='gzip'/><category term='kathune'/><category term='harmonix'/><category term='adult swim'/><category term='achievement'/><category term='been caught stealing'/><category term='rock band 2'/><category term='robot chicken'/><category term='gquit'/><category term='age of conan'/><category term='setter'/><category term='foo fighters'/><category term='cfobjectcache'/><category term='bill leeb'/><category term='no doubt'/><category term='painkiller'/><category term='leigh nash'/><category term='fusebox'/><category term='jane&apos;s addiction'/><category term='livedocs'/><category term='apache'/><category term='army of darkness'/><category term='evil dead ii'/><category term='lefty'/><category term='sql injection attack'/><category term='ajax'/><category term='kristy thirsk'/><category term='music'/><category term='pve'/><category term='hallowe&apos;en'/><category term='symantec endpoint'/><category term='flesch reading ease'/><category term='cftwitterlib'/><category term='keyword search'/><category term='blog'/><category term='trumpet'/><category term='cfquery'/><category term='autosuggest'/><category term='jakarta'/><category term='moving pictures'/><category term='cachedwithin'/><category term='red hot chili peppers'/><category term='black temple'/><category term='drumming'/><category term='neil peart'/><category term='illidan'/><category term='panic attack'/><category term='ashbringer'/><category term='twitter'/><category term='cflog'/><category term='gunning-fog'/><category term='coldspring'/><category term='wow lemmings'/><category term='black war bear'/><category term='song difficulties'/><category term='don&apos;t fear the reaper'/><category term='the ring'/><category term='cachedafter'/><category term='expert'/><category term='cfqueryparam'/><category term='deathwing'/><title type='text'>Bakuenryu!</title><subtitle type='html'>The ramblings of a corporate ninja.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-8074664217256010776</id><published>2011-08-01T10:37:00.004-06:00</published><updated>2011-08-01T10:56:07.079-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#coldfusion'/><title type='text'>How I Got Started in ColdFusion</title><content type='html'>To help support &lt;a href="http://www.bryantwebconsulting.com/blog/index.cfm/2011/7/20/August-1-2011-is-How-I-Started-ColdFusion-Day"&gt;Steve Bryant's proposed Aug 1 CF-themed holiday&lt;/a&gt;, I will throw my own story into the ring.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was originally doing tech support for a CompuServe-related company in the Denver, CO area, and had already been passionately learning HTML in my own time, setting up and running a number of websites that were based on personal interests of mine. A local ISP advertised that they were hiring HTML developers, so I gave it a shot. I had no previous work experience in the web development industry so it was a pretty big gamble for them to go with me--but for some reason, they took a chance and took me in.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I had a number of small HTML projects on my plate, and they were being built in Microsoft FrontPage '97 (which I would go on to teach for a year at a local community college). I remember distinctly being frustrated when building out a site for a local school district and thinking, "My God, there has got to be another way to build a site where all the information is fed from some kind of central resource, instead of having to duplicate the same content over and over, page after page..."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At first, my attention turned to a new type of resource that FrontPage supported, a dark and mysterious type of file known as an ".ASP" file, but before I got too far into my research, a fellow colleague at the ISP (who ran his own internal network in his basement, and with whom I also happened to be hosting my Quake Gaming Clan's website with), said to me, "You know, if you want to build a site with a database back-end, you should really look into ColdFusion, we just got the 3.1 installer here".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I installed it, and began fiddling with setting up a search interface to an Access database I had been storing my MP3 collection in. Sure enough, it was some ridiculously short amount of time (10 minutes maybe?) which told me right then and there that ColdFusion was going to play a significant role in my career. I decided to pursue it, rather than go down the ASP route, arguing that given Microsoft's popularity (remember, this was 1997), there were going to be tons of ASP programmers--so ColdFusion would be my niche...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;...and it still is today, 14 years later.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-8074664217256010776?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/8074664217256010776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=8074664217256010776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/8074664217256010776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/8074664217256010776'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2011/08/how-i-got-started-in-coldfusion.html' title='How I Got Started in ColdFusion'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-2541455813008319713</id><published>2011-05-28T17:39:00.003-06:00</published><updated>2011-05-28T17:47:18.254-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion world of warcraft wow realm status git api'/><title type='text'>WoWColdFusionAPI</title><content type='html'>I've contributed a ColdFusion-based wrapper to the &lt;a href="http://us.battle.net/wow/en/forum/2626217/"&gt;World of Warcraft Community Platform API&lt;/a&gt;. I hesitate to call it an 'API', since it is mostly a glorified CFC wrapping a call to &amp;lt;cfhttp&amp;gt;, but if people feel that it sounds more official being called an API...so be it.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In a nutshell, the new &lt;a href="http://us.battle.net/wow/en/forum/2626217/"&gt;WoW CP API&lt;/a&gt; is a series of URLs produced by &lt;a href="http://www.blizzard.com/"&gt;Blizzard&lt;/a&gt;, allowing the general public to request data on World of Warcraft. Their API return query results as a JSON payload. Right now, they only support realm queries, but character, guild, and arena team queries are soon to follow.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can get a copy of my wrapper on GitHub here: &lt;a href="https://github.com/Hanzo55/WoWColdFusionAPI"&gt;https://github.com/Hanzo55/WoWColdFusionAPI&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-2541455813008319713?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/2541455813008319713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=2541455813008319713' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/2541455813008319713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/2541455813008319713'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2011/05/wowcoldfusionapi.html' title='WoWColdFusionAPI'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-5709408550161290431</id><published>2011-05-22T22:42:00.008-06:00</published><updated>2011-05-22T23:33:22.053-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion coldbox coldfire firebug debug debugging aop interceptor coldspring advisor'/><title type='text'>Debugging JSON Proxy / ColdBox with ColdFire</title><content type='html'>It's late and time is short, so let's get right to it. You have a &lt;a href="http://www.coldbox.org/"&gt;ColdBox&lt;/a&gt; application. You're using a &lt;a href="http://www.hayesdata.com/Hayesdata/index.cfm/cfml/using-a-coldbox-json-proxy/"&gt;JSON Proxy&lt;/a&gt; to marshal your objects into the model. You need to be able to debug / trace access to the CFCs under the hood, since the context of the debugging is within the XHR, and not the page itself. You also love Firebug, and want to take advantage of that. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let's begin. Bear with me as I'm not nearly as organized as &lt;a href="http://www.coldfusionjedi.com/"&gt;Ray&lt;/a&gt; or &lt;a href="http://www.bennadel.com/"&gt;Ben&lt;/a&gt;. I'll assume you already have Firebug installed, and I'll assume you have a ColdBox project you're working with, one that presumably implements the JSON Proxy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step 1: Download &lt;a href="http://coldfire.riaforge.org/"&gt;Nathan Mische's ColdFire&lt;/a&gt; addon from &lt;a href="http://www.riaforge.org/"&gt;RIAForge&lt;/a&gt;. Install.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step 2: Open up your ColdBox app, go to your /interceptors directory. Create a new file called 'coldfire.cfc' in that directory.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step 3: Find the file in the ColdFire addon archive named ColdFireAdvice.cfc (in /coldfusion/coldspring). This is an Advisor for ColdSpring that ColdFire relies on. ColdSpring, of course, is an AOP-based framework, utilizing dependency injection as a way to wire objects together. Guess what else uses dependency injection? If you guessed ColdBox, you are allowed to read on.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step 4: Copy the contents of the ColdFireAdvice.cfc and paste it into your /interceptors/coldfire.cfc file.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step 5: Change the &amp;lt;cfcomponent&amp;gt; so that it extends 'coldbox.system.interceptor', instead of 'coldspring.aop.AfterReturningAdvice'.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step 6: Change the first &amp;lt;cffunction&amp;gt; so that it is named 'postEvent', rather than 'afterReturning'. Delete the four arguments; returnVal, method, args, and target...should now all be gone. Your final updated &amp;lt;cffunction&amp;gt; should have no &amp;lt;cfargument&amp;gt; calls.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step 7: Open up your coldbox.xml.cfm config file, scroll down to the &amp;lt;interceptors&amp;gt; and add a new interceptor declaration:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;lt;!-- COLDFIRE TRACING --&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;lt;Interceptor class="interceptors.coldfire"/&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step 8: Be sure that your CFAdmin debugger is set to "coldfire" and that you have put the appropriate "trace.cfm" in your ColdFusion server's /debug folder (You *did* perform the ColdFire installation up above, right?). Put in a few &amp;lt;cftrace&amp;gt; calls in your model CFC files--you know, the ones that you proxy through your JSON Proxy CFC.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step 9: Flip over to Firebug, Click on the ColdFusion tab, choose the appropriate jsonProxy.cfc call from the call list (it's a clickable drop-down menu to the right of 'Variables'; all of the individual XHR calls will be selectable). Be sure the "Traces" filter is chosen. Voila! JSON Proxy debugging in ColdFire.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-jAgR5E9aKG8/Tdnv6qpT_AI/AAAAAAAAACk/4T5csWcE5QY/s1600/coldfire-coldbox.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 72px;" src="http://1.bp.blogspot.com/-jAgR5E9aKG8/Tdnv6qpT_AI/AAAAAAAAACk/4T5csWcE5QY/s400/coldfire-coldbox.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5609778602025679874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-5709408550161290431?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/5709408550161290431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=5709408550161290431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/5709408550161290431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/5709408550161290431'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2011/05/debugging-json-proxy-coldbox-with.html' title='Debugging JSON Proxy / ColdBox with ColdFire'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-jAgR5E9aKG8/Tdnv6qpT_AI/AAAAAAAAACk/4T5csWcE5QY/s72-c/coldfire-coldbox.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-1633984563614097654</id><published>2010-01-10T22:52:00.006-07:00</published><updated>2010-01-11T08:36:09.704-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wow lemmings'/><category scheme='http://www.blogger.com/atom/ns#' term='guild recruitment'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><title type='text'>WoW Lemmings Traffic for 2009</title><content type='html'>Now that '09 has finally come to a close, I'm able to take a look at the year in World of Warcraft recruitment data (at least, what's available to me via &lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt;). Aside from a basic &lt;a href="http://www.wowlemmings.com/report.cfm"&gt;side-by-side report of the recruits found, as compared to the previous year&lt;/a&gt;, some interesting data comes out of Google Analytics regarding who searches for what.  Here is a tidbit of the "Warcraft-related" stuff.&lt;br /&gt;&lt;br /&gt;The top 10 keyword filters used were:&lt;br /&gt;&lt;br /&gt;late&lt;br /&gt;late night&lt;br /&gt;holy&lt;br /&gt;tank&lt;br /&gt;ele&lt;br /&gt;resto&lt;br /&gt;casual&lt;br /&gt;weekend&lt;br /&gt;night&lt;br /&gt;prot&lt;br /&gt;&lt;br /&gt;The top classes searched for were:&lt;br /&gt;&lt;br /&gt;Druid: 20.6%&lt;br /&gt;Shaman: 19.4%&lt;br /&gt;Paladin: 16.8%&lt;br /&gt;Priest: 11.5%&lt;br /&gt;&lt;br /&gt;Then, a sharp decline into the remaining classes:&lt;br /&gt;&lt;br /&gt;Death Knight: 5.3%&lt;br /&gt;Warrior: 5.1%&lt;br /&gt;Mage: 3.8%&lt;br /&gt;Warlock: 3.5%&lt;br /&gt;Hunter: 3.0%&lt;br /&gt;&lt;br /&gt;Not surprisingly, more people made general searches of all classes (2.08%) than people who actually searched for Rogues (1.86%).&lt;br /&gt;&lt;br /&gt;And, for the grand finale, the top 10 WoW Lemmings search criteria all year were:&lt;br /&gt;&lt;br /&gt;1: US Alliance&lt;br /&gt;2: US Horde&lt;br /&gt;3: Horde&lt;br /&gt;4: US Alliance (No Idiots)&lt;br /&gt;5: US&lt;br /&gt;6: US Alliance PvE&lt;br /&gt;7: US Alliance Priests&lt;br /&gt;8: US Horde (No Idiots)&lt;br /&gt;9: US Alliance Druids&lt;br /&gt;10: US Alliance Shamans&lt;br /&gt;&lt;br /&gt;Interesting what "perceived" class need is by guild recruiters.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-1633984563614097654?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/1633984563614097654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=1633984563614097654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/1633984563614097654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/1633984563614097654'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2010/01/wow-lemmings-traffic-for-2009.html' title='WoW Lemmings Traffic for 2009'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-2196256654452882367</id><published>2009-07-26T12:56:00.004-06:00</published><updated>2009-07-26T13:19:50.925-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='wow lemmings'/><category scheme='http://www.blogger.com/atom/ns#' term='guild recruitment'/><category scheme='http://www.blogger.com/atom/ns#' term='cftwitterlib'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><title type='text'>WoWLemmings Now On Twitter</title><content type='html'>It's been awhile since I've made an update to &lt;a href="http://www.wowlemmings.com/"&gt;WoWLemmings&lt;/a&gt;, your #1 &lt;a href="http://www.worldofwarcraft.com/"&gt;World of Warcraft&lt;/a&gt; recruitment tool on the web (proudly built in &lt;a href="http://www.adobe.com/coldfusion"&gt;ColdFusion&lt;/a&gt;, I might add), but there has been work going on behind the scenes, and I'll share a bit with you now.&lt;br /&gt;&lt;br /&gt;First, I'm proud to announce that WoWLemmings now has its own &lt;a href="http://www.twitter.com/"&gt;Twitter&lt;/a&gt; account, and it is fielded by none other than the &lt;a href="http://www.twitter.com/WoWLemming"&gt;WoWLemming Bot&lt;/a&gt;. If you're a hard-core twitter nerd, or you like to get random guild recruitment-related tweets, head on over to &lt;a href="http://www.twitter.com/"&gt;Twitter.com&lt;/a&gt; and &lt;a href="http://www.twitter.com/WoWLemming"&gt;follow the bot&lt;/a&gt;. He's not the most insightful or profound chatterer at this point in time, but he will give you semi-regular updates on recruitment data. Specifically, the bot will periodically send updates on what new types of classes are being found on various recruitment sites (and subsequently added to the WoWLemmings index). The bot also monitors the website's usage, and reports back on what people are searching for.&lt;br /&gt;&lt;br /&gt;For the ColdFusion folks reading this blog post, the Twitter bot was created with ease, thanks to &lt;a href="http://cftwitterlib.riaforge.org/"&gt;CFTwitterLib&lt;/a&gt; by &lt;a href="mailto:pcsilva@gmail.com"&gt;Pedro Claudio&lt;/a&gt;. Be sure to check it out if you are contemplating doing any kind of Twitter integration. Looks like he just updated it for the &lt;a href="http://labs.adobe.com/technologies/coldfusion9"&gt;beta of ColdFusion 9&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Secondly, in the small update category, I've added another site to Kathune's spider list: &lt;a href="http://maintankadin.failsafedesign.com/"&gt;Maintankadin&lt;/a&gt;. Thanks to the folks over at &lt;a href="http://www.elitistjerks.com/"&gt;Elitist Jerks&lt;/a&gt; for referring that site to me.&lt;br /&gt;&lt;br /&gt;I have a number of updates in the works that I hope will speed up your recruitment tasks even more, the first of which will be an Ajax-based pop-up for the recruits that supply links to their character on &lt;a href="http://www.wowarmory.com/"&gt;The World of Warcraft Armory&lt;/a&gt;. This will be one-less click for you recruiters that are trying to assess player value effectively.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-2196256654452882367?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/2196256654452882367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=2196256654452882367' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/2196256654452882367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/2196256654452882367'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2009/07/wowlemmings-now-on-twitter.html' title='WoWLemmings Now On Twitter'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-5997733057870755914</id><published>2009-07-07T11:10:00.002-06:00</published><updated>2009-07-07T11:23:59.596-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='comic'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><category scheme='http://www.blogger.com/atom/ns#' term='ashbringer'/><title type='text'>Ashbringer</title><content type='html'>I recently picked up a copy of &lt;a href="http://www.amazon.com/gp/product/1401223419?ie=UTF8&amp;amp;tag=bakue-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1401223419"&gt;World of Warcraft: Ashbringer&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=bakue-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=1401223419" alt="" style="border: medium none  ! important; margin: 0px ! important;" border="0" height="1" width="1" /&gt;&lt;br /&gt;by Mickey Neilson. It's really just the four-comic miniseries bound together and pitched as a hard-cover graphic novel. It was a light fun read and I get very few opportunities to actually do any comic-book reading in my (somewhat immature) adult life, so it was a nice change-of-pace from game manuals, programming blogs and news feeds.&lt;br /&gt;&lt;br /&gt;It covers one of the more important story lines in the Warcraft universe, namely the creation and mythos surrounding the &lt;a href="http://www.wowhead.com/?item=13262"&gt;Ashbringer&lt;/a&gt;, a weapon that was created by the founding fathers of the Scarlet Crusade, for the purposes of cutting down the armies of the undead. The key characters are Highlord Alexandros Mograine, whom eventually wields this weapon, and his two sons, Renault and Darion. The breadth of the comic spans Alexandros' discovery of the magical orb which has its power injected into the blade (via Magni Bronzebeard, of all people), as well as his rise to leadership of the Scarlet Crusade and eventual death at the hands of his son, Renault. It also explains how he is brought back as a Death Knight by Kel'thuzad (the truly old-school WoW players will remember that he was &lt;a href="http://www.wowhead.com/?npc=16062"&gt;one of the original Four Horsemen&lt;/a&gt; in Naxxramas), at which point, the focus of the novel transitions to young Darion Mograine.&lt;br /&gt;&lt;br /&gt;It is interesting to finally get some additional insight into the background of Darion, who eventually becomes the head of the Knights of the Ebon Blade (though that happens far beyond the scope of the comic), as well as see how the Mograine family-line intertwines with those of the Fordrings (Tirion, Taelen). All in all, an enjoyable comic and recommended for you WoW lore nerds.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-5997733057870755914?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/5997733057870755914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=5997733057870755914' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/5997733057870755914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/5997733057870755914'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2009/07/ashbringer.html' title='Ashbringer'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-8123136674846922811</id><published>2009-06-22T18:06:00.009-06:00</published><updated>2009-06-25T08:25:14.752-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='object-oriented'/><category scheme='http://www.blogger.com/atom/ns#' term='fusebox'/><title type='text'>Fusebox, "Static" Controllers, and the Case of the Mystery Fruit</title><content type='html'>This could become a very long and complex post, so I'll keep to the basics, and make some assumptions out of the gate:&lt;br /&gt;&lt;br /&gt;1. You know what ColdFusion is.&lt;br /&gt;2. You have basic knowledge of Objected-Oriented Development, and understand the implications of inheritance in a class hierarchy.&lt;br /&gt;3. You know what Fusebox is (a CF framework for building websites) and are aware of basic fusebox setup and naming conventions (MVC, circuits, fuses, XFAs, etc.)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Problem&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;ColdFusion has no concept of a "Static" class. This is a class that does not need to be instantiated in order to have its methods accessible, and does not have access to any encapsulated data from previously instanced objects of said class. One of the more common ones in Java is the Math class. Hence, this is valid:&lt;br /&gt;&lt;br /&gt;Math.random()&lt;br /&gt;&lt;br /&gt;as opposed to:&lt;br /&gt;&lt;br /&gt;var mathObj = new Math();&lt;br /&gt;mathObj.random();&lt;br /&gt;&lt;br /&gt;In this example, Math, as a Class, doesn't have any hidden internal variables, it doesn't maintain state, it has no knowledge of any other Math objects. It simply exists as a series of methods (much like a common UDF library) that can perform stand-alone functions as needed.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Assumptions&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Assumption #1&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Fusebox, as a framework, allows you to implement circuits as CFCs. These CFCs (which are Classes for the non-CFer) are the various Controllers in your MVC Fusebox setup. Since these Circuits are CFCs, they may be inherited from and this can serve to enforce a common class hierarchy for your website.&lt;br /&gt;&lt;br /&gt;You are dealing with a Fusebox website that handles fruit.&lt;br /&gt;&lt;br /&gt;You are aware of a Controller class hierarchy being implemented as such:&lt;br /&gt;&lt;br /&gt;Controller.Fruit&lt;br /&gt;-- Controller.Apple&lt;br /&gt;-- Controller.Banana&lt;br /&gt;&lt;br /&gt;Controller.Fruit has a fuse called showInfo() which produces common information to the screen about said fruit.&lt;br /&gt;&lt;br /&gt;Controller.Apple (which derives from Contoller.Fruit) has no showInfo() method. The assumption is that when someone calls showInfo() on Controller.Apple, it inherits functionality from Controller.Fruit, and applies the information accordingly. If you made this assumption (and you are still with me), you would be correct.&lt;br /&gt;&lt;br /&gt;Controller.Banana does have a method called showInfo(). It produces additional Banana-related info to the screen, and ends by calling super.showInfo(), which ensures that the common fruit-related info is also processed.&lt;br /&gt;&lt;br /&gt;This is a typical URL for the site you are working with:&lt;br /&gt;&lt;br /&gt;http://www.myfruitbasketbox.org/index.cfm/fuseaction/apple.showInfo/apple_id/4&lt;br /&gt;&lt;br /&gt;So far, so good.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Assumption #2&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;XFAs (eXit Fuseactions) are commonly used by Fusebox developers to implement a common naming convention for any dynamic destinations in a given site. The site in question happens to have an XFA called "XFA.FruitInformation", which is set like so, from within Controller.Apple:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;&amp;lt;cfset event.xfa( 'FruitInformation', 'showInfo', 'apple_id', '' ) /&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;and like so, from within Controller.Banana:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;&amp;lt;cfset event.xfa( 'FruitInformation', 'showInfo', 'banana_id', '' ) /&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Don't let the blank space on the end distract you; it is done this way so that the developer can dynamically append an ID from within her generic fruit-wide template. What you need to be concerned with is that for each of these XFAs, the name of the primary key or "identifier" is different: apple_id for Apples, and banana_id for Bananas.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Assumption #3&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Any Controller CFC that implements a prefuseaction() method and/or a postfuseaction() method allows the programmer to enforce that a particular method is run pre- and post-fuse. This is part of the Fusebox framework. It can be argued that a good place to set up XFAs is from within a prefuseaction(). This site happens to do just that.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Case&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now, the conundrum. You soon discover that the site implements the concept of a "Mystery" fruit. Upon re-investigating the Controller hierarchy, you see:&lt;br /&gt;&lt;br /&gt;Controller.Fruit&lt;br /&gt;-- Controller.Apple&lt;br /&gt;-- Controller.Banana&lt;br /&gt;-- Controller.MysteryFruit&lt;br /&gt;&lt;br /&gt;This tells you that a MysteryFruit derives directly from Fruit, and furthermore, implements all of the fuseactions that are implemented in Controller.Fruit, such as the aforementioned showInfo(). The core of Controller.MysteryFruit.showInfo() is quite a bit different than that of Controller.Apple or Controller.Banana(). It includes a line that looks like this:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;&amp;lt;cfset myFusebox.do( action="#myFruit.circuit()#.showInfo" ) /&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Although not the cleanest solution in the book, the code tells you that MysteryFruit.showInfo() dynamically determines what kind of fruit it is handling at runtime, and calls the necessary "known" fruit's showInfo() method. In this case, if it is dealing with an apple, it will call Controller.Apple.showInfo(), likewise, Controller.Banana.showInfo(), if the fruit is a Banana.&lt;br /&gt;&lt;br /&gt;You also notice that Controller.MysteryFruit implements its own special display of fruit information, by the presence of this XFA in Controller.MysteryFruit.prefuseaction():&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;&amp;lt;cfset event.xfa( 'FruitInformation', 'showInfo', 'fruit_id', '' ) /&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;However, the problem is this: Once Controller.MysteryFruit.showInfo() fires, it first processes functions and data in its own prefuseaction; in this case, the XFA listed directly above. However, once the showInfo() method itself is reached, and it hands off the request to Controller.Apple.showInfo(), the prefuseaction within Controller.Apple.showInfo() &lt;font style="font-weight: bold;"&gt;also&lt;/font&gt; fires. The end result is that MysteryFruit expects XFA.FruitInformation to have a dangling 'fruit_id' parameter on which to append a value to, but instead, gets an 'apple_id' parameter, since the Controller.Apple.prefuseaction() fired as well.&lt;br /&gt;&lt;br /&gt;In this bizarre setup, it would be nice to be able to instruct Fusebox to call another Controller's fuses in "Static" mode; that is, to produce only the business logic encapsulated within showInfo(), and ignore (or prevent) the execution of any pre- or post-fuseactions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Solution&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In order to create this pseudo-Static Controller functionality within Fusebox, I added a top-level prefuseactionCheck() function that attempts to determine if the Controller in question is derived from the original Controller accessed by the user. This allows me to preserve the prefuseaction() execution-hierarchy all the way up the Controller chain ( in this case, firing both Controller.Apple.prefuseaction() and Controller.Fruit.prefuseaction() ). Meanwhile, if a fuseaction from outside the hierarchy is accessed, I can suppress the execution of that Controller's pre- and post-fuseaction, generating only the core business logic of that fuse that is required.&lt;br /&gt;&lt;br /&gt;First, grab hold of the first Controller that becomes available to the Fusebox framework:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;        &amp;lt;!--- at the first opportunity, assign OriginalController ---&amp;gt;&lt;br /&gt;        &amp;lt;cfif StructKeyExists(myFusebox, 'ORIGINALCIRCUIT') and&lt;br /&gt; NOT event.valueExists('OriginalController')&amp;gt;&lt;br /&gt;            &amp;lt;cfset event.setValue('OriginalController', this) /&amp;gt;&lt;br /&gt;        &amp;lt;/cfif&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The StructKeyExists test is necessary because in No-XML mode, Fusebox can't guarantee it knows its fuses and circuit out of the gate. As a result, it's pointless to compare myFusebox.THISCIRCUIT with myFusebox.ORIGINALCIRCUIT, because there is a possibility that when you need them the most...they won't be available. Better to just take myFusebox.ORIGINALCIRCUIT as soon as it exists and store it as the OriginalController.&lt;br /&gt;&lt;br /&gt;Next, compare the Controllers to see if there is class heredity or not. Do this using the function IsInstanceOf()&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;         &amp;lt;cfif StructKeyExists(myFusebox, 'THISCIRCUIT')&amp;gt;&lt;br /&gt;&lt;br /&gt;            &amp;lt;!--- Is the original circuit's controller an instance of Me? If not, I am a statically-called class ---&amp;gt;&lt;br /&gt;            &amp;lt;cfif IsObject(event.getValue('OriginalController',0)) and&lt;br /&gt; NOT IsInstanceOf(event.getValue('OriginalController'), 'controller.' &amp;amp; myFusebox.THISCIRCUIT)&amp;gt;&lt;br /&gt;                &amp;lt;cfset isStatic = true&amp;gt;&lt;br /&gt;            &amp;lt;/cfif&amp;gt;&lt;br /&gt;           &lt;br /&gt;        &amp;lt;/cfif&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This code then generates three comparisons up the class hierarchy:&lt;br /&gt;&lt;br /&gt;MysteryFruit.showInfo() -&amp;gt; MysteryFruit.prefuseaction() -&amp;gt; "Hello, I am Controller.MysteryFruit. Is Controller.MysteryFruit an instance of me?" TRUE (one and the same)&lt;br /&gt;&lt;br /&gt;Apple.showInfo() -&amp;gt; Apple.prefuseaction() -&amp;gt; "Hello, I am Controller.Apple. Is Controller.MysteryFruit an instance of me?" FALSE (I am an instance of Controller.Apple, which is also an instance of Controller.Fruit)&lt;br /&gt;&lt;br /&gt;Fruit.showInfo() -&amp;gt; Fruit.prefuseaction() -&amp;gt; "Hello, I am Controller.Fruit. Is Controller.MysteryFruit an instance of me?" TRUE (Controller.MysteryFruit derives from me, so we are both of type Controller.Fruit)&lt;br /&gt;&lt;br /&gt;Once this is implemented, you can hand back the TRUE/FALSE results to the calling prefuseaction and process/suppress any additional code as necessary. Furthermore, the technique I use here can also be used to determine if a particular circuit's prefuseactions have already fired once up the class hierarchy, so that heavily granular fusebox apps with many fuseactions don't unnecessarily call prefuseactions over and over.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-8123136674846922811?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/8123136674846922811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=8123136674846922811' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/8123136674846922811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/8123136674846922811'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2009/06/fusebox-static-controllers-and-case-of.html' title='Fusebox, &quot;Static&quot; Controllers, and the Case of the Mystery Fruit'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-5697828951572833620</id><published>2009-04-10T08:51:00.004-06:00</published><updated>2009-04-10T10:26:17.367-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><category scheme='http://www.blogger.com/atom/ns#' term='achievement'/><title type='text'>I'm like an attention whore, but for achievements</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7qClZPJ5810/Sd9yiBhHmFI/AAAAAAAAACA/qh9uFs_NzMI/s1600-h/bloodyrare.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 274px; height: 400px;" src="http://1.bp.blogspot.com/_7qClZPJ5810/Sd9yiBhHmFI/AAAAAAAAACA/qh9uFs_NzMI/s400/bloodyrare.jpg" alt="" id="BLOGGER_PHOTO_ID_5323099213423679570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Wednesday proved to be lucky for me, as I wrapped up an ongoing achievement in World of Warcraft, the grind-worthy &lt;a style="font-weight: bold;" href="http://www.wowhead.com/?achievement=1312"&gt;Bloody Rare&lt;/a&gt;. I've noted on several public forums that those of us whom have completed either Bloody Rare or &lt;a href="http://www.wowhead.com/?achievement=2257"&gt;Frostbitten&lt;/a&gt; (or worse, both) are prime candidates to be inducted into the "huge nerd with no life" hall-of-fame. After having played the game non-stop for four+ years, successfully lead the same guild for that duration, and have leveled numerous alts to their max level (at that time in the game), not to mention my embarrassing passion for the lore of the game...I think it's a safe bet that I cashed the huge-nerd-with-no-life check long, long ago.&lt;br /&gt;&lt;br /&gt;In reality, Bloody Rare was not that difficult to complete, especially considering a Death Knight spends only a fraction of their time in Outland during the leveling process. Once I got rid of all the necessary quests to complete in Northrend, and began working on the various reputation grinds that were introduced with The Burning Crusade, I found myself spending a lot of time crossing the wastelands once known as Draenor. If I recall correctly, the breakdown went something like this:&lt;br /&gt;&lt;br /&gt;1. During the initial leveling grind, I left Outland once I hit 68. Starting from Hellfire Peninsula and diligently completing quests in the order of the zones, this put me right at the start of Nagrand. So, when the time came to return to Outland, Nagrand is where I resumed. As a result of this choice, &lt;a href="http://www.wowhead.com/?npc=17144"&gt;Goretooth&lt;/a&gt; was the first rare to bite the dust, followed soon after by &lt;a href="http://www.wowhead.com/?npc=18683"&gt;Voidhunter Yar&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;2. Once finished with Nagrand, I returned to Terrokar Forest to begin the Sha'tari Skyguard reputation grind. I prioritized this reputation early on because it grants you Nether Ray mounts (for &lt;a href="http://www.wowhead.com/?achievement=2536"&gt;Mountain o' Mounts&lt;/a&gt;), a Nether Ray pet (for &lt;a href="http://www.wowhead.com/?achievement=2516"&gt;Lil' Game Hunter&lt;/a&gt;) and a tabard (for &lt;a href="http://www.wowhead.com/?achievement=1021"&gt;Twenty-Five Tabards&lt;/a&gt;). Since I spent a lot of time in Terrokar for this grind, I made certain to note the spawn/roam points for the rares. &lt;a href="http://www.wowhead.com/?npc=18689"&gt;Crippler&lt;/a&gt; was the first to bite it, followed by &lt;a href="http://www.wowhead.com/?npc=18685"&gt;Okrek&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I didn't find &lt;a href="http://www.wowhead.com/?npc=18686"&gt;Doomslayer Jurim&lt;/a&gt; for quite some time, but again, this worked out, because he is normally seen walking the road to Shadowmoon Valley, and by the time I had transitioned to Shadowmoon, I was already following the road closely. He eventually popped his head out, and was slaughtered.&lt;br /&gt;&lt;br /&gt;3. As noted above, Shadowmoon Valley was my next prioritization, as I wanted to begin work on the &lt;a href="http://www.wowhead.com/?faction=1015"&gt;Netherwing&lt;/a&gt; faction (which would also contribute to Mountain o' Mounts). If memory serves, &lt;a href="http://www.wowhead.com/?npc=18695"&gt;Ambassador Jerrikar&lt;/a&gt; was the first to bite the dust, and I hadn't even begun the Netherwing grind yet; I was still working on completing &lt;a href="http://www.wowhead.com/?achievement=1195"&gt;Shadow of the Betrayer&lt;/a&gt; and he just happened to be up.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.wowhead.com/?npc=18694"&gt;Collidus the Warp-Watcher&lt;/a&gt; was next on the kill list, and it was a convenient kill because one of his spawn points is along the south-east edge of the Valley, which you fly over en-route to Nethwering Ledge. I distinctly remember flying over his dead body (twice!) and having that "uhhhhh....just a few seconds too late" feeling you get during a near miss. As luck would have it, I spent a good deal of time working on Netherwing, and I eventually killed him on that south-eastern ledge.&lt;br /&gt;&lt;br /&gt;I killed &lt;a href="http://www.wowhead.com/?npc=18696"&gt;Kraator&lt;/a&gt; last, as I was nearing the end of the Netherwing grind. Kraator is one of the few mobs I had previously found and killed in The Burning Crusade, so I had a bad feeling he was going to give me a problem showing up (which carried over to another mob, read on) but he soon made his appearance and was dispatched with great vengeance.&lt;br /&gt;&lt;br /&gt;4. I moved to Netherstorm next, because my plan was to wrap up &lt;a href="http://www.wowhead.com/?achievement=903"&gt;Shattrath Divided&lt;/a&gt;, and I had already completed all the necessary Scryer-based quests in Shadowmoon Valley, so it made sense to wrap up &lt;a href="http://www.wowhead.com/?achievement=1194"&gt;Into the Nether&lt;/a&gt;, while continuing to grind Sunfury Signets/Arcane Tomes. &lt;a href="http://www.wowhead.com/?npc=18697"&gt;Chief Engineer Lorthander&lt;/a&gt; was killed almost immediately, and in fact, made his appearance several times during my completion of the Netherstorm quests. I also found &lt;a href="http://www.wowhead.com/?npc=20932"&gt;Nuramoc&lt;/a&gt; twice, calling in a fellow guildy for the second kill.&lt;br /&gt;&lt;br /&gt;Once I had completed the Netherstorm quests, &lt;a href="http://www.wowhead.com/?npc=18698"&gt;Ever-Core the Punisher&lt;/a&gt; still hadn't made his grand entrance, so I adjusted my Scryer grind to his known patrol locations: around the circumference of Manaforges B'naar, Ara, and Ultris. I finally caught him at the latter, and delivered a fatal blow.&lt;br /&gt;&lt;br /&gt;5. Blade's Edge Mountains was next on my list, which was the focus of &lt;a href="http://www.wowhead.com/?achievement=1193"&gt;On the Blade's Edge&lt;/a&gt;, which in turn, would lead to &lt;a href="http://www.wowhead.com/?achievement=1274"&gt;Loremaster of Outland&lt;/a&gt;, and I additionally was looking to begin work on &lt;a href="http://www.wowhead.com/?achievement=896"&gt;A Quest a Day Keeps the Ogres at Bay&lt;/a&gt;. &lt;a href="http://www.wowhead.com/?npc=18690"&gt;Morcrush&lt;/a&gt; was first on the list to perish, whom I found while handling the Rexxar storyline, flying between Thunderlord Stronghold and Mok'nathal Village.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.wowhead.com/?npc=18692"&gt;Hemathion&lt;/a&gt; was next to die, as he spawns right smack in the middle of where the Ogri'la daily quests are done. As of this writing, I'm still working on Ogri'la, and have seen him two additional times...so one might argue he's the most easily found of all the rares.&lt;br /&gt;&lt;br /&gt;I eventually found and killed &lt;a href="http://www.wowhead.com/?npc=18693"&gt;Speaker Mar'grom&lt;/a&gt;, just by doing my standard 'fly-over-the-spawn-points-if-you're-in-that-zone' plan, wrapping up the rares for Blade's Edge.&lt;br /&gt;&lt;br /&gt;6. At this point, I had only a few stragglers left. I had previously killed &lt;a href="http://www.wowhead.com/?npc=18682"&gt;Bog Lurker&lt;/a&gt; and &lt;a href="http://www.wowhead.com/?npc=18681"&gt;Coilfang Emmisary&lt;/a&gt; in Zangarmash during the initial level grind, yet &lt;a href="http://www.wowhead.com/?npc=18680"&gt;Marticar&lt;/a&gt; escaped me. I had a hell of a time finding Marticar, and frustration soon set in.&lt;br /&gt;&lt;br /&gt;Remember my previous statement about killing Kraator back in TBC? Marticar also shared this trait. Many moons ago, when there was no Northrend, and I had no Death Knight to speak of, I was raiding on a Shadow Priest. My food buff of choice for her was &lt;a href="http://www.wowhead.com/?item=27657"&gt;Blackened Basilisk&lt;/a&gt;, which I farmed with the greatest of ease off of &lt;a href="http://www.wowhead.com/?npc=19706"&gt;Marshrock Threshalisks&lt;/a&gt;, in their native habitat along the northern edge of The Dead Mire. As a result of this decision, I spent a lot of time in-transit between Swamprat Post and the Basilisk farm area, which coincidentally, is right smack in the middle of one of Marticar's spawn points.&lt;br /&gt;&lt;br /&gt;I saw him many, many times throughout the course of TBC. What's bittersweet about it is that I farmed on my level 63 Warrior, and (at that time) Marticar was a level 63 Rare Elite...which simply could not be solo'd by a Warrior of the same level. As a result of this, Marticar taunted me every time I saw him while farming for spell damage food, as I couldn't even approach him without fear of being blown up.&lt;br /&gt;&lt;br /&gt;Now, as a level 80 Death Knight that lays waste to anything it comes across, the rare Fen Strider continued to taunt me simply by not showing his face. I stayed diligent, and continued to fly over his spawn points as often as I could, en-route to Blade's Edge while continuing to work on Ogri'la. Finally, one random evening, my targeting macro picked up his ugly bright pink body. I swept down into the swamp, and gutted him like a fish. My Warrior has been avenged.&lt;br /&gt;&lt;br /&gt;7. All that remained was Hellfire Peninsula. Since I was hyper-focused on leveling the DK when I was last in this zone, and hadn't even really started to plan out my achievement whoring map, I didn't think at once to prioritize any search for rare mobs, so all three still needed to be killed.&lt;br /&gt;&lt;br /&gt;I lucked out with the first mob, &lt;a href="http://www.wowhead.com/?npc=18678"&gt;Fulgorge&lt;/a&gt;. Here's the deal: There is a targeting macro that you can use to expedite Bloody Rare. I've pasted the macro below for your convenience.&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;/tar Fulgor&lt;br /&gt;/tar Mekt&lt;br /&gt;/tar Vorak&lt;br /&gt;/tar Martic&lt;br /&gt;/tar Bog Lurk&lt;br /&gt;/tar Coilfang Em&lt;br /&gt;/tar Crip&lt;br /&gt;/tar Doomsay&lt;br /&gt;/tar Okrek&lt;br /&gt;/tar Goretoo&lt;br /&gt;/tar Voidhunt&lt;br /&gt;/tar Morc&lt;br /&gt;/tar Hema&lt;br /&gt;/tar Speak&lt;br /&gt;/tar Nura&lt;br /&gt;/tar Ever-Core&lt;br /&gt;/tar Chief Engineer L&lt;br /&gt;/tar Collid&lt;br /&gt;/tar Kraat&lt;br /&gt;/tar Ambassador J&lt;/pre&gt;&lt;br /&gt;Once you have this macro set up, add it to your hotkey bar, and as you fly over Outland, be sure to fly over the known locations of the rares, and spam away; if the rare is up, you will target it automatically, and can drop down for the kill.&lt;br /&gt;&lt;br /&gt;However, the trick with Fulgorge is that he is a Sand Worm, and like all sand worms in the game, travel the world underground, leaving only an animation of "rubble" where they will pop-up. You &lt;span style="font-weight: bold;"&gt;cannot&lt;/span&gt; target this rubble, so the targeting macro will not work on him. I had to take desperate measures for him, which my Mother used to refer to as &lt;a style="font-weight: bold;" href="http://en.wikipedia.org/wiki/Elbow_grease"&gt;elbow grease&lt;/a&gt;. I focused in on his &lt;a href="http://www.wowhead.com/?npc=18678"&gt;known pathing locations&lt;/a&gt;, and watched closely for the "red rubble" that many of the comments on WoWHead mentioned. The first red rubble animation that I actually noticed on my own was just west of Falcon Watch. Dropping down off my flying mount, I ran over to the rubble and engaged...and sure enough, up popped Fulgorge, knocking the first of the three rares out. As a side-note to this, I paid close attention to the other colored rubble in Hellfire Peninsula, some of which is white, and I can say with certainty that the red rubble is not the identifying trait of Fulgorge, as there are other sand worms that create red rubble. With Fulgorge, while it is most certainly red rubble, it is a much larger radius that what is typical for sand worms, so if you see one that is unusually large, it's probably a safe bet that Fulgorge lies beneath it.&lt;br /&gt;&lt;br /&gt;Nothing too special about the second kill, which was &lt;a href="http://www.wowhead.com/?npc=18679"&gt;Vorakem Doomspeaker&lt;/a&gt;; I caught him along The Legion Front, just south, towards the Alliance NPCs. This left only one rare mob on the list: &lt;a href="http://www.wowhead.com/?npc=18677"&gt;Mekthorg the Wild&lt;/a&gt;. By this time in the game, I was traveling back and forth between Hellfire Peninsula and Netherstorm, as I was grinding Zaxxis Insignias to work on &lt;a href="http://www.wowhead.com/?achievement=902"&gt;Chief Exalted Officer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I would do the work in 1 hour shifts: Fly across his spawn points, spamming the macro. If he wasn't up, I'd fly straight north to Netherstorm and farm Insignias for an hour. I'd then fly back to Hellfire and repeat the process. About a week ago, I recall one evening where I was flying back from Netherstorm to Hellfire and, for some reason I can't recollect, went AFK for about 15 minutes. When I came back, I flew over Mekthorg's spawn points...and found him...dead.&lt;br /&gt;&lt;br /&gt;Ugh. I hate when that happens.&lt;br /&gt;&lt;br /&gt;Just a few days ago, I was completing my usual lunchtime banking routine and had a few minutes to kill before heading back to work. There was enough time for a quick fly-over, so I flipped to my Death Knight and commenced with the macro spamming. To my great surprise, I caught him on the road, traveling north toward Hellfire Citadel. I dropped off my mount and engaged, and with a swift blow from &lt;a href="http://www.wowhead.com/?item=40343"&gt;Armageddon&lt;/a&gt;, so concluded my journey through Bloody Rare.&lt;br /&gt;&lt;br /&gt;Now...onto &lt;a href="http://www.wowhead.com/?achievement=2257"&gt;Frostbitten&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-5697828951572833620?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/5697828951572833620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=5697828951572833620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/5697828951572833620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/5697828951572833620'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2009/04/im-like-attention-whore-but-for.html' title='I&apos;m like an attention whore, but for achievements'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7qClZPJ5810/Sd9yiBhHmFI/AAAAAAAAACA/qh9uFs_NzMI/s72-c/bloodyrare.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-3617472047342119542</id><published>2009-03-14T09:43:00.003-06:00</published><updated>2009-03-14T10:45:39.663-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><title type='text'>Blowing The Immortal</title><content type='html'>With time running out on the release of the upcoming 3.1 patch for World of Warcraft, raiding guilds are continuing to stress-out over the &lt;a href="http://forums.worldofwarcraft.com/thread.html?topicId=15443184457&amp;amp;sid=1"&gt;changes to Glory of the Raider&lt;/a&gt;, namely in regards to the removal of the &lt;a href="http://www.wowhead.com/?spell=59976"&gt;Black&lt;/a&gt; and &lt;a href="http://www.wowhead.com/?item=44175"&gt;Plagued&lt;/a&gt; Proto-Drakes from the achievement. I am, unfortunately, not immune to said stress. With &lt;a href="http://www.wowarmory.com/character-achievements.xml?r=Deathwing&amp;amp;n=Mature"&gt;every other achievement in the meta already complete&lt;/a&gt;, I am at a loss as to how to the guild will pull this feat off.&lt;br /&gt;&lt;br /&gt;For us, the issue is not one of skill; the team of raiders I take to Naxxramas each week to work on &lt;a href="http://www.wowhead.com/?achievement=2186"&gt;The Immortal&lt;/a&gt; are the cream of the crop. They are exceptionally well-played, communicative, can adapt under pressure, and handle emergency situations with reasonably good reflexes. Sadly, what plagues us is what will plague a good many guilds attempting to knock this achievement out; those parts of the WoW game mechanics that lie outside our realm of control. People disconnecting in the middle of a fight, thanks to a poor ISP (or even worse, a good ISP...that just happens to have bad latency / packet loss that particular raid evening). People locking up, due to performance issues, either with the game, or with their own PC's limitations. Or a flat-out crash of the WoW client.&lt;br /&gt;&lt;br /&gt;These rare edge-conditions can be mitigated, as stated by many of the &lt;a href="http://www.stratfu.com/strats/TheImmortal"&gt;strategy guides&lt;/a&gt;, with such things as &lt;a href="http://www.wowhead.com/?spell=47788"&gt;Guardian Spirit&lt;/a&gt; or a &lt;a href="http://www.wowhead.com/?spell=642"&gt;Divine Shield&lt;/a&gt;/&lt;a href="http://www.wowhead.com/?spell=53530"&gt;Divine Guardian&lt;/a&gt; combo, but in all honesty, is this something should be mandatory? How realistic are these solutions? More importantly, for a game that has already levelled the playing field in the PvE deptartment, is there really a need to deprive the effort of guilds an adequate reward that judges your performance as a whole not by skill...but by the stability of your internet provider?&lt;br /&gt;&lt;br /&gt;We had a near-flawless run of Naxxramas last night, but sadly, fell victim to one of the issues listed above. One of our star players simply "locked up" on Thaddius during a polarity switch, and was unable (in only a few short seconds) to announce the problem over vent. By the time his computer caught up, it was too late; the polarities were crossed and &lt;a href="http://wowwebstats.com/igbatkwtf42r1?s=577312-623830&amp;amp;a=xa5b35&amp;amp;dth=584593"&gt;he took a blast of damage that caught the healers off-guard&lt;/a&gt;, and he fell over, dead...thus, wasting yet another week's worth of work.&lt;br /&gt;&lt;br /&gt;Don't get me wrong, I'm very much in support of The Immortal-like achievements, and feel they are great accomplishments to strive for. Where I take offense is when they are compiled into the meta-achievement for Glory of the Raider, which is supposed to be a composite of raid skill across the board, and rewards said-skill with a mount that is going to be inaccessible in a few short weeks. Some of those other prerequisites are not pushovers, either: Guildox reports the worldwide achievement rate for &lt;a href="http://www.guildox.com/go/g.asp?a=2054&amp;amp;r=&amp;amp;w="&gt;The Twilight Zone at 17%&lt;/a&gt;, and &lt;a href="http://www.guildox.com/go/g.asp?a=1875&amp;amp;r=&amp;amp;w="&gt;You Don't Have an Eternity at an abysmal 4%&lt;/a&gt;. However, both achievements allow you to retry, again, and again, finding weaknesses in your strategy, and adjusting appropriately until you find what works, and solve for x. With The Immortal, there is no re-strategizing, or re-thinking, there is no sending someone out to respec, or having someone craft some frost resistance gear on-the-fly. Trust me: for the guilds that have already completed everything else in the Glory achievement, it isn't about how to stay alive...&lt;br /&gt;&lt;br /&gt;...it's all about a roll of the dice to see if tonight is the night that nobody disconnects.&lt;br /&gt;&lt;br /&gt;The good news is that Blizzard concurs (for now) with this mentality, and &lt;a href="http://forums.worldofwarcraft.com/thread.html?topicId=15671259608&amp;amp;sid=1&amp;amp;pageNo=1#14"&gt;is removing The Immortal, Part Two from the Glory meta-achievement that will be attached to Ulduar&lt;/a&gt;. The bad news is they still feel that some mounts should maintain a degree of rarity, and for this, are adamant on changing the existing achievement.&lt;br /&gt;&lt;br /&gt;This, in my opinion, is sad way to treat the playerbase, especially for the amount of effort that many raiding guilds are putting into the achievement. Once 3.1 launches, and we happen to see the occaisional Black or Plagued Proto-Drake flying around, it will only serve to indicate the guild "lucked out"....and didn't have any players disconnect that evening.&lt;br /&gt;&lt;br /&gt;If you have a story about how your guild blew The Immortal, I'd like to hear about it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-3617472047342119542?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/3617472047342119542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=3617472047342119542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/3617472047342119542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/3617472047342119542'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2009/03/blowing-immortal.html' title='Blowing The Immortal'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-1587554052552254658</id><published>2009-03-11T13:39:00.004-06:00</published><updated>2009-03-11T14:17:43.517-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><title type='text'>Why Aren't Sources Cited Anymore?</title><content type='html'>You know, I have to comment on a trend I've been seeing recently. Now that I have subscribed to various blog aggregators, I'm being exposed to a higher volume of developers (and their work) than I would normally. As a result of this, I'm surprised to find developers that are calling other people's work their own, either directly or implicitly.&lt;br /&gt;&lt;br /&gt;Case in point: I just found a blog post from a CF developer who created an online presentation discussing design patterns, and how to implement them. I paged through the presentation, which I found contained examples that bore a striking resemblance to the Decorator Pattern chapter in &lt;a href="http://oreilly.com/catalog/9780596007126/"&gt;Head First Design Patterns&lt;/a&gt;. The book's first example? A Duck domain object. Surprisingly, the same in the presentation. The second example: A Coffee domain object, oddly enough, second in the presentation. The textbook uses a Pizza domain object as the third example. Take a guess at what the third example in the presentation is.&lt;br /&gt;&lt;br /&gt;I'm more inclined to let it slide when someone adapts what was written in the text more closely to the language they are working with, which in turn acts as an instructional tool for junior developers of that language. As it turns out, this is what another CF developer did (and a fairly well-recognized one, to boot), and their "article" remains online at the &lt;a href="http://coldfusion.sys-con.com/"&gt;ColdFusion Developer's Journal&lt;/a&gt; site to this day. I appreciate the work that went into it, and I'm glad that it served as a CF-based decorator lesson, but c'mon...was it you "really standing in line at your local coffee shop" that inspired your Coffee-themed decorator article? Or was it more likely that you also picked up a copy of &lt;a href="http://oreilly.com/catalog/9780596007126/"&gt;Head First Design Patterns&lt;/a&gt; (which, coincidentally, was published and hit the shelves &lt;span style="font-weight: bold;"&gt;four months&lt;/span&gt; before your article). Pretty surprising coincidence, considering the examples of "options" and "syrups" used in both.&lt;br /&gt;&lt;br /&gt;I can almost hear the naysayers now: Cut these people a break. You can only customize coffee so many ways. It isn't surprising at all that these programming examples bear similar attributes.&lt;br /&gt;&lt;br /&gt;That sound you hear is me rolling my eyes.&lt;br /&gt;&lt;br /&gt;Why is it &lt;span style="font-style: italic;"&gt;so&lt;/span&gt; &lt;span style="font-style: italic;"&gt;hard&lt;/span&gt; for people to give credit to the material that taught them in the first place? Is it &lt;span style="font-style: italic;"&gt;that important&lt;/span&gt; that you have to try to have your knowledge stand on its own? Does it make you more credible when you don't cite your sources, and thus, act like you knew this information all along? Wouldn't it make sense that, once your article was found to be a near-copy of something already published, you would have &lt;span style="font-style: italic;"&gt;less&lt;/span&gt; credibility than before?&lt;br /&gt;&lt;br /&gt;I feel bad for the original authors, honestly, whose work it was is now being billed as someone else's. It's my opinion that, if you want to use someone else's work, you should either come up with your own specific examples that apply the same knowledge, or at least make a reference to the information that taught you in the first place.&lt;br /&gt;&lt;br /&gt;The presentation I mentioned at the start of this post ends with a classic "Any Questions?" slide. Yeah, I have a question:&lt;br /&gt;&lt;br /&gt;What part of the presentation were you planning on citing the sources pulled from that O'Reilly text?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-1587554052552254658?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/1587554052552254658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=1587554052552254658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/1587554052552254658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/1587554052552254658'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2009/03/why-arent-sources-cited-anymore.html' title='Why Aren&apos;t Sources Cited Anymore?'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-2128755687499807232</id><published>2009-02-14T21:47:00.004-07:00</published><updated>2009-02-14T22:24:19.088-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wow lemmings'/><category scheme='http://www.blogger.com/atom/ns#' term='guild recruitment'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='analytics'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><title type='text'>Guild Recruitment Statistics</title><content type='html'>Now that &lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt; has been active for over a year, I have the luxury of being able to take a peek into the raw data that's produced as a result of guild recruitment needs. I thought I would share some of the more interesting numbers with you. This data is indeed raw, and no effort has been made to normalize it, so keep that in mind while you read on.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt; launched on Jan 31, 2008, and growth occurred gradually over that time while I spread the word. Additionally, the site experienced some spikes after the &lt;a href="http://www.wowinsider.com/2008/07/03/dive-right-into-recruiting-with-wow-lemmings/"&gt;WoW Insider interview&lt;/a&gt;, as well as a round of PR news blasts following my update to &lt;a href="http://www.wowlemmings.com/kathune.html"&gt;Kathune&lt;/a&gt;. Having said that, here is the data over the course of a year (Jan 31st, 2008 - Jan 31st, 2009)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Summary&lt;/span&gt;&lt;br /&gt;25,943 unique visitors.&lt;br /&gt;63,573 visits.&lt;br /&gt;174,705 pageviews.&lt;br /&gt;~173 visits / day.&lt;br /&gt;~4.26 min. / visit.&lt;br /&gt;&lt;br /&gt;Of the 174,705 pageviews:&lt;br /&gt;47,126 targeted PvE searches&lt;br /&gt;32,145 targeted PvP searches&lt;br /&gt;&lt;br /&gt;87,350 targeted Alliance searches&lt;br /&gt;63,197 targeted Horde searches&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Class Breakdown&lt;/span&gt;&lt;br /&gt;Shaman: 13,514 searches&lt;br /&gt;Priest: 11,060 searches&lt;br /&gt;Druid: 9,444 searches&lt;br /&gt;Paladin: 8,636 searches&lt;br /&gt;Warlock: 5,374 searches&lt;br /&gt;Mage: 4,393 searches&lt;br /&gt;Hunter: 4,198 searches&lt;br /&gt;Warrior: 3,852 searches&lt;br /&gt;Rogue: 2,572 searches&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Top 5 Faction/Class Combinations&lt;br /&gt;&lt;br /&gt;Alliance&lt;/span&gt;&lt;br /&gt;1. Alliance Shaman: 8,253&lt;br /&gt;2. Alliance Priest: 6,592&lt;br /&gt;3. Alliance Druid: 5,338&lt;br /&gt;4. Alliance Paladin: 5,170&lt;br /&gt;5. Alliance Warlock: 3,363&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Horde&lt;/span&gt;&lt;br /&gt;1. Horde Shaman: 4,642&lt;br /&gt;2. Horde Priest: 3,989&lt;br /&gt;3. Horde Druid: 3,694&lt;br /&gt;4. Horde Paladin: 3,160&lt;br /&gt;5. Horde Hunter: 1,906&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sources&lt;/span&gt;&lt;br /&gt;40% Referral&lt;br /&gt;37.7% Direct&lt;br /&gt;22.3% Search Engine&lt;br /&gt;&lt;br /&gt;The top 3 referrers are &lt;a href="http://www.elitistjerks.com/"&gt;ElitistJerks.com&lt;/a&gt;, &lt;a href="http://www.wowinsider.com/"&gt;WoWInsider.com&lt;/a&gt;, and &lt;a href="http://forums.worldofwarcraft.com/"&gt;World of Warcraft Forums&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Top 5 countries visiting are the USA, Canada, the UK, the Netherlands, and Australia.&lt;br /&gt;&lt;br /&gt;Browser breakdown is 63.44% Firefox, 30.13% Internet Explorer.&lt;br /&gt;&lt;br /&gt;Visitors are on Windows 92% of the time, Mac 6.89% of the time.&lt;br /&gt;&lt;br /&gt;If there is anything in particular I missed here that you are interested in, feel free to &lt;a href="mailto:shawn.a.holmes@gmail.com"&gt;drop me a line&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-2128755687499807232?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/2128755687499807232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=2128755687499807232' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/2128755687499807232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/2128755687499807232'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2009/02/guild-recruitment-statistics.html' title='Guild Recruitment Statistics'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-4236408841487281643</id><published>2009-02-04T09:28:00.004-07:00</published><updated>2009-02-04T09:50:49.803-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deathwing'/><category scheme='http://www.blogger.com/atom/ns#' term='guild recruitment'/><category scheme='http://www.blogger.com/atom/ns#' term='pve'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><category scheme='http://www.blogger.com/atom/ns#' term='mage'/><category scheme='http://www.blogger.com/atom/ns#' term='hunter'/><title type='text'>A Momentary Lapse of Caster DPS</title><content type='html'>As we approach the 3-month mark, post WotLK launch, I'm still suffering from a lack of solid Mages &amp;amp; Hunters. My initial hunch would have leaned more towards healers in general, and for a short time we had a shortage in that dept. as well. Recruitment notwithstanding, the deficiency remains a constant burden.&lt;br /&gt;&lt;br /&gt;What's most surprising is that these are two classes that perform extraordinarly well (excluding the recent nerf to Hunters which is due to be reversed), so one might wonder why more players aren't taking advantage of the class.&lt;br /&gt;&lt;br /&gt;Now, this may simply be due to my skewed server. Deathwing has classically suffered in the PvE dept., horde-side, when compared to other "available at launch" servers; our sister server Kel'thuzad alone often had 2-3 times the number of raiding guilds mowing through content, and they are sure to remind us of this everytime we enter a battleground together. The KT groups are, in almost every case, well-organized, quick at issuing orders (and following them) and BGs are usually flattened swiftly.&lt;br /&gt;&lt;br /&gt;Meanwhile, Deathwing players are a disjointed bunch. There's no shortage of whining and 'lolspeak' in general chat, and everywhere I turn, someone is trying to create yet-another-pvp-guild. Unsurprising, as we are a PvP server, but raid content is still there to defeat. Applications did dry up for a short time over the holidays, but they are ramping up again, so hopefully I'll have a few options soon.&lt;br /&gt;&lt;br /&gt;Additionally, my Hunter officer stepped down this week, which puts more of the burden on the remaining officer core. However, I'd rather have management be honest and forthcoming with how they feel about their responsibilities, rather than stay silent and do everything half-assed. This may give some other players an opportunity to rise to the occaision and make an attempt to fill the role.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-4236408841487281643?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/4236408841487281643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=4236408841487281643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/4236408841487281643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/4236408841487281643'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2009/02/momentary-lapse-of-caster-dps.html' title='A Momentary Lapse of Caster DPS'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-7313447174663413613</id><published>2009-01-30T10:38:00.003-07:00</published><updated>2009-01-30T11:15:15.846-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='fusebox'/><category scheme='http://www.blogger.com/atom/ns#' term='coldspring'/><title type='text'>Passed By for cf.Objective()</title><content type='html'>Looks like the speakers have been chosen for &lt;a href="http://www.cfobjective.com/index.cfm"&gt;cf.Objective()&lt;/a&gt; this year, sadly, my presentation on &lt;span style="font-weight: bold;"&gt;Real-World Object-Oriented CF development&lt;/span&gt; was passed on. The &lt;a href="http://www.cfobjective.com/speakers.cfm"&gt;speaker list&lt;/a&gt; is a very solid group of well-known faces in the ColdFusion community, so I feel very strongly that it will be an excellent group of sessions, and any CF developer in their right mind looking to grow in the field should consider attending.&lt;br /&gt;&lt;br /&gt;My hope is that there are at least a few concrete sessions that are given (the session list hasn't yet been made public), as I am classically not a huge fan of abstract demonstrations that gloss over buzzwords in a rapid-fire PowerPoint presentation, while failing to show you actual code-in-action. Personally, I learn best by example, and that was how my particular presentation was tailored, so if there is a good selection of example-based sessions this year, I have no problem standing down for the big names.&lt;br /&gt;&lt;br /&gt;I was going to submit the session on my &lt;a href="http://www.wowlemmings.com/kathune.html"&gt;Kathune spidering engine&lt;/a&gt; to &lt;a href="http://www.cfunited.com/"&gt;CFUNITED&lt;/a&gt;, but I believe I missed the deadline on that. Again, not too worried, another strong list of presenters, and I am really only making the effort to make sure there is an adequate contribution to the CF community, which it sounds like is as healthy and as strong as ever, so &lt;a href="http://www.iscoldfusiondead.com/"&gt;don't believe the rumors&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;In other news, I am taking interest in Haskell's latest post regarding &lt;a href="http://cfrant.blogspot.com/2009/01/fusebox-enhancement-type-converters.html"&gt;TypeConverters being implemented in the next version of FuseBox&lt;/a&gt;, which has some incredible potential when combined with ColdSpring, and I am starting to brainstorm a few ideas about how this could further automate bean instatiation. Additionally, I'm investigating the development of a new tool that piggy-backs on top of &lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt; using the CF Event Gateway and Flex...more on that to come.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-7313447174663413613?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/7313447174663413613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=7313447174663413613' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/7313447174663413613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/7313447174663413613'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2009/01/passed-by-for-cfobjective.html' title='Passed By for cf.Objective()'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-6067183170891152080</id><published>2008-12-17T09:35:00.004-07:00</published><updated>2008-12-17T10:30:27.342-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wotlk'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><title type='text'>Observations from a Casual Raiding Guild Leader</title><content type='html'>We're a month into &lt;a href="http://www.worldofwarcraft.com/"&gt;Wrath of the Lich King&lt;/a&gt; and it has been a real eye-opener. Wrath effectively flipped WoW over onto its back and jabbed its soft underbelly until the game cried 'Uncle'. Where once there was a game where a group quest literally required a group (and sometimes more, lest we forget &lt;a href="http://www.wowhead.com/?quest=6148"&gt;The Scarlet Oracle, Demetria&lt;/a&gt;), and players wearing purple items were as rare as an EverQuest player with an actual &lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;life&lt;/span&gt;&lt;/span&gt;, it is now a completely different story. Death Knights consistently solo group content, and the first end-game raids have ridiculous amounts of room for error. Our guild, which previously progressed as far as clearing &lt;a href="http://www.wowhead.com/?zone=3959"&gt;Black Temple&lt;/a&gt;, walked into &lt;a href="http://www.wowhead.com/?zone=3456"&gt;Naxxramas&lt;/a&gt; last Friday and tore the entire instance apart. It was exciting to be able to hand out so much loot and see content so quickly, but it was very much a shock to the system.&lt;br /&gt;&lt;br /&gt;As a Guild Leader that manages a casual raiding guild, I've been forced into the position of having to recruit aggressively and have high expectations of players that step foot into an instance. Perhaps, that gave us more of an edge when the time came to do this more 'relaxed PvE' thing that Wrath has thrown at us. Whatever the case may be, I think this was the right decision for &lt;a href="http://www.blizzard.com/"&gt;Blizzard&lt;/a&gt;. Entry-level raiding in &lt;a href="http://www.worldofwarcraft.com/burningcrusade/"&gt;TBC&lt;/a&gt; was a nightmare, and although many guilds with the right mindset and mentality (regardless of whether they were hardcore or not) eventually got through things like &lt;a href="http://www.wowhead.com/?npc=19044"&gt;Gruul&lt;/a&gt;, &lt;a href="http://www.wowhead.com/?npc=17257"&gt;Magtheridon&lt;/a&gt;, and carved their way through &lt;a href="http://www.wowhead.com/?zone=3607"&gt;Serpentshrine Cavern&lt;/a&gt; and &lt;a href="http://www.wowhead.com/?zone=3842"&gt;Tempest Keep&lt;/a&gt;, it was a long and painful process.&lt;br /&gt;&lt;br /&gt;I'm still a firm believer that Magtheridon, in its original implementation, was &lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;far too complex&lt;/span&gt;&lt;/span&gt; of a raid mechanic to introduce at that level of raiding (which was, essentially, the start of raiding in TBC). Hell, I still see players &lt;span style="font-weight:bold;color:#FF00FF"&gt;epic failing&lt;/span&gt; on a daily basis to successfully right-click a Warlock's summoning portal, without accidentally moving, double-clicking it, or doing something else stupid. And trust me, I'm always the first one to remind them in vent, "Nice work on the summon attempt. If this had been Magtheridon, we would all be dead now..."&lt;br /&gt;&lt;br /&gt;Beyond Gruul &amp; Magtheridon, it only got worse. Our guild actually had the luxury of not setting foot in SSC until after &lt;a href="http://forums.worldofwarcraft.com/thread.html?topicId=94849717"&gt;the dreaded 45 minute trash respawns were hotfixed&lt;/a&gt;, never mind the fact that that the "keying" requirements to grant players the actual ability to set foot in an instance were (at times) &lt;a href="http://www.tschopp.net/ted/diagram.jpg"&gt;painful and unnecessary&lt;/a&gt;...and only served to frustrate guilds with large pools of players that raided casually. Even the requirements of being Revered with various factions in 2.0 before being able to run Heroics was difficult (and not alt-friendly).&lt;br /&gt;&lt;br /&gt;Of course, all of these things are gone in Wrath. No keying (with the exception of &lt;a href="http://www.wowhead.com/?quest=13372"&gt;The Eye of Eternity&lt;/a&gt;). Instant access to heroics at 80. The reputation you gain is decided by you (via &lt;a href="http://www.wowwiki.com/Championing"&gt;Championing&lt;/a&gt; with a custom tabard), not by the instance you're having to run. And while the mechanics of certain raid bosses may be considered "complex" (that's debatable), there is &lt;span style="font-weight:bold;"&gt;so much room for error&lt;/span&gt; that you can still make many mistakes and win. I have to admit I was pretty embarrassed at &lt;a href="http://wowwebstats.com/odwdzm6r5dtg3?s=337442-398151&amp;a=x4897c7a"&gt;how much frost damage I took from Sapphiron's Chill&lt;/a&gt; (and the raid in general) when it is pretty obvious how to move out of it...yet we still slew the Frost Wyrm.&lt;br /&gt;&lt;br /&gt;I am happy with Wrath and having a blast...I just hope that this entry-level raiding isn't "dumbing down" my guildies, so that they start pulling what I did on Sapphiron, and simply "healing through it". Xi, the notorious raid leader of &lt;a href="http://www.dtguilds.com/index.php"&gt;Death &amp; Taxes&lt;/a&gt; had a good quote back in the day: 99% of all the raid mechanics boil down to these six words: &lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Move out of the fucking fire&lt;/span&gt;&lt;/span&gt;. If your guild can't grasp this basic tactic, you (and your guild) fail.&lt;br /&gt;&lt;br /&gt;Wrath has proven otherwise...thus far. I hope we wake up and get moving out of the fire again, otherwise &lt;a href="http://www.wowwiki.com/Ulduar_Raid"&gt;Ulduar&lt;/a&gt; and beyond may slap us around like &lt;a href="http://www.youtube.com/watch?v=f6Tnfk12Dok"&gt;Biff Tannen&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-6067183170891152080?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/6067183170891152080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=6067183170891152080' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/6067183170891152080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/6067183170891152080'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/12/observations-from-casual-raiding-guild.html' title='Observations from a Casual Raiding Guild Leader'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-1281539754288603435</id><published>2008-11-24T12:13:00.003-07:00</published><updated>2008-11-24T12:18:47.384-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='descendants of draenor'/><category scheme='http://www.blogger.com/atom/ns#' term='black war bear'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><category scheme='http://www.blogger.com/atom/ns#' term='achievement'/><title type='text'>Leaders of the Alliance Fall</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7qClZPJ5810/SSr8_1HHpkI/AAAAAAAAABs/MsJeoW4-eyY/s1600-h/bears.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://3.bp.blogspot.com/_7qClZPJ5810/SSr8_1HHpkI/AAAAAAAAABs/MsJeoW4-eyY/s320/bears.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5272304487309485634" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Just want to send out another round of congratulations to &lt;a href="http://www.descendantsofdraenor.com/"&gt;my guild&lt;/a&gt; for felling all four Alliance leaders this weekend, to collect up their &lt;a href="http://www.wowhead.com/?achievement=619"&gt;Black War Bears&lt;/a&gt; as part of the &lt;a href="http://www.wowhead.com/?achievement=619"&gt;Achievement&lt;/a&gt;. Alas, I could not participate in the event as I was out running errands at the time. I expect we'll be returning as more of the guild wants the mount, so hopefully it won't be long before the Alliance feels our wrath again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-1281539754288603435?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/1281539754288603435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=1281539754288603435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/1281539754288603435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/1281539754288603435'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/11/leaders-of-alliance-fall.html' title='Leaders of the Alliance Fall'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7qClZPJ5810/SSr8_1HHpkI/AAAAAAAAABs/MsJeoW4-eyY/s72-c/bears.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-2626951780318738667</id><published>2008-11-20T11:34:00.000-07:00</published><updated>2008-11-20T11:35:43.112-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='the ring'/><category scheme='http://www.blogger.com/atom/ns#' term='robot chicken'/><category scheme='http://www.blogger.com/atom/ns#' term='video dating'/><category scheme='http://www.blogger.com/atom/ns#' term='adult swim'/><title type='text'>A Ring Around Video Dating</title><content type='html'>&lt;style&gt;div#main{overflow:visible;}&lt;/style&gt;&lt;div style="background-color: #d53000; text-align:center;vertical-align: middle;width:425px;z-index:500;overflow:visible"&gt;&lt;a href="http://www.adultswim.com/video/index.html" style="display:block;"&gt;&lt;img src="http://www.adultswim.com/video/embeded_header.jpg" alt="" width="425" height="30" border="0"&gt;&lt;/a&gt;&lt;object width="425" height="350" type="application/x-shockwave-flash" data="http://www.adultswim.com/video/vplayer/index.html"&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="movie" value="http://www.adultswim.com/video/vplayer/index.html"/&gt;&lt;param name="FlashVars" value="id=9d0c700838018d91f5a9601b01220d1f" /&gt;&lt;embed src="http://www.adultswim.com/video/vplayer/index.html" type="application/x-shockwave-flash" FlashVars="id=9d0c700838018d91f5a9601b01220d1f" allowFullScreen="true" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-2626951780318738667?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/2626951780318738667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=2626951780318738667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/2626951780318738667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/2626951780318738667'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/11/ring-around-video-dating.html' title='A Ring Around Video Dating'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-3341520892254774955</id><published>2008-11-13T14:04:00.003-07:00</published><updated>2008-11-13T14:19:50.093-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wow lemmings'/><category scheme='http://www.blogger.com/atom/ns#' term='wotlk'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><title type='text'>Son of a Lich! - Wrath Arrives</title><content type='html'>No time to talk! Must level Death Knight! Congratulations to all my WoW brethren for successfully maintaining sanity. &lt;a href="http://www.worldofwarcraft.com/"&gt;Wrath&lt;/a&gt; is now upon us. If you are collecting stats, I'll be leveling with a &lt;a href="http://www.wowhead.com/?talent=jbxrq0cZZbhbhxfogcRMckut"&gt;20/0/51&lt;/a&gt; build on my DK, so you can add me to the list of Unholy fanatics. Not much to report on the &lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt; front, other than it is actively aware of the two new realms Fizzcrank and Grizzly Hills.&lt;br /&gt;&lt;br /&gt;See you in Northrend!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-3341520892254774955?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/3341520892254774955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=3341520892254774955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/3341520892254774955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/3341520892254774955'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/11/son-of-lich-wrath-arrives.html' title='Son of a Lich! - Wrath Arrives'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-4483579540754634358</id><published>2008-11-06T15:53:00.003-07:00</published><updated>2008-11-06T16:13:44.902-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='age of conan'/><category scheme='http://www.blogger.com/atom/ns#' term='guild recruitment'/><category scheme='http://www.blogger.com/atom/ns#' term='gquit'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><category scheme='http://www.blogger.com/atom/ns#' term='warhammer'/><title type='text'>Welcome Back, Traitors</title><content type='html'>Filing this one under: "I Told You So". With great shock and awe, &lt;a href="http://www.blizzard.com/"&gt;Blizzard&lt;/a&gt; has revealed that players who have left &lt;a href="http://www.worldofwarcraft.com/"&gt;World of Warcraft&lt;/a&gt; to join the competition (namely &lt;a href="http://ageofconan.com/"&gt;Age of Conan&lt;/a&gt; and &lt;a href="http://www.warhammeronline.com/"&gt;Warhammer&lt;/a&gt;) have &lt;a href="http://www.edge-online.com/news/blizzard-unfazed-conan-warhammer"&gt;returned in great capacity&lt;/a&gt;. Huh! What a surprise!&lt;br /&gt;&lt;br /&gt;It &lt;span style="font-weight: bold;"&gt;is&lt;/span&gt; a game, after all, and people do get bored. I've come to accept /gquits as a fact of life. I, however, &lt;span style="font-weight: bold;"&gt;am&lt;/span&gt; irritated when I discover that the reason they left was for the bigger, better game (as opposed to, say...&lt;a href="http://www.wowdetox.com/"&gt;getting a real life&lt;/a&gt;) that turned out to be not-so-bigger-and-better. It was worth it to at least take a break and check the other game out, though, right? Probably true, but was it also worth to drive a stake into our raid progression at the same time, and single-handedly give your fellow raiding teammates the middle finger? Ahh, what do you care, you're not in the guild anymore, right?&lt;br /&gt;&lt;br /&gt;...Oh wait, you're&lt;span style="font-weight: bold;"&gt; totally trying to get back into the guild now&lt;/span&gt;. &lt;span style="font-style: italic;"&gt;Perfect.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hopefully, the second time around, some of these players will &lt;a href="http://snarkcraft.wordpress.com/2008/11/06/seri-sez-the-ethical-gquit/"&gt;take some advice from Seri on gquitting&lt;/a&gt;, and display some compassion and empathy toward their guild leaders. In case you hadn't heard, it's &lt;span style="font-style: italic;"&gt;kind of&lt;/span&gt; a lot of work. Recruitment &lt;span style="font-weight: bold; font-style: italic;"&gt;alone&lt;/span&gt; &lt;a href="http://www.bump.net/2007/08/what-it-like-being-guildmaster-of-wow.html"&gt;is a full-time job&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-4483579540754634358?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/4483579540754634358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=4483579540754634358' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/4483579540754634358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/4483579540754634358'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/11/welcome-back-traitors.html' title='Welcome Back, Traitors'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-5654411338269427230</id><published>2008-11-03T20:31:00.003-07:00</published><updated>2008-11-03T20:49:36.945-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wow lemmings'/><category scheme='http://www.blogger.com/atom/ns#' term='wotlk'/><category scheme='http://www.blogger.com/atom/ns#' term='guild recruitment'/><category scheme='http://www.blogger.com/atom/ns#' term='kathune'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><title type='text'>Kathune Extends its Tentacles</title><content type='html'>I'm happy to announce that &lt;a href="http://www.wowlemmings.com/kathune.html" target="_blank"&gt;Kathune&lt;/a&gt; 2.0 is officially live, and its tentacles are reaching out for guild recruits. To recap, Kathune is the spidering (tentacling?) engine that powers &lt;a href="http://www.wowlemmings.com/" target="_blank"&gt;WoW Lemmings&lt;/a&gt;. Up until now, Kathune only had one source of information to feed off of: the Blizzard US and Europe (English) forums. However, as of 2.0, I'm proud to say that Kathune's tentacles now reach further across many WoW fansites. As of this writing, Kathune now parses and aggregates data from the following sites:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.blizzard.com/" target="_blank"&gt;Blizzard&lt;/a&gt; (US &amp;amp; Europe)&lt;br /&gt;&lt;a href="http://www.shadowpriest.com/" target="_blank"&gt;Shadowpriest.com&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.tankspot.com/" target="_blank"&gt;TankSpot&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.mmo-champion.com/" target="_blank"&gt;MMO-Champion&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.wowhead.com/" target="_blank"&gt;Wowhead&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bigredkitty.net/" target="_blank"&gt;BigRedKitty&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.worldofraids.com/" target="_blank"&gt;World of Raids&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.lookingforguild.net/" target="_blank"&gt;LookingForGuild.net&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.deathknight.info/" target="_blank"&gt;DeathKnight.info&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.lightnatured.com/" target="_blank"&gt;LightNatured.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you know of any other WoW fan sites that support guild recruitment forums and could be a potential candidate to add to Kathune's list, please contact me! And as always, spread the word to your guild leader and/or officers about WoW Lemmings. I hope that it saves you some time as you ramp up recruitment for &lt;a href="http://www.worldofwarcraft.com/wrath/"&gt;Wrath of the Lich King&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-5654411338269427230?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/5654411338269427230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=5654411338269427230' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/5654411338269427230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/5654411338269427230'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/11/kathune-extends-its-tentacles.html' title='Kathune Extends its Tentacles'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-3387517346067944440</id><published>2008-10-31T09:03:00.001-06:00</published><updated>2008-10-31T09:08:07.901-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='evil dead ii'/><category scheme='http://www.blogger.com/atom/ns#' term='bruce campbell'/><category scheme='http://www.blogger.com/atom/ns#' term='hallowe&apos;en'/><category scheme='http://www.blogger.com/atom/ns#' term='ash'/><category scheme='http://www.blogger.com/atom/ns#' term='army of darkness'/><title type='text'>I'll Swallow Your Soul!</title><content type='html'>Happy Hallowe'en!&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/CgkA4QXNv_o&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/CgkA4QXNv_o&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-3387517346067944440?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/3387517346067944440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=3387517346067944440' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/3387517346067944440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/3387517346067944440'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/10/ill-swallow-your-soul.html' title='I&apos;ll Swallow Your Soul!'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-1140197096266758566</id><published>2008-10-30T11:20:00.004-06:00</published><updated>2008-10-30T11:30:37.319-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='customer service'/><category scheme='http://www.blogger.com/atom/ns#' term='qdoba'/><category scheme='http://www.blogger.com/atom/ns#' term='chipotle'/><title type='text'>Chipotle Needs a Lot of Work</title><content type='html'>Yes, I'm talking about the place where you get &lt;a href="http://www.chipotle.com/"&gt;burritos&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A fellow colleague informed me last week that he had it on good authority from folks working at the restaurant that there was to be a free burrito day on October 24th. I set up a reminder for myself, because hey...who doesn't like a free burrito?&lt;br /&gt;&lt;br /&gt;When the 24th rolled around, I gave them a quick buzz on the phone just before driving over to check on the status of the lineup.&lt;br /&gt;&lt;br /&gt;"Oh, yeah...Free Burrito Day isn't until the 30th..."&lt;br /&gt;&lt;br /&gt;Fine. Changed my calendar reminder to the 30th.&lt;br /&gt;&lt;br /&gt;Hey, that's today!&lt;br /&gt;&lt;br /&gt;I just got off the phone with them a few minutes ago, to (once again) check to see what the status of the lineup is. Guess what they told me?&lt;br /&gt;&lt;br /&gt;"Free Burrito Day is tomorrow. After 6:00pm".&lt;br /&gt;&lt;br /&gt;You know what? I think I'll be eating at &lt;a href="http://www.qdoba.com/"&gt;Qdoba&lt;/a&gt;. Thanks for nothing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-1140197096266758566?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/1140197096266758566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=1140197096266758566' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/1140197096266758566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/1140197096266758566'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/10/chipotle-needs-lot-of-work.html' title='Chipotle Needs a Lot of Work'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-4837834193654999577</id><published>2008-10-29T14:11:00.003-06:00</published><updated>2008-10-29T14:18:26.475-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql injection attack'/><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='cachedafter'/><category scheme='http://www.blogger.com/atom/ns#' term='cfquery'/><category scheme='http://www.blogger.com/atom/ns#' term='cachedwithin'/><category scheme='http://www.blogger.com/atom/ns#' term='cache'/><category scheme='http://www.blogger.com/atom/ns#' term='cfqueryparam'/><title type='text'>Bet You Didn't Know, But...</title><content type='html'>...you can now use &amp;lt;cfqueryparam&amp;gt; in the body of a cached &amp;lt;cfquery&amp;gt;; one that implements either the &lt;span style="font-weight: bold;"&gt;cachedWithin&lt;/span&gt; or &lt;span style="font-weight: bold;"&gt;cachedAfter&lt;/span&gt; attributes. This is new in ColdFusion 8. No more SQL injection attack excuses! &lt;a href="http://www.youtube.com/watch?v=u6ALySsPXt0"&gt;Do it now!!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-4837834193654999577?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/4837834193654999577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=4837834193654999577' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/4837834193654999577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/4837834193654999577'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/10/bet-you-didnt-know-but.html' title='Bet You Didn&apos;t Know, But...'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-7560023184102921073</id><published>2008-10-27T15:41:00.004-06:00</published><updated>2008-10-27T15:50:40.915-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='fusebox'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='cancer'/><category scheme='http://www.blogger.com/atom/ns#' term='coldspring'/><title type='text'>CF Site Launch Announcement</title><content type='html'>I'm proud to announce that my company had its second successful site launch over the weekend. When you get a moment, please take a look at &lt;a href="http://www.curetoday.com/"&gt;CureToday.com&lt;/a&gt;, an online version of the &lt;a href="http://www.curetoday.com/index.cfm/fuseaction/magazine.show/id/15"&gt;CURE magazine&lt;/a&gt;, which focuses on information relating to the diagnosis and treatment of cancer. I especially encourage you to send this to any friends and family members who are suffering with the disease.&lt;br /&gt;&lt;br /&gt;From a technological standpoint, it was built on top of &lt;a href="http://www.adobe.com/coldfusion"&gt;ColdFusion 8&lt;/a&gt; and uses the &lt;a href="http://www.fusebox.org/"&gt;Fusebox5.5&lt;/a&gt; framework, along with &lt;a href="http://www.coldspringframework.org/"&gt;ColdSpring&lt;/a&gt;, and uses &lt;a href="http://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt; for the back-end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-7560023184102921073?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/7560023184102921073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=7560023184102921073' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/7560023184102921073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/7560023184102921073'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/10/cf-site-launch-announcement.html' title='CF Site Launch Announcement'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-4515008713243241684</id><published>2008-10-16T13:33:00.005-06:00</published><updated>2008-10-22T16:20:51.106-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='rematch'/><category scheme='http://www.blogger.com/atom/ns#' term='flesch reading ease'/><category scheme='http://www.blogger.com/atom/ns#' term='regular expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='kathune'/><category scheme='http://www.blogger.com/atom/ns#' term='gunning-fog'/><title type='text'>Singing the Praises of REMatch in CF8</title><content type='html'>I'm not much of a reader. &lt;span style="font-style: italic;"&gt;Per se&lt;/span&gt;. So I am often one of those CF developers that discovers new, hidden functionality long after it's been made public (my &lt;a href="http://bakuenryu.blogspot.com/2008/09/cf-and-programmatically-emptying-query.html"&gt;earlier blog post regarding functionality added in CF5&lt;/a&gt; should attest to that). I am therefore ecstatic about my most recent discovery in CF8, &lt;a href="http://livedocs.adobe.com/coldfusion/8/htmldocs/functions_m-r_27.html#293110"&gt;REMatch&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As you might have already guessed, REMatch is another function that allows us to put to work the awesome power of &lt;a href="http://en.wikipedia.org/wiki/Regular_expressions"&gt;regular expressions&lt;/a&gt;. What is incredibly cool about REMatch is the fact that it can significantly improve the speed at which you extract repetitive data out of a given block of text. This is particularly useful for people writing spiders or robots.&lt;br /&gt;&lt;br /&gt;I stumbled across REMatch when I was doing some research for &lt;a href="http://www.wowlemmings.com/kathune.html"&gt;Kathune&lt;/a&gt; over the weekend, and was investigating various algorithms that calculate readability, such as &lt;a href="http://www.readabilityformulas.com/gunning-fog-readability-formula.php"&gt;Gunning-Fog&lt;/a&gt; and the &lt;a href="http://www.readabilityformulas.com/flesch-reading-ease-readability-formula.php"&gt;Flesch Reading Ease&lt;/a&gt; scale. That research then lead me to &lt;a href="http://osdir.com/ml/lang.ruby.general/2002-08/msg00353.html"&gt;this post from a Ruby developer&lt;/a&gt; asking his fellow colleagues how to tighten up his syllableCounter function. I have yet to explore Ruby in any capacity, but I glanced at the code in an attempt to get a general understanding of how he was calcuating the number of syllables in a word.&lt;br /&gt;&lt;br /&gt;The syntax seemed pretty straightforward, and I was able to get the jist right away, but one function in particular I wasn't clear on:&lt;span style="font-weight: bold;"&gt; scan()&lt;/span&gt;. I noticed that he was passing a regular expression to it, and confirmed that it returned an array of matches after checking the &lt;a href="http://www.ruby-doc.org/core/classes/String.html#M000827"&gt;Ruby documentation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;How cool would that be to have in CF? Really cool, I soon discovered! Once I found REMatch in the documentation and rewrote the parsing functionality of Kathune to take advantage of it, my processing time went down from what was normally between 400 and 600ms to a whopping &lt;span style="font-weight: bold; font-style: italic;"&gt;15ms&lt;/span&gt;. I couldn't be more pleased. If you are a CF developer, work with regular expressions, and are parsing repetitive data, I strongly recommend you investigate REMatch. Start &lt;a href="http://www.bennadel.com/blog/769-Learning-ColdFusion-8-REMatch-For-Regular-Expression-Matching.htm"&gt;here&lt;/a&gt; and &lt;a href="http://www.remotesynthesis.com/post.cfm/Using-REMatch-versus-REReplace-in-ColdFusion-8"&gt;here&lt;/a&gt;, which are two CF blogs already demonstrating examples.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-4515008713243241684?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/4515008713243241684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=4515008713243241684' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/4515008713243241684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/4515008713243241684'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/10/singing-praises-of-rematch-in-cf8.html' title='Singing the Praises of REMatch in CF8'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-8281954115925399745</id><published>2008-10-11T11:05:00.022-06:00</published><updated>2009-06-24T16:14:04.527-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='webservice'/><category scheme='http://www.blogger.com/atom/ns#' term='Illudium'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='getter'/><category scheme='http://www.blogger.com/atom/ns#' term='cfproperty'/><category scheme='http://www.blogger.com/atom/ns#' term='setter'/><category scheme='http://www.blogger.com/atom/ns#' term='remote proxy'/><category scheme='http://www.blogger.com/atom/ns#' term='coldspring'/><title type='text'>A Complex Gotcha with ColdSpring, Remote Proxies and Getter/Setter Mischief</title><content type='html'>I discovered a very bizarre side-effect (issue/bug?) this week in my journey as a &lt;a href="http://www.coldspringframework.org/"&gt;ColdSpring&lt;/a&gt; developer. I would like to relate the story back in the hopes that it gets a bit more attention beyond the scope of the &lt;a href="http://groups.google.com/group/coldspring-users"&gt;ColdSpring mailing list&lt;/a&gt;, where I first posed it earlier this week. I also want to thank &lt;a href="http://www.briankotek.com/blog/index.cfm"&gt;Brian Kotek&lt;/a&gt; for his insightful responses to the issue, without which, I could possibly have gone mad.&lt;br /&gt;&lt;br /&gt;Before I begin, I think it is interesting to note that the community is &lt;a href="http://ontap.riaforge.org/blog/index.cfm"&gt;currently&lt;/a&gt; &lt;a href="http://cfrant.blogspot.com/2008/10/why-bother-getters-setters.html"&gt;discussing&lt;/a&gt; &lt;a href="http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html"&gt;the ramifications of getter/setter data-access&lt;/a&gt; in design, which directly relate to the issue I'm about to reveal.&lt;br /&gt;&lt;br /&gt;To start, let's make certain we on the same table by clarifying a few disparate facts about ColdFusion technology. I'm going to gloss over some minutia to keep it concise; the purpose is not to insult any CF developers, it's to paint the picture of an obscure issue that involve a lot of factors. Feel free to correct me if I make an error in judgment below:&lt;br /&gt;&lt;br /&gt;1. CF programmers use CFCs to build complex objects. A CFC-based object may include public and private properties, as well as any number of public or private methods.&lt;br /&gt;&lt;br /&gt;2. CF programmers also use CFCs to build webservices. The guts of a CFC-based webservice are nearly indistinguishable from that of a standard object, except for the fact that the access level of the methods are no longer public or private, but are now "remote".&lt;br /&gt;&lt;br /&gt;3. If a CF programmer intends for a CFC-based complex object to be webservice-ready, they will almost certainly use a tag called &lt;a href="http://livedocs.adobe.com/coldfusion/8/htmldocs/Tags_p-q_16.html#2498235"&gt;&amp;lt;CFPROPERTY&amp;gt;&lt;/a&gt;, which produces metadata for the object in &lt;span style="font-style: italic;"&gt;across-the-wire&lt;/span&gt; transmission. When writing a webservice method that returns a value of this custom complex type, inialization of data is performed on the properties themselves, in the very same way you would access keys in a struct (ie. myObject.name = nameValue, myObject.synopsis = synopsisValue, etc.)&lt;br /&gt;&lt;br /&gt;4. When a CFC is passed &lt;span style="font-style: italic;"&gt;across the wire&lt;/span&gt; in a webservice call, the presence of &amp;lt;CFPROPERTY&amp;gt; tags provide consumers with the appropriate knowledge to deserialize the new type of data. If the deserialization process is performed by &lt;a href="http://ws.apache.org/axis/java/user-guide.html"&gt;Axis&lt;/a&gt; (as is the case in ColdFusion), the aforementioned metadata is examined, and as it discovers complex types, exposes the properties of this complex type to the consuming app by dynamically generating getter/setter functions that encapsulate access to the said-data.&lt;br /&gt;&lt;br /&gt;The end result: a get*() and set*() method is produced, as needed, for every matching property (keys in a struct) that is described to have read- and write-access. This is done &lt;span style="font-style: italic;"&gt;at the time the object crosses the wire&lt;/span&gt;; it's perfectly acceptable to have a CFC contain only a list of &amp;lt;CFPROPERTY&amp;gt; tags, with no actual functions. Getters and Setters are still produced.&lt;br /&gt;&lt;br /&gt;5. The ColdSpring framework, which uses dependency injection to "wire together" various CFCs in a CF application, implements a common methodolgy for defining a service layer. It is very common to see a ColdSpring application take a business object (for example, a magazine 'article'), and utilize the following CFCs:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;articleService.cfc&lt;/span&gt; - The actual CFC responsible for providing public access to the data in a semi-abstracted format. There should typically be no references to data-store formats (ie. a particular database type)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;articleGateway.cfc&lt;/span&gt; - A CFC responsible for producing multiple records of data to the service.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;articleDAO.cfc&lt;/span&gt; - A CFC responsible for producing single-record CRUD access to the service.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;article.cfc&lt;/span&gt; - A CFC bean, also referred to as a 'Value Object' or 'VO', which is a relatively flat description of the data, providing a list of getters/setters to each of the attributes of the article (ie. name: getName(), setName(); synopsis: getSynopsis(), setSynopsis(), etc.)&lt;br /&gt;&lt;br /&gt;6. Since the articleDAO.cfc exclusively works with single-record data, it is also typically expected that the CRUD methods work in conjunction with the article.cfc VO, taking them in as arguments, populating them with data, and returning them to the service layer. The process of this data population (within the confines of the DAO) is commonly done one of two ways:&lt;br /&gt;&lt;br /&gt;a) via the VO's init() method, which causes the VO to be initialized and populated with data at the same time, through a series of input arguments on the init() method that map to the actual data's attributes (ie. &amp;lt;cfargument name="synopsis" type="string"&amp;gt; etc.)&lt;br /&gt;&lt;br /&gt;b) via the VO's explicit setter methods (ie. article.setSynopsis(data.synopsis), etc. )&lt;br /&gt;&lt;br /&gt;In either case, encaspulation to the VO's private data is almost always assumed and enforced by the developer as a 'best-practice'.&lt;br /&gt;&lt;br /&gt;7. As the above CFC dependency structure is so commonly used, there are a multitude of tools in existence that create these CFCs for you automatically. One of which is the highly-recommended &lt;a href="http://cfcgenerator.riaforge.org/"&gt;Illudium PU-36&lt;/a&gt; code generator. If you examine the guts of a VO that has been generated by Illudium, you'll note that it produces (among other things):&lt;br /&gt;&lt;br /&gt;a) An appropriate get*() and set*() method for each attribute of the data.&lt;br /&gt;b) A matching &amp;lt;CFPROPERTY&amp;gt; for each attribute of the data.&lt;br /&gt;&lt;br /&gt;As a result, the generated VO is both ready for use as a standard bean within your ColdSpring application, and maintains the appropriate metadata if the type is to be used in &lt;span style="font-style: italic;"&gt;across-the-wire&lt;/span&gt; communication via a webservice.&lt;br /&gt;&lt;br /&gt;8. ColdSpring also provides a method for CF developers to take their pre-existing service layer (assume the one I used above, please!), and with little effort, expose that service layer via a webservice. It does this by the use of a &lt;a href="http://www.coldspringframework.org/coldspring/examples/quickstart/index.cfm?page=remote"&gt;Remote Proxy&lt;/a&gt; (which is extremely convenient, I might add). All the CF developer needs to do is add a simple bean declaration in their wire-up XML config file, and ColdSpring examines the service, auto-generating a matching webservice that, within it, contains a list of methods whose access type are "remote", and wrap the original service's function calls.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Phew!&lt;/span&gt; With me so far on all facts? Awesome. Now for &lt;span style="font-weight: bold;"&gt;the problem at hand...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;Sally has been developing a ColdSpring-based web-application that allows users to read online magazine articles. The project has been in-development for a few months already, so the application is quite mature. Many different services are in-play in the ColdSpring wire-up XML file, and Sally has been making a real effort to stay consistent to the CS methodology, so her services depend upon gateways and DAOs, and the DAOs specifically work with Value Object-style beans.&lt;br /&gt;&lt;br /&gt;One day during the dev-cycle, her manager informs her that a third-party is going to need access to the magazine article data. 'No sweat', she thinks. This is the perfect opportunity for the use of a Remote Proxy. The article service already contains a multitude of article-fetching data, she can simply create a Remote Proxy to her articleService.cfc in a few lines of XML in the wire-up file, and her mission is complete. She performs this task, and runs a few simple tests, consuming the WSDL and attempting to call her most basic method, getArticle(), which takes a &lt;span style="font-weight: bold;"&gt;single numeric argument&lt;/span&gt;, and &lt;span style="font-weight: bold;"&gt;returns an article VO&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;What she gets, unfortunately, is a whole different can of worms.&lt;br /&gt;&lt;br /&gt;First, she receives an obscure error from CF, which reads:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;AxisFault faultCode: {&lt;/span&gt;&lt;a style="font-family: courier new;" target="_blank" rel="nofollow" href="http://schemas.xmlsoap.org/soap/"&gt;http://schemas.xmlsoap.org/soap/&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; envelope/}Server.userException faultSubcode: faultString: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; org.xml.sax.SAXException: Deserializing parameter 'getArticleReturn': &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; could not find deserializer for type {&lt;/span&gt;&lt;a style="font-family: courier new;" target="_blank" rel="nofollow" href="http://page.model/"&gt;http://article.model&lt;/a&gt;&lt;span style="font-family:courier new;"&gt;}Article'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Most of that means very little to her, as she knows nothing about Axis and is not a Java developer. She is, however, able to examine the code generated by the Remote Proxy, and notices that in the webservice, all the method wrappers are of returntype='any'. She guesses that CF is unable to internally determine what a returntype of 'article' is, and hopes that it can be addressed by manually adding a &amp;lt;CFPROPERTY&amp;gt; to the top of the Remote Proxy, like so:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;cfproperty name="Article" type="model.article.article" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;She does this. Success! She is able to consume the WSDL, call getArticle(), and retrieve a variable that she can then use to access the various attributes of the data, such as the name of the article, a synopsis, and so on.&lt;br /&gt;&lt;br /&gt;Sally takes her testing a step further, and performs the following call in her consumer template:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;cfoutput&amp;gt;#article.getSynopsis()#&amp;lt;/cfoutput&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;expecting to see the article's synopsis written to the screen. She, instead, &lt;span style="font-weight: bold;"&gt;gets nothing&lt;/span&gt;. She tries to access other getter methods on the article VO, like getName(), and getTitle(). Again, nothing.&lt;br /&gt;&lt;br /&gt;So that she isn't going crazy, she &amp;lt;CFDUMP&amp;gt;s the return from getArticle(). Sure enough, there are all of her getters/setters as originally described in the article.cfc VO (which she happened to generate via Illudium).&lt;br /&gt;&lt;br /&gt;She returns to articleService.cfc with the expectation that she is incorrectly passing an argument to getArticle(), or that somehow, the data is not being transmitted. Before the 'Article' VO is returned, she performs a &amp;lt;CFLOG&amp;gt; of the article's getSynopsis() result, right after it is created and populated by the DAO, but before it returns to the calling application.&lt;br /&gt;&lt;br /&gt;She tests the webservice call again, and then opens up the generated log. Sure enough, the article's synopsis text is properly written to the log. Yet once again, in the consuming application, a call to getSynopsis() on the variable that is returned from getArticle() displays an empty string.&lt;br /&gt;&lt;br /&gt;Sally re-examines the guts of the Remote Proxy that is generated by ColdSpring, looking to see what actually goes on in the getArticle() wrapper. She discovers the following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;&amp;lt;cffunction name="getArticle" access="remote" returntype="any" output="false"&amp;gt;&lt;br /&gt;  &amp;lt;cfargument name="article_id" type="numeric" required="true" /&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;cfset var rtn = callMethod('getArticle') /&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;cfif rtn&amp;gt;&lt;br /&gt;    &amp;lt;cfreturn rtn /&amp;gt;&lt;br /&gt;  &amp;lt;/cfif&amp;gt;&lt;br /&gt;&amp;lt;/cffunction&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Sally notices something is missing. She undestands the need for a generic wrapper, callMethod(), which has the ability to call any type of function, and return any type of value, but she also knows about the restriction of passing a complex type back from a webservice (See above, #3).&lt;br /&gt;&lt;br /&gt;Her assignment of data to the article VO, deep within the confines of articleDAO, is via an init() method, which is a struct key/value list passed as an argumentCollection. The assignment of data ends there. The article VO is that passed back through articleDAO, then through articleService, and then, through her Remote Proxy webservice, eventually ending up at a client consumer app.&lt;br /&gt;&lt;br /&gt;At no time is a single &amp;lt;CFPROPERTY&amp;gt; key ever accessed, either to read, or to write. In other words, there is no denying she has a VO with the appropriate data (the &amp;lt;CFLOG&amp;gt; call confirmed it), but she never once preps the object for transmission &lt;span style="font-style: italic;"&gt;across the wire&lt;/span&gt;, which in this case, requires calls to the properties (ie. article.synopsis = synopsisValue, article.head = headValue, etc.)&lt;br /&gt;&lt;br /&gt;Furthmore, once the Remote Proxy returns the VO to the client app, it is flattened by Axis, it's original getter/setter methods are stripped away, and &lt;span style="font-weight: bold;"&gt;all-new getter/setter methods are implictly created&lt;/span&gt;, causing the illusion that Sally's VO has remained intact throughout the process, when in actuality, it is now an empty husk; a VO that never had its properties assigned before the webservice transmitted it, and a series of getters/setters that wrap those empty values, producing no results to the screen when called.&lt;br /&gt;&lt;br /&gt;I hope you have enjoyed today's story!&lt;br /&gt;&lt;br /&gt;Oh, what became of Sally, you ask? Well, she made two changes.&lt;br /&gt;&lt;br /&gt;1. She modified the core ColdSpring files to produce a list of &amp;lt;CFPROPERTY&amp;gt; calls at the top of the auto-generated Remote Proxy webservice, whenever (during the createRemoteProxy() method) she discovers a returntype that is a custom CFC. This solves the deserialization issue wheh all the auto-generated wrapper methods have a returntype of 'any'.&lt;br /&gt;&lt;br /&gt;2. She modified the callMethod() function so that if the 'rtn' variable is detected as a result of the original called method, she examines the metadata of the return. If she finds that it is a custom CFC type, she makes an assumption that it is a VO produced by Illudium and loops over the properties array of the rtn var, dynamically checking to see if there is a matching named get*() function. If there is, she assigns the return of the get*() method to the matching property before sending the 'rtn' variable back.&lt;br /&gt;&lt;br /&gt;I, er, what I meant to say was.. &lt;span style="font-weight: bold; font-style: italic;"&gt;SALLY&lt;/span&gt;...would be happy to produce this code upon request.&lt;br /&gt;&lt;br /&gt;As Brian pointed out to me in the CS group, the change to callMethod() certainly has performance implications, which I why I'm hestitant to submit it directly as a patch to the CS team. A preferred technique would be during the call to  &lt;span style="font-weight: bold;"&gt;AopProxyUtils::createRemoteMethod()&lt;/span&gt;, which would actually inject this code within the method wrapper, &lt;span style="font-weight: bold;"&gt;only&lt;/span&gt; applying the logic as-needed within specific functions. Unforutnately, the metadata of the return result (as it is communicated via Axis &lt;span style="font-style: italic;"&gt;across the wire&lt;/span&gt;) is unavailable during the &lt;span style="font-weight: bold;"&gt;AopProxyUtils::createRemoteMethod()&lt;/span&gt; call, since no object actually exists and no data communication has actually executed;&lt;span style="font-weight: bold;"&gt; createRemoteMethod()&lt;/span&gt; is just a submethod of a larger function that does a file read of the named service and walks the actual cf tag structure to determine method names, input arguments, and return types.&lt;br /&gt;&lt;br /&gt;Alas, this is where my research ends. Perhaps a more thoughtful CS framework teammember can provide an alternate solution that scales.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-8281954115925399745?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/8281954115925399745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=8281954115925399745' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/8281954115925399745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/8281954115925399745'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/10/complex-gotcha-with-coldspring-remote.html' title='A Complex Gotcha with ColdSpring, Remote Proxies and Getter/Setter Mischief'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-7657221151399601909</id><published>2008-10-05T19:53:00.004-06:00</published><updated>2008-10-22T16:23:56.387-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='cflog'/><category scheme='http://www.blogger.com/atom/ns#' term='cfdebug'/><category scheme='http://www.blogger.com/atom/ns#' term='wow lemmings'/><category scheme='http://www.blogger.com/atom/ns#' term='cfhttp'/><category scheme='http://www.blogger.com/atom/ns#' term='cftrace'/><category scheme='http://www.blogger.com/atom/ns#' term='threads'/><category scheme='http://www.blogger.com/atom/ns#' term='livedocs'/><category scheme='http://www.blogger.com/atom/ns#' term='cfdump'/><category scheme='http://www.blogger.com/atom/ns#' term='kathune'/><category scheme='http://www.blogger.com/atom/ns#' term='rss'/><category scheme='http://www.blogger.com/atom/ns#' term='cfthread'/><title type='text'>CFTHREAD and Debugging Oddities</title><content type='html'>I'm happy to announce that Kathune 2.0, the newest version of &lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt;' spidering engine breathed its first breath today. It successfully extracted guild recruitment information from various sources and updated its local cache this morning during my weekend development ritual. Normally, this wouldn't be a big deal, but I'm very excited about it this time around because it is my first implementation of a CF app that is &lt;a href="http://en.wikipedia.org/wiki/Multithreaded"&gt;multi-threaded&lt;/a&gt;, thanks to &lt;a href="http://livedocs.adobe.com/coldfusion/8/htmldocs/Tags_t_04.html#2860391"&gt;&amp;lt;CFTHREAD&amp;gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A spidering engine is the perfect place for &amp;lt;CFTHREAD&amp;gt;. Much like the &lt;a href="http://livedocs.adobe.com/"&gt;LiveDocs&lt;/a&gt; example that uses &amp;lt;CFTHREAD&amp;gt; to &lt;a href="http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=threads_7.html#1153859"&gt;retrieve multiple RSS feeds&lt;/a&gt;, Kathune multi-threads the process of fetching HTML forum post data from various sources, parsing &amp;amp; scoring them, and pouring the results into a local database.&lt;br /&gt;&lt;br /&gt;The "fire-and-forget" methodology of threads that I am utilizing with the next iteration of Kathune has definitely given me a good chance to rethink how the spidering engine is architected, with regards to specific optimizations on the biggest bottlenecks. An example is how and when it decides to fetch the details of a specific forum post, and implements that functionality in its own thread; perfect, considering &lt;a href="http://livedocs.adobe.com/coldfusion/8/htmldocs/Tags_g-h_09.html#3989287"&gt;&amp;lt;CFHTTP&amp;gt;&lt;/a&gt; varies greatly in how much time it takes to complete, based on each individual URL you pass it. That's the nature of the beast; some sites are local and fast, while others are across the globe and take much more time to process.&lt;br /&gt;&lt;br /&gt;As is typical with investigating any new features, I am experiencing some...&lt;span style="font-style: italic;"&gt;interesting&lt;/span&gt;...behavior, the first of which focuses on debugging in CF8. Once I spawn a thread, I'm unable to call &lt;a href="http://livedocs.adobe.com/coldfusion/8/htmldocs/Tags_d-e_08.html#3980281"&gt;&amp;lt;CFDUMP&amp;gt;&lt;/a&gt; or &lt;a href="http://livedocs.adobe.com/coldfusion/8/htmldocs/Tags_t_08.html#2698629"&gt;&amp;lt;CFTRACE&amp;gt;&lt;/a&gt;. Not good, considering those are valuable tags CF developers use daily as they build applications and need to track problems. Attempting to &amp;lt;CFTRACE&amp;gt; a particular variable within a thread generates the following message:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Variable DEBUGGER is undefined.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Thank the Lords that calling &amp;lt;CFDUMP&amp;gt; errors out with a much more detailed explanation of the issue:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;null&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;It's fairly well documented how &amp;lt;CFTHREAD&amp;gt; does indeed work within its own scope, but I didn't think for a minute that creating a new a thread boundary was so vastly exclusive that it wouldn't even have access to global server-level CF variables and methods that would normally be callable from any scope...including debug-related info.&lt;br /&gt;&lt;br /&gt;Also interesting to note is the section in LiveDocs specifically detailing how you are expected to &lt;a href="http://livedocs.adobe.com/coldfusion/8/htmldocs/ajaxdata_10.html#1126741"&gt;debug Ajax applications with the 'cfdebug' parameter&lt;/a&gt;. The &amp;lt;CFTHREAD&amp;gt; section focusing on debugging: surprisingly vacant.&lt;br /&gt;&lt;br /&gt;Another interesting side-effect (though a bit more expected) is the lack of any kind of debugging information within threads produced to the screen by the server-wide debugger enabled in CF Administrator. I don't think you have to be a detective to realize those two issues are related in some capacity.&lt;br /&gt;&lt;br /&gt;I have yet to try a few more tricks before throwing in the towel, however, and I suspect my first clue will start with &lt;a href="http://samfarmer.instantspot.com/blog/2007/09/05/ColdFusion-8-How-to-cfDump-Vars"&gt;Sam Farmer's blog post&lt;/a&gt; about dumping the var scope and how CF8's internals are slightly different. I see fellow CFer &lt;a href="http://zacster.blogspot.com/2008/09/cftree-variable-debugger-is-undefined.html"&gt;Zac Spitzer also left a clue on his blog&lt;/a&gt; regarding the "DEBUGGER is undefined" message, and am going to investigate this further. In the meantime, my workaround to get at debugging-related info within threads is to simply hand them off to &lt;a href="http://livedocs.adobe.com/coldfusion/8/htmldocs/Tags_j-l_06.html#1842314"&gt;&amp;lt;CFLOG&amp;gt;&lt;/a&gt; which doesn't know nor care about any DEBUGGER or NULL and happily takes any text or variable I pass it, threaded or otherwise, and dumps it to a log file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-7657221151399601909?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/7657221151399601909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=7657221151399601909' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/7657221151399601909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/7657221151399601909'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/10/cfthread-and-debugging-oddities.html' title='CFTHREAD and Debugging Oddities'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-1476647534812819872</id><published>2008-10-02T23:21:00.008-06:00</published><updated>2008-10-22T16:24:53.552-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='implicit circuit'/><category scheme='http://www.blogger.com/atom/ns#' term='no-xml'/><category scheme='http://www.blogger.com/atom/ns#' term='fusebox'/><category scheme='http://www.blogger.com/atom/ns#' term='pet peeve'/><title type='text'>Fusebox 5 Pet Peeve of the Day</title><content type='html'>As a CF developer, I can appreciate the need for a framework. I have been working with the &lt;a href="http://www.fusebox.org/"&gt;Fusebox&lt;/a&gt; methodology for years. I was introduced to it back in '99 when I took at job at &lt;a href="http://www.breckcomm.com/"&gt;Breckenridge Communications&lt;/a&gt; in downtown Denver. I have been using it ever since. Most recently, I've had the opportunity to embrace and implement the latest incarnation, &lt;a href="http://www.fusebox.org/go/learning-fusebox/presentations/fusebox-5"&gt;FB 5&lt;/a&gt;. For the most part, I'm very happy with it.&lt;br /&gt;&lt;br /&gt;There are things about it, however, that rub me the wrong way.&lt;br /&gt;&lt;br /&gt;In most cases, it isn't because something was implemented incorrectly, or is technically inferior to other solutions...most of my pet peeves stem from a philosophical standpoint. Essentially, they bug me because they cause &lt;a href="http://www.fusebox.org/go/learning-fusebox/presentations/fusebox-5"&gt;FB 5&lt;/a&gt;, as a framework, to be impractical or unintuitive to a developer, or are hypocritical in respect to what a framework should represent and be responsible for (which I expect is unintentional, and not necessarily a limitation of &lt;a href="http://www.adobe.com/products/coldfusion/"&gt;ColdFusion&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;I was going to list my top three pet peeves but the post quickly became epic. So, I'll pick one for today, and go into the others later. Today's FB 5 pet peeve is:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;No fall-through support for "No-XML" Implicit Circuit Detection&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Problem&lt;/span&gt;&lt;br /&gt;I'm extremely anal when it comes to laying out folders and files, and obtaining some semblance of consistency and form. At my present company, our projects use a standard MVC structure:&lt;br /&gt;&lt;br /&gt;/controller&lt;br /&gt;/model&lt;br /&gt;/view&lt;br /&gt;&lt;br /&gt;Since we have chosen to focus on No-XML implementations for our FB apps, we use CFCs as circuits in controller, and the ColdSpring services are delegated to the model folder, along with Value Objects. Views, as you have no doubt surmised, reside as templates in /view. Having said all of that, I would expect to be able to create the following structure encapsulating functionality for an "Article" business object like so:&lt;br /&gt;&lt;br /&gt;/controller/article.cfc&lt;br /&gt;/model/article/article.cfc&lt;br /&gt;/model/article/articleService.cfc&lt;br /&gt;/view/article/dsp_article_detail.cfm&lt;br /&gt;&lt;br /&gt;In implicit circuit or "No-XML" mode, FB must guess where the circuit and fuseaction reside. It does this by walking down a predefined path of the /controller, /model, and /view files and folder, as well as similar aliases.&lt;br /&gt;&lt;br /&gt;So, when you do this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;cfset myFusebox.do( action="article.show" )&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It first checks /controller/article.cfc, sees that it is indeed a circuit, and tells the framework "SUCCESS!" The guessing on FB's part ends there...&lt;br /&gt;&lt;br /&gt;...but what if you want to do this?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;cfset myFusebox.do( action="article.dsp_article_detail" contentvariable="bodyContent" )&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A CF developer new to the framework might expect FB to go into /view/article and says, "Oh! I found your dsp_article_detail.cfm file, so let's display that!"&lt;br /&gt;&lt;br /&gt;It, sadly, &lt;i&gt;&lt;b&gt;does not&lt;/b&gt;&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Instead, it does this:&lt;br /&gt;&lt;br /&gt;"Well, I'm not sure what 'article' is, so...better get searching, let's have a look in /controller...ah, I see your circuit right here, it's 'article.cfc', now I'll just go ahead and find your dsp_article_detail fuseaction...oh, whoops! Sorry, you don't have one! ERROR".&lt;br /&gt;&lt;br /&gt;It finds your controller CFC, &lt;i&gt;&lt;b&gt;assumes&lt;/b&gt;&lt;/i&gt; that it is the correct circuit, and throws a horrible error as it attempts to execute the fuse (which it thinks is a function), when what the developer really wanted to do was call a display template.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why This Is&lt;/span&gt;&lt;br /&gt;FB 5 uses a "find-once-and-forget" mentality about implicit circuit detection. Once it walks your /controller, /model, and /view path, and finds a circuit...&lt;i&gt;&lt;b&gt;any&lt;/b&gt;&lt;/i&gt; circuit...that matches the naming convention you use when calling the circuit.fuseaction, it considers the first circuit found to be correct, and prevents any further dynamic detection. I assume this approach was used for speed and/or efficiency to save CPU cycles in implicit circuit mode. Or, perhaps the FB team decided to play the &lt;a href="http://en.wikipedia.org/wiki/Occam%27s_razor"&gt;Occam's razor&lt;/a&gt; card.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Workaround&lt;/span&gt;&lt;br /&gt;Change your folder structure to:&lt;br /&gt;/controller/article.cfc&lt;br /&gt;/model/article/article.cfc&lt;br /&gt;/view/varticle/dsp_article.cfm&lt;br /&gt;&lt;br /&gt;"/varticle"? Really?? I'm sorry, but this is &lt;i&gt;&lt;b&gt;all kinds of lame&lt;/b&gt;&lt;/i&gt;. I shouldn't have to categorize my specific business object's views with &lt;b&gt;yet another categorization&lt;/b&gt;. That's why the dsp_article.cfm's top-most parent folder is /view in the first place...it's a &lt;b&gt;view&lt;/b&gt;! Adding another folder with a 'v' prefix should be totally unnecessary and, as it stands, completely unintuitive for new FB developers.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Philosophical Argument&lt;/span&gt;&lt;br /&gt;If it was done this way for speed/efficiency, why should this be a concern when you are in production mode? If it was the simplest solution, why force new developers to have to understand the "nuances" of implicit circuit detection when, with a little more work, you can make it robust enough to be intuitive for new developers to pick up and understand? Remember, one of the benefits of a framework should be to enforce a standardized approach to developing an application, with a set of rules and best practices to follow. If the framework conveys those rules like this: "In order to accomplish A, you must do B, C, or D. Oh, but also don't forget that sometimes X, Y, Z won't work so in those cases you have to change things around a bit". That sounds less like a framework and more like what Dr. Evil described as, "&lt;a href="http://www.youtube.com/watch?v=lTJj4wbmAhk"&gt;the sort of general malaise that only the genius possess and the insane lament&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solution&lt;/span&gt;&lt;br /&gt;Change the way FB introspects for circuits. Instead of a "find-once-and-forget" method of detecting circuits, why not cache a map of the existing circuits/fuses found (create the map on every request in dev mode, and store/cache the map in production), and when a myFusebox.do() occurs, refer to the map's look-up table before assuming the "first-found" circuit is God? That way, it doesn't blindly assume the first circuit found is correct, and has a backup set of circuits/fuses to check before throwing a final "Undefiend Fuseaction in Circuit X" error.&lt;br /&gt;&lt;br /&gt;The intended detection should execute as described in the following use-case:&lt;br /&gt;&lt;br /&gt;1. myFusebox.do() calls with an action parameter of "article.dsp_article_detail"&lt;br /&gt;2. FB validates that there is a circuit in /controller named article.&lt;br /&gt;3. FB scans the map, and finds no dsp_article_detail() function.&lt;br /&gt;4. FB validates that there is a circuit in /model named article.&lt;br /&gt;5. FB scans the map, and finds no dsp_article_detail() function.&lt;br /&gt;6. FB validates that there is a circuit in /view named article (in this case, a sub-folder)&lt;br /&gt;7. FB scans the map, and finds no function, but does find a dsp_article_detail.cfm, which satisfies the implicit circuit.fuseaction requirement, and fires.&lt;br /&gt;&lt;br /&gt;No-XML mode is &lt;span style="font-weight: bold; font-style: italic;"&gt;cool&lt;/span&gt;. Except for this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-1476647534812819872?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/1476647534812819872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=1476647534812819872' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/1476647534812819872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/1476647534812819872'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/10/fusebox-5-pet-peeve-of-day.html' title='Fusebox 5 Pet Peeve of the Day'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-2291148869042424517</id><published>2008-09-24T12:15:00.006-06:00</published><updated>2008-10-22T16:25:37.914-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='drumming'/><category scheme='http://www.blogger.com/atom/ns#' term='rock band 2'/><category scheme='http://www.blogger.com/atom/ns#' term='ion drum rocker'/><category scheme='http://www.blogger.com/atom/ns#' term='lefty'/><category scheme='http://www.blogger.com/atom/ns#' term='southpaw'/><title type='text'>Lefties Get No Love</title><content type='html'>Several weeks in since I received my &lt;a href="http://www.drumrocker.com/"&gt;ION Drum Rocker&lt;/a&gt; for &lt;a href="http://www.rockband2.com/"&gt;Rock Band 2&lt;/a&gt; and am still getting used to it. Can't really tell if my arms are sore because I'm playing for several hours every night, or if the setup is positioned incorrectly and I'm putting undue stress on muscle groups that I shouldn't be. My only real point of reference is &lt;a href="http://www.rockband.com/forums/showthread.php?t=82448"&gt;this forum thread&lt;/a&gt; where other ION kit owners are uploading photos of their setups. Some of them are pretty bizarre, but for the most part, similar to what I have going on.&lt;br /&gt;&lt;br /&gt;Most of the problems I'm experience come from the angle of the pads, in which I naturally want to strike the rim of the tom as opposed to the center of the tom pad. Adjustment is becoming a bit of an art form, but I'm getting there.&lt;br /&gt;&lt;br /&gt;I noticed lefties are up-in-arms after reading &lt;a href="http://www.rockband.com/forums/showthread.php?t=84389"&gt;this thread&lt;/a&gt; and watching &lt;a href="http://www.youtube.com/v/yu2zoMv4W98"&gt;this video&lt;/a&gt;. Seems that us southpaws are getting the short end of the stick when we flip the drums around in game, and that the toms aren't registering correctly with the cymbal expansion. I hadn't noticed this before, but will have to play around with it and see if &lt;a href="http://www.harmonixmusic.com/"&gt;Harmonix&lt;/a&gt; will issue out a fix.&lt;br /&gt;&lt;br /&gt;Current favorite song to drum in RB2: &lt;a href="http://www.youtube.com/watch?v=QKhFLYVScJ4"&gt;"De-Luxe" by Lush&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-2291148869042424517?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/2291148869042424517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=2291148869042424517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/2291148869042424517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/2291148869042424517'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/09/lefties-get-no-love.html' title='Lefties Get No Love'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-7073718006815451064</id><published>2008-09-22T09:00:00.005-06:00</published><updated>2008-10-23T11:23:49.670-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='leigh nash'/><category scheme='http://www.blogger.com/atom/ns#' term='descendants of draenor'/><category scheme='http://www.blogger.com/atom/ns#' term='illidan'/><category scheme='http://www.blogger.com/atom/ns#' term='elsiane'/><category scheme='http://www.blogger.com/atom/ns#' term='black temple'/><category scheme='http://www.blogger.com/atom/ns#' term='delerium'/><category scheme='http://www.blogger.com/atom/ns#' term='denver'/><category scheme='http://www.blogger.com/atom/ns#' term='glowsticking'/><category scheme='http://www.blogger.com/atom/ns#' term='kristy thirsk'/><category scheme='http://www.blogger.com/atom/ns#' term='concert'/><category scheme='http://www.blogger.com/atom/ns#' term='bill leeb'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><title type='text'>Sunday Successes</title><content type='html'>Sunday was an overwhelming success.&lt;br /&gt;&lt;br /&gt;First, I'm proud to announce that our guild, &lt;a href="http://www.descendantsofdraenor.com/"&gt;Descendants of Draenor&lt;/a&gt;, made our first kill of &lt;a href="http://www.wowhead.com/?npc=22917"&gt;Illidan Stormrage&lt;/a&gt;, wrapping up a full clear of &lt;a href="http://www.wowhead.com/?zone=3959"&gt;Black Temple&lt;/a&gt;. Kudos to all those crazy guys and gals back at the home-front who made it possible. I don't normally do pics on my blog, but they probably earned this one:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://forums.descendantsofdraenor.com/images/illidan.jpg" target="_blank"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://forums.descendantsofdraenor.com/images/illidan.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Secondly, got another chance to see my favorite band in concert, &lt;a href="http://www.delerium.ca/"&gt;Delerium&lt;/a&gt;. After the &lt;a href="http://www.delerium.com/news/news030911.html"&gt;first tour&lt;/a&gt;, I assumed that would be the last time I would ever see them, since they practically never tour, and I figured it was nothing short of a miracle that &lt;a href="http://en.wikipedia.org/wiki/Bill_Leeb"&gt;Bill Leeb&lt;/a&gt; was able to get the vocalists to tour with him. Thankfully, they made another round and swung through &lt;a href="http://www.denver.org/"&gt;Denver&lt;/a&gt; last night, and it was phenomenal (as always). The highlight of the night was definitely &lt;a href="http://en.wikipedia.org/wiki/Bill_Leeb"&gt;Bill Leeb&lt;/a&gt; being presented with a birthday cake on-stage while the entire audience sang "Happy Birthday to You". God bless the Leebinator.&lt;br /&gt;&lt;br /&gt;As always, &lt;a href="http://www.kristythirsk.com/"&gt;Kristy Thirsk&lt;/a&gt; wailed like a banshee and her massive range proceeded to kick the shit out of more than half the vocalists in existence, and the presence of &lt;a href="http://www.leighnash.com/"&gt;Leigh Nash&lt;/a&gt; and &lt;a href="http://www.elsiane.com/"&gt;Elsiane&lt;/a&gt; for this tour was just icing on the cake. &lt;a href="http://www.kristythirsk.com/"&gt;Kristy&lt;/a&gt; let slip that &lt;a href="http://www.delerium.ca/"&gt;Delerium&lt;/a&gt; is going to be releasing an acoustic album of hits, which makes me giddy.&lt;br /&gt;&lt;br /&gt;Also bumped into a former fellow employee and CF developer, &lt;a href="http://concertfreak.livejournal.com/"&gt;Sean Sidelko&lt;/a&gt;, who I think is actually a professional clubber. No word yet on if he'll be heading up &lt;a href="http://en.wikipedia.org/wiki/Lightstick"&gt;glowsticking&lt;/a&gt; certifications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-7073718006815451064?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/7073718006815451064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=7073718006815451064' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/7073718006815451064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/7073718006815451064'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/09/sunday-successes.html' title='Sunday Successes'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-3856506168156846719</id><published>2008-09-20T11:26:00.007-06:00</published><updated>2008-10-23T11:23:00.925-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='keyword search'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='wow lemmings'/><category scheme='http://www.blogger.com/atom/ns#' term='base64'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='server transfer eligibility'/><category scheme='http://www.blogger.com/atom/ns#' term='kathune'/><category scheme='http://www.blogger.com/atom/ns#' term='ie7'/><category scheme='http://www.blogger.com/atom/ns#' term='improvements'/><category scheme='http://www.blogger.com/atom/ns#' term='gzip'/><category scheme='http://www.blogger.com/atom/ns#' term='autosuggest'/><category scheme='http://www.blogger.com/atom/ns#' term='guild recruitment'/><category scheme='http://www.blogger.com/atom/ns#' term='death knight'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>WoW Lemmings v2 Beta &amp; Kathune</title><content type='html'>I've pushed up the latest version of &lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt;, which I'm calling v2 for the moment. The changes are as follows:&lt;br /&gt;&lt;br /&gt;1. &lt;span style="font-weight: bold;"&gt;Site speed improved&lt;/span&gt;: Much more aggressive with caching this time around. I've gone to inline images, minifying JavaScript files with &lt;a href="http://shrinksafe.dojotoolkit.org/"&gt;ShrinkSafe&lt;/a&gt;, as well as enabling GZip compression for both dynamic (cf) and static (html, css, js) content. After all is said and done, the resulting generated content is only about 10k larger in size, but it downloads and renders much, much faster. I became obsessed with this particular feature because the #1 goal of the site is to accelerate guild recruitment. If the tool is slow, then all is lost.&lt;br /&gt;&lt;br /&gt;2. &lt;span style="font-weight: bold;"&gt;Keyword search/filter&lt;/span&gt;: You can now further refine your search with free-form text keywords. I've also implemented an auto-suggest feature which should provide you with a list of common terms in various categories such as timezones, talent specs, raid instance progression, etc. This is a fulltext search, so it looks at the post title as well as the body, and has shown to be quite fast thus far.&lt;br /&gt;&lt;br /&gt;3.&lt;span style="font-weight: bold;"&gt; Server Preference » Transfer Eligibility&lt;/span&gt;: In the upper left portion of the page, near the class legend colors, there is a new set of drop-down menus that allow you to specify your region, and server. Once chosen, the search result grid now re-colors itself, based on server transfer eligibility. You can now quickly see if guild-members can do a direct transfer, if they'll cross realm-types, or if they are unable to transfer at all. I've also added a golden border to guildies whose server exactly matches yours, which would indicate no server transfer necessary.&lt;br /&gt;&lt;br /&gt;4. &lt;span style="font-weight: bold;"&gt;Death Knight Support&lt;/span&gt;: Although its still a tad-early to be scouring for Death Knights, since none exist, the support has been added on both the front and back end. For the record, the current keywords looked for when spidering for Death Knights are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;dk&lt;/li&gt;&lt;li&gt;death knight&lt;/li&gt;&lt;li&gt;deathknight&lt;/li&gt;&lt;li&gt;dethknight&lt;/li&gt;&lt;li&gt;dknight&lt;/li&gt;&lt;li&gt;deathk&lt;/li&gt;&lt;li&gt;dethk&lt;/li&gt;&lt;/ul&gt;Currently, only the string 'deth' flags the Death Knight post as an idiot. I'll monitor the first few waves of posts to see what other popular misspellings I should include. :)&lt;br /&gt;&lt;br /&gt;The next beta should include support for the auto-post cleanup I alluded do in a &lt;a href="http://bakuenryu.blogspot.com/2008/09/wow-lemmings-update-soon.html"&gt;previous blog post&lt;/a&gt;, as well as parsing the server-type out of a guildy's armory URL, and using that to update their server-type.&lt;br /&gt;&lt;br /&gt;Currently, v2 Beta has a number of bugs that I'm aware of:&lt;br /&gt;&lt;br /&gt;1. IE7 currently &lt;a href="http://dean.edwards.name/weblog/2005/06/base64-ie/"&gt;doesn't support inlining base64 encoded data&lt;/a&gt;, and a solution is in-the-works. Images play a small role in &lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt; so I thought it was safe enough to roll the beta in its current form. 60% of &lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt; traffic comes via &lt;a href="http://www.mozilla.com/en-US/firefox/"&gt;FireFox&lt;/a&gt;, so that helps.&lt;br /&gt;&lt;br /&gt;2. While we're on the subject of IE7, there are a few CSS issues, one of which is the golden border for guildies who match your server. Fix to come.&lt;br /&gt;&lt;br /&gt;3. Strange issue with the auto-suggest feature implemented via CF8's [cfinput] tag. If you type a keyword SUPER fast and hit Enter, you'll spawn the "Bind failed for autosuggest keyword" problem, and it looks like current issues with that feature are related to &lt;a href="http://www.coldfusionjedi.com/index.cfm/2008/3/17/Interesting-ColdFusion-8-AutoSuggest-issue-to-watch-for"&gt;something different&lt;/a&gt;. I'll continue to research this; in the meantime, if you type over 80 WPM like me, you might see an unintended JavaScript alert here and there.&lt;br /&gt;&lt;br /&gt;If you see any other issues or have suggestions, as always, shoot me an email.&lt;br /&gt;&lt;br /&gt;As for &lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt;' brand new multi-threaded spidering engine, &lt;a href="http://www.wowlemmings.com/kathune.html"&gt;Kathune&lt;/a&gt;, work is progessing on improving speed, its smartness and ability to extract guildy recruitment info, and extend its reach across the various WoW fan sites that offer up public recruitment forums. Hopefully, those features should be in-play in the next several weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-3856506168156846719?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/3856506168156846719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=3856506168156846719' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/3856506168156846719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/3856506168156846719'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/09/wow-lemmings-v2-beta-kathune.html' title='WoW Lemmings v2 Beta &amp; Kathune'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-5036530196981183379</id><published>2008-09-17T09:46:00.003-06:00</published><updated>2008-10-22T16:49:22.407-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='drumming'/><category scheme='http://www.blogger.com/atom/ns#' term='cymbals'/><category scheme='http://www.blogger.com/atom/ns#' term='rock band 2'/><category scheme='http://www.blogger.com/atom/ns#' term='expert'/><category scheme='http://www.blogger.com/atom/ns#' term='trumpet'/><category scheme='http://www.blogger.com/atom/ns#' term='ion drum rocker'/><category scheme='http://www.blogger.com/atom/ns#' term='lefty'/><category scheme='http://www.blogger.com/atom/ns#' term='southpaw'/><category scheme='http://www.blogger.com/atom/ns#' term='trainer'/><category scheme='http://www.blogger.com/atom/ns#' term='neil peart'/><title type='text'>Arms Destroyed, Mission Accomplished</title><content type='html'>Day 1 after receiving my &lt;a href="http://www.drumrocker.com/"&gt;ION Drum Rocker&lt;/a&gt; kit for &lt;a href="http://www.rockband2.com/"&gt;Rock Band 2&lt;/a&gt;, and I'm ecstatic...and sore. The thing is magnificent and intimidating at the same time. Set-up time alone was close to an hour, along with various personal adjustments (of which more are still needed). Once it was up and running, though, I was hitting the skins like a regular &lt;a href="http://en.wikipedia.org/wiki/Neil_Peart"&gt;Neil Peart&lt;/a&gt;. It's going to take some getting used to, especially in mentally adjusting to go for the &lt;a href="http://www.iondrumrocker.com/#tabs--3"&gt;cymbals&lt;/a&gt; when appropriate. Most of that adjustment will have to happen on a per-song basis.&lt;br /&gt;&lt;br /&gt;I haven't drummed for very long (March-ish), but I have been musically inclined since youth; I played the &lt;a href="http://en.wikipedia.org/wiki/Trumpet"&gt;trumpet&lt;/a&gt; in band from '86 to to '92, and can &lt;a href="http://en.wikipedia.org/wiki/Sheet_music"&gt;read music&lt;/a&gt;. Since the &lt;a href="http://en.wikipedia.org/wiki/Image:Rockband-guitar.jpg"&gt;Rock Band guitar&lt;/a&gt; is just a glorified &lt;a href="http://en.wikipedia.org/wiki/Simon_%28game%29"&gt;Simon&lt;/a&gt;, I decided to focus more on drum technique, since drumming in the game is pretty close to the real deal. I also assumed I had naturally good rhythm, which you would think would apply to drumming (and it does, to a degree). However, once sitting down at the kit and hammering away, you quickly discover there is more to it than just keeping a beat.&lt;br /&gt;&lt;br /&gt;The main obstacle to get over is just reprogramming your brain to separate your hands from your feet. Keeping them separate and maintaining patterns is a challenge; it's quite a step up front rubbing your stomach and patting your head at the same time (or walking and chewing bubble gum, if you prefer). Once you get over that hump, it becomes a question of refining all the various techniques: drum rolls, fills, off-beat kicks, double/triple kicks, etc.&lt;br /&gt;&lt;br /&gt;It also helps to know if you should be playing right-handed or left-handed; I didn't even think about for the first three weeks, until difficult pedal/drum alternations were introduced and I realized I had been playing backwards (I am a &lt;a href="http://en.wikipedia.org/wiki/Southpaw"&gt;southpaw&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;I still consider myself a huge novice in the drum department, though I consistently try to stay on Expert difficulty in &lt;a href="http://www.rockband.com/"&gt;Rock Band&lt;/a&gt;. Thankfully, there is a much more in-depth &lt;a href="http://www.destructoid.com/you-are-a-human-drum-machine-rock-band-2-s-drum-trainer-details-in-words-video-100632.phtml"&gt;Drum Trainer&lt;/a&gt; in &lt;a href="http://www.rockband2.com/"&gt;RB2&lt;/a&gt; and I plan to spend some more time in there. But for anyone who got a kick out of drumming in &lt;a href="http://www.rockband.com/"&gt;RB1&lt;/a&gt; and wants to take it to the next level, the &lt;a href="http://www.drumrocker.com/"&gt;ION Drum Rocker&lt;/a&gt; is a sure-fire win.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-5036530196981183379?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/5036530196981183379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=5036530196981183379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/5036530196981183379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/5036530196981183379'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/09/arms-destroyed-mission-accomplished.html' title='Arms Destroyed, Mission Accomplished'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-7232717785574324862</id><published>2008-09-12T09:57:00.003-06:00</published><updated>2008-10-23T11:20:23.812-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='easter egg'/><category scheme='http://www.blogger.com/atom/ns#' term='m.u.l.e.'/><category scheme='http://www.blogger.com/atom/ns#' term='spore'/><title type='text'>Spore Easter Egg Honors M.U.L.E.</title><content type='html'>Found a great&lt;a href="http://en.wikipedia.org/wiki/Easter_egg_%28media%29"&gt; easter egg&lt;/a&gt; in &lt;a href="http://www.spore.com/"&gt;Spore&lt;/a&gt; last night, probably one that only I would get &amp;amp; comprehend, but they get +10,000 bonus points from me just including it.&lt;br /&gt;&lt;br /&gt;In Space stage, I was interacting with one of the many random alien races you encounter, and when I entered the trade screen to exchange some goods, I thought I heard some familiar bleeps and blips, very faintly, in the background. Keep in mind, the main &lt;a href="http://www.spore.com/"&gt;Spore&lt;/a&gt; soundtrack and sound effects are blaring loudly as normal.&lt;br /&gt;&lt;br /&gt;So I crank up the volume to try to hear the bleeping a bit clearer. The best way to describe what it sounded like was as if it was music being piped through a &lt;a href="http://en.wikipedia.org/wiki/PC_speaker"&gt;PC speaker&lt;/a&gt; on the alien ship. You know, that old-school one channel &lt;a href="http://en.wikipedia.org/wiki/PC_speaker"&gt;PC speaker&lt;/a&gt; music? I'm listening to it, I'm trying to place it...and then it hits me:&lt;br /&gt;&lt;br /&gt;It's the theme song to &lt;a href="http://en.wikipedia.org/wiki/M.u.l.e."&gt;M.U.L.E&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here's a link to the &lt;a href="http://www.digitpress.com/dpsoundz/mid/mule.mid"&gt;original theme song in MIDI format&lt;/a&gt;, which is about as close a representation to the original song as you are probably going to get.&lt;br /&gt;&lt;br /&gt;Here's a &lt;a href="http://www.worldofmule.net/tiki-index.php"&gt;fan site dedicated to dedicated to keeping the interest in M.U.L.E. alive and well&lt;/a&gt; for generations to come.&lt;br /&gt;&lt;br /&gt;Bravo, &lt;a href="http://en.wikipedia.org/wiki/Will_Wright_%28game_designer%29"&gt;Will Wright&lt;/a&gt;; &lt;a href="http://en.wikipedia.org/wiki/Dani_Bunten"&gt;Dani&lt;/a&gt; would be very proud.&lt;br /&gt;&lt;br /&gt;Greatest. Easter Egg. &lt;span style="font-weight: bold; font-style: italic;"&gt;EVER&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-7232717785574324862?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/7232717785574324862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=7232717785574324862' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/7232717785574324862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/7232717785574324862'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/09/spore-easter-egg-honors-mule.html' title='Spore Easter Egg Honors M.U.L.E.'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-8116155105754575447</id><published>2008-09-08T14:04:00.008-06:00</published><updated>2008-10-23T11:21:35.513-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='commons net'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='lastmodified'/><category scheme='http://www.blogger.com/atom/ns#' term='jakarta'/><category scheme='http://www.blogger.com/atom/ns#' term='cfftp'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='obscure'/><title type='text'>Obscure CFFTP LastModified Bug</title><content type='html'>Stumbled across a very obscure bug today using CFFTP. A colleague demonstrated a very basic piece of cf code that connected to an FTP server, retrieved a listing of files and displayed their attributes, one of which was the "Last Modified" date. In this example, there were four files, three of which were dated September of 2008, and one in September of 2007. He then proceeded to show me a command-prompt FTP connection to the same server, and listed the same directory.&lt;br /&gt;&lt;br /&gt;All four files reported their last modified date in September of 2008.&lt;br /&gt;&lt;br /&gt;Why would ColdFusion report one of the files as having a last modified date of 2007, when all four were clearly marked 2008? To get to the bottom of this, I had to dig deep.&lt;br /&gt;&lt;br /&gt;First off, it's essential to know that under the hood, ColdFusion takes advantage of the &lt;a href="http://jakarta.apache.org/"&gt;Apache Jakarta project&lt;/a&gt; for some key functionality; specifically the &lt;a href="http://commons.apache.org/net/"&gt;Commons Net&lt;/a&gt; component of the  &lt;a href="http://commons.apache.org/"&gt;Commons&lt;/a&gt; library for FTP functions. Next, it's essential to know that the &lt;a href="ftp://ftp.rfc-editor.org/in-notes/rfc959.txt"&gt;FTP standard&lt;/a&gt; doesn't have any specification for the correct format of date/time values (never mind the fact that the FTP RFC is &lt;span style="font-weight: bold; font-style: italic;"&gt;23 years old&lt;/span&gt;). As a result of this, FTP servers can implement the display of a date/time any way they want...and many do...in an incomplete format.&lt;br /&gt;&lt;br /&gt;In some cases, you end up with a "short date" format, that is...a date without a year, which is assumed to be the current year. How the full date in interpreted and passed back to the caller is left to the programmer/library/API, which in this case...is up to &lt;a href="http://commons.apache.org/net/"&gt;Commons Net&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Throw into the mix the issue of the local and remote server dates being out of sync, and you may end up with the possibility of an FTP listing where a file on a remote system incorrectly assumes a date in the future.&lt;br /&gt;&lt;br /&gt;In our example above, the last modified date/time on the file was September 8, 1:11pm. We ran the initial test and reproduced the bug some time before noon. At that precise moment of the test, that remote file's modified date of '09/08/08 13:11:00' was effectively in the future.&lt;br /&gt;&lt;br /&gt;With me so far? Now...combine all of those crazy facts together, and then take a peek at &lt;a href="https://issues.apache.org/jira/browse/NET-83"&gt;this thread&lt;/a&gt; on the bug report for &lt;a href="http://commons.apache.org/net/"&gt;Commons Net&lt;/a&gt; regarding year recognition. Sure enough, date synchronization issues can cause incorrect year parses, and often return a value which is a year in the past. I had one of our Java engineers confirm this by downloading the 1.4 Commons jar file and building a quick FTP app to test. 100% reproducible.&lt;br /&gt;&lt;br /&gt;Although the bug report lists that 1.4 is the affected version (and is fixed), it doesn't appear that any &lt;a href="http://kb.adobe.com/selfservice/viewContent.do?externalId=kb402604&amp;amp;sliceId=1"&gt;ColdFusion 8 hotfixes&lt;/a&gt; address the issue. Until then, be aware.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-8116155105754575447?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/8116155105754575447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=8116155105754575447' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/8116155105754575447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/8116155105754575447'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/09/obscure-cfftp-lastmodified-bug.html' title='Obscure CFFTP LastModified Bug'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-6279456719718610936</id><published>2008-09-06T21:58:00.006-06:00</published><updated>2008-10-23T11:22:35.562-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wow lemmings'/><category scheme='http://www.blogger.com/atom/ns#' term='rock band 2'/><category scheme='http://www.blogger.com/atom/ns#' term='wotlk'/><category scheme='http://www.blogger.com/atom/ns#' term='guild recruitment'/><category scheme='http://www.blogger.com/atom/ns#' term='death knight'/><category scheme='http://www.blogger.com/atom/ns#' term='spore'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='analytics'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><title type='text'>WoW Lemmings Update Soon</title><content type='html'>The one and only &lt;a href="http://www.worldofwarcraft.com/"&gt;World of Warcraft&lt;/a&gt; guild recruitment tool, &lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt;, has been neglected as of late, due to my being inducted into the &lt;a href="https://beta.worldofwarcraft.com/expansion/"&gt;WotLK Beta&lt;/a&gt;, as well as my focus being diverted into the upcoming 'creator-of-all-things' god-sim &lt;a href="http://www.spore.com/"&gt;Spore&lt;/a&gt; (and when I say upcoming, I mean &lt;a href="http://totalspore.com/articles/official-spore-news/spore-release-date-official/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;tomorrow&lt;/span&gt;&lt;/a&gt;), as well as desperately trying to finish &lt;a href="http://www.rockband.com/"&gt;Rock Bank&lt;/a&gt; on expert drums as I prepare for the release of &lt;a href="http://www.rockband2.com/"&gt;Rock Band 2&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;However, when it does get my attention, &lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt; is boasting some cool new features I'm about ready to start beta testing. Most of these features &lt;a href="http://elitistjerks.com/f15/t21505-wow_lemmings_new_guild_recruitment_tool/"&gt;have come from feedback&lt;/a&gt;, but I also continue to examine the UI and try to leverage my professional experience as a web-app developer to keep the tool slim, efficient, and above all, &lt;span style="font-style: italic;"&gt;keep recruitment tasks accelerated&lt;/span&gt;. To this end, here are a list of upcoming improvements:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Post Flagging&lt;/span&gt;, which allows you to mark players you've already looked into.  By default, they are unflagged, and with a couple of simple clicks, you can either give them a "thumbs-up" or a "thumbs-down". This feature was easy enough to implement that it is live now.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;"Search by Keyword" filter&lt;/span&gt; added, with autosuggest support.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Server Preference &amp;amp; Transfer Eligibility&lt;/span&gt;: You can now specify your region and server, and by doing so, &lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt; will automatically highlight rows of players that are eligible for a transfer to your server, &lt;span style="color: rgb(0, 153, 0);"&gt;green&lt;/span&gt; if they can, and &lt;span style="color: rgb(255, 0, 0);"&gt;red&lt;/span&gt; if they cannot. Players with unknown realms will remain uncolored.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;More robust cleanup of missing posts:&lt;/span&gt; Post cleanup is handled from multiple directions now, both from the &lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt; parser, and via user activity. Click on a link on &lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt; to get more info on a player and end up on a 404? &lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt; will track that for you and remove the bad post from the cache for future visitors.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.worldofwarcraft.com/info/classes/deathknight/"&gt;&lt;span style="font-weight: bold;"&gt;Death Knight&lt;/span&gt;&lt;/a&gt; support added.&lt;/li&gt;&lt;/ul&gt;Beta testing for these features will be available in the weeks to come.&lt;br /&gt;&lt;br /&gt;Along with all of these new additions, I have been working on a brand new module for &lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt;, one that I hope will further assist putting guild recruiters and players together. Without revealing too much, I can say that I'm very excited about this upcoming technology, as it harnesses the power of &lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt;' existing user base, as well as data coming out of &lt;a href="http://www.google.com/analytics"&gt;Google Analytics&lt;/a&gt;. This, coupled with some of the more well-known heavily-visited WoW-based fan sites should result in a whole new way of guilds recruiting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-6279456719718610936?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/6279456719718610936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=6279456719718610936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/6279456719718610936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/6279456719718610936'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/09/wow-lemmings-update-soon.html' title='WoW Lemmings Update Soon'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-4819766322347220953</id><published>2008-09-02T14:38:00.006-06:00</published><updated>2008-10-23T11:24:46.748-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='symantec endpoint'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><title type='text'>Chrome Polish Needed?</title><content type='html'>Just tried to give the new Google web-browser "&lt;a href="http://www.google.com/chrome"&gt;Chrome&lt;/a&gt;" a try. Unfortunately, it doesn't load. &lt;span style="font-style: italic;"&gt;At all&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Ah well, can't win 'em all, eh Google? I'm sure they're not terribly upset.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[edit]&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was able to get it installed and running at home, and so far it's very nice. Super fast, clean interface...I'll report more later.&lt;br /&gt;&lt;br /&gt;[edit]&lt;br /&gt;&lt;br /&gt;Turns out Chrome would not run due to it not playing nice with &lt;a href="http://code.google.com/p/chromium/issues/detail?id=38"&gt;Symantec Endpoint&lt;/a&gt;. Hopefully Google will address this reasonably soon, as it seems besides the point to disable sandbox security in order to make it run, when &lt;a href="http://www.google.com/googlebooks/chrome/"&gt;half their bloody comic&lt;/a&gt; talks about how Chrome is all about rethinking security.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-4819766322347220953?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/4819766322347220953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=4819766322347220953' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/4819766322347220953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/4819766322347220953'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/09/chrome-polish-needed.html' title='Chrome Polish Needed?'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-4967028243799112852</id><published>2008-09-02T10:28:00.007-06:00</published><updated>2008-10-23T11:25:29.346-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='empty cache'/><category scheme='http://www.blogger.com/atom/ns#' term='query'/><category scheme='http://www.blogger.com/atom/ns#' term='cfobjectcache'/><title type='text'>CF and Programmatically Emptying the Query Cache</title><content type='html'>[edit]&lt;br /&gt;&lt;br /&gt;This post is now moot, thanks to Ray Camden! The solution is, of course:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&amp;lt;cfobjectcache action="clear"&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;[/edit]&lt;br /&gt;&lt;br /&gt;CF Programmers, don't forget that since CF7, we've had access to the Administrator through an API which gives us the ability to do things we wouldn't normally be able to do, such as empty the query cache.&lt;br /&gt;&lt;br /&gt;The old-school method to empty a query cache was to call the same &amp;lt;cfquery&amp;gt;, but pass it a createTimeSpan() in the past, like so:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;cfquery name="getEmployees" datasource="dsn" cachedwithin="#createTimeSpan(0,0,0,-1)#"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SELECT e.*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;FROM Employees e&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;/cfquery&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Simple and easy, but it requires the query to actually be called. What if your query is one of hundreds, buried deep within your application, and could potentially be cached a number of ways with varying WHERE clause parameters? You essentially have to have a script set up to re-call those pages/queries to empty them out. Not the greatest solution.&lt;br /&gt;&lt;br /&gt;A better way to do it is to grab a hold of the Administrator API, access the runtime CFC, find the cache property that holds the maximum number of cached queries, and reset it: first by setting it to 0, and then back to its original state. Like so:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;cfscript&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;adminObj =   createObject('component','cfide.adminapi.administrator').login(myCFServerPassword);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;runtimeObj = createObject('component','cfide.adminapi.runtime');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;currentMaxQueries = runtimeObj.getCacheProperty('MaxCachedQuery');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;runtimeObj.setCacheProperty('MaxCachedQuery', 0);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;runtimeObj.setCacheProperty('MaxCachedQuery', currentMaxQueries);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;/cfscript&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Although you are only manipulating the property in the CF Administrator that controls the maximum number of cached queries currently held in memory, &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;the side-effect of setting it to zero is that CF empties all the current queries in the cache&lt;/span&gt;. Also note that you must first login to the CF Administrator programmatically by instantiating the cfide.adminapi.administrator CFC and passing it the CF Admin password for your particular installation.&lt;br /&gt;&lt;br /&gt;Keep in mind, this is a per installation server change, so CF people in a multi-hosted environment that don't deploy in multiple server instances are probably going to want to use this technique with care and finesse. It also requires you passing around the CF Admin password in your code, which, if handled incorrectly, is a security risk. However, if you have the appropriate access, this is a far easier technique on forcing the db queries to be flushed.&lt;br /&gt;&lt;br /&gt;Side note: &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt;, why not just add clearQueryCache() to the adminapi.runtime CFC? You've gone half the distance with clearTrustedCached(), and since the technique above works, there's really no need to keep having CF developers jump through hoops.&lt;br /&gt;&lt;br /&gt;Besides, haven't CF developers been asking for that for years? Or did you add it somewhere else, and I just missed the memo...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-4967028243799112852?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/4967028243799112852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=4967028243799112852' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/4967028243799112852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/4967028243799112852'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/09/cf-and-programmatically-emptying-query.html' title='CF and Programmatically Emptying the Query Cache'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-2075567622835147622</id><published>2008-08-28T12:58:00.003-06:00</published><updated>2008-10-23T11:27:15.292-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jane&apos;s addiction'/><category scheme='http://www.blogger.com/atom/ns#' term='drumming'/><category scheme='http://www.blogger.com/atom/ns#' term='rock band 2'/><category scheme='http://www.blogger.com/atom/ns#' term='no doubt'/><category scheme='http://www.blogger.com/atom/ns#' term='megadeth'/><category scheme='http://www.blogger.com/atom/ns#' term='foo fighters'/><category scheme='http://www.blogger.com/atom/ns#' term='rush'/><category scheme='http://www.blogger.com/atom/ns#' term='red hot chili peppers'/><category scheme='http://www.blogger.com/atom/ns#' term='don&apos;t fear the reaper'/><category scheme='http://www.blogger.com/atom/ns#' term='been caught stealing'/><category scheme='http://www.blogger.com/atom/ns#' term='stevie ray vaughn'/><category scheme='http://www.blogger.com/atom/ns#' term='moving pictures'/><title type='text'>More Rock Band Full Albums Coming</title><content type='html'>Not surprisingly, more info is coming out on full albums that will be released in the coming months for Rock Band 1/2, now that the RB2 PR engine is revving up. Not a bad selection, I have to say:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Colour-Shape-Foo-Fighters/dp/B000QEIORG/ref=sr_1_1?ie=UTF8&amp;amp;s=music&amp;amp;qid=1219950396&amp;amp;sr=1-1"&gt;Foo Fighters - The Colour and the Shape&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Blood-Sugar-Magik-Chili-Peppers/dp/B000002LQR/ref=sr_1_1?ie=UTF8&amp;amp;s=music&amp;amp;qid=1219950421&amp;amp;sr=1-1"&gt;Red Hot Chili Peppers - Blood Sugar Sex Magik&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Nothings-Shocking-Janes-Addiction/dp/B000002LEE/ref=sr_1_1?ie=UTF8&amp;amp;s=music&amp;amp;qid=1219950448&amp;amp;sr=1-1"&gt;Jane's Addiction - Nothing's Shocking&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Peace-Sells-But-Whos-Buying-Megadeth/dp/B000002U9U/ref=sr_1_1?ie=UTF8&amp;amp;s=music&amp;amp;qid=1219950468&amp;amp;sr=1-1"&gt;Megadeth - Peace Sells...But Who's Buying?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Texas-Stevie-Vaughan-Double-Trouble/dp/B00000ICN5/ref=sr_1_1?ie=UTF8&amp;amp;s=music&amp;amp;qid=1219950489&amp;amp;sr=1-1"&gt;Stevie Ray Vaughn - Texas Flood&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Apparently a best-of compilation album of &lt;a href="http://www.amazon.com/No-Doubt/e/B000APEZ5Q/"&gt;No Doubt&lt;/a&gt; songs will also be released. Nice pick of content there, the most surprising of which was the SRV album, which I mostly just recall from hearing my Mother play it a lot while I was growing up. I am still a little depressed that they side-stepped &lt;a href="http://www.amazon.com/Been-Caught-Stealing-Janes-Addiction/dp/B000002KX3/ref=sr_1_1?ie=UTF8&amp;amp;s=music&amp;amp;qid=1219950635&amp;amp;sr=1-1"&gt;Been Caught Stealing&lt;/a&gt;. I'm not a huge fan of the "Foo" or Megadeth either, but I'm sure that will appeal to a large crowd.&lt;br /&gt;&lt;br /&gt;Interesting to note that this news item came out the same week as &lt;a href="http://www.rockband.com/forums/showthread.php?t=74541"&gt;the "Moving Pictures" shenanigans&lt;/a&gt;, which caused the RB community to spin out of control like the God damned &lt;a href="http://en.wikipedia.org/wiki/Tasmanian_Devil_%28Looney_Tunes%29"&gt;Tazmanian Devil&lt;/a&gt;. I heard a number of rumors on why &lt;a href="http://en.wikipedia.org/wiki/Rush_%28band%29"&gt;Rush&lt;/a&gt;'s classic album was pulled at the last minute, including their managers throwing some kind of fit, but most of them sound like pure conspiracy theory. It probably just ended up being a bug in the code.&lt;br /&gt;&lt;br /&gt;I need to hurry up and get through RB1 on Expert Drums. Currently stuck on: &lt;a href="http://www.youtube.com/watch?v=0lHI0jr1yUA"&gt;Don't Fear the Reaper&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-2075567622835147622?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/2075567622835147622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=2075567622835147622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/2075567622835147622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/2075567622835147622'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/08/more-rock-band-full-albums-coming.html' title='More Rock Band Full Albums Coming'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-2690753643213295216</id><published>2008-08-27T14:30:00.004-06:00</published><updated>2008-11-12T14:38:56.998-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stratholme'/><category scheme='http://www.blogger.com/atom/ns#' term='wotlk'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><title type='text'>WotLK Music</title><content type='html'>The music I've heard so far for the upcoming World of Warcraft expansion, "Wrath of the Lich King", is pretty impressive (as expected), but none gets me quite as giddy as the music from the Caverns of Time: Stratholme.&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://www.odeo.com/flash/audio_player_standard_gray.swf" quality="high" allowscriptaccess="always" wmode="transparent" type="application/x-shockwave-flash" flashvars="valid_sample_rate=true&amp;amp;external_url=http://www.fileden.com/files/2008/8/27/2068994/CT_StratholmePastAlleyIntro.mp3" pluginspage="http://www.macromedia.com/go/getflashplayer" width="300" height="52"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-2690753643213295216?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/2690753643213295216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=2690753643213295216' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/2690753643213295216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/2690753643213295216'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/08/wotlk-music.html' title='WotLK Music'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-3246020572388299122</id><published>2008-08-27T12:22:00.003-06:00</published><updated>2008-10-23T11:31:19.114-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='painkiller'/><category scheme='http://www.blogger.com/atom/ns#' term='rock band 2'/><category scheme='http://www.blogger.com/atom/ns#' term='panic attack'/><category scheme='http://www.blogger.com/atom/ns#' term='harmonix'/><category scheme='http://www.blogger.com/atom/ns#' term='song difficulties'/><title type='text'>Rock Band 2 Song Difficulties</title><content type='html'>I see &lt;a href="http://www.harmonix.com/"&gt;Harmonix&lt;/a&gt; has &lt;a href="http://au.xbox360.ign.com/articles/902/902390p4.html"&gt;made public a list&lt;/a&gt; of all the difficulties for their Rock Band 2 songs. I've created a playlist on my iPod that contains all these songs and have been listening to them during my daily commute to get into "the zone". I have to say...the drumming on &lt;a href="http://www.youtube.com/watch?v=JAagedeKdcQ"&gt;Painkiller&lt;/a&gt; and &lt;a href="http://www.youtube.com/watch?v=huQtK9QwWrw"&gt;Panic Attack&lt;/a&gt; scare the absolute shit out of me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-3246020572388299122?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/3246020572388299122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=3246020572388299122' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/3246020572388299122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/3246020572388299122'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/08/rock-band-2-song-difficulties.html' title='Rock Band 2 Song Difficulties'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6556575758010903163.post-2809533476417915656</id><published>2008-08-26T15:52:00.003-06:00</published><updated>2008-10-23T11:31:56.940-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='descendants of draenor'/><category scheme='http://www.blogger.com/atom/ns#' term='wow lemmings'/><category scheme='http://www.blogger.com/atom/ns#' term='drumming'/><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='rock band 2'/><category scheme='http://www.blogger.com/atom/ns#' term='hobbies'/><category scheme='http://www.blogger.com/atom/ns#' term='guild recruitment'/><category scheme='http://www.blogger.com/atom/ns#' term='family'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><title type='text'>Blogging Begins</title><content type='html'>After a number of false starts, I've finally gotten around to putting up a blog. I debated going anonymously, but in the end, I think I can control my rants without incriminating myself or offending friends and family. Besides, if I'm anonymous, how would they know I'm insulting them?&lt;br /&gt;&lt;br /&gt;This blog will mostly focus on my various ramblings involving one of several categories:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;My Career&lt;/span&gt; - &lt;a href="http://www.adobe.com/products/coldfusion/"&gt;ColdFusion&lt;/a&gt; Programmer/Application Developer.&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;My Family&lt;/span&gt; - A lovely wife and two clever kids; one boy and one girl.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;My Hobbies&lt;/span&gt; - Mostly computer and video games, with the most recent of which being &lt;a href="http://en.wikipedia.org/wiki/Drummer"&gt;drumming&lt;/a&gt; in &lt;a href="http://www.rockband.com/"&gt;Rock Band&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://www.descendantsofdraenor.com/"&gt;My Guild&lt;/a&gt; - I manage a &lt;a href="http://www.worldofwarcraft.com/"&gt;World of Warcraft&lt;/a&gt; guild and have been doing so for the last four years.&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;My Sites&lt;/span&gt; - Presently, just &lt;a href="http://www.wowlemmings.com/"&gt;WoW Lemmings&lt;/a&gt;, which is a guild recruitment tool I built in ColdFusion. I've built others, but they were for companies I worked for: WoW Lemmings is my own personal baby at the moment.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I may ramble on other things as well, but this will be a good start.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6556575758010903163-2809533476417915656?l=bakuenryu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bakuenryu.blogspot.com/feeds/2809533476417915656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6556575758010903163&amp;postID=2809533476417915656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/2809533476417915656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6556575758010903163/posts/default/2809533476417915656'/><link rel='alternate' type='text/html' href='http://bakuenryu.blogspot.com/2008/08/blogging-begins.html' title='Blogging Begins'/><author><name>Hanzo</name><uri>http://www.blogger.com/profile/05110605868875966328</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
