Finally upgraded to Forefront TMG 2010 RTM last night. And screwed up the web listener for this site. And didn’t know it. Ooops... It should all be good now though. At least the web publishing part. I'm still having problems getting the VPN working. L2TP seems to be working fine, but the SSTP endpoint is complaining about certificate problems and not working correctly. Plus, web proxy clients are now trying to connect to one of the RAS demand dial interfaces instead of the internal one they're supposed to. GRRRRR! (DNS looks correct, so no idea how clients even know about the DHCP assigned address...but that's what the logging is reporting...) Also, for some reason after applying the latest round of Windows Updates, system startup has slowed to a crawl. It's now taking 15 minutes to go from POST to the login screen. Nothing is being reported as being problematic, so no clue where to even start looking. Even worse, sometimes services don't come back up, requiring manual intervention at the console to start them. They've been different on each of the handful of reboots I've done, so now I'm getting afraid to reboot... IPv6 support is also sorely missing. It's kind of there under the covers, and bleeds through when configuring DirectAccess stuff. But without being supported & without a UI to configure rules, whatever underlying support there is is useless. On the bright side, recreating the old rules was a breeze. And the Best Practice Analyzer is nice; it caught a couple things that I missed. I think the best approach is probably going to be to start over and reinstall everything. Ouch. That'll have to wait a bit though...next week (+weekend) I'm down in the Bay Area again, and two weeks later I'm in New Orleans... Now playing: Vienna Teng – Warm Strangers – 04 Shine
I finally hopped on the solid state drive (SSD) bandwagon. Got an Intel X25-M G2 160GB drive yesterday. And ended up spending all day trying to install it. Definitely should have thought about how to go from the old drive to the new drive a bit more. But, it's working now! Unfortunately, I haven't really noticed a performance boost at all...although that might be because the only things I've done with it so far are resync my offline file cache, create silly little drawings, and write blog posts. Nothing too disk intensive there, and certainly nothing that would really benefit from the improved random access times. So I'll see how this works out in the long run. In the mean time, this is how I migrated from the old drive to the new drive: - Remove encrypted (EFS) files. It turns out that for some reason I had a random encrypted file sitting around, which caused the backup procedure to fail.
- Boot into WinPE. I used a USB drive that I've got laying around for installing Windows Server 2008 R2.
- Use imagex (from the Windows Automated Installation Kit (WAIK)) to capture an image of the old drive's volumes.
- Shutdown the system & install the new drive.
- Boot using the bootable USB drive and install Windows. I did this because I needed to create the partition structure, file systems, and configure the new drive to be bootable. Windows Setup does that all for me in a lot less time than it would take me to document/chase down all that stuff and apply the changes manually.
- Boot using the bootable USB drive again. Quick format the OS partition (or: delete everything on it).
- Use imagex to apply the captured image.
- Reboot. Be happy that actually worked & didn't result in weird errors from bootmgr (or even worse, "ntldr not found"! (that would have been really bad because Windows Vista, Server 2008, 7, & Server 2008 R2 don't even *have/use* ntldr anymore!).
- (optional) Write blog post whining about how I didn't use dd, Ghost, TruImage, some other disk cloning tool, or even just did something as simple as hooking both drives up at the same time and doing a robocopy. (note that most of those would require having both drives connected at the same time, which isn't possible for me because I don't have a computer with 2 free SATA ports...yes, it's probably time I upgraded).
Now playing: Stars – In Our Bedroom After the War – 01 The Beginning After the End
This weekend I got rid of the Digital AlphaServer 4000 5/300 that I've had for a number of years. It ended up going a friend, so hopefully some good use will be made of it. Honestly, getting rid of it is probably for the best: it's a pain to move (huge + weighs a third of a ton), and I haven't used it for a while...in fact, it hasn't been plugged in since moving out to Oregon a couple years ago. Still, I can't help but feel a little bit nostalgic & miss it a little bit... Between this & the other stuff I've given away over the last 4 months, I'm now down to the fewest number of computers I've owned since December 2002. Huh. Seems odd to realize that. Anyway, bye Azure the AlphaServer! Now playing: Lifehouse – Who We Are – 05 Broken
Here's the workflow I used for analyzing the logs from this website: - Wait until end of day.
- Copy the day's log file to a temp directory.
- Run the log loading utility (this also applies the geolocation lookups, so sometimes the geoip databases need to be refreshed from www.maxmind.com)
- After a bit (3-20 minutes usually; depends highly on the level of traffic), the log entries are all in a SQL Server database.
- The database has a View that filters out bots, crawlers, spammers, and internal traffic
- I view the external user records by querying the view.
That view has a horribly complicated SELECT statement. Which I found out this week had some bugs, so not all results were being correctly returned. And by "horribly" complicated I mean that it has thousands of conditions that are being evaluated. So after wasting a bunch of time trying to chase down where the problems were, I decided to scrap that approach and come up with a better one. What came to mind was developing some sort of "how-likely-is-it-that-this-record-should-be-hidden" score. The more pieces of "evidence" that a particular request came from a bot/crawler/spammer/etc., the higher the score. So now I've got a basic implementation going. It's written in C# 4.0 (hey, have to play with the new stuff sometime!) and operates as a separate external utility that persists the score as another field on each log entry's record. It took that massive SELECT and refactored it down into 45 separate rule sets (classes)...much more manageable! At the moment the scores from each rule are kind of arbitrary, and will probably need to be redone/tweaked in the future. Right now I'm basically taking everything that didn't match a rule (score = 0) and treating that as legitimate external traffic...which seems to be working fairly well, but isn't really as fine grained as I originally envisioned. Also, at some point (soon) I need to add more complex conditions. A couple of bots operate in such a way that if you look at any one individual request to the web server, that request is legitimate. But as soon as you see, say, 4 requests, repetitive patterns start to emerge and it becomes obvious that some sort of crawling is going on. So having an automated way to catch these would be nice...but also more complicated...probably just haven't thought about it enough yet... Coolest parts of doing the new implementation: Linq to SQL, & using Linq + reflection to automatically discover all the rule sets. Just a couple lines of code to do such complex things! And it's so much simpler with that syntax! Now playing: In-Flight Safety – We Are An Empire, My Dear – 05 Torches
Last Monday I applied a redirect rule to the site. And promptly watched (okay, so it took me 4 hours to notice...) as things went crazy & stuff broke. So, to help avoid that in the future, here's what I did & why I think it broke, and what was done to fix it. Okay, so basically, there are 4 different domain names that can get visitors to this site. That's nice and all, but it doesn't help the search engine rankings at all. Also, it just seems kind of...repetitive (let's face it; this is probably the real reason I bothered to mess with things; having 4 different paths isn't as elegant as having just one). So I downloaded the URLRewrite add-on for IIS 7.5, installed it and created a simple rule: 1: <rewrite>
2: <rules>
3: <rule name="Redirect to www.ntldr.com" enabled="true" stopProcessing="true">
4: <match url=".*" />
5: <conditions>
6: <add input="{HTTP_HOST}" pattern="^(www.)ntldr.com$" negate="true" />
7: </conditions>
8: <action type="Redirect" url="http://www.ntldr.com/{R:0}" />
9: </rule>
10: </rules>
11: </rewrite>
The rule looks at every URL used to get to the site, checks to see that the destination server is not www.ntldr.com, and then redirects the request to http://www.ntldr.com/whatever-the-original-request-was. Pretty simple, tested it internally, verified it was working, then applied it to the site and went away for a few hours.
And came back to find that the logs had tens of thousands of entries. Mostly from some computer in Kansas that kept going to / over and over and over and over again. For almost 2 hours. The bots almost universally gave up after just 6 rounds.
Of course I immediately turned off the rewrite rule and frantically began looking at logs & network traces trying to figure out what the heck was going on and how I managed to not catch it in testing. It quickly became apparent that the rule worked internally, but not from outside the Forefront TMG 2010 firewall. Which narrowed down the problem quite a bit, & made me feel less incompetent (yay! the rule worked!), but more stupid (doh! for not testing like an actual user would!).
However, examining the TMG logs didn't really yield anything useful. A request would come in, it would go to the web server, a 301 Permanent Redirect would go back, and then the client would seem to reissue the same request again. Out of desperation, I decided to take a look at the rule and noticed this tab:
At the time, "Apply link translation to this rule" was checked. And one rule is used to make all 4 hosts accessible. Consequently, this is what the Link Translation Mapping looked like:
Public name: ntldr.com
| Original URL |
Translated URL |
Mapping Details |
| http://ntldr.com |
http://ntldr.com |
Rule Defined: ntldr.com |
| http://www.ntldr.com |
http://ntldr.com |
Rule Defined: ntldr.com |
Public name: ntldr.net
| Original URL |
Translated URL |
Mapping Details |
| http://ntldr.net |
http://ntldr.net |
Rule Defined: ntldr.com |
| http://www.ntldr.com |
http://ntldr.net |
Rule Defined: ntldr.com |
Public name: www.ntldr.com
| Original URL |
Translated URL |
Mapping Details |
| http://www.ntldr.com |
http://www.ntldr.com |
Rule Defined: ntldr.com |
Public name: www.ntldr.net
| Original URL |
Translated URL |
Mapping Details |
| http://www.ntldr.net |
http://www.ntldr.net |
Rule Defined: ntldr.com |
| http://www.ntldr.com |
http://www.ntldr.net |
Rule Defined: ntldr.com |
Oops. Fairly major, mind-numbingly stupid oops.
See, this is what was happening:
- User visits http://ntldr.net.
- Request for http://ntldr.net comes into Forefront TMG.
- Forefront TMG processes the ntldr.com rule and forwards the request to www.ntldr.com (at this point, an internal DNS alias for the actual server, tourmaline.global.ntldr.net).
- IIS gets the request and applies rewrite rules.
- Rewrite rules send a reply back saying "no, you really should go to http://www.ntldr.com".
- Reply reaches Forefront TMG. Forefront TMG applies Link Translation mappings.
- Link Translation mappings change that to "no, you really should go to http://ntldr.net".
- User dutifully goes to http://ntldr.net.
- Repeat 1-8 until the user's browser either gives up (nice browsers), or the user gives up (impatient users), or I disconnect them.
So, the solution: disable link translation in Forefront TMG. Note that I not only had to do that on the rule itself, but also in the Web Filters. That might be just because I was impatient and didn't wait for TMG to fully cycle and disable the rule-level mappings. Not sure though, and haven't had a chance to find out yet.
Now playing: The New Pornographers – Challengers – 07 Unguided
Originally, this post was going to be a rant about how SQL Server Reporting Services is useless, and how Excel was so much easier for creating graphs & doing useful analysis of data. Then I spent an hour and a half messing around writing queries, executing queries, exporting & importing result sets, and then manipulating the data. So all the "oomph" has kind of gone out of that rant. Besides, I shouldn't even be messing around with this data; there are a bunch of very nice programs/scripts sitting around on the Internet to do the analysis & reporting for me. But doing things the easy way would be cheating. So instead I keep mucking around with my own custom tools & processes. In any case, here's a bunch of pretty graphs showing the human-like page views per week broken out by country of origin. Data for other views is a bit...messy...right now. The per-country stuff is fairly clean because I'm just using a geoip database to map requesting IP address to source country. (yes, one would have probably been sufficient to show what I was doing, but hey, if one is good, five is even better?) (also, in all honesty, I'm guessing I don't have enough consistent traffic to make looking at a week-by-week view meaningful; better would probably be to focus on longer time spans, like a month or so) Now playing: Matthew Barber – Ghost Notes – 06 One Little Piece of My Love
Hmm... can this get posted from Microsoft Office Word 2010 Beta?
Here, let's try a picture too:
& how about a category too while I'm at it?
Update: okay, so can I update this too?
Okay, Hyper-V is cool. It's fast, easy to use, has a lot more features, & generally works very nicely. Much better than Virtual Server 2005 R2. Moved this website over to a new VM (upgraded to 64-bit Windows Server 2008 R2 in the process...yeah!) on my new server, and it's working great (I hope...guess I'll know for sure if any comments get posted...:)). Tried moving another VM over just by coping the VHD file, but that didn't work so well. Didn't really expect it to before trying, but then got hopeful when first starting it up and trying to install the integration components, and now have finally accepted that the two solutions (VS2005R2 & Hyper-V) are just too different for things to work. Not sure I care that much for Hyper-V's licensing model though...yes, the basic product is free, but to get the "good" management tools you have to shell out the big $$$'s for System Center Virtual Machine Manager. Guess I'm just greedy and want everything for free... ;) (no, seriously, would it be too hard to have a management interface that allows you to see, at a glance, how many resources have been allocated to the VM's? kind of like the old VMRCplus view?) Now playing: Stabbing Westward – Stabbing Westward – 07 Angel
Looks like my nice new Intel SR1630HGP server, with its Intel Xeon X3460 processor is affected by the CLOCK_WATCHDOG_TIMEOUT STOP error discussed in KB975530: 0: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
CLOCK_WATCHDOG_TIMEOUT (101)
An expected clock interrupt was not received on a secondary processor in an
MP system within the allocated interval. This indicates that the specified
processor is hung and not processing interrupts.
Arguments:
Arg1: 0000000000000019, Clock interrupt time out interval in nominal clock ticks.
Arg2: 0000000000000000, 0.
Arg3: fffff880021e1180, The PRCB address of the hung processor.
Arg4: 0000000000000006, 0.
(additional details follow that but don't really add anything)
GRRRRR!!! Looks like, at the time of this writing, the KB article needs to be updated, since the Xeon 3400 series aren't Xeon 5500's, nor Core i5's, nor Core i7's...
Now playing: The Beatles – One – 26 Let It Be
0xc0000225 error when trying to boot into the Windows Server 2008 R2 installer? And you're running on a Broadcom HT1000 based motherboard? Solution: hide/disable the XIOAPIC functions of the HT1000. On the Supermicro H8SSL-i board this means going into the BIOS, Advanced tab, Advanced Chipset Control menu, "HT1000 Southbridge Configuration" menu, and finally changing the "Hide XIOAPIC PCI Functions" option to "Yes". Save the changes and reboot. (Note that this applies to v1.2 of the BIOS...which based on its age is probably going to be the last one ever released for that board...) Now playing: Emm Gryner – Public – 08 Your Sort of Human Being
Got a brand spanking new Intel Xeon X34xx (Nehalem based!) server recently (like within the last month). It’s a barebones Intel Server System SR1630HGP, with an Intel S3420GP motherboard. Which means...it supports EFI! So I'd finally be able to see what all the hype & excitement about the cool new BIOS replacement was! And I'd be able to boot off a storage array > 2TB in size! Or so I thought (insert thunderclaps, lightning, and other ominous (or just drama enhancing) signs here). It turns out there's a bit more to getting EFI to work with Windows than just popping the DVD in the drive and powering up the computer. A brief caveat here at the beginning: these comments apply to the following firmware, so the settings may change as new releases are made: - BIOS: S3420GP.86B.01.00.0027
- BMC: v01.14
- FRUSDR: 15
- Windows Server 2008 R2 (RTM)
So, first of all, the RAID functions of the chipset don't work with EFI. Period. Neither the Intel Matrix RAID option ROM, nor the LSI/ESRT2 option ROM, appear to support EFI. Sure, they're useable with the CSM enabled, and the system setup may make it seem like they can be enabled, but as soon as EFI is used, things just stop working and any arrays either wont be bootable or wont even be found. Actually, even with a standalone LSI MegaRAID SAS 9260-4i, things aren't that easy to get working. The CSM has to be enabled in order to get into the controllers firmware ("WebBIOS" or something now). And there's only like half a second to press the right keys to get into it the first time... But once the arrays and any settings are configured, EFI does work with the controller and CSM can be disabled. Oh, and if using an internal SATA DVD drive, apparently it has to be plugged into port 5, otherwise it doesn't always show up as a bootable device. This might just be a legacy of leaving the Matrix RAID enabled when it shouldn't have been, but with the drive on port 5 it always worked. Once the storage stuff is taken care of, the big tricky bit is that Windows apparently requires a VGA BIOS to be present in order to work properly. This little nugget of crucial information can be found by digging around the Windows Hardware Design site and reading up on firmware & UEFI/EFI. In the system setup, there's a setting for "Enable Use Legacy Video for EFI OS" that becomes available when "Enable EFI Optimized Boot" is enabled. BOTH settings need to be enabled for Windows to successfully run. I think I may have been able to get WinPE to start off the DVD without the video setting enabled, but it certainly wasn't stable & reliable. May just have been that the setting didn't actually get cleared, got temporarily turned back on again, or I'm just confused by having tried too many different things. A final bit of trouble I ran into was getting Windows Setup to not encounter errors. For some reason it kept saying that Windows couldn't be installed to the drive because the system couldn't boot from the selected drive (although Setup would let you continue with the installation, true to its word, Windows wouldn't boot after setup). To fix this issue, I had to boot into WinPE (with CSM enabled/EFI boot disabled again! otherwise you can't get a command prompt from the setup disks!), fire up diskpart, convert the disk to GPT, then manually create the EFI System Partition (ESP) and Microsoft Reserved Partition (MSR). The next time setup started from an EFI boot, the error was gone and setup worked correctly. So, a summary of what needs to be done: - Make sure the DVD drive is connected to SATA port 5!
- Get a FAT32 EFI System Partition created on the disk somehow.
- In the firmware setup:
- Switch SATA controller to AHCI mode
- Disable AHCI Option ROM
- Enable EFI Optimized Boot
- Enable Use Legacy Video for EFI OS
- Save changes to firmware setup, then reenter it to double check that the settings took (& to verify the boot settings...those have an annoying habit of changing all the time)
- Start up Windows Setup and install
Now playing: Emm Gryner – Public – 05 Phonecall 45
Retracted. This scenario is not supported, and there are numerous additional issues that need to be resolved that were not covered in the original post.
Now playing: Amy Millan – Masters of the Burial – 02 Low Sail
Windows Live has this cool thing where it reminds you about your contact’s birthdays (the “Birthday Calendar” I think…). And yes, I’ve come to rely on this feature. Unfortunately, I can’t quite bring myself to trust the system completely, so whenever I get the alerts, I also get this nagging doubt that it’s not really that person’s birthday and that I’ve really just misentered their contact info… Wow Windows XP is showing it’s age…the RTM installation disc I have is reacting badly to the >127GB hard drive I’m trying to install on…(yes, I know the way to correct this is to use SP1…which is why I’m slipstreaming SP3 onto a new installation disc right now…) Hey! xcopy on Windows 7 seems to have a new option: /J (“Copies using unbuffered I/O. Recommended for very large files.”) Cool! Command just used to build the Windows XP with SP3 disc: oscdimg -n -b"amd64\boot\ETFSBOOT.COM" -lWXP_VOL_EN_SP3 -t04/14/2008,07:53:59 -g -h -maxsize:4096 "E:\CD Build\windows_xp_sp3" "E:\CD build\windows_xp_sp3.iso". I’m probably a short DVD burn away from finding out just how wrong that was…(much later)…hey, that actually worked! Oo…coool…Windows XP does have regional settings for Filipino…too bad the timezone stuff doesn’t have one (instead I end up guessing…”it’s close enough to Singapore, right?” note that this results in the timezone being "Malay Peninsula Standard Time") Who makes & sells a DVD drive that can’t play DVD’s?!?!?! I mean, I could sort of understand a bare OEM drive…but these are boxed retail drives from HP! Grrr… Now playing: (nothing but the sound of computer fans)
New! Improved! Now with inline hyperlinks!1 Extra special bonus feature: So I got the following email message from my mom last week: See your Mom on YouTube!! and was immediately filled with a weird curiosity and a sick terror wondering if this was somehow going to be one of those horribly embarrassing videos where people just do stupid things (& (usually) get hurt). Fortunately it was just moderately embarrassing and for work. :P So I'll share my link love (rofl! hahaha...like that's worth anything...I've seen how many pages down into the search results some visitors have had to go to finally stumble across this site!), and everyone can check it out: http://www.youtube.com/tcpllibrary Extra, extra special bonus feature: So, there's been a bit of speculation lately about why I blog (& why it's increased lately). The general consensus amongst other people seemed to be that it's because I'm lonely & am seeking attention. LOL! Duh, it's a blog. That's like saying the sky is blue because of light's refraction through the atmosphere. ...err... maybe not quite that metaphor. Whatever...was going more for the whole "that's the way it works because that's what it means to be that" thing... (actually, there was a bunch of additional context around the whole question that makes it interesting, but I'm trying to avoid the whole emo-teen-agnst-livejournal vibe because I'm a mature technology professional maintaining a professional Internet self-marketing presence (haha...okay, so really I'm just too lazy to create & install a black-text-on-black-background DasBlog theme :P)) 1 Rose Festival/Fleet Week 2009 pictures coming later this week...or next...hopefully I'll be more punctual with this year's photos than I've been in previous years. Now playing: Sebastien Grainger & the Mountains – Sebastien Grainger & the Mountains – 10 American Names
So for some reason you have a Lenovo X200T, a bootable USB hard drive running WinPE (Vista SP1/Server 2008 based), ImageX, and the WIM files that were originally on the recovery partition. For some reason you no longer have the recovery partition (probably because it was deleted to free up space), you don’t have the recovery discs that you burned like a conscientious computer owner, and your X200T wont start the OS (say, because you didn’t think about all the implications of encrypting the entire drive with BitLocker and then not having the recovery key…). Also, just to make it more fun, you’re on a plane! Obviously the system needs to be restored. And because of the things you do have, you’re in luck! It’s possible! And not that hard! (yeah, right…) First, backup everything you can off the X200T’s hard drive, because restoring things is destructive and will involve wiping the drive. If you can’t back things up…umm…learn to live with disappointment and loss? Since the system wont start the OS, you’ll probably be doing this from within WinPE. Good luck copying everything with the command line (xcopy can be useful here). If you aren’t in WinPE yet, adjust the bios settings to allow you to boot off the bootable WinPE USB hard drive. Then boot into WinPE. The first real part of the recovery process is to wipe the X200T’s drive and repartition it. Start diskpart and issue the following commands: select disk 0
clean
create partition primary size=1499
active
assign letter=s
format fs=ntfs label="SERVICEV003" quick
create partition primary
assign letter=c
format fs=ntfs label="SW_Preload" quick
Next, apply the WIM files to the disk (exact paths to the WIM files will probably be different for you):
imagex /apply E:\images\x200t\sdrivebackup.wim 0 S:\
imagex /apply E:\images\x200t\cdrivebackup.wim 0 C:\
So, in a perfect world, everything would be all set to go now. Unfortunately, you my run into problems with bootmgr not being able to find the OS, or the OS thinking its on a different drive letter than it should be. To fix those issues, a little editing of the boot configuration database will be required:
bcdedit /store S:\boot\bcd /set {9dea862c-5cdd-4e70-acc1-f32b344d4795} device partition=S:
bcdedit /store S:\boot\bcd /set {3657ebe1-d4e6-11dc-88f0-ec9c0d1f1864} device partition=C:
bcdedit /store S:\boot\bcd /set {3657ebe1-d4e6-11dc-88f0-ec9c0d1f1864} osdevice partition=C:
bcdedit /store S:\boot\bcd /set {3657ebe2-d4e6-11dc-88f0-ec9c0d1f1864} device partition=C:
bcdedit /store S:\boot\bcd /set {b2721d73-1db4-4c62-bf78-c548a880142d} device partition=S:
bcdedit /store S:\boot\bcd /set {466f5a88-0af2-4f76-9038-095b170dc21c} device partition=S:
bcdedit /store S:\boot\bcd /set {ae5534e0-a924-466c-b836-758539a3ee3a} device partition=S:
Note: bcdedit is kind of sensitive about the drive letter availability when it’s run. Which is why S: was used back in the diskpart stage.
In an almost perfect world, everything would now be all set to go. Too bad things aren’t even almost perfect. One further step was required to swap get the drive letter assignments correct: the registry of the restored OS needs to have its drive letter mounts tweaked BEFORE the OS boots for the first time. This step is probably the most complicated, since it's not scriptable. Basically, start up regedit. Navigate to the HKLM\SYSTEM\MountedDevices key. Make note of the binary data for the "\DosDevices\C:" and "\DosDevices\S:" values (in my case they were something like "C4 78 A4 9C 00 00 C0 5D 00 00 00 00" & "C4 78 A4 9C 00 00 10 00 00 00 00 00"). Now load System Hive from the restored OS (it's "C:\windows\system32\config\system") in regedit. Navigate to the SYSTEM\MountedDevices key in that hive. Change/create the SAME values with the SAME data that the WinPE registry had.
After rebooting the system (remember to either unplug the USB hard drive or adjust the bios settings so its no longer the preferred boot device), everything should be back to working.
Now playing: Neko Case – Middle Cyclone – 09 Magpie To The Morning
So, from April 5th through the 8th I was in San Antonio, Texas on business for the annual Ratabase conference. I’d been planning on live blogging it again like I did last year (actually, I was planning on doing it better than last year), but things didn’t quite work out that way. So, instead of the latest news on cool new things you can do with an insurance rating calculator (stop laughing!), I’ve got a cautionary tail about relying on new equipment, planning before doing things, and generally about how I do stupid stuff with technology. Now for a bit of background. Windows Vista & 7 have this cool feature called “BitLocker”. Basically, it encrypts your hard drive so that if the computer/drive is stolen, an attacker would have to go through the OS level security mechanisms (usernames/passwords/smartcards/ACL’s). The attacker wouldn’t be able to circumvent the OS mechanisms by, say, editing the password store to give change the passwords. Or they could go after the EFS keys and just decrypt files that you had encrypted explicitly so that other people wouldn’t be able to read them! One “mode” of Bitlocker relies on this cool hardware device called a TPM (trusted platform module). The TPM is involved in the key management/access process, and basically serves to ensure that the entire system, starting from the beginning of the boot process, is “trusted”. After all, you wouldn’t want some nefarious person coming in, booting to a different environment that can impersonate the BitLocker process, and then unlocking/decrypting the BitLocker volume and thus bypassing all the security it was supposed to offer. If the TPM/BitLocker (not sure which actually does the checks) detects that the system is under attack (for example, the order of the devices that the system boots from has changed), the system will require that a 56 digit recovery key be entered. Assuming you created a recovery key initially…but everyone does that & keeps that key safe, right? A week before I was to head to San Antonio, my new Tablet PC (a Lenovo X200T) arrived. Incidentally, it’s a very nice system…fast, light, long battery life, lots of accessories (I bought most of the options…X-Base so I have an optical drive, webcam, fingerprint reader, WiMAX, HSDPA/UMTS, GPS, etc.). And it has a TPM v1.2. Which was cool, because it meant I could use BitLocker! So I put Windows 7 (beta) on the system, enabled BitLocker, created the recovery key, and used the system successfully for a week. One time while rebooting the system I had to enter the recovery key, which I thought was kind of funny at the time, but didn’t really worry that much about it. So along came Sunday morning, it’s 5:00AM and I need to head out to the airport, so I hibernate my tablet and pull it out of the docking station (X Base). Figured I wouldn’t need the optical drive, and certainly wouldn’t need the extra weight. Thought about putting the recovery key on a flash drive or the external hard drive I was taking, but then thought “nah, I wouldn’t need that”. Besides, the key would be a lot more exposed to compromise if I had it with me and, say, my flash drive got lost/stolen. Remember how I said the boot order mattered to the TPM? And remember how 1) I installed the OS shortly before this (from a DVD), & 2) how I wasn’t taking the X-Base with the DVD drive with me? And how I ignored the fact that when I’d last attached the X-Base I had to enter the recovery key? And how I wasn’t taking the recovery key with me? (this is where it should become apparent to most people that I am, in fact, an idiot.) Of course I got all the way to the airport, through security, and was sitting at the gate with 30 minutes until boarding started when I went to use my tablet. And of course it saw that the DVD drive was no longer present and began going “oh noes! I’m under attack!”. Which then caused me to first realize exactly what mistakes I’d made, then freak out (it’s amazing what sorts of brief, complete clarity you can have when a situation goes to crap). Part of the freak out was calling up a trusted friend and giving him all the details of connecting back to my network via VPN (including user names and passwords). I figured “okay, get connected to the internal network, then the administrator account can be used to login to the online CA and security server to retrieve the recovery key”. Yes, it was a moment of weakness and complete stupidity. Fortunately, years ago when I got the VPN stuff working, I had the foresight to use L2TP and require certificates to connect in addition to passwords. So no VPN connection could be established, giving the passwords did absolutely no good (but no harm either), and the recovery key couldn’t be retrieved. Hurray for defense-in-depth. I was not totally without my tablet during the trip though. Remember how I brought an external hard drive with me? Well, that drive is the bootable one that I use to make OS recovery images. And I’d used it just a week before to backup the Lenovo factory default config. So I spent the flight down to Texas doing restores until I got the system working again. Here are some pictures from the trip (more (and higher res ones) can be found on my Windows Live Photos album for the trip): Westin La Cantera Resort gulf course outbuilding San Antonio, TX Riverwalk. There’s a boat ride around it that’s kind of cool too (+). Lots of people (-). On the whole, it was a cool area, and made for a good change of pace from the conference. The Alamo (of course!). Now playing: Greg Laswell – Three Flights From Alto Nido – 04 Comes & Goes (In Waves)
There have been entirely too few random bits posted here lately, so here's an IM conversation from yesterday... Jeffrey says (05:34): you're up kind of late... Jeffrey says (05:35): unless your computers are LIEING Matt says (13:31): or up early but more likely is that my computer is full of lies Matt says (14:10): but you are idle remember Jeffrey... idle messenger clients are the Devil's beowulf cluster Matt says (14:11): Now the devil has a better SETI@home score than Jesus, are you happy now Jeffrey?
Now playing: Stars – In Our Bedroom After the War – 10 Bitches in Tokyo
DasBlog 2.3 is out! Upgrading took longer than it should have...probably because I did a bad job of separating the application from my SharePoint migration customizations last year. But that’s been fixed, and upgrading from my custom build of 2.1+ to 2.3 went pretty smoothly. In case I accidentally delete the files I saved these changes off into (again), here are my customizations: - ~/web.config (I actually just copied & reused my existing web.config file, but this is the big change*):
<system.webServer>
...
<security>
<requestFiltering>
<hiddenSegments applyToWebDAV="true">
<add segment="siteConfig" />
</hiddenSegments>
</requestFiltering>
</security>
...
</system.webServer>
- ~/siteConfig/site.config (these are in addition to the regular ones that have to be performed, like site title, notification address, root url, etc.):
<!-- CUSTOMIZATIONS: -->
<DisplayTimeZoneIndex>90</DisplayTimeZoneIndex>
<AdjustDisplayTimeZone>false</AdjustDisplayTimeZone>
<ContentDir>~/App_Data/content/</ContentDir>
<LogDir>~/App_Data/logs/</LogDir>
<BinariesDir>~/attachments/</BinariesDir>
<ProfilesDir>~/App_Data/profiles/</ProfilesDir>
<SmtpServer>localhost</SmtpServer>
<EnableSmtpAuthentication>false</EnableSmtpAuthentication>
<CommentsRequireApproval>true</CommentsRequireApproval>
<!-- END OF CUSTOMIZATIONS—>
Other customizations:
- Backup from old installation and restore to new install:
- ~/siteConfig/blogroll.opml
- ~/siteConfig/navigatorLinks.xml
- ~/siteConfig/siteSecurity.config
- ~/App_Data
- ~/attachments
- Change ACL on ~/siteConfig to grant NETWORK SERVICE modify access (ACL's on App_Data and attachments should be retained when backed up & restored; if not, grant this access to those directories too)
* I run dasBlog on IIS7, so my web.config file is actually quite a bit different than the one that ships with dasBlog. But those differences (other than the one highlighted above) were created by migrating the existing config file.
Now playing: Emm Gryner – Goddess – 07 Match
So...I switched over from SharePoint to dasBlog as the blog engine on the site. This means that the RSS feed URL has changed. The old ones should all still work, courtesy of the magic of 301 redirects, but still, everyone likes to be up-to-date, right? The new URL for the main site feed is: http://www.ntldr.com/SyndicationService.asmx/GetRss Now Playing: Lightning Dust – Lightning Dust – 01 Listened On
In response to this post, yes, you actually can "run" PowerShell on Windows 2000. No, there is no out of the box way for it to run. No, it's not supported in the slightest. I'm not even sure it's technically legal (haven't read that Windows EULA in a long time). And even when it is running, there are likely to be things that don't work. That said, here's how to get Windows PowerShell v1.0 to run on Windows 2000. What you will need Creating the installer (on Windows XP) - Install the .NET Framework 2.0 SDK. You'll need a specific tool from it, and it's easier to just install the SDK and grab the tool than it is to try and extract it somehow.
- Extract KB926139 (run 'WindowsXP-KB926139-v2-x86-ENU.exe /extract').
- Make a copy of the 'powershell.exe' file that was extracted from KB926139. Now break out your hex editor, a copy of the Portable Executable Format Spec, and modify the header so the Windows 2000 loader will actually run the image. Or just use your hex editor to modify the byte beginning at offset 0x00000132 in 'powershell.exe' so it is 0x00 instead of 0x01 (Windows 2000 is version 05.00, not 05.01).
- Read the 'update\update.inf' file extracted from KB926139. This plain text file contains the instructions on how to install PowerShell on Windows XP, so all that's needed is for them to be duplicated on Windows 2000 (batch/reg files? windows scripting host? whatever you want!).
- 'PSCustomSetupUtil.exe /install' doesn't seem to actually work on Windows 2000. So use a combination of 'InstallUtil.exe' from the .NET Framework and 'GacUtil.exe' from the .NET Framework SDK (this tool is the entire reason the .NET Framework SDK is needed).
Installation (on Windows 2000) - Install the .NET Framework 2.0
- Follow the instructions in update.inf from the extracted KB926139 to install.
- Remember to substitute 'installutil.exe' and 'gacutil.exe' for usages of 'pscustomsetuputil.exe /install'.
- Replace the official version of powershell.exe with the one containing a modified header.
- Maybe create a shortcut and define console window appearance settings.
For the lazy: all scripted up I've gone ahead and deciphered the update.inf file, so if you're feeling lazy, just download this file and follow these instructions. Note that the included scripts assume that Windows is installed in C:\WINNT. If it's elsewhere, you'll have to modify all the scripts & registry files. - Unzip the 'install package.zip' file you just downloaded.
- Get 'gacutil.exe' and 'gacutil.exe.config' from the .NET Framework SDK. Place them in the NETFXSDK subdirectory of the unzipped install package.
- Get KB926139 and extract it to the KB926139 subdirectory of the unzipped install package.
- Copy 'powershell.exe' from the KB926139 subdirectory into the bin directory. Modify it as in step 3 of "Creating the installer".
- Take the whole install package structure, now with the PowerShell binaries/installer tools, to a Windows 2000 system and run the 'System Setup.cmd' batch file.
- (optional) Run the 'User Setup.js' script to configure the PowerShell window's default settings to match whatever I had on whatever system I was on when I figured all this out (most useful because it enables tab completion, which isn't on by default in 2k, unlike in XP and later).
Now Playing: Basia Bulat – Oh, My Darling – 07 In the Night
First it was the IIS box serving this site, but now it's going to be the whole network that's moving to Windows Server 2008. I'm attempting to go with a complete new forest installation, which will force migrating everything over from the old Server 2003 forest, so that should be interesting. And now, onto the first notes about that experience!
So...here's what's happening: installing a "new" server using Windows Server 2008, making it the first DC in the domain, and then installing Virtual Server 2005 R2 SP1 Enterprise (okay, can that name get any longer?!) without installing IIS. And it's the Core version of Server 2008, so everything is via the command line. After having worked on it for the better part of today, I'm now sitting here wondering why the heck anyone would use Core. I mean, if I wanted a command line only interface, I'd just use BSD or Linux!
For future reference here are a couple of things:
Useful commands:
pnputil -i -a <inf> (install device drivers (I think...I haven't confirmed if this actually installed them yet))
cscript %systemroot%\system32\scregedit.wsf /au 4 (Enable automatic updates)
cscript %systemroot%\system32\scregedit.wsf /ar 0 (Enable Terminal Services)
cscript %systemroot%\system32\scregedit.wsf /im 1 (Enable remote IPSec management)
netsh interface ipv4 show interface (get the list of names for use in other netsh commands)
Feldspar:
netsh interface ipv4 set address name=2 source=static address=10.0.1.9 mask=255.0.0.0 gateway=10.0.0.1
netsh interface ipv4 set address name=3 source=static address=10.0.1.10 mask=255.0.0.0 gateway=10.0.0.1
netsh interface ipv4 add dnsserver name=2 address=10.0.1.9 index=1
netsh interface ipv4 add dnsserver name=3 address=10.0.1.10 index=1
Useful links:
http://blogs.technet.com/shinsley/archive/2007/04/19/windows-server-longhorn-server-core.aspx
http://blogs.technet.com/server_core/archive/2008/04/16/reducing-the-server-core-disk-footprint.aspx
http://support.microsoft.com/kb/890893/en-us
Panel: To Share or Not to Share
- Sharing is broken across regions (regions get approved/filed at different times, which complicates implementing changes)
- Some people apparently just don't use regions: they emulate it all with the formulas and lots of tables
- But sharing makes development faster (at the cost of more complex maintenance)
- My thought: perhaps sharing would be more useful if really break down everything into small components that wont change
- What actually gets shared depends, as always, on business requirements
Break:
I thought I should take some pictures of the resort that the conference was at.
Loews-Ventana Canyon Resort lobby entrance.
Pond at the Loews-Ventana Canyon Resort. Yes, this is in the desert. It makes me wonder what happens when there's a real drought...
Golf course at the Loews-Ventana Canyon Resort. Plus a little bit of the pond they have that spills over in a pretty water feature into a lower pond. Although that part shows up more as the water just ending in a sharp edge.
"X"ML Marks the Spot ~ Utilizing Ratabase XML
- Presented by Serge Décoeur
- Overview of XML (if you don't know this, umm...learn it?)
- Ratabase XML schema: 'RBGeneric.xsd'
- New with v.5.0
- Fields:
- General fields := input fields
- Accumulator, Parameter fields := output fields
- Global fields SHOULD NOT be passed in
- Optional FLD attributes MOSTLY used by test tool
- Arrays also handled differently
- We've coded formulas to handle NoMatch errors - we just keep on processing
- Uppercasing everything "performs better"
- Extension stuff sounds interesting
- Not passed to calculator, so more efficient data pass through mechanism?
- Exclude attribute lets Nodes not be passed to the calculator
- API doesn't drive calls at all
- your "LobAdapter" would do it
- so we'd still have the web service, it just eliminates block specific stuff in it (replace with the XML API)
Wynsure Solution Overview
- Platform portfolio of products
- "Synergy Solutions" : partner with other solutions (non-CGI)
- CGI implements, supports, does it ALL for these apps
- Highly component based (good), but single sourced (bad)
- .NET version is "a lot faster" than the Java version
- Actually written by Wyd (in Minneapolis)?!
- Does Property & Casualty and Life
- Adding:
- reflexive questioning
- acord support
Finding the Proven Trail - Upgrading from Prior Versions
- Summary: v4.0 → v4.2 → v5.01
- Presented by John Barlow
- Upgrade Production before Product Builder
- Need Full distro to get to v5.01
- Product Builder
- v4.0 → v4.2
- Create Archive DB (.sql or DB2 script)
- Archive stuff is optional - can enable archive stuff AFTER 5.0 update
- Calculator doesn't really get updated with 4.2
- Note: Liberty firewall prevents us from getting FTP access
- v4.2 → v5.0
- SQL script (or DB2 batch file)
- Run security update
- Update Product Builder database ID
- Production
- Update DB's (further instructions)
- Install v5.01 following instructions
- (No complex upgrade steps)
- v5.0
- Additional date validator changes
- adapter change
- "Feel free to contact help desk"
Exploring the Desert Landscape ~ Desert Jeep Tour
Now playing: Sam Roberts – Love at the End of the World – Them Kids
Welcome event
- CGI has a number of different apps - it's not just Ratabase!
- CGI is BIG! ~26 000 employees and growing
Introduction:
- Begins with Clients introducing themselves & how they use Ratabase. We (LNW) run the Ratabase calculator on Unix with a DB2 backend and IBM WebSphere app server interfacing to the calculator via JNI
- Some use Ratabase for Underwriting Rules (probably a bad idea, but meh...)
- Mike (of Chubb) is interested in decoupling & using SOA (so, might want to talk to him, since we do that at LNW)
- Geico people say they're on v5.0 (so, might want to talk to them about migration)
- Liberty International uses it with Specialty Lines (there's other parts of Liberty that use it? <sarcasm>who'd have guessed?</sarcasm>)
- <something> going to .NET
- Traveller's looking for WC Anniversary Rating advice (sounds like they need to talk to Deb...we've already dealt with this problem space)
- Erie Insurance implies that the Report Tool can be used to verify the TRN files in multiple environments (might prove useful if we have sync problems between any of our 5 environments).
- And ends with various awards being handed out
Panel discussion:
- Notes taken but not really coherent. Mostly questions about the direction of rating stuff in the insurance industry (so I didn't follow too well, and stopped even trying to take notes half way through).
Distribution ("What to Pack"): Santa Rita room, 13:00
- You need a Workflow!
- Starts in Product Builder (sounds like distribution isn't such a big deal for us because it's just Deb doing Ratabase right now)
- SHOULD use Product Builder's data statuses
- Can't (yet) do distribution by date
- "Status is just a checklist" - it doesn't affect operations
- 'Ready to File' locks data down to read-only
- 'Filed' is not reversible! (except when it is)
- Date changes can be done on 'User Filed' items (date change utility)
- v5.0 allows more test distributions: distribute while recalled so can test recalled changes
- General Distribution: redistribute everything
- Sounds like what I think we do now
- Maybe for fixes we could go with Specific Element
- What type of distribution are we doing?
- Production or Test?(T*.trn == Test)
- Loader is stricter with Production target
- "Distribution Drawer" in Product Builder stores distribution definitions
- We should keep a log of distributed data
- Production TRN distribution: D*.trn
- With general distribution, don't have to worry about missing file loads
- Drawer allows recreation of a TRN
- Unless filings have been shredded
- Or dates changed - GETADDR error
- Also, it creates a new sequence number (to allow rbdload to load the file)
- Owner-sharer relationships can be tricky
- Don't want owner distributed? Out of luck if sharer used it & gets distributed.
- v5.0:
- Distribution files have changed
- Can run reports on production databases to get build info
- Adds TRN file sequence/version number to database!
- We can read the sequence number & output version automatically!
- Filings shredded in Product Builder but distributed will only be removed by using RBDelete – loading/reloading will not remove them.
- Archive utility also exists to pull things off production databases too
- When dealing with Owner-Sharer relationships, Product Builder actually does duplicate the data, but it also keeps track of what the relationships WOULD BE
- Sharing data doesn't actually exist in the production DB, it's just relationships based on OID's
- Shredding may be needed to break sharing relationships (for us this "future" is when we move to User Filing)
- Date Changes need to be done after shredding & recreation
- because dates are used in the object mapping (if OID changes)
- dates are also used to pick filings
- TRN Loader matches on OID || all other fields
- If the table structure changes, Originators (owners) need to be put in first
- Auditing is only done on user filed data
- So we don't have any auditing support now?!
- Recall Distribution must be done after recall & before any future distributions
- Different regions wont get caught with sequence errors on load (sequence numbers don't have to be increasing across regions, just within a region)
Interactive Discussion
- Characteristics of good Ratabase programmer/analyst/whatever (people that work with Ratabase/Product Builder)
- Team Player: needs to bridge IT & biz users
- Problem solver
- Analytical (LM PM VP said the economics majors worked out better than others)
- Attention to detail!
- Some use Actuarial to do Ratabase because they make the rate changes anyway (I think we technically do this, at least if you look at the titles & reporting structures)
- Some use Consumer Affairs because of their understanding of the regulations and mediation of dealings with regulators
- But you don't need a CPCU
- Need to understand the Product though
- Maybe only really need some biz knowledgeable users; not everyone needs to know it to code it.
- Really need people who understand Formulas & Math
- Must play well with others ("Participants are all in Partnerships")
- Some projects helped by strong leads/PM
- Colocating can be very helpful too
- Can't separate IT & Biz that much; Ratabase is in between both worlds
Client Product Forum
- Apparently they have this conference call every quarter to discuss how people feel about Ratabase
- Kind of a User Group for Ratabase
- Gives CGI feedback for future plans/support options
- v.5.0: Need to upgrade from v.4.2
- v.5.01: Need to upgrade from v.5.0
- Better Testing
- Added XML API
- Allows arbitrary NoMatch entries (indices in Item blocks don't need to be pre-allocated)
- FTP into site to get the Full distro (direct from v.4.2 to v.5.01)
- v.6.0 is in progress
- .NET native app!
- can now sort columns of data by clicking on the column
- Filing groups
- Can now view formulas graphically (WPF maybe?)
- Will be able to re-rate within calls (so we could conceivably do 1 call with multiple passes)
- XML data API expanded to encompass Data Validation
- Listening to what other people say, it sounds like a lot of companies have bad practices:
- Passing data through Ratabase
- Not tracking changes
- Making Ratabase take on roles it wasn't designed for:
- Why would one have thousands & thousands of tables!?
- Maybe we should adopt a naming practice for input fields
- Assuming they're actually different than the ones marked as Input in the database (no, you aren't supposed to be mucking around inside the database to figure things out...)
- Liberty Mutual Personal Markets needs >15 digit numbers (trillions)
- XML test cases for testing tool might be good
Now playing: Veda Hille – the riot life – lucklucky
I'd forgotten my SD card reader doesn't handle SDHC cards. So I have to copy the all off my USB camera connection (thank you Ryan for that Belkin traveler's cable kit!). Fortunately, that doesn't take that long if I put the files locally instead of uploading them through a 100Kbps connection back to my file servers.
Not much happened today except for checking into the room and picking up my name badge. Didn't stay long at the reception (didn't know anyone there, so it was a little awkward). Ended up driving out to the Tucson Airport just to get away & relax/calm down a bit. Plus, now I know how to get there if I need to take people when everyone leaves on Wednesday.
Anyway, to make up for the lack of real progress, there are pictures!

Saguaro Lake (west end, looking east: NF-206 off N Bush Hwy (according to my map))
Grandpa (Bertil Peterson), Grandma (Joyce Peterson), & Me (Jeffrey Stults, Jr.)
Superstition Mountain (from US 60)
Catalina Mountains (I think), viewed from the north-ish on Arizona 77/79.
Some creek/river in Catalina State Park. Unfortunately, even the park map I got at the park fails to mention what its name is.
The same hydrological feature in Catalina Start Park. Only this time, from inside Romero Canyon.
And once again with the water...I mean, it is the desert after all, so water like this is kind of rare. Looking up the "canyon" in this shot.
Hills/mountains at Catalina State Park. Apparently, there are trails if one wished to hike all the way up to the top.
Arizona desert (Catalina State Park again).
Looking the other direction from the view out across the desert yields a site like above.
And some obligatory cactus photos:
Now playing: Josh Ritter – The Animal Years – 09 Best for the Best
9:45 :
Finally made it through security at PDX. That has to be the longest it's taken me to get through security here at PDX. It was shorter at Christmas & Thanksgiving even! Maybe it's just the flight time...
Currently looks like the flight is on time, and everything has been confirmed. So, all set to take off! (well, except the airplane isn't here yet, and isn't supposed to be here for another hour and a half)
Bit of background for those not-in-the-know: CGI makes software products for insurance companies (they do other things too), specifically a product called Ratabase. We use it at work to do, well, worker's compensation insurance rating. CGI is having a conference on their rating & other products in Tucson, AZ from March 30 - April 2. And I'm going to be there.
But first I'm flying into Phoenix and visiting my grandparents in Apache Junction. Which should now happen in ~1.5 hours.
6:00 :
Plane landed fine, took wrong shuttle to rental cars & ended up in the west parking lot. Took shuttle back to terminal, got on correct shuttle to rental cars. Got rental car, got talked into taking a full size car (hopefully that wont cause any problems on the expense reporting). Picked a 2009 Nissan Altima because, well, it was brand new. And I think the car looks good. After having driven it, don't really care for it too much. I mean, it's not a terrible car, but I think there are definitely better cars in its class available. Or at least, there were available 9 years ago when my Stratus came out ;).
Got to my grandparent's trailer in Apache Junction & have had fun just hanging out with them.
(note: not actually posted at 4:00 Saturday because of no Internet connection).
Sorry for a bit more downtime (well, 13 minutes to be more precise). Switched the site over to the release version of Windows Server 2008 (Windows Web Server 2008 x86).
Overall, pretty painless...just install Windows, install the Web Server role, enable a bunch of Role Services, then add a few Features (like Windows PowerShell). Finally, install Windows SharePoint Services 3.0 SP1 & do a minimal amount of configuration using the Central Admin tool. Create a dummy site, then go over to the existing standalone server, change my internal DNS settings, kick off the site backup, and then kick off the site restore on the new server. By the time the DNS changes had replicated, everything was done.
Except I forgot the HTTP SPN again, and so had to set that and change the ISA configuration to point to sharepoint4 instead of sharepoint3. Oh, and I fixed the SSL stuff, so https://www.ntldr.com/ will now work (assuming you've installed & trust my root CA).
Now playing: Pete Samples – Yours Makes Mine – 04 Between Exhales
Some amusing links… (at least, I found them amusing, even though I don't use Ruby.) In particular, I liked the Java one, especially since I was dealing with a Spring idiosyncrasy at the time my PM pointed me to these…
Rails vs. Java
Rails vs. PHP
Rails vs. PHP
Rails vs. PHP
Rails vs. .NET
Now playing: Terra Naomi – Say It's Possible (Single) – Say It's Possible
For some reason I can never actually find these sites when I need them, and that always happens when I'm away from one of my computers. So here's a few links so that I can actually find this stuff when I need it.
KB917021: Description of the Wireless Client Update for Windows XP with Service Pack 2: Support article pointing to the hotfix needed to add WPA2 support to Windows XP (I sometimes support XP people (still), despite my vowing not to as soon as I switched over to Vista, okay?).
Comparison of different SQL implementations: REALLY useful article comparing SQL with PostgreSQL, DB2, SQL Server, MySQL, and Oracle implementations. I find it mostly useful for figuring out the differences between implementations so that I can get a basic operation to work on DB2 or Oracle (I'm most familiar with SQL Server).
Result Sets from Stored Procedures In Oracle: For some reason I can NEVER remember how to return query results from SPROC's on Oracle. Go figure.
Well, I think of it as old news by now, but apparently most of the people I know weren't paying much attention to it, so here's a link to Microsoft Surface. Go check it out; it's seriously cool and neat and probably way too expensive for me to even consider getting.
New beta versions of Windows Live Mail, Windows Live Messenger, and Windows Live Writer were released this week. This post has actually been written using WLW, so we'll see if it actually shows up on the site... So far I like all the products, but don't really notice any big functional advances in the WLM and WLM products (okay, so now I guess I wont be able to refer to Windows Live Messenger as "WLM" anymore). WLW added SharePoint support, and overall seems to be a bit nicer than using Word 2007 to blog with.
I finally got the new video card yesterday. It's passively cooled, so no annoying fan noise, but it screwed up airflow in the case. The temperatures here in Portland have been rather warm lately, so heat + no more airflow = components overheating. Which meant I had to plug the case fan back in, thus making the computer noisy again. It's still quieter than the system + old video card were, and I've got DirectX 10 support now (even if the GeForce 8600GT is slower than the previous generation 7600GT I had in there before), so I'm calling it a win.
Just two more days until I start my new job...time to start getting nervous!

Tonight I installed Windows Vista Business Edition on my HP Compaq TC1000. I was surprised at how good the install went; it didn't really take that much time at all (45 minutes or so). The only difficult part of the whole process was getting the FinePoint digitizer drivers installed. And the performance isn't that good (although it has been getting better in the last few hours).
Update 2007-02-23: It looks like this isn't really a permanent way to get the digitizer working, since there's been a report of the procedure not working for someone else, and it appears that even when it does work, it breaks after a few reboots.
So, to get the digitizer to work: 1) I can only seem to get it to work with the Standard VGA Driver. 2) I have no idea if this works as a long term solution (for example, changing display drivers seems to break it).
- Download the FinePoint generic FPI2004 driver for Windows Vista (available from Gateway as the driver for the digitizer in the CX210's).
- Extract the install files (the Gateway driver was a self extracting zip file that took care of this).
- Start up Device Manager and identify the FinePoint digitizer. For me the PNP device ID was "ACPI\FPI2002".
- Force the generic driver for the newer digitizer to install, then reboot.
- At this point the digitizer should be all screwed up. Download the digitizer driver from HP.
- Try and run the HP driver setup program. For me it failed, but got the drivers extracted. Using the Windows XP SP2 compatibility mode should help.
- After it fails, find the extracted files (should be C:\Compaq\FinePoint by default). Run the setup.exe program that's there in Windows XP SP2 compatibility mode.
- Press the install button that comes up. After a bit, that should fail with a "Service could not start" error.
- Reboot, and the digitizer should now work. It probably really needs to be calibrated though.
The buttons were easier: I just grabbed the TC1100 button driver, extracted that, then manually installed the drivers using Device Manager. I've heard there are problems using the wireless, but for me that wasn't an issue because I've replaced the original wireless with an Intel 2200BG card (built-in drivers! Yay!). The last thing I need to get working is Rotation support, but everything I've tried either doesn't work or breaks the digitizer hack L.
I think I've begun to overuse it though... Today I ran into the problem of "how do you spell that name again?" while trying to write an email. The obvious things of "use the address book" and "remember it you idiot!" failed, and the outlook for successful addressing of the message was bleak. But then I remembered my trusty PSH! It was so simple!
get-adusers | where-object {$_.sn -match ".*jack.*"} | select-object givenName,distinguishedName
Gotta love PSH... (of course, it helped that I had the get-adusers function, which I wrote a while ago and have stashed in my profile).
Oh, and for those that are interested, the here's get-adusers (along with a few other AD functions that are very similar):
function global:get-adusers { param( [string] $domain = (get-wmiobject -namespace 'root\CIMV2' -class 'Win32_ComputerSystem').Domain ) return (get-adobject -domain $domain -filter '(&(objectClass=user)(!(objectClass=computer)))') }
function global:get-adcomputers { param( [string] $domain = $((get-wmiobject -namespace 'root\CIMV2' -class 'Win32_ComputerSystem').Domain) ) return (get-adobject -domain $domain -filter '(objectClass=computer)') }
function global:get-adprinters { param( [string] $domain = $((get-wmiobject -namespace 'root\CIMV2' -class 'Win32_ComputerSystem').Domain) ) return (get-adobject -domain $domain -filter '(objectClass=printQueue)') }
function global:get-adobject { param( [string] $domain = (get-wmiobject -namespace 'root\CIMV2' -class 'Win32_ComputerSystem').Domain, [string] $filter = '' ) $local:directory = new-object -TypeName 'System.DirectoryServices.DirectorySearcher' -ArgumentList $domain $directory.PageSize = 500 $directory.Filter = $filter $matches = $directory.FindAll() $local:d = new-object -TypeName 'System.Collections.ArrayList' foreach($m in $matches) { $d.Add($m.GetDirectoryEntry()) | out-null } return $d.ToArray() }
In light of the recent Activation news for the Volume License versions of Vista, and the news that Windows Vista will stop working if it suspects a licensing violation, it looks like I probably wont be able to afford Windows Vista. At least, I wont be able to if I follow my current process of reinstalling every few weeks. Oh well, it's not like there's that many new features anyway…just updates to the kernel, the new audio system, new video system, new networking system, the Desktop Window Manager, full IPv6 support, Aero, search folders, UAC (a feature I LOVE, regardless of what everyone says), the new Offline Files mechanism (now that it works, unlike all of the pre-beta 2 builds), more granular power management controls, group policy control of power settings (!), the Sidebar (fine, I admit it, the ability to have multiple clocks and the weather constantly off to the side in a nice, subtle manner finally won me over), updated take on the Media Center interface, pen flicks for Tablet PC's, Mahjong and Chess as built-in games, the new, learning, recognizers for Ink on Tablet PC's, and the cleaned up login screen with user icons that work even in domain environments. Oh, and what really has me won over:

Yes, that is my Windows Vista desktop with sidebar, glass, and animated background.
Well, it's done for a bit. You can check out www.ntldr.com for the final results. Cool eh?
Go check it out. NOW!
Ok, so maybe you aren't quite as sarcastic as I am: no, you aren't really meant to see anything there. Because basically, WSS 3.0 isn't a smooth migration path. Sure, it SEEMS like it will be when the installer first runs...but then things just didn't work. The current state is actually the BEST I've been able to do so far.
So, I'm going to go back to the drawing board for a while and install a clean server, put WSS 3.0 on it and poke, prod, slice, dice, hang, bang, and beat on it until WSS 3.0 gives up every last one of its secrets of operation.
Needless to say, that much torture requires a bit of time as well, so don't expect too many updates on that front.
Today's lesson is How Not To (try and) Flash Your BIOS Using Your Digital Camera Because You Loaned Your Universal Magic Disk With BIOS Flashing Capabilities To Someone Who Then Left The Country.
The lesson title is the lesson. End of Field.
My patience finally outweighed my ignorance of the process, so I got my wireless working. And now everyone is laughing at me, because all they had to do was run down to the local electronics store, grab a router, maybe pay for it too (hey, I wont ask questions about how you got your gear...), and plug it in.
I've put in something like 14 hours getting my new wireless configuration to work.
As I said, laugh away...because I shall have the last laugh!
Old wireless config:
Microsoft MN-500 with a patch cable running from one of the switch ports to the "WLAN00" NIC in the ISA Server. ISA.WLAN00.IP = 192.168.2.254. AP.IP = 192.168.2.1, with DHCP server stuff running on the AP, so clients got 192.168.2.x/24. To connect to the wireless network, all the client had to have was the WEP key. And then they could connect to the wonderful network...and do nothing. See, the ruleset for ISA.WLAN00 looked something like this: "Deny all". To actually do something while on wireless, the client had to VPN into 192.168.2.254 (remember, no DNS working, since the AP just forwarded requests to la-la land), at which point they were treated like any other VPN client.
Secure? yeah, mostly. Terribly useable? no. Drags my TC1000 to a standstill for hours at a time? you bet!
And now you're perhaps not laughing at me as hard as you were at the beginning. Well, at least not for having spent so much time on it. You're still probably rolling on the floor over my paranoia.
New wireless config:
DC running IAS (RADIUS server).
ISA with a route rule for Internal and Wireless, and a "Allow All" firewall rule between Internal and Wireless (note that this will change now that I've proved the damn thing can even work).
Linksys WRT54GL flashed with ewrt-0.4 ( http://www.portless.net/menu/ewrt/), configured for WPA2, AES, and RADIUS back to the DC. Again, there's a patch cable running from br0 back to ISA.WLAN00. IP's and subnets have changed, but that's no big deal (okay, so it WAS a HUGE deal when I was sitting there bricking WRT54's, but now it's mostly a moot point).
To connect, if the client is Windows Vista, I just turn the wireless on and BAM it's like "I love you guy-who-turned-my-wireless-on! I know how to connect to this network! You're connected!". If the client is Windows XP it sits there and complains to me that the computer hasn't been connected into the domain for months, and it's certificates have expired, and the autoenrollment agent can't find the certificate authority, and just generally gives up and decides to go off into a corner and sulk. But after you figure out how to get Windows XP to renew certificates, the same certificates it needs for IPSec so it can communicate with the CA (hurray for chicken and egg problems), and you actually somehow get those certificates renewed, everything works great!
Well, everything goes great until the wireless clients go to connect to the internet and you find out how stupid these little router boxes really are. And you find out how stupid you are for having forgotten that you need some ISA rules so that traffic can go from Wireless to External.
But, at the moment, everything appears to be working nicely. And so I have my last laugh! Haha!
(If anyone wants me to do a more detailed write-up of this stuff, just leave a few comments to that effect).
I recognize that spam is a big problem on the Internet. At work, I'm responsible for manually reviewing all the messages that the server filters catch (propose idea of filtering | boss paranoid about losing important messages | lowest cost employee → me). And I can tell you it's no fun going through thousands of drug, sex, phishing, and pirated media messages each week (just to find that someone's subscription to "Headline News" got caught this week…). Although, if you're feeling particularly humane this week, and just really want to help those Nigerians get that cash out of the country, just drop me a line and I can see about hooking you up with plenty of addresses to contact…
Anyway, I KNOW that spam is a problem. But I still think it's kinda extreme to just block all DHCP addresses. Especially when there's no way for someone to get off the list. Which is exactly what SORBS does. Oh, and to top it off they make you go through one of those CAPTCHA things that's hard as hell for a human to read, but trivially beatable using AI techniques, to even find that that's the reason you've been getting NDR's for the last 2 days on all the messages from friends that you've been replying to!
So I got to spent hours fiddling around with Smart Host settings & DNS entries, then another hour to confirm that things at least looked like they were working securely.
On the bright side, it does look like the ridiculously complicated and convoluted method is actually working, so look forward to getting emails back from me in the future instead of sitting in the dark for a couple of weeks.
(sorry to everyone who emailed me and expected replies during the last 1.5 months)
Today's "DUH! I'M AN IDIOT!" award goes to...me. Yay, I won something.
I get it for not putting the /* on the end of the path I was trying to publish with ISA. The /extranet.aspx links should now work. The funny thing is I forgot it despite there being other paths published in the same rule that correctly had the /* at the end. So, basically, if I had just like, looked at the screen maybe, I should have seen the problem immediately.
Follow the two links in the post...
Context update: this was one of the fun things I found during OS's today, thus proving (again) that having PowerPoint slides available for a class leads to decreased attention.
The PKI system I have on my computers has been upgraded: it now has 1 working smart card that I'm using for testing & evaluation!
The smart card is an Axalto Cryptoflex 32k e-gate. The certificate server is Windows Server 2003 Certificate Services. The client is straight Windows XP SP2 (no additional Axalto CSP, so I had to use their Personalization tool to format it for Windows 2000 compatibility).
Now, there was one tiny problem I've run into. When trying to request a new certificate using certmgr.msc, it would always generate the error "Certificate request could not complete. The specified user was not found." (or something along those lines). After combing the event logs, doing a number of web searches, and examining every nook and cranny of the Certificate Process, I found the solution.
It turns out the user requesting the certificate can't be logged in using the UPN ( username@domain). You have to login using the domain username, password, domain format.
At work we bought two new servers to replace our 5-6 year old DC's. I got most of the OS installed last weekend, and got the go ahead today to bring one of them up as a DC in the domain.
So I ran dcpromo.exe, walked through the wizard, and let it do its thing. After 5 minutes or so, it failed, saying the schema was out of date and needed to be updated. Which was funny, because its a Windows Server 2003 SP1 domain, and I thought that Windows Server 2003 R2 was the same core OS as 2003 SP1. Well, it turns out that atleast the AD components in R2 are newer (to support the Federation Services? or maybe the Integrated Unix Authentication?).
However, running adprep.exe from Disc 1 didn't help, since it kept saying the schema was up to date.
Well, it turns out there's ANOTHER adprep.exe that has to be run. It's located on DISC 2 under the \CMPNTS\R2\ADPREP folder. So, "adprep.exe /forestmode" (and, curiously, "adprep.exe /domainprep /gpprep", for our domain) needs to be executed before dcpromo will work.
Next time, I'll try looking at the docs before doing something I've done dozens of times before...
Well, I got IPSEC to work. Finally. Actually, it only took about a week...there just happened to be this thing called "winter break" and "classes start again" immediately after I got everything working.
So, how did I manage to do it?
- Use certificate authentication, not Kerberos.
- Disable the "map certificates to accounts" setting, otherwise it seems a UNencrypted connection to a DC is needed, just like with Kerberos.
- Somehow keep all the computers you're trying to configure from locking while you're in the middle of setting everything up, because it's likely that if that happens, and you have applied the MS Windows Server 2003 Security Guide recommendations, then you'll be screwed and unable to access the server you're in the middle of configuring. Yes, this happened to me, and no, I never want to go through that experience again.
- Become familiar with "net stop policyagent", as it can save you when things get screwed up. Basically, it turns off IPSEC enforcement/usage, allowing the computer to communicate with the DC (maybe).
- If you see someone like MS doing something with IPSEC, like exempt DC's & DNS servers from policy, PAY ATTENTION. THERE IS A REASON THEY DID THAT. Whatever you do, don't think you're smarter than the people who wrote those papers, especially since their implementation actually works.
So, those are my tips on how to get it working with Windows Server 2003 SP1 and Windows XP SP2. Anyone else got any advice?
You may have noticed the site being up & down (mostly down though) for the last week and a half. Site performance has also decreased now that it's back up.
This is because IPSec is the worst thing EVER. And I mean that. Literally.
IPSec sits in the low level of the OSI stack and provides encryption and authentication for IP. So it can do things like have every TCP packet from the Internet encrypted using 3DES, with the sender and reciever authenticating to each other over Kerberos. So far, so good. Sounds like a wonderful technology: all you have to worry about are IP spoofing, hardware hacking, and Layer 1 (like ARP poisoning) attacks. Everything above that stuff is always encrypted and always authenticated.
Except, it turns out to be incredibly hard to actually use. Sure, it starts simple enough: assign one of the predefined policies that sounds like it's the correct choice, like "Client" or "Require Security". But then you apply that setting...and find out you can't log into the computer anymore, can't get the computer to recognize that you've fixed the policy so that you could actually login, and then find out you can't actually pull the broken policy off because the IPSEC driver has now gone into BLOCK mode, and is denying every attempt to connect.
Even worse is what happened to me. It seemed to work fine for the servers for a day or two. Then they started having those problems. Even more confusing, they'd do this when configured to use Certificate based authentication.
Even more frustrating is that I have the PolicyAgent ("IPSec Services") startup controlled via GPO's. So when I finally did manage to get the service stopped and everything talking once again, the next GP application came around and fired it right back up. While the console was locked. With the "Require Domain Controller authorization to unlock workstation" setting enabled.
Oh, and this is all happening during finals week (well, actually, it started the week before finals; it just took me a while to notice).
Understand why IPSec is the worst thing ever?
Primarily, this is a post about RSS. You see, there's only one subscriber to the RSS feeds that are in all those tabs to the right (on the v5 site...which is the one that's available when this post is being written). And there should be more!\
But first, a digression into ECE: the lab practical today was just meh. It was a simple enough task, but the infernal contraption just wouldn't work for me! So I ran out of time, and the TA came over to grade what I had, and all of a sudden it mostly started working (I had pulled out the Asynch Reset so I could debug it). So I got a 9/10. Which is good, but the amount of frustration was...even more frustrating.
Back to RSS. It's just another XML format (kind of like most web pages are just the XHTML XML format). However, there are these cool things called RSS Readers that can Subscribe to an RSS Feed (the XML file containing RSS). When a feed (to use the simplified parlance of bloggers - people who author a Web Log, like the one that you're reading right now) is subscribed to, the RSS Reader will automatically check the feed for updates and display those to the user in whatever manner. So subscribing to one of the RSS feeds on this site would mean you'd never have to manually come and visit it to see what's new: the Reader would take care of that for you.
I recommend that you check RSS out and see what it can do for you (like on this site). I use RSS A LOT. I'm subscribed to a lot of RSS feeds (not just blogs - change logs & "new releases" are things I've found to be condusive to use as RSS items). And now onto a little problem I have...
Now, there are a wide variety of RSS Readers. You have web based ones, like Start, live.com, Google Reader (I know Google has one at least), and a wide variety of much more popular sites. There are addons & plugins for existing apps, like Newsgator: Outlook. There are apps that have had Reader capabilities baked in (similar to the plugins), like Mozilla Thunderbird, a couple of Jabber clients, and Microsoft IE7. And then there are the dedicated desktop, rich client RSS Aggregators.
I use the later. Currently, this is RSS Bandit 1.2.117. I started out with SharpReader, but that's waaay too memory intensive, and doesn't look that great in my opinion either. But it lasted me a while. The next client I tried was SauceReader, which looked great, but had even worse resource usage than SharpReader. Finally, I tried RSS Bandit 1.2.114. And that had me hooked: it was specifically designed to not trash system resources. RSS Bandit has served me well for almost a year and a half now.
Development has also continued, lead primarily by Dare Obasanjo ( www.25hoursaday.com). They've had the 1.3 series of versions released for a bit now, and just rolled out a new one. Unfortunately, I have never been able to get the 1.3 versions to work. Between 1.2 and 1.3, they changed some of the UI components, and the new library just does not seem to want to work. So whenever I go to use 1.3, all I get is a blank area where it should be displaying the tree view of the feeds I'm subscribed to. Which means that the program is completely useless, as none of the other sections of the program (post contents & post list for the currently selected feed) get populated. I have seen this problem even on fresh installations of Windows, with just XP SP2 & .NET 1.1 SP1 installed. Obviously everything is working fine for most people, just not for me.
As stated before, I've been running the older version of RSS Bandit because of that issue. However, that solution is becoming increasingly inadequite. A number of the feeds I'm subscribed to use ATOM (as far as end users are concerned, it's the same as RSS...just a different company's take on the whole feed idea), and have recently moved from the 0.3 version to the 1.0 version of the spec. Which means RSS Bandit 1.2 can no longer view them.
So, any recommendations for a new RSS Aggregator? It needs to support ATOM 1.0, podcasting support is not needed, I'd like it to look nice, preferably be a standalone client (although something that acts as an addin to Outlook might also work for me), and ideally be free/cheap.
Thanks!
Taylor's website has comments now. He gets props for being the biggest poster of comments to this site, and he's consistently been the 3rd most frequent user. So go visit his site: www.metasyntax.net
As for this site, here's a summary of the current status of the New Design Project:
- Taylor ran a few perf tests against the test page, and pointed out that the header renders fast, but not the <sharepoint content> area
- I did my own investigating since my Remote Connections to work actually started working (finally)
- It looks like the Perf problem is the <SharePoint:tag/> stuff in the .aspx pages
- Logging in removes all perf problems. So it's either pre-caching stuff for logged in users (low possibility), or something is absolutely killing performance when the Anonymous access maps to NT AUTHORITY\NETWORK SERVICE, and that goes over the wire to SQL Server? Maybe?
I've got a gut feeling as to what's causing that security issue. Not happy with what its telling me right now though.
Oh, and Windows Server 2003 R2 RTM'd yesterday, which was a really cool (in an IT'y sort of way) birthday present from the big M.
(expect more commentary in a few weeks...probably not downtime though, since I don't think I'll be upgrading any existing servers)
Update: 2005-12-07 21:38: Unfortunately, it looks like they forgot to send me the licenses & media to go with this wonderful birthday present...come on MS! You can do better!
Okay, I've put up my sketch and the first basic design work. Comments on the new design idea, and the performance of the test page, would be appreciated. Please note that I think the blue button on the test page is horrible, and needs a lot of work that I don't (yet) know how to do, so if anyone could explain how the to make things glossy & how lighting works in Microsoft Expression codename 'Acrylic' (October 2005 CTP)...
Sketch
Sketch (original InkArt file)
Test Page
Test Page (version that doesn't work with SharePoint, grrrr)
There is a new site design coming soon!
Since break is almost upon us, I've begun to think about possible revisions to the site...basically, I'm looking at scrapping the current design and going to something that works better (faster load times, works in non-IE browsers better, is actually finished, and looks cooler).
Some hints of this can be seen already. Like that ugly green bar that's now at the tops of everything... Anyway, I'm going to need YOUR help to do this! So let's get together and do some kick-ass web design! yeah!
Items that need helping:
- JavaScript debugger for IE (recommendations anyone? I'd like to get comments working for everything, and part of that is understanding WHY they even work in IE)
- Graphics/art: I suck at this. Although, by setting my standards low enough, relying on the simple automations graphics packages provide, and doing TONS of stuff by hand (okay, and blatant copying of other people's ideas), I've had results that don't look that bad.
- Firefox testers.
- External testers in general (perf for me is always great...but not so for most people I guess).
- CSS/JavaScript debugging expertise? Not sure if this will end up being a problem...it hasn't been so far...but you never know...
- Anything else I can think of when I get stopped by some hideous deficiency of my character (like spelling).
For those of you not subscribed to my Site News feed (or who never look at that tab), here's the explanation for why the site was down for most of the last week:
Importer's Note: 2006-10-03: That post has not been ported to the new system yet. The link will probably not be updated, so this is basically a dead post.
I had FOUR attempts at this post that got eaten by security-timeout-because-this-has-a-crappy-web-only-interface-for-creating-posts.
CONDENSED, abbreviated version:
Issues can have wierd dependencies and causes.
A few days ago I noticed that Taylor ( http://mysite.verizon.net/taylor_venable/) had a post complaining about the supposed requirements for Windows Vista (the post appears to be gone now...is that permanent Taylor?).
Anyway, I'd like to point out that I can run Windows Vista Beta 1 fine on my pathetic 1.86 Ghz CPU, with 504MB of memory & integrated graphics.
I was going to create a more extensive refutation of these complaints (and I've heard them from a bunch of people other than Taylor), but got lazy, had a little Compilers project to finish, and didn't get around to it. Good for me. The little poster on my wall next to me right now that says "Procrastination: Hard work often pays off after time, but laziness always pays off now." proved true yet again!
An individual (identity is being withheld to protect the innocent, and because the comment was made in a restricted forum) recently left the following comment for me:
May I suggest that you try to get comments to work on your website as your current project?
Now, I didn't actually do any work on this site in the ~5 months that it was offline. None. Nada. Zilch.
So the comment situation is as stands: if you use a supported browser, they work. The set of supported browsers is currently defined as "The browsers Jeffrey uses, with a few older versions that just happen to be compatible." I use IE7. Versions back to 6.0 SP1 are also supported directly, as I occasionally have to use them. But that's not all...you can also go all the way back to IE 5.01 and still have them work.
Honestly, I'd love to get them working for other browsers, like IE Mac, Safari, Firefox, Opera, Mozilla, and telnet. But I just haven't been able to get around to it. If someone else can figure out what's causing comments to not work if those non-supported browsers, and provide me with a fix, I'll be more than happy to try and get them to work. But for now, I'm going to stick with having given up on them.
:( (or , for those Unicode devotees)
Well, downloaded and tried the September 2005 CTP build. It's looking GREAT compared to the last build I looked at (April 2005 CTP?). Couple of "gotchas", but nothing that an hour or so couldn't work around.
New setup is better than previous ones (maybe I've just done it enough now to know what to expect/do). Overall perf seems to be MUCH better right now, but that may change once it actually gets put under more load than just what the "let's bulk attach all the old DB's that I had to upgrade to the June CTP version" action that's currently being performed. Packaging is also improved (no more DVD, just the Servers CD and the Tools CD), making the install go much smoother.
So far the interface has been much stabler, and much more feature complete (heck, there's only 55 days left to launch ;)). Not as sure about core engine enhancements right now, but I'll get a chance to look at those over time. All in all, a nice, stable, worthy successor to SQL Server 2000. I look forward to upgrading to it in a few months.
Last weekend I switched my development system over to Solaris 10 x64, mostly just on a whim. It was...an experience. So far I've been sticking with it though, so I guess I'll see how (long) it goes.
Okay, so Windows Server 2003 SP1 was released Wednesday night. I started my deployment Thursday night, and spent ~8 hours getting my 3 servers installed and working perfectly with it.
Notes on the upgrade:
Well, it actually fixed bugs I had seen! Specifically, the following KB support articles detail the issues resolved:
827991
833734
883944
824905
829082
833708
837117
890477
It's great to see issues that I've encountered actually fixed.
Now, for the issues I ran into. First, using my Exchange server as the first server to install on and try and troubleshoot issues on was a bad idea. Since it takes around a half hour to reboot, the diagnosis of problems, and then the confirmation that the fixes actually worked took A LONG time. About 2/3 of the time I needed for the install was waiting for the actual install process to run, and then rebooting the servers.
I ran into 2 DCOM issues. First, the Exchange Information Store needed to have the permissions on component {9DA0E106-86CE-11D1-8699-00C04FB98036} modified. For some reason, after the upgrade it had no permissions set. Adding SYSTEM with "Local Launch" and "Local Activation" resolved that problem. There was also a DCOM error with a product that I'm beta testing, but that had probably been occurring before the service pack install. My guess is I just didn't notice it until I was trying to figure out why DCOM was generating errors in the event log for Exchange.
The biggest problem I ran into was a result of following the advice/templates from the "Windows Server 2003 Security Guide" from MS. Specifically, one of the recommendations is to use security policy to enforce permissions on services. Well, the original configuration breaks the Windows Time Service, and generated a lot of spurious event log entries. The exact error being generated was about the "local service account failed to logon". It turns out the permissions on the Net Logon service need to be changed from (System:Full; Administrators:Full; INTERACTIVE:Read) to (System:Full; Administrators:Full; INTERACTIVE:Read; NETWORK SERVICE:Read; LOCAL SERVICE:Read). After that change, all the problems pretty much disappeared. Don't know what specifically changed in the service pack to require that change...it just seems kind of obscure.
Hmm...I guess there really were only those two issues. The netlogon one was a bitch to find though (what do you mean it can't login!!! It already IS!!!!! Look at the TCP/IP NetBIOS Helper!).
Monday evening, while doing a last minute look through in OneNote of my CS 251 notes, I noticed that my HP TC1000's pen was behaving a bit sluggishly. I shrugged it off, since there were MUCH more important things at hand.
So I went to ECON 251 the next morning and the pen worked great for 7 seconds or so, then just stopped responding. I tried unscrewing it and making sure the battery and everything was seated properly, then used it successfully for ~20 seconds. This made drawing graphs fun. I tried repeating the procedure, and got the pen to work for really short bursts like that, then just gave up after 15 minutes and went to keyboard only mode.
Now, having a Tablet PC and having to use it ONLY with a keyboard sucks (no mouse...just the keyboard...there's been a history of problems when trying to use the HP keyboard for the last year and a half).
So I scurried back to the dorm, got in my car, and made a trip to "Jeffrey's (un)Authorized HP Parts Warehouse and Service Depot" (aka "home", "parent's house", <address removed to protect the guilty/innocent/undefined>). After much exciting driving (for those not in Indiana, that is an example of "sarcasm"), the 6 miles of road were traversed. And then the real challenge, finding the replacement part amongst the shelf after shelf of other parts (ie, junk), began.
<much adventure skipped because I file stuff away well and found the pen & batteries immediately, but feel free to make up whatever heroic narrative you want and insert it here>
So with the replacement parts in hand, I return to the dorm, insert the new AAAA battery, and the old pen comes right to life. And the Tablet PC is restored to full functionality!
Between me and the internet sits my firewall, MS ISA 2004 SP1 (currently). One of ISA's features is integrated caching (it can also do prefetching and scheduled updates, but I find those features to be more of a pain to manage then they're worth).
Now, caching is a great technology and all, and it can really improve performance, but in the past it's been kind of annoying. Emil (no web site :() runs www.boilerinvasion.org, and so I occasionally try and troubleshoot stuff for him. Except ISA has this annoying habit of caching that site like crazy. Consequently, I'm usually more of a hindrance than a benefit when it comes to debugging/opinionating stuff.
Fortunately, getting BoilerInvasion to work most of the time was fairly easy — just set the site to tell intermediaries to not cache it (I'm not quite sure what performance impact that's had...any comments Emil?).
However, this morning I ran into a wierd bug, which is probably due to caching. When visiting www.weather.gov to get the temperature before going to class, I refreshed the page (it had been left open from when I went to my earlier class). And the infromation didn't change. So I figured it was just IE being wierd and forced a refresh (CTRL+F5), bypassing the IE cache. And then the results were updated, displaying a nice 52° F. Then I hit CTRL+F5 again. And then the results changed back to the earlier values. Wow! It dropped 12° in the space of a refresh!
So I sat there for a minute or so just force refreshing the page, and it kept alternating back and forth.
Cache can be annoying sometimes. (of course now it's working fine).
Note to self: don't configure Group Policies to apply in the opposite order from what you meant. It just doesn't work, and causes problems for everyone.
Sorry about the site downtime/instability for the last 2 days.
I want one builtin to my Tablet!
Seriously, if it works as well as the reviewer says, and it cost a lot less, I might start regretting the $15 mini USB keyboard I bought for my tablet a couple of weeks ago.
Well, I'm back at school and a new semester has started. And since it's just starting, I should have slightly more free time to work on things.
So I'll unveil the site change plans I've got right now.
- Add anonymous comments
- Add categories (at least to the list...might take some work to get them in the RSS feed)
- Fix the ISA errors when trying to open the large views for images
- Update RSS feed generator so it includes the text of the post ???
- Fix the icky right sidebars. Not sure how, but at least address there current existence
- Look into fixing the Extranet tab. That's another part of the site that's been bugging me. Unfortunately I can't seem to get ISA2004 to do things the way 2000 did, so I'll need to come up with a completely rearchitected solution, possibly involving multiple domains on one IP.
Well, this weekend I decided to make an effort to get VPN services working with ISA 2004. And it worked!
It was actually pretty easy too. ISA 2004 made it a snap to setup, and I found an article on Technet telling me EXACTLY what certificates to get to for the computers to allow L2TP and EAP to work. The only snag I ran into (and it was a MAJOR snag) was getting the client certs.
For some reason when I try and get a certificate for any user, an error about "the specified user could not be found". Since I was in a hurry, and only had one user account that needed a certificate, I ended up just having that user login to the CA computer directly, where the certificate issue worked fine. Wierd...
The other problem I ran into was that the WinXP VPN client wouldn't work with cerficates created using the "Windows Server 2003 User" template. In fact, the only certificate template I could use that resulted in a useable configuration was the Administrator template. Again, wierd...
So there are a few issues that need to be looked into to get everything working perfectly. In the meantime, at least I can connect in over the VPN and enjoy remote / WLAN access.
There have been a few things I've never managed to get working at all with Windows:
- RPC over HTTP/S
- VPN Server (although I haven't tried recently, with the ISA 2004 changes)
- IPSec (I always seem to only be able to get all communications to stop)
- EFS (it works, but the key recovery stuff doesn't, and not in the way I'd expect it to)
That's my list of things to try and get working between now and the beginning of next semester.
I've managed to get the Announcements working (stupid 2 fields on the List that I forgot to update...).
For future reference, when working with bulk importing stuff into SharePoint lists, not only do the items have to be loaded into the UserData table, the [tp_ItemCount] and [tp_NextAvailableId] fields in the Lists table need to be updated for the list being bulk loaded.
It's interesting to note that I couldn't find any information on this using Google, but now that I know the fields to adjust and search on those, I get a couple of detailed hits about the problem, and how to fix it. Probably just a sign that I need to sit down and refresh myself on how to use Google better, and how to do searching better in general.
|
About the author

Jeffrey Stults is a software developer currently in Portland, Oregon. He is contactable at:
stultsj@ntldr.net
Archive
| | Sun | Mon | Tue | Wed | Thu | Fri | Sat |
|---|
| 29 | 30 | 31 | 1 | 2 | 3 | 4 | | 5 | 6 | 7 | 8 | 9 | 10 | 11 | | 12 | 13 | 14 | 15 | 16 | 17 | 18 | | 19 | 20 | 21 | 22 | 23 | 24 | 25 | | 26 | 27 | 28 | 29 | 30 | 1 | 2 | | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Disclaimer
Disclaimer
The opinions expressed herein are my own personal opinions and do not represent
my employer's view in any way.
© Copyright
2010
Jeffrey Stults, Jr.
Statistics
Total Posts: 248 This Year: 28 This Month: 0 This Week: 0 Comments: 23
Utilities
Pick a theme:
Sign In
|