Thursday, November 1, 2007

Power outage!

I was happily using the bathroom - when vooom, no power. The UPS on my computer was merrily beeping away, and I figured it would come back on its own - it usually does, there are a lot of tiny outages here. After 10 minutes - zilch! So, I called the City of Columbia - half expecting to have to argue that I had in fact paid my bill (so I went to gmail on my phone, and retrieved my payment history just in case). It turns out that a car hit a telephone pole, and knocked out power to the north side of Columbia!

First of all, I hope nobody was hurt. There's nothing in the news about it, other than the accident - so I assume everyone's ok.

Second, I have to ask - why can one motorist knock out power to a large chunk of the city? Utility companies used to be known for their reliability - in fact, much of the appeal of "utility" style computing comes from offering the kind of legendary "you flip the switch, and it works" reliability for which utility companies are known. I don't know if the woes of Columbia's electrical grid are related to their director resigning (of course they don't say that it is, but they probably wouldn't if it were! ), but it's a pretty poor state of affairs. Over the years, they have blamed squirrels, trees, motorists, and the weather (the latter sometimes being a valid excuse). One thing that is never raised, however, is the apparent lack of redundancy.
Normally, when you design a utility grid - you design it as a grid, or a series of loops - with multiple feeds available for a given area. That way, when a small-scale incident hits one area, that area can still pull power from another feed. This doesn't work on the micro-scale; it's quite expected for an incident to affect a small area around that incident. It's not ok for one car to knock out half of Columbia (including part of campus)!

Sadly, I doubt that much will be done. Investing in public services appears to not be much of a priority here lately.

Monday, October 29, 2007

Novell Netware

I just finished writing Novell Netware support for Full Spectrum Backup. It was fun - ncpmount is very easy to use on Linux. I ended up storing credentials, and having the front-end invoke a shell script (also run by rc.local on boot) - and voila, it actually works!

Novell did complicate matters with their website. The evaluation version of Netware was very helpful. Finding it on their site - ouch. It's a bit like being a rat in a maze, with only the faintest hint of cheese...

Monday, October 22, 2007

Giuliani: terrorist apologist?

Former New York mayor Rudolph Giuliani isn't doing terribly well in Republican primaries right now. This may be a good thing, given his Irish Republican Army [IRA] connections from the past! The champion of post-9/11 terror-fighting has a long history of IRA sympathies. In recent years, he's given Gerry Adams a warm reception (even giving him the 'Crystal Apple' when he was Mayor of New York), and has even named a road in New York after an IRA bomber!

Of course, Romney isn't really that much more palatable a fellow.

Friday, October 19, 2007

I try not to post too much stuff like this...

... but some kitties are just too hard to resist!

upgraded ram
more funny pictures

Wednesday, October 10, 2007

Microsoft wonders why Linux developers call them names....

...and yet using Volume Shadow Copy to copy an open file requires nearly 2,000 lines of C++ and an Interop assembly (in C#). The Linux world can enjoy "lvm create snapshot" or equivalent - as can FreeBSD, Solaris, and just about everyone who isn't a Mac. (Snapshots seem to be the 'time machine' everyone is excited about for Leopard... yay, a feature the rest of us have had for nearly a decade).

Friday, September 28, 2007

In honour of McCoy, sweet companion for two years...

Poor McCoy passed away in my hands over the last half-hour. He'd reached quite a venerable age for a dwarf hamster (2 and a half). I heard a very sad sound from his cage and went to see what was up, and the poor little fellow was curling up and his breathing was slowing. I held him, gave him water and he managed one last sunflower seed - before closing his eyes and his breathing stopped altogether. He's been a faithful companion for a long time, I miss him already. :-(

Hopefully, heaven is one hamster richer tonight.

Friday, September 14, 2007

I forgot I modified Grub a while back!


Says it all about the state of my PC right now, though...

Thursday, September 13, 2007

Engaged!

So, I finally popped the question to Mel yesterday - and she said yes! It's late, so I won't expound much on he topic right now - I'll try and post a proper update (along with emails/calls to just about everyone I know) tomorrow.
In the meantime, here are some pictures: http://picasaweb.google.com/herberticus/MyEngagement

Monday, August 20, 2007

GenCon Indy 2007


I just got back from GenCon 2007 in Indianapolis. It was quite the trip! I'm tired, but I'll try and summarize some hightlights here - and fill out more details later. The complete photo-album for this post may be found here.

The Voyage
The trip out (Thursday morning) started poorly: the bus station was full of recently released prison inmates, and the prison guards were delaying their departure again and again in the name of prioritizing customers such as myself. Some of them had already been there 7 hours, and they were flagging badly. Rick, in an apparent attempt to earn sainthood, went to McDonald's and bought them all food and drink. My hat goes off to him for that - that was a really kind act. When the bus to St. Louis finally arrived, there weren't many spaces on it; I got on by rushing to ensure I was at the front of the line, and not budging an inch! Once on the bus, I had a slightly cramped but uneventful ride to St. Louis. The bus station there is horrible; poor air-conditioning, and the Indy line went all the way out of the queueing area, and around the restaurant! I found a spot to wait and spend an hour or so sweating. When the bus finally arrived, I didn't get a seat - but a second bus arrived within 20 minutes and I managed to squeeze onto it. Very full, but not as bad as the Greyhound of old: there was only one person sitting in the aisle, and the AC worked. I took a nap on the way to Effingham, IL (isn't that the greatest place name? It's like someone censored the real name...)



My bus, enjoying the 105F heat of Effingham, IL!

The ride from Effingham to Indianapolis was pretty uneventful. It took a while, but was pretty quiet. I began to get the feeling that things would go well. :-) Indianapolis has a great skyline, visible from the bus. It's quite a big city (2m people), and has a nice mix of old and new buildings. The bus station was a pretty typical big-city affair, albeit clean. Really, really clean! That never happens. I had no trouble finding a taxi to my hotel, an EconoLodge - with absolutely no frills, a small bedroom and bathroom. It works - and was cheap. By this time it was dark/late. This was the view from my hotel room:



Day 1 (Friday)
I got up bright and early, had breakfast at Denny's, and caught a cab downtown. The convention center is huge - and GenCon sprawled beyond its spacious confined into various hotels around the center itself. Registration was easy - wait in line for 5 minutes, fill out a form, pay, and Bob's your uncle. I then proceeded to roam the halls, getting a feel for what was going on. The vendor hall was pretty amazing - full of video game companies, game companies, card companies, the art show (not as large as it used to be, sadly), and a ton of people. I could hardly move! Here are some snapshots I took:




I also spent a lot of time with various computer game developers, and was invited to join an independent game developer's group. Yay! The people at the Warhammer Online display were especially nice, taking the time to walk me through a few graphics effects. Finally, I played Starcraft 2! It's coming along nicely, and feels a lot like the old Starcraft - only smoother, prettier, and if anything a little faster paced. Finally, I got my butt well-and-truly handed to me in a Counterstrike tournament.

Once I'd finished the obligatory tour (and looked at the city around the center - see below!), I went about signing up for things. I signed up for an evening D&D game, and a night D&D game. I also made a list of some seminars to attend - and promptly missed the first one because I couldn't find the venue! Instead, I had a nice long chat with the people at the Podcasting stand. I'm a big fan of Dragon's Landing, but it's been quiet lately - so they made some recommendations. I also decided to attend at least one of their live podcasting events to see how it's done.

I found myself with a short break for lunch, and ate McDonald's. I also met up with a girl named Eva and her husband (John?), who were up from New York - we'd apparently met online before, so it's nice to put a face to a screen-name! Then it was off to the Union Station Conference Center for some gaming. It was a pain to find! Fortunately, most other people in the event had the same problem so I didn't hold anything up. In the subsequent game, our merry party from Rasheman infiltrated the Thayvian port of Surthay, and rescued a mask maker from the clutches of a smelly wizard. Rather stereotyped, but a lot of fun - a good dungeon bash once in a while can really lighten things up! Afterwards, I played a short and silly game with a bunch of RPGA people. It was great to see some old friends again! :-)

Suddenly, it was about 3am... so I caught a taxi back to the hotel and slept.

Day 2 (Saturday)
I overslept slightly, and decided to have breakfast anyway - gaming on an empty stomach doesn't work! I started out in the vendor's hall, picking up a Dr. Who episode for Mel and being slightly disappointed that the anime shopping list I had from Stara started at $65 and went up from there. Then, it was seminar time!
The first seminar was Spin a Yarn with Ed Greenwood, something of a GenCon tradition. As usual, we made the guest Wizards' girl blush - this time in 8 minutes. The guest in this case was different, though - she's the author of Confessions of a Part Time Sorceress: A Girl's Guide to Gaming, and is a really nice gamer girl. She wants to do the seminar again next year, so we didn't scare her too badly! The theme of the seminar is that we throw plot elements at Mr. Greenwood, who then gets to write a story including them all. Elements included sentient undergarments, 75 virgins transporting poisoned wine, a royal wedding in which the bridesmaids looked better than the bride, a roving band of gay pirates who have lost their ship, a ship of gender-changing, a hobbit plumber convention, a dragon with irritable bowel syndrome, sushi, a singing sword, a narcoleptic bard, a sheath (scabbard) of rhythm (the writer girl uttered 'man, I need one of those'), and a whole host of other silliness. I laughed until my sides hurt - quite an achievement for a one hour seminar!


Next up, was a Q&A session with Wizards about the new 4th Edition D&D. They did a straw poll beforehand, and discovered that we were a bunch of human loving, cleric playing DMs. A primary focus of 4E is apparently to make the DM's life easier - less paperwork, and generally an easier time reading stats. No more daemons with 200 abilities (3 of which are worth having) - rather a focus on what's needed to get things going. Interestingly, a lot of things are being copied from the MMO world (someone quipped that this sounds like World of D&D-Craft; they are right, IMHO - and Wizard's statement that WoW copied everything from D&D may be true - but it's a weasle-word way to avoid the issue!). The game is being structured around party roles - your basic MMO roles of tank, nuker, healer, etc. This tends to happen in traditional D&D anyway: you pretty much want a fighter, a cleric, a mage - and the other classes risk being 5th wheels. (This is not true, IMO, for good games; many great games I've been in have featured so called 5th wheel classes as a focus!). Monsters also get the same focus, and the balancing has moved away from single monster encounters - rather, a party of five adventurers should expect five monsters in a group configuration. Powers have been completely revamped; no more "oops, I used my spell slots and now we have to take a nap" - rather, you have per-encounter, per-round, per-day and other time-based limitations, and an as-yet-unrevealed mechanism for pushing yourself beyond your limits (at a risk) to keep going. The emphasis is on keeping the tempo up, and giving players a genuine sense of urgency. I like that concept, but it does feel like a computer game. Then again, the new D&D Insider setup is almost an MMO. It's a really interesting idea. Dragon, Dungeon and other magazines are becoming online-only, and are part of a DDI subscription. More interestingly, a character generator, MySpace like setup, and virtual gaming table are also part of it - and entering a rulebook's ID number automatically populates your databases with content from that book. So all spell databases online automatically contain every spell, monster, etc. to which you have access. The Virtual Gaming Table looks pretty cool. It's voice-chat enabled, and doesn't take care of game mechanics - it's a map with highly customizable counters to move around. Modules come with preloaded table content (so no map making!), and everyone can seriously customize their virtual representation. The dice roller looks cool, too. If I can find people to play with remotely, this could be the solution to my lack of gaming; if I can't, it'll be a very pretty boondoggle for those lucky enough to have a huge screen next to their gaming tables. There was a lot of grumbling about overemphasis on online content, and the complete incompatibility of 4E with what has come before. We'll see how that plays out; 3.5E caused a gaming crash - 4E could well do it again!
I'm still deciding exactly how I feel about 4th Edition. I skipped 3.5; I may buy 4. I'll figure it out closer to the release date.

Then I played some board games in the hall, played some Company of Heroes (came 4th), and found some lunch.

After that, I went to watch Pulp Gamers perform their live podcast. What a great bunch of guys! Very friendly, and their setup is quite professional. I was impressed. I recommend giving their podcast a go - they cover everything, and seem like a good substitute until Dragon's Landing reappears (I hope!). Topics included the changes at GenCon (tons of families nowadays, not so many lonely nerds), and how amazingly big it is, D&D 4th Edition (it was the talk of the show), podcasting in general, and various board games. Twisted Dungeon sounds really interesting - well worth a look.

Next up, a seminar on web comics featuring several web comic authors. It was really amusing, but lacking in words of wisdom that need to be shared!

Some friends persuaded me to watch the costume contest. Some of the costumes were amazing, but I couldn't get a good focus on the stage with my camera - so few pics, I'm afraid.

Saturday evening was the GenCon Dance, which didn't interest me at all (although it was goth themed). I'm just not a loud-music dance type of person, really. Instead, I went to the Hyatt and found a pick-up D&D game. It was short and really, really funny. :-)

The Voyage Home (Sunday)
I checked out of my hotel, and after checking with Greyhound caught a slightly earlier bus home than planned - meaning I missed the closing ceremonies of the con. Sad, but it meant I arrived home at 9:30pm rather than 9:00am on Monday. Indy bus station went smoothly (and was still clean!), and as usual St. Louis bus station was a nightmare - I was bowled over in a crowd rush, but a huge Scottsman protected me. Yay for huge, random Scotts! I returned home, and hurried off to see Mel. You really know you love someone when GenCon isn't enough to make you forget missing them!

Saturday, August 4, 2007

Server update

I promised an update on the servers, so here we go. They are live! We had a few problems getting any version of CentOS other than 4.2 (x86) to see Intel's raid enclosure management software - but otherwise life is good. Between the two Port Townsend servers, we are running 11 virtual servers via VMWare Server (on Ubuntu server). Performance is very good for what we need. The only gotchas we encountered:
  • CentOS 4.2 doesn't support iSCSI, and some of the older patches are very flakey. In particular, SQL Server on an iSCSI drive can cause a kernel panic on the storage server. This appears to be due to an out-of-memory condition. Later releases seem more stable, but we ended up not using anywhere near as much iSCSI as originally planned.
  • Even on a physical host with two cores, dual-core VMs are a lot slower than single-core.
  • Exchange 2007 is a resource pig, but very nice once configured.

Chinese-style Lemon Chicken

I fixed lemon chicken for Mel and Keri last night, and since Keri asked for the recipe I thought this might be a good way to share it. It's quite a quick meal.

Requires (for 3 servings):
  • 1/2 large white onion.
  • 1/2 green pepper.
  • 2 spring onions.
  • 1 mild red chili pepper.
  • 5-spice powder.
  • Sesame seeds.
  • A small pack of boneless chicken breasts.
  • A jiff lemon worth of lemon juice.
  • Flour.
  • A little wine or cider vinegar (about a tablespoon).

Preparation:
Chop the onion, pepper, spring onions and chili into tiny slices. Cut the chicken into strips.

Cooking:
  1. Heat oil in wok until it is sizzling, on high heat.
  2. Throw all chopped veggies in, stir frantically to attain some crispness.
  3. Add 2 tsp 5-spice powder, and a scattering of sesame seeds.
  4. Stir and cook for 2-3 minutes, until onion is soft.
  5. Remove onion from Wok, store in a container.
  6. Add chicken to Wok (still on high), add 1 tsp 5-spice. Stir until chicken is sealed/dark on all sides.
  7. Lower heat on Wok to low.
  8. Put lemon juice and vinegar in a saucepan, heat to the boil. (this is a good time to start the rice, too, if you are also making it). Optionally add sugar; I usually add 1 tablespoon at most. A pinch of salt also helps with flavor.
  9. Occasionally stir the chicken. When the lemon juice boils, gradually add flour (1tsp at a time, stir thoroughly after adding) until the sauce is starting to thicken.
  10. Add lemon juice to wok with chicken, re-add vegetables to wok.
  11. Raise heat to high, and stir. Sauce will continue to boil around chicken/veg.
  12. After 3 minutes, it's ready to serve.
Total cooking time is around 15 minutes. A very simple, yet tasty and healthy recipe.

Tuesday, July 3, 2007

Linux - Ubuntu Feisty Fawn


I just thought I'd mention that I'm doing all this work with my desktop machine running Linux, rather than Windows. I'm actually finding it easier to use, since most of what I'm doing is unixy anyway.

I have compiz running (slick), and am a Gnome user. I currently have a Mac OS X theme installed. (The screenshot is funky because my two monitors are at different resolutions)

Servers!

Thoth Data Systems, LLC (my new company - more later) just received its servers. :-) Some enormous packing boxes, containing:
  • A 2U, 12-drive storage box. It's an Intel Compass Creek (SSR212CC), currently with 8 500gb drives (maximum 12).
  • A 1U, 2-servers in one box system called a Port Townsend. Pretty snazzy, two core 2 duo servers in one box, 4gb RAM each. Storage is a bit limited - but that's why we have the other server. :-)
So far, I've only worked on the storage box. Setup of the kit was very easy: follow the instructions, screw drives into holders, install RAM, and everything worked fine. Very little effort there. It takes a long time to POST (checking all the drives), but once it does it's pretty zippy. It doesn't have a CD-ROM, but can boot from a USB CD-ROM drive just fine. Drivers are proving to be a pain so far. Intel ship binary blobs for Red Hat Enterprise Linux 4.2 - and only 4.2. The kernel module has no source, and breaks immediately in 4.5! Of course, the RAID array works great in 4.5, but requires drivers for 4.2. Switching around thumbdrives (no floppy drive or connector on the motherboard!) is a pain, but I'm getting there.

So far, so good. I'll post more updates as I go - this is exciting.

Tuesday, June 26, 2007

Mediacom

Today was frustrating. I woke up this morning with absolutely no Internet connectivity, and traced the issue down to a very odd set of symptoms. Every protocol except DNS worked; and any port 53 traffic was denied. I could connect numerically, but not by name. If I tunnelled DNS through our VPN to the office, that worked! Like a fool, I didn't accept that - I called Mediacom. After a while on the phone with a helpful tech, I was told that it was new modem time. Ok... then Rick tells me that he's having problems, too, and that Mediacom told him that they had done an upgrade last night and there were some problems around Columbia.

So, I went and got a new modem (and fixed Rick's network). Plugged it in, received WalledGarden (their modem registration system), registered - and boom, nothing at all. Not even a private IP address. I spent 19 minutes on hold, and another 30 talking to a tech before discovering that the problem was that walledgarden registered my system wrongly - it detected the wrong modem MAC address. How does that happen??? Anyway, it works now. I haven't managed to do any work today at all, so I'm in for a virtual evening in the office.

Sunday, June 10, 2007

Cingular 8525 Synchronization

I'm the proud owner of a Cingular 8525 phone/pocket PC. Overall, I like it a lot - but I've had a terrible time with getting it to synch. Under Vista (from which I have now thankfully escaped), it sort-of worked... sometimes. Under XP, I made the mistake of installing ActiveSync 4.5 - and nothing worked at all. Eventually, I found the key to removing 4.5 and putting 4.2 back on: when the device is connected, go into Device Manager, find the device and uninstall the driver. Then reboot, and finally reinstall ActiveSync.

Pain in the rear, but it worked really well.

Tuesday, May 1, 2007

Forgiveness

I ran across this today. I found it really inspiring, so I wanted to share:

"Forgiveness is a form of realism. It doesn't deny, minimize, or justify what others have done to us or the pain that we have suffered. It encourages us to look squarely at those old wounds and see them for what they are. And it allows us to see how much energy we have wasted and how much we have damaged ourselves by not forgiving.
Forgiveness is an internal process. It can't be forced, and it doesn't come easy. It brings with it great feelings of wellness and freedom. But we experience this only when we want to heal and when we are willing to work for it.
Forgiveness is a sign of positive self-esteem. We no longer identify ourselves by our past injuries and injustices. We are no longer victims. We claim the right to stop hurting when we say, "I'm tired of the pain, and I want to be healed." At that moment, forgiveness becomes a possibility-although it may take time and much hard work before we finally achieve it.
Forgiveness is letting go of the past. It doesn't erase what happened, but it does allow us to lessen and perhaps even eliminate the pain of the past. The pain from our past no longer dictates how we live in the present, and it no longer determines our future.
It also means that we no longer need resentment and anger as an excuse for our shortcomings. We don't need them as a weapon to punish others nor as a shield to protect ourselves by keeping others away. And most importantly, we don't need these feelings to identify who we are. We become more than merely victims of our past.
Forgiveness is no longer wanting to punish those who hurt us. It is understanding that the anger and hatred that we feel toward them hurts us far more than it hurts them. It is seeing how we hide ourselves in our anger and how those feelings prevent us from healing. It is discovering the inner peace that becomes ours when we let go of the past and forget vengeance.
Forgiveness is moving on. It is recognizing all that we have lost because of our refusal to forgive. It is realizing that the energy that we spend hanging on to the past is better spent on improving our present and our future. It is letting go of the past so that we can move on.
We all have been hurt. And at one time or another most of us have made the mistake of trying to run away from the past. The problem is that no matter how fast or how far we run, the past always catches up to us-and usually at the most inopportune time. When we forgive, we are dealing with the past in such a way that we no longer have to run.
For me, learning how to forgive wasn't easy. But I did learn, and my life is better for it - even here on death row."

Michael B. Ross
Death Row
Somers, Connecticut

Secret number!

09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0

Amazingly enough, several companies are trying to censor that number (it's in hex).
(For more about this, see: http://yro.slashdot.org/article.pl?sid=07/05/01/1935250 )

And yes, I am Spartacus. ;-)

Monday, April 23, 2007

Is a Nuclear Armed Neighbourhood a Peaceful Neighbourhood?

Over a decade ago, Dr. Colin S. Gray proposed that a nuclear armed neighborhood may indeed be a more polite neighborhood. His argument was an extension of the classic pro-gun lobby in the US: if people have guns, assaulting them is more difficult and therefore less likely. (The weakness of that argument is that plenty of people in the USA have guns, and the gun-related crime rate heads unerringly upwards anyway. Heck, since Missouri passed it's concealed-carry law Columbia has started to see drive-by shootings!). Anyway, I've been mulling the concept a little this morning in light of the repeated news announcements about Iran's nuclear capability.

Dr. Gray (and related theorists) are also opponents of the concept of 'existential deterrence' - that is a nuclear deterrent that you keep simply for the purpose of deterring an enemy, with questionable resolve to actually use your deterrent if pressed. This is an interesting line of thought, since supposedly having a gun deters gun-violence - but having a nuclear arsenal does not deter military action. The differentiator is intent: if you have a gun, you have to be prepared to shoot someone (in self defense) if they cross a certain line. Likewise, a nuclear deterrent is meaningless if you aren't prepared to nuke someone for crossing another line. In deterrent theory it has even been stated that not knowing where the line is helps the deterrent: otherwise you may actually have to pull the trigger.

Israel has nuclear weapons. By all accounts, they have modern, accurate, deliverable systems. Despite this, while they have possessed the capability they have been shelled from the Golan Heights, lost a war in Lebanon, and suffered under Iranian/Syrian-led Hezbollah. Israel has exercised great restraint and hasn't launched nuclear weapons at anyone; for that, they should be commended. However, Israel certainly doesn't seem to have deterred anyone.

The USA also has nuclear weapons (and a current doctrine that permits first-use in some circumstances), and despite a prima facea attack on US soil by a group housed and sponsored by the government of Afghanistan - we didn't nuke them. Again, laudable restraint - but we really didn't deter Al Quaeda or Afghanistan.

Russia has nuclear weapons, and a clearly stated doctrine permitting first-use. Despite this, there has been very little indication that Russia might actually nuke any of the parties involved in disputes around their borders and satellite nations. Again, laudable: but how deterred were the Chechen's, Georgians or Moldovans?

One often-cited example in Dr. Gray's defense is that of India and Pakistan. Since both parties became nuclear, there have been fewer incidents close to all-out war along the Kashmiri border. However, India also had a significantly more pro-Muslim government for much of that time period. The real test will come when two radically opposed governments are once again in power in the two countries. It seems likely that neither side wants a nuclear war - but doesn't that just mean that convention struggles can continue (as they do!) without regard for the 'ultimate deterrent'?

Dr. Gray could reasonably argue that since all of the countries listed above lack a willingness to pull the nuclear trigger, their deterrent is hollow - and therefore not a deterrent at all. However, for as long as that argument remains solid then it must follow that a nuclear-armed-neighbourhood is not significantly different from a conventionally armed neighbourhood. Once nuclear first-use has happened in a conflict, that may change - we simply don't know. While praying to avoid that situation has worked thus far, sooner or later there will be a nuclear strike somewhere in the world. It's entirely possible that the strike will demonstrate that while nuclear weapons make a mess, they aren't significantly more useful than conventional rounds in modern warfare - at which point, whither deterrent?

Friday, April 20, 2007

While I'm grumbling...

The whole place still reeks of smoke, but it's getting better. Anyway, I just saw that Phelps is planning on demonstrating at the VA-Tech student's funerals with his usual range of unpleasant placards. I know he has a right to demonstrate; the question is - how far does that right go in terms of being an unpleasant *!@@? I mean, it's one thing to blame the disaster on your belief that God has condemned the United States (and, by some accounts, declared Phelps to be a demigod) - but demonstrating at the funeral of shooting victims is just plain insensitive. Asshole.

Sometimes, I wonder how humanity ever made it....

I have a big family occupying the two apartments next to mine. They are quiet and ignore me most of the time. Anyway, today they had a barbecue. Fair enough, but when they finished they decided to:
a) Dump all the hot coals on the wood-shavings bed in front of my apartment window.
b) Not put the coals out.
c) Leave.

So I was working away, and smelled smoke. Lots of smoke. My first response was to check my kitchen (no stove on, appliances fine) and my server (it was fine). So I go outside, and sure enough - the coals have set the bed on fire. Only about a 1' patch was burning (with big, HOT flames), but it was spreading fast. Stomping on it didn't do any good at all other than make my foot smelly (safety boots rock - no burns), so I dumped a few liters of water on it. Fire went out. Now my whole apartment reeks of smoke, I have some soot around, and it's just plain yucky.

I think I'm going to talk to the landlord. Last time I tried to talk to my neighbours they were less than friendly, and I'm really not going to put up with having my place burned down by idiots with barbecue grills... GRRRRRRR.

Thursday, April 19, 2007

RAM

It really is nice having RAM in my server again. It let me move some RAM around and have 3gb in my Vista machine, too! Vista is actually pretty nice with 3gb. The 64-bit edition I was using was barely usable with 1.

Wednesday, April 18, 2007

NewEgg

I had a RAM chip in my server go out this morning (not hard to diagnose - it has scorch marks!), and I need it back urgently for ongoing projects. So, I went to NewEgg, gritted my teeth and placed an order. Since I'm practically dead in the water without it, I had to go for next-day shipping and rush order... and within seconds of submitting the order NewEgg were in touch assuring me fast service.

Why is the server so important? It's currently running all the development versions of our new backup product. Ouch!

Saturday, April 14, 2007

Jingos and the Gila Monster!

Last night was nice. Mel & I went to a new Chinese place, Jingos (it used to be the Mandarin Express). The food was really rather good, and heaped on the plate. We talked, ate, and other than it being cold in there - it was a good time. Then we watched a 50s monster-flick, Attack of the Giant Gila Monster. Utterly cheesy, but fun because of it. Finally, we fell asleep on the couch... only for me to wake up and do my taxes.

Overall, a good night!

Friday, April 13, 2007

PostgreSQL Connection Pooling

I use npgsql for quite a few projects, and it performs really well. I ran into an interesting error today, though. Sometimes a transaction dies while incomplete, and all subsequent connections will fail with "current transaction is aborted". It turns out that the connection pooling in Npgsql is a bit optimistic, and will keep trying to re-use the connection with the aborted transaction on it!

I solved the problem by adding Pooling=false; to my connection string.

LOTRO Tonight

I spent some time playing LOTRO tonight. So far, it really is a great game. It does have shades of World of Warcraft in its design (primarily crafting and the quest system), but overall it's a fine game - with much more involving content (for me, at least) than WoW.

I think I've figured out the crafting system. Endemonia is a scholar, Feltspar an armourer, Gooseberry a tinker, Leafwyn a Woodsman, and Eleanor an Explorer. That gives me all of the major professions, and the ability to mail resources back-and-forth and not depend upon the auction house. I'm never a fast leveller on the crafting scale, but I'm having fun with it!

So far, my characters:
  • Endemonia, level 7 human loremaster. I haven't really played her enough to comment on the loremaster, but she seems solid enough.
  • Gooseberry, level 9 hobbit burglar. I'm not a big fan of burglars, so far - sneak and inflict damage doesn't really do it for me. I think it will pick up when I take some more time to learn the class.
  • Leafwyn, a level 7 elven huntress. She's the classic elf with a bow, and quite a lot of fun. Hunters (archers) are much better balanced in LOTRO than they were in other Turbine games; they are very good at range, but weak if surprised.
  • Eleanor, level 10 human captain - complete with a herald following her around waving a flag. She's a lot of fun. Captains are a hard class to solo at first, but every time I've been in a fellowship (group), I've felt really useful. It's a lot like the Paladin of Diablo 2: mediocre damage, mediocre buffs to oneself, and great buffs when you have friends along. In particular, after the fellowship slays a monster there are various battle-cries you can issue - providing buffs ranging from heal-over-time to everyone, to attack bonusses. She can also make the whole fellowship run faster.
  • Feltspar, level 12 dwarven guardian. Guardians are a pure melee tank class, and play like one: you can take an absolute beating, and still ask for more. Damage output is on the low side, but when you can take the slow'n'steady approach and know you can outlast most things - it doesn't matter. I've had a blast with Feltspar, so far. I've discovered that Guardians are in high-demand for groups - their aggro control is really good, and with a bit of effort you can keep everyone else safe. Poor Feltspar has died once, when the healer in the group decided that melee was more fun than healing. :-

So overall, very much worth the pre-order. If anyone wants to join me, I'm on Elendimir.

Wednesday, April 11, 2007

Porting my blog

As you may have noticed, most of the entries from my old blog are in here - and yet, I'm running Blogger. No, I'm far too lazy to type them all in - instead, I used Google's C# API to pull my posts from the database and post them. I ran into a few issues; Google have a rate-limiting feature (to stop spammers, a noble goal) that cut me off a few times mid-post, and I forgot to flag which posts I'd added the first time and ended up having to delete a lot of stuff and repost it.

You can get the API from this site: http://code.google.com/p/google-gdata/

My import code is neither pretty nor very well written, but if it helps anyone here are some snippets: (Note that the URI is the address of the atom feed of your blog)

To Retrieve a Feed (all entries are in Feed.Entries)
private static AtomFeed getFeed(out Service service)
{
FeedQuery query = new FeedQuery();
service = new Service("blogger", "DataMigrate");
NetworkCredential nc = new NetworkCredential("user", "pass");
service.Credentials = nc;
query.Uri = new Uri("URL");
query.NumberToRetrieve = 500;

AtomFeed feed = service.Query(query);
return feed;
}


To delete an entry
service.Delete(e);

To add an entry
static void InsertEntry(string title, string body, DateTime date)
{
FeedQuery query = new FeedQuery();
Service service = new Service("blogger", "MyProgramName");
NetworkCredential nc = new NetworkCredential("user", "pass");
service.Credentials = nc;
query.Uri = new Uri("URL");

AtomEntry entry = new AtomEntry();
entry.Content.Content = body;
entry.Content.Type = "html";
entry.Title.Text = title;
entry.Published = date;
service.Insert(query.Uri, entry);
}


Seems to have worked!

Tuesday, April 10, 2007

Lord of the Rings Online

I've been playing Lord of the Rings Online (LOTRO) a lot recently, and thought I'd make a post about it. This is really just an excuse to try out the editor a bit!

Anyway, so far - I love the game. Character generation is moderately flexible, it's visually gorgeous, and the quests are wonderfully written. While occasionally running into people with names like 'killa' in Middle Earth is disconcerting (especially when that's a hobbit!), the GMs are doing a great job keeping things under control.

Here are some screenshots:











Trying out Blogspot

There are probably a few million posts like this one! Anyway, I'm trying out Blogspot. My old site hasn't been updated in ages - partly because I let the codebase suffer a terrible case of code rot. When I get some free time (ha!), I'll set it up - with this blog embedded if I like it.