Friday, February 15, 2013

Extracting SQL Server table and field descriptions with SQL


Have you ever wanted to extract the table descriptions and/or field descriptions from an SQL Server database?

I found some solutions on StackExchange, but all of those solutions tried to combine data from the global system tables with data from the database's system tables.  The two down sides to this were:
(1) the global system tables didn't contain all of the table and field names, so there were no IDs to match some of the database's system tables to, and
(2) in my scenario I was not able to use a USE "database name" to change the context.

I needed a solution that only used the database's system tables.  So I got familiar with the system tables and wrote one.

Without further ado, that solution is this:
select t.name AS [table name], c.name AS [column name], p.value
from "DBNAME".sys.tables AS t
inner join "DBNAME".sys.columns AS c ON t.object_id = c.object_id
inner join "DBNAME".sys.extended_properties p on p.major_id = t.object_id and p.minor_id = c.column_id
where t.type_desc = 'USER_TABLE'
union
select t.name AS [table name], '', p.value
from "DBNAME".sys.tables AS t
inner join "DBNAME".sys.extended_properties p on p.major_id = t.object_id and p.minor_id = 0
order by 1, 2
Just replace "DBNAME" with the name of the database you want to use, and you'll get a nicely formatted list of both table and field comments.  If you wanted to exclude the table names on the field comments, you could do some control break processing, or get creative in Excel.  Hope this helps you out!

Wednesday, November 21, 2012

Today I'm upgrading Drupal 7.11 to 7.17 on the Ubuntu-Bitnami platform. I've run into some issues that took a great deal of Googling to get resolved, so I'm going to document the problems and fixes here in the hopes that it will help someone else.

The following problems were present before upgrading and are what prompted me to try an upgrade as a fix:

Problem #1: Cron stopped working

http://.../admin/reports/status/run-cron

HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request

http://.../cron.php?cron_key=...

HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request

Solution: Currently unresolved.

Problem #2: Autocomplete stopped working; breaks on article "tags" and on Quotes module authors (only two places I've seen it used on our site).

An AJAX HTTP error occurred.HTTP Result Code: 500Debugging information follows.Path: http://.../taxonomy/autocomplete/field_tagsStatusText: Internal Server ErrorResponseText: {"...":"...","...":"..."}

An AJAX HTTP error occurred.HTTP Result Code: 500Debugging information follows.Path: http://.../quotes/autocomplete/authorStatusText: Internal Server ErrorResponseText: {"...":"..."}

Solution: Currently unresolved.

Problem #3: Automatically checking for updates stopped happening

There was a problem checking available updates for Drupal. See the available updates page for more information and to install your missing updates.

Solution: Successfully upgrading fixed this.

Problem #4: Installing modules stopped working

Initially I was getting an AJAX HTTP error as above while the progress bar was going (same as here), but after successfully upgrading I get this now instead:

Error message Installation failed! See the log below for more information. ... Error installing / updating File Transfer failed, reason: Cannot create directory /opt/bitnami/apps/drupal/htdocs/sites/all/modules/...

and in /admin/reports/dblog

Warning: ftp_mkdir(): Create directory operation failed. in FileTransferFTPExtension->createDirectoryJailed() (line 71 of /opt/bitnami/apps/drupal/htdocs/includes/filetransfer/ftp.inc).

Note: The directory it complained it couldn't create would exist after this error, but the archive was always incompletely extracted

Solution: Only workaround I've found so far is to SSH to host, change to the drupal/htdocs/sites/all/modules/ directory, wget the .tar.gz file, and extract it myself.

At this point I tried doing an upgrade per the directions here and ran into this error, which persisted even after my other upgrade attempt to a local VM, and remains unresolved:

Problem #5: PHP fatal error

Looking at my Apache error logs regarding #4, I noticed this:

[Wed Nov 21 19:02:53.032382 2012] [:error] [pid 3614] [client 10.1.4.181:52711] PHP Fatal error: Call to undefined function tablesort_sql() in /opt/bitnami/apps/drupal/htdocs/modules/php/php.module(80) : eval()'d code on line 10

Solution: Currently unresolved.

This upgrade did not resolve any of the errors above except for cron, which seemed to start running automatically (the built in "poor man's cron") but still refuses to run manually.

At this point I tried grabbing the VMWare VM of Bitnami Drupal (with these directions), but hit a snag when importing my database:

Problem #6: MySQL chokes importing database

I didn't have this problem moving from one AWS EC2 instance to another (newer) one. However, when I imported the bitnami-drupal VM into ESXi to run it locally (thinking maybe I was having memory issues or something, being on a Micro instance on Amazon), I was unable to import the database thusly:

#2006 - MySQL server has gone away

Solution: Found here, was to find the my.cnf file (/opt/bitnami/mysql/my.cnf for me) and add max_allowed_packet=500M (value of your choosing; I saw 16M and 100M mentioned also) under the mysqld section. Then I restarted mysql (/opt/bitnami/ctlscript.sh restart, logged in (mysql -u bitnami -p using the password in the /opt/bitnami/apps/drupal/conf/drupal.conf file), dropped the database (drop bitnami_drupal7;) and recreated it (create database bitnami_drupal7;) then did my import again.



Problem #yyy: Calendar month view broke

My calendar's month view spewed a bunch of these above the calendar:

Warning: Illegal string offset 'data' in template_preprocess_calendar_month() (line 38 of /opt/bitnami/apps/drupal/htdocs/sites/all/modules/calendar/theme/theme.inc). Warning: Illegal string offset 'data' in template_preprocess_calendar_month() (line 43 of /opt/bitnami/apps/drupal/htdocs/sites/all/modules/calendar/theme/theme.inc).

Solution: http://drupal.org/node/1471400#comment-6760506 #4 fixed me right up. Basically add:
if(!is_array($data)) continue;
before
$cell = $data['data'];

Wednesday, September 03, 2008

WWW Browser Memory Test

I decided to test Google Chrome's claims[1] concerning memory usage, and these are my findings. Memory usage fluctuated quite a bit during testing though, so YMMV.


(click image for full size)



Notes (factual):

All browsers were the latest versions AFAIK, and no plugins were installed that weren't needed.

I used all the memory-intensive (often AJAX-laden) sites that sprung to mind, but I have no idea if my sampling was representative of anything but my own browsing habits.

Opera was not a "supported browser" for Google Documents and so was in "Plain HTML mode" on that page.

IE7 was the only browser to crash during my testing.

Notes (opinionated):

It occurs to me that Chrome's about:memory page could use some commas in those numbers to make them more readable, and the addition of some sparklines and charts (pie?). It also occurs to me that I'm nitpicking.

While Firefox netted the smallest memory footprint in this test, that is atypical in my normal browsing experience. I do think Chrome is much nicer all-around, and it definitely handles memory management long-term better. That is, when you close windows, the memory is deallocated. Firefox tends to keep a lot of cruft around, and I find myself periodically restarting it to reclaim memory.



[1] see http://www.google.com/googlebooks/chrome/

Saturday, March 15, 2008

I'm not dead.

Wow. The past couple of months have been busy.

I have a couple of blog posts in mind and just haven't gotten around to them. I would like to share my VBScript domain logon script, my tc rules for use with a Vonage device behind a router, and a program I'm writing as a side-project at work that is a laptop-lockout program (designed to encourage normal users (not power users, who could pretty easily circumvent it) to periodically bring their work laptop to work, log on to the domain, and all that good stuff).

I'm not dead yet.

Friday, January 11, 2008

Autumn into Funny

It is time for a more lighthearted post. I've been accumulating funny bits of conversations I've had for a while, and it seems like it might be fun to share them with a wider audience. As a warning though, the ones in this post are a bit ... eclectic. I've done the service of indicating the sources required to grok the joke, so if you're not familiar with them, move on; and if you don't think any of them are funny, I'm sorry. I tried.

The setting: Bryan was doing Calculus homework while I was trying to fix my file server (we were on the phone as my internet was also down). Despite the fact that neither one of us was having fun (he was integrating by parts), we made the best of it...

(1) Probably the funniest, and most esoteric, of the funnies--this one references Calculus, Full Metal Alchemist, and Space Ghost Coast to Coast

(Bryan was talking about integrating something with something else)
Me: I'm going to integrate you with your mom.
Bryan: I don't know why you'd ever do that.
Me: Maybe you're an alchemist who doesn't know the rules about transmuting humans...
Bryan: Yeah, maybe
Me: You can't integrate that! That function has feet!

(2) References: Internet, Captain Planet

Me: DSL modem... router... DHCP... named... by your powers combined, I am captain Internet
Bryan: Sorry, that one failed
Me: Yeah.
Bryan: Yeah, that one utterly fell flat
Me: It just doesn't have the same ring to it as 5 monosyllabic words
Bryan: It's like... earth, water, air, fire, ass--
Me: By your powers combined, I am a tasty summertime confection!

(3) References: Roaring Penguin PPPoE, networking, vomit

Me: It says link is down...
Bryan: Oh, that's means layer 1 or layer 2 isn't working
Me: ... I don't even know what that means. Like I vaguely remember that object... something ... model, three letter acronym thing...
Bryan: It's like the Windows' equivalent of saying a network cable has come unplugged
Me: But I have a link light
Bryan: Oh. Wait, so was it Roaring Penguin puking at you then?
Me: Yes, it was Roaring Penguin puking at me. Which isn't something you generally want roaring penguins to do.

(4) From a different day and conversation, not on the phone--references Bleach, and text-based adventure games (the type that involve commands like Go North and have grues in them).

Bryan: http://www.walmart.com/catalog/product.do?product_id=7080021

Bleach Shattered Sword

Me: hunh.
Me:that's interesting. I wonder if it doesn't suck at all...

You moved north. You see a hungry grue.

What do you want to do?
> bankai

Tuesday, January 01, 2008

Adventures in Customer Service

The holiday season brings with it a flurry of purchases, some of which are bound to go wrong in one way or another. It's a time when you will probably have to deal with customer service staff in some capacity, and I have seen a textbook example of each: customer service done right and customer service done wrong.

Borders gift card orders (or rather more likely, the cards themselves) are fulfilled through a company called CardWays.com. I have extended family that I exchange gifts with who are all big readers, so I got 3 such gift cards. What's more, I ordered them early (the first week of December). Now they shipped to my parents' house, where all the gifts went for the convenience of its proximity to my grandparents' house, where the gift exchange happens. So I didn't realize the cards had not arrived until the weekend before Christmas.

I call them early (before 6 am my time) Saturday morning and am surprised to get through. The previous night, I got their voice mail and a full mailbox, so I was determined to be one of the first in line the following day. They were surprised I hadn't noticed sooner, but were eager to help. They told me they were going to ship it out immediately, Saturday delivery, and they apologized for the inconvenience. I asked the lady what exactly had gone wrong with my order--I never got an email with a tracking number like I expected, and the order number I did have, when punched into their website, only told me that it was "in progress". She told me that she saw that, and didn't trust what the computer was reporting, and that is why she was just going to ship it out (possibly "again"). She goes on to tell me that the demand was much greater than they were prepared for over the holiday season and it might have fallen through the cracks, apologizes some more, and that is that.

Imagine my surprise when I actually receive them five hours later in the mail. Now these aren't actually the cards I ordered. They're the plain cards with nothing but the Borders logo on them, not the ones with the pretty designs that I picked. As long as they have the right amounts on them though, I don't really care. I unfold a letter that accompanies the cards and discover that they are still really sorry--and to prove it, they're going to also send me the cards I originally ordered. What that means is that I will actually receive double the number and amount in gift cards as I ordered ($90 worth rather than $45).

The next day, I receive one of the cards with my personal message on it, and the gift card inside with the design that I chose. A few days later, I received an envelope with all three gift cards inside cards. That's right, they actually sent me one of them twice, meaning I netted an extra $60 in gift cards rather than $45. Talk about being eager to make up their mistake. Needless to say, I went from being highly disgruntled with Borders/CardWays to being very satisfied. My mother, who was talking about how she would never do business with a company like that, also did an about face in her opinion.

Contrast that, now, with my experience dealing with TracFone. My sister has a TracFone with the minutes already doubled (for any cards added to her phone). On Christmas Eve, I fired up my browser to purchase some additional minutes for her phone. Upon checking out with my 200 additional minutes, I was asked if I wanted to add any additional minutes or days (within which to use said minutes). Already I was extending her minutes by 200 and her days by 90. I had the options of adding 30 more minutes, 60 more minutes, 30 more days, 60 more days. I was told I could check off any combination of them. I check off 30 and 60 more minutes, bringing the total to 290 minutes. I check out. They present a page that tells me my minutes have been successfully purchased. It looks like every "end of transaction" page I've seen, so I don't read it carefully. I print it off for my records and close my browser.

Christmas morning comes and I've written on her other gift that she should check the minutes on her TracFone. When she does, lo and behold... no additional minutes. I return to my computer, rather peeved, and re-read the page I previously printed out. At the very bottom is a single sentence, telling me that to add the minutes to the phone, I need to click continue. There was an extra step at the end for no good reason. Furious, I browse back to the page, and am surprised to find that it resumes my session. It informs me that it looks like I didn't complete my previous transaction and would I like to do that now? Is this another Borders incident, where a mishap will be turned on its head? Optimistic now, and encouraged by the fact that it's presenting 290 minutes on the screen, I finish checking out. I ask my sister to check her phone again. She has 200 more minutes. Wait, where are the other 90? It's time to call customer service.

I'm going to attempt to make a long story short (and fail). Dealing with TracFone customer service took several attempts. The first time I was told that the minutes I ordered went through in three transactions. A virtual 200, 60, and 30 minute card. They told me that the 200 minute card had gone through, as had the 60 minute one, but not the 30 minute one. After putting me on hold while they talk to a manager, they finally add the 30 minutes, while I'm on the phone with them, with her phone in my hand. It shows up as a message in her inbox, and is reflected on the LCD screen, while I'm still on the phone with customer service. This will be important in a moment.

In telling my mom how the call went, she points out that my aunt also purchased minutes for my sister's phone. She bought a 60 minute card, in the store, and my sister had added those minutes to her phone also on Christmas morning. She thinks they are incorrect that the 60 minutes I purchased were added to my phone, that they are confusing the 60 minutes my aunt bought her. I add up minutes, realize she's right, and call them back. After explaining everything from the beginning (adding the bit about my aunt's purchase), them having me punch codes into the phone again, determining that the phone is reporting the same thing their computers are, getting put on hold while they talk to a manager again--the finally tell me they're going to add the 60 minutes.

Again, I get a message in the inbox, but this time it's different. It says something about 60 minutes, but then it says "0 units" added. I tell her I got a message but--she interrupts to say yes, that is the minutes she added. I pause, then ask her if she can tell me how many minutes were on the phone before she added 60 more. She tells me that she doesn't have that number, asks me what the phone says now, and assures me that that's what her computer says also. I grudgingly accept and hang up. Then I get out some scratch paper and write down from the beginning, exactly how many minutes were on the phone, each transaction that occurred, and how many should have been on it then, and so forth. As I suspected, the number of minutes currently reported is still 60 minutes short of what it should have been. However, I have to wait for my sister to return from work with the phone, as she was literally on her way out as I was hanging up with the last customer service rep, part of the reason I didn't bicker further at that moment.

Call number three. Again I explain from the beginning. This time I am told to turn the phone off and back on several times as we go through the process of entering codes. I am told that the minutes and date match what they show and the guy obviously wants to hang up now. I explain the problem with the previous transaction and describe the message I got that said zero units added. He assures me that the days have been properly extended into September, and that that shows that all of the cards have been added, as the minutes and the days are added together. Ah, I see the problem he's having now. I explain to him that I purchased it online, that I had the option of buying just minutes or just days. I purchased a 200 minute card, which extended it 90 days, and a 60 minute card with 0 days, and a 30 minute card with 0 days. Understanding now, he tells me he's going to add the minutes (no supervisor this time, hurray!) The minutes go up exactly 100. Elated to see them go up at all, I thank him and hang up. Then it strikes me as odd that it didn't go up 120 (the 60 minutes doubled). I double check all my previous math and realize, yes, they gypped me 10/20 minutes, but I'm too sick of dealing with them to call them back.

What did TracFone do wrong? Their website failed to process all of the transactions I paid for, while showing that it had. Their computer system failed to distinguish between minutes purchased online and minutes added by card. Also, either it failed to indicate to them that there were two similar transactions, or somebody was careless in looking at the data, leading to confusion over whether the 60 minutes had already been added or not. Of the three customer service reps I talked to, the most tech savvy one did not even realize that the transactions processed online could be either extend just minutes or just days, not both. Then he increased the minutes by a nonsensical number--you can't even buy 50 minute cards. The thing they did right was not fight with me once it became apparent I was in the right on each transaction (even if it took talking to a supervisor), but that hardly makes up for all the things they did wrong (or the fact that it took 3 transactions to fix, and would've taken a 4th had I cared enough about the remaining 10 minutes).

What did I get out of my customer service adventure? Well, I had been considering getting a TracFone myself, but no longer. On the plus side, I now have sixty bucks to burn on Borders' website. What, you thought I passed the extra cards on to my relatives? :-D

Sunday, December 16, 2007

Spyware, Google, and Dynamic Security Agent (part 3)

This is part one of a three-part story. If you haven't read part one and part two yet, you should do that first.

At this point I'm past my threshold for endurance. Shoddy installer allows a partial install that borks my ability to establish an IP, incessant messages popping up during normal computer use, a driver causes blue screens due to some unknown interaction with other software, and (as I was about to find out), misconfigured uninstaller.

Mini-Rant: The second point you might quibble over, as almost all firewall software does this. But DSA2 takes it to the irritating extreme: it also pops up to ask you if you really want to run this program, every time a new process spawns that it doesn't know about. You can turn it off, and I did, but this mentality bothers me. As a software developer myself, I've seen message boxes get ignored, and more of them is not the answer. More messages to the user means more familiarity for the user in clicking No, or Cancel, or "whatever makes it go away". This is really a separate rant, on UI design, but yet it's relevant here. My own mother, who is hardly a technophobe yet also not the most tech savvy, has complained to me about this very thing, both when I installed Spybot's TeaTimer (which watches for important registry changes and asks you to allow/block them) and when I enabled her firewall software. Both times she told me she found herself just allowing everything through, because she didn't know what any of it was (and she's not going to punch each one of them into a search engine--but nevermind that; DSA2 doesn't give you time for that. You have 30 seconds to press a button. Geez.)

So it came time to uninstall DSA2. This should be the easiest part, shouldn't it? I fire up MyUninstaller again and lo, it isn't in the list. I search (yes, you can search for text in the list, one of many novelties Microsoft can't be bothered to give you in Add/Remove Programs) for Dynamic, and then for Privacyware. Nada. I look in the Start menu. Nope! I look for the option in the program. Nuh-uh. I google "Dynamic Security Agent uninstall" (without the quotes; this turns up results for most programs, particularly if people don't like them and want to get rid of them, which I would imagine DSA2 causing). Nothing useful. On a lark, I decide to fire up Add/Remove Programs, and there it is in the list, under Dynamic Security Agent.

Now I've been using MyUninstaller for quite some time, and this is the first time I've ever seen it fail to see something Add/Remove Programs saw. What non-standard way could they have registered their uninstaller that it would show up in one but not the other? You might think this indicates a bug in MyInstaller, not DSA2, but I'm inclined to lean the other way. It's proven in so many ways (including a shoddy installer) that it doesn't play nice with other applications or, in fact, the operating system, so why should it start now? Due mostly to the fact that I've never seen this happen before and I, as previously mentioned, install and uninstall a lot of software regularly, I'm going to say this one is on DSA2 as well.

I wish I had the perseverance to hunt down the "right" way and see how that deviates from DSA2's way; or to hunt down what exactly caused the BSOD that I kept getting before. But let's be honest. They don't pay me to debug their software. It's sufficient, for the purposes of this blog post, to say it didn't work for me. It didn't work for me and it wasted 5 hours of my time as it was, and I highly do NOT recommend this software. To anyone. I don't understand how it's rated so highly by users on Download.com, but I'm publishing my experiences with it, with error messages and such intact, so that maybe someone else googling them will have better luck than I did at figuring out what's wrong. Dynamic Security Agent is wrong. Get rid of it. I don't say that lightly. I very very nearly came to the point where I was going to throw my hands in the air and just go ahead and reinstall Windows. You shouldn't need a degree in Computer Science to clean up the mess a program makes, particularly a program you downloaded to prevent messes from happening on your computer.

Spyware, Google, and Dynamic Security Agent (part 2)

This is part two of a three-part story. If you haven't read part one yet, you should do that first.

Back to diagnosing software then. First I check on the server end to see what it sees the client doing via the log kept by the DHCP daemon on my router (a Linux box). It received a discover and issued an offer, but it never received a request for an IP address (which it would respond to with an ack to complete the handshake). Something is very broken here. Next, I check the LSP list in Spybot to see if there's some residual brokenness from the malware I cleaned up--something in the form of a break in the chain caused by a file being deleted, say. No dice.

I check the Event Viewer (Start->Settings->Control Panel->Administrative Tools->Event Viewer or the "easy way" of Win+R, eventvwr.msc) for any hints as to where the failure is occurring. There are a couple of interesting System errors: A couple of services failed to start because "a device attached to the system is not functioning" (DHCP among them), "boot-start or system-start drivers" failing to load (I attributed this to my stint in Safe Mode), and "The Privacyware network service service failed to start due to the following error: The system cannot find the file specified." I check Windows' Services manager (in Control Panel, or Win+R, services.msc) and check the DHCP Client service's dependencies, then check to make sure they're all running. Check. Nothing else looks out of whack there. The Privacyware thing slips my mind and I move on to installed applications.

Now I don't use Add/Remove Programs under Control Panel, and I'll tell you why. I tend to be a power user (maybe you've noticed?), so I have lots of programs installed. The more programs you have, the (exponentially, or so it seems) longer it takes for Add/Remove Programs to populate the list of installed applications. What takes so long, I'm convinced (though I could be wrong) is calculating disk space. For each program, it looks at the location where it's installed and calculates the size of that directory tree. Not only does it take a long time, it's also often incorrect, for applications that share directories and the like. That all being irritating and useless to me, I instead choose to use MyUninstaller. So I load it up and sort by date of install, descending, and am looking through the most recently installed programs. What's interesting at this point isn't what I see, but what I don't see. The antivirus software is there, but Dynamic Security Agent isn't. Odd.

I check under the Start menu and don't find it (much less an uninstall option there). I look under Program Files but don't see it filed under the application name. I google it to find the company name. Privacyware...why does that sound familiar? I go back to Services and locate the Privacyware Network Service service, go to properties, note the file, and browse to it. It is, in fact, missing. Not having any clear way to uninstall it, I decide instead to reinstall it. This time the installation goes swimmingly. It wants to reboot. I reboot.

One of the first things I notice is that I have internet connectivity again. Having found the problem, I set about running all my internet applications (IM, torrent, web browser, etc.) I quickly realize that its process monitor is going to drive me up the wall, so I turn that off. I check in with AVG to see how its scan is going (it started a Complete Scan in the background hours ago, but with all my crap and the multiple reboots, it has yet to finish it). I open up AVG's Control Center by accident, instead. In just clicking around, getting used to the program, I go to open the Virus Vault.

Blue Screen of Death.
DRIVER_IRQL_NOT_LESS_OR_EQUAL in PWIPF6.SYS
As soon as I'm back into Windows, I google it. Nothing? Hmm. I google just PWIPF6.SYS. It's not an AVG driver that crashed--that driver belongs to DSA2. Thinking that maybe it's a fluke, I open up the AVG Control Center and try it again. Same BSOD. Next time I'm in, I try something different in the Control Center (can't recall what) and get the same BSOD.

Continue reading with part three.

Spyware, Google, and Dynamic Security Agent (part 1)

About 5 hours of my day were wasted today, and I'm going to chronicle them for you in the hopes that I can help you avoid my mistakes. In case you don't like spoilers, you should avoid reading the following: Dynamic Security Agent is trash; don't install it.

It started when I went to Google something, like I do so often (hence Google used as a verb). I was greeted by the following cheery message:

Their antivirus and spyware links point to download.com, so I do what seemed sensible at the time. I restricted both lists to free (not "free to try") software, sorted it by user ranking (highest rated at the top), and downloaded and installed the first few useful seeming programs from each category. One such program was named Dynamic Security Agent 2.0 (henceforth, DSA2), and it sounded innocuous enough from the description.

Fast forward a bit and I've now installed AVG and Avast, have upgraded Spybot and Ad-Aware 2007, and am installing DSA2. I've decided to install it last since their blurb on Download.com says "DSA incorporates anomaly detection components that baseline normal computer operation and detect unacceptable deviations from typical use." If that's true, I want it to consider the other software I installed to be part of the baseline, and not nag me each time I install antivirus software. It's also about this time I head to bed, so I leave the spyware scanners running and AVG is still doing its complete scan in the background. It completely fails to register that I double clicked the installer (twice even) and nothing ever happened.

When I wake up, the scanning is done, DSA still hadn't presented an installer, and I decide to reboot, to let Spybot finish cleaning house (I actually had to boot into Safe Mode to get a particularly nasty bit of malware that had installed itself as a driver. Then I rebooted again.) One of the first things I notice is that I don't have an internet connection any more. Running through the list of normal offenders, I find that my DSL modem and router are neither one the cause--I can ping various things from the router fine--and the daemons running on the router aren't either--I can ping those same things from my file server (meaning DHCP and DNS are working on the router as well). So the problem is on the Windows box, the machine I had just rebooted after scanning completed.

I fire up a command prompt and run ipconfig. I have a 169.254.x.x address, meaning that Windows APIPA kicked in because DHCP failed (i.e., it gave me an IP address that would only be useful if I were running an ad hoc network with no DHCP). What's peculiar about this is that I know (above) that DHCP is working as is all the hardware between this machine and the router issuing DHCP leases. I test the easiest thing first: I run ipconfig /release followed by ipconfig /renew. After approximately five forevers, it tells me that the DHCP server could not be contacted. I check Network Connections and see that my Local Area Connection is set to obtain IP automatically and determine DNS servers automatically. I check Device Manager and all looks well.

Has my NIC gone out? Yet it has a link light at both ends. I plug the known-working file server into the switch port that my Windows box was connected to, have it DHCP again, and test via ping again. The port works fine. I swap the cables back and try a USB NIC I have (actually the Wii-branded one, which I know works because my Wii was using it). One irritating driver download/transfer/install later, and I'm able to confirm that it's not the NIC, as this other NIC behaves the same way (driver up and running, link light on, yet refuses to DHCP). At this point I know it's not a hardware issue, as I've tested all the hardware between the client and the server (explicitly or inductively--I can't actually take the NIC out and try it in another computer as it's on the motherboard).

That leaves software. Specifically, that leaves (presumably) system software, as the only application software I've installed is known to be good and safe, right? Bad assumption. Not particularly wanting to troubleshoot Windows internals at the moment, I decide to try the easy way out. I dig out a Windows XP SP2 CD and set about repairing my installation. That's the third repair option, by the way, not the "press F2" one at the beginning, and not the Recovery Console when it offers that--you pass those and act like you want to install Windows, then it detects an existing install and offers the option to repair it. I mention that because it's not at all intuitive, and you might care, if you've read this far. Skipping past the fun update and driver issues that caused for me, let's just say that didn't help at all. Booting into a "repaired" XP, I find a 169.254.x.x address waiting for me again.

Continue reading, with part two.

An introduction (AKA pointless blather)

Despite the name, this blog isn't about insignis interactive, a business I claim develops software despite having none available for download at the moment. It's also not about serious ranting, which I do elsewhere. That's not to say I won't rant here--I will--but more about the day-to-day things than the enduring, and more on pragmatic things than theoretical. At least that's the way I'm seeing it now and thus what I'm claiming (and I already know what my first "real" post will be, so that's not nothing). So sit back and relax while I bore your socks off.