tag:blogger.com,1999:blog-16437804278253310622024-03-05T01:59:33.400-05:00Nerd WordsRamblings of a NerdUnknownnoreply@blogger.comBlogger42125tag:blogger.com,1999:blog-1643780427825331062.post-64502802595596000842012-11-28T01:00:00.002-05:002012-11-28T01:05:33.354-05:00Elbow injury - "terrible triad" - Follow Up<span style="font-family: georgia;">This is part 4 of 4 posts I have written about my elbow surgery. You can read them all here:<br />Part 1: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-emergency.html">The Emergency Room</a> </span><br />
<span style="font-family: georgia;">Part 2: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-surgery-and.html">Surgery and Recovery</a><br />Part 3: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-ketamine.html">The Ketamine Experience</a></span><br />
<span style="font-family: georgia;">Part 4: Follow Up<a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-ketamine.html"></a></span><br />
<br />
It has been 3 1/2 years since I broke my elbow and I thought I should write a quick follow up to let you know how things are going. Some time has past, so some of these numbers might be off a little bit.<br />
<h2>
<span style="font-size: large;"><b>Physical Therapy</b></span></h2>
One thing that really surprised me was the amount of physical therapy I had to go through. After surgery, I had the partial cast/splint thing on my arm for a couple weeks. On a follow up appointment with the surgeon, he removed the splint and had me start scheduling physical therapy as part of my recovery. He said he was going to start me off with 28 (I think) appointments -- I thought he was joking! At first I was going twice a week, and then at the end I was going only once a week. At some point I ran out of my prescribed PT appointments and they had to go and prescribe more. I really don't know how many times I went, but I broke my arm at the beginning of summer and I remember still going to PT in the fall, maybe even winter.<br />
<br />
I was told by my physical therapist that during surgery the surgeon tested the mobility of my arm to make sure I still had full range of motion. Being in the cast/splint for two weeks caused my muscles to atrophy and my muscles and tendons to shorten. It was absolutely amazing how much range of motion I had lost. After taking the splint off, my arm was permanently bent, and I could only contract or extend it a couple degrees -- literally just 2 or 3 degrees in either direction. I could only rotate my wrist a couple degrees in either direction. I also could not bend my hand back. Much later, the physical therapist told me that she was actually a bit worried about how much I would be able to recover, especially with the wrist rotation.<br />
<br />
Physical therapy sessions were pretty much the same each time. First they would heat up my elbow for several minutes and then stretch my arm to try to lengthen the muscles and tendons. It was a little painful, but not too bad. I had a series of stretches to do at home as well. A couple sessions in, I was fitted for what I call the torture device. It was a plastic contraption that fit on my arm that I could use to help with my stretches at home. You basically strap your upper and lower arm into it and turn a crank to stretch your arm. It works quite well, but it is painful. The thing made me angry when I used it. My girlfriend and I had to make an agreement -- there was no talking to me while I was using the torture device. After several months of using the thing, the teeth of the gear started to break off. I felt joy that I broke it before it broke me.<br />
<br />
As a side note, looking back something went wrong with getting the torture device. I think I was supposed to get it right away, but I think the sales rep for the company messed something up. I could tell that my physical therapist was mad that it was taking so long and I sometimes wonder if my recovery would have been better if I had received the device earlier.<br />
<br />
I pretty quickly regained rotation of my wrist, and flexing of my hand - I'm not really sure, but I think that only took a couple weeks. The thing that took the longest to recover was the extension and flexion of my elbow joint. It took me months to get to a normal range.<br />
<br />
<br />
Eventually, my progress in physical therapy came to a stop. Once the progress stopped, so did the physical therapy sessions.<br />
<br />
<h3>
Today</h3>
Three and a half years later, my elbow is the same as when I stopped PT. I regained extension to about 170 degrees (these numbers are really rough estimates) compared to 180+ on my good arm. I can flex my arm to about 60 degrees compared to 45 on my good arm. Rotation is pretty good - I might be off by about 10 degrees there, but that seems to be pretty minor. So, I can't flex my arm completely, or extend my arm completely, but I do have what the physical therapist called "full functional use" of my arm. That means there are very few things in your day-to-day activity that require full extension or flexion of your arm. The only thing I have noticed to be difficult is buttoning the top button on a shirt. I really have to stress my arm to get my hand in that position. All the other buttons are easy, so really it only comes into play when I wear a tie, which for me is quite rare.<br />
<br />
I was told that in a bad case where you don't regain enough range of motion, they can perform another surgery to help extend your range, but even in that case, the best they would hope for from that second surgery is to get full functional range of motion.<br />
<br />
<h3>
Risks and Complications</h3>
One of the risks associated with this type of surgery is that you can grow extra bone. For some reason, elbow injuries in particular have a good chance of extra bone growth. I don't remember the exact numbers but some decent percentage (maybe even 50%) of people with elbow breaks like I had will have extra bone growth. In those with extra bone growth, another decent percentage (maybe 50% again??) will have so much bone growth that they will need another surgery to remove the bone growth.<br />
<br />
The surgeon showed me my x-ray and showed a cloudy area that he had concerns about before the surgery. I did end up having extra bone growth, but it was not so bad that I required another surgery <br />
<br />
One thing that showed up during my recovery was a little nodule on the ring finger tendon in my palm. It is called dupuytren's syndrome - basically the tendon contracts and causes your finger to be contracted. The little nodule is still there, but it doesn't seem to bother me at all -- at first that finger was contracted a little bit, but not anymore. It might be something I have to deal with later in life. I guess there might be some vague correlation between trauma and dupuytren's.<br />
<br />
I have noticed nodules under the incision line. I've been told those are pretty common and related to suturing and they are easy to take care of, if it is bothering me. I'm planning on getting it checked out just to be sure its not something else.<br />
<br />
So, that's about it. Three and a half years later, <span style="font-size: small;">my elbow is do<span style="font-size: small;">ing well. I have a <span style="font-size: small;">big scar<span style="font-size: small;"> from surgery<span style="font-size: small;">. I <span style="font-size: small;">have "full functional<span style="font-size: small;">"</span> <span style="font-size: small;">use of my arm<span style="font-size: small;"> and the only thing I<span style="font-size: small;"> have trouble with</span> is <span style="font-size: small;">button<span style="font-size: small;">ing</span> the very top button on a <span style="font-size: small;">shirt.<span style="font-size: small;"> I <span style="font-size: small;">haven't put <span style="font-size: small;">the <span style="font-size: small;">clip-in pe<span style="font-size: small;">dals back on my bike<span style="font-size: small;"> - maybe someday.</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<br />
<span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;">One last thing. <span style="font-size: small;">My physical therapist <span style="font-size: small;">told me about another pati<span style="font-size: small;">ent <span style="font-size: small;">she had dealt with that had the same injury. He <span style="font-size: small;">was a big burly weight lifter. <span style="font-size: small;">H</span>e broke his arm while <span style="font-size: small;">jum<span style="font-size: small;">ping on the bed with his kids. I <span style="font-size: small;">thought that was a <span style="font-size: small;">cute</span> story.</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<br />
<span style="font-family: georgia;">This is part 4 of 4 posts I have written about my elbow surgery. You can read them all here:</span><br />
You can read them all here:<br />
<span style="font-family: georgia;">Part 1: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-emergency.html">The Emergency Room</a> </span><br />
<span style="font-family: georgia;">Part 2: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-surgery-and.html">Surgery and Recovery</a><br />Part 3: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-ketamine.html">The Ketamine Experience</a></span><br />
<span style="font-family: georgia;"><span style="font-family: georgia;">Part 4: <a href="http://nerdwords.blogspot.com/2012/11/elbow-injury-terrible-triad-follow-up.html">Follow Up</a></span></span><br />
<span style="font-family: georgia;"><span style="font-family: georgia;"> </span> </span><br />
<br />
<br />Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-1643780427825331062.post-45659808196394906972012-02-17T17:06:00.002-05:002012-02-17T17:13:02.503-05:00Get Amazon S3 Resource URL with PowershellI've been working on automating our build and deployment process recently. We are storing our binaries in S3 and I needed a script to pull the binaries from S3.<br /><br />I thought this might help other people, so here you go.<br /><br /><br /><span style="font-family: courier new;"># http://docs.amazonwebservices.com/AmazonS3/latest/dev/RESTAuthentication.html#RESTAuthenticationQueryStringAuth<br /><br />#Signature = URL-Encode( Base64( HMAC-SHA1( YourSecretAccessKeyID, UTF-8-Encoding-Of( StringToSign ) ) ) );<br /><br />#StringToSign = HTTP-VERB + "\n" +<br /># Content-MD5 + "\n" + # is empty for s3 request<br /># Content-Type + "\n" + # is empty for s3 request<br /># Expires + "\n" +<br /># CanonicalizedAmzHeaders +<br /># CanonicalizedResource; # relative URL kinda?<br /><br />function get-s3Url ($server, $resourceUrl, $accessKey, $secretKey, $expireDate)<br />{<br /> $s3BaseTime = [System.DateTime]::Parse("1970-01-01T00:00:00.0000000Z")<br /> $exipires = [Convert]::ToInt32($expireDate.Subtract($s3BaseTime).TotalSeconds).ToString()<br /> $stringToSign = "GET`n" + "`n" + "`n" + "$exipires`n" + "$resourceUrl"<br /><br /> $sha = new-object System.Security.Cryptography.HMACSHA1<br /> $utf8 = New-Object System.Text.utf8encoding<br /> $sha.Key = $utf8.Getbytes($secretKey)<br /> $seedBytes = $utf8.GetBytes($stringToSign)<br /> $digest = $sha.ComputeHash($seedBytes)<br /> $base64Encoded = [Convert]::Tobase64String($digest)<br /> $null = [Reflection.Assembly]::LoadWithPartialName("System.Web")<br /> $urlEncoded = [System.Web.HttpUtility]::UrlEncode($base64Encoded)<br /><br /> $fullUrl = $server + $resourceUrl + "?AWSAccessKeyId=" + $accessKey + "&Expires=" + $exipires + "&Signature=" + $urlEncoded<br /> $fullUrl<br />}<br /><br />$server = "https://s3.amazonaws.com"<br />$resourceUrl = "/[your bucket name]/[path to your file in s3]"<br />$accessKey = "[your access key]"<br />$secretKey = "[your secret key]"<br />$expires = [System.DateTime]::Now.AddMinutes(5)<br /><br />$url = get-s3Url $server $resourceUrl $accessKey $secretKey $expires<br /><br />Write-Host $url<br /></span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1643780427825331062.post-3970897820065705992011-07-05T22:48:00.004-04:002011-07-11T08:29:44.541-04:00TDI Limited - possible scamA friend of mine was contacted by someone claiming to be from a company called TDI Limited. The job involves: "Transferring payments straight from customers to our free-lancers by means of international money transfer systems"<br /><br />It seems like a scam to me. I'm just putting this out there to see if anyone else hits this page looking for similar info.<br /><br />Please leave a comment if you are getting something similar.<br /><br />UPDATE: So, this is a scam. It is called a payment processing scam. See here for more details: http://www.delphifaq.com/faq/scams/f1057.shtml<br /><br />Basically, they will have you set up a bank account, make a fraudulent transfer to your account, then ask you to make transfers out. After a couple days the bank will notice the first fraudulent transfer and go after you for the money. Also, I don't know what the definition of money laundering is, but this seems close.<br /><br />Furthermore, if you look up the registration information of their website here:<br />http://www.whois.net/whois/tdi-limited.com<br />You will see they only registered the website on June 26, 2011. So, this big international company has only had a web site for 2 weeks.<br /><br />Stay away from this scam.Unknownnoreply@blogger.com6tag:blogger.com,1999:blog-1643780427825331062.post-9197464396199896932011-05-07T12:30:00.003-04:002011-05-07T12:51:42.864-04:00How Sovereign Bank lost me as a customer with one letterI just got the monthly statement for my Sovereign Bank business checking account. And this lovely notice was on the first page.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMEY6N1xbcljGqyK6-muqFMOmPIMXQShq1MJyYeEeHtCIIJzkAM1IC0BMSiJDJdmcZPmZCffCxv7CtMl7cb4RF5jhJcNBteF_mi7ppcZxKmw2heFcpsJ5SlHhSWSZ8ETynK-O4bM4uwSoo/s1600/sovereign.jpg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 329px; height: 424px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMEY6N1xbcljGqyK6-muqFMOmPIMXQShq1MJyYeEeHtCIIJzkAM1IC0BMSiJDJdmcZPmZCffCxv7CtMl7cb4RF5jhJcNBteF_mi7ppcZxKmw2heFcpsJ5SlHhSWSZ8ETynK-O4bM4uwSoo/s400/sovereign.jpg" alt="" id="BLOGGER_PHOTO_ID_5604017613995867554" border="0" /></a><br /><br />If you can't read the image, it says: "Beginning in June, non-customers cashing checks drawn on your Sovereign Bank business accounts will be charged a $5.00 fee by Sovereign Bank unless you have agreed to pay some or all of this fee." It then goes on to describe a non-customer as essentially anyone that does not have an account with Sovereign Bank.<br /><br />$5 to cash a check? That seems very unreasonable. Is depositing a check into another bank account considered cashing a check? I don't think so, but it isn't entirely clear to me. I'm pretty sure this is aimed at people walking into a bank branch and converting a check to cash.<br /><br />I don't actually write many checks. In fact, I think the only checks I write are to myself. So, I'm not going to get hit by this fee, but I've had enough of the large banks and their unreasonable fees. Sovereign Bank you've just lost a customer. Local banking, here I come!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1643780427825331062.post-52823146696018085392011-02-27T11:05:00.001-05:002011-02-27T11:13:16.305-05:00WCF/MSMQ/.Net 4.0 stops processing messages–code fix<p>I recently upgraded a self hosted WCF service to .Net 4.0. Everything seemed to go well, but a few hours after deploying the service messages started piling up in the queue. I check the service host process and it was idle. It was still executing, but the service had stopped pulling messages. After a bit of trial and error I have discovered the problem and hopefully a solution.</p> <h4>The problem</h4> <p>It seems that .Net 4 has changed the behavior of WCF/MSMQ services slightly. If a problem occurs with the queue, the service host faults and stops.</p> <h4>The solution (I think) </h4> <p>Here is the code I came up with to address the problem. I wrote a class that creates the <em>ServiceHost</em> and attaches an event handlers to the <em>Faulted</em> event. If a fault occurs, I abort the <em>ServiceHost</em> and restart a new instance. (This is for a self-hosted WCF service – if you are hosting your service in IIS/WAS, I think you need to create a <em>ServiceHostFactory</em> class.)  Here is my code:</p> <pre class="csharpcode"> <span class="rem">/// <summary></span><br /> <span class="rem">/// In .Net 4, the WCF/MSMQ behavior seems to have changed slightly. Occasionally, the service will fault and not restart causing</span><br /> <span class="rem">/// messages to get stuck in the queue. This class attempts to abort and re-start the service host in the event of a fault.</span><br /> <span class="rem">/// </summary></span><br /> <span class="rem">/// <typeparam name="T">Your service class</typeparam></span><br /> <span class="kwrd">public</span> <span class="kwrd">class</span> RestartingServiceHost<T><br /> {<br /> <span class="kwrd">protected</span> <span class="kwrd">static</span> <span class="kwrd">readonly</span> log4net.ILog Log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);<br /> ServiceHost _serviceHost;<br /><br /> <span class="kwrd">public</span> <span class="kwrd">void</span> Start()<br /> {<br /> _serviceHost = <span class="kwrd">new</span> ServiceHost(<span class="kwrd">typeof</span>(T));<br /> _serviceHost.Faulted += <span class="kwrd">new</span> EventHandler(host_Faulted);<br /> _serviceHost.Open();<br /> }<br /><br /> <span class="kwrd">private</span> <span class="kwrd">void</span> Restart()<br /> {<br /> _serviceHost.Abort();<br /> Start();<br /> }<br /><br /> <span class="kwrd">private</span> <span class="kwrd">void</span> host_Faulted(<span class="kwrd">object</span> sender, EventArgs e)<br /> {<br /> Log.Info(<span class="str">"Host faulted. Restarting service."</span>);<br /> Restart();<br /> }<br /> }</pre><br /><br /><p>To use the class, simply create an instance of this class using the type of your service class:</p><br /><br /><pre class="csharpcode">var host = <span class="kwrd">new</span> RestartingServiceHost<MyService>();<br />host.Start();</pre><br /><style type="text/css"><br /><br />.csharpcode, .csharpcode pre<br />{<br /> font-size: small;<br /> color: black;<br /> font-family: consolas, "Courier New", courier, monospace;<br /> background-color: #ffffff;<br /> /*white-space: pre;*/<br />}<br />.csharpcode pre { margin: 0em; }<br />.csharpcode .rem { color: #008000; }<br />.csharpcode .kwrd { color: #0000ff; }<br />.csharpcode .str { color: #006080; }<br />.csharpcode .op { color: #0000c0; }<br />.csharpcode .preproc { color: #cc6633; }<br />.csharpcode .asp { background-color: #ffff00; }<br />.csharpcode .html { color: #800000; }<br />.csharpcode .attr { color: #ff0000; }<br />.csharpcode .alt <br />{<br /> background-color: #f4f4f4;<br /> width: 100%;<br /> margin: 0em;<br />}<br />.csharpcode .lnum { color: #606060; }</style><br /><br /><p>That’s it. It seems to be working so far.</p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1643780427825331062.post-48785630386111558282011-02-27T01:15:00.000-05:002011-02-27T01:27:11.808-05:00Setting up MVC 3 for Azure with a scripted build <p> </p> <p>I just spent a little time setting up an Azure project using ASP.Net MVC 3 and a scripted build. I thought I would share the solution. Be warned, I'm not an expert in this stuff -- let me know if you have any ideas on how to improve this.</p> <h3>Step 1: Set up the directory structure.</h3> <br /> <p>I like to follow a relatively simple directory structure for my projects. Of course you can use your own structure; I like this one.</p> <p><font size="3" face="Courier New">\ProjectName\src     <-- source code, project files, etc. <br />\ProjectName\lib     <-- 3rd party libraries <br />\ProjectName\tools   <-- tools (FxCop, 3rd party build tool components, etc)</font></p> <pre>For this post, I will be using the project name "Gamma".</pre><br /><br /><h3>Step 2: Create the VS2010 solution</h3><br /><br /><p>Start Visual Studio 2010 and create a new solution. I like to start with a blank solution and add projects as needed. Save as "\Gamma\src\Gamma.sln"</p><br /><br /><p>Add a new Windows Azure project. When you are prompted to add roles to the Azure project, skip this step. At the time of this post, the VS templates do not include an Azure MVC 3 project. To get around that problem. Add the empty Azure project to the solution. Then add a new project to the solution and select an MVC 3 project. Then, in the Azure project, add a "web role project in solution..." and select the MVC 3 project.</p><br /><br /><p>So, now you should have \ProjectName\src\ directory with one solution file, a directory for the Azure project, a directory for the MVC project and possibly a directory for the unit test project if you elected to add one.</p><br /><br /><h3>Step 3: Create command line build scripts </h3><br /><br /><p>I like to have a command line builds, especially for automating your build with a tool like Hudson or Jenkins. I found a post a while back about automating .Net builds and I really liked the approach. I will try to search for a link later to give credit. You create 3 files:</p><br /><br /><ol><br /> <li>a simple MS Build project file that builds your solution, </li><br /><br /> <li>a script file to kick off the build from the command line and </li><br /><br /> <li>a batch file that allows you to double-click on a file in windows explorer to produce a build.</li><br /></ol><br /><br /><p>Here are the file's I use:<br /> <br /></p><br /><br /><h4>build.ps1 -- powershell script for command line builds</h4><br /><br /><pre>if ($args)<br />{<br /> & $env:systemroot\Microsoft.Net\Framework\v4.0.30319\MSBuild.exe build.proj /t:$args /verbosity:minimal<br />}<br />else<br />{<br /> & $env:systemroot\Microsoft.Net\Framework\v4.0.30319\MSBuild.exe build.proj /verbosity:minimal<br />}</pre><br /><br /><h4>ClickToBuild.bat -- batch file for kicking off a build from windows explorer</h4><br /><br /><pre>PowerShell -Command ".\build.ps1"<br />pause</pre><br /><br /><br /><br /><br /><h4>build.proj -- MSBuild file for building your solution.</h4><br /><br /><pre><?xml version="1.0" encoding="utf-8" ?><br /><Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"><br /><br /><PropertyGroup><br /> <ProjectName>Gamma</ProjectName><br /></PropertyGroup><br /><br /><Target Name="Package" DependsOnTargets="Clean;DebugBuild"><br /> <Message Text="Creating Package for $(ProjectName)" Importance="High" /><br /> <MSBuild Projects="$(ProjectName).sln" <font style="background-color: #ffff00">Targets="Publish"</font> Properties="Configuration=Debug" /><br /></Target><br /><br /><Target Name="DebugBuild"><br /> <Message Text="Building $(ProjectName)" Importance="High" /><br /> <MSBuild Projects="$(ProjectName).sln" Targets="Build" Properties="Configuration=Debug" /><br /></Target><br /><br /><Target Name="Clean"><br /> <Message Text="Cleaning $(ProjectName)" Importance="High" /><br /> <MSBuild Projects="$(ProjectName).sln" Targets="Clean" Properties="Configuration=Debug" /><br /></Target><br /></Project></pre><br /><br /><br /><br /><br /><p>These are relatively simple. I save them the root of the "src" directory. In Visual Studio, I add a solution folder named "build" and add these 3 files to that solution folder.</p><br /><br /><p>The important thing to note is the <em>Targets="Publish"</em> in the package target of the MSBuild file. The "publish" target is what creates the Azure package files that you need for deployment. By default they will be in the \bin\Debug\Publish\ directory of the Azure project.</p><br /><br /><p>Note: Azure does not have the MVC binaries by default. You will need to get these to your Azure instance. There are a couple ways to accomplish this. You can either include all the DLLs in your project and set them to "copy local", or you can install MVC3 as part of the Azure startup script. Links to come later.</p><br /><br /><p>Let me know if this helped. If I find some time I will add some screen shots. </p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1643780427825331062.post-9867339586655561302010-11-09T00:27:00.003-05:002010-11-09T00:55:03.353-05:00Troubleshooting SQL Mirror errorsI was setting up a new database server and I had some difficulty in setting up the mirroring, so I thought I would post here just on the off chance it helps someone. We are still using SQL 2005, but I think the same ideas apply to SQL 2008.<br /><br />When I tried to start mirroring I would get an error like this:<br /><blockquote>The server network address "tcp://[server name]:5022" can not be reached or does not exist. Check the network address name and that the ports for the local and remote endpoints are operational.</blockquote><br /><br />First and foremost the single most important thing I learned was this: <span style="font-weight:bold;">If you get an error while trying to start mirroring check the application event logs on both servers.</span> The error messages you get back from the UI are not helpful at all. The event log messages will lead you very quickly to the error.<br /><br />In my case, the first error I got was:<br /><blockquote>Database Mirroring login attempt failed with error: 'Connection handshake failed. There is no compatible encryption algorithm. State 22.'. [CLIENT: <IP address>]</blockquote><br /><br />In my case, this error indicated that the two database endpoints did not have the same encryption algorithm selected. I was working with an existing server that has mirroring already running and a new server that did not yet have mirroring running. I didn't pay attention in the mirror setup wizard and did not check the box to indicate that the connection should be encrypted. This left the original server requiring encryption and the new server without encryption. You can check this by running the following query on both servers:<br /><br /> <blockquote>SELECT * FROM sys.database_mirroring_endpoints</blockquote><br /><br />Compare the values of the encryption_algorithm_desc column from both servers. In my case I had one server with RC4 and one server with None. They have to match. The solution was to drop the endpoint on the new server ('DROP ENDPOINT Mirroring') and re-run the mirror setup wizard and checking that the mirror server required encryption.<br /><br />Once I figured out that error, the second error I got was:<br /><blockquote>Database Mirroring login attempt by user '<Domain user>' failed with error: 'Connection handshake failed. The login '<Domain user>' does not have CONNECT permission on the endpoint. State 84.'. [CLIENT: <IP Address>]</blockquote><br /><br />Again, it was a configuration problem. In this situation it was because I had forgotten to set the user that the SQL service was running as. I believe SQL has to be running as the same domain user on both servers or, I believe there is some way to use certificates. In my case, my existing server was using the domain ID, but on the new server the service was running as 'Local System'. You can check this by examining the credentials used by the the 'SQL Server' service in the server administrator tools. Once I set the new server to use the same domain ID, mirroring started up successfully.<br /><br />I hope this saves you some time.Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-1643780427825331062.post-74340788209350951292010-10-26T20:50:00.005-04:002012-11-28T01:14:41.976-05:00Understanding Mercurial Subrepositories<u><span style="color: red;"><b>UPDATE</b></span>:</u> Subrepositories proved to be a bit unwieldy. They worked, but it wasn't worth the hassle. What finally made all our pieces fall into place was nuget. We keep the repositories separate from each other and publish any shared binaries to our own internal nuget server. We then use nuget to pull in dependencies. It is working quite well. (We have also switched to git, but that doesn't matter too much for this post.)<br />
<br />
My client has started slowly moving towards using Mercurial for source control. I've only used Hg for small personal projects in the past so it will be interesting to see how things work.<br />
<br />
One hurdle that we hit pretty early was how to best structure our repository. The general recommendation is to avoid one large monolithic repository and break your source into multiple subrepositories. The suggestion is to use one subrepository per "project", but what exactly is a project?<br />
<br />
Our approach is to divide up and organize our source code into medium size groups. Each of the groups can contains several visual studio projects -- some groups will only output one or two assemblies when built, some groups could be as large as 20 or so assemblies. Each group is its own repository. These repositories can be organized into larger main repositories. <br />
<br />
For example, we have some shared assemblies that contain simple POCO objects that represent message classes used in different layers of our application. The visual studio projects for these message classes are in one repository. This repository is cloned as a subrepo to other repositories where needed, for example in the windows client repository, or in the silverlight client.<br />
<br />
The whole concept of subrepositories did not quite make sense to me at first, but I think I am beginning to understand it. You have to think of each subrepository as a completely isolated versioning concept.<br />
<br />
For example, say you have a directory/repository structure somewhat like this:<br />
\client\src\<br />
\client\shared\<br />
\client\shared\Messages\<br />
<br />
If you make a change to \client\shared\Messages\test.txt<br /><br />There are two steps that occur:<br /> 1. You commit the change to the Messaging subrepository.<br /> 2. You commit that the parent repository should point at a new version of the subrepository.<br /><br />(This works automatically when you commit from the command line. For some reason, I can't get it to work when using TortoiseHg.)<br /><br />Step 2 was the one that was confusing to me at first. The parent repository has a list of all subrepositories and what version of that subrepo is being used. This is in a file called '.hgsubstate'. The hg tooling updates this file for you and this is how the parent repository points to a specific version of the child repository. So when you commit the parent repository in step 2, this is what is being committed. It is a little hidden from you by the tooling.<br /><br />Please keep in mind I am not an expert in Mercurial, this is really the first time I am using it in a real scenario. I am still learning and if I have time I will post as we go forward with this change.<!------><!------><!------>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1643780427825331062.post-2839977401597901902010-04-02T10:43:00.006-04:002010-04-02T12:07:00.350-04:00Best Joke I've been a part of: AromaCardFirst a little disclaimer: I was not the mastermind behind this joke. I was only barely involved.<br /><br />After graduating from college I worked for a consulting company ("sweat shop") and I was placed on a project at large electronics retail company. This was several years ago and a lot of people were not as computer literate as they are today.<br /><br />I can't actually remember the name of the person that came up with the joke. (I do remember what he looked like. Does that count?) I think his name was Steve and he was a practical joke genius. Steve was surfing the web one day. He found a picture of one of those tree shaped air fresheners and hatched a brilliant plan.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7uiugVQQn8ycvwEmUE-RIgFtVldKBQ8yObJ4Ome9AAaBQ6yHjCW5ni40kVJ5ytR07RlQAKzSENLBCS7WhNujZYn1zxShp2b7F_Bm9wgNANX4nbk69DvFmzpg_dKtwb_T8LDhJ-YEvC88B/s1600/freshener.jpg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 150px; height: 150px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7uiugVQQn8ycvwEmUE-RIgFtVldKBQ8yObJ4Ome9AAaBQ6yHjCW5ni40kVJ5ytR07RlQAKzSENLBCS7WhNujZYn1zxShp2b7F_Bm9wgNANX4nbk69DvFmzpg_dKtwb_T8LDhJ-YEvC88B/s400/freshener.jpg" alt="" id="BLOGGER_PHOTO_ID_5455562207912967474" border="0"></a><br /><br />The joke:<br /> Step 1: Buy several car air fresheners (pine scented) and hide them in someone's cubicle. <br /> Step 2: Change the victim's computer background to be the picture of the air freshener.<br /> Step 3: Leave a note on the victim's desk that he or she had been selected by the IT department to participate in a trial of a new computer technology called an AromaCard. The IT staff would return in a couple weeks and interview the victim about his or her experience with the AromaCard.<br /><br />Keep in mind, these car air fresheners come with instructions to only open a small amount of the package covering the air freshener each week. They are very strong. So, imagine a handful of these things fully opened in an standard cubical. The place absolutely reeked.<br /><br />As far as I know, this joke was only played on two people. The first person was immediately angry. She called the IT help desk and DEMANDED they come and remove the AromaCard from her computer. I can't even imagine what the guy at the help desk was thinking. So, the first attempt ended quickly. <br /><br />The second person was a different story. He was proud to have been selected for this trial. He was proud to the point that he might have been bragging about it a little bit. After a couple days everyone knew about the joke but him. <br /><br />The joke went on for several weeks. One day the victim left work early and Steve decided to up the ante a little bit. They swapped all the pine air fresheners in his cubicle with lemon scented ones and changed the picture on his desktop to a yellow air freshener. They left him a note that he had been upgraded to the new lemon scent.<br /><br />Several more weeks passed and it was time to let the guy in on the joke. This is where I came in. Because I had an IT email address I was in charge of communicating with this guy. After several unsuccessful attempts to schedule an appointment to "uninstall" his AromaCard, the plan evolved a little more. <br /><br />An urgent note from the IT department was left at his desk. He had to immediately uninstall the AromaCard or the cost would be deducted from his pay. The memo then had a bunch of steps, like turning his computer around and unplugging all the wires, etc. For a non-computer person this can be pretty scary. The very last step was to look under his chair.<br /><br />This is the voice mail he left me. I've muted out his name and phone number.<br /><br /><a href="http://www.dovestar.com/aromacard_censored.mp3">AromaCard Voice Mail</a><br /><br />So, that is the best joke I've ever been remotely involved in. (Very remotely.) I remember writing a little application that would sit in the system tray and allow the victim to adjust the scent volume of the aroma card. However, I don't remember if we ever put it on his computer.Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-1643780427825331062.post-13387583031461612692010-03-16T17:37:00.003-04:002010-03-16T17:47:32.531-04:00WCF - AccessDeniedException HTTP could not register URLI was fooling around with WCF today and started getting the following exception:<br /><br />AddressAccessDeniedException: HTTP could not register URL http://+:8370/TestService/. Your process does not have access rights to this namespace.<br /><br />The problem is pretty simple, but it took me a little while to figure out. To host the WCF service, you need to have the ability to register the URL. I run visual studio as a non-administrator, and this requires administrator privileges.<br /><br />But wait just one second, this service was running fine just a couple minutes ago and I didn't have administrator privileges then. How did that work? Well, it seems that VS automatically registers any URLs in the form of http://[server]:[port]/Design_Time_Addresses/[Rest of Service Url] which allows them to be hosted.<br /><br />So, I was trying to be too fancy and I was trying to change the URL to get rid of the "Design_Time_Addresses" part of the URL. I added that back to the URL and I was able to host the service again.<br /><br />If you want to host the URL without the "Design_Time_Addresses" bit, you will have to register (as admin) the URL. Follow the link in the exception details to see how to register the URL.Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-1643780427825331062.post-23197674649153400062010-03-16T17:28:00.003-04:002010-03-16T17:37:23.284-04:00WCF blank page - some fixesI was having a bit of trouble getting my WCF service to behave nicely. Specifically, I kept getting a blank page instead of the friendly WCF service page when I used a browser to hit the service. I stumbled on a couple things.<br /><br />1. The URL you are using in your browser has to end with a slash, for example http://servername:8080/TestService/ will result in a WCF service page. If you forget the slash at the end, you get a blank page.<br /><br />2. In the config file, base addresses and relative addresses in the endpoint do not seem to play nicely. I had to put the full URL (with a slash at the end) in the base address and leave the endpoint address blank (address="").<br /><br />I must be missing something. Configuration files should not be this finicky.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1643780427825331062.post-29428922725110423152010-01-29T12:29:00.002-05:002010-01-29T12:59:23.706-05:00SQL Server error: Conversion of XML charactersI hit an interesting error in SQL Server today. A user had somehow entered a unicode character that could not be converted to ASCII. In a stored procedure, the XML column was being converted to a varchar and this error occurred:<br /><br />"Conversion of one or more characters from XML to target collation impossible"<br /><br />You can recreate the scenario with the following TSQL code:<br /><blockquote>DECLARE @xml xml, @nvc nvarchar(64)<br />SELECT @nvc = '<data>Coptic letter: ' + nchar(997) + '</data>'<br />SELECT @nvc as 'before conversion'<br />SELECT @xml = @nvc<br />SELECT convert(varchar, @xml) -- fails with conversion error</blockquote><br /><br />The conversion from XML -> varchar fails because the Unicode value could not be represented. There are a couple options here. You can use nvarchar instead of varchar. This would support the unicode value:<br /><blockquote><br />SELECT convert(nvarchar, @xml) as 'xml -> nvarchar conversion'</blockquote><br /><br />You can also convert it to nvarchar and then to varchar. This results in any non-mappable characters being changed to a question mark, like so:<br /><br /><blockquote>SELECT convert(varchar, convert(nvarchar, @xml)) as 'xml -> nvarchar -> varchar conversion'</blockquote><br /><br />In my particular situation I added some code to clean up the data before it is sent to the database. I specified that the stream reader that was producing the data to be inserted into the XML column should use the ASCII encoding. This results in the non-mappable characters being translated to question marks before it goes to the database. That is just what I did in this particular case. It may not apply in your situation.Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-1643780427825331062.post-79378889498401961912010-01-08T00:13:00.002-05:002010-01-08T00:20:08.973-05:00EF error: Unable to update the EntitySet 'tablename' because it has a DefiningQuery and no I got a strange Entity Framework error today at runtime. I was trying to insert a new entity/row into the database and I got the following error:<br /><br />"Unable to update the EntitySet '[tablename]' because it has a DefiningQuery and no <InsertFunction> element exists in the <ModificationFunctionMapping> element to support the current operation."<br /><br />It turns out the table did not have a primary key defined. Whoops. Because of this, EF did something a little different. It basically treated the table as a view and it seemed to use a combination of all the foreign keys in the table as a composite key, I think.<br /><br />The solution was to define the primary key for the table and then update the model. This fixed most of the problem, but it also introduced a compile time error about the model. It turned out I then had to go and manually mark the foreign key fields as not part of the primary key.Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-1643780427825331062.post-53363059296347977332009-10-07T16:35:00.003-04:002009-10-07T16:48:02.562-04:00EF error: 'Date' is not supported in LINQ to Entities.I got a strange error from EF today. The error was:<br /><br />"The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported."<br /><br />My query was something like this:<br /><br /><pre><br /><span style="font-family:courier new;"> from log in context.LogEntries</span><br /><span style="font-family:courier new;"> where log.EndDate > DateTime.Now.Date</span><br /><span style="font-family:courier new;"> select log;</span><br /></pre><br /><br />It took me a while to figure out what was going on. It was simply that I couldn't use the .Date property on DateTime in the query itself.<br /><br />The fix was simple, use a local variable to store the Date value and then use that variable in the query:<br /><br /><pre><br /><span style="font-family:courier new;"> <span style="font-weight: bold; font-style: italic;">DateTime today = DateTime.Now.Date;</span></span><br /><span style="font-family:courier new;"> from log in context.LogEntries</span><br /><span style="font-family:courier new;"> where log.EndDate > <span style="font-weight: bold; font-style: italic;">today</span></span><br /><span style="font-family:courier new;"> select log</span><br /></pre><br />If I had to guess what was going on, I would guess that EF must do some translation of DateTime.Now to the GetDate() method in T-SQL. So, when I tried DateTime.Now.Date, it wasn't able to do the translation to T-SQL. Instead when I used a variable it simply translated that to a T-SQL Server datetime value.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1643780427825331062.post-79425798615252520132009-06-23T23:51:00.007-04:002012-11-28T01:06:11.636-05:00Elbow injury - "terrible triad" - Ketamine experience<span style="font-family: georgia;">This is part 3 of 4 posts I have written about my elbow surgery. You can read them all here:<br />Part 1: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-emergency.html">The Emergency Room</a> </span><br />
<span style="font-family: georgia;">Part 2: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-surgery-and.html">Surgery and Recovery</a><br />Part 3: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-ketamine.html">The Ketamine Experience</a></span><br />
<span style="font-family: georgia;">Part 4: <a href="http://nerdwords.blogspot.com/2012/11/elbow-injury-terrible-triad-follow-up.html">Follow Up</a></span><span style="font-size: 130%; font-weight: bold;"></span><br />
<span style="font-size: 130%; font-weight: bold;"><br />In the Emergency Department</span>I was in the emergency department for a broken arm and dislocated elbow. I was given Propofol for conscious sedation. For some reason, I wasn't completely knocked out by the Propofol and the emergency room staff was not able to reset my elbow. After a couple failed attempts, they decided to give me Ketamine to completely knock me out so they could really yank on my arm. The experience was very intense, so I thought I would describe it.<br />
<br />
The medical staff entered my area in the emergency room, a bed with curtains drawn around it. There were six or seven people in the area. It felt a little crowded.<br />
<br />
They did a safety pause. They said who I was and what procedure they were going to do (an elbow reduction) and what side was going to be worked on. They began to give me the Ketamine and asked me how I was doing. I think I responded once before the Ketamine took effect.<br />
<span style="font-size: 130%; font-weight: bold;"><br />My Ketamine experience</span><br />
I was knocked out and had no idea what was happening. At a measured pace, I started realizing that normal things just simply were not real. I would think of something, like one of the houses I lived in and as I pictured it in mind, it simply dawned on me that it simply wasn't real. I knew the thing I was picturing simply did not exist, as if it were a figment of my imagination. It was rather matter of fact. Every time I thought of something concrete, in my drugged state, I would realize it was fake. It felt like reality was literally falling away from me. Soon connections between things were falling away. I would picture two locations and how to get from one place to another. Within seconds of thinking of it, it would fall away because I knew it simply was not real. Now, as I realized things were not real, I would forget they even existed.<br />
<br />
I started picturing peoples faces, and they would fall away from reality. I pictured my physical body and that fell away. Nothing I knew was real. Life simply was not real. All I saw was a huge white plain with a grid and light. I had the sense of energy coming from the light and from the point where my non-physical being was. This is what was real and nothing else. Nothing mattered, nothing ever existed and nothing had meaning. I could not even remember anything from the real world. I had no concept of people, of places, of self or even time. None of that ever existed.<br />
<br />
I began to observe my situation. My first thought was: if this is what it feels like to be schizophrenic, I now completely understand what that feels like. The second, scarier thought I had was: is this what death feels like? Did I die? Did something go wrong during the procedure? I felt fine and happy. I thought if this is death, it's not bad -- I was okay with it. I am not a religious person, but I can see how this could be a moving experience for a religious person.<br />
<br />
Slowly, I started to come down. I started picturing things from my life again. I pictured houses I had lived in, people in my life, and for some reason maps and roads. Even though I could picture them, I didn't know if they were real. It was really confusing and a little bit scary. I remember picturing different things and thinking over and over: "I don't know what's real." I think I might have even been saying that out loud. This lasted for a little while.<br />
<br />
I was becoming aware of more things. I could hear someone talking to me. It was the nurse. She asked me how I was doing and I think I responded "I don't know what's real anymore." I remember feeling or seeing my bad elbow above my face and thinking that's simply not real. I remember also repeatedly saying in a slow dragged out voice "wowwwwwww". I think the medical staff was getting a kick out of that. I think I remember someone giggling a little bit.<br />
<br />
At this point, I think the staff went to get my girlfriend Kate. She later told me they seemed a little panicked, as if they wanted her in my area as soon as possible. She came in and talked to me. I opened my eyes and saw her and it was great. I was so happy to see her face and know she was real. I was slowly starting to feel grounded again. I was pretty sure Kate was real now, and I knew I was in a room surrounded by a curtain, but I had no idea what was outside of the curtain. I was talking to Kate and the nurse, but for some reason I couldn't really see the nurse's face. It is hard to describe.<br />
<br />
Nothing existed outside of my little curtained space. I now started picturing more physical things in my life and somewhat realizing they were real. I still had doubt in my mind that all these things were simply my imagination and that only that plain of white was real. As I talked to Kate and the nurse more, I came back to the real world again. I felt like I had been gone for an unmeasurable amount of time. It could have been days, but I think I was only out for 5 or 6 minutes. I'm really not sure. I do barely remember at one point having an MRI taken, but I have no idea when that was.<br />
<br />
I'm not really sure, but I think it was several hours before I felt fully grounded in reality. It was as if I had quickly gotten back to 95% reality, but the last 5% took a while.<br />
<br />
Looking back, I think that "white plain of energy" was actually the white drop ceiling of the hospital room. I remember there being a grid in the plain and it was about the same size as the ceiling tiles. That seems rather dumb now.<br />
<br />
Also, the experience was very reminiscent of the Matrix movie. This is not one of my favorite movies, so I really doubt the movie had any influence on my during this experience. If my experience is typical of someone on Ketamine, I would venture a guess that the person who wrote the Matrix was inspired by a Ketamine experience. Really, it seems like the Matrix is a Ketamine trip with a little plot thrown in.<br />
<br />
So, that's my Ketamine experience. It wasn't that bad, but it wasn't that good either. I guess I would say it was unsettling. I wouldn't do it by choice, but if I needed it in a medical emergency I would say yes. When I went in for my surgery a couple days later I asked them to avoid using Ketamine during the procedure if possible -- it was very unlikely, but I wanted to make sure they knew how I felt.<br />
<br />
One final note to end on is that the ER staff mentioned that Ketamine is actually used in children more. Yikes!<br />
<br />
<span style="font-family: georgia;">This is part 3 of 4 posts I have written about my elbow surgery. You can read them all here:</span><br />
You can read them all here:<br />
<span style="font-family: georgia;">Part 1: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-emergency.html">The Emergency Room</a> </span><br />
<span style="font-family: georgia;">Part 2: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-surgery-and.html">Surgery and Recovery</a><br />Part 3: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-ketamine.html">The Ketamine Experience</a></span><br />
<span style="font-family: georgia;"><span style="font-family: georgia;">Part 4: <a href="http://nerdwords.blogspot.com/2012/11/elbow-injury-terrible-triad-follow-up.html">Follow Up</a></span></span><br />
<span style="font-family: georgia;"><span style="font-family: georgia;"> </span> </span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1643780427825331062.post-28039925151814916812009-06-22T19:05:00.006-04:002012-11-28T01:05:57.095-05:00Elbow injury - "terrible triad" - surgery and recovery<span style="font-family: georgia;">This is part 2 of 4 posts I have written about my elbow surgery. You can read them all here:<br />Part 1: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-emergency.html">The Emergency Room</a> </span><br />
<span style="font-family: georgia;">Part 2: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-surgery-and.html">Surgery and Recovery</a><br />Part 3: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-ketamine.html">The Ketamine Experience</a></span><br />
<span style="font-family: georgia;"><span style="font-family: georgia;">Part 4: <a href="http://nerdwords.blogspot.com/2012/11/elbow-injury-terrible-triad-follow-up.html">Follow Up</a></span></span><br />
<span style="font-family: georgia;"><span style="font-family: georgia;"> </span> </span><br />
<span style="font-family: arial;">In my last post I described how I broke my arm/elbow and the experience of the emergency room. This post describes what happened after the emergency room.</span><br />
<br />
<span style="font-family: verdana; font-size: 130%;"><span style="font-weight: bold;">After the Emergency Room</span></span><br />
<span style="font-family: arial;">In the days following the visit to the emergency room, I was drugged up pretty heavily on </span><span style="font-family: verdana;">oxycodone</span><span style="font-family: arial;">. I was also taking some over the counter medication to counteract some of the side effects of the </span><span style="font-family: verdana;">oxycodone</span><span style="font-family: arial;">. </span><span style="font-family: verdana;">Oxycodone</span><span style="font-family: arial;"> is a diuretic and can cause severe constipation. (I bet your glad you know that now.)</span><br />
<br />
<span style="font-family: arial;">My arm was now pretty stable in a sling and splint made of cast material. The splint wrapped about 3/4 of the way around my upper and lower arm. My elbow was about 90 degrees. If I moved my arm away from my body it would hurt quite a bit, but as long as I didn't move it too much it felt okay. Again, I was on pain killers.</span><br />
<br />
<span style="font-family: verdana; font-size: 130%; font-weight: bold;">Pre-surgery</span><span style="font-family: arial;"><br />On Tuesday I went to the hospital to take care of all the </span><span style="font-family: verdana;">pre</span><span style="font-family: arial;">-surgery data. I met with a nurse </span><span style="font-family: verdana;">practitioner</span><span style="font-family: arial;"> and she talked with me about what I should expect the day of the surgery. The procedure I was having involved three steps. The surgeon was going to be doing an "open reduction and internal fixation" which from what I understand means that he would be opening my arm to put the elbow back in socket. Also, the surgeon would be reconstruction two ligaments. And finally, the surgeon would examine the end of my radial bone and determine if it needed to be replaced. We also discussed </span><span style="font-family: verdana;">anesthesia</span><span style="font-family: arial;"> and that I might get a "block" in my shoulder. From what I understand, it is a numbing agent (maybe </span><span style="font-family: verdana;">Novocaine</span><span style="font-family: arial;">, I don't remember) that is injected directly into the nerve that goes to your arm. Essentially, it means you are under less general </span><span style="font-family: verdana;">anesthesia</span><span style="font-family: arial;">, which can be good. The </span><span style="font-family: verdana;">pre</span><span style="font-family: arial;">-surgery meeting was pretty quick and efficient.</span><br />
<br />
<span style="font-family: verdana; font-size: 130%;"><span style="font-weight: bold;">Day of surgery</span></span><span style="font-family: arial;"> </span><br />
<span style="font-family: arial;">My surgery was scheduled for 11AM, I believe. I could not eat or drink after midnight the night before surgery. I think they said I could have clear liquids or coffee, but I just avoided everything.</span><br />
<span style="font-family: arial;"><br />My mother went with me to the hospital. We checked in and went to the family waiting room. It was a little isolated from the rest of the hospital, had a pretty big library, televisions, free snacks and side rooms where you could get a little privacy if wanted. They gave us a pager, like you get at a restaurant and told us it would go off when they were ready for me. My mother would get the pager while I was in surgery and she </span><span style="font-family: verdana;">would</span><span style="font-family: arial;"> be paged when the surgery was done. I haven't had a lot of experience with surgery in other hospitals, but I was very impressed by the efficiency and thoughtfulness that went into the process. It really made the process a lot more tollerable.</span><br />
<span style="font-family: arial;"><br />The pager went off and a tech took me to get ready for surgery. I was brought to a changing room where I changed into a hospital </span><span style="font-family: verdana;">jonny</span><span style="font-family: arial;"> and robe. I was taken to </span><span style="font-family: verdana;">pre</span><span style="font-family: arial;">-op. Here, they gave me an IV. I met the </span><span style="font-family: verdana;">anesthesia</span><span style="font-family: arial;"> team and circulating nurse for my surgery. </span><br />
<span style="font-family: arial;"><br />[My girlfriend works in the operating room at this hospital and she was able to request most of my surgical team. We had wanted a nurse </span><span style="font-family: verdana;">anesthetist</span><span style="font-family: arial;"> (we have two friends who are nurse </span><span style="font-family: verdana;">anesthetists</span><span style="font-family: arial;">), but instead I had a resident </span><span style="font-family: verdana;">anesthesiologist</span><span style="font-family: arial;">.] </span><br />
<span style="font-family: arial;"><br />They gave me some drugs and wheeled me into the surgical room. I think they gave me the block in the </span><span style="font-family: verdana;">pre</span><span style="font-family: arial;">-op room, but it is a bit fuzzy. I remember being wheeled into the surgical room and looking around at all the people and equipment in the room. They knocked me out and the next thing I remember is waking up in my hospital room. </span><br />
<br />
<span style="font-family: verdana; font-size: 130%; font-weight: bold;">Post surgery</span><span style="font-family: arial;"> </span><br />
<span style="font-family: arial;">I don't remember being in post-op at all, but I guess my mom was there briefly to say hi. Obviously, I was still out of it. I woke up in my hospital room and don't remember anything </span><span style="font-family: verdana;">in between</span><span style="font-family: arial;">. It wasn't at all like the experience I had with </span><span style="font-family: verdana;">Ketamin</span><span style="font-family: arial;">e, which is good. </span><br />
<span style="font-family: arial;"><br />In my room, they gave me a "</span><span style="font-family: verdana;">PCA</span><span style="font-family: arial;">" (patient controlled </span><span style="font-family: verdana;">analgesic</span><span style="font-family: arial;">), also called a pain pump and showed me how to work it. Essentially, I had a button that was hooked up to a machine and I could request more pain </span><span style="font-family: verdana;">meds</span><span style="font-family: arial;"> by clicking the button. The machine is programmed to not over medicate and I could get a dose every 7 minutes if I needed it. </span><br />
<span style="font-family: arial;"><br />I was very warm in the hospital. I don't know if it was really warm, or if it was because I was on a plastic mattress, or if it was a side effect of the surgery or drugs. Who knows for sure. Anyway, at one point, with the nurse's permission I changed into my boxer shorts and took off my hospital jonny. That made me a lot more comfortable. So, if you're having surgery, I would suggest bringing some shorts or boxers to wear.</span><br />
<span style="font-family: arial;"><br />Kate, my brother and his Fiancee, and my mom came to visit. I was still in a bit of pain and I probably wasn't too much fun to visit. After a while I decided to get some sleep.</span><br />
<br />
<span style="font-family: verdana; font-size: 130%; font-weight: bold;">PCA - torture device?</span><br />
<span style="font-family: verdana; font-size: 130%; font-weight: bold;"> </span><span style="font-family: arial;">So, at first I thought the </span><span style="font-family: verdana;">PCA</span><span style="font-family: arial;"> was a great idea. If I was in pain, it would help me out and I had some control over it. My opinion changed later that night. The </span><span style="font-family: verdana;">PCA</span><span style="font-family: arial;"> is configured to only </span><span style="font-family: verdana;">dispense once every 7 minutes. I think they do this so you can't easily remember when you can hit the button again. The night after surgery was horrible. Here is what happened all night long. I would hit the button a couple times and get my pain under control. I would then fall asleep for a small amount of time. Then I would wake up from my sleep in severe pain. I would then have to click my PCA</span><span style="font-family: arial;"> button and wait seven or 14 minutes to hit the button multiple times. Eventually my pain would be under control and I could fall asleep again only to repeat the process. Sometimes, I would use the pain pump too much and it would start beeping. I would have to page the nurse to get the beeping to stop. I don't remember how many times I went through that process, but it felt like the night took forever to pass.</span><br />
<span style="font-family: arial;"><br />The PCA was horrible. I had no information about when I could get another dose. I had no information about how many doses were left, and the doses didn't last long enough for me to get a decent sleep. By the time morning came I wanted to throw that </span><span style="font-family: verdana;">PCA</span><span style="font-family: arial;"> thing out the window.</span><br />
<br />
<span style="font-family: verdana; font-size: 130%; font-weight: bold;">The Morning After</span><span style="font-family: arial;"> </span><br />
<span style="font-family: arial;">The following morning, I was still in a decent amount of pain. The surgeon came and visited me and did some evaluation and explained how the surgery went. It turned out that the end of my raidal bone was broken into so many pieces it was beyond repair. He had to replace it with a fake bone. Because of the pain I was in, he thought I might have to stay another night in the hospital. That was a little disappointing. </span><br />
<span style="font-family: arial;"><br />My mom came to visit and said I should ask the nurse if she could do anything for the pain. The nurse took gave me some IV pain killers and started me on some </span><span style="font-family: verdana;">oxycodone</span><span style="font-family: arial;"> pills. She took me off the dreaded </span><span style="font-family: verdana;">PCA</span><span style="font-family: arial;"> machine. The pain killers kicked in and I felt a lot better. I really started to feel like myself again -- the pain wasn't bothering me at all.</span><br />
<span style="font-family: arial;"><br />The occupational therapy person came to show me some exercises and how to take the sling on and off. I said I was thinking about leaving the hospital that day and she said that was fine with her and got the ball rolling to get me released. Kate was getting off from work at 7 that night and my brother was coming to visit at the same time. I was released from the hospital and my brother drove us home.</span><br />
<span style="font-family: arial;"><br />I spent the next several days taking my pain </span><span style="font-family: verdana;">meds</span><span style="font-family: arial;"> every two hours and sleeping a lot. I spent most of the time in bed or on the couch watching television. My surgery was on Wednesday. I came home on Thursday and did essentially nothing until Monday. I slowly reduced the amount of pain killers I was taking. On Monday I was able to do some work (I work from home) and it made me feel much better to be doing something normal. It also made the time go by much faster.</span><span style="font-family: georgia;"> </span><br />
<br />
<span style="font-family: georgia;">This is part 2 of 4 posts I have written about my elbow surgery. </span><br />
<span style="font-family: georgia;">You can read them all here:</span><br />
<span style="font-family: georgia;">Part 1: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-emergency.html">The Emergency Room</a> </span><br />
<span style="font-family: georgia;">Part 2: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-surgery-and.html">Surgery and Recovery</a><br />Part 3: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-ketamine.html">The Ketamine Experience</a></span><br />
<span style="font-family: georgia;"><span style="font-family: georgia;">Part 4: <a href="http://nerdwords.blogspot.com/2012/11/elbow-injury-terrible-triad-follow-up.html">Follow Up</a></span></span><br />
<span style="font-family: georgia;"><span style="font-family: georgia;"> </span> </span>Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-1643780427825331062.post-21969348647199411332009-06-21T19:46:00.008-04:002012-11-28T01:05:44.582-05:00Elbow injury - "terrible triad" - the emergency room<span style="font-family: georgia;">This is part 1 of 4 posts I have written about my elbow surgery. You can read them all here:<br />Part 1: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-emergency.html">The Emergency Room</a> </span><br />
<span style="font-family: georgia;">Part 2: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-surgery-and.html">Surgery and Recovery</a><br />Part 3: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-ketamine.html">The Ketamine Experience</a></span><br />
<span style="font-family: georgia;"><span style="font-family: georgia;">Part 4: <a href="http://nerdwords.blogspot.com/2012/11/elbow-injury-terrible-triad-follow-up.html">Follow Up</a></span> <br /><br />Three weeks ago I broke my arm/elbow. I thought I would document my experience so far.</span><br />
<br />
<span style="font-family: georgia; font-size: 130%;"><span style="font-weight: bold;">How it happened</span></span><span style="font-family: georgia;"> </span><br />
<span style="font-family: georgia;">I was on my road bike, with my feet clipped in. I was going up onto a curb and had to avoid a fire hydrant on the sidewalk. I was not really paying attention. My rear wheel did not make it onto the sidewalk and slid along the the curb a little bit until my bike abruptly stopped. At this point I tipped over with my feet still clipped in. I put my arm out to break my fall. My hand hit and I immediately felt my arm do something it should not do. I rolled over grabbing my arm and immediately yelled "Call 911" at my girlfriend, Kate, who was biking behind me.</span><br />
<br />
<span style="font-size: 130%;"><span style="font-weight: bold;">Emergency Response</span></span><span style="font-family: georgia;"> </span><br />
<span style="font-family: georgia;">The first couple minutes were not too bad. I laid on the pavement and kept my arm as steady as possible. It was across my stomach. My girlfriend called 911 and after some discussion about what town we were in an ambulance was on it's way. It turned out we were right on the border of Newton and Brookline. They directed the call to Brookline's 911 center and in about 5 minutes the Brookline emergency services showed up.</span><br />
<br />
<span style="font-family: georgia;">Everyone was very nice and asked me about 10 times if I had been wearing a helmet -- and I had been. After a couple minutes, they got a stretcher. I got up and walked to the stretcher with no problem. The ride to the hospital was uneventful. The driver and medic made corny jokes the whole way about how fast they were going and if I wanted to drive, etc. I think this is part of their spiel to keep the sick person awake, but I am not really sure. They got me to Brigham and Women's Hospital (by my and Kate's request) and got me right into the Emergency Room.</span><br />
<span style="font-size: 130%; font-weight: bold;"><br /><span style="font-family: georgia;">Emergency Room</span></span><br />
<span style="font-family: georgia;">In the emergency room they started an IV and gave me some pain killers. Up to this point I was only really in pain when my arm moved. After what seemed like a long time, I was taken to get x-ray images of my elbow. The x-ray process proved to be very painful because they needed me to move my arm around to get images from different angles. When the first image was taken, I heard the technician let out a gasp when he saw the picture come up. That is never a good sign. After 2 images were taken and I was in excruciating pain, I thought the technician said she needed to take one more image. I jokingly responded that I was beginning to hate her. She laughed, and said that actually we were all done for now.</span><br />
<br />
<span style="font-family: georgia;">I was wheeled back to my emergency room area. They examined the x-rays and determined that I had dislocated my elbow and that they were going to try to put it back in socket. They also warned me that sometimes these injuries are so bad that they require surgery. Yipes.</span><br />
<br />
<span style="font-size: 130%;"><span style="font-family: georgia; font-weight: bold;">Conscious Sedation</span></span><br />
<span style="font-family: georgia;">They decided they would give me something called conscious sedation with a drug called propofol. Essentially, it would knock me out for only a couple minutes and they would put my arm back in its socket. Once they got the drugs from the pharmacy, they started the process. There were about 6 people in my room and they started giving me the drug. Every so often they would ask "Are you still with us?" and I would respond "yes". Eventually, they decided I wasn't going to go fully unconscious and tried to set my arm while I was still responding. They yanked on my arm and got it back into socket, or so they thought.</span><br />
<br />
<span style="font-family: georgia;">It turns out they had given me enough propofol to knock out a 200 pound person. They were very surprised that I was conscious through the whole thing. I believe I was actually the talk of the E.R. for a brief period. "Did you hear about the guy that talked through propofol?" I heard they even searched on Google to see if they could find something similar. They think it might have been because the blood pressure cuff was on the same arm that they were giving me the propofol. I remember the entire thing, which I guess is unusual. </span><br />
<br />
<span style="font-size: 130%;"><span style="font-family: georgia; font-weight: bold;">Second Attempt</span></span><br />
<span style="font-family: georgia;">I went back for a second set of x-rays. When they lifted my arm to get an image, I (and the technician) felt my arm slip out of socket. They brought me back to my ER room and tried to put my elbow back in place again. It just wouldn't stay. They decided they would have to really yank on my arm to get it back in place and that I should be really knocked out for that. They decided on giving me Ketamine.</span><br />
<br />
<span style="font-size: 130%;"><span style="font-family: georgia; font-weight: bold;">Third Attempt</span></span><br />
<span style="font-family: georgia;">The did a safety pause, which I thought was cool and then gave me the Ketamine and I was knocked out. I hallucinated and everything. (I will go into more detail on the Ketamine in another post.) It was very interesting, but not something I would want to do again. While I was knocked out, they put my arm back into socket. They also took CAT scans, which I vaguely remember.</span><br />
<br />
<span style="font-family: georgia;">So, my arm was back in socket, and my arm was in a split made of cast material. I also had a sling to hold my arm. The Ketamine eventually wore off, and I was given some pain meds. I slowly began to recover. Eventually, at 3AM we left the Emergency Room. They told me a doctor would look at my x-rays and CAT scans to see if I needed surgery. </span><br />
<br />
<span style="font-size: 130%;"><span style="font-weight: bold;">Surgery</span></span><br />
<span style="font-size: 130%;"><span style="font-weight: bold;"> </span></span><span style="font-family: georgia;">The next day a doctor told me I would need surgery to fix my elbow and scheduled surgery for Wednesday.</span> I will go into detail on my surgery in a follow up post.<br />
<br />
<span style="font-family: georgia;">Of course, it was not a fun thing to go through, but I have to say that everyone involved was very professional and friendly through the whole process. The staff at Brigham and Women's Hospital were great and I really appreciate the work they did. The emergency response crew was also great.</span><br />
<br />
<span style="font-family: georgia;">This is part 1 of 4 posts I have written about my elbow surgery. </span><br />
<span style="font-family: georgia;">You can read them all here:<br />Part 1: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-emergency.html">The Emergency Room</a> </span><br />
<span style="font-family: georgia;">Part 2: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-surgery-and.html">Surgery and Recovery</a><br />Part 3: <a href="http://nerdwords.blogspot.com/2009/06/elbow-injury-terrible-triad-ketamine.html">The Ketamine Experience</a></span><br />
<span style="font-family: georgia;"><span style="font-family: georgia;">Part 4: <a href="http://nerdwords.blogspot.com/2012/11/elbow-injury-terrible-triad-follow-up.html">Follow Up</a></span></span><br />
<span style="font-family: georgia;"><span style="font-family: georgia;"> </span> </span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1643780427825331062.post-65492548562839084922009-06-21T19:39:00.004-04:002009-06-21T19:46:13.393-04:00Triathlon update - broken armWell, this weekend was the triathlon I was training for. Unfortunately 3 weeks ago, I fell while on my road bike and broke my arm. I'll go into more detail on that in another post.<br /><br />So, unfortunately, I couldn't participate in the race. I will have to find a race in the fall that I can enter.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1643780427825331062.post-6224705256083076592009-05-14T23:12:00.000-04:002009-05-14T23:14:38.517-04:00Reminder: creating service for svnserveNote to self: To create a windows service to run the subversion svnserve server, use the following command line:<br /><br />sc create Subversion binpath= "C:\Program Files\SlikSvn\bin\svnserve.exe --service --root C:\svnreps --listen-host 0.0.0.0" displayname= "Subversion" depend= Tcpip<br /><br />(This is for a SlikSvn installation, obviously.)Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1643780427825331062.post-52113236306940187982009-04-07T14:35:00.006-04:002009-04-07T15:19:52.930-04:00Capturing context data using log4netIt was a little bit of trial and error to get this working, so I thought I would post the code.<br /><br />The problem we were trying to solve was this: we wanted to track which batch job was logging the given message. In our situation, each job is a separate class. Each job had its own unique ID number. So, we needed to use some context to determine which job logged the message.<br /><br />Here is the solution we came up with. First we created a custom attribute to hold the metadata we needed:<br /><span style="font-family:courier new;"><pre>[AttributeUsage(AttributeTargets.Class)]<br />public class BatchJobAttribute : Attribute<br />{<br /> public int ProcessorId { get; private set; }<br /> public BatchJobAttribute(int processorId)<br /> {<br /> ProcessorId = processorId;<br /> }<br />}</pre></span><br /><br />For each processor class, we add this attribute:<br /><span style="font-family:courier new;"><pre>[Processor(123)]<br />class SampleProcessor<br />{<br /> ...<br />}</pre></span><br /><br /><span style="font-style: italic;">Note: It would be very nice to use an enum instead of magic numbers. This would be a fairly simple change.</span><br /><br />Then we created a context class. The ToString() method on this class is called each time a message is logged. In this method, the code walks up the stack trace looking for a class that has the custom attribute. Please note, this is using reflection and is called every time a message is logged, so be careful in performance critical situations. This particular situation was for off-line processing, so performance was not as critical.<br /><br /><span style="font-family:courier new;"><pre>class ProcessorContext<br />{<br /> private const string UnknownValue = "-1";<br /><br /> public override string ToString()<br /> {<br /> StackTrace stackTrace = new StackTrace(false);<br /> foreach (var frame in stackTrace.GetFrames())<br /> {<br /> var type = frame.GetMethod().ReflectedType;<br /> var attributes = type.GetCustomAttributes(typeof(BatchJobAttribute), false);<br /> if (attributes.Length > 0)<br /> {<br /> var procAtt = (ProcessorAttribute)attributes[0];<br /> return procAtt.ProcessorId.ToString();<br /> }<br /> }<br /> return UnknownValue;<br /> }<br />}</pre></span><br /><br />Finally, when configuring log4net at application start, we add the context class as a thread context property. This is what causes log4net to call the ToString() method on each call.<br /><br /><span style="font-family:courier new;"><pre>log4net.Config.XmlConfigurator.Configure();<br />log4net.ThreadContext.Properties["ProcessorContext"] = new ProcessorContext();<br /></pre></span><br />In the configuration of the adapter, we add a pattern layout to display this property:<br /><br /><span style="font-family:courier new;"><br /><pre><layout type="log4net.Layout.PatternLayout"><br /> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} %property{ProcessorContext} %m%n" /><br /></layout></pre></span><br /><br />And there you go. Hopefully this will be helpful to someone else. Please keep in mind there are other solutions that may work better in your specific scenario. One good option would be the context stacks described in <a href="http://logging.apache.org/log4net/release/manual/contexts.html">this article</a>. Another option would be to simply use the class name which is already part of the metadata captured by log4net.<br /><br />Good luck!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1643780427825331062.post-38750449354170372922009-04-06T00:42:00.005-04:002009-04-06T01:16:33.867-04:00Training Update 2I finally decided on which triathlon I'm going to do. I'm registered for the <a href="http://www.eastmannh.org/tri/main.htm">Eastman Splash, Mash and Dash Triathlon</a> in Grantham, New Hampshire. It is a 1/3 mile swim, a 12 mile bike ride and a 5k run.<br /><br />The race is 11 weeks away now and I have started a training schedule. I looked around on the interwebs and found a couple training schedules for sprint triathlons. The schedules seemed a little wimpy to me. I don't really consider a sprint triathlon wimpy, but these training programs had training days that would consist of a 12 minute run. Some schedules even worked up to running by including walking days. So, instead I decided to overtrain. I know, I know, overtraining is bad. I'm increasing the chance of injury. I just felt I wanted more of a challenge than the training programs I had found.<br /><br />I took a training schedule for an olympic triathlon and adapted it slightly. The schedule was balanced, meaning it did not stress any one of the 3 sports. The only thing I changed was that the swim times seemed quite long, so I halved them. Even halving the swim practices, the shortest swim practice is longer than I think it will take me in the actual race.<br /><br />A couple months ago I made up some goals for myself. I really didn't have much to base my goals on, so I found some data on the web and chose average times for my age group. Now that I've been training a little bit, I can get an idea of how close I am to those relatively arbitrary goals.<br /><br />My swim goal was to shoot for 1 minute per 50 yards. For 1/3 mile, that is just under 12 minutes. I timed myself in the pool a couple days ago and I swam 1/3 mile in a little over 13 minutes. I tried not to push off too much on the turns, but open water is going to be significantly different. My swim started at a decent pace, but I slowed at the end. With a little more endurance I think the swim goal will be reached, at least in a pool, without people kicking me in the head.<br /><br />My bike goal was to average 15 MPH. For a 12 mile course, that would be around 45 minutes. I think this goal is going to be difficult. I went for a ride today and averaged 12 miles an hour. The bike is still quite difficult for me, I don't think I have my bike muscles back yet from the winter.<br /><br />My running goal was to run at a pace of 7:30. Right now that seems a little ridiculous. I'm finally feeling like I'm back to my normal speed before taking a break from training over the winter. My last run felt great. The course I ran is quite hilly and longer than the race distance. I averaged an 8:42 pace. I have a serious amount of time to make up if I want to meet my goal.<br /><br />Well, at least my goals are stretch goals. I may have to adjust my training as I go. I may swap out a couple swiming sessions for biking or running.<br /><br />Okay, that's it for now.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1643780427825331062.post-51535647071468017402009-02-13T00:09:00.006-05:002009-02-13T00:47:08.625-05:00MSTest error: The location of the file or directory 'log4net.dll' is not trusted.Today, I upgraded to the latest version of log4net. All my code worked fine, but my unit tests were simply not running. The unit tests were not failing - MSTest was failing to actually run any unit tests. Clicking on the test details led to the following error message:<br /><br /><span style="font-family:courier new;">Failed to queue test run '[test data]': Test Run deployment issue: The location of the file or directory '[path]\log4net.dll' is not trusted.</span><br /><br />I did a little research and it turns out Vista has a feature that doesn't allow DLLs to load in certain situations. The strange thing is that my application ran with no problem, but MSTest did not. The solution I found was to unblock the DLL using the file properties dialog.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisdVvSfOHUXo7XqENV_c_SHcFGeABXj1Ym-tPNk_LrD8qLFh3bpz3V3lmCwpXA1am8b4o2ahZXBQQ01LgfLCa18BhN2Bzq8gT_hsjxzrd0McS_6E-jNlzeKpB9BPlqaGd6TL3X6HVDwKQz/s1600-h/PropertiesUnblock.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 294px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisdVvSfOHUXo7XqENV_c_SHcFGeABXj1Ym-tPNk_LrD8qLFh3bpz3V3lmCwpXA1am8b4o2ahZXBQQ01LgfLCa18BhN2Bzq8gT_hsjxzrd0McS_6E-jNlzeKpB9BPlqaGd6TL3X6HVDwKQz/s400/PropertiesUnblock.jpg" alt="" id="BLOGGER_PHOTO_ID_5302150655244968994" border="0" /></a>Unfortunately, no matter how many times I clicked the 'Unblock' button, it just didn't seem to take.<br /><br />I'm not exactly sure what the true nature of the problem was, but I think it had to do with the fact the DLL was now under source control. I deleted the DLL, got the latest version (the one I had just checked in) from TFS source control. TFS is still a little clunky to me. A simple 'Get Latest' did not work. I had to use the 'Get Specific Version' option and had to use the option to 'Overwrite all files even if the local version matches the specified version', even thought I had deleted the DLL.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw_XimQwtNi0Ibw6pj1x95-cGfje9WJAxAaJVjqLXlh8SSBoPmOV8VHJqPsXKzMfJHuqQvpcFBMNmxu-PshWCRTYC1Efa38P88nK6zB8i6effYM6m1RlPHJwUV4OhTBZD7a_clELXYX6ir/s1600-h/TFSGetOverwrite.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 239px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw_XimQwtNi0Ibw6pj1x95-cGfje9WJAxAaJVjqLXlh8SSBoPmOV8VHJqPsXKzMfJHuqQvpcFBMNmxu-PshWCRTYC1Efa38P88nK6zB8i6effYM6m1RlPHJwUV4OhTBZD7a_clELXYX6ir/s400/TFSGetOverwrite.png" alt="" id="BLOGGER_PHOTO_ID_5302151750272726162" border="0" /></a>At this point I checked out the DLL and used the properties dialog to 'Unblock' the file. This time it worked, and all my tests ran again.<br /><br />I find it odd that MSTest was not able to load the DLL, but my application ran fine. I guess MSTest is running in some sort of partial trust mode, but I really don't know.<br /><br />I also find it hard to believe that I've download and installed so many things and this is the first time I've had to 'Unblock' a DLL.<br /><br />I hope this saves some time for anyone else that has this problem.Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-1643780427825331062.post-14017390695294022832009-01-28T16:10:00.002-05:002009-01-28T16:18:41.249-05:00Web design links for the design challengedOne thing I am tremendously bad at is making a web site look nice. I recently found some great resources that I think are very useful.<br /><br /><a href="http://www.oswd.org/">Open Source Web Design</a><br /><a class="moz-txt-link-freetext" href="http://www.oswd.org/"></a>This is a big collection of open source site designs. You can use a design as-is, or just browse the designs for ideas.<br /><br /><a href="http://www.blueprintcss.org/">BlueprintCSS</a><br />This is a CSS framework to give your CSS development a jump start. They have a grid thing which is a little strange, but you can do cool things with it. Here is a <a href="http://www.blueprintcss.org/tests/parts/sample.html">sample page</a>. <br />The thing that I don't like about the grid is that the layout starts invading your HTML file. I like the idea of separating design an content using CSS and this feels like a little step backwards.<br /><br /><a href="http://meyerweb.com/eric/tools/css/reset/">Reset CSS file</a><br />This is a CSS file that resets all the basic style settings. When you use this as a starting point for your CSS it will hopefully eliminate annoying differences among browsers. (This is how I found Blueprint, which uses the Reset CSS script.)Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1643780427825331062.post-34363567971664064622009-01-25T21:37:00.005-05:002009-01-25T22:41:35.638-05:00Learning to swim gear listI just started swimming a month or two ago and I'm really enjoying it. I thought it might be interesting to list the equipment I am using.<br /><br />(It looks like swimoutlet.com is having some server problems, so the links may or may not work. It's hard for me to believe they are still using plain old ASP to write their site.)<br /><br /><span style="font-size:130%;"><span style="font-weight: bold;">The essentials:</span><br /></span><br /><span style="font-weight: bold;font-size:100%;" >Swim suit: <a href="http://www.swimoutlet.com/product_p/5446.htm">TYR Square Leg</a></span><br />This swimsuit has been fine. It is a little more modest than brief-type swimsuits, which is good. Every time I see my swim suit I think of the jingle: "who likes short shorts? we like short shorts" (Okay, to be honest, I only know that jingle from the Simpsons, but I'm guessing it was a commercial back in the day.) Long story short: I would get this swimsuit again.<br /><br /><span style="font-weight: bold;">Goggles: <a href="http://www.swimoutlet.com/product_p/1642.htm">Speedo Vanquisher</a></span><br />I haven't had a great experience with these goggles, but it hasn't been all bad. Sometimes I have trouble with leaks. I think I would try a different pair next time.<br /><br /><span style="font-weight: bold;">Swim Cap: <a href="http://www.swimoutlet.com/product_p/1253.htm">Speedo Silicone Swimcap</a></span><br />This swim cap has been fine. Originally, I thought I would be going through swim caps pretty frequently. I'm not sure why I thought that. This one has been fine and it's all I've needed. I have a latex cap as well, but I haven't used it.<br /><br /><span style="font-weight: bold;">Sandals: <a href="http://www.swimoutlet.com/product_p/8245.htm">Nike Swim Men's First String Slide</a></span><br />I am very surprised by these sandals. I bought the cheapest ones that looked decent. I've never had sandals like these before and I was expecting them to be very cheap feeling and uncomfortable. These sandals are actually very comfortable. I highly recommend them. I also count these as essential equipment due to the various forms of foot fungi that are likely covering the locker room and shower floors.<br /><br /><span style="font-weight: bold;">Lock: Pad lock for your locker</span><br />A combination lock might be nice, so you don't have to worry about a key. I only had a key type lock, so I've been using that.<br /><br /><span style="font-weight: bold;">Towel</span><br />I would guess that fancy pools will provide you with a towel. I'm using a towel I got for free.<br /><br /><span style="font-size:130%;"><span style="font-weight: bold;">The non-essentials:</span></span><br /><br /><span style="font-weight: bold;">Bag: <a href="http://www.swimoutlet.com/product_p/1432.htm">Speedo Mesh Equipment Bag</a></span><br />This bag is decent, but the strap is too long. If you put the strap over your shoulder, the bag is down at your shins. It's fairly annoying. Maybe you're not supposed to put the bag over your shoulder.<br /><br /><span style="font-weight: bold;">Pull Buoy: <a href="http://www.swimoutlet.com/product_p/1753.htm">Speedo Pull Buoy</a></span><br />I just got this as a gift and have only used it twice. It seems pretty decent so far.<br /><br /><span style="font-weight: bold;">Shampoo: <a href="http://www.swimoutlet.com/product_p/2674.htm">Ultraswim Shampoo</a></span><br />Evidently chlorine can do strange stuff to your hair, so I bought this on advice from my brother. It seems to be doing its job. I haven't noticed any chlorine related strangeness in my hair.<br /><br /><span style="font-weight: bold;">Anti-fog stuff: <a href="http://www.swimoutlet.com/product_p/1202.htm">TYR Anti-Fog Spray</a></span><br />Umm, I'm not really sure if this stuff does anything. My goggles fog up regardless. Maybe if I applied this each time I went swimming it would work. Foggy goggles don't bother me too much when I'm swimming. The only time the fogged up goggles come in to play is when I try to read the clock, which isn't too often.<br /><br /><span style="font-weight: bold;">Soap: Some manly shower gel<br /></span>Bringing bar soap into the shower is a bit annoying, so I went and bought some random brand of shower gel.<br /><span style="font-weight: bold;"></span><br /><span style="font-weight: bold;"><span style="font-size:130%;">Stuff I don't have yet:</span><br /><br />Travel bottles:<br /></span>Carrying the full sized bottles of shampoo and shower gel is a little annoying. It would be nice to have a couple nice flip-top travel bottles.<span style="font-weight: bold;"><br /><br /><br /><br /><br /></span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1643780427825331062.post-73644142144380057182009-01-14T15:20:00.003-05:002009-01-14T15:34:11.867-05:00Training UpdateMy training is slowing down a bit due to the cold weather. I haven't gone running for a week and a half due to the cold weather and the snow and ice on the ground. I'm wimping out, I know.<br /><br />I have been swimming weekly and I went today. At the end of my little workout, I decided to time myself for a couple 50 yard laps. I did one lap fast, almost at a sprint speed for me, and it took me about 50 seconds. I then caught my breath and did one lap at a more reasonable speed and clocked in at 1:05 - 1:10.<br /><br />So, that's pretty close to my goal of about 1 minute per 50 yards. Right now, I don't think I could maintain that speed for a 1/2 mile, but at least the goal feels achievable at this point.<br /><br />There were very few people at the pool today, so that was quite nice. I had a lane to myself the whole time. I tried to practice a flip turn, but it didn't go well. I ended up doing a full flip and facing the wall again. I need to look into that a little bit.Unknownnoreply@blogger.com0