in

Bunker Hollow

Matt Williamson's home on the web, welcome.

Matt Williamson's Blog

Personal discoveries of an IT professional.
  • Thanks to Dan and Chris of Oak Brook IL AT&T

    Chris and Dan from AT&TTwo nights ago I dropped and broke my fiances... *gasp* ... iPhone!  The screen and LCD were completely broken, but the rest of the device seemed to work.  The alarm went off the next morning and I was able to connect it to iTunes.  Needless to say, being without cell phone in this day and age is like missing an appendage so the situation needed to be remedied ASAP.

    My journey began yesterday at the Apple store at 11am.  While I waited for my appointment I browsed the new iPhone 3GS models (my fiance's recently deceased model was a 3G).  I figured if the repair was going to cost $100 or so, why not take a look at what the new one would cost.  Easier said than done.  I finally found this AT&T upgrade pricing guide which lays it all out; a new 16GB 3GS will cost $199, $399, or $599 (yikes).  Now to find out if I can upgrade to the new 3GS for $199...

    We're now pleased to offer our iPhone 3G customers who are upgrade eligible in July, August or September 2009 our best upgrade pricing, beginning Thursday, June 18.

    Wouldn't you know it, she's not upgrade eligible until October!  By the looks of it I had two options.  One, buy a new 3G for $299 (which is a hundred more than she paid for it originally) or two, get the new 3GS for $400.  Neither of which was really an option; I needed this upgrade! 

    I learned your eligibility is heavily dependent on whether or not your monthly bill is greater than $99.  The more you spend each month the more willing they are to work with you.  I dug around for my fiance's last statement and was shocked to find the $138.12 total! ... Well, at least they'll work with us! ... So we've missed the deadline by a matter of days, but we're loyal paying customers and I figure at most I can offer to extend the contract 2.5 years as opposed to 2 and we'll call it a day.

    I was wrong.  I spent an hour and a half in the extremely busy Apple store to only find out that I'd have to take it up with AT&T.  I spent the next hour and half on the phone with AT&T explaining the situation and then waiting for them to call me back with, "Sorry, there's nothing we can do."

    Finally, with my passion for life drained and my faith in humanity fading, I hobbled into the local AT&T store.  I was greeted by the two friendly gentlemen pictured here and they proceeded to do everything they could think of to help me out.  It was a wonderfully refreshing conversation of:

    "Ahh yes, I understand your situation.  That's a tough one... let's try this..."

    "Nope, that won't work, how about this..."

    "OK, let's give this a shot..."

    A half hour later, we had the solution.  My whole family has accounts with AT&T so, with their permission, we checked their accounts and every one of them was eligible for an upgrade.  My dad agreed to renew his two year contract, which he planned to do anyway, essentially gaving my fiance his upgrade.  Then, come October he can have hers.  Problem solved.

    So a big thanks to Dan Mianulli and Chris Prendergast for their effort and expertise.  I wish I had known to come to these guys straight away instead of spending an entire day dealing with people so non-helpful they might as well have been machines.  If I wasn't moving away, I'd be a customer for life.  Somebody give these guys a raise!

  • MS SQL Check If Column Exists

    The following SQL script checks if a certain column exists in a certain table, then prints some text to the output window.  I'm getting into the best practice habit of creating SQL scripts that can be re-run without any errors and this is useful in checking to see if a column already exists before altering the table and attempting to add the column.

    IF EXISTS ( SELECT 1 FROM information_schema.columns WHERE column_name='COLUMNNAME' AND table_name='TABLENAME')

    BEGIN

         PRINT 'This column exists!'

    END

  • Longwood Inc Used Car SCAM!

    A few days ago I posted my car for sale on my website, on Craigslist, and on AutoTrader.  This afternoon I received this voicemail from a pleasant sounding guy named "Brad" who's company would help me sell my car for a small fee, if I would just call him back at 866-326-0949.

    A quick search on Longwood Inc confirmed my suspicion that this guy was up to no good.  I can't say for sure if they found my ad through AutoTrader or Craigslist but as many of the posts have said, it is illegal for a company to contact you about items you are selling and they should be reported to the FCC, BBB, and/or the blogosphere!

    Nice try Castanza!

    References:

    http://800notes.com/Phone.aspx/1-866-326-0950
    http://www.ripoffreport.com/reports/0/452/RipOff0452892.htm
    http://www.ripoffreport.com/reports/0/463/RipOff0463738.htm

  • 2006 Nissan 350Z For Sale

    My fiance and I are moving to the city and have no need for two cars.  Serious inquiries please contact me by email or call 630-405-1818.

    Overview:

    • 2006 Nissan 350Z Coupe
    • Enthusiast Model
    • Silverstone Color
    • 6 Speed Manual Transmission
    • 23,221 Miles

    Extras:

    • Gold Preferred Extended Warranty ($2,000 value)
      Covers everything until July 25th 2013 or 70,000 miles.
      Includes emergency roadside assistance.
    • Removable Garmin Nuvi 250W GPS
      Professional mount, cubby can be closed for security.
    • Nissan Sports Cargo Package
      Cargo net in rear, by front passenger's feet, and storage on back of passenger's seat.

    Maintenance:

    • Garage kept.
    • 1 owner, me.
    • "Broke engine in" following guidelines in owner's manual.
    • Oil change at 500, 1500 and 3000 miles.
    • Oil change every 4,000 miles after that.
    • 20,000 mile tune up (2/9/2009):
      Alignment, oil change, 100 point inspection, replaced rear diff fluid, gear lubes,
      limited slip fluid, full manual transmission service
    • Documentation available for serious inquiries. 
    • Potenza run-flat all season performance tires are in good condition.
    • Washed and cleaned regularly.  Fully detailed twice.

    Price:

    • $19,995 USD
    • Considering car's condition, the extras above, and the Kelly Blue Book value, the price is more than fair.

    Click any image to enlarge.


  • Set Default OS for Windows XP/Vista/7 Dual Boot

    Let's say you've installed Windows XP, Windows Vista and Windows 7 on separate partitions.  During the boot process you'll see the following choices:


    Earlier Version of Windows, Windows 7, Microsoft Windows Vista

    Now let's say your beta version of Windows 7 is about to expire and you'd like to make Windows XP the default operating system.  Simply install EasyBCD by NeoSmart Technologies and make the change:

     
    (Windows Vista isn't shown as a choice because I do not have it installed on this machine)

    PROBLEM: At this point if you restart your machine and attempt to launch Windows XP, you'll encounter the following error:

    Windows failed to start...
    File:  \ntldr
    Status: 0xc000000f

    SOLUTION:

    1. From Windows 7 launch Disk Management and locate the hidden Windows XP partition based on size:
       

       
    2. Assign the Windows XP partition a drive letter:
       

       
    3. Associate the Windows XP boot information with that drive letter in the EasyBCD settings:
       
  • Exchange 2007 Queue "4.7.0 Temporary Authentication Failure"

    If you are experiencing trouble sending mail through Exchange and you check your Queue Viewer you may discover it's filling up with messages and the following error:

    451.4.4.0 Primary target IP address responded with: “454.4.7.0 Temporary authentication failure.”  Attempted failover to alternate host, but that did not succeed.  Either there are no alternate hosts or deliver failed to all alternate hosts.

    In brief, there is a problem with the connection between your Exchange server and your Edge transport server.  Next step is to check your Edge server for errors.  My particular issue involved an invalid certificate that, once resolved, cleared up this issue too.

     

  • Exchange 2007 Edge Queue "4.7.5 Certificate Validation Failure"

    I was troubleshooting some Exchange issues recently and I managed to create a whole bunch more.  I managed to remove a certificate from my Exchange 2007 server not knowing it was still in use.  After doing that, my inbox was suspiciously quiet and anyone trying to send me a message eventually received an automated email from postmaster@bunkerhollow.com:

    Delivery is delayed to these recipients or distribution lists:
    xxx@bunkerhollow.com
    Subject: Hello
    This message has not yet been delivered. Microsoft Exchange will continue to try delivering the message on your behalf.

    I then checked my Exchange 2007 Edge Message Queue Viewer and saw the messages piling up with the following error message:

    451 4.4.0 Primary target IP address responded with: "454 4.7.5 Certificate validation failure." 

    After some research and a bit of trial and error I determined that fixing the issue required deleting all my existing certificates (a safety precaution because I'm not using OWA or ActiveSync so I don't need one), creating a new certificate, and then creating a new edge subscription and re-syncing.

    From the Exchange Server PowerShell:

    1. View the current certificate list (following is a pipe and not a slash):
      Get-ExchangeCertificate | List
       
    2. View all certificates:
      Get-ExchangeCertificate
       
    3. Create a new certificate:
      New-ExchangeCertificate
       
    4. Remove all other certificates.  Replace the following "xxx" with the long thumbprint value from the certificate list.  Attempt to remove them all because it will not allow you to remove the current one.  I find it easier if you right-click and copy/paste between the command window and notepad instead of trying to type out those thumbprint values:
      Remove-ExchangeCertificate -Thumbprint xxx
       
    5. Verify there is only 1 certificate now:
      Get-ExchangeCertificate
       
    6. Enable the current certificate to be used by IIS (I'm not sure this is necessary if you're not using OWA or ActiveSync):
      Enable-ExchangeCertificate -Thumbprint xxx -Service IIS

    From the Edge Server PowerShell:

    1. Create a new subscription file:
      New-EdgeSubscription -File "c:\subscription.xml"

    Back to the Exchange Server:

    1. Copy the subscription file from your Edge machine to your local hard drive.
       
    2. Open the Exchange Management Console and create a new Edge subscription.  Don't delete the existing subscription, leave the defaults, and all of your send/receive connectors will remain intact:
      Organization Configuration -> Hub Transport -> New Edge Subscription... -> Browse to subscription.xml and leave "Automatically create a Send Connector" checked.
       
    3. If you receive an error that the times aren't in sync, reset your clock to match your Edge clock, or vice-versa.
       
    4. If you receive a warning that the IP must resolve and a certain port must be accessible, heed that advice but you may continue because the new Edge subscription has been successfully created.
       
    5. If you use IMAP4 or POP3, you must make sure they are configured to use this new certificate:
      Server Configuration -> Client Access -> POP3 and IMAP4 Tab -> IMAP4 Properties
      Authentication Tab -> Secure logon -> X.509 certificate name = SERVERNAME (ex: postoffice, the value in IIS -> Server Certificates -> Issued To)
       
    6. From the PowerShell, synchronize your Edge subscription:
      Start-EdgeSynchronization

    Receive your queued messages:

    1. Open the queue viewer on your Edge box and retry all of the messages.  If you have Outlook open, you should see your Inbox fill right up!

    Send any queued messages:

    1. Open the queue view on your Exchange box and retry all of the messages.  You may receive the following error.  If you do, just give it some time, I checked my queue about 20 minutes later and they had all been sent.
      451.4.4.0 Primary target IP address responded with: “454.4.7.0 Temporary authentication failure.”

    Well that's it, and I'm sure glad it's over!!!

  • Exchange 2007 IMAP4/POP3 Stopped Working

    My BlackBerry is connected to my home Exchange server using the BlackBerry Internet Service (BIS) via IMAP.  For the last couple of days, I've noticed that I wasn't receiving my email on my mobile device but everything else was working fine.

    Unfortunately for me, I thought it was related to a bunch of environment changes I made earlier this week.  So I've spent quite a bit of time troubleshooting non-existent issues only to find that for some reason that is totally beyond me, the IMAP service on my Exchange machine had stopped.  I used the following PowerShell commands to sort out the issue:

    • get-service (Gets a list of all services and their status)
    • get-service MsExchangeImap4 (oh look, it's stopped)
    • start-service MsExchangeImap4

    I then doublechecked the status by opening up the Services Management Console and verified the service is still set to "Automatic" and is now running.  And now that I'm looking at it, there are a bunch of Exchange services set to "Automatic" that aren't running!  Jeez, time for a reboot...

    UPDATE

    ... it seems that the services not running aren't the only problem.  I still wasn't able to connect until I lowered my IMAP and POP3 authentication settings.  What's happened here?  Why would this suddenly stop working?

    The only explanation I have so far is that a couple of months ago I rekeyed my SSL certificate to a different name and for a different machine.  I created a Terminal Services Web Access machine so I could launch Outlook remotely, rendering my OWA setup + it's associated SSL certificate unnecessary.  Shortly after, I noticed this did cause a problem for my fiance who lost ActiveSync connection from her iPhone.  An SSL connection (thus certificate) is required for ActiveSync, but she didn't use it much anyway so it wasn't even an issue.  But why would it now refuse my IMAP connections?  It's been months!  I have a feeling I'm missing something but it's back up and running now and I have plenty of other things to do.

    UPDATE 2009-06-11

    I managed to really mess things up trying to solve this problem.  I fixed the IMAP problem above, but managed to create a much worse problem I didn't discover until later.  Thankfully, I've sorted it all out here:

    http://www.bunkerhollow.com/blogs/matt/archive/2009/06/11/exchange-2007-edge-queue-4-7-5-certificate-validation-failure.aspx

  • Xbox 360 Error E74

    I booted up the old Xbox 360 the other night for yet another round of Call of Duty and was greeted with a single flashing red light on the console and the following error message on the screen:

    System Error. Contact Xbox Customer Support. E 74

    I immediately searched the web and came across a YouTube video of a guy who claims to have fixed his E 74 error twice by disassembling the unit and replacing the thermal compound on the CPU and GPU chips.  I thought what the hell, maybe new  compound along with a thorough cleaning/dusting will actually fix the problem.  Plus I was in the mood to take apart something new.  I gathered my tools, followed this disassembly tutorial and eventually replaced the compound with some Arctic paste.

    As hopeful as I was that a cleaning and a touchup would fix the problem, unfortunately it did not.  So I logged in to the Xbox support website, registered my console and applied for a repair.  It said that my 3 year warranty was expired... very odd being that I bought it a little less than 2 years ago.  So I called customer support and they flipped some switches and had me try it again.  There was then a new drop down item on the repair console form called "Error E74" and the cost was free.  I printed my UPS shipping slip, followed the packaging prep instructions and brought it to the UPS store this afternoon.  It cost me $5 for the woman to package it up, and I went on my way.

    Hopefully they'll fix it without giving me any hassle about voiding my warranty by disassembling the thing.  For anyone else who encounters this issue, just box it up and send it in for repair.  Trying to fix it youself is a waste of your time and $15 for a set of Torx screwdrivers if you don't have all the right sizes.

    UPDATE 2009-06-24

    I'm happy to report I received my fully repaired Xbox360 last week.  It took a total of 10 days and only cost me $5 (which is what the UPS store charged me to package it up).  I had even voided the warranty, as mentioned above, and I'm very pleased that they fixed it anyway without any hassle and even included a gift card for a month free of the Xbox Live Gold Subscription service.  Thanks Microsoft, you've definitely kept me as a gaming customer.

  • SQL Replace Function on NTEXT Data

    Today I've made some changes to my hosted environment.  I've decided to enforce my websites URL as always 'http://www.bunkerhollow.com' instead of 'http://bunkerhollow.com'.  This will keep the URL the same whether I'm inside or outside of my network, while retaining search engine optimization.  The problem is I now need to change any hardcoded links in any of my website content to the new URL.

    So I ran the following SQL query:

    update cs_Posts
    set Body = replace(Body, 'http://bunkerhollow.com', 'http://www.bunkerhollow.com')
    where Body like '%http://bunkerhollow.com%'

    And received this exception:

    Msg 8116, Level 16, State 1, Line 1
    Argument data type ntext is invalid for argument 1 of replace function.

    So I searched the web a bit and found that the you just need to cast() the ntext data going into and coming out of the replace() function.

    update cs_Posts
    set Body = cast(replace(cast(Body as nvarchar(max)), 'http://bunkerhollow.com', 'http://www.bunkerhollow.com') as ntext)
    where Body like '%http://bunkerhollow.com%'

  • Developer Troubleshooting Tips

    I just got off the phone with a client in Texas.  The application we were troubleshooting worked correctly in the development environment, but was giving authentication errors during certain times in production.  At one point there were four of us on the call and it took us over an hour to identify the true problem.  I think if I would have had a checklist of some sort, I could have identified the problem more quickly.  Hence the reason for this article.  This is just a checklist for troubleshooting application, database and IIS issues:

    1. Check application logs.
    2. Check security logs.
    3. Check database logs.
    4. Check connection strings.
    5. Confirm IPs and DNS names.
    6. Check SQL login/user permissions.
    7. Check IIS permissions.
    8. Check software & hardware firewall rules.
  • Zac Brown Band - The Foundation

    I thought I'd take a minute to write this post about my current favorite music album; Zac Brown Band - The Foundation.  It's a collage of uplifting, all-American sing-a-long tunes with a hint of island twang (along the lines of Buffett or Chesney).  You'll know if it's your kind of music right from track 1.  My only complaint is the very last track, I can't stand it when it gets stuck in my head!  Sorry Zac, but I had to take that one off my playlist :)  Other than that, keep up the great tunes.  I love this stuff!

    Track listing

    1. "Toes" (Zac Brown, Wyatt Durette, John Driskell Hopkins, Shawn Mullins) – 4:21
    2. "Whatever It Is" (Brown, Durette) – 3:29
    3. "Where the Boat Leaves From" (Brown, Durette) – 3:44
    4. "Violin Intro to Free" (Jimmy De Martini) – 1:01
    5. "Free" (Brown) – 3:48
    6. "Chicken Fried" (Brown, Durette) – 3:58 - Click here to watch a great live performance!
    7. "Mary" (Brown, J. Cline) – 2:50
    8. "Different Kind of Fine" (Brown, Durette, Stokes Nielson) – 3:18
    9. "Highway 20 Ride" (Brown, Durette) – 3:51
    10. "It's Not OK" (Hopkins) – 4:10
    11. "Jolene" (Ray LaMontagne) – 4:21
    12. "Sic 'Em on a Chicken" (Brown, Hopkins) – 3:51
  • Self-Hosted Website URL/FQDN/DNS Name Considerations

    I've learned a great deal since first configuring my network almost two years ago.  Most of the mistakes I made along the way have been corrected, others I've delayed fixing if I have a temporary work around.  This particular issue I've put off for far too long and now, unfortunately, it's impossible to fix.  Shame on me for procrastinating.

    Before I get to the problem, I have to elaborate on my design.  I built a domain controller that is my primary DNS server.  Then I configured my firewall to forward all DNS requests to my primary DNS server.  Then I have a webserver.

    The problem is threefold:

    1. A ping or nslookup of the domain itself (eg: ping bunkerhollow.com), from inside the network, returns the IP of the firewall.
       
    2. For the sake of search engine optimization, my website redirects all subdomains to the root (eg: http://www.bunkerhollow.com is redirected to http://bunkerhollow.com).  The reason for this being, if half the people link to your articles with the www and half the people link to your articles without the www, your SEO score is potentially only half of what it could be.  That's how I understand it anyway.  So at some point I decided to redirect everything to http://bunkerhollow.com, just because it's shorter.
       
    3. Outside of my network, everything works fine.  Inside my network, browsing to http://bunkerhollow.com takes me to my firewall web access (because of item 1).  So OK, I'll setup a DNS CNAME ALIAS.  Now I browse to http://bh/ to get to the same place.  Which works fine until I start writing blog posts or uploading images.  My Community Server website uses the domain from the URL for certain things so if I post from inside the network then it's not accessible from outside of the network and vice versa.

    My current solution is to now modify the hosts file on each internal machine that I'll use to post content.  I add an entry that associates bunkerhollow.com with my webserver IP address, overriding the default that always takes me to the firewall instead.

     The better solution though, now that I'm aware of the entire problem, would be for me to redirect all of my traffic to http://www.bunkerhollow.com.  I would have no problem accessing that from inside or outside of the network.  Too bad I can't make the change now, I have way too many links floating around in cyberspace pointing to the current setup...

    ... but wait, I think I could still change it.  If everything is automatically redirected then any link out there that is http://bunkerhollow.com/ABC should work just fine if it's redirected to http://www.bunkerhollow.com/ABC.

    ... I'll have to think about this a bit more ...

    UPDATE 2009-06-08

    I made the switch.  I've set Community Server to redirect all traffic to http://www.bunkerhollow.com and luckily any existing links out there redirect to the new correct address without any problem.  I now use that URL whether I'm inside or outside of my network and everything works as it should.  The only catch was I had to write a SQL query to update any hard links that had been saved in any blog posts or any other website content.

  • TS Web Access Publish Google Chrome RemoteApp

    You may be trying to publish Google Chrome as a RemoteApp to launch from your Terminal Services Web Access dashboard.  I say 'trying' because you're probably having trouble.  It took me a little while to get it right.

    Google Chrome is different from most other applications in two ways:

    1. It doesn't install to the 'Program Files' directory.  Instead, it's installed to each user's hidden 'AppData' directory.  This makes publishing the app pretty difficult.  If you publish chrome.exe from one user's directory, no other users will have access to it!
       
    2. Chrome's sandbox security architecture doesn't play nice with Remote Apps.  If you launch Chrome remotely you'll see the following error:
       

      Aw, Snap!  Something went wrong while displaying this webpage.

    The Solution

    1. Create a batch file to launch the correct executable for each user and disable the sandbox functionality.
       
      Chrome.bat
      start C:\Users\%username%\AppData\Local\Google\Chrome\Application\chrome.exe --no-sandbox
       
    2. Publish Chrome.bat as a RemoteApp.  You can modify the properties and rename it to Google Chrome and even change the icon by browsing to Chrome.exe.

    References:
    http://www.howtotuts.com/2008/09/03/how-to-fix-google-chromes-aw-snap-problem/

  • Batch File (*.bat) Hide Console Window

    This won't work for all scenarios but it's quite easy and works well for what I need accomplished at the moment.  All I need is a simple batch file to launch an application, like this:

    LaunchChrome.bat
    C:\Users\%username%\AppData\Local\Google\Chrome\Application\chrome.exe

    That certainly does what I expected but, unfortunately, it also opens up a command window that stays open until the program which was launched is closed.  So I searched around the net a bit and found a bunch of posts referring to Visual Basic Scripts or JavaScript files, and none with any definitive success.  There were also a lot accusations made towards people looking for the answer, like why they would want to do this unless they were creating a virus?!  Relax people, just relax!

    A few minutes later I stumbled on the answer, which is so simple I feel kind of dumb :)

    LaunchChrome.bat
    start C:\Users\%username%\AppData\Local\Google\Chrome\Application\chrome.exe

More Posts Next page »
Powered by Community Server (Non-Commercial Edition), by Telligent Systems