For -years- I have hoped and searched and wished and moaned for lack of a halfway decent terminal emulator on Windows. Specifically, one that:

  1. Lets me use my standard unix toolset.
  2. Gives me a command line interface to the host machine WITHOUT requiring me to do something ridiculous like ssh’ing to localhost or firing up an x11 server…
  3. Realizes that sometimes the display is wider than 80 characters…
  4. Provides customizable color codes (#006 on black really stinks).
  5. Doesn’t set TERM=something-nobody-supports.

One wouldn’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.

So, for years, I have used Cygwin xterms and rxvt as a mildly tolerable alternative to, well, nothing.

Today, a coworker and I discovered a 3-year-old blog post promoting Console, a GPL licensed CMD.exe replacement that matches all of my base criteria plus my big dream feature of tabs. TABS!

Console2, Where have you been all my life?!

The project is ancient – but I was using linux desktops for work back in its early days so that probably accounts for my missing it back then.

In the grand tradition of old Sourceforge projects, there is no installer. You just decompress it somewhere and run the exe directly.

When I launched it the first time, I was unsurprised by the 80×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:

And a few minutes later:

Read the rest of this entry »

I am a well-known altoholic, so I always plan on rolling one of everything. The game’s class mechanics are kind to me in this respect – 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… I’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.

It’s time to talk about the second of my 5 chosen specs.

To be fair, the cleric specs are the ones I’ve spent the most time considering and the others are just being thrown in for completeness – and because they hopefully show some of the cool things that should be possible in this game. I’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 – but will admit that I’ve not done any instances with this build since I’m uncomfortable tanking pugs in unfamiliar content.

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.

Last night, my guild ran DSM 4 times in succession – 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 – 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’t have any problems – but even then, I was able to keep everyone standing and had zero problems with threat generation, mana efficiency, or self preservation.
Read the rest of this entry »

I’m itching to do a write-up on some of RIFT’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’d like to take a moment and outline the salient points that make each of the game’s 30-odd subclasses unique and interesting, because I’ve yet to find anything of the sort anywhere. Most wikis just quote the same garbage promotional text that talks about how Champions have “legendary strength” and move with “startling speed” 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.
Read the rest of this entry »

Okay, so I find myself needing to apologize. It has been an unacceptably long time since I’ve written anything. I also apologize for the unfocused and unusually verbose braindump you are about to witness. I’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’s just excuses.

In that time period, I wrote 5 articles that haven’t made it here. Hopefully the time will present itself to re-evaluate 2 or 3 of them in the next month.

But for now, something more current ;)

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.
Read the rest of this entry »

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:

  1. Compatible CPU with VT-x/AMD-V enabled in the BIOS
  2. Innotek/Oracle/Sun VirtualBox (a current version) with hardware virtualization enabled
  3. Profit!

The one downside to this? 64-bit VM’s running on 32-bit host OS can’t see multiple cpu’s. Boo. Hoo. I’ll just run more VM’s!

64-bit centos installer 64-bit ubuntu livecd

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:

<?
define( 'MAX_COPIES', 3 );
$back_fname = "/path/to/log/file/abc.log";

function trace( $msg ) {
    echo "- $msg\n";
}

exec( "ls -r ${back_fname}*", $copies, $succ );
while( count($copies)>= MAX_COPIES ) {
    $fname = array_shift($copies);
    trace( "deleting ".$fname );
}
$next = count($copies);
while( $fname = array_shift($copies) ) {
    --$next;
    trace( "rotating $fname -> $next" );
    rename( $fname, "$back_fname.$next" );
}

trace( "creating $back_fname" );
touch( $back_fname );
?>

A sample series of executions might look like this:

ammon@wernstrom:/path/to/log/file$ touch abc.log
ammon@wernstrom:/path/to/log/file$ php rotate.php
- rotating /path/to/log/file/abc.log -> 0
- creating /path/to/log/file/abc.log
ammon@wernstrom:/path/to/log/file$ php rotate.php
- rotating /path/to/log/file/abc.log.0 -> 1
- rotating /path/to/log/file/abc.log -> 0
- creating /path/to/log/file/abc.log
ammon@wernstrom:/path/to/log/file$ php rotate.php
- rotating /path/to/log/file/abc.log.1 -> 2
- rotating /path/to/log/file/abc.log.0 -> 1
- rotating /path/to/log/file/abc.log -> 0
- creating /path/to/log/file/abc.log
ammon@wernstrom:/path/to/log/file$ php rotate.php
- deleting /path/to/log/file/abc.log.2
- rotating /path/to/log/file/abc.log.1 -> 2
- rotating /path/to/log/file/abc.log.0 -> 1
- rotating /path/to/log/file/abc.log -> 0
- creating /path/to/log/file/abc.log

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.

If I feel like making this a full-fledged series, I might actually post a more thorough implementation later ;)