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

<channel>
	<title>Untitled</title>
	<atom:link href="http://ammonlauritzen.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://ammonlauritzen.com/blog</link>
	<description>and still for good reason.</description>
	<lastBuildDate>Tue, 13 Dec 2011 21:29:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>console2</title>
		<link>http://ammonlauritzen.com/blog/2011/05/31/console2/</link>
		<comments>http://ammonlauritzen.com/blog/2011/05/31/console2/#comments</comments>
		<pubDate>Tue, 31 May 2011 22:24:07 +0000</pubDate>
		<dc:creator>Ammon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://ammonlauritzen.com/blog/?p=1330</guid>
		<description><![CDATA[For -years- I have hoped and searched and wished and moaned for lack of a halfway decent terminal emulator on Windows. Specifically, one that: Lets me use my standard unix toolset. Gives me a command line interface to the host machine WITHOUT requiring me to do something ridiculous like ssh&#8217;ing to localhost or firing up [...]]]></description>
			<content:encoded><![CDATA[<p>For -years- I have hoped and searched and wished and moaned for lack of a halfway decent terminal emulator on Windows. Specifically, one that:</p>
<ol>
<li>Lets me use my standard unix toolset.</li>
<li>Gives me a command line interface to the host machine WITHOUT requiring me to do something ridiculous like ssh&#8217;ing to localhost or firing up an x11 server&#8230;</li>
<li>Realizes that sometimes the display is wider than 80 characters&#8230;</li>
<li>Provides customizable color codes (#006 on black really stinks).</li>
<li>Doesn&#8217;t set TERM=something-nobody-supports.</li>
</ol>
<p>One wouldn&#8217;t think this was too much to ask. But none of the major open source projects of which I am aware provide this. I even tried my hand at writing one myself but got distracted before it was any good.</p>
<p>So, for years, I have used Cygwin xterms and rxvt as a mildly tolerable alternative to, well, nothing.</p>
<p>Today, a coworker and I discovered a 3-year-old blog post promoting <a href='http://console.sf.net'>Console</a>, a GPL licensed CMD.exe replacement that matches all of my base criteria plus my big dream feature of tabs. TABS!</p>
<p>Console2, Where have you been all my life?!</p>
<p>The project is ancient &#8211; but I was using linux desktops for work back in its early days so that probably accounts for my missing it back then.</p>
<p>In the grand tradition of old Sourceforge projects, there is no installer. You just decompress it somewhere and run the exe directly.</p>
<p>When I launched it the first time, I was unsurprised by the 80&#215;25 courier 10 cmd.exe shell it launched by default. I opened the settings menu and was very very pleased with what I found on the first screen. A few minutes later, I had it pointing at my cygwin install:</p>
<div style='text-align:center'><img src="http://ammonlauritzen.com/blog/wp-content/uploads/2011/05/console2-settings.png" alt="" title="console2-settings" width="327" height="62" class="alignnone size-full wp-image-1332" /></div>
<p><br/><br />
And a few minutes later:</p>
<div style='text-align:center'><img src="http://ammonlauritzen.com/blog/wp-content/uploads/2011/05/console2-is-love.png" alt="" title="console2-is-love" width="597" height="764" class="alignnone size-full wp-image-1331" /></div>
<p><span id="more-1330"></span><br />
I am a very happy camper now. It is apparently still an actively developed project &#8211; the last SF commit was two days ago.</p>
<p>The only feature requests I can think of is dynamic tab renaming to follow my host/path as I ssh around places, and profiles that recognize when I am connected to a given host and therefore tint the background to warn that I am on a production server, etc&#8230;</p>
<p>To be fair, this is a pretty minor gripe as the application actually has similar functionality already &#8211; you can configure individual tab templates, and can set ssh as your shell:</p>
<div style='text-align:center'><img src="http://ammonlauritzen.com/blog/wp-content/uploads/2011/05/console2-tiff-tab-settings.png" alt="" title="console2-tiff-tab-settings" width="537" height="550" class="alignnone size-full wp-image-1335" /></div>
<p><br/><br />
And if you select the little dropdown next to the new tab button you can choose to launch the different kind of tab:</p>
<div style='text-align:center'><img src="http://ammonlauritzen.com/blog/wp-content/uploads/2011/05/console2-tiff.png" alt="" title="console2-tiff" width="597" height="534" class="alignnone size-full wp-image-1334" /></div>
<p><br/><br />
So&#8230; I&#8217;m content. This is the coolest toy I&#8217;ve discovered in a very long time.</p>
]]></content:encoded>
			<wfw:commentRss>http://ammonlauritzen.com/blog/2011/05/31/console2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>rift altohol purification system</title>
		<link>http://ammonlauritzen.com/blog/2011/03/04/rift-altohol-purification-system/</link>
		<comments>http://ammonlauritzen.com/blog/2011/03/04/rift-altohol-purification-system/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 20:14:13 +0000</pubDate>
		<dc:creator>Ammon</dc:creator>
				<category><![CDATA[gaming]]></category>
		<category><![CDATA[clerics]]></category>
		<category><![CDATA[healing]]></category>
		<category><![CDATA[numberchasing]]></category>
		<category><![CDATA[rift]]></category>
		<category><![CDATA[specs]]></category>

		<guid isPermaLink="false">http://ammonlauritzen.com/blog/?p=1272</guid>
		<description><![CDATA[I am a well-known altoholic, so I always plan on rolling one of everything. The game&#8217;s class mechanics are kind to me in this respect &#8211; as I only need to level 4 characters to experiment with all of my options. So after some experience with several good days of beta playtime and almost as [...]]]></description>
			<content:encoded><![CDATA[<p>I am a well-known altoholic, so I always plan on rolling one of everything. The game&#8217;s class mechanics are kind to me in this respect &#8211; as I only need to level 4 characters to experiment with all of my options. So after some experience with several good days of beta playtime and almost as much time poring over each and every skill tree in the game&#8230; I&#8217;ve decided upon five specs that I am hoping to get a chance to play with next month. Two for my cleric, and one more unique one for each of the other classes.</p>
<p>It&#8217;s time to talk about the second of my 5 chosen specs.</p>
<p>To be fair, the cleric specs are the ones I&#8217;ve spent the most time considering and the others are just being thrown in for completeness &#8211; and because they hopefully show some of the cool things that should be possible in this game. I&#8217;ve already shared my tanking cleric spec, and it is proving to be quite successful. I am level 27 now and have tanked invasion bosses with it &#8211; but will admit that I&#8217;ve not done any instances with this build since I&#8217;m uncomfortable tanking pugs in unfamiliar content.</p>
<p>One thing with which I am comfortable in unfamiliar content, however, is healing. At 18, I successfully healed an IT run with a Warden build that I kind of slapped together on my way to the instance. It was not pleasant. Warden healing is very effective solo or on trash pulls, but its lack of mitigation and burst heals make for very stressful boss fights. I found myself depending heavily on my Sentinel off-spec spells to keep the tank standing.</p>
<p>Last night, my guild ran DSM 4 times in succession &#8211; after a failed clear attempt the night before where we did not bring enough dps. For three of those four clears, I main healed the group &#8211; which shifted membership slightly between each run so it was a unique experience every time. The build I used was level 26 Purifier/Sentinel/Warden containing most of the purifier points planned for the larger level 50 build discussed here and a handful of the sentinel ones. Overall, it went very well and with the exception of the final boss fight, I didn&#8217;t have any problems &#8211; but even then, I was able to keep everyone standing and had zero problems with threat generation, mana efficiency, or self preservation.<br />
<span id="more-1272"></span><br />
The other thing that last night taught me is that I don&#8217;t think I&#8217;m going to play any alt very seriously any time soon. With three roles (Tank, Healer, DPS) that I can switch between with impunity on my cleric main, I am getting that variation without having to replay the same content twice. And I like it.</p>
<h3>Healing Cleric (Sentinel/Purifier/Warden)</h3>
<p>My current impression of the three healing souls is:</p>
<ul>
<li><b>Sentinel</b> &#8211; Best general purpose soul. Probably suitable as a primary spec for soloing. Good for group and tank healing. Appropriate as a primary or secondary spec. Lousy as zero-point third spec, passable as 3rd if you can spare 4 points to get the endurance buff and some +healing or +spell power.</li>
<li><b>Purifier</b> &#8211; Best single-target healing soul. Completely unsuited as a primary for soloing. Good for tank healing, difficult for groups who take a lot of splash damage. Appropriate as a primary or zero-point spec. Unimpressive as second unless at least 20 or so points can be invested.</li>
<li><b>Warden</b> &#8211; Best at&#8230; I&#8217;m not sure what, keeping the whole group topped off through aoe and bad pulls? Great when added to anything else. Good for group healing, bad for tank healing, good for self healing. Appropriate as a secondary or tertiary spec. Crazy as primary unless at least 20 points are invested.</li>
</ul>
<p>The healing build that I&#8217;d put together before head-start and am still planning on is 38/24/4 Sentinel/Purifier/Warden:</p>
<h4><a href='http://rift.zam.com/en/stc.html?t=00Gej.vxoxMzz.L.E0Ebfotco'>http://rift.zam.com/en/stc.html?t=00Gej.vxoxMzz.L.E0Ebfotco</a></h4>
<p>I&#8217;m not planning on solo leveling with this build, so I&#8217;m not going to break it down like I did with the Justicar. Let&#8217;s walk through it backward, from least to most invested.</p>
<h3>warden</h3>
<p>With this build, I&#8217;m not really getting anything very interesting out of Warden. It might be possible to swap out Druid for the faerie&#8217;s passive heals to similar effect. But what 4 points in Warden does buy me is +8% mana to work with and a mana efficient instant cast HoT.</p>
<p>I find this much more useful than what 4 extra points can buy me in either Purifier or Sentinel. I would really want 6 more points in either one to want to invest in them further.</p>
<h3>purifier</h3>
<p>The reason for dropping points into Purifier is damage prevention. I want to harden my tank from damage and give myself more breathing room in case the rest of the group needs a bit of topping off.</p>
<p>At tier 1, I am taking +5% to heal crit and am then coming back to drop 3 more points in +wisdom because the 5 point tier 3 talent fails to impress me. I could probably swap the allocation of these 8 points any different way with similar results.</p>
<p>At tier 2, I am taking a full five points in <b>Protection of the Ancestors</b> &#8211; +50% to bubble strength because that&#8217;s the point of my subbing Purifier in the first place. The other two talents are more soloing oriented &#8211; both of them harden the caster from incoming damage. Since the zero point ability is already a better bubble than either of these, and I&#8217;m already improving it with the other 5 points at this tier, AND I trust my tank to pull things off of me after too long&#8230; I see no point in sinking 3 more here.</p>
<p>Tier 3 has one really cool talent, <b>Caregiver&#8217;s Blessing</b>. If I keep this buff up, every single-target heal I drop (including that cheap instant HoT) also procs a small bubble on the target as well. This makes it much less stressful to deal with mages who AoE before the tank has aggro, etc&#8230; The other tier 3 talent does not strike me as terribly cost effective &#8211; 5 points for a 10% chance of increasing my next single-target heal by 30%? Or in other words, +3% to sustained single target healing for 5 skill points.</p>
<p>Tier 4 is nice, I want it all. Well, except for the improvement to the reactive self-heal that I ignored at tier 2.</p>
<p><b>Healing Flare</b> is a spammable instant-cast direct heal. It is inefficient and smallish when compared to the zero point Sentinel instant heal, but it has no cooldown. And there are a lot of times when mana efficiency matters less than the ability to float someone for a couple more seconds until the cooldown on something more permanent finishes, or the boss does.</p>
<p><b>Caregiver&#8217;s Grace</b> just buffs the blessing by 2 more charges &#8211; meaning 5 single target heals proccing these bubbles. Combined with the spammable nature of the aforementioned Flare spell, this should make it much easier to create breathing room to drop that bigger spell/shield/whatever we&#8217;re waiting for. I could have dropped a 3rd point here, but it is a choice between leaving this talent one point short and leaving Ancestral Flame one point short&#8230; and the latter is more important.</p>
<p><b>Ancestral Flame</b> is one of the main reasons I&#8217;m in the tree. 60% of spell power into a bubble whenever I drop my big single-target heal (90% after Protection of the Ancestors).</p>
<p>My final point in Purifier goes to the tier 5 talent <b>Latent Blaze</b>. This is basically just a weaker version of the Sentinel 44 point <b>Vigilance</b> but for only 21 points, it ought to be. Latent Blaze drops a single reactive heal charge on the target that lasts until they either drop below 30% health (bad) or the 5 minute buff expires (good). The downside is that it only has one charge and can only be used once per target per 2 minutes. The upside is that it is yet one more buffer between my group and death and I could easily maintain this on two or three party members at once if necessary.</p>
<blockquote><p>
<i>As an aside, Latent Blaze -did- save my group the other night during the final boss of DSM. Three of the party got hit by a fire crystal and while I was busy taking care of them, the tank dropped to 50%. This isn&#8217;t terrible by itself, but the boss kept critting him or something and my heals were having a hard time keeping up. He probably hit 10% and popped his Latent Blaze charge before I was able to start catching back up again, so&#8230; yeah. I like the spell. It&#8217;s not awesome, but it does the trick.</i>
</p></blockquote>
<p>The interesting root abilities I pick up from Purifier are of course the awesome zero point <b>Shield of the Ancestors</b>, which I use instead of healing myself immediately if caught in AoE or while waiting for the tank to pull aggro off of me.</p>
<p>At 4 points, I get a 1.5s cast direct heal. At 8 (and again at 20), I get a party endurance buff. At 10, I get a rez. At 12, I can remove curse, disease, and poison.</p>
<p>At 14 points in Purifier, I get <b>Restorative Flame</b>, the big 3 second heal that works with Ancestral Flame to bubble my target as well as heal them. 16 points gives me <b>Ward of the Ancestors</b>, a straight up shield for those situations where the passive shielding isn&#8217;t enough.</p>
<p><b>Searing Transfusion</b> is available at 18, and is an interesting sort of instant direct heal. It increases the target&#8217;s max hp by 25% of my own for 10 seconds while also healing them for that same amount. This is potentially either very cool or exceptionally useless. I&#8217;ve yet to see it in action to determine which.</p>
<p><b>Flashover</b> is the other 20 point root ability and it simply guarantees that my next heal will be a crit. This is just generally happy.</p>
<h3>sentinel</h3>
<p>With 38 points dropped in a tree, it&#8217;s one of those times where the omissions are more interesting than the inclusions. I&#8217;ll discuss both here.</p>
<p>I am starting off with 10 points in tier 1. This gives +5% spell power and +5% to healing. What I am not taking are 2 points to add a snare to the zero point sentinel nuke&#8230;</p>
<p>Tier 2 is similar, with another 10 points. These increase the crit bonus of my heals by 20% and reduce the mana cost of my heals by 10%. I am not dropping a point in getting a damage over time spell &#8211; which might actually go very well with a Justicar healing build, but that&#8217;s a different animal <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>For tier 3, I am not taking Luminous Gaze, a debuff that increases the crit chance against an affected enemy by 5%. Again, this one would probably play nicely with other builds, just not a back row healer spec. I am spending 3 points to increase the radius of my AoE heals by 3 meters and 2 more to increase their effectiveness by 2%.</p>
<p>I&#8217;m not in love with either of these, but I don&#8217;t have a lot of other choices that directly increase my healing output. The odds that +2% to an AoE heal will make a difference in a fight are only slightly more than the odds that a 3 meter radius increase will catch the party member who actually needed the heal in the first place&#8230; so shrug.</p>
<p>Tier 4 is nicer. Two points in <b>Protect the Flock</b> turns my AoE heals into small defensive buffs, reducing incoming damage to all affected by 5% for 6 seconds. That is nice because if I am ever dropping AoE healing&#8230; well, stuff has either gone poorly or we&#8217;re facing a boss that drops AoE damage. So hardening the whole group makes dealing with this easier.</p>
<p><b>Healing Invocation</b> is one point to provide a 3 second direct heal for slightly more than Restorative Flame. By itself, it is nice (a tree ability that is slightly better than a lower level root one seems to be standard). But just like Restorative Flame&#8217;s main benefit is the upgrade to proccing a bubble, Healing Invocation&#8217;s main benefit is that with 5 points on tier 5&#8242;s <b>Lasting Invocation</b>, it also drops an additional 30% healing over 8 seconds. Alternating between these two spells means a steady influx of direct healing plus the shield and HoT to buffer any crits or whatever.</p>
<p>I like the other tier 5 spell as well. <b>Empowering Light</b> is just a PBAoE cleanse. It costs the same as the root cleanses. The only reason not to use it is a 10 second cooldown and the inability to target someone who might be out of range. So it is more than worth one point.</p>
<p>Tier 6 is kind of hard as well. 3 points into <b>Serendipity</b> to make my crit heals reduce the cast time of my next heal by 1.5s means that Flashover not only guarantees that one heal will be big but that the one following it will be either fast or instant. Good enough.</p>
<p>I am not taking the other ability from this tier, a 2 second heal that affects both the target and the caster, upgradeable to 1.5 second cast time. This isn&#8217;t my style, and while I used the equivalent WoW spell quite a bit, I&#8217;m intentionally avoiding abilities that primarily benefit the caster in the hopes that the Purifier&#8217;s bubble and failing that, the instant cast heals this build also provides are sufficient for cases where the healer is taking damage.</p>
<p>The tier 7, 31 point ability makes me happy. <b>Healer&#8217;s Haste</b> is a 30 second buff to increase healing speed by 30% for up to 5 spells.</p>
<p>The roots of Sentinel give me a number of goodies, even though several are wasted on offensive abilities. At zero points, we get the instant direct heal with the 8 second cooldown.</p>
<p>At 4 (and 20), we get endurance buffs identical to those provided by Purifier. At 10 points, we get another rez identical to the one provided by Purifier; at 16, we get a duplicate cleanse. But that&#8217;s it for dupes. The buffs, unfortunately, do not stack, so pick the ones whose icons you like best I guess.</p>
<p>At 6 points, we get <b>Healing Grace</b>, the 2 second cast direct heal and at 12 points, we get <b>Healing Communion</b>, the AoE version.</p>
<p>We get <b>Touch the Light</b> at 14, a cooldown to make the next spell instant. Always a good button to have around. This build winds up with several similar button.</p>
<p>At 18, we get a silence, which shouldn&#8217;t really be the healer&#8217;s responsibility, but you never know&#8230;</p>
<p><b>Divine Call</b> costs 26 points and is an instant PBAoE heal with a 1 minute cooldown. So while not chainable like Healing Communion, it is good as a big panic button right before/after an AoE bomb or similar.</p>
<p>At 32 points, we get the only <u><b>combat rez</b></u> available to healing spec clerics. It&#8217;s not as good as that available to Justicars, but it&#8217;s better than what mages get.</p>
<p>At 36 points, we get a passive improvement to Healing Invocation of +5% of spell power bonus. Then, we get +3% per additional point, for a total of +11% of spell power applied to this spell. It&#8217;s not as good as it could be, but we&#8217;re taking other abilities instead.</p>
<p>Finally, at 38 points, we get <b>Marked by the Light</b>. This buff makes single-target heals cascade to other nearby party members&#8230; and makes AoE heals cascade even more <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  It is only usable on the primary target but should do nicely for my concerns of keeping others topped off without having to really think about it too hard.</p>
<h3>alternate form</h3>
<p>After a bit of consideration, and thinking about how cool Latent Blaze really is&#8230; I came up with a slight modification to the build that would allow you to carry both Latent Blaze and Vigilance.</p>
<p>This requires a change to 44/22/0 Sentinel/Purifier/Warden:</p>
<h4><a href='http://rift.zam.com/en/stc.html?t=00Gej.vxox0zz..E0Exfstco'>http://rift.zam.com/en/stc.html?t=00Gej.vxox0zz..E0Exfstco</a></h4>
<p>The points we lose from the original build are the two charges in Caregiver&#8217;s Grace from Sentinel and 8% max mana from Warden. The bubble charges aren&#8217;t that enormous of a loss, they basically equate to two free small heals every couple of minutes. The real loss here is 8% of max mana, which may or may not be an issue depending on your use of consumables and your group&#8217;s pace.</p>
<p>In exchange, we gain Vigilance as well as +3% to AoE healing and turn our zero point Sentinel instant heal into a small AoE instant heal. It&#8217;s not a lot of difference, and +3% to AoE heals doesn&#8217;t impress me much&#8230; but I&#8217;m not really sure where else to sink the points. The improvement to the instant heal is actually kind of nice. I&#8217;ve found myself using the Purifier&#8217;s instant heal a lot &#8211; even to the exclusion of this one, despite its being bigger and more efficient. The 8 second cooldown is a deterrent to inclusion in my standard rotation. BUT by specializing the ability as a small group heal? I know I would have used it more, even if the resulting heals are relatively small.</p>
]]></content:encoded>
			<wfw:commentRss>http://ammonlauritzen.com/blog/2011/03/04/rift-altohol-purification-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rift souls from space</title>
		<link>http://ammonlauritzen.com/blog/2011/02/26/rift-souls-from-space/</link>
		<comments>http://ammonlauritzen.com/blog/2011/02/26/rift-souls-from-space/#comments</comments>
		<pubDate>Sat, 26 Feb 2011 21:19:12 +0000</pubDate>
		<dc:creator>Ammon</dc:creator>
				<category><![CDATA[gaming]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[mmorpg]]></category>
		<category><![CDATA[numberchasing]]></category>
		<category><![CDATA[rift]]></category>

		<guid isPermaLink="false">http://ammonlauritzen.com/blog/?p=1284</guid>
		<description><![CDATA[I&#8217;m itching to do a write-up on some of RIFT&#8217;s rogue class options, but figured it was more appropriate that I did something else before launching into a full discussion of another class. I&#8217;d like to take a moment and outline the salient points that make each of the game&#8217;s 30-odd subclasses unique and interesting, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m itching to do a write-up on some of RIFT&#8217;s rogue class options, but figured it was more appropriate that I did something else before launching into a full discussion of another class.</p>
<p>I&#8217;d like to take a moment and outline the salient points that make each of the game&#8217;s 30-odd subclasses unique and interesting, because I&#8217;ve yet to find anything of the sort anywhere. Most wikis just quote the same garbage promotional text that talks about how Champions have &#8220;legendary strength&#8221; and move with &#8220;startling speed&#8221; and other such uselessness. My information is from the skill tree itself. I am reporting the trends in abilities, some of which might not fully manifest unless one spends over 30 points in the class, but there you are.<br />
<span id="more-1284"></span></p>
<h3>warrior</h3>
<p>Warriors can wear heavy armour and use all weapon types afaik. Their basic mechanic is an energy/power bar that regenerates rapidly.</p>
<p>Additionally, most attack abilities generate &#8216;attack points&#8217;, or points for short. Attack points stack to 3 and do not decay out of combat. A number of abilities use points and will consume all of them at once. Attack points are not a buff and they are not associated with the victim that generated them. They&#8217;re designated by three very obvious icons on the UI.</p>
<h4>beastmaster</h4>
<p>This is the pet warrior. They get cats and bigger cats. It is possible to set the cat into either dps or tank mode (as neither of which are the default). Most of their abilities are focused on the pet and improving its abilities.</p>
<p>They get a variety of self buffs and can spend points to turn them into party auras instead. They receive increased stealth detection and can put enemies to sleep.</p>
<p>Otherwise, they have a comparatively poor selection of melee dps options. Their primary combat mechanic (apart from the pet&#8217;s damage itself) is a variety of bleed effects &#8211; which the pet then capitalizes on.</p>
<h4>champion</h4>
<p>Champions are the two-handed melee dps specialists and have abilities specializing in single target focused damage. They also have a lot of crit enhancing abilities and a lot of abilities that synergize with this.</p>
<p>Champions get an inexpensive execute attack usable when the enemy drops below 30% health. They also have charge, interrupt, snare, knockback, and intimidation mechanics.</p>
<p>Despite the focus on large hits against single targets, they do get one spammable aoe, but it&#8217;s not all that good. Champions do, however, get three aoe attack point consuming abilities that look worthwhile.</p>
<h4>paladin</h4>
<p>Paladins are not healers. They are sword and board anti-physical/melee tanks. Emphasis on the board. Lots and lots of shield abilities. This is their primary weapon. They deal primary physical damage but some of their abilities also inflict light damage.</p>
<p>One mechanic that all warrior tank subtypes share is increased maximum health from points spent in that tree. You only have to sink a couple to start gaining the benefit.</p>
<p>Most of a paladin&#8217;s attacks have increased threat generation components. Now, this is common among the tank subclasses, but paladins felt a bit more so in my opinion. They even go so far as to gain a flat +20% to threat generation very early on.</p>
<p>While paladins aren&#8217;t healers, they can heal themselves. They get a big self heal to full ability on a 10 minute cooldown from very early on. They also have abilities that heal them when they block with their shield or use a counterattack style melee ability.</p>
<p>They also get a non-combat rez ability at 16 points. At higher levels, they get a few ways to heal party members but these guys are tanks, nothing else.</p>
<h4>paragon</h4>
<p>Paragons are the dual wield melee dps varietal. They get bonuses to parrying including some short term parry buffs and abilities that proc off of successful parries.</p>
<p>Their primary combat mechanic is one of follow-up attacks. Certain abilities are only usable after performing another ability that generates attack points but is not itself a follow-up attack. These attacks get some nice buffs and there are a lot of them.</p>
<p>Paragons can also sprint, reflect attacks, get cheap armor penetration and have have what can only be described as a Vulcan neck pinch attack&#8230;</p>
<h4>reaver</h4>
<p>Reavers are tanks that specialize in dealing aoe death damage over time. Many of their attacks also debilitate the target in some way.</p>
<p>They get lots of DoTs. These can spread to nearby targets, can heal the warrior from damage dealt, and can be popped all at once for big damage.</p>
<p>Reavers take reduced damage when close to death and self heal for 9% after every kill. They can break fear, polymorph, incapacitation, and mez effects &#8211; and get a fear of their own.</p>
<p>Reavers get the standard warrior tank care package: one single target taunt, one aoe taunt, various other methods of increased threat generation, and +0.46% max hp per point spent in the tree.</p>
<p>In addition to this, however, they also get an extra aoe taunt that does not share its cooldown with those of any other class.</p>
<h4>riftblade</h4>
<p>Riftblades are elemental melee dps with a lot of +crit synergy. Their single target attacks tend toward fire damage and their spammable aoe attacks tend toward air damage.</p>
<p>They get increased movement speed and can teleport directly to enemies. </p>
<p>Riftblades also get a flat -50% to their threat generation, can guarantee that the next attack directed at them misses, can reflect inbound critical hits as fire damage, and can shock enemies who parry or dodge one of their attacks.</p>
<p>One of their more unique abilities (among warriors) is their set of ranged attacks. Riftblades get three different elemental spear attacks that can burn or root or silence targets and can be upgraded to hit more than one at a time.</p>
<h4>void knight</h4>
<p>Void knights are tanks, so they get all of those toys. But almost more importantly, they are mage killers. They have a 25% chance per attack of draining mana from their target and absorb up to 20% of all inbound magical damage.</p>
<p>Attacks absorbed in this way are converted into what they call pacts. Pacts can also be generated by being healed or as the result of numerous attack abilities. When a void knight gains a pact, he can also heal and gain a very large stacking buff to armor and strength.</p>
<p>These charges are then used to either improve or fuel other abilities, such as self healing or bubbling an ally.</p>
<p>The sheer number of mage killing abilities at their disposal is kind of obscene. They get mana drain and mana burn abilities. They get an interrupt and an aoe silence. They can reflect spells or slow a target&#8217;s casting speed. They can remove buffs from targets and curses from friends.</p>
<p>Void knights also have some subtle synergies with Riftblade abilities and can become &#8220;immune to negative magical effects&#8221;, whatever that means.</p>
<h4>warlord</h4>
<p>Warlords are the final tanking warrior archetype. I can only describe them as raid offtanks <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  While they get an impressive variety of tankish abilities &#8211; including the ability to ignore being killed&#8230; they&#8217;re kind of all over the map, and are probably a good second tanking soul for any of the other three.</p>
<p>Warlords are also heavy support types. They get a plethora (I love that word) of aoe buffs and debuffs in the form of auras and short duration abilities. They reduce damage taken and threat generated by the party and have a few ways to increase their damage and healing output.</p>
<p>I&#8217;d want one in my raid, but am not sure I&#8217;d want him standing directly in front of the dragon &#8211; I get the impression that a dedicated warlord is worth way more to the group in a support role than as a meatshield.</p>
<h3>rogue</h3>
<p>Rogues wear leather and typically dual wield light weapons. Half of rogue subtypes are melee and half are ranged, so work bows in there somewhere as well <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Rogues have an energy meter like warriors. They have two kinds of attacks, those that generate combo points on their target and those that consume them. Combo points stack up to 5 and are lost if the rogue changes targets. Just like warriors, a rogue&#8217;s combo finishers consume all generated points at once.</p>
<p>Yes, they have energy mechanics just like WoW rogues. There&#8217;s nothing wrong with that. Moving on.</p>
<h4>assassin</h4>
<p>Assassins are traditional rogues. They can poison their weapons four different ways, get a lot of ways of making targets bleed, and get bonuses when stabbing things in the back.</p>
<p>Assassins have the best stealth in the game, with several different bonuses including the ability to remove the time limit &#8211; normally stealth has a 30s limited duration. From stealth, they have good incapacitate (sap) abilities and can make very large attacks while leaving stealth.</p>
<p>Assassins get good stun options and at 31 points can vanish from combat for a couple of seconds.</p>
<p>The most interesting ability they get is a weird self heal that poisons them in exchange, resulting in an interesting sort of diminishing return.</p>
<h4>bard</h4>
<p>Bards are the genetic opposite of assassins. They are ranged healers and buffbots. All of their abilities are naturally music themed and as such tend to have large areas of effect.</p>
<p>Cadence, the bard&#8217;s main combo point builder is a channeled ranged attack where they strum a lute at the enemy and generate combo points ridiculous fast. It can be upgraded to heal the entire raid for the damage dealt.</p>
<p>Aside from two separate pools of raid-wide buffs that bards can maintain, they also have what are called motifs. These are inexpensive party buffs with a 15-30 second duration and come in like 6 different flavours.</p>
<p>In addition to the steady flow of healing from strumming cadence, the bard has a number of more traditional heals but they still tend toward aoe.</p>
<p>The biggest gap in their healing arsenal is a rez. I find this almost insulting for some reason. It&#8217;s not just that I expect bards to rez from Everquest&#8230; or that I expect any self respecting healing class to pack at least a really really bad rez&#8230; or that there are non-healers in this game with rez spells. No, I am insulted because the whole story of a musician bringing someone back from the underworld kind of predates THE INVENTION OF WRITING. Anyhow.</p>
<p>Bards rule, they just can&#8217;t rez. Their dps doesn&#8217;t seem too shabby either. Oh, and they can mez. Maybe someone just misread the memo? Except I kind of expect this of any self respecting bard too&#8230;</p>
<h4>bladedancer</h4>
<p>This is your standard issue toe-to-toe knife fighter. Think WoW&#8217;s combat rogue spec if you must.</p>
<p>Bladedancers have a heavy focus on energy efficiency and regeneration, get large bonuses and synergies with dodge, and get an aoe incapacitate ability. They can also sprint, disarm, root, and stun.</p>
<p>One of their primary class-defining mechanics is their set of rhythmic actions, which are short duration buffs that cause the rogue to become exhausted for a time (presumably preventing further rhythmic actions).</p>
<p>Their other big mechanic is chained attacks. There are a few abilities that must be executed in sequence in a similar manner to the Paragon&#8217;s follow-up attacks but with a much smaller set of skills and no specific keyword.</p>
<h4>nightblade</h4>
<p>Nightblades do fire and death melee dps and get to throw knives all over the place. They can also enchant their weapons (similarly to an Assassin&#8217;s poisons).</p>
<p>They get stealth and some crowd control. They also get a spammable silence attack and two big panic button cooldowns. But mostly, they spin in circles throwing knives and lighting things on fire.</p>
<h4>marksman</h4>
<p>Marksman is the archer class. They specialize in mobility and avoiding melee by any means necessary. This is the first archer class in any mmorpg that I feel confident could teach me to enjoy kiting.</p>
<p>While spamming their basic combo they stack a bonus to run speed that grows to 30%. Whenever a marksman is attacked, he gains stacks of another buff worth up to 20% move speed. And of course, there&#8217;s the sprint cooldown and the abilities that can be activated on the run.</p>
<p>Marksmen also get knockback attacks, snares, and roots. They get lots of armor penetration, do bonus air damage, and have longer range than other rogues.</p>
<h4>ranger</h4>
<p>Rangers are assistant pigkeepers with bows. Like the Beastmaster, their individual abilities feel kind of weak when compared to the rest of the class. </p>
<p>Rangers don&#8217;t just get pet pigs (tank), they also get wolves (dps), and a blood raptor (blood raptor). Unfortunately, only one pet may be used at a time.</p>
<p>What rangers do get are some abilities that look interesting when combined with one of the other ranged subtypes, including free autoshots, bonuses to ranged finishers, and a good selection of ranged aoe options.</p>
<h4>riftstalker</h4>
<p>Riftstalker is the rogue tank spec. They intrigue me, and I&#8217;ve done a lot of staring at their numbers. It feels like an interesting set of mechanics, and they really do look like they should be able to tank small group content.</p>
<p>When a riftstalker has all of his abilities spinning at the same time, he generates +140% threat with his abilities that already do extra threat. He is also getting good armour boosts (+100%, plus an extra +10% from equipment).</p>
<p>Riftstalkers get  a flat -6% to damage taken and can maintain a shield that absorbs a solid percentage of all damage received as well. They also have a large number of panic buttons for when they do actually take damage. I suspect that a lot of the Bladedancer&#8217;s defensive bonuses will be picked up by serious Riftstalker tanks.</p>
<p>One of their most interesting mechanics is the ability to plane shift all over the place. The whole shift mechanic can be upgraded and exploited in any number of interesting ways &#8211; both in tank mode and in dps mode.</p>
<p>Riftstalkers are teleporting maniacs who don&#8217;t tank like Colossus. They tank like Nightcrawler. </p>
<h4>saboteur</h4>
<p>Saboteurs make me giggle. Bombs and traps and bombs!</p>
<p>The saboteur&#8217;s cp builder is one of my favorite concepts in this game. They are light charges that do no damage initially &#8211; and can actually be upgraded not to generate any threat at all. Then, when sufficient (max 5) charges have been placed, they press the big red detonate button and set off all charges at once for happy kaboom times. Charges come in all flavours and varieties, so there is a lot of fun to be had with them.</p>
<p>Their traps are of the sort one would suspect. Root, damage, and debuff. They take 1s to cast and last for one minute. All traps have a shared cooldown and only one trap can be placed at a time. Standard stuff here. At 31 points they get land mines, which drop four at a time and blow the enemy into the air as well as doing damage.</p>
<p>Saboteurs also get a vast assortment of bomb attacks that either target an area (like their glue trap that procs a snare or choking gas trap that procs silence in the area), or target an enemy and affect them and any other nearby enemies.</p>
<p>As if all of this wasn&#8217;t enough, saboteurs also get Incriminate, a threat transfer ability which I suspect does miraculous things in combination with a big detonation or two <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>cleric</h3>
<p>Clerics wear chainmail and can use shields. They wield maces (both 1h and 2h) and staves.</p>
<p>Clerics have a bog standard mana bar as one would expect. They also have the widest variety of class mechanics available &#8211; providing at least one viable option for everything.</p>
<p>Physical clerics all get a passive ability called Faith in Action that adds their spell dps stats to their physical ones (making the physical stats redundant and the spell stats that much more awesome).</p>
<h4>cabalist</h4>
<p>Cabalists are the AoE death nuke clerics, and are the cleric subtype that I have the least experience with. They have very little in the way of single-target damage ability and are kind of dangerous for that reason &#8211; their abilities like to hit nearby targets. My suggestion is to throw in a little Inquisitor to temper this and you should be fine.</p>
<p>Their class mechanic is a Lurking Decay buff that stacks up to 3 times when casting certain spells. They can then consume the stack of decay to deal damage. Additionally, they have no-cost/no-gcd self-buffs called Sigils that are consumed along with Lurking Decay stacks to augment the effect. Most of them cause some sort of cc or debuff but one Sigil procs mana regen for the caster and one heals the caster&#8217;s health.</p>
<p>Other than that, they have a lot of passive bonuses to damage output that synergize well with other ranged dps. Their more interesting abilities include a ward against silence/interruption, a panic button to teleport randomly, and an effect that I call gravity well and can&#8217;t recall seeing in any other fantasy mmo: suck enemies near the target into a clump to make them an easier target for aoe death and destruction.</p>
<h4>druid</h4>
<p>Druids are the pet class, and as with all other pet classes so far, are kind of meh in my opinion. They do physical melee damage and as such get a pet faerie. The faerie has a weak heal over time spell and an even weaker ranged attack, and is sufficiently squishy that you need your own heals to keep her alive if she starts taking direct damage.</p>
<p>They do physical damage and get a strong bubble versus physical damage (stronger than the other cleric shield spells, but useless against magic damage). They can enchant their weapon to do earth damage and have a ranged earth nuke that can be upgraded to also snare the target. They have a few CC abilities and spammable melee aoe.</p>
<p>At 31 points, they can get a pet satyr, which buffs the party&#8217;s attack power and is probably a pretty decent dps pet, but I&#8217;ve not seen one yet to know for sure how useful he is.</p>
<h4>inquisitor</h4>
<p>Inquisitor is the dedicated single-target ranged dps cleric option. They do both life and death damage and have some vampiric attacks. Early on, they get a quick snare and the ability to remove buffs from opponents. Later on, they get an enormous threat dump.</p>
<p>They both get a fear ward and can drop an aoe fear, as well as some other cc. They get a lot of passive bonuses to spell damage and get a few self-buff armor spells that are useful for anyone. Their most interesting ability is actually their aoe bomb. It is sort of a death chain lightning effect that cascades off of its initial targets to hit a second set after the first one <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>I am currently playing with an inquisitor in my alternate spec.</p>
<h4>justicar</h4>
<p>I&#8217;ve talked about <a href='http://ammonlauritzen.com/blog/2011/02/23/rift-speculatory-specification/'>justicars</a> in depth already so will be brief here. They are the cleric tank class.</p>
<p>They do life damage in melee and heal themselves and their party when they hit stuff. Justicars build up charges of Conviction to fuel some of their abilities (mostly instant heals or attacks that proc a heal).</p>
<p>They have both a tank mode (12 points) and a healer mode (10 points). Healer mode decreases aggro generation from attacks and increases the healing generated as a result. Also, Justicars get the best combat rez in the game <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>My main spec is the Justicar build I discussed and I have played it to 17 as discussed. So far, I am pleased, but it is becoming more and more obvious that while I am incredibly resilient and have nice heal buttons, I don&#8217;t hit very hard and am lacking any sort of rapid aoe threat generation so far. In other words, I am a mid-level tank and dps hits harder than me, which is as it should be. I can&#8217;t wait to get my melee aoe attack (18 points). It will be soon&#8230;</p>
<h4>purifier</h4>
<p>Purifiers are fire-themed healer types. They have the least dps options of any class in the game and would quite possibly make for a miserable single-class solo experience. They specialize in keeping single targets alive by dropping big fast direct heals and shielding their targets. They get a lot of shields.</p>
<p>Their zero point heal is actually a self-bubble, a very effective shield for soloing or for surviving boss aoe. I think they go well with any other caster class but their lack of instant heals probably makes them less suited for combining with a melee type.</p>
<p>They get a non-combat rez at 10 points.</p>
<h4>sentinel</h4>
<p>Sentinels are light-themed healers. They actually have a mix of healing and damaging abilities and are probably the closest thing to the mmo stereotypical priest type that Rift offers. Their zero point heal is instant.</p>
<p>They specialize in aoe heals. Their single target heals aren&#8217;t as big as a purifier&#8217;s and they don&#8217;t have nearly as much in the way of damage prevention. They have some heal over time effects and can aoe remove curse/disease/poison.</p>
<p>They get a non-combat rez at 10 and a combat rez at 32 points.</p>
<h4>shaman</h4>
<p>Shamans are frost-themed melee dps. They do water and air and physical damage and have a lot of crit synergy. They get several self-buffs and also get raid auras to increase dex, str, or wis.</p>
<p>Shamans get spammable melee aoe and have some nice defensive abilities as well. And while they lack any sort of reliable healing abilities, they receive bonus healing from other targets and provide passive bonuses to healing generated.</p>
<h4>warden</h4>
<p>Wardens are water-themed healers. They specialize in heals over time and get a plethora of single-target and group heals. They also have a few decent attacks. Their single-target healing tends to be in the form of hots stacked on the target and a big direct heal that scales bigger with the more hots in place.</p>
<p>They can reflect spells and get a silence. They can also grant water breathing and get reactive heal buffs that heal the target after they take a hit.</p>
<p>Wardens go well with any other cleric subtype as they get useful abilities early on and their instant heals work well in melee or at range. Their attacks also fill a niche between other classes and their passives play well with several other souls.</p>
<p>They don&#8217;t get their non-combat rez until 18 points.</p>
<h3>mage</h3>
<p>Mages are squishy, as is custom. In addition to their mana bars they have an additional charge bar that fills up as they perform attacks (similar to rage mechanics in other games). Charge can then be burnt in the form of toggled or channeled special abilities that do a variety of things from sustained fire damage to healing the caster or activating some sort of buff or another.</p>
<h4>archon</h4>
<p>Archons are control mages. They steal stats from enemies and buff their party. They do earth and fire damage and most of their abilities have a secondary buff or debuff component. They regenerate mana on crits and can heal mana.</p>
<p>I don&#8217;t know if archon is viable as a single solo class, but it should work well as a secondary to anything.</p>
<h4>chloromancer</h4>
<p>Chloromancers are the worst name ever devised for an rpg class, but what can you do? I mean, they are plant mages. This is the mage healer subtype. They don&#8217;t get much in the way of reliable healing early on, but at higher levels, their heals really do start to look nice. They are mages too, of course, so chloro do decent life damage.</p>
<p>They get both combat and non-combat rez abilities at 20 &#8211; but their combat rez says it restores the target with 0% health, so ymmv.</p>
<p>My most recent experience with chloro is that one wasn&#8217;t enough when my justicar heals failed, but he filled the gap very nicely whenever the sentinel in our group went oom during a long fight.</p>
<h4>dominator</h4>
<p>Dominators are the other mage control spec. They do air and death damage and get a bucket of crowd control, which they synergize off of. Their zero point spell is one of the more desirable available to mages &#8211; they can turn enemies into squirrels. They also have a lot of PvP application at higher levels.</p>
<p>They get a number of spells that penalize the enemy for moving or acting and have a threat wipe. Their most interesting looking ability summons mirror images of themselves to cast minor nukes.</p>
<h4>elementalist</h4>
<p>Elementalists are summoners, and are the first pet class in this list that doesn&#8217;t hit like a little kid. They get nukes of all four elemental types and get three types of pets: earth, air, water. My experience is that the earth elemental is able to hold aggro well but isn&#8217;t durable enough for sustained combat without healing.</p>
<p>Elementalists also get a number of useful charge dump abilities. Most classes just get a buff to damage from charge. Elementalists can convert it back into mana or buff their spells to do extra damage of a random elemental type or just dump it all into a big sustained flamethrower attack.</p>
<p>They get an ability to break all CC and remove themselves and their pet from combat and at 51 points can summon a swarm of uncontrollable fire elementals <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h4>necromancer</h4>
<p>Necromancers are the other mage pet spec and has the widest variety of pets in the game. Where Elementalists strike me as a bit more passive and defensive, necros kill things. Their first pet cannot hold aggro, but he does increased damage as the necro nukes his target. Necros get 4 different pets by 27 points.</p>
<p>They can drain life from their pet to heal their own mana and can make their pet explode when it dies. They get a feign death ability and can drop a dot that grows if the victim is healed. At 31 points, they get lich form, which lasts for 30 seconds and is an all around happy self+pet buff.</p>
<p>Necromancers can dump charge into a spell that summons a swarm of 5 shambling corpses and at 51 they can summon two big uncontrolled pets for a short time.</p>
<h4>pyromancer</h4>
<p>Pyromancers are everything you expect. They drop a lot of damage. Single target and area, direct and over time. They get an intelligence buff and a blink spell. Pyro&#8217;s also get bonuses to mana regeneration and have a few crowd control abilities.</p>
<p>They can dump charge after combat into a buff that reduces the cost of their next 1-8 fire spells and get a set of spells that buff the ground beneath them to provide a couple of interesting bonuses.</p>
<h4>stormcaller</h4>
<p>Stormcallers are water/air mages. They are heavy on the aoe and stack debuffs on their targets which they then exploit further. Because of the whole air == electricity thing that you have to remember in this game, there are a lot of fun rotations to be had here. Stormcaller water nukes like to play off of their electrified debuff <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h4>warlock</h4>
<p>Warlocks are highly durable damage over time dps with life drain options. Warlocks get a reflective damage armor, an endurance buff, and can drop fear.</p>
<p>They also get bonuses to charge generation that could be useful for any other class. Warlocks themselves have two great dumps for charge. First they can just channel it into their hp, then at 51 points they can dump charge into a buff that provides +75% to their damage output.</p>
<p>Their 31 point bonus is great panic button &#8211; reducing incoming damage by 80% for 7 seconds.</p>
<h3>conclusion</h3>
<p>The game is in a constant flux, and much of this information was gathered during beta and the first day of head start. Some of the classes changed as I was writing about them, but whether some individual abilities come or go, I can&#8217;t imagine that their overall flavours will be changing any time soon.</p>
<p>I just wish they had a better name for Chloromancer. Yeesh. Phytomancer? No. Herbalist? Nah. Earth Warden? Too confusing. Healomancer? Heh&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ammonlauritzen.com/blog/2011/02/26/rift-souls-from-space/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rift speculatory specification</title>
		<link>http://ammonlauritzen.com/blog/2011/02/23/rift-speculatory-specification/</link>
		<comments>http://ammonlauritzen.com/blog/2011/02/23/rift-speculatory-specification/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 17:50:07 +0000</pubDate>
		<dc:creator>Ammon</dc:creator>
				<category><![CDATA[gaming]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[justicar]]></category>
		<category><![CDATA[mmorpg]]></category>
		<category><![CDATA[numberchasing]]></category>
		<category><![CDATA[rift]]></category>
		<category><![CDATA[specs]]></category>
		<category><![CDATA[speculation]]></category>

		<guid isPermaLink="false">http://ammonlauritzen.com/blog/?p=1264</guid>
		<description><![CDATA[Okay, so I find myself needing to apologize. It has been an unacceptably long time since I&#8217;ve written anything. I also apologize for the unfocused and unusually verbose braindump you are about to witness. I&#8217;m just too out of practice. My RL excuses for this are: a period of unemployment and job hunting finally leading [...]]]></description>
			<content:encoded><![CDATA[<p>Okay, so I find myself needing to apologize. It has been an unacceptably long time since I&#8217;ve written anything. I also apologize for the unfocused and unusually verbose braindump you are about to witness. I&#8217;m just too out of practice. My RL excuses for this are: a period of unemployment and job hunting finally leading to a new job, a new baby, major repairs around the house (I built a fence!), two moves across state lines, burst pipes rendering my house uninhabitable, and a successful game open beta launch. But meh, that&#8217;s just excuses.</p>
<p>In that time period, I wrote 5 articles that haven&#8217;t made it here. Hopefully the time will present itself to re-evaluate 2 or 3 of them in the next month.</p>
<p>But for now, something more current <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>RIFT is gearing up for what feels to me like it might be the most successful western-style fantasy mmorpg release in 5 years. I am going to play it. And I am going to write a lot about it.<br />
<span id="more-1264"></span><br />
I find this humorous because the game practically blindsided me. I hadn&#8217;t read a thing about it until a friend had informed me that she&#8217;d pre-ordered it. One does not pre-order something like this lightly and I respect her opinions so&#8230; I decided to take a look.</p>
<p>What I found was a lot of incomprehensible nonsense <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  The verbiage around the game&#8217;s setting and systems was about as thick as FF13&#8242;s at first glance. I tried three or four times to puzzle things out and finally gave up.</p>
<p>Then, more friends started talking about the beta and I tried to read things again &#8211; and people had improved wiki&#8217;s in the interim. So with the faintest grasp that I might actually be interested in the class system, I signed up for the beta. And didn&#8217;t get into that wave.</p>
<p>But the next one I did <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>And my jaw dropped in a vain attempt to carry the sheer weight of the class system into words. Or some other better metaphor. I like it. But boy is it thick.</p>
<h3>rift classes 101</h3>
<p>See, the class system is the bog standard skill point allocation tree setup that (to the best of my knowledge) Blizzard pioneered about 10 years ago in Diablo 2 &#8211; except it is both simpler and more complex than that.</p>
<p>RIFT subscribes to my favorite school of thought when it comes to character classes. There are really only four classes: fighter, thief, cleric, mage. One of my unfinished drafts is actually on this subject&#8230;</p>
<p>At character creation, you select one of these four core archetypes for your new avatar. And other than race, gender, name, and appearance&#8230; that&#8217;s it. You get into the game and start walking around.</p>
<p>They then use the in-game lore to slowly explain their system of subclasses. Every class has about 8 of these available right now, and it would be easy to add more in the future. By about level 6 or so, the player is gradually given the opportunity to select a total of three subclasses (or &#8220;souls&#8221; as the lore would have it). These are effectively your skill trees.</p>
<p>In WoW parlance, this translates roughly to RIFT Clerics being able to construct their ability set from any three of: resto druid, beast hunter, enhancement shaman, holy priest, disc priest, shadow priest, prot paladin, ret paladin. It&#8217;s like a candy store. Way more options than you can comfortably eat at once, but in a good way.</p>
<p>The game&#8217;s level cap is 50, and you receive slightly more than one skill point every level. Abilities are unlocked in two ways. First, there are the abilities you choose to place your skill points in. These are mostly stat bonuses and upgrades to other abilities, but there also a good number of abilities that you have to actively opt into by spending a point directly. Second, you are given access to new abilities based on the number of skill points you put in a given tree, regardless of their individual allocation. These are the class&#8217;s core abilities (everyone gets them) and are most liable to be modified by specific talents.</p>
<p>Players aren&#8217;t locked into the 3 souls they choose during newbiedom. It is a simple enough manner to unlock access to each of the others &#8211; you do this by way of a number of quick quests that available in the capital city starting at level 13. And then, once you&#8217;ve got a variety of builds you want to try, buying a second spec slot is downright inexpensive from the skill trainer. A third spec is cheap enough that I anticipate many level 20&#8242;s will have them (the cap is 50).</p>
<p>The one thing, however, that isn&#8217;t immediately clear is just precisely WHAT the different subclasses can do. I mean really, what can they do? When you&#8217;ve got 8 colors of mage, they can&#8217;t all just be nukromancers, can they? Well, RIFT made sure that they aren&#8217;t. The differences between the souls are sufficient as to stretch the boundaries of what might be expected of given classes in a fantasy rpg.</p>
<p>An oversimplified breakdown in subclass roles looks kind of like this:</p>
<table>
<tr>
<td></td>
<td>Melee DPS</td>
<td>Ranged DPS</td>
<td>Heals</td>
<td>Tank</td>
<td>Control</td>
<td>Pet</td>
</tr>
<tr>
<td><b>Warrior</b></td>
<td>3</td>
<td>-</td>
<td>-</td>
<td>4</td>
<td>-</td>
<td>1</td>
</tr>
<tr>
<td><b>Rogue</b></td>
<td>3</td>
<td>2</td>
<td>1</td>
<td>1</td>
<td>-</td>
<td>1</td>
</tr>
<tr>
<td><b>Cleric</b></td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>1</td>
<td>-</td>
<td>1</td>
</tr>
<tr>
<td><b>Mage</b></td>
<td>-</td>
<td>3</td>
<td>1</td>
<td>-</td>
<td>2</td>
<td>2</td>
</tr>
</table>
<p>Of course, this is an entirely inaccurate and unfair comparison of the classes because everyone has -some- degree of damage output capability (as near as I can tell, only one of the subclasses really suffers in this respect where most of the others are at least mix of support and dps). Every class has various degrees of crowd control, group buffing, and other utility. Because they are so complex, I am planning on doing separate write-ups discussing the actual details on the individual souls. There are some real gems in the mix.</p>
<p>But I&#8217;m rambling.</p>
<p>When this game launches, I am going to play a cleric because that is what I do. Specifically, I want to play a cleric who walks up and hits things with a hammer until they fall down, because it has been about 17 years since I&#8217;ve done so in any serious way.</p>
<p>So without further sidetracking, I will hereby investigate the Justicar soul and explain my plans for advancement with it.</p>
<h3>soul analysis: justicar</h3>
<p>The justicar is the cleric&#8217;s tank soul. Their basic operating procedure is the combination of four things:</p>
<ol>
<li>a stance wherein they generate 4x threat and double their hp and armor</li>
<li>big plusses to shield use to push avoidance</li>
<li>an ability that causes all of their attacks to heal them for a percentage of damage done</li>
<li>extra bonus abilities (primarily instant cast heals) that are charged by hitting stuff</li>
</ol>
<p>I played a Justicar/Purifier/Druid for about half of my time in the beta and really enjoyed it. Even with a tanking spec, I could contribute some healing to the group if I wanted by switching stances and through the use of one ability that makes my melee attacks radiate small aoe heals to the whole group and another that transfers my all of my self overhealing over to a designated target.</p>
<p>My second class for that build was Purifier &#8211; the big single target heal class with lots and lots of shields. Shields are good, they let my slow passive heals catch up and they give me a chance to overheal and keep the group topped off. However, Purifier wound up being otherwise useless to this build as I leveled up. I believe they are the worst DPS class in the game and didn&#8217;t have much that was really suitable for use in melee outside of their basic shield (which is earned at 0 skill points). So, the Purifier has to go. I&#8217;ll visit them later when I want to hand out some dedicated heals.</p>
<p>My third class for much of beta was Druid &#8211; a melee class with a pet faerie that I thought would be a good mix. And it was, but not quiiite good enough. The faerie provided me with some nice passive heals and could occasionally offtank an annoying add for me if I returned the favor and was in a hurry to drop something for a quest (not that I actually needed an offtank, I could still solo handle about 3 mobs at once quite comfortably). The best thing that the Druid provided was actually a second shield spell (separate cooldown, shared buff slot) that meant I could be invulnerable twice as often&#8230; except the druid shield only protects against physical damage, and there is a preponderance of elemental damaging melee attacks in this game.</p>
<p>When I finally decided that something needed shaking up in the build, I tried throwing out purifier entirely in favor of Cabalist &#8211; the death magic aoe cleric subtype. Unfortunately, this wound up completely clashing with Justicar MO. First and most obviously, the Cabalist abilities are death magic while the Justicar&#8217;s are life, and some basic abilities depend on my doing a continuous stream of life damage to fuel them. Second and more importantly, the Cabalist abilities have casting times while the Justicar&#8217;s are primarily instant. This meant less spells per GCD meant less procs for my self healing meant much hairier experiences as I watched my health drop in the absence of the Purifier shield button. The faerie got the bulk of her tanking experience here.</p>
<p><i>NB: The Druid&#8217;s faerie pet is NOT intended as a tank. It generates miserable aggro and is squishy like grape. However, it is a regenerating sack of HP and is able to absorb a few hits while in single-targetted down my primary opponent. The management cannot take any responsibility for terrible horrible faerie dismemberment that may occur by following my example.</i></p>
<p>My wishlist for leveling and soloing as a cleric tank are thus:</p>
<ol>
<li>instant cast heals</li>
<li>a shield spell</li>
<li>ways to improve my melee dps</li>
</ol>
<p>For the job of instant heals, the choice was clear. Wardens are water-themed healing clerics who specialize in heals over time. This meshes well with my Justicar&#8217;s natural gradual heals, and their ability to help keep myself topped off without taking my attention away from killing things and holding aggro is a big win. They also have some instant cast ranged attacks and other niceties that should prove convenient.</p>
<p>The other two jobs are both hopefully solved by the Shaman. Shamans are frost-themed melee dps types who get a lot of defensive bonuses early on &#8211; including a better shield than Druids. This one requires 6 points in the tree but works against all damage types and reflects a bit of damage to attackers &#8211; great for tanking.</p>
<p>With all of this baggage in tow, I planned my spec in 3 phases: where I want to be at levels 9, 17, and 50. Level 9 because it is just a bit after newbiedom and is when the content starts requiring a bit of consideration. Level 17 because it is the minimum requirement for entry into the game&#8217;s first group instance, and I want to give that a whirl.</p>
<h3>level 9 justicar/shaman/warden (6/6/0)</h3>
<h4><a href='http://rift.zam.com/en/stc.html?t=00rne.Vo.Mcz'>http://rift.zam.com/en/stc.html?t=00rne.Vo.Mcz</a></h4>
<p>So this layout earns me the foundation of the build. I have all of my most important pieces for soloing.</p>
<p>First, the easy bit. Zero points in warden. This is one of the things I love about the class system. It is possible to cherry pick the starter abilities from a soul if you&#8217;re spending all of your skill points elsewhere &#8211; and these abilities rank up with levels as long as you visit the trainer, just like anything else.</p>
<p>Wardens start with a dead cheap instant cast heal over time and an equally inexpensive instant cast water nuke. The nuke doesn&#8217;t hit hard (not hard at all), but it can tap a mob to get its attention, and I want the ability to do that on the run and without having to wait for the 8s cooldown on my taunt.</p>
<h5>thick skinned and glacial shield</h5>
<p>Shaman zero point abilities give me a weak melee attack that doesn&#8217;t hit as hard as my Justicar zero point attack and doesn&#8217;t synergize with my other abilities&#8230; and they give me a weapon enchant that adds water damage to all of my melee attacks, which thing I will not actually complain about <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>The other zero point ability Shamans provide is called Faith in Action and is actually also provided for zero points in both Justicar and Druid &#8211; the other melee types. It is a passive buff that translates caster stats (spell power, spell crit, and spell focus) into their physical counterparts (attack power, physical crit, melee hit) at a 1:1 rate so you can wear caster gear and still hit clobber things with authority.</p>
<p>My first tier points in Shaman are going to be allocated thusly:</p>
<ul>
<li>3/3 &#8211; Thick Skinned &#8211; Reduces the damage you receive by 3%</li>
<li>2/5 &#8211; Unyielding &#8211; Increases your Melee Critical Hit chance by 2%</li>
</ul>
<p>The Thick Skinned is a no-brainer. So even while it doesn&#8217;t do anything meaningful now, I&#8217;ll always have that on this character and may as well get used to leaving it on. The two points in unyielding are largely there to make way for my 6th point:</p>
<ul>
<li>Glacial Shield &#8211; Summons a shield of ice around the cleric that absorbs the next 160 damage in addition to dealing 7 water damage to attackers when hit. Lasts 30 seconds.</li>
</ul>
<p>This gets me the shield I would otherwise have had to taken Purifier for &#8211; and it has the reactive damage component which I adore.</p>
<p>My reasons for choosing Unyielding for the two dump points is dead simple. My alternative was 2 points to increase my physical damage dealt by 2%. So when small numbers are involved, 2% crit is always better than 2% damage. Why? Well, when I&#8217;m hitting for 30 damage, what is 102% of 30 damage? 30.6. Which they might be kind enough to round up to 31. Against a mob with 100 hp, this&#8230; doesn&#8217;t make a difference at all. I still have to hit it 4 times to kill it.</p>
<p>OR I can crit one more time out of 50 attacks, dealing enough extra damage that it will make a difference and probably save me an entire attack. So that one fight where I do crit, I drop the 4 hit mob in 3 swings and can move on.</p>
<p>Of course, the most important point is simply that my only consistent source of &#8220;physical&#8221; damage is actually my autoattack. And I am going to use the slowest hammer I can find for now. My real damage is all light elemental (or water from the warden pull), and doesn&#8217;t depend on my big slow hammer that doesn&#8217;t autoattack but once a minute.</p>
<p>These Shaman points unlock the following abilities:</p>
<ul>
<li>Courage of the Jaguar &#8211; +5 dex to the whole party/raid</li>
<li>Lightning Hammer &#8211; Physical attack that procs an air (lightning) damage over time effect for 6 seconds, which is conveniently the ability&#8217;s cooldown.</li>
<li>Fated Blow &#8211; Guaranteed physical attack activated after an attack has been dodged or parried. No GCD. 6s cooldown.</li>
</ul>
<p>I&#8217;m not going to turn my nose up at free stats. The lightning attack is nice because Justicar doesn&#8217;t have any DoT&#8217;s and anything else to break up my attack rotation is nice. The free attack is a free attack, but I have no idea how useful it will be in PvE and don&#8217;t really plan on it making a difference.</p>
<h5>life&#8217;s devotion and bolt of radiance</h5>
<p>Tier one of Justicar talents is kind of a similar choice to Shaman. I can either spend 5 points to increase my melee ability damage by 5%, which suffers from the math I just discussed; or, I can increase my armor value by 15%. This isn&#8217;t going to make my chainmail sparkle like plate. But it is a 1/6 improvement in my basic mitigation and is another ability I&#8217;ll have for the life of the character.</p>
<p>My sixth Justicar point is going into:</p>
<ul>
<li>1/3 &#8211; Life&#8217;s Devotion &#8211; Increases the chance of your Salvation healing you by 20%. Increases your Salvation&#8217;s healing by 5% of the damage done using Justicar abilities, 2% using other abilities.</li>
</ul>
<p>That&#8217;s a mouthful, especially since I&#8217;ve not explained what Salvation is yet&#8230; Salvation is one of the Justicar&#8217;s zero point abilities and is one of the aforementioned bread and butter components. It reads:</p>
<blockquote><p>
<b>Salvation</b><br />
Infuses the Cleric&#8217;s weapon with healing light, causing their damaging abilities to have a 40% chance of healing the Cleric. Justicar abilities heal for 10% of the damage done, all other abilities heal for 5% of the damage done. Lasts 1 hour.
</p></blockquote>
<p>Anything and everything I can do to feed this ability keeps me going longer and eventually feeds my overheal spillover. And, I suspect as a side effect, the self-healing has to add at least some aggro.</p>
<p>Justicar&#8217;s other zero point ability is just the spammable melee life damage attack that will be used to feed Salvation every free GCD.</p>
<p>The other abilities unlocked by these points are:</p>
<ul>
<li>Cavalier &#8211; All life-based attacks grant a &#8216;Conviction&#8217; for 30s.</li>
<li>Bolt of Radiance &#8211; Ranged life attack. In tanking mode, this becomes an actual taunt (forces the target to attack me). 8s cooldown.</li>
<li>Doctrine of Loyalty &#8211; Burn one &#8216;Conviction&#8217; to heal party for 51 damage.</li>
</ul>
<p>Conviction is a buff that stacks to 4 and doesn&#8217;t do anything but go away after 30 seconds unless you proc another one to reset the timer. Doctrines are abilities that consume convictions as part of their casting cost. There shouldn&#8217;t be much need for this doctrine while soloing (since it is much less mana efficient than the HoT I am already packing) but it will be convenient in groups and mana efficiency isn&#8217;t really much of a concern at this point &#8211; I won&#8217;t be able to burn it quite fast enough to run out yet.</p>
<p>Bolt of radiance is awesome and acted for my primary pull and as a major part of my attack rotation in beta. I was, however, frequently staggered when it was still on cooldown at the end of a fight so I am going to enjoy the water pull (which I don&#8217;t really plan on integrating into the rotation).</p>
<h3>level 17 justicar/shaman/warden (12/6/4)</h3>
<h4><a href='http://rift.zam.com/en/stc.html?t=00rne.Vuko.Mcz.m'>http://rift.zam.com/en/stc.html?t=00rne.Vuko.Mcz.m</a></h4>
<p>Okay, ten more points to allocate. First off, nothing changes in Shaman. I needed the shield and I got it asap. At this point, actual tanking is going to be more important since I plan on trying it out in the level 17 instance.</p>
<h5>nothing to see here</h5>
<p>Four points will go into Warden and give me three things:</p>
<ul>
<li>4/5 &#8211; Destructive Tide &#8211; +8% instant cast spell damage</li>
<li>Healing Current &#8211; 2s cast direct heal + 14s hot component</li>
<li>Crushing Wave &#8211; instant cast water nuke + knockback, 15s cooldown</li>
</ul>
<p>The knockback gives me a bit of a panic button in case I need it and the heal lets me attempt to save someone in a pinch faster than my little HoT can manage. I can&#8217;t depend on my doctrine for this sort of thing because it only works if I have been in combat for a while recently and if the target is in my party, and besides, it doesn&#8217;t heal as much anyway.</p>
<p>I am hoping that my melee abilities count as &#8220;instant cast spells&#8221; but won&#8217;t hold my breath if they don&#8217;t. Regardless, my taunt had better count as a spell and making it just that much stickier will be nice.</p>
<p>My alternative here was to spend points to increase my max mana, but my experience tanking rift events didn&#8217;t seem to stress my mana, so I&#8217;m not concerned about it yet. Besides, I get a better fix for this in the Justicar tree.</p>
<h5>precept of refuge and mien of leadership</h5>
<p>First priority in finishing out tier two of Justicar talents is Life&#8217;s Devotion. Two more points mean my Salvation now has a 100% chance to proc and heals for 25% of my justicar damage and 11% of my warden/shaman damage. That&#8217;s way nice.</p>
<p>Second priority is Doctrine of Bliss, which burns a conviction to heal me. This is what I spent the vast majority of my convictions on in beta &#8211; spamming self-heals as I ran away from a hairy situation <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>This leaves one point left that I spend to drop the mana cost of doctrines by 15%. They&#8217;re the most expensive thing I have yet, so this can only help.</p>
<p>These four points also unlock two new abilities:</p>
<ul>
<li>Censure &#8211; Melee attack, increases magic damage taken by the enemy by 3% for 15s</li>
<li>Mien of Honor &#8211; Healing stance, decreases threat generation by 50% and increases healing done by justicar abilities by 50%</li>
</ul>
<p>Censure is the new start to my rotation, and since it both hits harder than Strike of Judgment (the zero point attack) and debuffs the enemy, it is win-win.</p>
<p>Mien of Honor is interesting. It lets me switch into healing mode if a group needs that more than my tankly awesomeness. I used it two or three times during rift events in beta (when a warrior larger than me was there to tank) and felt like it did actually have a meaningful impact.</p>
<p>Tier three is made out of love. This is where the Justicar really starts to shine.</p>
<ul>
<li>1/1 &#8211; Reparation &#8211; Attacks heal nearby party/raid members for 25% of justicar damage done and 10% of other damage done.</li>
<li>1/1 &#8211; Precept of Refuge &#8211; Shield bash, burns a conviction. Deals nice (physical) damage and increases my block chance by 15% for 8s. Always hits.</li>
</ul>
<p>These are amazing. Reparation basically means my Salvation effect now affects up to 10 other party members every time it procs &#8211; which is every GCD in combat <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Precept of Refuge starts making my attack rotation more interesting. I need to swing it once every 8 seconds to maintain 15% damage avoidance. I can do that. I don&#8217;t blame them for making it deal physical damage since that avoids the issue of costing a conviction and then generating it right back. I also applaud the silly name (precept == doctrine).</p>
<p>These two points unlock the two remaining pieces to the lowbie justicar tanking magic.</p>
<ul>
<li>Mien of Leadership &#8211; Tank mode. +300% threat generation. +90% endurance. +100% armour + 1% per point spent in justicar (so 112% minimum). -40% healing and damage from non-justicar abilities.</li>
<li>Purpose &#8211; Mana regen button. All melee attacks for 10s restore 10% mana. No GCD. 1m cooldown.</li>
</ul>
<p>Purpose pretty much equals free mana potions and Mien of Leadership is what it&#8217;s all about. The downside is that it nerfs non-justicar abilities so heavily. But honestly, I&#8217;m not going to be depending on them actively for health and dps while tanking, and it&#8217;s a small price to pay for upgrading my chain to plate and doubling my hp pool.</p>
<h3>level 50 justicar/warden/shaman (39/16/11)</h3>
<h4><a href='http://rift.zam.com/en/stc.html?t=00rne.Vuksqee0oo.mcdz.Vgbzo'>http://rift.zam.com/en/stc.html?t=00rne.Vuksqee0oo.mcdz.Vgbzo</a></h4>
<p>Ahaha! See what I did there? Shaman tops off its usefulness to me pretty early on, but Warden has some cool stuff deeper in. I would really like to drop two more points into it from somewhere, but don&#8217;t know where I&#8217;ll find it just yet.</p>
<p>I&#8217;m going to go a bit quicker here and only pick out the highlights of each tree now because you&#8217;re already bored and I&#8217;d like to go to bed tonight myself.</p>
<h5>vengeance of the frozen earth and favored of the valnir</h5>
<p>First, let&#8217;s discuss the 5 more points that I&#8217;m dumping into Shaman.</p>
<ul>
<li>2/2 &#8211; Favored of the Valnir &#8211; +10% incoming healing</li>
<li>1/5 &#8211; Unyielding &#8211; (1 more point) for a new total of +4% melee crit chance</li>
</ul>
<p>The reason for the first point in unyielding is to unlock tier 3, where I pick up:</p>
<ul>
<li>1/1 &#8211; Vengeance of the Frozen Earth &#8211; All melee attacks now proc a 50% snare for 6s</li>
</ul>
<p>An automatic snare that&#8217;s always on to prevent runners or to control things better when the mage drops a string of crits and steals something enormous from me? Yes please.</p>
<p>This unlocks two more abilities in the roots of the Shaman tree:</p>
<ul>
<li>Massive Blow &#8211; Melee attack, 15s cooldown</li>
<li>Courage of the Bear &#8211; +5 strength to entire raid/party</li>
</ul>
<p>Shamans can upgrade Massive Blow to give it +30% crit chance and make the target bleed, so it rules for them&#8230; but it is largely useless in this build. There&#8217;s already no room in my single target rotation for it without the long cooldown and damage type mismatch.</p>
<p>Courage of the Bear is great. I can always use another buff.</p>
<p>It is worth noting that one more point in Shaman would unlock a high efficiency self-heal that is activated after receiving a critical blow. However, we actually pick up an automatic version of this later on in the Justicar tree.</p>
<h5>restorative tide and orbs of the stream</h5>
<p>My remaining points in Warden are similarly focused on unlocking tier 3 and then grabbing the tier 4 ability after that. The lower tier points:</p>
<ul>
<li>5/5 &#8211; Destructive Tide &#8211; (1 more point) for a total of +10% instant cast damage</li>
<li>5/5 &#8211; Surging Rapids &#8211; +15% to instant cast heals</li>
<li>2/5 &#8211; Fluidity &#8211; +4% heal over time</li>
</ul>
<p>Surging Rapids can only help since my main heals are all going to be instant. Fluidity isn&#8217;t as important but it&#8217;s better than the alternatives and can&#8217;t hurt.</p>
<p>The three abilities that I am digging this deep into Warden for are:</p>
<ul>
<li>1/1 &#8211; Dissolution &#8211; Break snare/root effects, immune for 8s</li>
<li>2/2 &#8211; Restorative Tide &#8211; When you are Critically Hit, you heal 150% of your Wisdom over 12 seconds</li>
<li>1/1 &#8211; Orbs of the Stream &#8211; Buff with 3 charges. When the target takes damage, orb pops and heals them</li>
</ul>
<p>This gives me critical mobility on the battlefield in case I need to save my healer from being eaten by a dragon and I&#8217;ve got my foot in a trap. It also gives me two more sources of passive healing that I don&#8217;t have to think very much about.</p>
<p>These 12 points unlock several new abilities:</p>
<ul>
<li>Tidal Surge &#8211; +50% to next heal spell</li>
<li>Cleansing Waters &#8211; Remove curse/disease/poison from target</li>
<li>Healing Flood &#8211; Proc a HoT on the entire group</li>
<li>Deluge &#8211; Big direct heal that gains bonuses with active HoTs</li>
<li>Drown &#8211; Water DoT + silence</li>
</ul>
<p>The only one I&#8217;m not really excited about is Deluge. While amazing as a dedicated healer, it is useless while tanking and isn&#8217;t that spectacular while doing the Justicar aoe melee healing thing &#8211; Healing Flood plays much better into that and probably will be used aggressively in those cases.</p>
<p>Two more points in Warden would have unlocked two more excellent abilities, and if I have to, I will steal two points from Shaman in order to get them &#8211; water breathing and a basic rez spell. However, by stealing those points, I would have to lose the snare enchant and the strength aura&#8230; so I&#8217;m sticking with this plan.</p>
<h5>so many toys&#8230;</h5>
<p>And now to the pudding of the matter. Twenty seven more points in Justicar. Every soul&#8217;s skill tree has exactly 51 slots, and particularly large abilities become available starting at 31. I am putting enough into the tree for the 38 point ability (which I really want) and for one more to acquire all of the extra happy abilities remaining in the point allocation matrix portion.</p>
<p>Allocated points:</p>
<ul>
<li>3/3 &#8211; Stalwart Citadel &#8211; Increases Block Rating by 30% of Spell Power</li>
<li>5/5 &#8211; Shield of Faith &#8211; -15% damage taken</li>
<li>5/5 &#8211; Safe Haven &#8211; +5% block from Precept of Refuge</li>
<li>1/1 &#8211; Doctrine of Valiance &#8211; Melee attack, burns all convictions, heals cleric for 200% of damage dealt</li>
<li>3/3 &#8211; Vengeful Justice &#8211; Even Justice (see below) hits 3 additional targets</li>
<li>5/5 &#8211; Commitment &#8211; Regain 5% mana when you Block</li>
<li>3/3 &#8211; Devout Deflection &#8211; Increases Parry Rating by 195% of Spell Power</li>
<li>1/1 &#8211; Reprieve &#8211; Heals the cleric and the target of Righteous Mandate (below) for >2k</li>
<li>1/1 &#8211; Absolution &#8211; Combat rez</li>
</ul>
<p>The only talents that I did not pick up are a snare+root and a stun, and the 5 points in tier 1 to increase melee damage by 5%. The snare is already handled more effectively by the Shaman&#8217;s Vengeance buff and a stun is nice&#8230; but I am guessing that it won&#8217;t really be vital considering I will have an interrupt (below) and a silence (above).</p>
<p>Shield of Faith, Safe Haven, Stalwart Citadel and Devout Deflection are kind of no-brainers. They provide flat % damage mitigation and give me a massive increase in avoidance.</p>
<p>Commitment means I can keep ignoring my mana bar while tanking. Vengeful Justice means I can hold aggro on multiple targets more easily. Doctrine of Valiance and Reprieve are good self heals.</p>
<p>Absolution, the 31 point talent, is without contest the best combat rez in the game. There are a handful of others available but none of them heal the target to full and some of them have longer cooldowns. It would be criminally irresponsible of me not to pick this one up &#8211; especially since I am kind of ignoring the Warden&#8217;s non-combat rez ability in this build.</p>
<p>The 27 points also unlock 7 new root abilities:</p>
<ul>
<li>Righteous Mandate &#8211; Buff a target. Salvation overheals are transferred to them.</li>
<li>Doctrine of Righteousness &#8211; Heal the target of Righteous Mandate, costs 1 conviction.</li>
<li>Even Justice &#8211; Melee life damage to up to 2 enemies (5 with the talent above).</li>
<li>Sovereignty &#8211; Ranged life damage, 20s cooldown.</li>
<li>Righteous Imperative &#8211; AoE taunt.</li>
<li>Interdict &#8211; AoE interrupt, no GCD.</li>
<li>Just Defense &#8211; Shield for 1840 damage for 10 seconds.</li>
</ul>
<p>Righteous Mandate is a great way to help keep the healer alive, I think. And in healing mode, it&#8217;s a way to help the tank &#8211; everybody wins. Mostly I used it in beta to keep my faerie alive while I let skeletons chew on it, but I did use it on a real player once when he took over tanking crazy invasion bosses that I couldn&#8217;t hit &#8211; I ran around beating up adds <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Even Justice is the Justicar&#8217;s first answer to group tanking. It does not have a cooldown and doesn&#8217;t look too heinously expensive and has the nice side effect of potentially healing the user for quite a bit of damage.</p>
<p>Sovereignty is the aforementioned stun that I am not turning into a stun. As it stands, it is just a big instant-cast life nuke with a long cooldown, so I&#8217;m not sure if i&#8217;ll be using it at all.</p>
<p>Righteous Imperative. Nothing to say here, AoE taunt is the other answer to group tanking. Interdict will also help.</p>
<p>Just Defense is the panic button and extra bubble I&#8217;ve been waiting for. It&#8217;s also the primary reason I&#8217;m spending 38 points in Justicar instead of stopping at 32 and taking the other 6-7 points to another tree perhaps.</p>
<h5>insufficient bang coefficient</h5>
<p>The two Justicar root abilities that I did not pick up are the 44 and 51 point monsters. It could be that I decide that I really need to move 12 points out of my other trees to get these&#8230; but for now I don&#8217;t expect I will.</p>
<p>The 44 point Justicar ability, Resplendent Embrace, is a panic button for when your healer just isn&#8217;t keeping up with the pain. It increases his ability to do his job for 10 seconds every 2 minutes. This is the kind of thing that I suspect needs coordination to make really worthwhile&#8230; especially considering that Just Defense arrives 6 levels sooner and can be used twice as often. Besides, if you have a good healer that you can coordinate this sort of cooldown with, I imagine that he won&#8217;t really need this kind of help to keep your group standing. And hey, even if he dies, you can always combat rez him <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Doctrine of Authority is the 51 point Justicar ability and is really quite sweet as far as 51 point abilities go. Some are downright disappointing. But this one&#8230; is just too expensive for now. It is an attack on a 15s cooldown that burns a conviction to heal 5 party members for 300% of the damage done. This would make Mien of Honor much more appealing as a viable group healing solution but if you&#8217;re going to that much trouble to heal a party, why not just respec Sentinel and be done with it?</p>
<h5>checklist</h5>
<p>If this build can&#8217;t tank casual instance content, then I will be quite surprised and even more disappointed.</p>
<p>Passive bonuses include:</p>
<ul>
<li>-18% damage taken</li>
<li>+10% healing received</li>
<li>+15% armour (before mien of tankitude)</li>
<li>30% of spell power to block rating, and 195% to parry rating</li>
<li>+4% melee crit chance</li>
<li>+10% instant cast damage</li>
<li>+15% instant cast healing, +4% healing over time</li>
<li>+5 dex or +5 str to raid</li>
</ul>
<p>Healing options includes:</p>
<ul>
<li>all attacks heal cleric and nearby raid members for 25% of damage done with justicar abilities and for 11/10% of damage done with other abilities</li>
<li>overheals from attacks transfer over to a designated party member</li>
<li>two different bubbles help guarantee some degree of overhealing occurs regularly</li>
<li>critical hits received heal cleric for 150% of wisdom over 12s</li>
<li>two buttons to heal righteous mandate target</li>
<li>mien of honor</li>
<li>a short cooldown to increase the next heal cast</li>
<li>remove one curse/disease/poison</li>
<li>two combat self heals, and one combat party heal</li>
<li>one single-target hot, one single-target heal + hot, one party aoe hot, one big single target heal that scales off of hots</li>
<li>the best combat rez in the game</li>
</ul>
<p>Mana management options include:</p>
<ul>
<li>regen mode once a minute to regen 10% of mana per melee ability attack over 10s (probably translates to 50% of a mana bar)</li>
<li>blocking regains 5% mana</li>
<li>-15% casting cost of doctrines</li>
</ul>
<p>Crowd control options include:</p>
<ul>
<li>knockback</li>
<li>silence</li>
<li>interrupt</li>
<li>snare</li>
</ul>
<p>Tanking options include:</p>
<ul>
<li>mien of leadership (+300% threat, +90% endurance, +139% armour)</li>
<li>precept of refuge (+20% block)</li>
<li>break snare/root</li>
<li>taunt</li>
<li>aoe taunt</li>
<li>aoe melee</li>
</ul>
<p>And there you have it. This class system is deep and full of interesting synergies that will take a lot of getting used to. I can&#8217;t wait to slog my way through crowded newbie zones with the rest of the preorders as I put this to the test&#8230; and as I find out what rugs they have pulled out from under me since last weekend <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://ammonlauritzen.com/blog/2011/02/23/rift-speculatory-specification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>virtualbox rules</title>
		<link>http://ammonlauritzen.com/blog/2010/03/10/virtualbox-rules/</link>
		<comments>http://ammonlauritzen.com/blog/2010/03/10/virtualbox-rules/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 21:42:23 +0000</pubDate>
		<dc:creator>Ammon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://ammonlauritzen.com/blog/?p=1111</guid>
		<description><![CDATA[Nothing much to say here, but with absolutely minimal pain and suffering, I have 64-bit linux virtual machines running on top of my 32-bit windows XP install. This pleases me. The recipe: Compatible CPU with VT-x/AMD-V enabled in the BIOS Innotek/Oracle/Sun VirtualBox (a current version) with hardware virtualization enabled Profit! The one downside to this? [...]]]></description>
			<content:encoded><![CDATA[<p>Nothing much to say here, but with absolutely minimal pain and suffering, I have 64-bit linux virtual machines running on top of my 32-bit windows XP install. This pleases me.</p>
<p>The recipe:</p>
<ol>
<li>Compatible CPU with VT-x/AMD-V enabled in the BIOS</li>
<li>Innotek/Oracle/Sun VirtualBox (a current version) with hardware virtualization enabled</li>
<li>Profit!</li>
</ol>
<p>The one downside to this? 64-bit VM&#8217;s running on 32-bit host OS can&#8217;t see multiple cpu&#8217;s. Boo. Hoo. I&#8217;ll just run more VM&#8217;s!</p>
<p><a href="http://ammonlauritzen.com/blog/wp-content/uploads/2010/03/centos-installer-64-virtualbox.png"><img src="http://ammonlauritzen.com/blog/wp-content/uploads/2010/03/centos-installer-64-virtualbox-300x250.png" alt="64-bit centos installer" title="centos-installer-64-virtualbox" width="300" height="250" class="alignnone size-medium wp-image-1112" /></a> <a href="http://ammonlauritzen.com/blog/wp-content/uploads/2010/03/ubuntu-64-virtualbox.png"><img src="http://ammonlauritzen.com/blog/wp-content/uploads/2010/03/ubuntu-64-virtualbox-300x250.png" alt="64-bit ubuntu livecd" title="ubuntu-64-virtualbox" width="300" height="250" class="alignnone size-medium wp-image-1113" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ammonlauritzen.com/blog/2010/03/10/virtualbox-rules/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>dead simple traditional style rotation</title>
		<link>http://ammonlauritzen.com/blog/2010/02/05/dead-simple-traditional-style-rotation/</link>
		<comments>http://ammonlauritzen.com/blog/2010/02/05/dead-simple-traditional-style-rotation/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 17:51:26 +0000</pubDate>
		<dc:creator>Ammon</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[logfiles]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://ammonlauritzen.com/blog/?p=1105</guid>
		<description><![CDATA[In response to my two-step rotation post earlier this week, I figure I may as well share the logic I use for a more traditional logfile rotation scheme. I think this is as simple as I can possibly make it: &#38;lt;? define&#40; 'MAX_COPIES', 3 &#41;; $back_fname = &#38;quot;/path/to/log/file/abc.log&#38;quot;; function trace&#40; $msg &#41; &#123; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>In response to <a href='http://ammonlauritzen.com/blog/2010/02/03/simple-two-step-logfile-rotation/'>my two-step rotation post</a> earlier this week, I figure I may as well share the logic I use for a more traditional logfile rotation scheme.</p>
<p>I think this is as simple as I can possibly make it:</p>
<div class="syntax_hilite">
<div id="php-3">
<div class="php">&amp;lt;?<br />
<a href="http://www.php.net/define"><span style="color:#000066;">define</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#FF0000;">'MAX_COPIES'</span>, <span style="color:#CC66CC;">3</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$back_fname</span> = &amp;quot;/path/to/<a href="http://www.php.net/log"><span style="color:#000066;">log</span></a>/<a href="http://www.php.net/file"><span style="color:#000066;">file</span></a>/abc.log&amp;quot;;</p>
<p><span style="color:#000000; font-weight:bold;">function</span> trace<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$msg</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> &amp;quot;- <span style="color:#0000FF;">$msg</span>\n&amp;quot;;<br />
<span style="color:#006600; font-weight:bold;">&#125;</span></p>
<p><a href="http://www.php.net/exec"><span style="color:#000066;">exec</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;ls -r $<span style="color:#006600; font-weight:bold;">&#123;</span>back_fname<span style="color:#006600; font-weight:bold;">&#125;</span>*&amp;quot;, <span style="color:#0000FF;">$copies</span>, <span style="color:#0000FF;">$succ</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#616100;">while</span><span style="color:#006600; font-weight:bold;">&#40;</span> <a href="http://www.php.net/count"><span style="color:#000066;">count</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$copies</span><span style="color:#006600; font-weight:bold;">&#41;</span>&amp;gt;= MAX_COPIES <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; <span style="color:#0000FF;">$fname</span> = <a href="http://www.php.net/array_shift"><span style="color:#000066;">array_shift</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$copies</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; trace<span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;deleting &amp;quot;.<span style="color:#0000FF;">$fname</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#006600; font-weight:bold;">&#125;</span><br />
<span style="color:#0000FF;">$next</span> = <a href="http://www.php.net/count"><span style="color:#000066;">count</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$copies</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#616100;">while</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$fname</span> = <a href="http://www.php.net/array_shift"><span style="color:#000066;">array_shift</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$copies</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; --<span style="color:#0000FF;">$next</span>;<br />
&nbsp; &nbsp; trace<span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;rotating <span style="color:#0000FF;">$fname</span> -&amp;gt; <span style="color:#0000FF;">$next</span>&amp;quot; <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; <a href="http://www.php.net/rename"><span style="color:#000066;">rename</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$fname</span>, &amp;quot;<span style="color:#0000FF;">$back_fname</span>.<span style="color:#0000FF;">$next</span>&amp;quot; <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#006600; font-weight:bold;">&#125;</span></p>
<p>trace<span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;creating <span style="color:#0000FF;">$back_fname</span>&amp;quot; <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<a href="http://www.php.net/touch"><span style="color:#000066;">touch</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$back_fname</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
?&amp;gt;</div>
</div>
</div>
<p></p>
<p>A sample series of executions might look like this:</p>
<div class="syntax_hilite">
<div id="code-4">
<div class="code">ammon@wernstrom:/path/to/log/file$ touch abc.<span style="">log</span><br />
ammon@wernstrom:/path/to/log/file$ php rotate.<span style="">php</span> <br />
- rotating /path/to/log/file/abc.<span style="">log</span> -&amp;gt; <span style="color:#800000;">0</span><br />
- creating /path/to/log/file/abc.<span style="">log</span><br />
ammon@wernstrom:/path/to/log/file$ php rotate.<span style="">php</span> <br />
- rotating /path/to/log/file/abc.<span style="">log</span>.<span style="color:#800000;">0</span> -&amp;gt; <span style="color:#800000;">1</span><br />
- rotating /path/to/log/file/abc.<span style="">log</span> -&amp;gt; <span style="color:#800000;">0</span><br />
- creating /path/to/log/file/abc.<span style="">log</span><br />
ammon@wernstrom:/path/to/log/file$ php rotate.<span style="">php</span> <br />
- rotating /path/to/log/file/abc.<span style="">log</span>.<span style="color:#800000;">1</span> -&amp;gt; <span style="color:#800000;">2</span><br />
- rotating /path/to/log/file/abc.<span style="">log</span>.<span style="color:#800000;">0</span> -&amp;gt; <span style="color:#800000;">1</span><br />
- rotating /path/to/log/file/abc.<span style="">log</span> -&amp;gt; <span style="color:#800000;">0</span><br />
- creating /path/to/log/file/abc.<span style="">log</span><br />
ammon@wernstrom:/path/to/log/file$ php rotate.<span style="">php</span> <br />
- deleting /path/to/log/file/abc.<span style="">log</span>.<span style="color:#800000;">2</span><br />
- rotating /path/to/log/file/abc.<span style="">log</span>.<span style="color:#800000;">1</span> -&amp;gt; <span style="color:#800000;">2</span><br />
- rotating /path/to/log/file/abc.<span style="">log</span>.<span style="color:#800000;">0</span> -&amp;gt; <span style="color:#800000;">1</span><br />
- rotating /path/to/log/file/abc.<span style="">log</span> -&amp;gt; <span style="color:#800000;">0</span><br />
- creating /path/to/log/file/abc.<span style="">log</span></div>
</div>
</div>
<p></p>
<p>This doesn't have any failsafes, doesn't compress anything, depends on an external call to 'ls', and it actually deletes old files in stead of overwriting them... but it is the shortest, simplest method I've come up with to get the job done.</p>
<p>If I feel like making this a full-fledged series, I might actually post a more thorough implementation later <img src='http://ammonlauritzen.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://ammonlauritzen.com/blog/2010/02/05/dead-simple-traditional-style-rotation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>simple two-step logfile rotation</title>
		<link>http://ammonlauritzen.com/blog/2010/02/03/simple-two-step-logfile-rotation/</link>
		<comments>http://ammonlauritzen.com/blog/2010/02/03/simple-two-step-logfile-rotation/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 19:23:08 +0000</pubDate>
		<dc:creator>Ammon</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[logfiles]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://ammonlauritzen.com/blog/?p=1103</guid>
		<description><![CDATA[This is the result of 10 minutes of pounding on the keyboard after yet another disappointing experience with trying to get logrotate to do something vaguely more flexible. This simple script scans all normal files in a log directory, and if they are older than a certain cutoff, moves them into a holding directory for [...]]]></description>
			<content:encoded><![CDATA[<p>This is the result of 10 minutes of pounding on the keyboard after yet another disappointing experience with trying to get logrotate to do something vaguely more flexible.</p>
<p>This simple script scans all normal files in a log directory, and if they are older than a certain cutoff, moves them into a holding directory for old logs. Future passes will check files in the old directory for another age setting and will delete them. That's all there is to it.</p>
<p>Configure your cutoffs, directories of interest, and optionally plug in a better logging mechanism and you're set. (Oh, and change the #! if necessary, of course).</p>
<div class="syntax_hilite">
<div id="php-6">
<div class="php"><span style="color:#008000; font-style:italic;">#!/usr/bin/php</span><br />
&amp;lt;?<br />
<span style="color:#0000FF;">$cutoff_rotate</span> = &amp;quot;<span style="color:#CC66CC;">3</span> days&amp;quot;;<br />
<span style="color:#0000FF;">$cutoff_delete</span> = &amp;quot;<span style="color:#CC66CC;">7</span> days&amp;quot;;<br />
<span style="color:#0000FF;">$dir_log</span> = &amp;quot;/logs&amp;quot;;<br />
<span style="color:#0000FF;">$dir_old</span> = &amp;quot;/logs.old&amp;quot;;</p>
<p><span style="color:#000000; font-weight:bold;">function</span> trace<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$msg</span>, <span style="color:#0000FF;">$debug</span> = <span style="color:#000000; font-weight:bold;">FALSE</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// appropriate logging mechanism can be plugged in here</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> &amp;quot;<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#0000FF;">$msg</span>\n&amp;quot;;<br />
<span style="color:#006600; font-weight:bold;">&#125;</span></p>
<p><span style="color:#FF9933; font-style:italic;">// scan old files for deletion</span><br />
<span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> <a href="http://www.php.net/is_dir"><span style="color:#000066;">is_dir</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$dir_old</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; <span style="color:#0000FF;">$dh</span> = <a href="http://www.php.net/opendir"><span style="color:#000066;">opendir</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$dir_old</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$dh</span> !== <span style="color:#000000; font-weight:bold;">FALSE</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/chdir"><span style="color:#000066;">chdir</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$dir_old</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; trace<span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;scanning <span style="color:#0000FF;">$dir_old</span> <span style="color:#616100;">for</span> logs more than <span style="color:#0000FF;">$cutoff_delete</span> old&amp;quot; <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$cutoff</span> = <a href="http://www.php.net/strtotime"><span style="color:#000066;">strtotime</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;-<span style="color:#0000FF;">$cutoff_delete</span>&amp;quot; <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; trace<span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;cutoff is &amp;quot;.<a href="http://www.php.net/date"><span style="color:#000066;">date</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'r'</span>,<span style="color:#0000FF;">$cutoff</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">while</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$file</span> = <a href="http://www.php.net/readdir"><span style="color:#000066;">readdir</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$dh</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> !== <span style="color:#000000; font-weight:bold;">FALSE</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> <a href="http://www.php.net/is_dir"><span style="color:#000066;">is_dir</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$file</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trace<span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;skipping <span style="color:#0000FF;">$file</span>&amp;quot;, <span style="color:#000000; font-weight:bold;">true</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">continue</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#616100;">else</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$ts</span> = <a href="http://www.php.net/filemtime"><span style="color:#000066;">filemtime</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$file</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$ts</span> &amp;lt;<span style="color:#0000FF;">$cutoff</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trace<span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;deleting <span style="color:#0000FF;">$file</span>, &amp;quot;.<a href="http://www.php.net/date"><span style="color:#000066;">date</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'r'</span>,<span style="color:#0000FF;">$ts</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$succ</span> = @<a href="http://www.php.net/unlink"><span style="color:#000066;">unlink</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$file</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> !<span style="color:#0000FF;">$succ</span> <span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trace<span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;failed to <a href="http://www.php.net/unlink"><span style="color:#000066;">unlink</span></a> <span style="color:#0000FF;">$file</span>!&amp;quot; <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#616100;">else</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trace<span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;ignoring <span style="color:#0000FF;">$file</span>, &amp;quot;.<a href="http://www.php.net/date"><span style="color:#000066;">date</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'r'</span>,<span style="color:#0000FF;">$ts</span><span style="color:#006600; font-weight:bold;">&#41;</span>, <span style="color:#000000; font-weight:bold;">true</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/closedir"><span style="color:#000066;">closedir</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$dh</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#616100;">else</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; trace<span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;no old <a href="http://www.php.net/log"><span style="color:#000066;">log</span></a> <a href="http://www.php.net/dir"><span style="color:#000066;">dir</span></a> <span style="color:#0000FF;">$dir_old</span> to scan yet&amp;quot; <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#006600; font-weight:bold;">&#125;</span></p>
<p><span style="color:#FF9933; font-style:italic;">// scan current files for rotation</span><br />
<span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> <a href="http://www.php.net/file_exists"><span style="color:#000066;">file_exists</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$dir_old</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; trace<span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;creating <span style="color:#0000FF;">$dir_old</span>&amp;quot; <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color:#0000FF;">$succ</span> = @<a href="http://www.php.net/mkdir"><span style="color:#000066;">mkdir</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$dir_old</span>, <span style="color:#CC66CC;">0775</span>, <span style="color:#000000; font-weight:bold;">true</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> !<span style="color:#0000FF;">$succ</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; trace<span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;mkdir failed, aborting rotation&amp;quot; <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/exit"><span style="color:#000066;">exit</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#CC66CC;">1</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
<span style="color:#006600; font-weight:bold;">&#125;</span><br />
<span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> <a href="http://www.php.net/is_dir"><span style="color:#000066;">is_dir</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$dir_log</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; <span style="color:#0000FF;">$dh</span> = <a href="http://www.php.net/opendir"><span style="color:#000066;">opendir</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$dir_log</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$dh</span> !== <span style="color:#000000; font-weight:bold;">FALSE</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/chdir"><span style="color:#000066;">chdir</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$dir_log</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; trace<span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;scanning <span style="color:#0000FF;">$dir_log</span> <span style="color:#616100;">for</span> logs more than <span style="color:#0000FF;">$cutoff_rotate</span> old&amp;quot; <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$cutoff</span> = <a href="http://www.php.net/strtotime"><span style="color:#000066;">strtotime</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;-<span style="color:#0000FF;">$cutoff_delete</span>&amp;quot; <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; trace<span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;cutoff is &amp;quot;.<a href="http://www.php.net/date"><span style="color:#000066;">date</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'r'</span>,<span style="color:#0000FF;">$cutoff</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">while</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$file</span> = <a href="http://www.php.net/readdir"><span style="color:#000066;">readdir</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$dh</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> !== <span style="color:#000000; font-weight:bold;">FALSE</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> <a href="http://www.php.net/is_dir"><span style="color:#000066;">is_dir</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$file</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trace<span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;skipping <span style="color:#0000FF;">$file</span>&amp;quot;, <span style="color:#000000; font-weight:bold;">true</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">continue</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#616100;">else</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$ts</span> = <a href="http://www.php.net/filemtime"><span style="color:#000066;">filemtime</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$file</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$ts</span> &amp;lt;<span style="color:#0000FF;">$cutoff</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trace<span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;rotating <span style="color:#0000FF;">$file</span>, &amp;quot;.<a href="http://www.php.net/date"><span style="color:#000066;">date</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'r'</span>,<span style="color:#0000FF;">$ts</span><span style="color:#006600; font-weight:bold;">&#41;</span>, <span style="color:#000000; font-weight:bold;">true</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$succ</span> = @<a href="http://www.php.net/rename"><span style="color:#000066;">rename</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$file</span>, <span style="color:#0000FF;">$dir_old</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> !<span style="color:#0000FF;">$succ</span> <span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trace<span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;failed to rotate <span style="color:#0000FF;">$file</span>!&amp;quot; <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#616100;">else</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trace<span style="color:#006600; font-weight:bold;">&#40;</span> &amp;quot;ignoring <span style="color:#0000FF;">$file</span>, &amp;quot;.<a href="http://www.php.net/date"><span style="color:#000066;">date</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'r'</span>,<span style="color:#0000FF;">$ts</span><span style="color:#006600; font-weight:bold;">&#41;</span>, <span style="color:#000000; font-weight:bold;">true</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/closedir"><span style="color:#000066;">closedir</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$dh</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#006600; font-weight:bold;">&#125;</span><br />
?&amp;gt;</div>
</div>
</div>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://ammonlauritzen.com/blog/2010/02/03/simple-two-step-logfile-rotation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>lazy php profiler</title>
		<link>http://ammonlauritzen.com/blog/2010/01/12/lazy-php-profiler/</link>
		<comments>http://ammonlauritzen.com/blog/2010/01/12/lazy-php-profiler/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 01:06:56 +0000</pubDate>
		<dc:creator>Ammon</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://ammonlauritzen.com/blog/?p=1096</guid>
		<description><![CDATA[Caveman profiling with a side of "where were you at 9pm on the night in question?" As always, season to taste. &#38;lt;? $_profile_log = &#38;quot;/tmp/php-profile.log&#38;quot;; function _profile&#40;&#41; &#123; &#160; &#160; static $fh; &#160; &#160; if&#40; !isset&#40;$fh&#41; &#41; &#123; &#160; &#160; &#160; &#160; global $_profile_log; &#160; &#160; &#160; &#160; if&#40; !file_exists&#40;$_profile_log&#41; &#41; &#123; &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Caveman profiling with a side of "where were you at 9pm on the night in question?" As always, season to taste.</p>
<div class="syntax_hilite">
<div id="php-10">
<div class="php">&amp;lt;?<br />
<span style="color:#0000FF;">$_profile_log</span> = &amp;quot;/tmp/php-profile.log&amp;quot;;</p>
<p><span style="color:#000000; font-weight:bold;">function</span> _profile<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/static"><span style="color:#000066;">static</span></a> <span style="color:#0000FF;">$fh</span>;<br />
&nbsp; &nbsp; <span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> !<a href="http://www.php.net/isset"><span style="color:#000066;">isset</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$fh</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/global"><span style="color:#000066;">global</span></a> <span style="color:#0000FF;">$_profile_log</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> !<a href="http://www.php.net/file_exists"><span style="color:#000066;">file_exists</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$_profile_log</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @<a href="http://www.php.net/touch"><span style="color:#000066;">touch</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$_profile_log</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @<a href="http://www.php.net/chmod"><span style="color:#000066;">chmod</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$_profile_log</span>, <span style="color:#CC66CC;">0664</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$fh</span> = @<a href="http://www.php.net/fopen"><span style="color:#000066;">fopen</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$_profile_log</span>, &amp;quot;a&amp;quot; <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
&nbsp; &nbsp; <span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> !<span style="color:#0000FF;">$fh</span> <span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">return</span> <span style="color:#000000; font-weight:bold;">false</span>;</p>
<p>&nbsp; &nbsp; <span style="color:#0000FF;">$stack</span> = <a href="http://www.php.net/debug_backtrace"><span style="color:#000066;">debug_backtrace</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$stack</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#CC66CC;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$base</span> = <span style="color:#0000FF;">$stack</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#CC66CC;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color:#616100;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$base</span> = <span style="color:#0000FF;">$stack</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#CC66CC;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color:#0000FF;">$buf</span> = <span style="color:#0000FF;">$base</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'file'</span><span style="color:#006600; font-weight:bold;">&#93;</span>.&amp;quot;:&amp;quot;.<span style="color:#0000FF;">$base</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'line'</span><span style="color:#006600; font-weight:bold;">&#93;</span>.&amp;quot;, &amp;quot;;<br />
&nbsp; &nbsp; <span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$base</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'class'</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$buf</span> .= <span style="color:#0000FF;">$base</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'class'</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#0000FF;">$base</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'type'</span><span style="color:#006600; font-weight:bold;">&#93;</span>;<br />
&nbsp; &nbsp; <span style="color:#0000FF;">$buf</span> .= <span style="color:#0000FF;">$base</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'function'</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</p>
<p>&nbsp; &nbsp; <span style="color:#0000FF;">$buf</span> = <a href="http://www.php.net/sprintf"><span style="color:#000066;">sprintf</span></a><span style="color:#006600; font-weight:bold;">&#40;</span>&amp;quot;<span style="color:#006600; font-weight:bold;">&#91;</span>%s<span style="color:#006600; font-weight:bold;">&#93;</span> %s\n&amp;quot;,<a href="http://www.php.net/date"><span style="color:#000066;">date</span></a><span style="color:#006600; font-weight:bold;">&#40;</span>&amp;quot;H:i:s&amp;quot;<span style="color:#006600; font-weight:bold;">&#41;</span>,<span style="color:#0000FF;">$buf</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color:#616100;">return</span> @<a href="http://www.php.net/fwrite"><span style="color:#000066;">fwrite</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$fh</span>, <span style="color:#0000FF;">$buf</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#006600; font-weight:bold;">&#125;</span><br />
?&amp;gt;</div>
</div>
</div>
<p>
<span id="more-1096"></span><br />
Sample use:</p>
<div class="syntax_hilite">
<div id="php-11">
<div class="php">&amp;lt;?<br />
<span style="color:#616100;">require_once</span> &amp;quot;profiler.php&amp;quot;;</p>
<p><span style="color:#FF9933; font-style:italic;">// setup</span><br />
<span style="color:#000000; font-weight:bold;">function</span> func<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; _profile<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#006600; font-weight:bold;">&#125;</span></p>
<p><span style="color:#000000; font-weight:bold;">class</span> obj <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; <span style="color:#000000; font-weight:bold;">function</span> method<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; _profile<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
&nbsp; &nbsp; <span style="color:#000000; font-weight:bold;">function</span> other_method<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; func<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
&nbsp; &nbsp; <span style="color:#000000; font-weight:bold;">function</span> indirect_method<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$this</span>-&amp;gt;method<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
<span style="color:#006600; font-weight:bold;">&#125;</span></p>
<p><span style="color:#0000FF;">$obj</span> = <span style="color:#000000; font-weight:bold;">new</span> obj<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</p>
<p><span style="color:#FF9933; font-style:italic;">// actual invocation cases</span><br />
_profile<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
func<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
obj::<span style="color:#006600;">method</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$obj</span>-&amp;gt;method<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$obj</span>-&amp;gt;other_method<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$obj</span>-&amp;gt;indirect_method<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
?&amp;gt;</div>
</div>
</div>
<p></p>
<p>Output:</p>
<div class="syntax_hilite">
<div id="code-12">
<div class="code">ammon@elzar:~$ cat /tmp/php-profile.<span style="">log</span> <br />
<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">19</span>:<span style="color:#800000;">00</span>:<span style="color:#800000;">21</span><span style="color:#006600; font-weight:bold;">&#93;</span> /home/ammon/test.<span style="">php</span>:<span style="color:#800000;">20</span>, _profile<br />
<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">19</span>:<span style="color:#800000;">00</span>:<span style="color:#800000;">21</span><span style="color:#006600; font-weight:bold;">&#93;</span> /home/ammon/test.<span style="">php</span>:<span style="color:#800000;">21</span>, func<br />
<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">19</span>:<span style="color:#800000;">00</span>:<span style="color:#800000;">21</span><span style="color:#006600; font-weight:bold;">&#93;</span> /home/ammon/test.<span style="">php</span>:<span style="color:#800000;">22</span>, obj::<span style="">method</span><br />
<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">19</span>:<span style="color:#800000;">00</span>:<span style="color:#800000;">21</span><span style="color:#006600; font-weight:bold;">&#93;</span> /home/ammon/test.<span style="">php</span>:<span style="color:#800000;">24</span>, obj-&amp;gt;method<br />
<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">19</span>:<span style="color:#800000;">00</span>:<span style="color:#800000;">21</span><span style="color:#006600; font-weight:bold;">&#93;</span> /home/ammon/test.<span style="">php</span>:<span style="color:#800000;">13</span>, func<br />
<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">19</span>:<span style="color:#800000;">00</span>:<span style="color:#800000;">21</span><span style="color:#006600; font-weight:bold;">&#93;</span> /home/ammon/test.<span style="">php</span>:<span style="color:#800000;">16</span>, obj-&amp;gt;method</div>
</div>
</div>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://ammonlauritzen.com/blog/2010/01/12/lazy-php-profiler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>almost recovered</title>
		<link>http://ammonlauritzen.com/blog/2010/01/02/almost-recovered/</link>
		<comments>http://ammonlauritzen.com/blog/2010/01/02/almost-recovered/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 02:16:24 +0000</pubDate>
		<dc:creator>Ammon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[blogging]]></category>

		<guid isPermaLink="false">http://ammonlauritzen.com/blog/?p=1079</guid>
		<description><![CDATA[I've gone through all of my old posts (~260 of them in my 5+ year history) and tagged them. I've got a theme that doesn't make me want to tear my eyes out, but it's not what I want yet. I've acknowledged all missing images that I noticed by tagging the post as 'broken images', [...]]]></description>
			<content:encoded><![CDATA[<p>I've gone through all of my old posts (~260 of them in my 5+ year history) and tagged them.</p>
<p>I've got a theme that doesn't make me want to tear my eyes out, but it's not what I want yet.</p>
<p>I've acknowledged all missing images that I noticed by tagging the post as 'broken images', and I'll be going through them again later to see if I have any remaining local copies of the files in question.</p>
<p>I've installed a modern syntax hiliting plugin, so code should be readable again.</p>
<p>Sooo close.</p>
]]></content:encoded>
			<wfw:commentRss>http://ammonlauritzen.com/blog/2010/01/02/almost-recovered/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sigh</title>
		<link>http://ammonlauritzen.com/blog/2009/12/31/sigh/</link>
		<comments>http://ammonlauritzen.com/blog/2009/12/31/sigh/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 01:46:12 +0000</pubDate>
		<dc:creator>Ammon</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[technical difficulty]]></category>

		<guid isPermaLink="false">http://ammonlauritzen.com/blog/?p=747</guid>
		<description><![CDATA[I can't type. I Just managed to delete my entire blog content dir and plugins. This means all of my images and any uploaded zips are gone. Also, my company has recently had to make some dramatic changes that I'm still coping with. I am still employed, but I'm not much in the mood to [...]]]></description>
			<content:encoded><![CDATA[<p>I can't type. I Just managed to delete my entire blog content dir and plugins. This means all of my images and any uploaded zips are gone.</p>
<p>Also, my company has recently had to make some dramatic changes that I'm still coping with. I am still employed, but I'm not much in the mood to continue with any of my previous article series at present.</p>
<p>On the bright side, this gives me an excuse upgrade to WP2.9 and dig through my 250+ post archive and clean things up.</p>
<p>Please excuse the mess while I unbork everything. Happy new year.</p>
]]></content:encoded>
			<wfw:commentRss>http://ammonlauritzen.com/blog/2009/12/31/sigh/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

