 <?xml-stylesheet type="text/css" href="http://www.joeaudette.com/Data/style/rss1.css" ?> <?xml-stylesheet type="text/xsl" href="http://www.joeaudette.com/Data/xsl/rss1.xsl" ?>
<rss version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
  <channel>
    <title>what was i thinking...</title>
    <link>http://www.joeaudette.com/home.aspx</link>
    <description>Pay no attention to the man behind the curtain</description>
    <copyright>Copyright 2003-2010 Joe Audette</copyright>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>mojoPortal Blog Module</generator>
    <managingEditor>joe_audette@yahoo.com</managingEditor>
    <ttl>120</ttl>
    <itunes:subtitle>Pay no attention to the man behind the curtain</itunes:subtitle>
    <itunes:author>Copyright 2003-2010 Joe Audette</itunes:author>
    <itunes:summary>Pay no attention to the man behind the curtain</itunes:summary>
    <itunes:owner>
      <itunes:email>joe_audette@yahoo.com</itunes:email>
      <itunes:name>Joe Audette</itunes:name>
    </itunes:owner>
    <itunes:explicit>no</itunes:explicit>
    <itunes:category text="Extensions" />
    <itunes:category text="iTunes" />
    <item>
      <title>I Like Windows 8</title>
      <description><![CDATA[<p>I was a little reluctant to upgrade my main development machine to Windows 8 because I don’t have a touch screen and wondered whether this would be another Vista or Windows Me (eek).&#160; But then I thought about it and Vista was a big improvement over XP and Windows 7 has been great since it ironed out the rough edges of Vista. Finally the $39 upgrade price was just too tempting so I decided to go for it, after all in my line of work upgrading at some point seems inevitable anyway.</p>  <p>After 2 weeks of using Windows 8 I’m liking it a lot. In many ways it seems like an improved version of Windows 7 with some extra stuff baked in for touch screens (Win RT and Modern UI formerly known as Metro). So far I’m not really using that stuff much since I don’t have a touch screen, I pretty much keep to the desktop side of things. The desktop side of Windows 8 is a lot like Windows 7 except that there is no longer a Start Menu. The Start Screen on the RT side is supposed to be the replacement for that, but for folks like me I think Microsoft would have been wise to keep a setting somewhere to allow enabling the old Start Menu on the desktop. Nevertheless, with a little tweaking to my desktop I’ve got things setup to where I don’t really miss the start menu. In this post I’ll share a few tips that helped me feel more at home in Windows 8. Basically, what I did was create task bar shortcuts for the programs I use the most and a few desktop shortcuts for other things, some of which are kind of hidden in Windows 8 but still there.</p>  <p><a href="http://www.joeaudette.com/Data/Sites/2/media/wlw/joes-win8-desktop.jpg"><img title="joes-win8-desktop" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="joes-win8-desktop" src="http://www.joeaudette.com/Data/Sites/2/media/wlw/joes-win8-desktop_thumb.jpg" width="741" height="413" /></a></p>  <h2>A Replacement For the Start Menu</h2>  <p>The first shortcut I added (right click the Desktop and choose New &gt; Shortcut) is the one shown in the top left corner which serves as a replacement for the old Start Menu and makes it easy to find programs I use less often, the shortcut points to &quot;C:\ProgramData\Microsoft\Windows\Start Menu\Programs&quot; and I browsed to find a suitable icon for it. I tried to then pin the shortcut to the taskbar but for some reason that isn’t an option for this shortcut, but for me its good enough on the desktop.</p>  <h2>Administrative Tools</h2>  <p>I was accustomed to the Administrative Tools menu that was available in the old Start Menu and while it is also in the pseudo start menu I created above, I decided to eliminate the extra clicks and create a direct shortcut to &quot;C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools&quot;</p>  <h2>System Backup and Recovery</h2>  <p>Windows 8 has a new “File History” feature that you can use to backup user files but at first glance I could not find a way to make a system backup. My first google of it found an article saying this feature no longer exists and people lamenting it in the comments, but a little further searching revealed that was false information. Windows 8 does have the same features for System backup as Windows 7 but it is not shown in Control Panel on my system so I created a desktop shortcut to C:\Windows\System32\sdclt.exe</p>  <h2>Shutdown and Restart</h2>  <p>I guess these days the hibernate features are supposed to be good enough and people are expected to not shutdown their machines very much, a paradigm from the tablet world I guess, but I’m still kind of old school and I like to shutdown my laptop at the end of the day so I created desktop shortcuts for Restart C:\Windows\System32\shutdown.exe -r -t 00 and Shutdown C:\Windows\System32\shutdown.exe -s -t 00 and browsed for decent icons. I then pinned the Shutdown shortcut to my taskbar and moved it all the way to the left.</p>  <p>With those changes Windows 8 feels very much like Windows 7 to me except it does seem faster, the UI seems a little cleaner somehow maybe because the old Aero stuff is gone, and it seems rock solid stable.</p>  <p>Windows 8 should be able to run any software that ran on Windows 7 as far as I know and I have not had any problems with software I use. There were a few warnings when it analyzed the system for upgrade. It says you may need 3rd party software to play DVDs, I can’t remember for sure but I think Windows 7 did have something for playing DVDs so if that is important to you its worth considering before upgrading. I don’t watch DVDs on my laptop often but it dual boots to Mac OS and I could watch one there if I really needed to. It did make me uninstall some Bluetooth software which worried me a little because I use wireless Bluetooth headphones with a little Bluetooth dongle to listen to music while I work. As it turned out that still works fine but the built in Bluetooth drivers for Windows 8 are better so there is no longer a need for the Broadcom software. It also warned me that Visual Studio 2010 was not compatible but it did not make me uninstall it. I suspect it would have worked but I uninstalled it after the upgrade since I also have Visual Studio 2012.</p>  <p>In the end I was very glad I upgraded and I’ve been a happy camper so far even though I don’t have much use yet for the fancy WinRT side of the house. Still I’m glad its there and I may play around with it more at some point. Maybe someday I’ll buy an external monitor that supports touch. For me it was a worthwhile upgrade at a very reasonable price and I’m feeling very productive. I also upgraded my Father’s machine and created some of the same shortcuts for him and he hasn’t had any troubles though he mainly uses the web and Office and not much else.</p>  <h2>Additional Resources</h2>  <p>Scott Hanselman has some good tips and keyboard shortcuts in his blog post <a href="http://www.hanselman.com/blog/Windows8ProductivityWhoMovedMyCheeseOhThereItIs.aspx">Windows 8 Productivity: Who Moved My Cheese? Oh There it is</a>.</p><br /><a href='http://www.joeaudette.com/i-like-windows-8.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/i-like-windows-8.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/i-like-windows-8.aspx</link>
      <comments>http://www.joeaudette.com/i-like-windows-8.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/i-like-windows-8.aspx</guid>
      <pubDate>Sun, 11 Nov 2012 13:43:00 GMT</pubDate>
    </item>
    <item>
      <title>IE 9 Bug Not All Links are Right Clickable</title>
      <description><![CDATA[<p>
	Since yesterday I've been using IE 9 most of the time so I can find out if there are any issues in mojoPortal skins and functionality related to using the new version. I use the right click on the mouse all the time for opening links in a new tab, and I began to notice that some links do not show me options for opening the link when I right click it. It seems as if it has no context as being a link and I get the other typical items like to view the source of the page etc.</p>
<p>
	I noticed it first in Gmail when I tried to right click the Calendar link at the top to open Google Calendar (yes I know it opens in a new tab when you click it normally anyway, but I'm a creature of habit). In other browsers I'm able to right click those links and get a context menu for a link, but not in IE 9.</p>
<p>
	<img alt="gmail link" src="http://www.joeaudette.com/Data/Sites/2/media/linksingmail.jpg" style="width: 539px; height: 167px;" /></p>
<p>
	Next I noticed it in the main menu on <a href="http://www.mojoportal.com">www.mojoportal.com</a></p>
<p>
	<img alt="mojo menu" src="http://www.joeaudette.com/Data/Sites/2/media/mojomenu-ie9.jpg" style="width: 434px; height: 90px;" /></p>
<p>
	I also cannot right click those links in IE 9 and get options to open the link.</p>
<p>
	So most links do work with right clicking in IE 9 but some do not, I wanted to fix it, because it seems like a usability issue to me that might confuse some users. I did some trial and error experimenting and I figured out that the cause of the problem is when you have a span wrapping the text inside the link and the span is styled with display:block;</p>
<p>
	I have not yet figured out a good solution for this. In the case of the mojoportal menu the span is used to hang a background image for the top right corner of the tab and removing the display:block; breaks the design.</p>
<p>
	I have narrowed it down to a small html example that shows the problem:</p>
<p>
	&lt;!DOCTYPE html&gt;<br />
	&lt;html&gt;<br />
	&lt;head&gt;<br />
	&lt;title&gt;IE 9 Usability Right Clicking Links Problem Demo&lt;/title&gt;<br />
	&lt;style type="text/css"&gt;<br />
	&nbsp;&nbsp;.myclass{ display:block; }<br />
	&lt;/style&gt;<br />
	&lt;/head&gt;<br />
	&lt;body&gt;<br />
	&lt;p&gt;<br />
	&lt;a href="http://www.mojoportal.com"&gt;&lt;span class="myclass"&gt;Not Right-Clickable in IE9 But is Right-Cickable in All Other Browsers&lt;/span&gt;&lt;/a&gt;<br />
	&lt;/p&gt;<br />
	&lt;p&gt;<br />
	&lt;a href="http://www.mojoportal.com"&gt;&lt;span&gt;Right-Clickable in IE9&lt;/span&gt;&lt;/a&gt;<br />
	&lt;/p&gt;<br />
	&lt;/body&gt;<br />
	&lt;/html&gt;<br />
	 </p>
<p>
	Note that the same problem happens if you use an XHTML doctype, but if you remove the doctype altogether the problem goes away.</p>
<p>
	So, what do you think? Am I doing something wrong by styling an inline element with block? Is it a bug or a feature of the "most modern web browser"?</p>
<p>
	I imagine others will find this problem with some designs, though I will say that so far most of the skins/designs we ship with mojoPortal have tested out well in IE 9, so maybe it won't be that common.</p>
<br /><a href='http://www.joeaudette.com/ie-9-bug-not-all-links-are-right-clickable.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/ie-9-bug-not-all-links-are-right-clickable.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/ie-9-bug-not-all-links-are-right-clickable.aspx</link>
      <comments>http://www.joeaudette.com/ie-9-bug-not-all-links-are-right-clickable.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/ie-9-bug-not-all-links-are-right-clickable.aspx</guid>
      <pubDate>Thu, 17 Mar 2011 10:56:00 GMT</pubDate>
    </item>
    <item>
      <title>SEO Phone Spam</title>
      <description><![CDATA[<p>I often get these contact form submissions on joeaudette.com and on mojoportal.com where people are pitching to get my site to the top of google, no big deal, I delete them, but yesterday was the first time I got one by phone.</p>
<p>Yesterday at about 2PM I got a phone call on my cell phone from 951-813-2184 that went like this:</p>
<ol>
<li>me: hello?</li>
<li>caller: is this the tree service?</li>
<li>me: i think you have the wrong number</li>
<li>caller: are you Source Tree Solutions?</li>
<li>me: that is my company but it is a software company not a tree service</li>
<li>caller: oh, well you're listed in the yellow pages under tree service</li>
<li>me: that's news to me, I didn't know I had a listing in the yellow pages</li>
<li>caller: well are you interested in getting your site to the top of google?</li>
<li>me: oh my God, you gotta be kidding me</li>
<li>caller: well what do you do for advertising</li>
<li>me: Dude! you don't know the first thing about me, my business or my web site, I don't need your SEO spam phone calls, please never call this number again, click</li>
</ol>
<p>I chuckled for about 15 minutes after that, but hope it is not the start of a trend of spammy phone calls.</p><br /><a href='http://www.joeaudette.com/seo-phone-spam.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/seo-phone-spam.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/seo-phone-spam.aspx</link>
      <comments>http://www.joeaudette.com/seo-phone-spam.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/seo-phone-spam.aspx</guid>
      <pubDate>Wed, 30 Jun 2010 15:05:32 GMT</pubDate>
    </item>
    <item>
      <title>Solving the ASP.NET UpdateProgress Div Problem</title>
      <description><![CDATA[<h3>&nbsp;Introduction - What is the ASP.NET UpdateProgress Control?</h3>
<p>The UpdateProgress control is a very handy control meant for use in conjunction with an ASP.NET UpdatePanel. The UpdatePanel is an ajax control that makes it very easy to update part of a page using an ajax postback rather than a full postback. This avoids page flicker and also leaves the page not in a postback state, that is, a subsequent refresh of the browser won't force a postback. The UpdateProgress control is desinged to make it easy to show some markup while the update is happening to give the user a visible cue that something is happening. So a typical trick is to show an animated working indicator something like this&nbsp;<img src="http://www.joeaudette.com/Data/Sites/2/indicator1.gif" alt="working indicator" width="16" height="16" /></p>
<p>So you would add the UpdateProgress control inside the UpdatePanel something like this:</p>
<p>&lt;asp:Button ID="btnSavePreferences" runat="server" /&gt;<br /> &lt;asp:UpdateProgress ID="progress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1"&gt;<br /> &lt;ProgressTemplate&gt;<br /> &lt;img src='&lt;%= Page.ResolveUrl("~/Data/SiteImages/indicators/indicator1.gif") %&gt;' alt=' ' /&gt;<br /> &lt;/ProgressTemplate&gt;<br /> &lt;/asp:UpdateProgress&gt;</p>
<h3>The Problem - Block Rendering instead of Inline Rendering</h3>
<p>The problem is that the UpdateProgress control renders as a div element which is a block element rather than an inline element, so instead of rendering the indicator right next to your button, it renders it below your button on a new line. In some cases that may be ok, but if you really want the indicator to just be right next to the button it's a problem. I came across this situation recently in my work on <a href="http://www.mojoportal.com">mojoPortal</a> and I really wanted to show the indicator in the same line as the button, it gave a bad effect for the indicator to jump below the button. So I did some searching on the internet and found a number of people complaining about this problem and a few less than satisfactory suggestions for solving it.</p>
<ul>
<li><a href="http://forums.asp.net/t/972473.aspx">A post on the ASP.NET Forums</a></li>
<li><a href="http://aspnetresources.com/blog/updateprogress_always_renders_div.aspx">ASP.NET Resources post</a> - suggested a way to make it render in the middle rather than below but not really what I was after.</li>
<li>The last comment on the above post suggested using !Important in the css to force inline rendering. I'm not sure if that really works because the javscript associated with the UpdateProgress sets it to block when it shows the content. Also, the !Important is not used by IE 6 unless in standards compliant mode which is not the default and not commonly used in IE 6.</li>
<li><a href="http://jvk-codex.blogspot.com/2009/06/aspnet-updateprogress-display-inline.html">James Van Klink suggested another solution</a>, of wrapping the UpdateProgress inside a span and use absolute positioning on the span. However this produces invalid markup, <a href="http://wnas.nl/invalid-html">you are not supposed to nest block elements inside inline elements</a>.</li>
<li><a href="http://stackoverflow.com/questions/42499/aspupdateprogress-surpressing-the-line-break">Another solution was posted on stackoverlfow.com</a>, but it seems less elegant than I would like.</li>
</ul>
<p>So, in summary, the problem is that it renders as a div which is a block element and the javascript associated with the control changes from display:none; to display:block when the UpdatePanel is updating.</p>
<h3>The Solution- Borrow The UpdateProgress control from the Mono Project and modify it.</h3>
<p>What I really wanted was to make the UpdateProgress control render as a span which is an inline element and I wanted the javascript to toggle between display:none; and display:inline;. Often, when I face a situation where an ASP.NET control cannot be coerced into rendering or behaving as I would like, I have found that I can borrow the <a href="http://www.mono-project.com/Main_Page">Mono Project</a> implementation of the ASP.NET control and modify it to meet my needs. Sometimes its more difficult than others to use this approach depending on what mono internals it may be using, but in this case it was fairly easy.</p>
<p>First I grabbed the UpdateProgress.cs from the Mono source code and added it to my project as UpdateProgressSpan.cs and changed the namespace to match my own project. Then it was fairly simple to change the rendering to use a span instead of a div. However, the problem still remained that the javascript would set the display to block which would still make the span render as a block just like a div. So I scrounged around in the javascript for ms ajax and found the relevant part for UpdateProgress. I copied it into my own javascript file, changed the namespace, and modified it to use display:inline instead of display:block.</p>
<p>The only changes I had to make in my UpdateProgressSpan.cs were:</p>
<p>1. In OnPreRender I had to tell it about my javascript like this:</p>
<p>ScriptReference SRef = new ScriptReference();<br /> SRef.Path = "~/ClientScript/ajaxupdateprogressspan.js";<br /> ScriptManager.Scripts.Add(SRef);<br /> ScriptManager.RegisterScriptControl(this);</p>
<p>2. In Render, I changed it to use Span instead of div and use inline instead of block.</p>
<p>3. In the GetScriptDescriptors method I changed it from referencing the original ms ajax to use my custom one like this:</p>
<p>ScriptControlDescriptor descriptor = new ScriptControlDescriptor("mojo._UpdateProgress", this.ClientID);</p>
<p>Finally in my page I used my custom control instead of te ASP.NET version like this:</p>
<p>&lt;asp:Button ID="btnSavePreferences" runat="server" /&gt;<br /> &lt;portal:UpdateProgressSpan ID="UpdateProgress2" runat="server" AssociatedUpdatePanelID="UpdatePanel1" &gt;<br /> &lt;ProgressTemplate&gt;<br /> &lt;img src='&lt;%= Page.ResolveUrl("~/Data/SiteImages/indicators/indicator1.gif") %&gt;' alt=' ' /&gt;<br /> &lt;/ProgressTemplate&gt;<br /> &lt;/portal:UpdateProgressSpan&gt;</p>
<p>Problem solved, the working indicator displays right next to the button.</p>
<p>If you would like to use this in your project, feel free, <a href="http://www.joeaudette.com/Data/Sites/2/UpdateProgressSpan.zip">here is a .zip</a> with the files.</p><br /><a href='http://www.joeaudette.com/solving-the-aspnet-updateprogress-div-problem.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/solving-the-aspnet-updateprogress-div-problem.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/solving-the-aspnet-updateprogress-div-problem.aspx</link>
      <comments>http://www.joeaudette.com/solving-the-aspnet-updateprogress-div-problem.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/solving-the-aspnet-updateprogress-div-problem.aspx</guid>
      <pubDate>Mon, 09 Nov 2009 14:58:00 GMT</pubDate>
    </item>
    <item>
      <title>How To Use jQueryUI Tabs in Right To Left Layout</title>
      <description><![CDATA[<p>Recently I've begun using the <a href="http://jqueryui.com/demos/tabs/">jQueryUI tabs</a> in <a href="http://www.mojoportal.com">mojoPortal</a> as an alternative to <a href="http://developer.yahoo.com/yui/tabview/">YUI tabs</a>. I still like the YUI tabs but there is only 1 skin available currently for YUI tabs, whereas there are a 18 themes for the jQuery UI tabs, so its likely that at least one of them will look good with a particular mojoPortal skin. This has got me thinking about switching to use the jQuery tabs in many or most places where we use YUI tabs. I still need to test a few things like making sure I can use FCKeditor inside the tabs like I can with the YUI tabs. One thing I like about the YUI tabs is that they automatically adjust to right to left layout if they are contained within and element with direction:rtl in the css.</p>
<p>I was worried at first whether the jQuery Tabs would support right to left layout because when I googled for it I could not find any explnations how to make the tabs layout from right to left. I found a number of people asking about it on mailing lists and forums but no-one offering any answers. So I used Firebug to study the css classes assigned to the elements and figured out the things that need to be overridden to make it layout from right to left. I thought I should post it since clearly there are people looking for hep with this. Its actually very straightforward, you include the normal css for the jquery ui theme, and you add another css file below it in the page (it must be lower in the page in order to override the style settings above it in the jquery ui css). There is only a little css needed because we want to override the minimum possible style settings, this is what is needed:</p>
<p>.ui-tabs { direction: rtl; }<br />
.ui-tabs .ui-tabs-nav li.ui-tabs-selected,<br />
.ui-tabs .ui-tabs-nav li.ui-state-default {float: right;  }<br />
.ui-tabs .ui-tabs-nav li a { float: right;  }</p>
<p>I tested it with all 18 jQuery UI themes and it worked great. I hope this is helpful to others.</p>
<p><img alt="screen shot of jquery tabs in right to left layout" width="235" height="131" src="http://www.joeaudette.com/Data/Sites/2/jquery-tabs-rtl.png" /></p>
<p>&#160;</p><br /><a href='http://www.joeaudette.com/how-to-use-jqueryui-tabs-in-right-to-left-layout.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/how-to-use-jqueryui-tabs-in-right-to-left-layout.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/how-to-use-jqueryui-tabs-in-right-to-left-layout.aspx</link>
      <comments>http://www.joeaudette.com/how-to-use-jqueryui-tabs-in-right-to-left-layout.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/how-to-use-jqueryui-tabs-in-right-to-left-layout.aspx</guid>
      <pubDate>Sat, 09 May 2009 15:00:00 GMT</pubDate>
    </item>
    <item>
      <title>System.Configuration.ConfigurationPermission in Medium Trust</title>
      <description><![CDATA[<p>As I mentioned in my <a href="http://www.joeaudette.com/log4net-messages-truncated-the-fix.aspx">previous post</a>, I was doing some testing today of <a href="http://www.mojoportal.com/">mojoPortal</a> under Medium Trust and was trying to resolve some issues. In most situations mojoPortal can be configured to run in Medium Trust, but occasionaly people have <a href="http://www.mojoportal.com/ForumThreadView.aspx?thread=1799&amp;mid=34&amp;pageid=5&amp;ItemID=3">reported System.Configuration.ConfigurationPermission exceptions</a>. I have not been able to reproduce that problem on my development machine. I add this to Web.config to configure medium trust for testing purposes: <br />
&lt;trust level="Medium" originUrl="" /&gt;</p>
<p>So today I encountered this exception on a new machine running in Medium Trust. Its not always easy to find out what is causing an exception like this because you don't get a lot of information in the stack trace, but I was able to pin it down to System.Web.Extensions.dll which is the MS AJAX library. We include this dll in the /bin folder with mojoPortal releases and in Full Trust this is ideal because we don't care if the dll is installed on the machine or not, but in Medium Trust, this dll can not run from the bin folder, it must be installed in the GAC (Global Assembly Cache) on the server. If it is installed in the GAC, the copy in the /bin folder will be ignored and the one in the GAC will be used. But if its not installed and the machine is configured for Medium Trust it will cause this mysterious SecurityException with System.Configuration.ConfigurationPermission.</p>
<p>So the reason I was never able to reproduce the problem on my development machine was because I already had this installed in the GAC. If you install the ASP.NET 2.0 AJAX 1.0 using&#160; ASPAJAXExtSetup.msi, it installs it in the GAC on your machine. Your only solution to this at a web host is for the host to install it on the server.</p><br /><a href='http://www.joeaudette.com/systemconfigurationconfigurationpermission-in-medium-trust.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/systemconfigurationconfigurationpermission-in-medium-trust.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/systemconfigurationconfigurationpermission-in-medium-trust.aspx</link>
      <comments>http://www.joeaudette.com/systemconfigurationconfigurationpermission-in-medium-trust.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/systemconfigurationconfigurationpermission-in-medium-trust.aspx</guid>
      <pubDate>Fri, 10 Oct 2008 18:53:40 GMT</pubDate>
    </item>
    <item>
      <title>log4net Messages Truncated - The Fix!</title>
      <description><![CDATA[<p>I was doing some testing today of <a href="http://www.mojoportal.com">mojoPortal</a> under Medium Trust and was trying to resolve some issues. In most Medium Trust hosting situations mojoPortal can be configured to run in Medium Trust, but occasionaly people have <a href="http://www.mojoportal.com/ForumThreadView.aspx?thread=1799&amp;mid=34&amp;pageid=5&amp;ItemID=3">reported System.Configuration.ConfigurationPermission exceptions</a>. I have not been able to reproduce that problem on my development machine. I add this to Web.config to configure medium trust for testing purposes: <br />
&lt;trust level="Medium" originUrl="" /&gt;</p>
<p>I found <a href="http://haacked.com/archive/2006/07/09/configuringlog4netwithasp.net2.0inmediumtrust.aspx">this blog</a> post by Phil Haack, where he mentioned that using an external config file with log4net could cause this exception and that moving the configuration into Web.config could solve it. Though he later updated that post and now says that it can work with an external file, I figured it was at least worth a try in case it is log4net causing this exception on some installations of mojoPortal. So I move the configuration into the Web.config file and a strange thing happened, the log messages started getting truncated to about 30 characters. So I did some googling for "log4net messages truncated" and found a number of messages about it but no real solution mentioned so I started reading more of the log4net <a href="http://logging.apache.org/log4net/release/sdk/log4net.Layout.PatternLayout.html">documentation about the PatternLayout</a>. I thought maybe this truncation was related to PatternLayout so I changed the config to use SimpleLayout and sure enough the messages were no longer truncated. But I wanted to use PatternLayout as I have all along if possible. Originally my configuration was like this:</p>
<p>&lt;layout type="log4net.Layout.PatternLayout"&gt;<br />
&lt;conversionPattern value="%date [%thread] %-5level %logger [%property{url}] - %message%newline" /&gt;<br />
&lt;/layout&gt;</p>
<p>So I started chopping things out to see if any particular setting was the culprit and indeed it turned out to be the [%property{url}] that was causing the problem. It still seems like a log4net bug, but its strange that it only happens when not using an external config file for log4net.</p>
<p>So for me the solution was just to remove that part of the pattern so my current configuration is like this:</p>
<p>&lt;layout type="log4net.Layout.PatternLayout"&gt;<br />
&lt;conversionPattern value="%date %level %logger - %message %newline" /&gt;<br />
&lt;/layout&gt;</p>
<p>Just figured after all the time I spent figuring this out that I should blog it in case others are having the same trouble.</p>
<p>Now I'm still not sure if moving the log4net configuration into Web.config is going to solve the rogue medium trust issue that happens on some machines. If I can figure that one out it will be worth posting about it as well.</p><br /><a href='http://www.joeaudette.com/log4net-messages-truncated-the-fix.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/log4net-messages-truncated-the-fix.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/log4net-messages-truncated-the-fix.aspx</link>
      <comments>http://www.joeaudette.com/log4net-messages-truncated-the-fix.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/log4net-messages-truncated-the-fix.aspx</guid>
      <pubDate>Fri, 10 Oct 2008 15:37:40 GMT</pubDate>
    </item>
    <item>
      <title>Disabling a button inside an UpdatePanel causes events to fire twice in Firefox</title>
      <description><![CDATA[<p>Those of you who do a lot of web development like me are used to occasional issues where client side code doesn't work the same across browsers, but less common and perhaps more pesky are bugs where things run differently on the server depending on the browser. We typically don't expect things to happen differently on the server due to the browser but sometimes they do.</p>
<p>I ran into this strange issue where events were firing twice for postbacks from Firefox but were firing normally when using IE. When you see double postbacks happening in the log, your first thought would be that the impatient user clicked the button twice, but in this case I knew that wasn't true because I was the user and also I have code to disable the button after it is clicked to prevent double postback. There is a very common technique used by many ASP.NET developers to do this. In mojoPortal we have a helper method that encapsulated it so we just pass in the button and text to show when its disabled like this:</p>
<p>UIHelper.DisableButtonAfterClick(<br />
btnUpdate,<br />
Resource.ButtonDisabledPleaseWait,<br />
Page.ClientScript.GetPostBackEventReference(this.btnUpdate, string.Empty) );<br />
&#160;</p>
<p>and the guts of the method look like this:</p>
<p>public static void DisableButtonAfterClick(<br />
WebControl button, <br />
string disabledText,<br />
string postbackEventReference)<br />
{<br />
if (button == null) return;<br />
button.Attributes.Add("onclick", "this.value='"<br />
+ disabledText<br />
+ "';this.disabled = true;"<br />
+ postbackEventReference);<br />
}</p>
<p>The irony of it is that disabling a button inside an updatepanel actually causes double post back if the browser is Firefox. So the very code we are using to try and prevent double postback actually causes it to happen. All the events fire twice, OnInit, PageLoad and the button click event. Very strange indeed. The symptom doesn't happen in IE, and removing the code that disables the button fixes the problem in Firefox and events fire normally again, that is just once. So we are back to the problem of how to prevent the user from clicking the button twice if the button is inside an UpdatePanel. Our old way works in IE (and works in general outside of UpdatePanels) but actually causes double postback in Firefox.</p>
<p>I did some googling and found where <a href="http://forums.asp.net/t/1201941.aspx">someone else has reported this</a>. I also found <a href="http://encosia.com/downloads/postback-ritalin">a free dll that solves it</a>, but its not open source so I can't use it.</p>
<p>I wish I was posting a solution for this problem, but for the moment I've just gone with not disabling the button. If I find a good solution I'll update this post. but thought it worth mentioning for anyone else who is seeing double postbacks in Firefox. I will say my searches found a number of things that can cause double postback in Firefox, so this isn't the only possible cause to consider. For example if a page has an &lt;asp:Image on it and the ImageUrl has not been specified, that apparently also causes double postbacks in Firefox.</p>
<p>&#160;</p><br /><a href='http://www.joeaudette.com/disabling-a-button-inside-an-updatepanel-causes-events-to-fire-twice-in-firefox.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/disabling-a-button-inside-an-updatepanel-causes-events-to-fire-twice-in-firefox.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/disabling-a-button-inside-an-updatepanel-causes-events-to-fire-twice-in-firefox.aspx</link>
      <comments>http://www.joeaudette.com/disabling-a-button-inside-an-updatepanel-causes-events-to-fire-twice-in-firefox.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/disabling-a-button-inside-an-updatepanel-causes-events-to-fire-twice-in-firefox.aspx</guid>
      <pubDate>Mon, 29 Sep 2008 18:42:19 GMT</pubDate>
    </item>
    <item>
      <title>Vista 64 bit Is the Place to be for Developing in Visual Studio</title>
      <description><![CDATA[<p>I've finally come full circle and am happy developing on Vista again. I was an <a href="http://www.joeaudette.com/windows-vista-all-shiny-new.aspx">early adopter</a> and over time I've <a href="http://www.joeaudette.com/why-does-it-take-so-freaking-long-to-delete-files-in-vista.aspx">complained</a> about Vista a <a href="http://www.joeaudette.com/windows-vista---1-month-and-the-honeymoon-is-over.aspx">few times</a>, so I think its only fair to be just as vocal now that I'm happy with it. In retrospect I think the main problem was that I upgraded a machine that was several years old and it just wasn't powerful enough.</p>
<p>Ever since <a href="http://www.joeaudette.com/for-a-developer-a-fast-new-machine-is-bliss.aspx">I got new workstation</a>, development has been a joy, productivity is high. Visual Studio solutions load fast, build fast, and debug fast. With 64 bit Vista you can use a lot more ram. I've got 8 gigs now where before 32 bit Vista/XP could only use 3 gigs. I've got a fast dual core processor (if I had it to do over I would spend more and go quad core). Also 10,000rpm drives make a big difference.</p>
<p>I can't even imagine going back to a 32 bit machine for day to day development. If you are struggling with VS on a slow machine its well worth the investment to get a new 64 bit workstation.</p><br /><a href='http://www.joeaudette.com/vista-64-bit-is-the-place-to-be-for-developing-in-visual-studio.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/vista-64-bit-is-the-place-to-be-for-developing-in-visual-studio.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/vista-64-bit-is-the-place-to-be-for-developing-in-visual-studio.aspx</link>
      <comments>http://www.joeaudette.com/vista-64-bit-is-the-place-to-be-for-developing-in-visual-studio.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/vista-64-bit-is-the-place-to-be-for-developing-in-visual-studio.aspx</guid>
      <pubDate>Mon, 29 Sep 2008 17:41:23 GMT</pubDate>
    </item>
    <item>
      <title>Google Chrome Has Some Shine!</title>
      <description><![CDATA[<p>I spent the day today using <a href="http://www.google.com/chrome">Google Chrome</a> as my browser and I have to say I'm very impressed with it. I like the UI and its so fast! I've always heard that web kit was fast but never tried it so maybe its web kit that should get the credit since Chrome is based on web &nbsp;kit.</p>
<p>When I first tried <a href="http://www.mojoportal.com">mojoPortal</a> this morning using Chrome, the FCKeditor wasn't enabled and it was degrading to a plain text area. This turned out to be just a configuration issue in .NET code I had FCKeditor disabled for Safari. FCKeditor has claimed support for Safari for a while now but when I tested it after their initial support announcement it didn't work for me so I disabled it in mojoPortal. Then I kind of forgot about it for a while since I don't use Safari on a regular basis. Its been several upgrades of FCKeditor since I had tested so I tried enableing it again and it worked fine both in Safari and in Chrome.</p>
<p>So then with more poking around testing things in mojoPortal I found a couple of other things that didn't work like my friendly url suggest feature. It turned out that this was easily fixed by upgrading to the new version of <a href="http://dev.abiss.gr/sarissa/">Sarissa</a>. Sarissa is a javascript library I use in a few features in mojoPortal and I had not upgraded it in a long time.</p>
<p>My fixes for these things will be in the mojoPortal svn trunk sometime later tonight and I'll be making a new release soon.</p>
<p>I feel a little worried for Mozilla and Firefox. I've been using Firefox for a long time as my main browser but I have to admit Chrome is very appealing and I may not go back to Firefox as my main browser. Of course I'll continue testing in all the major browsers. Some people are complaining that we now have one more browser to test but so far the rendering of mojoPortal has seemed really good so I'm not too concerned about that. I subscribe to the GAWDS (Guild of Accessible Web Designers) mailing list and there was a lot of talk in the last 2 days about accessibility problems with Chrome particulary for assistive technology like screen readers, but word is there will be improvement on that, after all its just a beta.&nbsp;</p>
<p>I'm sure they will be adding more polish to Chrome, but I would say this beta is a great start. The EULA gives me pause and I hope they change that based on feedback but I give them kudos for the first release. My only other concern is whether use of Chrome is making any more information about me available to google than if I use another browser. If using Chrome meeans sacrificing more privacy than other browsers it won't become my main browser. I also hope that since Silverlight works in Safari, it will also work in Chrome.</p>
<p>I made this post in my blog using Chrome.</p><br /><a href='http://www.joeaudette.com/google-chrome-has-some-shine.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/google-chrome-has-some-shine.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/google-chrome-has-some-shine.aspx</link>
      <comments>http://www.joeaudette.com/google-chrome-has-some-shine.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/google-chrome-has-some-shine.aspx</guid>
      <pubDate>Wed, 03 Sep 2008 23:35:10 GMT</pubDate>
    </item>
    <item>
      <title>My Personal Phone History</title>
      <description><![CDATA[<p>These are all the cell phones I've ever had.</p>
<p><img height="330" width="440" src="http://www.joeaudette.com/Data/Sites/2/joe-phones-small.jpg" alt="picture of all the cell phones I've had" /></p>
<p>I remember when I first got that Samsung clamshell phone on the left, gosh, how long ago was that 1997, 98 99? Somewhere in there I'm sure. I remember being so excited about that phone when I first got it. As a kid I had always fantasized about those communicators they used on Star Trek and when I got this phone it was like the realisation of a childhood dream. I got rid of my land line pretty soon after that and haven't had one since. </p>
<p>I was pretty excited when PocketPC phones first came out. Being a Web Developer, the idea of always having access to the internet wherever my phone worked seemd like a dream. I think I got that phone around 2002 or 2003 and at the time I gave my old phone to my younger brother Frank who lived in North Carolina (I was living in TN at the time). It really wasn't a compelling internet experience, and though I kept it until long after my service contract expired, I got really tired of carrying around that big phone. I mean if you put it in your pocket people were like &quot;hey is that the internet in your pocket or are you just happy to see me?&quot;. It was really a phone that needed a belt clip like Batman, but I really wasn't into that belt clip thing.</p>
<p>So then I got the Razr, must have been around 2004 or 2005, again I gave my old PocketPC phone to my younger brother Frank. I was much happier with the Razr, it was slick, it was small, and it was a joy to stop carrying that old boat anchor PocketPC.</p>
<p>Last month I got an iPhone. Its way beyond any phone I ever imagined seeing in my lifetime. Its got a compelling web surfing experience, and yet it fits nicely in your pocket without raising eyebrows. I know a lot of people like a physical keyboard and those folks tend to like Blackberries. I suppose if I was answering a lot of email with my phone I might wish for a real keyboard too. Honestly I haven't yet answered an email with my iPhone. For me its more about knowing whether I have important mail at any time than actually responding to it from my phone. It can usually wait until I'm near a computer again. After all, I'm near a computer about 95% of the time. For me its just another convenient way to service my internet addiction. I work long days and then finally collapse and watch movies at the end of the day when I can no longer keep going. I used to find myself getting up from the couch a lot just to check if any new mail had come in, or see <a href="http://www.mojoportal.com/community.aspx">how many people are on mojoPortal.com</a>. Now I don't have to get up off the couch. In some ways I like the Facebook experience better on the iPhone than on a computer. I love having a lot of my music collection in my phone, love the GPS. Its a really great device.</p>
<p>So I thought again whether I should offer my old Razr to my younger brother Frank. The funny thing is, now that I'm living in North Carolina, I find out he never activated or used any of the phones I ever gave him, thats how I'm now able to take a picture of them all together. He hasn't committed to a new phone contract for like eight years now. He's still using this old monstrosity:</p>
<p><img height="341" width="180" src="http://www.joeaudette.com/Data/Sites/2/franksphone.jpg" alt="my brothers old dinosaur phone" /></p>
<p>We're talking dinosaur phone. Not only that but he relies on this thing for all his communication and he lost the battery charger years ago, so he can only charge it now in his car and he's been doing this for years. I'd say he's way over due for a new phone.</p><br /><a href='http://www.joeaudette.com/my-personal-phone-history.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/my-personal-phone-history.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/my-personal-phone-history.aspx</link>
      <comments>http://www.joeaudette.com/my-personal-phone-history.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/my-personal-phone-history.aspx</guid>
      <pubDate>Wed, 27 Aug 2008 16:53:55 GMT</pubDate>
    </item>
    <item>
      <title>Aliens are Not Allowed to Swim Here!</title>
      <description><![CDATA[<p><img height="432" width="324" src="http://www.joeaudette.com/Data/Sites/2/noalienswimming.jpg" alt="No Swimming sign that looks like its for Aliens" /></p>
<p>I walk by this sign almost every day when I go for my exercise walks at the park, its always struck me as funny. Today I took this picture with my iPhone.</p><br /><a href='http://www.joeaudette.com/aliens-are-not-allowed-to-swim-here.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/aliens-are-not-allowed-to-swim-here.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/aliens-are-not-allowed-to-swim-here.aspx</link>
      <comments>http://www.joeaudette.com/aliens-are-not-allowed-to-swim-here.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/aliens-are-not-allowed-to-swim-here.aspx</guid>
      <pubDate>Fri, 15 Aug 2008 11:06:57 GMT</pubDate>
    </item>
    <item>
      <title>Beware of Social Engineering Email Attacks</title>
      <description><![CDATA[<p>I got this email this morning which is definitely NOT from Yahoo, but from someone hoping I will send them my password. Its another identity theft scam. The interesting thing is there is no phishing in it, no links to bogus sites and its clever enough I worry whether more naive family members and friends may be taken in by it. It starts with a little marketing about cool new stuff to make it seem legit, but the hook is the fear of losing your account if you don't comply. The fact that there aren't any phishing links also tempts one to think its real. But Yahoo nor any site you have an account with, would never ask you to email them your username and password. Scary to think how many people will probably do what it says.</p>
<p>&nbsp;</p>
<p>&quot;The All-New Yahoo! You Must Be A Part Of It To Avoid De-activativation Of Your Yahoo Account.</p>
<p>The All-New Yahoo! Mail Beta Is:<br />
Faster: Fewer steps to get things done.<br />
Easier: Drag &amp; drop organization.<br />
Effortless: Automatically checks email for you.</p>
<p><br />
With the all-new Yahoo! Mail Beta you must fill the Informations Below To Verify Your Account, PleaseThis For Your Benefit. Read Below To Understand More.</p>
<p>Dear Yahoo User,</p>
<p>Due to the congestion of Yahoo users, Yahoo would be shutting down all unused Accounts, You will have to confirm your E-mail by filling out your Login Information below after clicking the reply button, or your account will be suspended within 24 hours for security reasons.</p>
<p>* Username: .................................</p>
<p>* Password: ...................................</p>
<p>* Date of Birth: ................................</p>
<p>* Country Or Territory: .................................</p>
<p>After following the instructions in the above, your account will not be interrupted and will continue as normal. Thanks for your attention to this request. We apologize for any inconveniences.</p>
<p>Warning!!! Whosoever that refuses to update his/her account after two weeks of receiving this warning will lose his or her account permanently.Until then, feel free to visit our online help center at<br />
http://help.yahoo.com/<br />
for answers if you have not already done so.&quot;</p><br /><a href='http://www.joeaudette.com/beware-of-social-engineering-email-attacks.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/beware-of-social-engineering-email-attacks.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/beware-of-social-engineering-email-attacks.aspx</link>
      <comments>http://www.joeaudette.com/beware-of-social-engineering-email-attacks.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/beware-of-social-engineering-email-attacks.aspx</guid>
      <pubDate>Fri, 15 Aug 2008 10:53:28 GMT</pubDate>
    </item>
    <item>
      <title>For a Developer a Fast New Machine is Bliss</title>
      <description><![CDATA[<p>I got a new machine about a week ago for my main development system and I am so happy with the improved speed. My previous machine had become so slow it was really getting in my way all the time. I had upgraded it to Vista about a year ago and after 8 months it became unusable, so I kind of blamed Vista and I went back to XP. After a clean install of XP it seemed better again for a little while but then I started using Visual Studio 2008. At first it was tolerable then it became worse over time and it was getting very frustrating waiting for it to do whatever its doing in the background all the time before I could do what I need to do. It was just getting in my way and hurting my productivity and attitude. So finally I realized, hey, this machine is 3 years old, I'm a developer, I need a new faster machine, its crazy for me to limp along on this old hardware.</p>
<p>I bought an HP Workstation for about $2,350 plus tax and shipping with no monitor, keyboard or mouse, as I already have that stuff.&nbsp; So far its so much faster than anything I've used I'm really happy with it. I got 8GB of RAM and 2 10,000RPM drives and a fast Core Duo processor. If I had it to do over I'd probably spend more and get a Quad Core processor, but this machine is plenty fast. It opens large Visual Studio solutions almost instantly, builds are very fast, and development in general is a joy again because I'm not hindered waiting for my machine anymore. I'm running 64 bit Vista Business, obviously 64 bit since you can't address 8GB of ram with a 32 bit version of Windows. </p>
<p>I guess I waited so long because I'm in a self funded startup business and trying to be very frugal, but I think to be succesful I need to be very productive and to be very productive I need to have a responsive machine. It was worth every penny. Development is fun again.</p><br /><a href='http://www.joeaudette.com/for-a-developer-a-fast-new-machine-is-bliss.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/for-a-developer-a-fast-new-machine-is-bliss.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/for-a-developer-a-fast-new-machine-is-bliss.aspx</link>
      <comments>http://www.joeaudette.com/for-a-developer-a-fast-new-machine-is-bliss.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/for-a-developer-a-fast-new-machine-is-bliss.aspx</guid>
      <pubDate>Mon, 14 Jul 2008 15:49:41 GMT</pubDate>
    </item>
    <item>
      <title>PayPal sandbox doesn't work</title>
      <description><![CDATA[<p>As a software developer I've worked with a lot of APIs and developer tools over the years and had many good experiences and a few bad ones. The bad ones are where you waste a lot of time trying to get something to work and it just doesn't do what its supposed to. These kinds of things make you angry and make you resent the vendor because they make you look bad as a developer and they cost you a lot of time, and time is money. The worst cases are those where you have no real choice, you have to use the vendors products or APIs.&nbsp; The latest bad experience I've had is with PayPal. Their developer sandbox just doesn't work and its been eating up my time trying to make it work. I have followed the API documentation closely and am 100% sure I'm doing the right things in my code but it doesn't work. Yet, how can I ignore PayPal if I want to implement ecommerce? I can't because they are the most popular provider. I simply have to get it working. Maybe I will have to test on their production site and then issue refunds. This is what some others have resorted to if you read their forums. You end up paying the transaction fees though even if you do issue refunds. Its a wonder to me that PayPal is so dominant given these shortcomings. I've implemented google checkout and Authorize.NET and they both worked as expected using their sandboxes.</p>
<p>I've created a Camtasia movie <a href="http://www.joeaudette.com/paypalsandboxproblems/">here</a> showing the problems, but to summarize:</p>
<p>PayPal offers 2 products, PayPal Express and PayPal Pro/ Direct Pay. The Direct Pay allows you to charge the customer right from your own site by letting them enter their credit card info, this costs you $30/month to enable the service. Express checkout doesn't have this monthly fee but requires the user to pay at the paypal site with their paypal account.</p>
<p>Using the NVP (Name Value Pair) API to process Express checkout, the process is.</p>
<p>1. Make a call to the PayPal NVP web service using the SetExpressCheckout call. You recieve back a paypaltoken and then you redirect the user to paypal passing this same token. This call works as expected, you get the token and you redirect.</p>
<p>2. After the customer pays at PayPal, PayPal redirects them back to your designated page and passes the paypaltoken again. Its the same token as the one returned from the previous call to SetExpressCheckout. Next you are supposed to call GetExpressCheckoutDetails passing the same token back to PayPal. This call fails with the error &quot;Security header is not valid&quot;. When you look this up or google it, its supposed to mean that you did not pass the correct API credentials, but believe me, I'm passing the right credentials and its the same credentials that worked fine in the call to SetExpressCheckout. If the call to GetExpressCheckoutDetails worked as its supposed to, the next step would be to call DoExpressCheckoutPayment which is where the order would be completed.</p>
<p>To use the DirectPay API you need to accept the billing agreement which would cost you $30/month on production but should be free on the sandbox. However, when you click the I Agree button in the sandbox account it doesn't work so you can't get your sandboz account enabled to use the DirectPay API.</p>
<p>So, in short, the PayPal sandbox just doesn't work. You can't reliably test the Expess Checkout or the DirectPay API. You would think the so called industry leader in payment processing could do a better job with this. PayPal are you listening? Please please please fix this crap and stop making me waste my time. Are you really going to make me use the production site for testing? Is that some angle to help you squeeze me for $30/month or are you just incompetant?</p>
<p>UPDATE: In case you think I'm being too hard on PayPal, I captured <a href="http://www.joeaudette.com/paypalsupportticket/">another little video to show how difficult it is to file a support ticket</a>. I have not figured out how to do it yet. I had this same problem yesterday which is why I resorted to blogging in hopes of getting some attention from PayPal to address the sandbox problems.</p>
<h4>&nbsp;UPDATE 2008-07-11:</h4>
<p>I've had a lot better luck with testing the PayPal Standard API in the sandbox, but still no joy when trying PayPal Pro APIs.</p>
<h5>PayPal Standard</h5>
<p>Buy Now button works as expected</p>
<p>Cart Upload works as expected</p>
<p>PDT (Payment Data Transfer) works as expected</p>
<p>IPN (Instant Payment Notification) works as expected</p>
<h5>PayPal Pro NVP (Name Value Pair) API</h5>
<p>PayPalDirect&nbsp; - test with expired card returns correct error</p>
<p>PayPalDirect - test with anvalid expiry date format returns correct error</p>
<p>PayPalDirect - test with valid non expired test card Visa 4111111111111111 fails with invalid card message, error code 10759 -this should not happen</p>
<p>SetExpressCheckout - works as expected returns a token</p>
<p>GetExpressCheckoutDetails - fails with invalid security header message, error code 10002</p>
<p>DoExpressCheckoutPayment - can't be called due to invalid respons from GetExpressCheckoutDetails</p>
<h4>UPDATE 2008-07-12</h4>
<p>Somehow today I managed to get ExpressCheckout working. I'm really not sure whether it was something I changed in the code or the sandbox just started working right but its been reliable for testing all day today. I've done some refactoring but haven't changed any logic, at least I don't think I have, but in any case I'm glad its working.</p>
<h4>UPDATE 2008-07-14</h4>
<p>Success! Today I got PayPal DirectPayment API working in the sandbox. Its rather slow so you have to put a long timeout on the web request to the sandbox, but its working. So, now I have got everything working in the PayPal sandbox for PayPal Standard and PayPal Pro. </p><br /><a href='http://www.joeaudette.com/paypal-sandbox-doesnt-work.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/paypal-sandbox-doesnt-work.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/paypal-sandbox-doesnt-work.aspx</link>
      <comments>http://www.joeaudette.com/paypal-sandbox-doesnt-work.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/paypal-sandbox-doesnt-work.aspx</guid>
      <pubDate>Sun, 29 Jun 2008 14:14:58 GMT</pubDate>
    </item>
    <item>
      <title>I Can't Resist I'm Gonna Get a 3g iPhone</title>
      <description><![CDATA[<p>I followed the Apple WWDC keynote today and I'm sold, hook line and sinker, I want an iPhone.</p>
<p>And I can justify it too because its not as expensive as it was and I'm a web developer so I have to be able to test the <a href="http://www.mojoportal.com">mojoPortal</a> experience on an iPhone since a lot of people are viewing the web with it and more will be soon with 3G. Yeah thats the ticket, I &quot;have to&quot; have one for work. See how easy that was.</p>
<p>Only problem now is July 11 seems a long time to wait, I'm impatient, I want it now :-D</p><br /><a href='http://www.joeaudette.com/i-cant-resist-im-gonna-get-a-3g-iphone.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/i-cant-resist-im-gonna-get-a-3g-iphone.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/i-cant-resist-im-gonna-get-a-3g-iphone.aspx</link>
      <comments>http://www.joeaudette.com/i-cant-resist-im-gonna-get-a-3g-iphone.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/i-cant-resist-im-gonna-get-a-3g-iphone.aspx</guid>
      <pubDate>Mon, 09 Jun 2008 21:41:47 GMT</pubDate>
    </item>
    <item>
      <title>Imeem Social Playlist Sharing - Mix Tapes for the Web 2.0 Generation</title>
      <description><![CDATA[<p>I had not looked at <a href="http://www.imeem.com">Imeem.com</a> in quite while, once upon a time it was mostly about groups and the convenience of a chat client that worked across services. Now its something totally cooler. You can create playlists and share them not only on the imeem site but on other social networking sites like <a href="http://www.facebook.com">Facebook</a> or even embed them into your own site.</p>
<p>&nbsp;</p>
<object width="300" height="340">
<param value="http://media.imeem.com/pl/Qt0H8vyTyZ/aus=false/" name="movie" />
<param value="transparent" name="wmode" /><embed width="300" height="340" wmode="transparent" type="application/x-shockwave-flash" src="http://media.imeem.com/pl/Qt0H8vyTyZ/aus=false/"></embed></object>
<p>&nbsp;</p>
<object width="300" height="340">
<param value="http://media.imeem.com/pl/RFrX3ux6yM/aus=false/" name="movie" />
<param value="transparent" name="wmode" /><embed width="300" height="340" wmode="transparent" type="application/x-shockwave-flash" src="http://media.imeem.com/pl/RFrX3ux6yM/aus=false/"></embed></object>
<p>Wicked Cool!</p><br /><a href='http://www.joeaudette.com/imeem-social-playlist-sharing-mix-tapes-for-the-web-20-generation.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/imeem-social-playlist-sharing-mix-tapes-for-the-web-20-generation.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/imeem-social-playlist-sharing-mix-tapes-for-the-web-20-generation.aspx</link>
      <comments>http://www.joeaudette.com/imeem-social-playlist-sharing-mix-tapes-for-the-web-20-generation.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/imeem-social-playlist-sharing-mix-tapes-for-the-web-20-generation.aspx</guid>
      <pubDate>Sat, 19 Apr 2008 22:30:00 GMT</pubDate>
    </item>
    <item>
      <title>Software Wars Poster</title>
      <description><![CDATA[<p>Great <a href="http://port25.technet.com/archive/2008/04/04/putting-our-own-house-in-order.aspx">post today</a> on the Microsoft Port 25 blog. Very entertaining graphic about the &quot;software wars&quot;!</p>
<p><img width="363" height="259" alt="Software Wars poster" src="http://www.joeaudette.com/Data/Sites/2/softwarewarssmall.jpg" /></p>
<p>I had never seen this before but it just struck me as fascinating and it gave me a smile. So I googled &quot;Software Wars&quot; and found the larger original <a href="http://mshiltonj.com/software_wars/current/">here</a>.</p>
<p>&nbsp;</p>
<p>&nbsp;</p><br /><a href='http://www.joeaudette.com/software-wars-poster.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/software-wars-poster.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/software-wars-poster.aspx</link>
      <comments>http://www.joeaudette.com/software-wars-poster.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/software-wars-poster.aspx</guid>
      <pubDate>Fri, 04 Apr 2008 21:20:13 GMT</pubDate>
    </item>
    <item>
      <title>Yahoo Media Player - Sweet and Easy</title>
      <description><![CDATA[<p>I first read about <a href="http://developer.yahoo.com/mediaplayer/">Yahoo Media Player</a> a month or so back and I bookmarked it with the intention of using it on my site. I don't know why I waited, I must have just been too busy or absorbed in other things I was working on. I mean its a 2 minute job to integrate it, you just add a script to your page or in my case to the layout.master file in my <a href="http://www.mojoportal.com">mojoPortal</a> skin like this:</p>
<p>&lt;script type=&quot;text/javascript&quot; src=&quot;http://mediaplayer.yahoo.com/js&quot;&gt;&lt;/script&gt;</p>
<p>and thats all there is to it. Any page that has links to mp3 files now autmatically have little play buttons next to them.</p>
<p><a href="http://www.joeaudette.com/therealitysaladband.aspx"><img width="259" height="381" src="http://www.joeaudette.com/Data/Sites/2/yahoomediaplayerexample.png" alt="Yahoo Media Player automatically adds play buttons" /></a></p>
<p>Click the image above or visit this link to see it on my site: <a href="http://www.joeaudette.com/therealitysaladband.aspx">http://www.joeaudette.com/therealitysaladband.aspx</a></p>
<p>If you click a play button the player comes up at the bottom of the screen and has a playlist of all the mp3s linked on the page.</p>
<p>&nbsp;</p>
<p><img width="547" height="299" alt="" src="http://www.joeaudette.com/Data/Sites/2/yahoomediaplayerplaylist.png" /></p>
<p>&nbsp;</p>
<p>Pretty cool and so easy a caveman could do it.</p><br /><a href='http://www.joeaudette.com/yahoo-media-player-sweet-and-easy.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/yahoo-media-player-sweet-and-easy.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/yahoo-media-player-sweet-and-easy.aspx</link>
      <comments>http://www.joeaudette.com/yahoo-media-player-sweet-and-easy.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/yahoo-media-player-sweet-and-easy.aspx</guid>
      <pubDate>Sun, 09 Mar 2008 12:16:02 GMT</pubDate>
    </item>
    <item>
      <title>No More Treadmills for Me</title>
      <description><![CDATA[<p>In my last job before I started my own business one of the benefits was a membership to the YMCA and we used to take a break during the work day and go workout at the Y. I really liked this because when you work in front of a computer for hours and hours a day you don't tend to get much physical excercise and over many years you find yourself feeling really out of shape. So during my first year in business for myself I joined a nearby gym and made it a general habit of going to the gym 3-5 days a week and power walk on the treadmill to get some cardio excercise.</p>
<p>I was really disciplined about it for the whole year and I figured by the end of the year I was not in too bad physical condition. So I was surprised when I went and spent an afternoon walking around the Renaissance Festival with my Dad and then my legs were sore for the next 3 days. I mean after a year of vigilent treadmill power walking I thought I would be in good shape.</p>
<p>I think the problem is that treadmill walking is not like real walking, there are different muscles used to coordinate walking on real terrain. So this year when my membership at the gym came due for renewal I didn't renew. Instead I now go to a nice hiking trail only 5 - 10 minutes drive from my house. After a month of walking there I'm glad I made the switch. Walking through trails is much more enjoyable, I get fresh air and sunshine and I think it is therapeutic for my vision as well. When you focus on an array of computer monitors all day your vision is always focusing in a narrow range of depth and walking outside give you opprotunites to focus your vision on objects of varying distance. I also find that during the walks I can ponder difficult technical problems and come back with fresh ideas to try.</p>
<p><img width="500" height="375" alt="A hiking trail near my house." src="http://www.joeaudette.com/Data/Sites/2/trailinthewoods.jpg" /></p><br /><a href='http://www.joeaudette.com/no-more-treadmills-for-me.aspx'></a>&nbsp;&nbsp;<a href='http://www.joeaudette.com/no-more-treadmills-for-me.aspx'>...</a>]]></description>
      <link>http://www.joeaudette.com/no-more-treadmills-for-me.aspx</link>
      <comments>http://www.joeaudette.com/no-more-treadmills-for-me.aspx</comments>
      <guid isPermaLink="true">http://www.joeaudette.com/no-more-treadmills-for-me.aspx</guid>
      <pubDate>Sat, 08 Dec 2007 15:10:03 GMT</pubDate>
    </item>
  </channel>
</rss>