Monthly Archives: June 2009

A New Job

For the past two years I’ve been working for a home automation company, first as a developer and then as a development manager.  Unless you’re deaf, dumb, and blind you know that the real estate market has been far less than optimal for the past year or three.  That makes it pretty challenging to work in an industry driven primarily by new home sales and secondarily by stock and investment markets.

I’ve just been offered a development job with a glass company, one that’s not particularly affected by real estate market cycles.  I start in two weeks.  It’ll be great to have a change of technology/scenery/responsibilities.  I’ll miss the people where I am now — I worked with some pretty kickass programmers and great people — but I have hit something of a plateau by not being exposed to any new environments lately.

What’s that have to do with Basternae?  Pretty much nothing, other than the fact that your friendly neighborhood codemonkey might get smarter by being exposed to new things.

Today’s Update

I spent a while working on the code today.  Nothing specific, just reorganizing some things, cleaning up some excessive logging, fixing a bug or three.

I ran FxCop again and it came up with 961,407 checks and 9,557 issues, a ratio of 9.94 issues per 1000 checks.  This is an improvement of 6.49% over last check.  I think I’m going to mothball FxCop for now since following its rules doesn’t actually result in better, more stable code.  All FxCop cares about is how “pretty” the code looks.

Elfsong

I just finished reading Elfsong by Elaine Cunningham, book 9 of The Harpers and the sequel to Elfshadow.  It was a 3.5-star book.  It had decent characters, and was your typical sword-and-sorcery novel.  A tale well-told, but not a tale you can’t live without.  Read it if you like the other Harpers books.

A Better To-Do List: Got-It-Done.com

If you’ve explored this blog much in the past you would have noticed that I had a “to do list” published.  It wasn’t well-sorted, and not all that easy to edit.

Since much of what I do in life is todo-list-driven, I’ve always tended to fill post-its and notebook pages with lists of things I need to get done, lists of ideas, tasks, etc.  While I’m at work, I’ll think of things I need to do and jot them down on whatever scrap of paper is handy.  It helps me stay focused, but I tend to have quite a clutter of papers on my desk.

The perfect solution for me to get rid of some of the clutter and make these lists available to me in more places than just my desk is an online solution.  There are already a solid handful of sites you can use to do that, but I’m far too hardcore for my own good.

Instead, since I wanted to get more familiar with the Django web framework and the jQuery JavaScript library, I built my own online task management application.  It was fun, challenging, and immediately useful.  I’ve moved the Basternae to-do-list to it and make use of it for everyday organization.

It’s free to create an account, so feel free to try it if it’s something you might find useful.  Here’s a screenshot of it in action:

Got-It-Done Task List Screenshot

Check it out at http://got-it-done.com.  It’s pretty beta, so feel free to offer suggestions and/or let me know if you have any errors.

Mono 2.01 Doesn’t Like XmlElementAttribute

I have zone files loading on Mono now.

I had a sneaking suspicion that it had something to do with the XmlElementAttribute that I used to keep the XML tags in the zone files compatible with the encapsulated, property-based classes.  I spent a few hours updating the zone converter application so I could remove the XmlElement attributes.  After loading the MUD on Mono, all zone files magically loaded.  “All” being the ~6 that I’m officially authorized to use so far.

Since I’m running Ubuntu 9.04, the native version of Mono is 2.01, a bit behind the current version of 2.4 (which will ship with Ubuntu 9.10).  Installing Mono 2.4 on Ubuntu 9.04 is not as easy as one would hope, and I can’t say for sure that it would take care of the problem.  Mono has made great advances lately, so I’d be surprised if the latest version had the same problem.

Soldiers of Ice

I finished reading book 7 of The Harpers — Soldiers of Ice by David “Zeb” Cook. It was just as good as the previous book, but with a twist:  a plot that was pretty original for a sword-and-sorcery book. I won’t give away the details, but I will say that it’s a solid 4-star book worth reading if you like the genre.

FxCop Still Wants To Shoot Me

Last time I ran FxCop two and a half months ago I had 10,850 issues from 778,249 checks for a ratio of 13.94 issues per 1000 checks.  That was just on the core MUD engine without the utilities included (screen editor, zone editor, etc.)

Today I ran FxCop against the entire codebase.  The ratio has improved thanks to the code changes over the past couple months.  It’s still not great, and it still whines too much about the way constant variables and flags are named.  It’s now 10568 issues from 920,226 checks for a ratio of 11.48 issues per 1000 checks.

Not much of an issue decrease in total, but the overall issue “density” has improved by 17.65%.

Crypt of the Shadowking

I just finished reading Crypt of the Shadowking by Mark Anthony, book 6 of The Harpers. It’s been the best book in the series so far.  Unlike most fantasy, the characters are two-dimensional and the character-to-character interactions are natural. It’s a shame the author has such a common name — he’s very hard to Google, but apparently he wrote a few more books for TSR and a series called The Last Rune that had some popularity.

ReSharper 4.5: It’s Finally Awesome

The two of you who have been following this blog regularly probably know that I’ve tried demos of JetBrains ReSharper versions 3 and 4 in the past.  The verdict was that they were pretty neat, but far too slow to be of any practical use.

Today I downloaded the trial version of ReSharper 4.5.  The big improvement they claim to have made is a significant speed increase.  After trying it out, I believe it.  They claim speed increases of about 25-40% depending on the type of project you’re working on, but that’s an understatement.  I’m using the same hardware I used for the previous test a year ago (yeah I need an upgrade, but that’s not something I care to address right now).   I haven’t used stopwatch tests, but it feels like ReSharper 4.5 is easily two to three times faster than ReSharper 4.0.

It’s now totally worth using — it has all of the benefits without any of the drawbacks the previous versions had.  Good work, JetBrains.

Magma MUD Codebase: Generally Quite Stable

The Magma MUD test site has been running for over a month now without any administrative intervention.  I have it set to automatically reboot the MUD after it’s been up a week.  That has happened 4 times now.  The fifth reboot was due to a segmentation fault (null reference exception) on June 10.  This means that in a month there has only been one unexpected reboot.

Any number more than zero isn’t particularly good, but it seems to be pretty stable under miniscule load (there isn’t really a playerbase, just people wandering in and out infrequently).

Telnet:  basternae.org port 4001.

The Ring of Winter

I finished reading “The Ring of Winter” by James Lowder yesterday.  It was your standard formula “fantasy in the jungle” novel, complete with dinosaurs, cannibalistic goblins, and mysterious artifacts.  I would rate it as “completely average”, three out of five stars.  If you like sword-and-sorcery fiction you’ll like it.  If not, you won’t.

Almost Working on Mono

There’s apparently a strange quirk to the XmlElementAttribute where you have to specify the data type for any type that isn’t a string (you’d think it would auto-detect an int property!)

So, with this:

///
/// The id number of the race.
///
[XmlElement("_number", typeof(int))]
public int Number
{
get { return _number; }
set { _number = value; }
}

Everything now loads, boots up, and characters can log in. However, when entering the game, there’s a NullReferenceException that happens on Mono (but not on the Windows version):

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object
at BasternaeMud.CharData.ResetStats () [0x00000]
at BasternaeMud.SocketConnection.ProcessMenuSelection (System.String argument) [0x00000]
at BasternaeMud.SocketConnection.ConnectionStateManager (System.String argument) [0x00000]
at BasternaeMud.SocketConnection.ProcessPlayerActions () [0x00000]
at BasternaeMud.SocketConnection.MainGameLoop (System.Net.Sockets.Socket control) [0x00000]
at BasternaeMud.Program.Main (System.String[] args) [0x00000]

So far it seems that this only happens for existing players. Creating a new player doesn’t cause this to happen. Might take quite a bit of effort to track down.