Pale Musings

Thoughts from a mind twisted by tech and sports

Thorn’s Law

This was quipped by someone I know.  I wanted to make sure to record it for posterity.

The longer you are is in the bathroom, the faster others rush in when you’re done.  That’s actually the time you want to allow some time…and distance!

I suppose it all depends on the HAZMAT level of the room afterwards.

December 18, 2009 Posted by palehorse | Miscellaneous | Leave a Comment

Using an External Config File With log4net with ASP.NET 2.0 and IIS7

I started a new project recently and set about adding log4net to it.  I’d upgraded to a new Window 7 workstation over the past month whereas I’d previously been using XP, so the step up to IIS7 was exciting and and a bit anxious all at the same time.  My first hurdle so far has been using log4net.

I tend to be the type of person that likes to separate out the log4net configuration into it’s own file, usually log4net.config.  Setting up this new project; however, I started running into a problem I’d never seen before.  When trying to use the XmlConfiguratior to read my log4net.config, I would see this exception:

[SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]

Searching for others with this problem has not yielded much success.  I’ve seen articles stating that it’s an issue with medium trust security (on m local workstation trust was set to full) to problems with some sort of breaking code within log4net itself.  Most of these articles I suspect were not using IIS7, but it was hard to tell.

I ended up digging into the log4net source code to find out what was happening.  The problem would occur on a line of code that tried to access the FullName property of a System.IO.FileInfo object.  That property threw the exception worked fine it I tried to access it from my web project, but once it got down into the log4net guts, it would not.

After a lot of frustration, I finally started looking elsewhere.  I ran across a comment on Stack Overflow that stated they used .xml instead of .config files.  I had dismissed it due since others claimed .config files where fine, but recalling what I’d seen there I decided to try it.  *Poof* it worked!

I didn’t really want to leave the configuration in a file with the .xml extension since that could easily be downloaded from a server.  The discovery told me that it was likely due to something IIS was doing with ASP.NET to hide files, but the odd thing was that it could read from the web.config, so I was a little perplexed.  I started digging into how IIS7 handles these types of protected files. 

IIS7 ManagerIt turns out that there’s a section in the hosting configuration that lists protected files under the name “requestFiltering”.  Hmm…that was an interesting sounding name.  Unfortunately all the entries were only by file extension, not by file name directly so there had to be something else.

Request FilteringI ended up in the IIS7 Manager application and found the Request Filtering area.  I began to poke around in there and discovered another tab called Hidden Segments which had an entry for the web.config!  I clicked the Add Hidden Segment link under Actions and added a new entry for log4net.config and viola, my application worked!

I know that most of the IIS7 configuration settings are stored in various config files, including the web.config, so I started looking in there and found this new element in the <system.webServer> section.

   1: <security>

   2:     <requestFiltering>

   3:         <hiddenSegments>

   4:             <add segment="log4net.config" />

   5:         </hiddenSegments>

   6:     </requestFiltering>

   7: </security>

I believe that including this section will allow the files to work.  I even changed my trust level in my dev environment to Medium and it still ran just fine.

There may be other things that can cause this sort of problem, but this fixed my example.  Hopefully this helps someone else out there as it was a bear to track down!

September 29, 2009 Posted by palehorse | .NET, C#, Development, Windows | , , , , | 3 Comments

How To Create Custom Libraries in Windows 7

Default Windows 7 Libraries I recently discovered a cool little feature in Windows 7.  I’d known about the libraries that come default, which include Documents, Music, Pictures and Videos.  I thought that it was a nice idea that these libraries looked in multiple locations.  While I hadn’t had much need for it yet, I can envision my home network utilizing it once I start upgrading my home machines.

At work, I’m testing the 64-bit version of Windows 7 RTM as a developer workstation in our environment.  One thing that I constantly kept doing while making sure my environment is set up correctly, is looking for an application in the C:\Program Files folder.  Unfortunately, there are quite a few applications that are still 32-bit, so they get installed in C:\Program Files (x86) so I find that although I have a 50% chance to look in the right folder, I get it wrong about 90% of the time.  Wouldn’t it be great if there was a library that included both!  I decided to try it.

Custom Library Contents in Windows 7 Right clicking in a blank spot in my libraries window gave me a New –> Library option.  Cool!  After giving my library a name (Programs) I found there was nothing inside, I went back and right clicked on my new library and chose Properties.  I was presented with a dialog that let me change a few things, such as adding folders the library should look into.  I added my two Program Files locations, closed the dialog, opened the library and viola!  There are all of my programs!  Very cool!

Custom Windows 7 Library OptionsOne thing I will briefly note, if this library is for a type of files that you will be actually saving files into, you can select the folder that acts as the default location to save files.  That way when you are in an application and you choose to save something, you can just click on the library and it will save in the default folder.  That’s not something you’re likely to do with programs, but there are other file types.  Another library I have added, for example, is Source Code.

Customized Windows 7 Library They only thing that was disappointing at this point, was the fact that there was no option to assign a custom icon.  I did a quick search on Bing (I did a quick Google on Bing?) and found this guide regarding custom libraries.  It explained that libraries are really just XML files located in the special folder at C:\Users\<User>\AppData\Roaming\Microsoft\Windows\Libraries with some data describing the library.  One of the elements you an add to the library is called <iconReference></iconReference> which simply takes a path to an .ico files.  It does note that for the best results a 256×256 icon should be used, or an icon with appropriate sizes all in one file; however, I found one at 128×128 for my programs and it worked fine.

September 17, 2009 Posted by palehorse | Operating Systems, Windows | , , , , | Leave a Comment

Using Windows 7 with Multiple Gateways (Routers) and DHCP

Early last year we implemented a second Internet connection on our network.  We wanted to make it as easy as possible to switch between the two if the primary connection went down.  We are on a Windows domain and use DHCP from one of our domain controllers so it was easy to implement the 003 Router scope option with the two gateways and it worked great!

According to RFC2131 and the DHCP Options and BOOTP Vendor Extensions;

The router option specifies a list of IP addresses for routers on the client’s subnet.  Routers SHOULD be listed in order of preference.

That last bit was the key for working in our situation.  Our Windows XP clients grabbed the multiple gateway addresses and modified the routing table like this:

Active Routes: 
Network Destination  Netmask       Gateway    Interface  Metric
          0.0.0.0    0.0.0.0    172.16.0.1  172.16.0.40      20
          0.0.0.0    0.0.0.0  172.16.0.220  172.16.0.40      20

Both entries have the metric of 20, which was dynamically assigned by windows based on the link speed, the first entry is the one that was used.

We recently began testing Windows 7 in our environment.  We are fairly happy with most of the new features, performance and the overall experience in the new OS.  One thing that, so far, has been a great improvement is the new network stack.  With Vista, there were several issues including problems with unexpected freezes while network requests are made and problems with notebooks when trying to close the lid.  In Windows 7 most of those issues seem to have went away.

One minor issue that we did run across seems to be a bug, in my opinion.  When our Windows 7 clients processed the same DHCP requests as our XP clients, the routing table looked like this:

Active Routes:
Network Destination  Netmask       Gateway    Interface  Metric
          0.0.0.0    0.0.0.0    172.16.0.1  172.16.0.40      30
          0.0.0.0    0.0.0.0  172.16.0.220  172.16.0.40      30

Very similar results, just slightly modified metric which I can only assume is due to an updated algorithm for calculating the dynamic metric.  The only problem is that the second entry was being used as the default gateway.  We verified this on multiple Windows 7 clients.  It seems like it goes against he “order of preference” bit of the RFC.

It took quite a while and a lot of research, but I found out that Microsoft implements a vendor specific extension, 003 Microsoft Default Router Metric Base option.  The documentation for this value reads:

This value is a specified router metric base to be used for all default gateway routes used at Windows 2000 DHCP-enabled client computers.

This value can be assigned as an integer cost metric ranging from 1 through 9,999. It is used in calculating the fastest, most reliable, and least expensive routes. If a value is not specified, a default of either one (1) or the currently set interface-specific metric is used.

This is not very specific and for a while I did not think it would apply different metrics, but rather the same metric to all of the values in the 003 Router option.  I decided to give it a try regardless of my doubts and it worked!  Now, my XP route table looks like this:

Active Routes:
Network Destination  Netmask       Gateway    Interface  Metric
          0.0.0.0    0.0.0.0    172.16.0.1  172.16.0.40       1
          0.0.0.0    0.0.0.0  172.16.0.220  172.16.0.40       2

And my Windows 7 route tables looks like this:

Active Routes:
Network Destination  Netmask       Gateway    Interface  Metric
          0.0.0.0    0.0.0.0    172.16.0.1  172.16.0.40      31
          0.0.0.0    0.0.0.0  172.16.0.220  172.16.0.40      32

It is still disappointing that the DHCP routing options seems to be broken in Windows 7 (IMHO), and I am sure there will be plenty of people having similar problems when they begin rolling out Windows 7 clients in their environments.  Hopefully this article will save someone a little time trying to configure their Windows 7 clients to use multiple gateways.

August 24, 2009 Posted by palehorse | Networking, Operating Systems, Windows | , , | 2 Comments

What’s So Hard About Managing Podcasts?

<rant>What is the big deal with podcasts?  I’ve tried many different podcast client software and all have had one problem that seems to remain the same.  At times, they will suddenly start downloading old podcasts that have already been listened to.  Argh!  Some podcasts (like my local news, the Bend Bulletin) have archives going back or over 2 years that I then must go delete in order to clean up the massive amount of space they’re using again!</rant>

Ok, now that I’ve got that out of my system, the real question is, where does the fault lie?  Is it with the software itself, or is it the content provider?  Do the content owners change something that causes all of the items to look “new” or does the software simply fail at some point to recognize that the episodes are old?

I’ve tried Miro, Zune, Juice and HappyFish among others and they all seem to have the same occasional (once a week or so) problem.  If anybody has a better suggestion, I”d be happy to try it!

The one thing that I like to do, which may be different that most users (although I don’t think it’s so unusual) is to save some of the episodes.  For example, I subscribe to some guitar podcasts and many of the lessons I like to keep.  Maybe that’s messing them up?  It shouldn’t, but man it is annoying!

July 23, 2009 Posted by palehorse | Miscellaneous | 3 Comments

Fixing Windows Update on Windows XP

On the 4/19 the virus software we use falsely detected the system file wmiprvse.exe as a virus/malware threat.  The specific detection reported the file as Backdoor.Win32.Agent.afqs.  This happened on at least three of our workstations.  Some research on the web shows that more than one virus company had the same problem at around the same time which makes me wonder what happened.

While we were able to recover the file, some things just weren’t right.  The biggest problem ended up being with Windows Update.  When going to the site, it would simply hang on the part where it was checking your system for updates.

Investigation turned up mismatched versions of several of the wmi…. family of components.  Presumabl this was due to an incorrect file being restored by the system after the false positive event.  Trying to get it matched up correctly by had turned out to be problematic at best.

Finally I ran across an obscure post (sorry, I no longer have the link) where someone claimed that reinstalling a certain security patch from Microsoft fixed his problem.  After going through the re-installation of this patch on the first affected machine, it indeed worked!

The post referred to the MS09-12 securyt bulletin from Microsoft.  Most of the page refered to using Microsoft or Windows update to install the patch, which of course was not possible.  I was able to track down the direct download link for the file and I thought I would post it here for posterity.

June 2, 2009 Posted by palehorse | Operating Systems, Security, Windows | Leave a Comment

How I fixed Visual Studio crashing when opening XAML (WPF) files

For the second time, Visual Studio 2008 began crashing when double clicking on a XAML file.  In this case, the crash was spectacularly underwhelming.  No error message, blue screen or other indication of something horrible happing.  Visual Studio would simply go a way, or “blink out” as I’ve seen it referred to.

After much searching I was able to determine that the PowerCommands for Visual Studio 2008 extension was somehow involved in the problem.  I tried quite a few different solutions including adding a dependantAssembly reference in my Visual Studio configuration, doing a clean solution then rebuilding the project.  Up to that point the only thing that worked was uninstalling the extension.  Reinstalling afterwards would cause the problem to return.

Working without PowerCommands was an option I did not want to consider.  Many times each day I would use functions such as “Open Command Prompt” which fires up cmd.exe starting in the directory of the file or folder selected in the solution explorer or “Open Containing Folder” on a file, just to mention a couple.  It was looking like that was going to be the only solution, I was bummed.

I decided to check with the source a bit further.  I looked through their issue list and the top voted issue was VS 2008 crashes when adjusting toolbox items.  Reading the description did not give me a lot of hope as it dealt with a problem when the toolbox items were adjusted.  It also included an actual error which was lacking in my case.

Among the comments to the above issue, I found the suggestion to run the command “ngen /delete *” (without the quotes) from a Visual Studio 2008 command prompt.  Ngen is the native image generator which creates native images from managed assemblies and installs a native image cache on a computer, which is a reserved area of the global assembly cache.

Wow, that sounds important, and I’m suppose to delete * (star)?  Ok….I was desperate and I did it before investigating what it meant.  Dangerous, I know, I know, but as I said I was desperate!

It worked.   Nothing seemed to break…and it worked.  Ok, off we go!  Wait, time to investigate….just in case problems start cropping up later.

ngen-help Running ngen /? from the command prompt yielded no information, not a mention of the /delete switch.  In my experience, when a command line utility fails to mention an argument that clearly did something, this is an argument that should only be used with full knowledge of what it does.  Now I started to get nervous!

I did a quick Google Search and was lead to the MSDN documentation for ngen.  It seems that my little command deleted all native images in the native image cache.  Hmm….that sounds bad.  Fortunately, a little further down the page the following information was also present.

 

This made me feel a little better.  The assemblies were still there, simply not the native images for them.  Native images simply cause the applications or assemblies to start up a bit faster.  With today’s hardware, I don’t know that I’ll even notice a difference, or if I do, it will be worth it to keep PowerCommands and get rid of the problem.

If this behavior resurfaces, I will do a little more investigation by using the /show argument to find out what native images are installed.  Then I will started deleting them one at a time to find the culprit.  My guess is that one of the native images somehow became corrupted, or the configuration for it got messed up or something like that.  Perhaps finding the culprit will aid in the resolution of the issue that this wonderful extension is experiencing by, if the Google results are any indication, a fair number of developers.

April 28, 2009 Posted by palehorse | .NET, Development | , , | 8 Comments

Essential Android Apps, 3 Months Later

Android Almost 3 months ago, I wrote about the Android applications that I found myself coming depend on.  With the release of paid applications on the Android Market, the quality of products has been rising and I’ve found that I’ve adjusted my must have list a little.

Apps I still use

Exchange by TouchDown

I still love this for my corporate Exchange access.  NitroDesk is doing a great job of adding new features and fixing bugs when they crop up.  In January I was still using version 1.  Since then, they’ve come out with v 2.0 which including, among many other things, push support.  Currently I am beta testing a new version which I am uncertain whether or not I can talk specifically about, just suffice it to say the new big-ticket item is very nice.

The NitroDesk support continues to be superior with most responses coming within a few hours at the most.  These guys simply get it.  I have checked out a couple of other Exchange clients and they just don’t come close.

 The Weather Channel

Not much to say about this one.  They have had a few updates, but nothing new and exciting, still the app simply works and it works well.  Sometimes, if it aint broke, you don’t fix it.

Quickpedia

I find myself struggling to remember details about topics that crop in conversations all of the time.  Quickpedia gives me what I consider to be the best mobile UI wrapper around the content from Wikipedia available.   Whether I’m looking up the discography for a band, or reading up on the science behind natural harmonics on your guitar, the information is formatted to look good on a mobile device including grouping the information by section allowing you to see a quick overview of the the types of information available.

Rings Extended

In my previous post, this was an honorable mention.  I suppose that was due to the fact that you almost never see this application.  The truth; however, is that you always use it.  It replaces the standard ringtone picker application allowing you to customize rings by using built-in tones or sounds, music or tracks on your SD card.

New Additions

Steel

The built in web browser is very nice; however there are a few features that it simply doesn’t have yet.  While the next version of Android (1.5, cupcake, whatever) may address them, Steel fills the gap in the interim.  Steel gives you full screen browsing, auto rotation when you turn your phone sideways, touch zooming, flip navigation between windows and a soft (on-screen) keyboard.

Steel uses the base Webkit engine that the built in browser uses, it simply adds a UI on top of it that should have been included in the first place.

SplashID

The folks at Splash Data have been making password management that syncs desktop with mobile for a while now.  They have versions for most popular mobile platforms including Android, WinMo, iPhone, Palm, Blackberry and Symbian Series 60.  For years I’ve enjoyed having my passwords stored in a secure environment on my desktop and my mobile device (formerly on WinMo) and now that SplashID has an Android client, I’m once again feeling safe :)

Useful Switchers

This is a quick-toggle application for many of the frequently used system settings.  It allows you with a click to toggle WiFi, Bluetooth, Auto Sync, GPS and more.  This little app is fast, and has a great looking, simple to understand interface.

Gone Missing

These are applications that were on my original list but have since lost their place in my my device for various reasons.

aTrackDog

This was the only way to really keep apps up to date without manually searching them out.  It was a great app, but since RC33 was released with the automatic updates listed in the market, my downloads section, it became redundant.

I see now that they have added some features to make it appealing again, including updates to non-market applications and a few other features.  I may give this another try, but for the moment it’s not on my device.

Power Manager

This app was designed really well.  It gives quick access to some of the settings that affect your battery life, such as WiFi, GPS and brightness.  A very nice features is the automatic triggers which will change settings to a certain profile.  For example, if your battery gets down below 30%, it may turn off GPS and WiFi.

Why did I get rid of it?  3 reasons:

  1. The main reason is that the developer changed it to a 3 day trial which you could upgrade to the full version.  He did this without adequate warning (I simply updated since my marketplace told me one was available) and did not leave the original free version available.  While it is only $0.99, and I would have likely paid for it, the manner in which it was done did not sit well with me.
  2. All of the quick settings toggles (and many more) are now available from Useful Switchers.
  3. I rarely let my phone get below the 30% threshold that I had set for turning off WiFi.

While it sounds like he may have made the free version available on his website (instead of the market place)

Conclusion

This is not an exhaustive list of the applications I have installed and use, but they are the apps that, if I had to do a hard reset, I’d likely install right away.  That says a lot about them regarding their usefulness and the way the work their way into your day-to-day routine.

If you have some that you think are essential, questions about any of these apps or criticism about some of my choices (please back it up!) please leave a comment!

April 14, 2009 Posted by palehorse | Android, Gadgets, Reviews | , , , | Leave a Comment

Blogging (and micro-blogging) Hiatus

I have been on a bit of a lapse in the blogging, twitter, 12 seconds and other social network arenas.  Robert Scoble once posted The Corporate Weblog Manifesto.  Rule #13 states

If your life is in turmoil and/or you’re unhappy, don’t write.

He gives a brief, non-specific example of the potential effects.  My family has been going through some rough times lately that I will not get into in this forum, but suffice it to say that the stress level has been high and, though I have wanted to share my thoughts on several things of late, I did not want to fall victim to subconscious changes to my writing affecting the quality.

After almost 2 months, we are coming to terms with the changes in our lives at home and, while things are still far from what most people consider normal, we are at least coping.

I have to admit that not blogging during the break was somewhat of a relief but now I must deal with the consequences of my blog’s loss of relevance, but more importantly, it’s time to get back into something I enjoy, writing!

April 14, 2009 Posted by palehorse | Blogging, Miscellaneous | Leave a Comment

It’s official, and we had a party to prove it!

Last night (Feb 9th, 2009) down in Santa Clara, my company hosted the Meet & Greet party for the SMX West 09 conference.  This was the kick-off party for the conference where we were officially announced our new product, Pixelsilk.

Most of the Sales & Marketing folks were down at the party in Santa Clara.  It looks like they had a great time.  You can read about it in Kandi Humpf’s blog post here.  Be sure to take a look at the picture of the laptop!

On the other end of the laptop connected via Skype, the rest of the team (development, web and support) were having a great time eating cajun tater tots, pizza and of course drinking hand-crafted beer at our local McMenamin’s, the Old St. Francis School.  Here are some photos of the team enjoying a well deserved celebration.

I want to give a shout out to the entire team for helping us get to this point!  It has been a lot of hard work, but thanks to the all of the great folks it has always been fun!

February 10, 2009 Posted by palehorse | Internet | , , | 2 Comments